ngx-tethys 18.1.0-next.0 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/action/action.component.d.ts +1 -2
  3. package/affix/affix.component.d.ts +2 -4
  4. package/anchor/anchor-link.component.d.ts +2 -4
  5. package/anchor/anchor.component.d.ts +1 -4
  6. package/arrow-switcher/arrow-switcher.component.d.ts +1 -2
  7. package/autocomplete/autocomplete.component.d.ts +1 -2
  8. package/autocomplete/autocomplete.trigger.directive.d.ts +3 -5
  9. package/autocomplete/overlay/autocomplete-container.component.d.ts +4 -4
  10. package/autocomplete/overlay/autocomplete.service.d.ts +3 -5
  11. package/avatar/avatar.component.d.ts +1 -3
  12. package/avatar/avatar.pipe.d.ts +0 -2
  13. package/back-top/back-top.component.d.ts +2 -4
  14. package/badge/badge.component.d.ts +5 -14
  15. package/breadcrumb/breadcrumb-item.component.d.ts +1 -2
  16. package/breadcrumb/breadcrumb.component.d.ts +1 -2
  17. package/button/button.component.d.ts +1 -2
  18. package/calendar/calendar-header.component.d.ts +1 -2
  19. package/calendar/calendar.component.d.ts +1 -2
  20. package/carousel/carousel-item.directive.d.ts +1 -2
  21. package/carousel/carousel.component.d.ts +1 -4
  22. package/carousel/carousel.service.d.ts +1 -2
  23. package/cascader/cascader.component.d.ts +4 -4
  24. package/checkbox/checkbox.component.d.ts +0 -2
  25. package/collapse/collapse-item.component.d.ts +2 -4
  26. package/color-picker/color-picker-panel.component.d.ts +2 -3
  27. package/color-picker/color-picker.component.d.ts +2 -4
  28. package/color-picker/coordinates.directive.d.ts +1 -2
  29. package/color-picker/parts/alpha/alpha.component.d.ts +1 -2
  30. package/color-picker/parts/hue/hue.component.d.ts +1 -2
  31. package/color-picker/parts/saturation/saturation.component.d.ts +1 -2
  32. package/copy/copy.directive.d.ts +0 -2
  33. package/core/click-positioner.d.ts +0 -2
  34. package/core/scroll.d.ts +1 -2
  35. package/core/update-host-class.service.d.ts +1 -2
  36. package/date-picker/abstract-picker.component.d.ts +1 -1
  37. package/date-picker/abstract-picker.directive.d.ts +2 -3
  38. package/date-picker/base-picker.component.d.ts +2 -3
  39. package/date-picker/date-picker.component.d.ts +2 -2
  40. package/date-picker/date-picker.directive.d.ts +1 -3
  41. package/date-picker/date-picker.service.d.ts +2 -2
  42. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -2
  43. package/date-picker/lib/calendar/calendar-header.component.d.ts +0 -1
  44. package/date-picker/lib/date/date-header.component.d.ts +0 -3
  45. package/date-picker/lib/date/date-table.component.d.ts +1 -3
  46. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -2
  47. package/date-picker/lib/decade/decade-header.component.d.ts +1 -1
  48. package/date-picker/lib/month/month-header.component.d.ts +0 -3
  49. package/date-picker/lib/month/month-table.component.d.ts +1 -2
  50. package/date-picker/lib/popups/date-popup.component.d.ts +1 -3
  51. package/date-picker/lib/popups/inner-popup.component.d.ts +1 -4
  52. package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -2
  53. package/date-picker/lib/year/year-header.component.d.ts +0 -1
  54. package/date-picker/month-picker.component.d.ts +2 -2
  55. package/date-picker/picker.component.d.ts +1 -3
  56. package/date-picker/picker.pipes.d.ts +0 -3
  57. package/date-picker/quarter-picker.component.d.ts +2 -2
  58. package/date-picker/range-picker.component.d.ts +2 -2
  59. package/date-picker/range-picker.directive.d.ts +2 -3
  60. package/date-picker/week-picker.component.d.ts +2 -2
  61. package/date-picker/year-picker.component.d.ts +2 -2
  62. package/date-range/date-range.component.d.ts +1 -3
  63. package/date-range/optional-dates/optional-dates.component.d.ts +0 -2
  64. package/dialog/body/dialog-body.component.d.ts +0 -2
  65. package/dialog/confirm/confirm.component.d.ts +2 -3
  66. package/dialog/dialog-container.component.d.ts +4 -5
  67. package/dialog/dialog.service.d.ts +4 -4
  68. package/dialog/footer/dialog-footer.component.d.ts +2 -2
  69. package/dialog/header/dialog-header.component.d.ts +2 -6
  70. package/dot/dot.component.d.ts +1 -2
  71. package/drag-drop/drag-content.directive.d.ts +2 -3
  72. package/drag-drop/drag-handle.directive.d.ts +2 -3
  73. package/drag-drop/drag.directive.d.ts +4 -5
  74. package/drag-drop/drop-container.directive.d.ts +6 -3
  75. package/dropdown/dropdown-active.directive.d.ts +3 -4
  76. package/dropdown/dropdown-menu-item.directive.d.ts +1 -2
  77. package/dropdown/dropdown-submenu.component.d.ts +1 -3
  78. package/dropdown/dropdown.directive.d.ts +3 -5
  79. package/empty/empty.component.d.ts +6 -6
  80. package/esm2022/action/action.component.mjs +18 -18
  81. package/esm2022/affix/affix.component.mjs +11 -14
  82. package/esm2022/anchor/anchor-link.component.mjs +9 -10
  83. package/esm2022/anchor/anchor.component.mjs +11 -16
  84. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +22 -22
  85. package/esm2022/autocomplete/autocomplete.component.mjs +7 -7
  86. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +30 -37
  87. package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +11 -15
  88. package/esm2022/autocomplete/overlay/autocomplete.service.mjs +14 -21
  89. package/esm2022/avatar/avatar.component.mjs +24 -25
  90. package/esm2022/avatar/avatar.pipe.mjs +6 -7
  91. package/esm2022/back-top/back-top.component.mjs +11 -15
  92. package/esm2022/badge/badge.component.mjs +6 -6
  93. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
  94. package/esm2022/breadcrumb/breadcrumb.component.mjs +12 -12
  95. package/esm2022/button/button.component.mjs +12 -12
  96. package/esm2022/calendar/calendar-header.component.mjs +12 -12
  97. package/esm2022/calendar/calendar.component.mjs +12 -12
  98. package/esm2022/carousel/carousel-item.directive.mjs +7 -6
  99. package/esm2022/carousel/carousel.component.mjs +10 -12
  100. package/esm2022/carousel/carousel.service.mjs +7 -9
  101. package/esm2022/cascader/cascader.component.mjs +11 -16
  102. package/esm2022/checkbox/checkbox.component.mjs +7 -9
  103. package/esm2022/collapse/collapse-item.component.mjs +18 -21
  104. package/esm2022/color-picker/color-picker-panel.component.mjs +11 -12
  105. package/esm2022/color-picker/color-picker.component.mjs +10 -11
  106. package/esm2022/color-picker/coordinates.directive.mjs +10 -10
  107. package/esm2022/color-picker/parts/alpha/alpha.component.mjs +6 -6
  108. package/esm2022/color-picker/parts/hue/hue.component.mjs +6 -6
  109. package/esm2022/color-picker/parts/saturation/saturation.component.mjs +9 -9
  110. package/esm2022/copy/copy.directive.mjs +8 -12
  111. package/esm2022/core/click-positioner.mjs +6 -7
  112. package/esm2022/core/scroll.mjs +7 -9
  113. package/esm2022/core/store/store.mjs +1 -1
  114. package/esm2022/core/update-host-class.service.mjs +6 -6
  115. package/esm2022/date-picker/abstract-picker.component.mjs +5 -5
  116. package/esm2022/date-picker/abstract-picker.directive.mjs +42 -44
  117. package/esm2022/date-picker/base-picker.component.mjs +26 -26
  118. package/esm2022/date-picker/date-picker.component.mjs +6 -6
  119. package/esm2022/date-picker/date-picker.directive.mjs +6 -8
  120. package/esm2022/date-picker/date-picker.service.mjs +6 -10
  121. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -5
  122. package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +6 -7
  123. package/esm2022/date-picker/lib/date/date-header.component.mjs +3 -9
  124. package/esm2022/date-picker/lib/date/date-table.component.mjs +7 -9
  125. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +12 -12
  126. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +5 -8
  127. package/esm2022/date-picker/lib/month/month-header.component.mjs +3 -9
  128. package/esm2022/date-picker/lib/month/month-table.component.mjs +6 -7
  129. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +12 -13
  130. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +12 -13
  131. package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +6 -7
  132. package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -9
  133. package/esm2022/date-picker/month-picker.component.mjs +6 -7
  134. package/esm2022/date-picker/picker.component.mjs +21 -22
  135. package/esm2022/date-picker/picker.pipes.mjs +10 -11
  136. package/esm2022/date-picker/quarter-picker.component.mjs +6 -7
  137. package/esm2022/date-picker/range-picker.component.mjs +6 -7
  138. package/esm2022/date-picker/range-picker.directive.mjs +6 -8
  139. package/esm2022/date-picker/week-picker.component.mjs +6 -7
  140. package/esm2022/date-picker/year-picker.component.mjs +6 -7
  141. package/esm2022/date-range/date-range.component.mjs +14 -15
  142. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +8 -9
  143. package/esm2022/dialog/body/dialog-body.component.mjs +11 -12
  144. package/esm2022/dialog/confirm/confirm.component.mjs +10 -14
  145. package/esm2022/dialog/dialog-container.component.mjs +13 -18
  146. package/esm2022/dialog/dialog.service.mjs +10 -17
  147. package/esm2022/dialog/footer/dialog-footer.component.mjs +7 -11
  148. package/esm2022/dialog/header/dialog-header.component.mjs +14 -19
  149. package/esm2022/dot/dot.component.mjs +7 -7
  150. package/esm2022/drag-drop/drag-content.directive.mjs +7 -9
  151. package/esm2022/drag-drop/drag-handle.directive.mjs +7 -9
  152. package/esm2022/drag-drop/drag.directive.mjs +13 -16
  153. package/esm2022/drag-drop/drop-container.directive.mjs +13 -13
  154. package/esm2022/dropdown/dropdown-active.directive.mjs +9 -12
  155. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +12 -12
  156. package/esm2022/dropdown/dropdown-submenu.component.mjs +9 -10
  157. package/esm2022/dropdown/dropdown.directive.mjs +12 -10
  158. package/esm2022/empty/empty.component.mjs +14 -17
  159. package/esm2022/flexible-text/flexible-text.component.mjs +16 -17
  160. package/esm2022/form/form-group-error/form-group-error.component.mjs +9 -12
  161. package/esm2022/form/form-group-label.directive.mjs +9 -10
  162. package/esm2022/form/form-group.component.mjs +15 -19
  163. package/esm2022/form/form-submit.directive.mjs +6 -7
  164. package/esm2022/form/form-validator-loader.mjs +1 -1
  165. package/esm2022/form/form-validator.service.mjs +12 -13
  166. package/esm2022/form/form.directive.mjs +11 -16
  167. package/esm2022/form/from-group-footer/form-group-footer.component.mjs +10 -16
  168. package/esm2022/form/validator/unique-validator.directive.mjs +7 -10
  169. package/esm2022/fullscreen/fullscreen.component.mjs +10 -11
  170. package/esm2022/fullscreen/fullscreen.service.mjs +7 -10
  171. package/esm2022/grid/thy-col.directive.mjs +9 -14
  172. package/esm2022/grid/thy-grid-item.component.mjs +8 -14
  173. package/esm2022/grid/thy-grid.component.mjs +7 -8
  174. package/esm2022/guider/guider.directive.mjs +8 -9
  175. package/esm2022/guider/guider.service.mjs +12 -19
  176. package/esm2022/icon/icon-registry.mjs +11 -16
  177. package/esm2022/icon/icon.component.mjs +8 -9
  178. package/esm2022/image/image-group.component.mjs +7 -7
  179. package/esm2022/image/image.directive.mjs +11 -12
  180. package/esm2022/image/image.service.mjs +8 -14
  181. package/esm2022/image/preview/image-preview.component.mjs +34 -38
  182. package/esm2022/input/input-count.component.mjs +7 -10
  183. package/esm2022/input/input-group.component.mjs +12 -13
  184. package/esm2022/input/input-search.component.mjs +7 -7
  185. package/esm2022/input/input.component.mjs +14 -14
  186. package/esm2022/input/input.directive.mjs +12 -17
  187. package/esm2022/input-number/input-number.component.mjs +6 -6
  188. package/esm2022/layout/sidebar.component.mjs +45 -51
  189. package/esm2022/list/selection/selection-list.mjs +25 -25
  190. package/esm2022/loading/loading.component.mjs +8 -8
  191. package/esm2022/mention/mention.directive.mjs +9 -14
  192. package/esm2022/mention/suggestions/suggestions.component.mjs +8 -9
  193. package/esm2022/menu/group/menu-group.component.mjs +34 -35
  194. package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -16
  195. package/esm2022/menu/item/menu-item.component.mjs +6 -6
  196. package/esm2022/message/abstract/abstract-message-container.component.mjs +5 -5
  197. package/esm2022/message/abstract/abstract-message.component.mjs +6 -6
  198. package/esm2022/message/message-container.component.mjs +9 -11
  199. package/esm2022/message/message-queue.service.mjs +6 -8
  200. package/esm2022/message/message.component.mjs +7 -7
  201. package/esm2022/message/message.service.mjs +10 -11
  202. package/esm2022/nav/icon-nav/icon-nav.component.mjs +6 -6
  203. package/esm2022/nav/nav-ink-bar.directive.mjs +9 -14
  204. package/esm2022/nav/nav-item.directive.mjs +8 -11
  205. package/esm2022/nav/nav.component.mjs +32 -33
  206. package/esm2022/nav/nav.pipe.mjs +6 -7
  207. package/esm2022/notify/notify-container.component.mjs +8 -11
  208. package/esm2022/notify/notify-queue.service.mjs +6 -8
  209. package/esm2022/notify/notify.component.mjs +7 -7
  210. package/esm2022/notify/notify.service.mjs +11 -12
  211. package/esm2022/pagination/pagination.component.mjs +38 -43
  212. package/esm2022/pagination/pagination.pipe.mjs +6 -7
  213. package/esm2022/popover/header/popover-header.component.mjs +12 -14
  214. package/esm2022/popover/popover-container.component.mjs +11 -13
  215. package/esm2022/popover/popover.directive.mjs +13 -12
  216. package/esm2022/popover/popover.service.mjs +14 -26
  217. package/esm2022/progress/progress-strip.component.mjs +10 -13
  218. package/esm2022/property/property-item.component.mjs +10 -13
  219. package/esm2022/property-operation/property-operation.component.mjs +24 -25
  220. package/esm2022/radio/button/radio-button.component.mjs +9 -15
  221. package/esm2022/radio/group/radio-group.component.mjs +17 -17
  222. package/esm2022/radio/radio.component.mjs +8 -14
  223. package/esm2022/rate/rate.component.mjs +6 -6
  224. package/esm2022/resizable/resizable.directive.mjs +10 -12
  225. package/esm2022/resizable/resizable.service.mjs +7 -9
  226. package/esm2022/resizable/resize-handle.component.mjs +7 -8
  227. package/esm2022/segment/segment-item.component.mjs +12 -15
  228. package/esm2022/segment/segment.component.mjs +26 -26
  229. package/esm2022/select/custom-select/custom-select.component.mjs +14 -28
  230. package/esm2022/select/native-select/native-select.component.mjs +6 -6
  231. package/esm2022/shared/base-form-check.component.mjs +7 -8
  232. package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +7 -7
  233. package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -10
  234. package/esm2022/shared/directives/thy-contextmenu.directive.mjs +8 -8
  235. package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +8 -8
  236. package/esm2022/shared/directives/thy-enter.directive.mjs +8 -8
  237. package/esm2022/shared/directives/thy-scroll.directive.mjs +21 -21
  238. package/esm2022/shared/directives/thy-show.mjs +11 -11
  239. package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +7 -5
  240. package/esm2022/shared/directives/view-outlet.directive.mjs +7 -7
  241. package/esm2022/shared/ng-transclude.directive.mjs +6 -5
  242. package/esm2022/shared/option/group/option-group.component.mjs +10 -10
  243. package/esm2022/shared/option/list-option/list-option.component.mjs +12 -19
  244. package/esm2022/shared/option/option.component.mjs +9 -19
  245. package/esm2022/shared/select/select-control/select-control.component.mjs +23 -23
  246. package/esm2022/skeleton/skeleton-circle.component.mjs +7 -15
  247. package/esm2022/skeleton/skeleton-rectangle.component.mjs +7 -15
  248. package/esm2022/slide/drawer/drawer-container.directive.mjs +6 -6
  249. package/esm2022/slide/slide-container.component.mjs +12 -16
  250. package/esm2022/slide/slide-header/slide-header.component.mjs +10 -11
  251. package/esm2022/slide/slide-ref.service.mjs +1 -1
  252. package/esm2022/slide/slide.service.mjs +8 -12
  253. package/esm2022/slider/slider.component.mjs +8 -8
  254. package/esm2022/space/space.component.mjs +13 -13
  255. package/esm2022/statistic/statistic.component.mjs +20 -20
  256. package/esm2022/stepper/step.component.mjs +6 -11
  257. package/esm2022/stepper/stepper-button.directive.mjs +10 -11
  258. package/esm2022/strength/strength.component.mjs +11 -12
  259. package/esm2022/switch/switch.component.mjs +6 -6
  260. package/esm2022/table/table-column.component.mjs +58 -63
  261. package/esm2022/table/table-skeleton.component.mjs +32 -32
  262. package/esm2022/table/table.component.mjs +16 -24
  263. package/esm2022/tabs/tabs.component.mjs +19 -19
  264. package/esm2022/tag/tag.component.mjs +22 -22
  265. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +10 -9
  266. package/esm2022/time-picker/time-picker-panel.component.mjs +27 -27
  267. package/esm2022/time-picker/time-picker.component.mjs +29 -29
  268. package/esm2022/timeline/timeline-item.component.mjs +12 -13
  269. package/esm2022/timeline/timeline.component.mjs +7 -8
  270. package/esm2022/tooltip/tooltip.component.mjs +14 -14
  271. package/esm2022/tooltip/tooltip.directive.mjs +11 -10
  272. package/esm2022/tooltip/tooltip.service.mjs +9 -13
  273. package/esm2022/transfer/transfer-list.component.mjs +6 -6
  274. package/esm2022/tree/tree-node.component.mjs +13 -17
  275. package/esm2022/tree/tree.component.mjs +86 -90
  276. package/esm2022/tree-select/tree-select.component.mjs +22 -27
  277. package/esm2022/typography/bg-color.directive.mjs +9 -9
  278. package/esm2022/typography/text-color.directive.mjs +9 -9
  279. package/esm2022/upload/file-drop.directive.mjs +1 -1
  280. package/esm2022/upload/file-select-base.mjs +5 -6
  281. package/esm2022/upload/file-select.component.mjs +4 -3
  282. package/esm2022/upload/upload.service.mjs +6 -7
  283. package/esm2022/version.mjs +2 -2
  284. package/esm2022/watermark/watermark.directive.mjs +12 -12
  285. package/fesm2022/ngx-tethys-action.mjs +17 -17
  286. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  287. package/fesm2022/ngx-tethys-affix.mjs +12 -14
  288. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  289. package/fesm2022/ngx-tethys-anchor.mjs +19 -22
  290. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  291. package/fesm2022/ngx-tethys-arrow-switcher.mjs +21 -21
  292. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  293. package/fesm2022/ngx-tethys-autocomplete.mjs +59 -71
  294. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  295. package/fesm2022/ngx-tethys-avatar.mjs +27 -27
  296. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  297. package/fesm2022/ngx-tethys-back-top.mjs +12 -15
  298. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  299. package/fesm2022/ngx-tethys-badge.mjs +5 -5
  300. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  301. package/fesm2022/ngx-tethys-breadcrumb.mjs +16 -16
  302. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  303. package/fesm2022/ngx-tethys-button.mjs +11 -11
  304. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  305. package/fesm2022/ngx-tethys-calendar.mjs +21 -21
  306. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  307. package/fesm2022/ngx-tethys-carousel.mjs +20 -21
  308. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  309. package/fesm2022/ngx-tethys-cascader.mjs +11 -15
  310. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  311. package/fesm2022/ngx-tethys-checkbox.mjs +6 -7
  312. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  313. package/fesm2022/ngx-tethys-collapse.mjs +17 -19
  314. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  315. package/fesm2022/ngx-tethys-color-picker.mjs +44 -42
  316. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  317. package/fesm2022/ngx-tethys-copy.mjs +8 -12
  318. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  319. package/fesm2022/ngx-tethys-core.mjs +14 -16
  320. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  321. package/fesm2022/ngx-tethys-date-picker.mjs +192 -216
  322. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  323. package/fesm2022/ngx-tethys-date-range.mjs +20 -20
  324. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  325. package/fesm2022/ngx-tethys-dialog.mjs +56 -72
  326. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  327. package/fesm2022/ngx-tethys-dot.mjs +6 -6
  328. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  329. package/fesm2022/ngx-tethys-drag-drop.mjs +33 -37
  330. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  331. package/fesm2022/ngx-tethys-dropdown.mjs +39 -37
  332. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  333. package/fesm2022/ngx-tethys-empty.mjs +15 -15
  334. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  335. package/fesm2022/ngx-tethys-flexible-text.mjs +16 -17
  336. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  337. package/fesm2022/ngx-tethys-form.mjs +67 -82
  338. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  339. package/fesm2022/ngx-tethys-fullscreen.mjs +14 -17
  340. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  341. package/fesm2022/ngx-tethys-grid.mjs +20 -29
  342. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  343. package/fesm2022/ngx-tethys-guider.mjs +17 -23
  344. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  345. package/fesm2022/ngx-tethys-icon.mjs +18 -22
  346. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  347. package/fesm2022/ngx-tethys-image.mjs +57 -62
  348. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  349. package/fesm2022/ngx-tethys-input-number.mjs +5 -5
  350. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  351. package/fesm2022/ngx-tethys-input.mjs +46 -53
  352. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  353. package/fesm2022/ngx-tethys-layout.mjs +45 -50
  354. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  355. package/fesm2022/ngx-tethys-list.mjs +24 -24
  356. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  357. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  358. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  359. package/fesm2022/ngx-tethys-mention.mjs +16 -21
  360. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  361. package/fesm2022/ngx-tethys-menu.mjs +51 -52
  362. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  363. package/fesm2022/ngx-tethys-message.mjs +33 -35
  364. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  365. package/fesm2022/ngx-tethys-nav.mjs +55 -64
  366. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  367. package/fesm2022/ngx-tethys-notify.mjs +26 -29
  368. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  369. package/fesm2022/ngx-tethys-pagination.mjs +44 -49
  370. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  371. package/fesm2022/ngx-tethys-popover.mjs +48 -54
  372. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  373. package/fesm2022/ngx-tethys-progress.mjs +9 -12
  374. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  375. package/fesm2022/ngx-tethys-property-operation.mjs +24 -24
  376. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  377. package/fesm2022/ngx-tethys-property.mjs +11 -11
  378. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  379. package/fesm2022/ngx-tethys-radio.mjs +29 -35
  380. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  381. package/fesm2022/ngx-tethys-rate.mjs +5 -5
  382. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  383. package/fesm2022/ngx-tethys-resizable.mjs +22 -25
  384. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  385. package/fesm2022/ngx-tethys-segment.mjs +35 -38
  386. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  387. package/fesm2022/ngx-tethys-select.mjs +20 -34
  388. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  389. package/fesm2022/ngx-tethys-shared.mjs +128 -143
  390. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  391. package/fesm2022/ngx-tethys-skeleton.mjs +11 -25
  392. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  393. package/fesm2022/ngx-tethys-slide.mjs +30 -34
  394. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  395. package/fesm2022/ngx-tethys-slider.mjs +7 -7
  396. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  397. package/fesm2022/ngx-tethys-space.mjs +13 -13
  398. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  399. package/fesm2022/ngx-tethys-statistic.mjs +19 -19
  400. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  401. package/fesm2022/ngx-tethys-stepper.mjs +13 -18
  402. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  403. package/fesm2022/ngx-tethys-strength.mjs +11 -11
  404. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  405. package/fesm2022/ngx-tethys-switch.mjs +5 -5
  406. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  407. package/fesm2022/ngx-tethys-table.mjs +103 -115
  408. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  409. package/fesm2022/ngx-tethys-tabs.mjs +19 -19
  410. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  411. package/fesm2022/ngx-tethys-tag.mjs +21 -21
  412. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  413. package/fesm2022/ngx-tethys-time-picker.mjs +61 -58
  414. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  415. package/fesm2022/ngx-tethys-timeline.mjs +16 -16
  416. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  417. package/fesm2022/ngx-tethys-tooltip.mjs +32 -33
  418. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  419. package/fesm2022/ngx-tethys-transfer.mjs +5 -5
  420. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  421. package/fesm2022/ngx-tethys-tree-select.mjs +23 -28
  422. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  423. package/fesm2022/ngx-tethys-tree.mjs +96 -102
  424. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  425. package/fesm2022/ngx-tethys-typography.mjs +15 -15
  426. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  427. package/fesm2022/ngx-tethys-upload.mjs +11 -12
  428. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  429. package/fesm2022/ngx-tethys-watermark.mjs +12 -12
  430. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  431. package/fesm2022/ngx-tethys.mjs +1 -1
  432. package/fesm2022/ngx-tethys.mjs.map +1 -1
  433. package/flexible-text/flexible-text.component.d.ts +1 -3
  434. package/form/form-group-error/form-group-error.component.d.ts +1 -3
  435. package/form/form-group-label.directive.d.ts +0 -2
  436. package/form/form-group.component.d.ts +1 -4
  437. package/form/form-submit.directive.d.ts +0 -2
  438. package/form/form-validator.service.d.ts +0 -2
  439. package/form/form.directive.d.ts +4 -4
  440. package/form/from-group-footer/form-group-footer.component.d.ts +2 -4
  441. package/form/validator/unique-validator.directive.d.ts +1 -4
  442. package/fullscreen/fullscreen.component.d.ts +0 -2
  443. package/fullscreen/fullscreen.service.d.ts +0 -2
  444. package/grid/thy-col.directive.d.ts +1 -2
  445. package/grid/thy-grid-item.component.d.ts +2 -4
  446. package/grid/thy-grid.component.d.ts +1 -3
  447. package/guider/guider.directive.d.ts +1 -3
  448. package/guider/guider.service.d.ts +0 -7
  449. package/icon/icon-registry.d.ts +1 -3
  450. package/icon/icon.component.d.ts +1 -3
  451. package/image/image-group.component.d.ts +1 -2
  452. package/image/image.directive.d.ts +1 -3
  453. package/image/image.service.d.ts +2 -2
  454. package/image/preview/image-preview.component.d.ts +1 -4
  455. package/input/input-count.component.d.ts +3 -4
  456. package/input/input-group.component.d.ts +1 -3
  457. package/input/input-search.component.d.ts +2 -2
  458. package/input/input.component.d.ts +1 -2
  459. package/input/input.directive.d.ts +2 -3
  460. package/input-number/input-number.component.d.ts +2 -2
  461. package/layout/sidebar.component.d.ts +44 -13
  462. package/list/selection/selection-list.d.ts +1 -2
  463. package/loading/loading.component.d.ts +0 -2
  464. package/loading/styles/loading.scss +3 -1
  465. package/mention/mention.directive.d.ts +4 -5
  466. package/mention/suggestions/suggestions.component.d.ts +2 -3
  467. package/menu/group/menu-group.component.d.ts +12 -26
  468. package/menu/item/action/menu-item-action.component.d.ts +2 -3
  469. package/menu/item/menu-item.component.d.ts +1 -2
  470. package/message/abstract/abstract-message-container.component.d.ts +1 -2
  471. package/message/abstract/abstract-message.component.d.ts +2 -2
  472. package/message/message-container.component.d.ts +1 -3
  473. package/message/message-queue.service.d.ts +1 -2
  474. package/message/message.component.d.ts +1 -3
  475. package/message/message.service.d.ts +3 -5
  476. package/nav/icon-nav/icon-nav.component.d.ts +2 -2
  477. package/nav/nav-ink-bar.directive.d.ts +2 -4
  478. package/nav/nav-item.directive.d.ts +3 -4
  479. package/nav/nav.component.d.ts +1 -3
  480. package/nav/nav.pipe.d.ts +0 -2
  481. package/notify/notify-container.component.d.ts +1 -3
  482. package/notify/notify-queue.service.d.ts +1 -2
  483. package/notify/notify.component.d.ts +2 -3
  484. package/notify/notify.service.d.ts +1 -4
  485. package/package.json +1 -1
  486. package/pagination/pagination.component.d.ts +7 -19
  487. package/pagination/pagination.pipe.d.ts +0 -2
  488. package/popover/header/popover-header.component.d.ts +0 -3
  489. package/popover/popover-container.component.d.ts +3 -4
  490. package/popover/popover.directive.d.ts +2 -5
  491. package/popover/popover.service.d.ts +4 -6
  492. package/progress/progress-strip.component.d.ts +0 -1
  493. package/property/property-item.component.d.ts +6 -6
  494. package/property-operation/property-operation.component.d.ts +1 -3
  495. package/radio/button/radio-button.component.d.ts +2 -5
  496. package/radio/group/radio-group.component.d.ts +1 -2
  497. package/radio/radio.component.d.ts +2 -3
  498. package/rate/rate.component.d.ts +2 -2
  499. package/resizable/resizable.directive.d.ts +2 -4
  500. package/resizable/resizable.service.d.ts +2 -2
  501. package/resizable/resize-handle.component.d.ts +1 -3
  502. package/schematics/version.d.ts +1 -1
  503. package/schematics/version.js +1 -1
  504. package/segment/segment-item.component.d.ts +4 -5
  505. package/segment/segment.component.d.ts +1 -2
  506. package/select/custom-select/custom-select.component.d.ts +5 -5
  507. package/select/native-select/native-select.component.d.ts +1 -1
  508. package/shared/base-form-check.component.d.ts +1 -1
  509. package/shared/directives/string-or-template-outlet.directive.d.ts +1 -2
  510. package/shared/directives/thy-autofocus.directive.d.ts +0 -2
  511. package/shared/directives/thy-contextmenu.directive.d.ts +1 -2
  512. package/shared/directives/thy-ctrl-enter.directive.d.ts +1 -2
  513. package/shared/directives/thy-enter.directive.d.ts +1 -2
  514. package/shared/directives/thy-scroll.directive.d.ts +1 -2
  515. package/shared/directives/thy-show.d.ts +1 -2
  516. package/shared/directives/thy-stop-propagation.directive.d.ts +2 -2
  517. package/shared/directives/view-outlet.directive.d.ts +1 -2
  518. package/shared/ng-transclude.directive.d.ts +1 -1
  519. package/shared/option/group/option-group.component.d.ts +1 -2
  520. package/shared/option/list-option/list-option.component.d.ts +5 -10
  521. package/shared/option/option.component.d.ts +5 -5
  522. package/shared/select/select-control/select-control.component.d.ts +1 -2
  523. package/skeleton/skeleton-circle.component.d.ts +1 -4
  524. package/skeleton/skeleton-rectangle.component.d.ts +5 -5
  525. package/slide/drawer/drawer-container.directive.d.ts +1 -2
  526. package/slide/slide-container.component.d.ts +3 -4
  527. package/slide/slide-header/slide-header.component.d.ts +0 -2
  528. package/slide/slide.service.d.ts +3 -3
  529. package/slider/slider.component.d.ts +2 -2
  530. package/space/space.component.d.ts +1 -2
  531. package/statistic/statistic.component.d.ts +1 -2
  532. package/stepper/step.component.d.ts +1 -2
  533. package/stepper/stepper-button.directive.d.ts +0 -3
  534. package/strength/strength.component.d.ts +0 -1
  535. package/switch/switch.component.d.ts +1 -1
  536. package/table/table-column.component.d.ts +32 -8
  537. package/table/table-skeleton.component.d.ts +3 -12
  538. package/table/table.component.d.ts +3 -5
  539. package/tabs/tabs.component.d.ts +1 -2
  540. package/tag/tag.component.d.ts +7 -3
  541. package/time-picker/inner/inner-time-picker.component.d.ts +2 -4
  542. package/time-picker/time-picker-panel.component.d.ts +1 -2
  543. package/time-picker/time-picker.component.d.ts +1 -2
  544. package/timeline/timeline-item.component.d.ts +1 -3
  545. package/timeline/timeline.component.d.ts +1 -3
  546. package/tooltip/tooltip.component.d.ts +1 -2
  547. package/tooltip/tooltip.directive.d.ts +6 -9
  548. package/tooltip/tooltip.service.d.ts +2 -4
  549. package/transfer/transfer-list.component.d.ts +1 -2
  550. package/tree/tree-node.component.d.ts +5 -21
  551. package/tree/tree.component.d.ts +1 -2
  552. package/tree-select/tree-select.component.d.ts +5 -6
  553. package/typography/bg-color.directive.d.ts +0 -2
  554. package/typography/text-color.directive.d.ts +1 -2
  555. package/upload/file-select-base.d.ts +2 -3
  556. package/upload/file-select.component.d.ts +1 -0
  557. package/upload/upload.service.d.ts +0 -2
  558. package/watermark/watermark.directive.d.ts +1 -2
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output, ViewChild, inject } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { isValid } from 'date-fns';
4
4
  import { reqAnimFrame } from 'ngx-tethys/core';
@@ -11,29 +11,9 @@ import * as i0 from "@angular/core";
11
11
  * @name thy-time-picker-panel
12
12
  */
13
13
  export class ThyTimePanel {
14
- /**
15
- * 展示的日期格式,支持 'HH:mm:ss' | 'HH:mm' | 'mm:ss'
16
- * @type string
17
- * @default HH:mm:ss
18
- */
19
- set thyFormat(value) {
20
- if (value) {
21
- const formatSet = new Set(value);
22
- this.showHourColumn = formatSet.has('H') || formatSet.has('h');
23
- this.showMinuteColumn = formatSet.has('m');
24
- this.showSecondColumn = formatSet.has('s');
25
- }
26
- else {
27
- this.showHourColumn = true;
28
- this.showMinuteColumn = true;
29
- this.showSecondColumn = true;
30
- }
31
- this.showColumnCount = [this.showHourColumn, this.showMinuteColumn, this.showSecondColumn].filter(m => m).length;
32
- this.cdr.markForCheck();
33
- }
34
- constructor(cdr, ngZone) {
35
- this.cdr = cdr;
36
- this.ngZone = ngZone;
14
+ constructor() {
15
+ this.cdr = inject(ChangeDetectorRef);
16
+ this.ngZone = inject(NgZone);
37
17
  /**
38
18
  * 小时间隔步长
39
19
  * @type number
@@ -83,6 +63,26 @@ export class ThyTimePanel {
83
63
  this.onValueChangeFn = () => void 0;
84
64
  this.onTouchedFn = () => void 0;
85
65
  }
66
+ /**
67
+ * 展示的日期格式,支持 'HH:mm:ss' | 'HH:mm' | 'mm:ss'
68
+ * @type string
69
+ * @default HH:mm:ss
70
+ */
71
+ set thyFormat(value) {
72
+ if (value) {
73
+ const formatSet = new Set(value);
74
+ this.showHourColumn = formatSet.has('H') || formatSet.has('h');
75
+ this.showMinuteColumn = formatSet.has('m');
76
+ this.showSecondColumn = formatSet.has('s');
77
+ }
78
+ else {
79
+ this.showHourColumn = true;
80
+ this.showMinuteColumn = true;
81
+ this.showSecondColumn = true;
82
+ }
83
+ this.showColumnCount = [this.showHourColumn, this.showMinuteColumn, this.showSecondColumn].filter(m => m).length;
84
+ this.cdr.markForCheck();
85
+ }
86
86
  ngOnInit() {
87
87
  this.generateTimeRange();
88
88
  this.initialValue();
@@ -210,7 +210,7 @@ export class ThyTimePanel {
210
210
  this.resetScrollPosition();
211
211
  }, 200);
212
212
  }
213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimePanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimePanel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
214
214
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyTimePanel, isStandalone: true, selector: "thy-time-picker-panel", inputs: { thyFormat: "thyFormat", thyHourStep: "thyHourStep", thyMinuteStep: "thyMinuteStep", thySecondStep: "thySecondStep", thyShowSelectNow: ["thyShowSelectNow", "thyShowSelectNow", coerceBooleanProperty], thyShowOperations: ["thyShowOperations", "thyShowOperations", coerceBooleanProperty] }, outputs: { thyPickChange: "thyPickChange", thyClosePanel: "thyClosePanel" }, host: { properties: { "class.thy-time-picker-panel-has-bottom-operation": "thyShowOperations", "class.thy-time-picker-panel-columns-2": "showColumnCount === 2", "class.thy-time-picker-panel-columns-3": "showColumnCount === 3" }, classAttribute: "thy-time-picker-panel" }, providers: [
215
215
  {
216
216
  provide: NG_VALUE_ACCESSOR,
@@ -233,7 +233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
233
233
  '[class.thy-time-picker-panel-columns-2]': `showColumnCount === 2`,
234
234
  '[class.thy-time-picker-panel-columns-3]': `showColumnCount === 3`
235
235
  }, standalone: true, imports: [ThyButton, DecimalPipe], template: "<div class=\"{{ prefixCls }}-content\">\n @if (showHourColumn) {\n <ul #hourListElement class=\"{{ prefixCls }}-time-column {{ prefixCls }}-hour-column\">\n @for (time of hourRange; track $index; let i = $index) {\n <li\n class=\"{{ prefixCls }}-time-column-cell\"\n [class.thy-time-picker-panel-time-column-cell-selected]=\"hour === time.value\"\n (click)=\"pickHours(time, i)\">\n <span class=\"{{ prefixCls }}-time-column-cell-inner\">{{ time.value | number: '2.0-0' }}</span>\n </li>\n }\n </ul>\n }\n @if (showMinuteColumn) {\n <ul #minuteListElement class=\"{{ prefixCls }}-time-column {{ prefixCls }}-minute-column\">\n @for (time of minuteRange; track $index; let i = $index) {\n <li\n class=\"{{ prefixCls }}-time-column-cell\"\n [class.thy-time-picker-panel-time-column-cell-selected]=\"minute === time.value\"\n (click)=\"pickMinutes(time, i)\">\n <span class=\"{{ prefixCls }}-time-column-cell-inner\">{{ time.value | number: '2.0-0' }}</span>\n </li>\n }\n </ul>\n }\n @if (showSecondColumn) {\n <ul #secondListElement class=\"{{ prefixCls }}-time-column {{ prefixCls }}-second-column\">\n @for (time of secondRange; track $index; let i = $index) {\n <li\n class=\"{{ prefixCls }}-time-column-cell\"\n [class.thy-time-picker-panel-time-column-cell-selected]=\"second === time.value\"\n (click)=\"pickSeconds(time, i)\">\n <span class=\"{{ prefixCls }}-time-column-cell-inner\">{{ time.value | number: '2.0-0' }}</span>\n </li>\n }\n </ul>\n }\n</div>\n\n@if (thyShowOperations) {\n <div class=\"{{ prefixCls }}-bottom-operation\">\n @if (thyShowSelectNow) {\n <a href=\"javascript:;\" class=\"{{ prefixCls }}-time-now\" (click)=\"selectNow()\">\u6B64\u523B</a>\n }\n <button class=\"{{ prefixCls }}-time-confirm\" thyButton=\"primary\" thySize=\"xs\" class=\"confirm\" (click)=\"confirmPickTime()\">\u786E\u5B9A</button>\n </div>\n}\n" }]
236
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { hourListRef: [{
236
+ }], propDecorators: { hourListRef: [{
237
237
  type: ViewChild,
238
238
  args: ['hourListElement', { static: false }]
239
239
  }], minuteListRef: [{
@@ -261,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
261
261
  }], thyClosePanel: [{
262
262
  type: Output
263
263
  }] } });
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci90aW1lLXBpY2tlci1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUM7OztHQUdHO0FBcUJILE1BQU0sT0FBTyxZQUFZO0lBT3JCOzs7O09BSUc7SUFDSCxJQUFhLFNBQVMsQ0FBQyxLQUFhO1FBQ2hDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsZ0JB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dGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgcmVxQW5pbUZyYW1lIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgVGlueURhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgVGh5QnV0dG9uIH0gZnJvbSAnbmd4LXRldGh5cy9idXR0b24nO1xuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIOaXtumXtOmAieaLqemdouadv+e7hOS7tlxuICogQG5hbWUgdGh5LXRpbWUtcGlja2VyLXBhbmVsXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRpbWUtcGlja2VyLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VGltZVBhbmVsKVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LXRpbWUtcGlja2VyLXBhbmVsJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGltZS1waWNrZXItcGFuZWwtaGFzLWJvdHRvbS1vcGVyYXRpb25dJzogYHRoeVNob3dPcGVyYXRpb25zYCxcbiAgICAgICAgJ1tjbGFzcy50aHktdGltZS1waWNrZXItcGFuZWwtY29sdW1ucy0yXSc6IGBzaG93Q29sdW1uQ291bnQgPT09IDJgLFxuICAgICAgICAnW2NsYXNzLnRoeS10aW1lLXBpY2tlci1wYW5lbC1jb2x1bW5zLTNdJzogYHNob3dDb2x1bW5Db3VudCA9PT0gM2BcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RoeUJ1dHRvbiwgRGVjaW1hbFBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRpbWVQYW5lbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQFZpZXdDaGlsZCgnaG91ckxpc3RFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGhvdXJMaXN0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ21pbnV0ZUxpc3RFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIG1pbnV0ZUxpc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2Vjb25kTGlzdEVsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2Vjb25kTGlzdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiDlsZXnpLrnmoTml6XmnJ/moLzlvI/vvIzmlK/mjIEgJ0hIOm1tOnNzJyB8ICdISDptbScgfCAnbW06c3MnXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgSEg6bW06c3NcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5Rm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXRTZXQgPSBuZXcgU2V0KHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0hvdXJDb2x1bW4gPSBmb3JtYXRTZXQuaGFzKCdIJykgfHwgZm9ybWF0U2V0LmhhcygnaCcpO1xuICAgICAgICAgICAgdGhpcy5zaG93TWludXRlQ29sdW1uID0gZm9ybWF0U2V0LmhhcygnbScpO1xuICAgICAgICAgICAgdGhpcy5zaG93U2Vjb25kQ29sdW1uID0gZm9ybWF0U2V0LmhhcygncycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93SG91ckNvbHVtbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNob3dNaW51dGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zaG93U2Vjb25kQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dDb2x1bW5Db3VudCA9IFt0aGlzLnNob3dIb3VyQ29sdW1uLCB0aGlzLnNob3dNaW51dGVDb2x1bW4sIHRoaXMuc2hvd1NlY29uZENvbHVtbl0uZmlsdGVyKG0gPT4gbSkubGVuZ3RoO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlsI/ml7bpl7TpmpTmraXplb9cbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIb3VyU3RlcDogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOWIhumSn+mXtOmalOatpemVv1xuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU1pbnV0ZVN0ZXA6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDnp5Lpl7TpmpTmraXplb9cbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTZWNvbmRTdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S66YCJ5oup5q2k5Yi7XG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTZWxlY3ROb3cgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S65bqV6YOo5pON5L2cXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dPcGVyYXRpb25zID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOmAieaLqeaXtumXtOinpuWPkeeahOS6i+S7tlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxEYXRlPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlQaWNrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgLyoqXG4gICAgICog5YWz6Zet6Z2i5p2/5LqL5Lu2XG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPHZvaWQ+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUNsb3NlUGFuZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvLyBtYXJnaW4tdG9wICsgMXB4IGJvcmRlclxuICAgIFNDUk9MTF9PRkZTRVRfU1BBQ0lORyA9IDU7XG5cbiAgICBTQ1JPTExfREVGQVVMVF9EVVJBVElPTiA9IDEyMDtcblxuICAgIHByZWZpeENscyA9ICd0aHktdGltZS1waWNrZXItcGFuZWwnO1xuXG4gICAgaG91clJhbmdlOiBSZWFkb25seUFycmF5PHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gPSBbXTtcblxuICAgIG1pbnV0ZVJhbmdlOiBSZWFkb25seUFycmF5PHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gPSBbXTtcblxuICAgIHNlY29uZFJhbmdlOiBSZWFkb25seUFycmF5PHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gPSBbXTtcblxuICAgIHNob3dIb3VyQ29sdW1uID0gdHJ1ZTtcblxuICAgIHNob3dNaW51dGVDb2x1bW4gPSB0cnVlO1xuXG4gICAgc2hvd1NlY29uZENvbHVtbiA9IHRydWU7XG5cbiAgICBzaG93Q29sdW1uQ291bnQ6IG51bWJlciA9IDM7XG5cbiAgICB2YWx1ZTogRGF0ZTtcblxuICAgIGhvdXI6IG51bWJlcjtcblxuICAgIG1pbnV0ZTogbnVtYmVyO1xuXG4gICAgc2Vjb25kOiBudW1iZXI7XG5cbiAgICBpbml0aWFsU2Nyb2xsUG9zaXRpb246IGJvb2xlYW47XG5cbiAgICBvblZhbHVlQ2hhbmdlRm46ICh2YWw6IERhdGUpID0+IHZvaWQgPSAoKSA9PiB2b2lkIDA7XG5cbiAgICBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVRpbWVSYW5nZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxWYWx1ZSgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFNjcm9sbFBvc2l0aW9uID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVUaW1lUmFuZ2UoKSB7XG4gICAgICAgIHRoaXMuaG91clJhbmdlID0gdGhpcy5idWlsZFRpbWVSYW5nZSgyNCwgdGhpcy50aHlIb3VyU3RlcCk7XG4gICAgICAgIHRoaXMubWludXRlUmFuZ2UgPSB0aGlzLmJ1aWxkVGltZVJhbmdlKDYwLCB0aGlzLnRoeU1pbnV0ZVN0ZXApO1xuICAgICAgICB0aGlzLnNlY29uZFJhbmdlID0gdGhpcy5idWlsZFRpbWVSYW5nZSg2MCwgdGhpcy50aHlTZWNvbmRTdGVwKTtcbiAgICB9XG5cbiAgICBwaWNrSG91cnMoaG91cnM6IHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnZhbHVlLnNldEhvdXJzKGhvdXJzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5ob3VyID0gaG91cnMudmFsdWU7XG4gICAgICAgIHRoaXMudGh5UGlja0NoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvKHRoaXMuaG91ckxpc3RSZWYubmF0aXZlRWxlbWVudCwgaW5kZXgpO1xuICAgIH1cblxuICAgIHBpY2tNaW51dGVzKG1pbnV0ZXM6IHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnZhbHVlLnNldE1pbnV0ZXMobWludXRlcy52YWx1ZSk7XG4gICAgICAgIHRoaXMubWludXRlID0gbWludXRlcy52YWx1ZTtcbiAgICAgICAgdGhpcy50aHlQaWNrQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5taW51dGVMaXN0UmVmLm5hdGl2ZUVsZW1lbnQsIGluZGV4KTtcbiAgICB9XG5cbiAgICBwaWNrU2Vjb25kcyhzZWNvbmRzOiB7IHZhbHVlOiBudW1iZXI7IGRpc2FibGVkOiBib29sZWFuIH0sIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy52YWx1ZS5zZXRTZWNvbmRzKHNlY29uZHMudmFsdWUpO1xuICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZHMudmFsdWU7XG4gICAgICAgIHRoaXMudGh5UGlja0NoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvKHRoaXMuc2Vjb25kTGlzdFJlZi5uYXRpdmVFbGVtZW50LCBpbmRleCk7XG4gICAgfVxuXG4gICAgc2VsZWN0Tm93KCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5zZXRITVNQcm9wZXJ0eSgpO1xuICAgICAgICB0aGlzLnRoeVBpY2tDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy50aHlDbG9zZVBhbmVsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBjb25maXJtUGlja1RpbWUoKSB7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZUZuKHRoaXMudmFsdWUgfHwgbmV3IERhdGUoKSk7XG4gICAgICAgIHRoaXMudGh5Q2xvc2VQYW5lbC5lbWl0KCk7XG4gICAgfVxuXG4gICAgc2Nyb2xsVG8oY29udGFpbmVyOiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlciA9IDAsIGR1cmF0aW9uOiBudW1iZXIgPSB0aGlzLlNDUk9MTF9ERUZBVUxUX0RVUkFUSU9OKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldFRvcCA9IChjb250YWluZXIuY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50KS5vZmZzZXRUb3AgLSB0aGlzLlNDUk9MTF9PRkZTRVRfU1BBQ0lORztcbiAgICAgICAgdGhpcy5ydW5TY3JvbGxBbmltYXRpb25GcmFtZShjb250YWluZXIsIG9mZnNldFRvcCwgZHVyYXRpb24pO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIGlzVmFsaWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRITVNQcm9wZXJ0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF1dG9TY3JvbGwodGhpcy5pbml0aWFsU2Nyb2xsUG9zaXRpb24gPyB0aGlzLlNDUk9MTF9ERUZBVUxUX0RVUkFUSU9OIDogMCk7XG5cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBEYXRlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbFZhbHVlKCkge1xuICAgICAgICB0aGlzLmhvdXIgPSAwO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IDA7XG4gICAgICAgIHRoaXMuc2Vjb25kID0gMDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBUaW55RGF0ZSgpLnNldEhtcygwLCAwLCAwKS5uYXRpdmVEYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRUaW1lUmFuZ2UobGVuZ3RoOiBudW1iZXIsIHN0ZXA6IG51bWJlciA9IDEsIHN0YXJ0OiBudW1iZXIgPSAwLCBkaXNhYmxlczogbnVtYmVyW10gPSBbXSkge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5KE1hdGguY2VpbChsZW5ndGggLyBzdGVwKSkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGkgKyBzdGFydCkgKiBzdGVwO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVzLmluZGV4T2YodmFsdWUpID4gLTFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SE1TUHJvcGVydHkoKSB7XG4gICAgICAgIHRoaXMuaG91ciA9IHRoaXMudmFsdWUuZ2V0SG91cnMoKTtcbiAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLnZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgdGhpcy5zZWNvbmQgPSB0aGlzLnZhbHVlLmdldFNlY29uZHMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0U2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmhvdXJMaXN0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmhvdXJMaXN0UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW51dGVMaXN0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm1pbnV0ZUxpc3RSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlY29uZExpc3RSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kTGlzdFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsUG9zaXRpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJ1blNjcm9sbEFuaW1hdGlvbkZyYW1lKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHRvOiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIgPSB0aGlzLlNDUk9MTF9ERUZBVUxUX0RVUkFUSU9OKSB7XG4gICAgICAgIGlmIChkdXJhdGlvbiA8PSAwKSB7XG4gICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gdG87XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdG8gLSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICBjb25zdCBmcmFtZSA9IChvZmZzZXQgLyBkdXJhdGlvbikgKiAxMDtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgcmVxQW5pbUZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wICs9IGZyYW1lO1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIuc2Nyb2xsVG9wID09PSB0bykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucnVuU2Nyb2xsQW5pbWF0aW9uRnJhbWUoY29udGFpbmVyLCB0bywgZHVyYXRpb24gLSAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhdXRvU2Nyb2xsKGR1cmF0aW9uOiBudW1iZXIgPSB0aGlzLlNDUk9MTF9ERUZBVUxUX0RVUkFUSU9OKSB7XG4gICAgICAgIGlmICh0aGlzLmhvdXJMaXN0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvKFxuICAgICAgICAgICAgICAgIHRoaXMuaG91ckxpc3RSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJSYW5nZS5maW5kSW5kZXgobSA9PiBtLnZhbHVlID09PSB0aGlzLmhvdXIpLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1pbnV0ZUxpc3RSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG8oXG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVMaXN0UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVSYW5nZS5maW5kSW5kZXgobSA9PiBtLnZhbHVlID09PSB0aGlzLm1pbnV0ZSksXG4gICAgICAgICAgICAgICAgZHVyYXRpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kTGlzdFJlZikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUbyhcbiAgICAgICAgICAgICAgICB0aGlzLnNlY29uZExpc3RSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aGlzLnNlY29uZFJhbmdlLmZpbmRJbmRleChtID0+IG0udmFsdWUgPT09IHRoaXMuc2Vjb25kKSxcbiAgICAgICAgICAgICAgICBkdXJhdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyDlhbPpl63pnaLmnb/ml7bmnIkgMC4ycyDnmoTliqjnlLvvvIzmiYDku6Xlu7bov58gMjAwbXMg5YaN6YeN572u5rua5Yqo5L2N572uXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1jb250ZW50XCI+XG4gIEBpZiAoc2hvd0hvdXJDb2x1bW4pIHtcbiAgICA8dWwgI2hvdXJMaXN0RWxlbWVudCBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLWNvbHVtbiB7eyBwcmVmaXhDbHMgfX0taG91ci1jb2x1bW5cIj5cbiAgICAgIEBmb3IgKHRpbWUgb2YgaG91clJhbmdlOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uLWNlbGxcIlxuICAgICAgICAgIFtjbGFzcy50aHktdGltZS1waWNrZXItcGFuZWwtdGltZS1jb2x1bW4tY2VsbC1zZWxlY3RlZF09XCJob3VyID09PSB0aW1lLnZhbHVlXCJcbiAgICAgICAgICAoY2xpY2spPVwicGlja0hvdXJzKHRpbWUsIGkpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tdGltZS1jb2x1bW4tY2VsbC1pbm5lclwiPnt7IHRpbWUudmFsdWUgfCBudW1iZXI6ICcyLjAtMCcgfX08L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgfVxuICBAaWYgKHNob3dNaW51dGVDb2x1bW4pIHtcbiAgICA8dWwgI21pbnV0ZUxpc3RFbGVtZW50IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uIHt7IHByZWZpeENscyB9fS1taW51dGUtY29sdW1uXCI+XG4gICAgICBAZm9yICh0aW1lIG9mIG1pbnV0ZVJhbmdlOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uLWNlbGxcIlxuICAgICAgICAgIFtjbGFzcy50aHktdGltZS1waWNrZXItcGFuZWwtdGltZS1jb2x1bW4tY2VsbC1zZWxlY3RlZF09XCJtaW51dGUgPT09IHRpbWUudmFsdWVcIlxuICAgICAgICAgIChjbGljayk9XCJwaWNrTWludXRlcyh0aW1lLCBpKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uLWNlbGwtaW5uZXJcIj57eyB0aW1lLnZhbHVlIHwgbnVtYmVyOiAnMi4wLTAnIH19PC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIH1cbiAgQGlmIChzaG93U2Vjb25kQ29sdW1uKSB7XG4gICAgPHVsICNzZWNvbmRMaXN0RWxlbWVudCBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLWNvbHVtbiB7eyBwcmVmaXhDbHMgfX0tc2Vjb25kLWNvbHVtblwiPlxuICAgICAgQGZvciAodGltZSBvZiBzZWNvbmRSYW5nZTsgdHJhY2sgJGluZGV4OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8bGlcbiAgICAgICAgICBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLWNvbHVtbi1jZWxsXCJcbiAgICAgICAgICBbY2xhc3MudGh5LXRpbWUtcGlja2VyLXBhbmVsLXRpbWUtY29sdW1uLWNlbGwtc2VsZWN0ZWRdPVwic2Vjb25kID09PSB0aW1lLnZhbHVlXCJcbiAgICAgICAgICAoY2xpY2spPVwicGlja1NlY29uZHModGltZSwgaSlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLWNvbHVtbi1jZWxsLWlubmVyXCI+e3sgdGltZS52YWx1ZSB8IG51bWJlcjogJzIuMC0wJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICB9XG48L2Rpdj5cblxuQGlmICh0aHlTaG93T3BlcmF0aW9ucykge1xuICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWJvdHRvbS1vcGVyYXRpb25cIj5cbiAgICBAaWYgKHRoeVNob3dTZWxlY3ROb3cpIHtcbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLW5vd1wiIChjbGljayk9XCJzZWxlY3ROb3coKVwiPuatpOWIuzwvYT5cbiAgICB9XG4gICAgPGJ1dHRvbiBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLWNvbmZpcm1cIiB0aHlCdXR0b249XCJwcmltYXJ5XCIgdGh5U2l6ZT1cInhzXCIgY2xhc3M9XCJjb25maXJtXCIgKGNsaWNrKT1cImNvbmZpcm1QaWNrVGltZSgpXCI+56Gu5a6aPC9idXR0b24+XG4gIDwvZGl2PlxufVxuIl19
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci90aW1lLXBpY2tlci1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRTlDOzs7R0FHRztBQXFCSCxNQUFNLE9BQU8sWUFBWTtJQXBCekI7UUFxQlksUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUE0QmhDOzs7V0FHRztRQUNNLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRWpDOzs7V0FHRztRQUNNLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRW5DOzs7V0FHRztRQUNNLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRW5DOzs7V0FH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cnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IHJlcUFuaW1GcmFtZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIFRpbnlEYXRlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFRoeUJ1dHRvbiB9IGZyb20gJ25neC10ZXRoeXMvYnV0dG9uJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiDml7bpl7TpgInmi6npnaLmnb/nu4Tku7ZcbiAqIEBuYW1lIHRoeS10aW1lLXBpY2tlci1wYW5lbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10aW1lLXBpY2tlci1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeVRpbWVQYW5lbClcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS10aW1lLXBpY2tlci1wYW5lbCcsXG4gICAgICAgICdbY2xhc3MudGh5LXRpbWUtcGlja2VyLXBhbmVsLWhhcy1ib3R0b20tb3BlcmF0aW9uXSc6IGB0aHlTaG93T3BlcmF0aW9uc2AsXG4gICAgICAgICdbY2xhc3MudGh5LXRpbWUtcGlja2VyLXBhbmVsLWNvbHVtbnMtMl0nOiBgc2hvd0NvbHVtbkNvdW50ID09PSAyYCxcbiAgICAgICAgJ1tjbGFzcy50aHktdGltZS1waWNrZXItcGFuZWwtY29sdW1ucy0zXSc6IGBzaG93Q29sdW1uQ291bnQgPT09IDNgXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUaHlCdXR0b24sIERlY2ltYWxQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUaW1lUGFuZWwgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgQFZpZXdDaGlsZCgnaG91ckxpc3RFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGhvdXJMaXN0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ21pbnV0ZUxpc3RFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIG1pbnV0ZUxpc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2Vjb25kTGlzdEVsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2Vjb25kTGlzdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiDlsZXnpLrnmoTml6XmnJ/moLzlvI/vvIzmlK/mjIEgJ0hIOm1tOnNzJyB8ICdISDptbScgfCAnbW06c3MnXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgSEg6bW06c3NcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5Rm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXRTZXQgPSBuZXcgU2V0KHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0hvdXJDb2x1bW4gPSBmb3JtYXRTZXQuaGFzKCdIJykgfHwgZm9ybWF0U2V0LmhhcygnaCcpO1xuICAgICAgICAgICAgdGhpcy5zaG93TWludXRlQ29sdW1uID0gZm9ybWF0U2V0LmhhcygnbScpO1xuICAgICAgICAgICAgdGhpcy5zaG93U2Vjb25kQ29sdW1uID0gZm9ybWF0U2V0LmhhcygncycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93SG91ckNvbHVtbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNob3dNaW51dGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zaG93U2Vjb25kQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dDb2x1bW5Db3VudCA9IFt0aGlzLnNob3dIb3VyQ29sdW1uLCB0aGlzLnNob3dNaW51dGVDb2x1bW4sIHRoaXMuc2hvd1NlY29uZENvbHVtbl0uZmlsdGVyKG0gPT4gbSkubGVuZ3RoO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlsI/ml7bpl7TpmpTmraXplb9cbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIb3VyU3RlcDogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOWIhumSn+mXtOmalOatpemVv1xuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU1pbnV0ZVN0ZXA6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDnp5Lpl7TpmpTmraXplb9cbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTZWNvbmRTdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S66YCJ5oup5q2k5Yi7XG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTZWxlY3ROb3cgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S65bqV6YOo5pON5L2cXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dPcGVyYXRpb25zID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOmAieaLqeaXtumXtOinpuWPkeeahOS6i+S7tlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxEYXRlPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlQaWNrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgLyoqXG4gICAgICog5YWz6Zet6Z2i5p2/5LqL5Lu2XG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPHZvaWQ+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUNsb3NlUGFuZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvLyBtYXJnaW4tdG9wICsgMXB4IGJvcmRlclxuICAgIFNDUk9MTF9PRkZTRVRfU1BBQ0lORyA9IDU7XG5cbiAgICBTQ1JPTExfREVGQVVMVF9EVVJBVElPTiA9IDEyMDtcblxuICAgIHByZWZpeENscyA9ICd0aHktdGltZS1waWNrZXItcGFuZWwnO1xuXG4gICAgaG91clJhbmdlOiBSZWFkb25seUFycmF5PHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gPSBbXTtcblxuICAgIG1pbnV0ZVJhbmdlOiBSZWFkb25seUFycmF5PHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gPSBbXTtcblxuICAgIHNlY29uZFJhbmdlOiBSZWFkb25seUFycmF5PHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gPSBbXTtcblxuICAgIHNob3dIb3VyQ29sdW1uID0gdHJ1ZTtcblxuICAgIHNob3dNaW51dGVDb2x1bW4gPSB0cnVlO1xuXG4gICAgc2hvd1NlY29uZENvbHVtbiA9IHRydWU7XG5cbiAgICBzaG93Q29sdW1uQ291bnQ6IG51bWJlciA9IDM7XG5cbiAgICB2YWx1ZTogRGF0ZTtcblxuICAgIGhvdXI6IG51bWJlcjtcblxuICAgIG1pbnV0ZTogbnVtYmVyO1xuXG4gICAgc2Vjb25kOiBudW1iZXI7XG5cbiAgICBpbml0aWFsU2Nyb2xsUG9zaXRpb246IGJvb2xlYW47XG5cbiAgICBvblZhbHVlQ2hhbmdlRm46ICh2YWw6IERhdGUpID0+IHZvaWQgPSAoKSA9PiB2b2lkIDA7XG5cbiAgICBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdlbmVyYXRlVGltZVJhbmdlKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbFZhbHVlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsUG9zaXRpb24gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVRpbWVSYW5nZSgpIHtcbiAgICAgICAgdGhpcy5ob3VyUmFuZ2UgPSB0aGlzLmJ1aWxkVGltZVJhbmdlKDI0LCB0aGlzLnRoeUhvdXJTdGVwKTtcbiAgICAgICAgdGhpcy5taW51dGVSYW5nZSA9IHRoaXMuYnVpbGRUaW1lUmFuZ2UoNjAsIHRoaXMudGh5TWludXRlU3RlcCk7XG4gICAgICAgIHRoaXMuc2Vjb25kUmFuZ2UgPSB0aGlzLmJ1aWxkVGltZVJhbmdlKDYwLCB0aGlzLnRoeVNlY29uZFN0ZXApO1xuICAgIH1cblxuICAgIHBpY2tIb3Vycyhob3VyczogeyB2YWx1ZTogbnVtYmVyOyBkaXNhYmxlZDogYm9vbGVhbiB9LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0SG91cnMoaG91cnMudmFsdWUpO1xuICAgICAgICB0aGlzLmhvdXIgPSBob3Vycy52YWx1ZTtcbiAgICAgICAgdGhpcy50aHlQaWNrQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5ob3VyTGlzdFJlZi5uYXRpdmVFbGVtZW50LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcGlja01pbnV0ZXMobWludXRlczogeyB2YWx1ZTogbnVtYmVyOyBkaXNhYmxlZDogYm9vbGVhbiB9LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0TWludXRlcyhtaW51dGVzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5taW51dGUgPSBtaW51dGVzLnZhbHVlO1xuICAgICAgICB0aGlzLnRoeVBpY2tDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5zY3JvbGxUbyh0aGlzLm1pbnV0ZUxpc3RSZWYubmF0aXZlRWxlbWVudCwgaW5kZXgpO1xuICAgIH1cblxuICAgIHBpY2tTZWNvbmRzKHNlY29uZHM6IHsgdmFsdWU6IG51bWJlcjsgZGlzYWJsZWQ6IGJvb2xlYW4gfSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnZhbHVlLnNldFNlY29uZHMoc2Vjb25kcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kcy52YWx1ZTtcbiAgICAgICAgdGhpcy50aHlQaWNrQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5zZWNvbmRMaXN0UmVmLm5hdGl2ZUVsZW1lbnQsIGluZGV4KTtcbiAgICB9XG5cbiAgICBzZWxlY3ROb3coKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLnNldEhNU1Byb3BlcnR5KCk7XG4gICAgICAgIHRoaXMudGh5UGlja0NoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnRoeUNsb3NlUGFuZWwuZW1pdCgpO1xuICAgIH1cblxuICAgIGNvbmZpcm1QaWNrVGltZSgpIHtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlRm4odGhpcy52YWx1ZSB8fCBuZXcgRGF0ZSgpKTtcbiAgICAgICAgdGhpcy50aHlDbG9zZVBhbmVsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBzY3JvbGxUbyhjb250YWluZXI6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyID0gMCwgZHVyYXRpb246IG51bWJlciA9IHRoaXMuU0NST0xMX0RFRkFVTFRfRFVSQVRJT04pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0VG9wID0gKGNvbnRhaW5lci5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQpLm9mZnNldFRvcCAtIHRoaXMuU0NST0xMX09GRlNFVF9TUEFDSU5HO1xuICAgICAgICB0aGlzLnJ1blNjcm9sbEFuaW1hdGlvbkZyYW1lKGNvbnRhaW5lciwgb2Zmc2V0VG9wLCBkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNldEhNU1Byb3BlcnR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbCh0aGlzLmluaXRpYWxTY3JvbGxQb3NpdGlvbiA/IHRoaXMuU0NST0xMX0RFRkFVTFRfRFVSQVRJT04gOiAwKTtcblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IERhdGUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsVmFsdWUoKSB7XG4gICAgICAgIHRoaXMuaG91ciA9IDA7XG4gICAgICAgIHRoaXMubWludXRlID0gMDtcbiAgICAgICAgdGhpcy5zZWNvbmQgPSAwO1xuICAgICAgICB0aGlzLnZhbHVlID0gbmV3IFRpbnlEYXRlKCkuc2V0SG1zKDAsIDAsIDApLm5hdGl2ZURhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFRpbWVSYW5nZShsZW5ndGg6IG51bWJlciwgc3RlcDogbnVtYmVyID0gMSwgc3RhcnQ6IG51bWJlciA9IDAsIGRpc2FibGVzOiBudW1iZXJbXSA9IFtdKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkoTWF0aC5jZWlsKGxlbmd0aCAvIHN0ZXApKS5maWxsKDApLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAoaSArIHN0YXJ0KSAqIHN0ZXA7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZXMuaW5kZXhPZih2YWx1ZSkgPiAtMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRITVNQcm9wZXJ0eSgpIHtcbiAgICAgICAgdGhpcy5ob3VyID0gdGhpcy52YWx1ZS5nZXRIb3VycygpO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IHRoaXMudmFsdWUuZ2V0TWludXRlcygpO1xuICAgICAgICB0aGlzLnNlY29uZCA9IHRoaXMudmFsdWUuZ2V0U2Vjb25kcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuaG91ckxpc3RSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaG91ckxpc3RSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1pbnV0ZUxpc3RSZWYpIHtcbiAgICAgICAgICAgIHRoaXMubWludXRlTGlzdFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kTGlzdFJlZikge1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRMaXN0UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRpYWxTY3JvbGxQb3NpdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcnVuU2Nyb2xsQW5pbWF0aW9uRnJhbWUoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgdG86IG51bWJlciwgZHVyYXRpb246IG51bWJlciA9IHRoaXMuU0NST0xMX0RFRkFVTFRfRFVSQVRJT04pIHtcbiAgICAgICAgaWYgKGR1cmF0aW9uIDw9IDApIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSB0bztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSB0byAtIGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gKG9mZnNldCAvIGR1cmF0aW9uKSAqIDEwO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICByZXFBbmltRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgKz0gZnJhbWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5zY3JvbGxUb3AgPT09IHRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5TY3JvbGxBbmltYXRpb25GcmFtZShjb250YWluZXIsIHRvLCBkdXJhdGlvbiAtIDEwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGF1dG9TY3JvbGwoZHVyYXRpb246IG51bWJlciA9IHRoaXMuU0NST0xMX0RFRkFVTFRfRFVSQVRJT04pIHtcbiAgICAgICAgaWYgKHRoaXMuaG91ckxpc3RSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG8oXG4gICAgICAgICAgICAgICAgdGhpcy5ob3VyTGlzdFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIHRoaXMuaG91clJhbmdlLmZpbmRJbmRleChtID0+IG0udmFsdWUgPT09IHRoaXMuaG91ciksXG4gICAgICAgICAgICAgICAgZHVyYXRpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWludXRlTGlzdFJlZikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUbyhcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZUxpc3RSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZVJhbmdlLmZpbmRJbmRleChtID0+IG0udmFsdWUgPT09IHRoaXMubWludXRlKSxcbiAgICAgICAgICAgICAgICBkdXJhdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWNvbmRMaXN0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvKFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kTGlzdFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kUmFuZ2UuZmluZEluZGV4KG0gPT4gbS52YWx1ZSA9PT0gdGhpcy5zZWNvbmQpLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIOWFs+mXremdouadv+aXtuaciSAwLjJzIOeahOWKqOeUu++8jOaJgOS7peW7tui/nyAyMDBtcyDlho3ph43nva7mu5rliqjkvY3nva5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWNvbnRlbnRcIj5cbiAgQGlmIChzaG93SG91ckNvbHVtbikge1xuICAgIDx1bCAjaG91ckxpc3RFbGVtZW50IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uIHt7IHByZWZpeENscyB9fS1ob3VyLWNvbHVtblwiPlxuICAgICAgQGZvciAodGltZSBvZiBob3VyUmFuZ2U7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPGxpXG4gICAgICAgICAgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tdGltZS1jb2x1bW4tY2VsbFwiXG4gICAgICAgICAgW2NsYXNzLnRoeS10aW1lLXBpY2tlci1wYW5lbC10aW1lLWNvbHVtbi1jZWxsLXNlbGVjdGVkXT1cImhvdXIgPT09IHRpbWUudmFsdWVcIlxuICAgICAgICAgIChjbGljayk9XCJwaWNrSG91cnModGltZSwgaSlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IHByZWZpeENscyB9fS10aW1lLWNvbHVtbi1jZWxsLWlubmVyXCI+e3sgdGltZS52YWx1ZSB8IG51bWJlcjogJzIuMC0wJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICB9XG4gIEBpZiAoc2hvd01pbnV0ZUNvbHVtbikge1xuICAgIDx1bCAjbWludXRlTGlzdEVsZW1lbnQgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tdGltZS1jb2x1bW4ge3sgcHJlZml4Q2xzIH19LW1pbnV0ZS1jb2x1bW5cIj5cbiAgICAgIEBmb3IgKHRpbWUgb2YgbWludXRlUmFuZ2U7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPGxpXG4gICAgICAgICAgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tdGltZS1jb2x1bW4tY2VsbFwiXG4gICAgICAgICAgW2NsYXNzLnRoeS10aW1lLXBpY2tlci1wYW5lbC10aW1lLWNvbHVtbi1jZWxsLXNlbGVjdGVkXT1cIm1pbnV0ZSA9PT0gdGltZS52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInBpY2tNaW51dGVzKHRpbWUsIGkpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tdGltZS1jb2x1bW4tY2VsbC1pbm5lclwiPnt7IHRpbWUudmFsdWUgfCBudW1iZXI6ICcyLjAtMCcgfX08L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgfVxuICBAaWYgKHNob3dTZWNvbmRDb2x1bW4pIHtcbiAgICA8dWwgI3NlY29uZExpc3RFbGVtZW50IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uIHt7IHByZWZpeENscyB9fS1zZWNvbmQtY29sdW1uXCI+XG4gICAgICBAZm9yICh0aW1lIG9mIHNlY29uZFJhbmdlOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uLWNlbGxcIlxuICAgICAgICAgIFtjbGFzcy50aHktdGltZS1waWNrZXItcGFuZWwtdGltZS1jb2x1bW4tY2VsbC1zZWxlY3RlZF09XCJzZWNvbmQgPT09IHRpbWUudmFsdWVcIlxuICAgICAgICAgIChjbGljayk9XCJwaWNrU2Vjb25kcyh0aW1lLCBpKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29sdW1uLWNlbGwtaW5uZXJcIj57eyB0aW1lLnZhbHVlIHwgbnVtYmVyOiAnMi4wLTAnIH19PC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIH1cbjwvZGl2PlxuXG5AaWYgKHRoeVNob3dPcGVyYXRpb25zKSB7XG4gIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tYm90dG9tLW9wZXJhdGlvblwiPlxuICAgIEBpZiAodGh5U2hvd1NlbGVjdE5vdykge1xuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtbm93XCIgKGNsaWNrKT1cInNlbGVjdE5vdygpXCI+5q2k5Yi7PC9hPlxuICAgIH1cbiAgICA8YnV0dG9uIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXRpbWUtY29uZmlybVwiIHRoeUJ1dHRvbj1cInByaW1hcnlcIiB0aHlTaXplPVwieHNcIiBjbGFzcz1cImNvbmZpcm1cIiAoY2xpY2spPVwiY29uZmlybVBpY2tUaW1lKClcIj7noa7lrpo8L2J1dHRvbj5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild, inject } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4
4
  import { isValid } from 'date-fns';
5
5
  import { getFlexiblePositions } from 'ngx-tethys/core';
@@ -16,31 +16,9 @@ import * as i1 from "@angular/forms";
16
16
  * @name thy-time-picker
17
17
  */
18
18
  export class ThyTimePicker {
19
- /**
20
- * 展示的日期格式,支持 'HH:mm:ss' | 'HH:mm' | 'mm:ss'
21
- * @type string
22
- * @default HH:mm:ss
23
- */
24
- set thyFormat(value) {
25
- this.format = value || 'HH:mm:ss';
26
- if (this.value && isValid(this.value)) {
27
- this.showText = new TinyDate(this.value).format(this.format);
28
- }
29
- }
30
- /**
31
- * 禁用
32
- * @type boolean
33
- * @default false
34
- */
35
- set thyDisabled(value) {
36
- this.disabled = value;
37
- }
38
- get thyDisabled() {
39
- return this.disabled;
40
- }
41
- constructor(cdr, elementRef) {
42
- this.cdr = cdr;
43
- this.elementRef = elementRef;
19
+ constructor() {
20
+ this.cdr = inject(ChangeDetectorRef);
21
+ this.elementRef = inject(ElementRef);
44
22
  /**
45
23
  * 输入框大小
46
24
  * @type 'xs' | 'sm' | 'md' | 'lg' | 'default'
@@ -95,6 +73,28 @@ export class ThyTimePicker {
95
73
  this.onValueChangeFn = () => void 0;
96
74
  this.onTouchedFn = () => void 0;
97
75
  }
76
+ /**
77
+ * 展示的日期格式,支持 'HH:mm:ss' | 'HH:mm' | 'mm:ss'
78
+ * @type string
79
+ * @default HH:mm:ss
80
+ */
81
+ set thyFormat(value) {
82
+ this.format = value || 'HH:mm:ss';
83
+ if (this.value && isValid(this.value)) {
84
+ this.showText = new TinyDate(this.value).format(this.format);
85
+ }
86
+ }
87
+ /**
88
+ * 禁用
89
+ * @type boolean
90
+ * @default false
91
+ */
92
+ set thyDisabled(value) {
93
+ this.disabled = value;
94
+ }
95
+ get thyDisabled() {
96
+ return this.disabled;
97
+ }
98
98
  ngOnInit() { }
99
99
  ngAfterViewInit() {
100
100
  this.overlayPositions = getFlexiblePositions(this.thyPlacement, 4);
@@ -292,7 +292,7 @@ export class ThyTimePicker {
292
292
  disabledUserOperation() {
293
293
  return this.disabled || this.thyReadonly;
294
294
  }
295
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
296
296
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyTimePicker, isStandalone: true, selector: "thy-time-picker", inputs: { thySize: "thySize", thyPlaceholder: "thyPlaceholder", thyPlacement: "thyPlacement", thyFormat: "thyFormat", thyHourStep: "thyHourStep", thyMinuteStep: "thyMinuteStep", thySecondStep: "thySecondStep", thyPopupClass: "thyPopupClass", thyBackdrop: ["thyBackdrop", "thyBackdrop", coerceBooleanProperty], thyDisabled: ["thyDisabled", "thyDisabled", coerceBooleanProperty], thyReadonly: ["thyReadonly", "thyReadonly", coerceBooleanProperty], thyShowSelectNow: ["thyShowSelectNow", "thyShowSelectNow", coerceBooleanProperty], thyAllowClear: ["thyAllowClear", "thyAllowClear", coerceBooleanProperty] }, outputs: { thyOpenChange: "thyOpenChange" }, host: { properties: { "class.thy-time-picker-disabled": "disabled", "class.thy-time-picker-readonly": "thyReadonly" }, classAttribute: "thy-time-picker" }, providers: [
297
297
  {
298
298
  provide: NG_VALUE_ACCESSOR,
@@ -314,7 +314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
314
314
  '[class.thy-time-picker-disabled]': `disabled`,
315
315
  '[class.thy-time-picker-readonly]': `thyReadonly`
316
316
  }, standalone: true, imports: [CdkOverlayOrigin, ThyInputDirective, FormsModule, NgTemplateOutlet, ThyIcon, NgClass, CdkConnectedOverlay, ThyTimePanel], animations: [scaleXMotion, scaleYMotion, scaleMotion], template: "<span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" (click)=\"onInputPickerClick()\" class=\"{{ prefixCls }}-wrapper\">\n <ng-container>\n <input\n #pickerInput\n thyInput\n class=\"form-control {{ prefixCls }}-input\"\n [class.thy-input-disabled]=\"disabled\"\n [class.thy-input-readonly]=\"thyReadonly\"\n [class.thy-time-picker-panel-opened]=\"openState\"\n [(ngModel)]=\"showText\"\n [thySize]=\"thySize\"\n [disabled]=\"disabled\"\n [readonly]=\"thyReadonly\"\n [placeholder]=\"thyPlaceholder\"\n (blur)=\"onInputPickerBlur()\"\n (keyup.enter)=\"onKeyupEnter()\"\n (keyup.escape)=\"onKeyupEsc()\"\n (ngModelChange)=\"onCustomizeInput($event)\" />\n <ng-container *ngTemplateOutlet=\"rightIcon\"></ng-container>\n </ng-container>\n</span>\n\n<ng-template #rightIcon>\n @if (!disabled && thyAllowClear && !thyReadonly && showText) {\n <span class=\"{{ prefixCls }}-clear\">\n <thy-icon thyIconName=\"close-circle-bold-fill\" (click)=\"onClearTime($event)\" ngClass=\"remove-link remove-link-{{ thySize }}\"></thy-icon>\n </span>\n }\n <span class=\"{{ prefixCls }}-icon\">\n <thy-icon [thyIconName]=\"'clock-circle-moment'\" ngClass=\"remove-link-{{ thySize }}\"></thy-icon>\n </span>\n</ng-template>\n\n<!-- Overlay -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"openState\"\n [cdkConnectedOverlayHasBackdrop]=\"thyBackdrop\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayTransformOriginOn=\".thy-time-picker-container\"\n (positionChange)=\"onPositionChange($event)\"\n (backdropClick)=\"onClickBackdrop()\"\n (overlayOutsideClick)=\"onOutsideClick($event)\"\n (detach)=\"onOverlayDetach()\"\n (attach)=\"onOverlayAttach()\">\n <div\n #overlayContainer\n style=\"position: relative\"\n [@scaleXMotion]=\"thyPlacement === 'left' || thyPlacement === 'right' ? 'enter' : 'void'\"\n [@scaleYMotion]=\"thyPlacement === 'top' || thyPlacement === 'bottom' ? 'enter' : 'void'\"\n [@scaleMotion]=\"\n thyPlacement !== 'left' && thyPlacement !== 'right' && thyPlacement !== 'top' && thyPlacement !== 'bottom' ? 'enter' : 'void'\n \"\n class=\"thy-time-picker-container\">\n <!-- Compatible for overlay that not support offset dynamically and immediately -->\n <thy-time-picker-panel\n [ngClass]=\"thyPopupClass\"\n [(ngModel)]=\"value\"\n [thyFormat]=\"format\"\n [thyHourStep]=\"thyHourStep\"\n [thyMinuteStep]=\"thyMinuteStep\"\n [thySecondStep]=\"thySecondStep\"\n [thyShowSelectNow]=\"thyShowSelectNow\"\n (ngModelChange)=\"onPickTimeConfirm($event)\"\n (thyPickChange)=\"onPickTime($event)\"\n (thyClosePanel)=\"closeOverlay()\"></thy-time-picker-panel>\n </div>\n</ng-template>\n" }]
317
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { cdkConnectedOverlay: [{
317
+ }], propDecorators: { cdkConnectedOverlay: [{
318
318
  type: ViewChild,
319
319
  args: [CdkConnectedOverlay, { static: true }]
320
320
  }], origin: [{
@@ -360,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
360
360
  }], thyOpenChange: [{
361
361
  type: Output
362
362
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUkxRTs7O0dBR0c7QUFxQkgsTUFBTSxPQUFPLGFBQWE7SUEyQnRCOzs7O09BSUc7SUFDSCxJQUFh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QUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNdkMsT0FBTztzQkFBZixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPTyxTQUFTO3NCQUFyQixLQUFLO2dCQVdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT3VDLFdBQVc7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBT00sV0FBVztzQkFBM0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFhRSxXQUFXO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1FLGdCQUFnQjtzQkFBNUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNRSxhQUFhO3NCQUF6RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1qQyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgZ2V0RmxleGlibGVQb3NpdGlvbnMsIFRoeVBsYWNlbWVudCB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaW55RGF0ZSwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFRoeVRpbWVQYW5lbCB9IGZyb20gJy4vdGltZS1waWNrZXItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUaHlJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvaW5wdXQnO1xuaW1wb3J0IHsgc2NhbGVNb3Rpb24sIHNjYWxlWE1vdGlvbiwgc2NhbGVZTW90aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcblxuZXhwb3J0IHR5cGUgVGltZVBpY2tlclNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ2RlZmF1bHQnO1xuXG4vKipcbiAqIOaXtumXtOmAieaLqee7hOS7tlxuICogQG5hbWUgdGh5LXRpbWUtcGlja2VyXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRpbWUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VGltZVBpY2tlcilcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS10aW1lLXBpY2tlcicsXG4gICAgICAgICdbY2xhc3MudGh5LXRpbWUtcGlja2VyLWRpc2FibGVkXSc6IGBkaXNhYmxlZGAsXG4gICAgICAgICdbY2xhc3MudGh5LXRpbWUtcGlja2VyLXJlYWRvbmx5XSc6IGB0aHlSZWFkb25seWBcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0Nka092ZXJsYXlPcmlnaW4sIFRoeUlucHV0RGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVGh5SWNvbiwgTmdDbGFzcywgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgVGh5VGltZVBhbmVsXSxcbiAgICBhbmltYXRpb25zOiBbc2NhbGVYTW90aW9uLCBzY2FsZVlNb3Rpb24sIHNjYWxlTW90aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUaW1lUGlja2VyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQFZpZXdDaGlsZChDZGtDb25uZWN0ZWRPdmVybGF5LCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtDb25uZWN0ZWRPdmVybGF5OiBDZGtDb25uZWN0ZWRPdmVybGF5O1xuXG4gICAgQFZpZXdDaGlsZCgnb3JpZ2luJywgeyBzdGF0aWM6IHRydWUgfSkgb3JpZ2luOiBDZGtPdmVybGF5T3JpZ2luO1xuXG4gICAgQFZpZXdDaGlsZCgncGlja2VySW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ292ZXJsYXlDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgb3ZlcmxheUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYblpKflsI9cbiAgICAgKiBAdHlwZSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ2RlZmF1bHQnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2l6ZTogVGltZVBpY2tlclNpemUgPSAnZGVmYXVsdCc7XG5cbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYbmj5DnpLrmloflrZdcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZWhvbGRlcjogc3RyaW5nID0gJ+mAieaLqeaXtumXtCc7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rkvY3nva5cbiAgICAgKiBAdHlwZSAndG9wJyB8ICd0b3BMZWZ0J3wgJ3RvcFJpZ2h0JyB8ICdib3R0b20nIHwgJ2JvdHRvbUxlZnQnIHwgJ2JvdHRvbVJpZ2h0JyB8ICdsZWZ0JyB8ICdsZWZ0VG9wJyB8ICdsZWZ0Qm90dG9tJyB8ICdyaWdodCcgfCAncmlnaHRUb3AnIHwgJ3JpZ2h0Qm90dG9tJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlbWVudDogVGh5UGxhY2VtZW50ID0gJ2JvdHRvbUxlZnQnO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S655qE5pel5pyf5qC85byP77yM5pSv5oyBICdISDptbTpzcycgfCAnSEg6bW0nIHwgJ21tOnNzJ1xuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqIEBkZWZhdWx0IEhIOm1tOnNzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeUZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gdmFsdWUgfHwgJ0hIOm1tOnNzJztcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgaXNWYWxpZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93VGV4dCA9IG5ldyBUaW55RGF0ZSh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5bCP5pe26Ze06ZqU5q2l6ZW/XG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SG91clN0ZXA6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDliIbpkp/pl7TpmpTmraXplb9cbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlNaW51dGVTdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgLyoqXG4gICAgICog56eS6Ze06ZqU5q2l6ZW/XG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2Vjb25kU3RlcDogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOW8ueWHuuWxgue7hOS7tiBjbGFzc1xuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBvcHVwQ2xhc3M6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW8ueWHuuWxgumBrue9qVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUJhY2tkcm9wOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog56aB55SoXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgc2V0IHRoeURpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgdGh5RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPquivu1xuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S66YCJ5oup5q2k5Yi7XG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTZWxlY3ROb3cgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5Y+v5riF56m65YC8XG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUFsbG93Q2xlYXIgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5omT5byAL+WFs+mXreW8ueeql+S6i+S7tlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxib29sZWFuPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJlZml4Q2xzID0gJ3RoeS10aW1lLXBpY2tlcic7XG5cbiAgICBvdmVybGF5UG9zaXRpb25zID0gZ2V0RmxleGlibGVQb3NpdGlvbnModGhpcy50aHlQbGFjZW1lbnQsIDQpO1xuXG4gICAgZm9ybWF0OiBzdHJpbmcgPSAnSEg6bW06c3MnO1xuXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBzaG93VGV4dDogc3RyaW5nID0gJyc7XG5cbiAgICBvcGVuU3RhdGU6IGJvb2xlYW47XG5cbiAgICB2YWx1ZTogRGF0ZSA9IG5ldyBUaW55RGF0ZSgpLnNldEhtcygwLCAwLCAwKS5uYXRpdmVEYXRlO1xuXG4gICAgb3JpZ2luVmFsdWU6IERhdGU7XG5cbiAgICBrZWVwRm9jdXM6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIGlzRGlzYWJsZWRGaXJzdENoYW5nZSA9IHRydWU7XG5cbiAgICBvblZhbHVlQ2hhbmdlRm46ICh2YWw6IG51bWJlciB8IERhdGUpID0+IHZvaWQgPSAoKSA9PiB2b2lkIDA7XG5cbiAgICBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UG9zaXRpb25zID0gZ2V0RmxleGlibGVQb3NpdGlvbnModGhpcy50aHlQbGFjZW1lbnQsIDQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRQaWNrZXJDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRVc2VyT3BlcmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5PdmVybGF5KCk7XG4gICAgfVxuXG4gICAgb25JbnB1dFBpY2tlckJsdXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmtlZXBGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUGlja1RpbWUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5WYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgfVxuXG4gICAgb25QaWNrVGltZUNvbmZpcm0odmFsdWU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5WYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jb25maXJtVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQ2xlYXJUaW1lKGU6IEV2ZW50KSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMub3JpZ2luVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplSW5wdXQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZvcm1hdElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25LZXl1cEVudGVyKCkge1xuICAgICAgICB0aGlzLmNvbmZpcm1WYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBvbktleXVwRXNjKCkge1xuICAgICAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIG9uUG9zaXRpb25DaGFuZ2UoZTogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uQ2xpY2tCYWNrZHJvcCgpIHtcbiAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlEZXRhY2goKSB7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgb25PdXRzaWRlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3BlblN0YXRlICYmXG4gICAgICAgICAgICAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgIXRoaXMub3ZlcmxheUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBdHRhY2goKSB7XG4gICAgICAgIGlmICh0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkgJiYgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Lm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRVc2VyT3BlcmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmtlZXBGb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMub3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aHlPcGVuQ2hhbmdlLmVtaXQodGhpcy5vcGVuU3RhdGUpO1xuICAgIH1cblxuICAgIGNsb3NlT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMub3BlblN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmtlZXBGb2N1cyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYmx1cigpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RleHQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUN1c3RvbWl6ZUlucHV0KHRoaXMuc2hvd1RleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5vcmlnaW5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VGV4dCA9IG5ldyBUaW55RGF0ZSh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRoeUFsbG93Q2xlYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLm9yaWdpblZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeU9wZW5DaGFuZ2UuZW1pdCh0aGlzLm9wZW5TdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmx1cigpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5WYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUobmV3IFRpbnlEYXRlKHZhbHVlKS5uYXRpdmVEYXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgVGlueURhdGUoKS5zZXRIbXMoMCwgMCwgMCkubmF0aXZlRGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICh0aGlzLmlzRGlzYWJsZWRGaXJzdENoYW5nZSAmJiB0aGlzLnRoeURpc2FibGVkKSB8fCBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWRGaXJzdENoYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IERhdGUsIGZvcm1hdFRleHQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChmb3JtYXRUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGV4dCA9IG5ldyBUaW55RGF0ZSh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNob3dUZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtVmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdFZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy5vblZhbHVlQ2hhbmdlRm4pIHtcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZUZuKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZEZuKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdElucHV0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMub3BlblN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5PdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRlQ3VzdG9taXplSW5wdXQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICBjb25zdCBob3VyID0gZm9ybWF0dGVyWzBdIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlID0gZm9ybWF0dGVyWzFdIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kID0gZm9ybWF0dGVyWzJdIHx8IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShuZXcgVGlueURhdGUoKS5zZXRIbXMoK2hvdXIsICttaW51dGUsICtzZWNvbmQpLm5hdGl2ZURhdGUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpblZhbHVlID0gbmV3IERhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeUFsbG93Q2xlYXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpblZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh0aGlzLm9yaWdpblZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dUZXh0ID0gYGA7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ3VzdG9taXplSW5wdXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgdmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IHRoaXMuZm9ybWF0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdFJ1bGUgPSB0aGlzLmZvcm1hdC5zcGxpdCgnOicpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSB2YWx1ZS5zcGxpdCgnOicpO1xuICAgICAgICB2YWxpZCA9ICFmb3JtYXRSdWxlXG4gICAgICAgICAgICAubWFwKChtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhZm9ybWF0dGVyW2ldO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5pbmNsdWRlcyhmYWxzZSk7XG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2FibGVkVXNlck9wZXJhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy50aHlSZWFkb25seTtcbiAgICB9XG59XG4iLCI8c3BhbiBjZGtPdmVybGF5T3JpZ2luICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCIgKGNsaWNrKT1cIm9uSW5wdXRQaWNrZXJDbGljaygpXCIgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0td3JhcHBlclwiPlxuICA8bmctY29udGFpbmVyPlxuICAgIDxpbnB1dFxuICAgICAgI3BpY2tlcklucHV0XG4gICAgICB0aHlJbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wge3sgcHJlZml4Q2xzIH19LWlucHV0XCJcbiAgICAgIFtjbGFzcy50aHktaW5wdXQtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLnRoeS1pbnB1dC1yZWFkb25seV09XCJ0aHlSZWFkb25seVwiXG4gICAgICBbY2xhc3MudGh5LXRpbWUtcGlja2VyLXBhbmVsLW9wZW5lZF09XCJvcGVuU3RhdGVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzaG93VGV4dFwiXG4gICAgICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcmVhZG9ubHldPVwidGh5UmVhZG9ubHlcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInRoeVBsYWNlaG9sZGVyXCJcbiAgICAgIChibHVyKT1cIm9uSW5wdXRQaWNrZXJCbHVyKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlcigpXCJcbiAgICAgIChrZXl1cC5lc2NhcGUpPVwib25LZXl1cEVzYygpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ3VzdG9taXplSW5wdXQoJGV2ZW50KVwiIC8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJpZ2h0SWNvblwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNyaWdodEljb24+XG4gIEBpZiAoIWRpc2FibGVkICYmIHRoeUFsbG93Q2xlYXIgJiYgIXRoeVJlYWRvbmx5ICYmIHNob3dUZXh0KSB7XG4gICAgPHNwYW4gY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tY2xlYXJcIj5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIiAoY2xpY2spPVwib25DbGVhclRpbWUoJGV2ZW50KVwiIG5nQ2xhc3M9XCJyZW1vdmUtbGluayByZW1vdmUtbGluay17eyB0aHlTaXplIH19XCI+PC90aHktaWNvbj5cbiAgICA8L3NwYW4+XG4gIH1cbiAgPHNwYW4gY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0taWNvblwiPlxuICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiJ2Nsb2NrLWNpcmNsZS1tb21lbnQnXCIgbmdDbGFzcz1cInJlbW92ZS1saW5rLXt7IHRoeVNpemUgfX1cIj48L3RoeS1pY29uPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIE92ZXJsYXkgLS0+XG48bmctdGVtcGxhdGVcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3BlblN0YXRlXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0aHlCYWNrZHJvcFwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIm92ZXJsYXlQb3NpdGlvbnNcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVRyYW5zZm9ybU9yaWdpbk9uPVwiLnRoeS10aW1lLXBpY2tlci1jb250YWluZXJcIlxuICAocG9zaXRpb25DaGFuZ2UpPVwib25Qb3NpdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwib25DbGlja0JhY2tkcm9wKClcIlxuICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJvbk91dHNpZGVDbGljaygkZXZlbnQpXCJcbiAgKGRldGFjaCk9XCJvbk92ZXJsYXlEZXRhY2goKVwiXG4gIChhdHRhY2gpPVwib25PdmVybGF5QXR0YWNoKClcIj5cbiAgPGRpdlxuICAgICNvdmVybGF5Q29udGFpbmVyXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIlxuICAgIFtAc2NhbGVYTW90aW9uXT1cInRoeVBsYWNlbWVudCA9PT0gJ2xlZnQnIHx8IHRoeVBsYWNlbWVudCA9PT0gJ3JpZ2h0JyA/ICdlbnRlcicgOiAndm9pZCdcIlxuICAgIFtAc2NhbGVZTW90aW9uXT1cInRoeVBsYWNlbWVudCA9PT0gJ3RvcCcgfHwgdGh5UGxhY2VtZW50ID09PSAnYm90dG9tJyA/ICdlbnRlcicgOiAndm9pZCdcIlxuICAgIFtAc2NhbGVNb3Rpb25dPVwiXG4gICAgICB0aHlQbGFjZW1lbnQgIT09ICdsZWZ0JyAmJiB0aHlQbGFjZW1lbnQgIT09ICdyaWdodCcgJiYgdGh5UGxhY2VtZW50ICE9PSAndG9wJyAmJiB0aHlQbGFjZW1lbnQgIT09ICdib3R0b20nID8gJ2VudGVyJyA6ICd2b2lkJ1xuICAgIFwiXG4gICAgY2xhc3M9XCJ0aHktdGltZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgPCEtLSBDb21wYXRpYmxlIGZvciBvdmVybGF5IHRoYXQgbm90IHN1cHBvcnQgb2Zmc2V0IGR5bmFtaWNhbGx5IGFuZCBpbW1lZGlhdGVseSAtLT5cbiAgICA8dGh5LXRpbWUtcGlja2VyLXBhbmVsXG4gICAgICBbbmdDbGFzc109XCJ0aHlQb3B1cENsYXNzXCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgW3RoeUZvcm1hdF09XCJmb3JtYXRcIlxuICAgICAgW3RoeUhvdXJTdGVwXT1cInRoeUhvdXJTdGVwXCJcbiAgICAgIFt0aHlNaW51dGVTdGVwXT1cInRoeU1pbnV0ZVN0ZXBcIlxuICAgICAgW3RoeVNlY29uZFN0ZXBdPVwidGh5U2Vjb25kU3RlcFwiXG4gICAgICBbdGh5U2hvd1NlbGVjdE5vd109XCJ0aHlTaG93U2VsZWN0Tm93XCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGlja1RpbWVDb25maXJtKCRldmVudClcIlxuICAgICAgKHRoeVBpY2tDaGFuZ2UpPVwib25QaWNrVGltZSgkZXZlbnQpXCJcbiAgICAodGh5Q2xvc2VQYW5lbCk9XCJjbG9zZU92ZXJsYXkoKVwiPjwvdGh5LXRpbWUtcGlja2VyLXBhbmVsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFJMUU7OztHQUdHO0FBcUJILE1BQU0sT0FBTyxhQUFhO0lBcEIxQjtRQXFCWSxR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QkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU12QyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBV0csV0FBVztzQkFBbkIsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFPdUMsV0FBVztzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFPTSxXQUFXO3NCQUEzRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQWFFLFdBQVc7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBTUUsZ0JBQWdCO3NCQUE1RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1FLGFBQWE7c0JBQXpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBTWpDLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgZ2V0RmxleGlibGVQb3NpdGlvbnMsIFRoeVBsYWNlbWVudCB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaW55RGF0ZSwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFRoeVRpbWVQYW5lbCB9IGZyb20gJy4vdGltZS1waWNrZXItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUaHlJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvaW5wdXQnO1xuaW1wb3J0IHsgc2NhbGVNb3Rpb24sIHNjYWxlWE1vdGlvbiwgc2NhbGVZTW90aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcblxuZXhwb3J0IHR5cGUgVGltZVBpY2tlclNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ2RlZmF1bHQnO1xuXG4vKipcbiAqIOaXtumXtOmAieaLqee7hOS7tlxuICogQG5hbWUgdGh5LXRpbWUtcGlja2VyXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRpbWUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VGltZVBpY2tlcilcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS10aW1lLXBpY2tlcicsXG4gICAgICAgICdbY2xhc3MudGh5LXRpbWUtcGlja2VyLWRpc2FibGVkXSc6IGBkaXNhYmxlZGAsXG4gICAgICAgICdbY2xhc3MudGh5LXRpbWUtcGlja2VyLXJlYWRvbmx5XSc6IGB0aHlSZWFkb25seWBcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0Nka092ZXJsYXlPcmlnaW4sIFRoeUlucHV0RGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVGh5SWNvbiwgTmdDbGFzcywgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgVGh5VGltZVBhbmVsXSxcbiAgICBhbmltYXRpb25zOiBbc2NhbGVYTW90aW9uLCBzY2FsZVlNb3Rpb24sIHNjYWxlTW90aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUaW1lUGlja2VyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSwgeyBzdGF0aWM6IHRydWUgfSkgY2RrQ29ubmVjdGVkT3ZlcmxheTogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcblxuICAgIEBWaWV3Q2hpbGQoJ29yaWdpbicsIHsgc3RhdGljOiB0cnVlIH0pIG9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbjtcblxuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcklucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdvdmVybGF5Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIG92ZXJsYXlDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICog6L6T5YWl5qGG5aSn5bCPXG4gICAgICogQHR5cGUgJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFRpbWVQaWNrZXJTaXplID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqXG4gICAgICog6L6T5YWl5qGG5o+Q56S65paH5a2XXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICfpgInmi6nml7bpl7QnO1xuXG4gICAgLyoqXG4gICAgICog5by55Ye65L2N572uXG4gICAgICogQHR5cGUgJ3RvcCcgfCAndG9wTGVmdCd8ICd0b3BSaWdodCcgfCAnYm90dG9tJyB8ICdib3R0b21MZWZ0JyB8ICdib3R0b21SaWdodCcgfCAnbGVmdCcgfCAnbGVmdFRvcCcgfCAnbGVmdEJvdHRvbScgfCAncmlnaHQnIHwgJ3JpZ2h0VG9wJyB8ICdyaWdodEJvdHRvbSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZW1lbnQ6IFRoeVBsYWNlbWVudCA9ICdib3R0b21MZWZ0JztcblxuICAgIC8qKlxuICAgICAqIOWxleekuueahOaXpeacn+agvOW8j++8jOaUr+aMgSAnSEg6bW06c3MnIHwgJ0hIOm1tJyB8ICdtbTpzcydcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKiBAZGVmYXVsdCBISDptbTpzc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlGb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZvcm1hdCA9IHZhbHVlIHx8ICdISDptbTpzcyc7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIGlzVmFsaWQodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1RleHQgPSBuZXcgVGlueURhdGUodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWwj+aXtumXtOmalOatpemVv1xuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUhvdXJTdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgLyoqXG4gICAgICog5YiG6ZKf6Ze06ZqU5q2l6ZW/XG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5TWludXRlU3RlcDogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOenkumXtOmalOatpemVv1xuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNlY29uZFN0ZXA6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rlsYLnu4Tku7YgY2xhc3NcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQb3B1cENsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrlvLnlh7rlsYLpga7nvalcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlCYWNrZHJvcDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOemgeeUqFxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHNldCB0aHlEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHRoeURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlj6ror7tcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlSZWFkb25seTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWxleekuumAieaLqeatpOWIu1xuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlTaG93U2VsZWN0Tm93ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOWPr+a4heepuuWAvFxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBbGxvd0NsZWFyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaJk+W8gC/lhbPpl63lvLnnqpfkuovku7ZcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8Ym9vbGVhbj5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByZWZpeENscyA9ICd0aHktdGltZS1waWNrZXInO1xuXG4gICAgb3ZlcmxheVBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKHRoaXMudGh5UGxhY2VtZW50LCA0KTtcblxuICAgIGZvcm1hdDogc3RyaW5nID0gJ0hIOm1tOnNzJztcblxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgc2hvd1RleHQ6IHN0cmluZyA9ICcnO1xuXG4gICAgb3BlblN0YXRlOiBib29sZWFuO1xuXG4gICAgdmFsdWU6IERhdGUgPSBuZXcgVGlueURhdGUoKS5zZXRIbXMoMCwgMCwgMCkubmF0aXZlRGF0ZTtcblxuICAgIG9yaWdpblZhbHVlOiBEYXRlO1xuXG4gICAga2VlcEZvY3VzOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkRmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgb25WYWx1ZUNoYW5nZUZuOiAodmFsOiBudW1iZXIgfCBEYXRlKSA9PiB2b2lkID0gKCkgPT4gdm9pZCAwO1xuXG4gICAgb25Ub3VjaGVkRm46ICgpID0+IHZvaWQgPSAoKSA9PiB2b2lkIDA7XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKHRoaXMudGh5UGxhY2VtZW50LCA0KTtcbiAgICB9XG5cbiAgICBvbklucHV0UGlja2VyQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkVXNlck9wZXJhdGlvbigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIG9uSW5wdXRQaWNrZXJCbHVyKCkge1xuICAgICAgICBpZiAodGhpcy5rZWVwRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW5TdGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBpY2tUaW1lKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMub3JpZ2luVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIG9uUGlja1RpbWVDb25maXJtKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMub3JpZ2luVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuY29uZmlybVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkNsZWFyVGltZShlOiBFdmVudCkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLm9yaWdpblZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUlucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5mb3JtYXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uS2V5dXBFbnRlcigpIHtcbiAgICAgICAgdGhpcy5jb25maXJtVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgb25LZXl1cEVzYygpIHtcbiAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBvblBvc2l0aW9uQ2hhbmdlKGU6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQmFja2Ryb3AoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5RGV0YWNoKCkge1xuICAgICAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIG9uT3V0c2lkZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9wZW5TdGF0ZSAmJlxuICAgICAgICAgICAgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICF0aGlzLm92ZXJsYXlDb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5QXR0YWNoKCkge1xuICAgICAgICBpZiAodGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5ICYmIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3Blbk92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkVXNlck9wZXJhdGlvbigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5rZWVwRm9jdXMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgIHRoaXMudGh5T3BlbkNoYW5nZS5lbWl0KHRoaXMub3BlblN0YXRlKTtcbiAgICB9XG5cbiAgICBjbG9zZU92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5TdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5rZWVwRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dUZXh0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDdXN0b21pemVJbnB1dCh0aGlzLnNob3dUZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMub3JpZ2luVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RleHQgPSBuZXcgVGlueURhdGUodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy50aHlBbGxvd0NsZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5vcmlnaW5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50aHlPcGVuQ2hhbmdlLmVtaXQodGhpcy5vcGVuU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsdXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKG5ldyBUaW55RGF0ZSh2YWx1ZSkubmF0aXZlRGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IFRpbnlEYXRlKCkuc2V0SG1zKDAsIDAsIDApLm5hdGl2ZURhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSAodGhpcy5pc0Rpc2FibGVkRmlyc3RDaGFuZ2UgJiYgdGhpcy50aHlEaXNhYmxlZCkgfHwgaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkRmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHZhbHVlOiBEYXRlLCBmb3JtYXRUZXh0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0VGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RleHQgPSBuZXcgVGlueURhdGUodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zaG93VGV4dCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMub25WYWx1ZUNoYW5nZUZuKSB7XG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vblRvdWNoZWRGbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wZW5TdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuT3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUN1c3RvbWl6ZUlucHV0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaG91ciA9IGZvcm1hdHRlclswXSB8fCAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZSA9IGZvcm1hdHRlclsxXSB8fCAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZCA9IGZvcm1hdHRlclsyXSB8fCAwO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUobmV3IFRpbnlEYXRlKCkuc2V0SG1zKCtob3VyLCArbWludXRlLCArc2Vjb25kKS5uYXRpdmVEYXRlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5WYWx1ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlBbGxvd0NsZWFyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5WYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUodGhpcy5vcmlnaW5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGV4dCA9IGBgO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUN1c3RvbWl6ZUlucHV0KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiB0aGlzLmZvcm1hdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXRSdWxlID0gdGhpcy5mb3JtYXQuc3BsaXQoJzonKTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgdmFsaWQgPSAhZm9ybWF0UnVsZVxuICAgICAgICAgICAgLm1hcCgobSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWZvcm1hdHRlcltpXTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuaW5jbHVkZXMoZmFsc2UpO1xuICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlZFVzZXJPcGVyYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IHRoaXMudGh5UmVhZG9ubHk7XG4gICAgfVxufVxuIiwiPHNwYW4gY2RrT3ZlcmxheU9yaWdpbiAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiIChjbGljayk9XCJvbklucHV0UGlja2VyQ2xpY2soKVwiIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8aW5wdXRcbiAgICAgICNwaWNrZXJJbnB1dFxuICAgICAgdGh5SW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHt7IHByZWZpeENscyB9fS1pbnB1dFwiXG4gICAgICBbY2xhc3MudGh5LWlucHV0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtjbGFzcy50aHktaW5wdXQtcmVhZG9ubHldPVwidGh5UmVhZG9ubHlcIlxuICAgICAgW2NsYXNzLnRoeS10aW1lLXBpY2tlci1wYW5lbC1vcGVuZWRdPVwib3BlblN0YXRlXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2hvd1RleHRcIlxuICAgICAgW3RoeVNpemVdPVwidGh5U2l6ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3JlYWRvbmx5XT1cInRoeVJlYWRvbmx5XCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aHlQbGFjZWhvbGRlclwiXG4gICAgICAoYmx1cik9XCJvbklucHV0UGlja2VyQmx1cigpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIoKVwiXG4gICAgICAoa2V5dXAuZXNjYXBlKT1cIm9uS2V5dXBFc2MoKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkN1c3RvbWl6ZUlucHV0KCRldmVudClcIiAvPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyaWdodEljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L3NwYW4+XG5cbjxuZy10ZW1wbGF0ZSAjcmlnaHRJY29uPlxuICBAaWYgKCFkaXNhYmxlZCAmJiB0aHlBbGxvd0NsZWFyICYmICF0aHlSZWFkb25seSAmJiBzaG93VGV4dCkge1xuICAgIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWNsZWFyXCI+XG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJjbG9zZS1jaXJjbGUtYm9sZC1maWxsXCIgKGNsaWNrKT1cIm9uQ2xlYXJUaW1lKCRldmVudClcIiBuZ0NsYXNzPVwicmVtb3ZlLWxpbmsgcmVtb3ZlLWxpbmste3sgdGh5U2l6ZSB9fVwiPjwvdGh5LWljb24+XG4gICAgPC9zcGFuPlxuICB9XG4gIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWljb25cIj5cbiAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cIidjbG9jay1jaXJjbGUtbW9tZW50J1wiIG5nQ2xhc3M9XCJyZW1vdmUtbGluay17eyB0aHlTaXplIH19XCI+PC90aHktaWNvbj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBPdmVybGF5IC0tPlxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIm9wZW5TdGF0ZVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidGh5QmFja2Ryb3BcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJvdmVybGF5UG9zaXRpb25zXCJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5Pbj1cIi50aHktdGltZS1waWNrZXItY29udGFpbmVyXCJcbiAgKHBvc2l0aW9uQ2hhbmdlKT1cIm9uUG9zaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gIChiYWNrZHJvcENsaWNrKT1cIm9uQ2xpY2tCYWNrZHJvcCgpXCJcbiAgKG92ZXJsYXlPdXRzaWRlQ2xpY2spPVwib25PdXRzaWRlQ2xpY2soJGV2ZW50KVwiXG4gIChkZXRhY2gpPVwib25PdmVybGF5RGV0YWNoKClcIlxuICAoYXR0YWNoKT1cIm9uT3ZlcmxheUF0dGFjaCgpXCI+XG4gIDxkaXZcbiAgICAjb3ZlcmxheUNvbnRhaW5lclxuICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCJcbiAgICBbQHNjYWxlWE1vdGlvbl09XCJ0aHlQbGFjZW1lbnQgPT09ICdsZWZ0JyB8fCB0aHlQbGFjZW1lbnQgPT09ICdyaWdodCcgPyAnZW50ZXInIDogJ3ZvaWQnXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCJ0aHlQbGFjZW1lbnQgPT09ICd0b3AnIHx8IHRoeVBsYWNlbWVudCA9PT0gJ2JvdHRvbScgPyAnZW50ZXInIDogJ3ZvaWQnXCJcbiAgICBbQHNjYWxlTW90aW9uXT1cIlxuICAgICAgdGh5UGxhY2VtZW50ICE9PSAnbGVmdCcgJiYgdGh5UGxhY2VtZW50ICE9PSAncmlnaHQnICYmIHRoeVBsYWNlbWVudCAhPT0gJ3RvcCcgJiYgdGh5UGxhY2VtZW50ICE9PSAnYm90dG9tJyA/ICdlbnRlcicgOiAndm9pZCdcbiAgICBcIlxuICAgIGNsYXNzPVwidGh5LXRpbWUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgIDwhLS0gQ29tcGF0aWJsZSBmb3Igb3ZlcmxheSB0aGF0IG5vdCBzdXBwb3J0IG9mZnNldCBkeW5hbWljYWxseSBhbmQgaW1tZWRpYXRlbHkgLS0+XG4gICAgPHRoeS10aW1lLXBpY2tlci1wYW5lbFxuICAgICAgW25nQ2xhc3NdPVwidGh5UG9wdXBDbGFzc1wiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIFt0aHlGb3JtYXRdPVwiZm9ybWF0XCJcbiAgICAgIFt0aHlIb3VyU3RlcF09XCJ0aHlIb3VyU3RlcFwiXG4gICAgICBbdGh5TWludXRlU3RlcF09XCJ0aHlNaW51dGVTdGVwXCJcbiAgICAgIFt0aHlTZWNvbmRTdGVwXT1cInRoeVNlY29uZFN0ZXBcIlxuICAgICAgW3RoeVNob3dTZWxlY3ROb3ddPVwidGh5U2hvd1NlbGVjdE5vd1wiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvblBpY2tUaW1lQ29uZmlybSgkZXZlbnQpXCJcbiAgICAgICh0aHlQaWNrQ2hhbmdlKT1cIm9uUGlja1RpbWUoJGV2ZW50KVwiXG4gICAgKHRoeUNsb3NlUGFuZWwpPVwiY2xvc2VPdmVybGF5KClcIj48L3RoeS10aW1lLXBpY2tlci1wYW5lbD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,14 +1,21 @@
1
- import { Component, Input, HostBinding, ContentChild, TemplateRef, ViewChild, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, Input, HostBinding, ContentChild, TemplateRef, ViewChild, ChangeDetectorRef, ChangeDetectionStrategy, inject } from '@angular/core';
2
2
  import { ThyTimelineService } from './timeline.service';
3
3
  import { NgTemplateOutlet } from '@angular/common';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "./timeline.service";
6
5
  /**
7
6
  * 时间轴节点组件
8
7
  * @name thy-timeline-item
9
8
  * @order 20
10
9
  */
11
10
  export class ThyTimelineItem {
11
+ constructor() {
12
+ this.cdr = inject(ChangeDetectorRef);
13
+ this.timelineService = inject(ThyTimelineService);
14
+ this.color = 'primary';
15
+ this.isLast = false;
16
+ this.isFirst = false;
17
+ this.reverse = false;
18
+ }
12
19
  /**
13
20
  * 指定圆圈颜色
14
21
  * @type primary | success | warning | danger | info
@@ -19,14 +26,6 @@ export class ThyTimelineItem {
19
26
  this.color = value;
20
27
  }
21
28
  }
22
- constructor(cdr, timelineService) {
23
- this.cdr = cdr;
24
- this.timelineService = timelineService;
25
- this.color = 'primary';
26
- this.isLast = false;
27
- this.isFirst = false;
28
- this.reverse = false;
29
- }
30
29
  detectChanges() {
31
30
  this.cdr.detectChanges();
32
31
  }
@@ -34,13 +33,13 @@ export class ThyTimelineItem {
34
33
  this.timelineService.markForCheck();
35
34
  }
36
35
  ngOnInit() { }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimelineItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ThyTimelineService }], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimelineItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
37
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyTimelineItem, isStandalone: true, selector: "thy-timeline-item", inputs: { thyColor: "thyColor", thyPosition: "thyPosition" }, host: { properties: { "class": "this.className" } }, queries: [{ propertyName: "dot", first: true, predicate: ["dot"], descendants: true }, { propertyName: "description", first: true, predicate: ["description"], descendants: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["timelineItem"], descendants: true }], exportAs: ["ThyTimelineItem"], usesOnChanges: true, ngImport: i0, template: "<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition || position) === 'left'\"\n >\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"color === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"color === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"color === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"color === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"color === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot\"\n >\n @if (dot) {\n <ng-template [ngTemplateOutlet]=\"dot\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description) {\n <ng-template [ngTemplateOutlet]=\"description\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
38
  }
40
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTimelineItem, decorators: [{
41
40
  type: Component,
42
41
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'thy-timeline-item', exportAs: 'ThyTimelineItem', standalone: true, imports: [NgTemplateOutlet], template: "<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition || position) === 'left'\"\n >\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"color === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"color === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"color === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"color === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"color === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot\"\n >\n @if (dot) {\n <ng-template [ngTemplateOutlet]=\"dot\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description) {\n <ng-template [ngTemplateOutlet]=\"description\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n" }]
43
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ThyTimelineService }], propDecorators: { template: [{
42
+ }], propDecorators: { template: [{
44
43
  type: ViewChild,
45
44
  args: ['timelineItem', { static: false }]
46
45
  }], className: [{
@@ -57,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
57
56
  type: ContentChild,
58
57
  args: ['description', { static: false }]
59
58
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGltZWxpbmUvdGltZWxpbmUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdGltZWxpbmUvdGltZWxpbmUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBR1gsWUFBWSxFQUNaLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUUxQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBSW5EOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sZUFBZTtJQWV4Qjs7OztPQUlHO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FBZTtRQUN4QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFvQkQsWUFDWSxHQUFzQixFQUN0QixlQUFtQztRQURuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUExQ3hDLFVBQUssR0FBYSxTQUFTLENBQUM7UUFFNUIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFJaEIsWUFBTyxHQUFZLEtBQUssQ0FBQztJQW1DN0IsQ0FBQztJQUVKLGFBQWE7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUSxLQUFJLENBQUM7OEdBMURKLGVBQWU7a0dBQWYsZUFBZSxtaEJDakM1QixteUNBaUNBLDRDREZjLGdCQUFnQjs7MkZBRWpCLGVBQWU7a0JBUjNCLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxtQkFBbUIsWUFFbkIsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUM7dUhBR21CLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFdEIsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQWtCaEIsUUFBUTtzQkFEWCxLQUFLO2dCQVdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTWtDLEdBQUc7c0JBQTFDLFlBQVk7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNVSxXQUFXO3NCQUExRCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICduZ3gtdGV0aHlzL3R5cGVzJztcbmltcG9ydCB7IFRoeVRpbWVNb2RlIH0gZnJvbSAnLi90aW1lbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5VGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi90aW1lbGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgdHlwZSB0aHlDb2xvciA9ICdwcmltYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ2luZm8nO1xuXG4vKipcbiAqIOaXtumXtOi9tOiKgueCuee7hOS7tlxuICogQG5hbWUgdGh5LXRpbWVsaW5lLWl0ZW1cbiAqIEBvcmRlciAyMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ3RoeS10aW1lbGluZS1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZWxpbmUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgZXhwb3J0QXM6ICdUaHlUaW1lbGluZUl0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRpbWVsaW5lSXRlbSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCd0aW1lbGluZUl0ZW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbG9yOiB0aHlDb2xvciA9ICdwcmltYXJ5JztcblxuICAgIHB1YmxpYyBpc0xhc3QgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc0ZpcnN0ID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcG9zaXRpb246IFRoeVRpbWVNb2RlO1xuXG4gICAgcHVibGljIHJldmVyc2U6IEJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaMh+WumuWchuWciOminOiJslxuICAgICAqIEB0eXBlIHByaW1hcnkgfCBzdWNjZXNzIHwgd2FybmluZyB8IGRhbmdlciB8IGluZm9cbiAgICAgKiBAZGVmYXVsdCBwcmltYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q29sb3IodmFsdWU6IHRoeUNvbG9yKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb2xvciA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ6IqC54K55L2N572uXG4gICAgICogQHR5cGUgbGVmdCB8IHJpZ2h0IHwgY2VudGVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UG9zaXRpb246IFRoeVRpbWVNb2RlO1xuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5pe26Ze06L2054K55qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdkb3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgZG90OiBUZW1wbGF0ZVJlZjxTYWZlQW55PjtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5ieWPpuS4gOS+p+eahOaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGVzY3JpcHRpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVzY3JpcHRpb246IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSB0aW1lbGluZVNlcnZpY2U6IFRoeVRpbWVsaW5lU2VydmljZVxuICAgICkge31cblxuICAgIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGltZWxpbmVTZXJ2aWNlLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge31cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGltZWxpbmVJdGVtPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ0aHktdGltZWxpbmUtaXRlbVwiXG4gICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLXJldmVyc2UtbGFzdF09XCJpc0xhc3QgJiYgcmV2ZXJzZVwiXG4gICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLWxhc3RdPVwiaXNMYXN0XCJcbiAgICBbY2xhc3MudGh5LXRpbWVsaW5lLWl0ZW0tcmV2ZXJzZS1maXJzdF09XCJpc0ZpcnN0ICYmIHJldmVyc2VcIlxuICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1yaWdodF09XCIodGh5UG9zaXRpb24gfHwgcG9zaXRpb24pID09PSAncmlnaHQnXCJcbiAgICBbY2xhc3MudGh5LXRpbWVsaW5lLWl0ZW0tbGVmdF09XCIodGh5UG9zaXRpb24gfHwgcG9zaXRpb24pID09PSAnbGVmdCdcIlxuICAgID5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LXRpbWVsaW5lLWl0ZW0tdGFpbFwiPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGh5LXRpbWVsaW5lLWl0ZW0tZG90XCJcbiAgICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1kb3QtcHJpbWFyeV09XCJjb2xvciA9PT0gJ3ByaW1hcnknXCJcbiAgICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1kb3Qtc3VjY2Vzc109XCJjb2xvciA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1kb3Qtd2FybmluZ109XCJjb2xvciA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1kb3QtZGFuZ2VyXT1cImNvbG9yID09PSAnZGFuZ2VyJ1wiXG4gICAgICBbY2xhc3MudGh5LXRpbWVsaW5lLWl0ZW0tZG90LWluZm9dPVwiY29sb3IgPT09ICdpbmZvJ1wiXG4gICAgICBbY2xhc3MudGh5LXRpbWVsaW5lLWl0ZW0tZG90LWN1c3RvbV09XCIhIWRvdFwiXG4gICAgICA+XG4gICAgICBAaWYgKGRvdCkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZG90XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LXRpbWVsaW5lLWl0ZW0tY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktdGltZWxpbmUtaXRlbS1jb250ZW50LW90aGVyLXNpZGVcIj5cbiAgICAgIEBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlc2NyaXB0aW9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGltZWxpbmUvdGltZWxpbmUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdGltZWxpbmUvdGltZWxpbmUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBR1gsWUFBWSxFQUNaLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUV2QixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBSW5EOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sZUFBZTtJQVI1QjtRQVNZLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBTTlDLFVBQUssR0FBYSxTQUFTLENBQUM7UUFFNUIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFJaEIsWUFBTyxHQUFZLEtBQUssQ0FBQztLQXlDbkM7SUF2Q0c7Ozs7T0FJRztJQUNILElBQ0ksUUFBUSxDQUFDLEtBQWU7UUFDeEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBb0JELGFBQWE7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUSxLQUFJLENBQUM7OEdBeERKLGVBQWU7a0dBQWYsZUFBZSxtaEJDbEM1QixteUNBaUNBLDRDRERjLGdCQUFnQjs7MkZBRWpCLGVBQWU7a0JBUjNCLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxtQkFBbUIsWUFFbkIsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUM7OEJBTW1CLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFdEIsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQWtCaEIsUUFBUTtzQkFEWCxLQUFLO2dCQVdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTWtDLEdBQUc7c0JBQTFDLFlBQVk7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNVSxXQUFXO3NCQUExRCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5pbXBvcnQgeyBUaHlUaW1lTW9kZSB9IGZyb20gJy4vdGltZWxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeVRpbWVsaW5lU2VydmljZSB9IGZyb20gJy4vdGltZWxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IHR5cGUgdGh5Q29sb3IgPSAncHJpbWFyeScgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdpbmZvJztcblxuLyoqXG4gKiDml7bpl7TovbToioLngrnnu4Tku7ZcbiAqIEBuYW1lIHRoeS10aW1lbGluZS1pdGVtXG4gKiBAb3JkZXIgMjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICd0aHktdGltZWxpbmUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGV4cG9ydEFzOiAnVGh5VGltZWxpbmVJdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUaW1lbGluZUl0ZW0gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlID0gaW5qZWN0KFRoeVRpbWVsaW5lU2VydmljZSk7XG5cbiAgICBAVmlld0NoaWxkKCd0aW1lbGluZUl0ZW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbG9yOiB0aHlDb2xvciA9ICdwcmltYXJ5JztcblxuICAgIHB1YmxpYyBpc0xhc3QgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc0ZpcnN0ID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcG9zaXRpb246IFRoeVRpbWVNb2RlO1xuXG4gICAgcHVibGljIHJldmVyc2U6IEJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaMh+WumuWchuWciOminOiJslxuICAgICAqIEB0eXBlIHByaW1hcnkgfCBzdWNjZXNzIHwgd2FybmluZyB8IGRhbmdlciB8IGluZm9cbiAgICAgKiBAZGVmYXVsdCBwcmltYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q29sb3IodmFsdWU6IHRoeUNvbG9yKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb2xvciA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ6IqC54K55L2N572uXG4gICAgICogQHR5cGUgbGVmdCB8IHJpZ2h0IHwgY2VudGVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UG9zaXRpb246IFRoeVRpbWVNb2RlO1xuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5pe26Ze06L2054K55qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdkb3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgZG90OiBUZW1wbGF0ZVJlZjxTYWZlQW55PjtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5ieWPpuS4gOS+p+eahOaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGVzY3JpcHRpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVzY3JpcHRpb246IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lbGluZVNlcnZpY2UubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7fVxufVxuIiwiPG5nLXRlbXBsYXRlICN0aW1lbGluZUl0ZW0+XG4gIDxkaXZcbiAgICBjbGFzcz1cInRoeS10aW1lbGluZS1pdGVtXCJcbiAgICBbY2xhc3MudGh5LXRpbWVsaW5lLWl0ZW0tcmV2ZXJzZS1sYXN0XT1cImlzTGFzdCAmJiByZXZlcnNlXCJcbiAgICBbY2xhc3MudGh5LXRpbWVsaW5lLWl0ZW0tbGFzdF09XCJpc0xhc3RcIlxuICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1yZXZlcnNlLWZpcnN0XT1cImlzRmlyc3QgJiYgcmV2ZXJzZVwiXG4gICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLXJpZ2h0XT1cIih0aHlQb3NpdGlvbiB8fCBwb3NpdGlvbikgPT09ICdyaWdodCdcIlxuICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1sZWZ0XT1cIih0aHlQb3NpdGlvbiB8fCBwb3NpdGlvbikgPT09ICdsZWZ0J1wiXG4gICAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktdGltZWxpbmUtaXRlbS10YWlsXCI+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0aHktdGltZWxpbmUtaXRlbS1kb3RcIlxuICAgICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLWRvdC1wcmltYXJ5XT1cImNvbG9yID09PSAncHJpbWFyeSdcIlxuICAgICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLWRvdC1zdWNjZXNzXT1cImNvbG9yID09PSAnc3VjY2VzcydcIlxuICAgICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLWRvdC13YXJuaW5nXT1cImNvbG9yID09PSAnd2FybmluZydcIlxuICAgICAgW2NsYXNzLnRoeS10aW1lbGluZS1pdGVtLWRvdC1kYW5nZXJdPVwiY29sb3IgPT09ICdkYW5nZXInXCJcbiAgICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1kb3QtaW5mb109XCJjb2xvciA9PT0gJ2luZm8nXCJcbiAgICAgIFtjbGFzcy50aHktdGltZWxpbmUtaXRlbS1kb3QtY3VzdG9tXT1cIiEhZG90XCJcbiAgICAgID5cbiAgICAgIEBpZiAoZG90KSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkb3RcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktdGltZWxpbmUtaXRlbS1jb250ZW50XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRoeS10aW1lbGluZS1pdGVtLWNvbnRlbnQtb3RoZXItc2lkZVwiPlxuICAgICAgQGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVzY3JpcHRpb25cIj48L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=