ngx-tethys 17.0.0-next.1 → 17.0.0-next.3

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 (745) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/action/action.component.d.ts +3 -3
  3. package/action/action.module.d.ts +1 -1
  4. package/action/actions.component.d.ts +5 -5
  5. package/affix/affix.component.d.ts +3 -3
  6. package/affix/affix.module.d.ts +1 -1
  7. package/alert/alert.component.d.ts +3 -3
  8. package/alert/alert.module.d.ts +1 -1
  9. package/anchor/anchor-link.component.d.ts +5 -5
  10. package/anchor/anchor.component.d.ts +9 -9
  11. package/anchor/anchor.module.d.ts +1 -1
  12. package/arrow-switcher/arrow-switcher.component.d.ts +3 -3
  13. package/arrow-switcher/module.d.ts +1 -1
  14. package/autocomplete/autocomplete.component.d.ts +9 -9
  15. package/autocomplete/autocomplete.trigger.directive.d.ts +6 -6
  16. package/autocomplete/module.d.ts +1 -1
  17. package/autocomplete/overlay/autocomplete-container.component.d.ts +3 -3
  18. package/autocomplete/overlay/autocomplete-ref.d.ts +4 -4
  19. package/autocomplete/overlay/autocomplete.service.d.ts +5 -5
  20. package/avatar/avatar-list/avatar-list.component.d.ts +6 -6
  21. package/avatar/avatar.component.d.ts +3 -3
  22. package/avatar/avatar.module.d.ts +1 -1
  23. package/back-top/back-top.component.d.ts +3 -3
  24. package/back-top/back-top.module.d.ts +1 -1
  25. package/badge/badge.component.d.ts +3 -3
  26. package/badge/badge.module.d.ts +1 -1
  27. package/breadcrumb/breadcrumb-item.component.d.ts +3 -3
  28. package/breadcrumb/breadcrumb.component.d.ts +3 -3
  29. package/breadcrumb/module.d.ts +1 -1
  30. package/button/button-group.component.d.ts +3 -3
  31. package/button/button-icon.component.d.ts +3 -3
  32. package/button/button.component.d.ts +3 -3
  33. package/button/button.module.d.ts +1 -1
  34. package/calendar/calendar-header.component.d.ts +3 -3
  35. package/calendar/calendar.component.d.ts +3 -3
  36. package/calendar/module.d.ts +1 -1
  37. package/card/card.component.d.ts +3 -3
  38. package/card/card.module.d.ts +1 -1
  39. package/card/content.component.d.ts +3 -3
  40. package/card/header.component.d.ts +3 -3
  41. package/carousel/carousel.component.d.ts +3 -3
  42. package/carousel/engine/carousel-base.d.ts +3 -3
  43. package/carousel/engine/carousel-fade.d.ts +2 -2
  44. package/carousel/engine/carousel-noop.d.ts +2 -2
  45. package/carousel/engine/carousel-slide.d.ts +2 -2
  46. package/carousel/module.d.ts +1 -1
  47. package/cascader/cascader.component.d.ts +3 -3
  48. package/cascader/module.d.ts +1 -1
  49. package/checkbox/checkbox.component.d.ts +3 -3
  50. package/checkbox/module.d.ts +1 -1
  51. package/collapse/collapse-item.component.d.ts +5 -5
  52. package/collapse/collapse.component.d.ts +7 -7
  53. package/collapse/module.d.ts +1 -1
  54. package/color-picker/color-picker-custom-panel.component.d.ts +3 -3
  55. package/color-picker/color-picker-panel.component.d.ts +6 -6
  56. package/color-picker/color-picker.component.d.ts +3 -3
  57. package/color-picker/module.d.ts +1 -1
  58. package/color-picker/parts/alpha/alpha.component.d.ts +3 -3
  59. package/color-picker/parts/hue/hue.component.d.ts +3 -3
  60. package/color-picker/parts/indicator/indicator.component.d.ts +3 -3
  61. package/color-picker/parts/inputs/inputs.component.d.ts +3 -3
  62. package/color-picker/parts/saturation/saturation.component.d.ts +3 -3
  63. package/comment/comment.component.d.ts +3 -3
  64. package/comment/comment.module.d.ts +1 -1
  65. package/date-picker/abstract-picker.component.d.ts +2 -2
  66. package/date-picker/base-picker.component.d.ts +5 -5
  67. package/date-picker/date-picker.component.d.ts +4 -4
  68. package/date-picker/date-picker.module.d.ts +1 -1
  69. package/date-picker/lib/calendar/calendar-footer.component.d.ts +3 -3
  70. package/date-picker/lib/date/date-header.component.d.ts +3 -3
  71. package/date-picker/lib/date/date-table-cell.component.d.ts +3 -3
  72. package/date-picker/lib/date/date-table.component.d.ts +3 -3
  73. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +3 -3
  74. package/date-picker/lib/decade/decade-header.component.d.ts +3 -3
  75. package/date-picker/lib/decade/decade-table.component.d.ts +3 -3
  76. package/date-picker/lib/lib-packer.module.d.ts +1 -1
  77. package/date-picker/lib/month/month-header.component.d.ts +3 -3
  78. package/date-picker/lib/month/month-table.component.d.ts +3 -3
  79. package/date-picker/lib/popups/date-popup.component.d.ts +4 -4
  80. package/date-picker/lib/popups/inner-popup.component.d.ts +3 -3
  81. package/date-picker/lib/quarter/quarter-table.component.d.ts +3 -3
  82. package/date-picker/lib/year/year-header.component.d.ts +3 -3
  83. package/date-picker/lib/year/year-table.component.d.ts +3 -3
  84. package/date-picker/month-picker.component.d.ts +4 -4
  85. package/date-picker/picker.component.d.ts +3 -3
  86. package/date-picker/quarter-picker.component.d.ts +4 -4
  87. package/date-picker/range-picker.component.d.ts +4 -4
  88. package/date-picker/week-picker.component.d.ts +4 -4
  89. package/date-picker/year-picker.component.d.ts +4 -4
  90. package/date-range/date-range.component.d.ts +3 -3
  91. package/date-range/module.d.ts +1 -1
  92. package/date-range/optional-dates/optional-dates.component.d.ts +3 -3
  93. package/dialog/body/dialog-body.component.d.ts +3 -3
  94. package/dialog/confirm/confirm.component.d.ts +4 -4
  95. package/dialog/dialog-container.component.d.ts +3 -3
  96. package/dialog/dialog-ref.d.ts +4 -4
  97. package/dialog/dialog.module.d.ts +1 -1
  98. package/dialog/dialog.service.d.ts +5 -5
  99. package/dialog/footer/dialog-footer.component.d.ts +3 -3
  100. package/dialog/header/dialog-header.component.d.ts +5 -5
  101. package/dialog/index.d.ts +1 -1
  102. package/divider/divider.component.d.ts +3 -3
  103. package/divider/divider.module.d.ts +1 -1
  104. package/dot/dot.component.d.ts +3 -3
  105. package/dot/dot.module.d.ts +1 -1
  106. package/dropdown/dropdown-menu.component.d.ts +6 -6
  107. package/dropdown/dropdown-submenu.component.d.ts +3 -3
  108. package/dropdown/module.d.ts +1 -1
  109. package/empty/empty.component.d.ts +3 -3
  110. package/empty/empty.module.d.ts +1 -1
  111. package/esm2022/action/action.component.mjs +10 -10
  112. package/esm2022/action/action.module.mjs +7 -7
  113. package/esm2022/action/actions.component.mjs +7 -7
  114. package/esm2022/affix/affix.component.mjs +7 -7
  115. package/esm2022/affix/affix.module.mjs +5 -5
  116. package/esm2022/alert/alert.component.mjs +8 -8
  117. package/esm2022/alert/alert.module.mjs +6 -6
  118. package/esm2022/anchor/anchor-link.component.mjs +7 -7
  119. package/esm2022/anchor/anchor.component.mjs +11 -11
  120. package/esm2022/anchor/anchor.module.mjs +7 -7
  121. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +13 -13
  122. package/esm2022/arrow-switcher/module.mjs +6 -6
  123. package/esm2022/autocomplete/autocomplete.component.mjs +13 -13
  124. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +2 -2
  125. package/esm2022/autocomplete/module.mjs +10 -10
  126. package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +5 -5
  127. package/esm2022/autocomplete/overlay/autocomplete-ref.mjs +1 -1
  128. package/esm2022/autocomplete/overlay/autocomplete.service.mjs +4 -4
  129. package/esm2022/avatar/avatar-list/avatar-list.component.mjs +8 -8
  130. package/esm2022/avatar/avatar.component.mjs +11 -11
  131. package/esm2022/avatar/avatar.module.mjs +7 -7
  132. package/esm2022/back-top/back-top.component.mjs +8 -8
  133. package/esm2022/back-top/back-top.module.mjs +6 -6
  134. package/esm2022/badge/badge.component.mjs +10 -10
  135. package/esm2022/badge/badge.module.mjs +5 -5
  136. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
  137. package/esm2022/breadcrumb/breadcrumb.component.mjs +8 -8
  138. package/esm2022/breadcrumb/module.mjs +7 -7
  139. package/esm2022/button/button-group.component.mjs +5 -5
  140. package/esm2022/button/button-icon.component.mjs +9 -9
  141. package/esm2022/button/button.component.mjs +9 -9
  142. package/esm2022/button/button.module.mjs +8 -8
  143. package/esm2022/calendar/calendar-header.component.mjs +8 -8
  144. package/esm2022/calendar/calendar.component.mjs +8 -8
  145. package/esm2022/calendar/module.mjs +11 -11
  146. package/esm2022/card/card.component.mjs +8 -8
  147. package/esm2022/card/card.module.mjs +7 -7
  148. package/esm2022/card/content.component.mjs +5 -5
  149. package/esm2022/card/header.component.mjs +5 -5
  150. package/esm2022/carousel/carousel.component.mjs +13 -13
  151. package/esm2022/carousel/engine/carousel-base.mjs +1 -1
  152. package/esm2022/carousel/engine/carousel-fade.mjs +1 -1
  153. package/esm2022/carousel/engine/carousel-noop.mjs +1 -1
  154. package/esm2022/carousel/engine/carousel-slide.mjs +1 -1
  155. package/esm2022/carousel/module.mjs +5 -5
  156. package/esm2022/cascader/cascader-li.component.mjs +6 -6
  157. package/esm2022/cascader/cascader-search-option.component.mjs +7 -16
  158. package/esm2022/cascader/cascader.component.mjs +22 -22
  159. package/esm2022/cascader/module.mjs +7 -7
  160. package/esm2022/checkbox/checkbox.component.mjs +8 -8
  161. package/esm2022/checkbox/module.mjs +5 -5
  162. package/esm2022/collapse/collapse-item.component.mjs +11 -11
  163. package/esm2022/collapse/collapse.component.mjs +6 -6
  164. package/esm2022/collapse/module.mjs +7 -7
  165. package/esm2022/color-picker/color-picker-custom-panel.component.mjs +11 -11
  166. package/esm2022/color-picker/color-picker-panel.component.mjs +10 -10
  167. package/esm2022/color-picker/color-picker.component.mjs +3 -3
  168. package/esm2022/color-picker/module.mjs +25 -25
  169. package/esm2022/color-picker/parts/alpha/alpha.component.mjs +5 -5
  170. package/esm2022/color-picker/parts/hue/hue.component.mjs +5 -5
  171. package/esm2022/color-picker/parts/indicator/indicator.component.mjs +5 -5
  172. package/esm2022/color-picker/parts/inputs/inputs.component.mjs +7 -7
  173. package/esm2022/color-picker/parts/saturation/saturation.component.mjs +5 -5
  174. package/esm2022/comment/comment.component.mjs +7 -7
  175. package/esm2022/comment/comment.module.mjs +7 -7
  176. package/esm2022/date-picker/abstract-picker.component.mjs +4 -4
  177. package/esm2022/date-picker/abstract-picker.directive.mjs +3 -3
  178. package/esm2022/date-picker/base-picker.component.mjs +8 -8
  179. package/esm2022/date-picker/date-picker.component.mjs +12 -12
  180. package/esm2022/date-picker/date-picker.module.mjs +44 -44
  181. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +10 -10
  182. package/esm2022/date-picker/lib/date/date-header.component.mjs +7 -7
  183. package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +5 -5
  184. package/esm2022/date-picker/lib/date/date-table.component.mjs +7 -7
  185. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +11 -11
  186. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +7 -7
  187. package/esm2022/date-picker/lib/decade/decade-table.component.mjs +5 -5
  188. package/esm2022/date-picker/lib/lib-packer.module.mjs +79 -79
  189. package/esm2022/date-picker/lib/month/month-header.component.mjs +7 -7
  190. package/esm2022/date-picker/lib/month/month-table.component.mjs +5 -5
  191. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +15 -15
  192. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +23 -23
  193. package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +5 -5
  194. package/esm2022/date-picker/lib/year/year-header.component.mjs +7 -7
  195. package/esm2022/date-picker/lib/year/year-table.component.mjs +5 -5
  196. package/esm2022/date-picker/month-picker.component.mjs +12 -12
  197. package/esm2022/date-picker/picker.component.mjs +8 -8
  198. package/esm2022/date-picker/quarter-picker.component.mjs +12 -12
  199. package/esm2022/date-picker/range-picker.component.mjs +12 -12
  200. package/esm2022/date-picker/week-picker.component.mjs +12 -12
  201. package/esm2022/date-picker/year-picker.component.mjs +12 -12
  202. package/esm2022/date-range/date-range.component.mjs +13 -13
  203. package/esm2022/date-range/module.mjs +10 -10
  204. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +7 -7
  205. package/esm2022/dialog/body/dialog-body.component.mjs +5 -5
  206. package/esm2022/dialog/confirm/confirm.component.mjs +10 -18
  207. package/esm2022/dialog/dialog-container.component.mjs +5 -5
  208. package/esm2022/dialog/dialog-ref.mjs +1 -1
  209. package/esm2022/dialog/dialog.module.mjs +22 -22
  210. package/esm2022/dialog/dialog.service.mjs +4 -4
  211. package/esm2022/dialog/footer/dialog-footer.component.mjs +6 -6
  212. package/esm2022/dialog/header/dialog-header.component.mjs +11 -11
  213. package/esm2022/dialog/index.mjs +2 -2
  214. package/esm2022/divider/divider.component.mjs +7 -7
  215. package/esm2022/divider/divider.module.mjs +5 -5
  216. package/esm2022/dot/dot.component.mjs +5 -5
  217. package/esm2022/dot/dot.module.mjs +5 -5
  218. package/esm2022/dropdown/dropdown-menu.component.mjs +9 -9
  219. package/esm2022/dropdown/dropdown-submenu.component.mjs +5 -5
  220. package/esm2022/dropdown/module.mjs +15 -15
  221. package/esm2022/empty/empty.component.mjs +8 -8
  222. package/esm2022/empty/empty.module.mjs +6 -6
  223. package/esm2022/flexible-text/flexible-text.component.mjs +7 -7
  224. package/esm2022/flexible-text/flexible-text.module.mjs +5 -5
  225. package/esm2022/form/form-group-error/form-group-error.component.mjs +8 -8
  226. package/esm2022/form/form-group.component.mjs +8 -8
  227. package/esm2022/form/from-group-footer/form-group-footer.component.mjs +5 -5
  228. package/esm2022/form/module.mjs +18 -18
  229. package/esm2022/grid/module.mjs +6 -6
  230. package/esm2022/grid/thy-grid-item.component.mjs +5 -5
  231. package/esm2022/grid/thy-grid.component.mjs +4 -4
  232. package/esm2022/guider/guider-hint/guider-hint.component.mjs +6 -6
  233. package/esm2022/guider/guider.module.mjs +6 -24
  234. package/esm2022/icon/icon.component.mjs +8 -8
  235. package/esm2022/icon/icon.module.mjs +5 -5
  236. package/esm2022/icon/index.mjs +2 -2
  237. package/esm2022/image/image-group.component.mjs +5 -5
  238. package/esm2022/image/image.directive.mjs +3 -3
  239. package/esm2022/image/image.service.mjs +3 -3
  240. package/esm2022/image/module.mjs +9 -9
  241. package/esm2022/image/preview/image-preview-ref.mjs +1 -1
  242. package/esm2022/image/preview/image-preview.component.mjs +10 -21
  243. package/esm2022/input/input-count.component.mjs +7 -7
  244. package/esm2022/input/input-group.component.mjs +5 -5
  245. package/esm2022/input/input-search.component.mjs +9 -9
  246. package/esm2022/input/input.component.mjs +10 -10
  247. package/esm2022/input/module.mjs +16 -16
  248. package/esm2022/input-number/input-number.component.mjs +14 -14
  249. package/esm2022/input-number/module.mjs +6 -6
  250. package/esm2022/layout/content-main.component.mjs +5 -5
  251. package/esm2022/layout/content-section.component.mjs +5 -5
  252. package/esm2022/layout/content.component.mjs +5 -5
  253. package/esm2022/layout/header.component.mjs +7 -7
  254. package/esm2022/layout/layout.component.mjs +5 -5
  255. package/esm2022/layout/layout.module.mjs +48 -48
  256. package/esm2022/layout/sidebar-content.component.mjs +5 -5
  257. package/esm2022/layout/sidebar-footer.component.mjs +5 -5
  258. package/esm2022/layout/sidebar-header.component.mjs +5 -5
  259. package/esm2022/layout/sidebar.component.mjs +15 -24
  260. package/esm2022/list/list-item-meta.component.mjs +7 -7
  261. package/esm2022/list/list-item.component.mjs +5 -5
  262. package/esm2022/list/list.component.mjs +6 -6
  263. package/esm2022/list/list.module.mjs +9 -26
  264. package/esm2022/list/selection/selection-list.mjs +12 -12
  265. package/esm2022/list/selection/selection.interface.mjs +1 -1
  266. package/esm2022/loading/loading.component.mjs +7 -7
  267. package/esm2022/loading/loading.module.mjs +5 -5
  268. package/esm2022/mention/mention.directive.mjs +3 -3
  269. package/esm2022/mention/mention.module.mjs +5 -24
  270. package/esm2022/mention/suggestions/suggestions.component.mjs +9 -9
  271. package/esm2022/menu/divider/menu-divider.component.mjs +5 -5
  272. package/esm2022/menu/group/menu-group.component.mjs +13 -13
  273. package/esm2022/menu/item/action/menu-item-action.component.mjs +6 -6
  274. package/esm2022/menu/item/icon/menu-item-icon.component.mjs +5 -5
  275. package/esm2022/menu/item/menu-item.component.mjs +7 -7
  276. package/esm2022/menu/item/name/menu-item-name.component.mjs +6 -6
  277. package/esm2022/menu/menu.component.mjs +6 -6
  278. package/esm2022/menu/menu.module.mjs +25 -39
  279. package/esm2022/message/message-container.component.mjs +7 -7
  280. package/esm2022/message/message.component.mjs +7 -7
  281. package/esm2022/message/message.service.mjs +3 -3
  282. package/esm2022/message/module.mjs +7 -7
  283. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +7 -7
  284. package/esm2022/nav/icon-nav/icon-nav.component.mjs +5 -5
  285. package/esm2022/nav/nav.component.mjs +11 -11
  286. package/esm2022/nav/nav.module.mjs +14 -14
  287. package/esm2022/notify/module.mjs +7 -7
  288. package/esm2022/notify/notify-container.component.mjs +7 -7
  289. package/esm2022/notify/notify.component.mjs +7 -7
  290. package/esm2022/notify/notify.service.mjs +3 -3
  291. package/esm2022/pagination/pagination.component.mjs +20 -30
  292. package/esm2022/pagination/pagination.module.mjs +6 -25
  293. package/esm2022/popover/body/popover-body.component.mjs +5 -5
  294. package/esm2022/popover/header/popover-header.component.mjs +7 -7
  295. package/esm2022/popover/module.mjs +13 -13
  296. package/esm2022/popover/popover-container.component.mjs +5 -5
  297. package/esm2022/popover/popover-ref.mjs +1 -1
  298. package/esm2022/popover/popover.service.mjs +4 -4
  299. package/esm2022/progress/progress-circle.component.mjs +8 -8
  300. package/esm2022/progress/progress-strip.component.mjs +6 -6
  301. package/esm2022/progress/progress.component.mjs +15 -15
  302. package/esm2022/progress/progress.module.mjs +7 -7
  303. package/esm2022/property/module.mjs +7 -7
  304. package/esm2022/property/properties.component.mjs +6 -6
  305. package/esm2022/property/property-item.component.mjs +11 -11
  306. package/esm2022/property-operation/group/property-operation-group.component.mjs +5 -5
  307. package/esm2022/property-operation/module.mjs +7 -23
  308. package/esm2022/property-operation/property-operation.component.mjs +14 -14
  309. package/esm2022/radio/button/radio-button.component.mjs +8 -8
  310. package/esm2022/radio/group/radio-group.component.mjs +8 -8
  311. package/esm2022/radio/module.mjs +7 -7
  312. package/esm2022/radio/radio.component.mjs +9 -9
  313. package/esm2022/rate/module.mjs +7 -7
  314. package/esm2022/rate/rate-item.component.mjs +9 -9
  315. package/esm2022/rate/rate.component.mjs +13 -13
  316. package/esm2022/resizable/module.mjs +6 -6
  317. package/esm2022/resizable/resize-handle.component.mjs +6 -6
  318. package/esm2022/resizable/resize-handles.component.mjs +8 -8
  319. package/esm2022/result/result.component.mjs +5 -5
  320. package/esm2022/result/result.module.mjs +5 -5
  321. package/esm2022/segment/segment-item.component.mjs +8 -8
  322. package/esm2022/segment/segment.component.mjs +12 -12
  323. package/esm2022/segment/segment.module.mjs +7 -7
  324. package/esm2022/segment/segment.token.mjs +1 -1
  325. package/esm2022/select/custom-select/custom-select.component.mjs +37 -37
  326. package/esm2022/select/index.mjs +3 -3
  327. package/esm2022/select/module.mjs +10 -10
  328. package/esm2022/select/native-select/native-select.component.mjs +103 -0
  329. package/esm2022/shared/option/group/option-group.component.mjs +11 -11
  330. package/esm2022/shared/option/list-option/list-option.component.mjs +8 -8
  331. package/esm2022/shared/option/module.mjs +10 -37
  332. package/esm2022/shared/option/option-group.component.mjs +5 -5
  333. package/esm2022/shared/option/option.component.mjs +8 -8
  334. package/esm2022/shared/option/option.token.mjs +1 -1
  335. package/esm2022/shared/option/options-container.component.mjs +5 -5
  336. package/esm2022/shared/select/module.mjs +6 -6
  337. package/esm2022/shared/select/select-control/select-control.component.mjs +15 -15
  338. package/esm2022/skeleton/module.mjs +9 -26
  339. package/esm2022/skeleton/skeleton-circle.component.mjs +9 -9
  340. package/esm2022/skeleton/skeleton-rectangle.component.mjs +11 -11
  341. package/esm2022/skeleton/skeleton.component.mjs +6 -6
  342. package/esm2022/skeleton/stylized/bullet-list.component.mjs +14 -14
  343. package/esm2022/skeleton/stylized/list.component.mjs +12 -12
  344. package/esm2022/skeleton/stylized/paragraph.component.mjs +14 -14
  345. package/esm2022/slide/slide-body/slide-body-section.component.mjs +5 -5
  346. package/esm2022/slide/slide-body/slide-body.component.mjs +5 -5
  347. package/esm2022/slide/slide-container.component.mjs +5 -5
  348. package/esm2022/slide/slide-footer/slide-footer.component.mjs +5 -5
  349. package/esm2022/slide/slide-header/slide-header.component.mjs +8 -8
  350. package/esm2022/slide/slide-layout/slide-layout.component.mjs +5 -5
  351. package/esm2022/slide/slide-ref.service.mjs +4 -4
  352. package/esm2022/slide/slide.module.mjs +23 -35
  353. package/esm2022/slide/slide.service.mjs +4 -4
  354. package/esm2022/slider/slider.component.mjs +12 -12
  355. package/esm2022/slider/slider.module.mjs +5 -5
  356. package/esm2022/space/space.component.mjs +6 -6
  357. package/esm2022/space/space.module.mjs +5 -5
  358. package/esm2022/statistic/statistic.component.mjs +5 -5
  359. package/esm2022/statistic/statistic.module.mjs +5 -5
  360. package/esm2022/stepper/step-header.component.mjs +8 -8
  361. package/esm2022/stepper/step.component.mjs +5 -5
  362. package/esm2022/stepper/stepper-button.directive.mjs +6 -6
  363. package/esm2022/stepper/stepper.component.mjs +15 -15
  364. package/esm2022/stepper/stepper.module.mjs +7 -19
  365. package/esm2022/strength/strength.component.mjs +7 -7
  366. package/esm2022/strength/strength.module.mjs +5 -5
  367. package/esm2022/switch/switch.component.mjs +8 -8
  368. package/esm2022/switch/switch.module.mjs +5 -5
  369. package/esm2022/table/table-skeleton.component.mjs +12 -12
  370. package/esm2022/table/table.component.mjs +34 -34
  371. package/esm2022/table/table.module.mjs +10 -10
  372. package/esm2022/tabs/tab-content.component.mjs +5 -5
  373. package/esm2022/tabs/tab.component.mjs +6 -6
  374. package/esm2022/tabs/tabs.component.mjs +12 -12
  375. package/esm2022/tabs/tabs.module.mjs +8 -8
  376. package/esm2022/tag/tag.component.mjs +6 -6
  377. package/esm2022/tag/tag.module.mjs +6 -6
  378. package/esm2022/tag/tags.component.mjs +5 -5
  379. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +6 -6
  380. package/esm2022/time-picker/time-picker-panel.component.mjs +12 -12
  381. package/esm2022/time-picker/time-picker.component.mjs +17 -17
  382. package/esm2022/time-picker/time-picker.module.mjs +7 -7
  383. package/esm2022/timeline/timeline-item.component.mjs +5 -5
  384. package/esm2022/timeline/timeline.component.mjs +8 -8
  385. package/esm2022/timeline/timeline.module.mjs +6 -6
  386. package/esm2022/tooltip/tooltip-ref.mjs +3 -3
  387. package/esm2022/tooltip/tooltip.component.mjs +5 -5
  388. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  389. package/esm2022/transfer/transfer-list.component.mjs +7 -18
  390. package/esm2022/transfer/transfer.component.mjs +9 -9
  391. package/esm2022/transfer/transfer.module.mjs +10 -10
  392. package/esm2022/tree/tree-node.component.mjs +5 -5
  393. package/esm2022/tree/tree.component.mjs +17 -17
  394. package/esm2022/tree/tree.module.mjs +7 -7
  395. package/esm2022/tree-select/module.mjs +9 -9
  396. package/esm2022/tree-select/tree-select.component.mjs +29 -29
  397. package/esm2022/typography/module.mjs +6 -6
  398. package/esm2022/typography/text/text.component.mjs +7 -7
  399. package/esm2022/upload/file-select.component.mjs +8 -8
  400. package/esm2022/upload/module.mjs +5 -5
  401. package/esm2022/version.mjs +2 -2
  402. package/esm2022/vote/vote.component.mjs +10 -10
  403. package/esm2022/vote/vote.module.mjs +6 -6
  404. package/fesm2022/ngx-tethys-action.mjs +19 -19
  405. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  406. package/fesm2022/ngx-tethys-affix.mjs +10 -10
  407. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  408. package/fesm2022/ngx-tethys-alert.mjs +12 -12
  409. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  410. package/fesm2022/ngx-tethys-anchor.mjs +20 -20
  411. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  412. package/fesm2022/ngx-tethys-arrow-switcher.mjs +17 -17
  413. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  414. package/fesm2022/ngx-tethys-autocomplete.mjs +26 -26
  415. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  416. package/fesm2022/ngx-tethys-avatar.mjs +21 -21
  417. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  418. package/fesm2022/ngx-tethys-back-top.mjs +12 -12
  419. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  420. package/fesm2022/ngx-tethys-badge.mjs +13 -13
  421. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  422. package/fesm2022/ngx-tethys-breadcrumb.mjs +17 -17
  423. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  424. package/fesm2022/ngx-tethys-button.mjs +24 -24
  425. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  426. package/fesm2022/ngx-tethys-calendar.mjs +22 -22
  427. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  428. package/fesm2022/ngx-tethys-card.mjs +19 -19
  429. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  430. package/fesm2022/ngx-tethys-carousel.mjs +16 -16
  431. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  432. package/fesm2022/ngx-tethys-cascader.mjs +35 -44
  433. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  434. package/fesm2022/ngx-tethys-checkbox.mjs +11 -11
  435. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  436. package/fesm2022/ngx-tethys-collapse.mjs +19 -19
  437. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  438. package/fesm2022/ngx-tethys-color-picker.mjs +54 -54
  439. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  440. package/fesm2022/ngx-tethys-comment.mjs +12 -12
  441. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  442. package/fesm2022/ngx-tethys-date-picker.mjs +248 -248
  443. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  444. package/fesm2022/ngx-tethys-date-range.mjs +24 -24
  445. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  446. package/fesm2022/ngx-tethys-dialog.mjs +48 -56
  447. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  448. package/fesm2022/ngx-tethys-divider.mjs +10 -10
  449. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  450. package/fesm2022/ngx-tethys-dot.mjs +8 -8
  451. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  452. package/fesm2022/ngx-tethys-dropdown.mjs +25 -25
  453. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  454. package/fesm2022/ngx-tethys-empty.mjs +12 -12
  455. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  456. package/fesm2022/ngx-tethys-flexible-text.mjs +10 -10
  457. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  458. package/fesm2022/ngx-tethys-form.mjs +33 -33
  459. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  460. package/fesm2022/ngx-tethys-grid.mjs +11 -11
  461. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  462. package/fesm2022/ngx-tethys-guider.mjs +10 -28
  463. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  464. package/fesm2022/ngx-tethys-icon.mjs +11 -11
  465. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  466. package/fesm2022/ngx-tethys-image.mjs +22 -33
  467. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  468. package/fesm2022/ngx-tethys-input-number.mjs +18 -18
  469. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  470. package/fesm2022/ngx-tethys-input.mjs +37 -37
  471. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  472. package/fesm2022/ngx-tethys-layout.mjs +86 -95
  473. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  474. package/fesm2022/ngx-tethys-list.mjs +31 -48
  475. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  476. package/fesm2022/ngx-tethys-loading.mjs +10 -10
  477. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  478. package/fesm2022/ngx-tethys-mention.mjs +13 -32
  479. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  480. package/fesm2022/ngx-tethys-menu.mjs +58 -72
  481. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  482. package/fesm2022/ngx-tethys-message.mjs +17 -17
  483. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  484. package/fesm2022/ngx-tethys-nav.mjs +30 -30
  485. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  486. package/fesm2022/ngx-tethys-notify.mjs +17 -17
  487. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  488. package/fesm2022/ngx-tethys-pagination.mjs +24 -53
  489. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  490. package/fesm2022/ngx-tethys-popover.mjs +26 -26
  491. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  492. package/fesm2022/ngx-tethys-progress.mjs +28 -28
  493. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  494. package/fesm2022/ngx-tethys-property-operation.mjs +22 -38
  495. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  496. package/fesm2022/ngx-tethys-property.mjs +19 -19
  497. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  498. package/fesm2022/ngx-tethys-radio.mjs +23 -23
  499. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  500. package/fesm2022/ngx-tethys-rate.mjs +24 -24
  501. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  502. package/fesm2022/ngx-tethys-resizable.mjs +15 -15
  503. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  504. package/fesm2022/ngx-tethys-result.mjs +8 -8
  505. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  506. package/fesm2022/ngx-tethys-segment.mjs +22 -22
  507. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  508. package/fesm2022/ngx-tethys-select.mjs +58 -58
  509. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  510. package/fesm2022/ngx-tethys-shared.mjs +52 -79
  511. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  512. package/fesm2022/ngx-tethys-skeleton.mjs +57 -74
  513. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  514. package/fesm2022/ngx-tethys-slide.mjs +48 -60
  515. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  516. package/fesm2022/ngx-tethys-slider.mjs +15 -15
  517. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  518. package/fesm2022/ngx-tethys-space.mjs +9 -9
  519. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  520. package/fesm2022/ngx-tethys-statistic.mjs +8 -8
  521. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  522. package/fesm2022/ngx-tethys-stepper.mjs +31 -43
  523. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  524. package/fesm2022/ngx-tethys-strength.mjs +10 -10
  525. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  526. package/fesm2022/ngx-tethys-switch.mjs +11 -11
  527. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  528. package/fesm2022/ngx-tethys-table.mjs +51 -51
  529. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  530. package/fesm2022/ngx-tethys-tabs.mjs +23 -23
  531. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  532. package/fesm2022/ngx-tethys-tag.mjs +13 -13
  533. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  534. package/fesm2022/ngx-tethys-time-picker.mjs +35 -35
  535. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  536. package/fesm2022/ngx-tethys-timeline.mjs +14 -14
  537. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  538. package/fesm2022/ngx-tethys-tooltip.mjs +8 -8
  539. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  540. package/fesm2022/ngx-tethys-transfer.mjs +21 -32
  541. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  542. package/fesm2022/ngx-tethys-tree-select.mjs +36 -36
  543. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  544. package/fesm2022/ngx-tethys-tree.mjs +26 -26
  545. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  546. package/fesm2022/ngx-tethys-typography.mjs +11 -11
  547. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  548. package/fesm2022/ngx-tethys-upload.mjs +11 -11
  549. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  550. package/fesm2022/ngx-tethys-vote.mjs +14 -14
  551. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  552. package/fesm2022/ngx-tethys.mjs +1 -1
  553. package/fesm2022/ngx-tethys.mjs.map +1 -1
  554. package/flexible-text/flexible-text.component.d.ts +3 -3
  555. package/flexible-text/flexible-text.module.d.ts +1 -1
  556. package/form/form-group-error/form-group-error.component.d.ts +3 -3
  557. package/form/form-group.component.d.ts +3 -3
  558. package/form/from-group-footer/form-group-footer.component.d.ts +3 -3
  559. package/form/module.d.ts +1 -1
  560. package/grid/module.d.ts +1 -1
  561. package/grid/thy-grid-item.component.d.ts +4 -4
  562. package/grid/thy-grid.component.d.ts +2 -2
  563. package/guider/guider-hint/guider-hint.component.d.ts +3 -3
  564. package/guider/guider.module.d.ts +1 -1
  565. package/icon/icon.component.d.ts +3 -3
  566. package/icon/icon.module.d.ts +1 -1
  567. package/icon/index.d.ts +1 -1
  568. package/image/image-group.component.d.ts +3 -3
  569. package/image/module.d.ts +1 -1
  570. package/image/preview/image-preview-ref.d.ts +4 -4
  571. package/image/preview/image-preview.component.d.ts +4 -4
  572. package/input/input-count.component.d.ts +5 -5
  573. package/input/input-group.component.d.ts +4 -4
  574. package/input/input-search.component.d.ts +3 -3
  575. package/input/input.component.d.ts +3 -3
  576. package/input/module.d.ts +1 -1
  577. package/input-number/input-number.component.d.ts +3 -3
  578. package/input-number/module.d.ts +1 -1
  579. package/layout/content-main.component.d.ts +3 -3
  580. package/layout/content-section.component.d.ts +3 -3
  581. package/layout/content.component.d.ts +3 -3
  582. package/layout/header.component.d.ts +3 -3
  583. package/layout/layout.component.d.ts +3 -3
  584. package/layout/layout.module.d.ts +1 -1
  585. package/layout/sidebar-content.component.d.ts +3 -3
  586. package/layout/sidebar-footer.component.d.ts +3 -3
  587. package/layout/sidebar-header.component.d.ts +3 -3
  588. package/layout/sidebar.component.d.ts +3 -3
  589. package/list/list-item-meta.component.d.ts +3 -3
  590. package/list/list-item.component.d.ts +3 -3
  591. package/list/list.component.d.ts +3 -3
  592. package/list/list.module.d.ts +1 -1
  593. package/list/selection/selection-list.d.ts +9 -9
  594. package/list/selection/selection.interface.d.ts +4 -4
  595. package/loading/loading.component.d.ts +3 -3
  596. package/loading/loading.module.d.ts +1 -1
  597. package/mention/mention.directive.d.ts +2 -2
  598. package/mention/mention.module.d.ts +1 -1
  599. package/mention/suggestions/suggestions.component.d.ts +3 -3
  600. package/menu/divider/menu-divider.component.d.ts +3 -3
  601. package/menu/group/menu-group.component.d.ts +3 -3
  602. package/menu/item/action/menu-item-action.component.d.ts +3 -3
  603. package/menu/item/icon/menu-item-icon.component.d.ts +3 -3
  604. package/menu/item/menu-item.component.d.ts +3 -3
  605. package/menu/item/name/menu-item-name.component.d.ts +3 -3
  606. package/menu/menu.component.d.ts +3 -3
  607. package/menu/menu.module.d.ts +1 -1
  608. package/message/message-container.component.d.ts +3 -3
  609. package/message/message.component.d.ts +3 -3
  610. package/message/message.service.d.ts +2 -2
  611. package/message/module.d.ts +1 -1
  612. package/nav/icon-nav/icon-nav-link.directive.d.ts +3 -3
  613. package/nav/icon-nav/icon-nav.component.d.ts +3 -3
  614. package/nav/nav.component.d.ts +3 -3
  615. package/nav/nav.module.d.ts +1 -1
  616. package/notify/module.d.ts +1 -1
  617. package/notify/notify-container.component.d.ts +3 -3
  618. package/notify/notify.component.d.ts +3 -3
  619. package/notify/notify.service.d.ts +2 -2
  620. package/package.json +134 -134
  621. package/pagination/pagination.component.d.ts +3 -3
  622. package/pagination/pagination.module.d.ts +1 -1
  623. package/popover/body/popover-body.component.d.ts +3 -3
  624. package/popover/header/popover-header.component.d.ts +3 -3
  625. package/popover/module.d.ts +1 -1
  626. package/popover/popover-container.component.d.ts +3 -3
  627. package/popover/popover-ref.d.ts +4 -4
  628. package/popover/popover.service.d.ts +5 -5
  629. package/progress/progress-circle.component.d.ts +3 -3
  630. package/progress/progress-strip.component.d.ts +4 -4
  631. package/progress/progress.component.d.ts +6 -6
  632. package/progress/progress.module.d.ts +1 -1
  633. package/property/module.d.ts +1 -1
  634. package/property/properties.component.d.ts +3 -3
  635. package/property/property-item.component.d.ts +5 -5
  636. package/property-operation/group/property-operation-group.component.d.ts +3 -3
  637. package/property-operation/module.d.ts +1 -1
  638. package/property-operation/property-operation.component.d.ts +3 -3
  639. package/radio/button/radio-button.component.d.ts +6 -6
  640. package/radio/group/radio-group.component.d.ts +7 -7
  641. package/radio/module.d.ts +1 -1
  642. package/radio/radio.component.d.ts +6 -6
  643. package/rate/module.d.ts +1 -1
  644. package/rate/rate-item.component.d.ts +3 -3
  645. package/rate/rate.component.d.ts +3 -3
  646. package/resizable/module.d.ts +1 -1
  647. package/resizable/resize-handle.component.d.ts +3 -3
  648. package/resizable/resize-handles.component.d.ts +3 -3
  649. package/result/result.component.d.ts +3 -3
  650. package/result/result.module.d.ts +1 -1
  651. package/schematics/dependencies.js +1 -1
  652. package/schematics/ng-update/data/class-names.js +740 -4
  653. package/schematics/ng-update/update-17/index.spec.js +1 -1
  654. package/schematics/version.d.ts +1 -1
  655. package/schematics/version.js +1 -1
  656. package/segment/segment-item.component.d.ts +3 -3
  657. package/segment/segment.component.d.ts +7 -7
  658. package/segment/segment.module.d.ts +1 -1
  659. package/segment/segment.token.d.ts +3 -3
  660. package/select/custom-select/custom-select.component.d.ts +17 -17
  661. package/select/index.d.ts +2 -2
  662. package/select/module.d.ts +2 -2
  663. package/select/{select.component.d.ts → native-select/native-select.component.d.ts} +4 -4
  664. package/select/{custom-select/styles → styles}/custom-select.scss +1 -1
  665. package/select/{custom-select/styles → styles}/mixin.scss +2 -2
  666. package/select/styles/select.scss +4 -4
  667. package/shared/option/group/option-group.component.d.ts +5 -5
  668. package/shared/option/list-option/list-option.component.d.ts +3 -3
  669. package/shared/option/module.d.ts +1 -1
  670. package/shared/option/option-group.component.d.ts +3 -3
  671. package/shared/option/option.component.d.ts +6 -6
  672. package/shared/option/option.token.d.ts +7 -7
  673. package/shared/option/options-container.component.d.ts +3 -3
  674. package/shared/select/module.d.ts +1 -1
  675. package/shared/select/select-control/select-control.component.d.ts +3 -3
  676. package/shared/select/select-control/select-control.scss +1 -1
  677. package/skeleton/module.d.ts +1 -1
  678. package/skeleton/skeleton-circle.component.d.ts +5 -5
  679. package/skeleton/skeleton-rectangle.component.d.ts +5 -5
  680. package/skeleton/skeleton.component.d.ts +3 -3
  681. package/skeleton/stylized/bullet-list.component.d.ts +3 -3
  682. package/skeleton/stylized/list.component.d.ts +3 -3
  683. package/skeleton/stylized/paragraph.component.d.ts +3 -3
  684. package/slide/slide-body/slide-body-section.component.d.ts +3 -3
  685. package/slide/slide-body/slide-body.component.d.ts +3 -3
  686. package/slide/slide-container.component.d.ts +3 -3
  687. package/slide/slide-footer/slide-footer.component.d.ts +3 -3
  688. package/slide/slide-header/slide-header.component.d.ts +3 -3
  689. package/slide/slide-layout/slide-layout.component.d.ts +3 -3
  690. package/slide/slide-ref.service.d.ts +4 -4
  691. package/slide/slide.module.d.ts +1 -1
  692. package/slide/slide.service.d.ts +5 -5
  693. package/slider/slider.component.d.ts +3 -3
  694. package/slider/slider.module.d.ts +1 -1
  695. package/space/space.component.d.ts +3 -3
  696. package/space/space.module.d.ts +1 -1
  697. package/statistic/statistic.component.d.ts +3 -3
  698. package/statistic/statistic.module.d.ts +1 -1
  699. package/stepper/step-header.component.d.ts +3 -3
  700. package/stepper/step.component.d.ts +4 -4
  701. package/stepper/stepper-button.directive.d.ts +3 -3
  702. package/stepper/stepper.component.d.ts +10 -10
  703. package/stepper/stepper.module.d.ts +1 -1
  704. package/strength/strength.component.d.ts +3 -3
  705. package/strength/strength.module.d.ts +1 -1
  706. package/styles/index.scss +1 -1
  707. package/styles/mixins/index.scss +1 -1
  708. package/switch/switch.component.d.ts +3 -3
  709. package/switch/switch.module.d.ts +1 -1
  710. package/table/table-skeleton.component.d.ts +3 -3
  711. package/table/table.component.d.ts +3 -3
  712. package/table/table.module.d.ts +1 -1
  713. package/tabs/tab-content.component.d.ts +3 -3
  714. package/tabs/tab.component.d.ts +3 -3
  715. package/tabs/tabs.component.d.ts +7 -7
  716. package/tabs/tabs.module.d.ts +1 -1
  717. package/tag/tag.component.d.ts +3 -3
  718. package/tag/tag.module.d.ts +1 -1
  719. package/tag/tags.component.d.ts +3 -3
  720. package/time-picker/inner/inner-time-picker.component.d.ts +3 -3
  721. package/time-picker/time-picker-panel.component.d.ts +3 -3
  722. package/time-picker/time-picker.component.d.ts +3 -3
  723. package/time-picker/time-picker.module.d.ts +1 -1
  724. package/timeline/timeline-item.component.d.ts +3 -3
  725. package/timeline/timeline.component.d.ts +6 -6
  726. package/timeline/timeline.module.d.ts +1 -1
  727. package/tooltip/tooltip.component.d.ts +3 -3
  728. package/tooltip/tooltip.module.d.ts +1 -1
  729. package/transfer/transfer-list.component.d.ts +3 -3
  730. package/transfer/transfer.component.d.ts +3 -3
  731. package/transfer/transfer.module.d.ts +1 -1
  732. package/tree/tree.component.d.ts +3 -3
  733. package/tree/tree.module.d.ts +1 -1
  734. package/tree-select/module.d.ts +1 -1
  735. package/tree-select/tree-select.component.d.ts +8 -8
  736. package/typography/module.d.ts +1 -1
  737. package/typography/text/text.component.d.ts +3 -3
  738. package/upload/file-select.component.d.ts +3 -3
  739. package/upload/module.d.ts +1 -1
  740. package/vote/vote.component.d.ts +3 -3
  741. package/vote/vote.module.d.ts +1 -1
  742. package/divider/examples/color/color.component.scss +0 -5
  743. package/divider/examples/deeper/deeper.component.scss +0 -5
  744. package/divider/examples/with-text/with-text.component.scss +0 -5
  745. package/esm2022/select/select.component.mjs +0 -103
@@ -1,8 +1,8 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { EXPANDED_DROPDOWN_POSITIONS, InputBoolean, InputNumber, ScrollToService, TabIndexDisabledControlValueAccessorMixin, ThyClickDispatcher } from 'ngx-tethys/core';
3
- import { ThyEmptyComponent } from 'ngx-tethys/empty';
4
- import { ThyIconComponent } from 'ngx-tethys/icon';
5
- import { ThySelectControlComponent } from 'ngx-tethys/shared';
3
+ import { ThyEmpty } from 'ngx-tethys/empty';
4
+ import { ThyIcon } from 'ngx-tethys/icon';
5
+ import { ThySelectControl } from 'ngx-tethys/shared';
6
6
  import { coerceBooleanProperty, elementMatchClosest, isEmpty } from 'ngx-tethys/util';
7
7
  import { BehaviorSubject, Observable, Subject, timer } from 'rxjs';
8
8
  import { debounceTime, distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';
@@ -22,7 +22,7 @@ import * as i2 from "./cascader.service";
22
22
  * 级联选择菜单
23
23
  * @name thy-cascader
24
24
  */
25
- export class ThyCascaderComponent extends TabIndexDisabledControlValueAccessorMixin {
25
+ export class ThyCascader extends TabIndexDisabledControlValueAccessorMixin {
26
26
  /**
27
27
  * 数据项
28
28
  * @type ThyCascaderOption[]
@@ -599,55 +599,55 @@ export class ThyCascaderComponent extends TabIndexDisabledControlValueAccessorMi
599
599
  this.destroy$.next();
600
600
  this.destroy$.complete();
601
601
  }
602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyCascaderComponent, deps: [{ token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ThyClickDispatcher }, { token: i0.NgZone }, { token: i2.ThyCascaderService }], target: i0.ɵɵFactoryTarget.Component }); }
603
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: ThyCascaderComponent, isStandalone: true, selector: "thy-cascader,[thy-cascader]", inputs: { thyValueProperty: "thyValueProperty", thyLabelProperty: "thyLabelProperty", thyPlaceholder: "thyPlaceholder", thySize: "thySize", thyOptions: "thyOptions", thyChangeOn: "thyChangeOn", thyChangeOnSelect: "thyChangeOnSelect", thyShowInput: "thyShowInput", thyLabelRender: "thyLabelRender", thyLoadData: "thyLoadData", thyTriggerAction: "thyTriggerAction", thyExpandTriggerAction: "thyExpandTriggerAction", thyMenuStyle: "thyMenuStyle", thyMenuClassName: "thyMenuClassName", thyColumnClassName: "thyColumnClassName", thyDisabled: "thyDisabled", thyEmptyStateText: "thyEmptyStateText", thyMultiple: "thyMultiple", thyMaxTagCount: "thyMaxTagCount", thyIsOnlySelectLeaf: "thyIsOnlySelectLeaf", thyAutoExpand: "thyAutoExpand", thyShowSearch: "thyShowSearch", thyPreset: "thyPreset", thyHasBackdrop: "thyHasBackdrop" }, outputs: { thyChange: "thyChange", thySelectionChange: "thySelectionChange", thySelect: "thySelect", thyDeselect: "thyDeselect", thyClear: "thyClear", thyExpandStatusChange: "thyExpandStatusChange" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur($event)", "click": "toggleClick($event)", "mouseenter": "toggleMouseEnter($event)", "mouseleave": "toggleMouseLeave($event)" }, properties: { "attr.tabindex": "tabIndex" } }, providers: [
602
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyCascader, deps: [{ token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ThyClickDispatcher }, { token: i0.NgZone }, { token: i2.ThyCascaderService }], target: i0.ɵɵFactoryTarget.Component }); }
603
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: ThyCascader, isStandalone: true, selector: "thy-cascader,[thy-cascader]", inputs: { thyValueProperty: "thyValueProperty", thyLabelProperty: "thyLabelProperty", thyPlaceholder: "thyPlaceholder", thySize: "thySize", thyOptions: "thyOptions", thyChangeOn: "thyChangeOn", thyChangeOnSelect: "thyChangeOnSelect", thyShowInput: "thyShowInput", thyLabelRender: "thyLabelRender", thyLoadData: "thyLoadData", thyTriggerAction: "thyTriggerAction", thyExpandTriggerAction: "thyExpandTriggerAction", thyMenuStyle: "thyMenuStyle", thyMenuClassName: "thyMenuClassName", thyColumnClassName: "thyColumnClassName", thyDisabled: "thyDisabled", thyEmptyStateText: "thyEmptyStateText", thyMultiple: "thyMultiple", thyMaxTagCount: "thyMaxTagCount", thyIsOnlySelectLeaf: "thyIsOnlySelectLeaf", thyAutoExpand: "thyAutoExpand", thyShowSearch: "thyShowSearch", thyPreset: "thyPreset", thyHasBackdrop: "thyHasBackdrop" }, outputs: { thyChange: "thyChange", thySelectionChange: "thySelectionChange", thySelect: "thySelect", thyDeselect: "thyDeselect", thyClear: "thyClear", thyExpandStatusChange: "thyExpandStatusChange" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur($event)", "click": "toggleClick($event)", "mouseenter": "toggleMouseEnter($event)", "mouseleave": "toggleMouseLeave($event)" }, properties: { "attr.tabindex": "tabIndex" } }, providers: [
604
604
  {
605
605
  provide: NG_VALUE_ACCESSOR,
606
- useExisting: forwardRef(() => ThyCascaderComponent),
606
+ useExisting: forwardRef(() => ThyCascader),
607
607
  multi: true
608
608
  },
609
609
  ThyCascaderService
610
- ], viewQueries: [{ propertyName: "cdkConnectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "cascaderOptions", predicate: ["cascaderOptions"], descendants: true, read: ElementRef }, { propertyName: "cascaderOptionContainers", predicate: ["cascaderOptionContainers"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n <ng-container *ngIf=\"thyShowInput\">\n <div\n thySelectControl\n [thyShowSearch]=\"thyShowSearch\"\n [thySize]=\"thySize\"\n [thyAllowClear]=\"true\"\n [thySelectedOptions]=\"selected\"\n [thyMaxTagCount]=\"thyMaxTagCount\"\n (thyOnRemove)=\"removeSelectedItem($event)\"\n (thyOnClear)=\"clearSelection($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnSearch)=\"searchFilter($event)\"\n [thyDisabled]=\"disabled\"\n [thyIsMultiple]=\"thyMultiple\"\n [thyPanelOpened]=\"menuVisible\"\n [thyPlaceholder]=\"thyPlaceholder\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyPreset]=\"thyPreset\">\n <ng-template #customDisplayTemplate let-value>\n <span [ngClass]=\"labelCls\">\n <ng-container *ngIf=\"!isLabelRenderTemplate; else labelTemplate\">{{ value.labelText }}</ng-container>\n <ng-template #labelTemplate>\n <ng-template [ngTemplateOutlet]=\"thyLabelRender\" [ngTemplateOutletContext]=\"value.labelRenderContext\"></ng-template>\n </ng-template>\n </span>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"thy-cascader-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"menuMinWidth\"\n cdkConnectedOverlayTransformOriginOn=\".thy-cascader-menus\"\n (backdropClick)=\"closeMenu()\"\n (detach)=\"closeMenu()\"\n (attach)=\"attached()\"\n (positionChange)=\"positionChange($event)\"\n [cdkConnectedOverlayOpen]=\"menuVisible\">\n <div\n [attr.tabindex]=\"-1\"\n #menu\n [ngClass]=\"menuCls\"\n [ngStyle]=\"thyMenuStyle\"\n (mouseleave)=\"toggleMouseLeave($event)\"\n [@scaleYMotion]=\"'enter'\">\n <ng-container *ngIf=\"!isShowSearchPanel\">\n <ng-container *ngIf=\"columns.length > 0; else emptyPlaceholder\">\n <ul #cascaderOptionContainers *ngFor=\"let options of columns; let i = index\" [ngClass]=\"menuColumnCls\">\n <li\n #cascaderOptions\n thy-cascader-option\n *ngFor=\"let option of options; trackBy: trackByFn\"\n [option]=\"option\"\n [multiple]=\"thyMultiple\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf\"\n [labelProperty]=\"thyLabelProperty\"\n [active]=\"isActivatedOption(option, i)\"\n [halfSelected]=\"isHalfSelectedOption(option, i)\"\n [selected]=\"isSelectedOption(option, i)\"\n (toggleSelectChange)=\"clickOption(option, i, $event)\"\n (click)=\"clickOption(option, i, $event)\"\n (mouseover)=\"mouseoverOption(option, i, $event)\"></li>\n </ul>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isShowSearchPanel\">\n <ng-container *ngIf=\"searchResultList.length; else emptyPlaceholder\">\n <ul class=\"thy-cascader-search-list py-3\">\n <li\n thy-cascader-search-option\n *ngFor=\"let item of searchResultList\"\n [multiple]=\"thyMultiple\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf\"\n [option]=\"item\"\n [active]=\"item.selected\"\n (toggleSelectChange)=\"selectSearchResult($event)\"></li>\n </ul>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPlaceholder>\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty class=\"thy-select-empty-content\" thySize=\"sm\" [thyMessage]=\"emptyStateText\"></thy-empty>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThySelectControlComponent, selector: "thy-select-control,[thySelectControl]", inputs: ["thyPanelOpened", "thyIsMultiple", "thyShowSearch", "thySelectedOptions", "thyDisabled", "customDisplayTemplate", "thyAllowClear", "thyPlaceholder", "thySize", "thyMaxTagCount", "thyBorderless", "thyPreset"], outputs: ["thyOnSearch", "thyOnRemove", "thyOnClear", "thyOnBlur"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyCascaderOptionComponent, selector: "[thy-cascader-option]", inputs: ["option", "multiple", "isOnlySelectLeaf", "active", "halfSelected", "selected", "labelProperty"], outputs: ["toggleSelectChange"] }, { kind: "component", type: ThyCascaderSearchOptionComponent, selector: "[thy-cascader-search-option]", inputs: ["option", "multiple", "isOnlySelectLeaf", "active"], outputs: ["toggleSelectChange"] }, { kind: "component", type: ThyEmptyComponent, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }], animations: [scaleYMotion] }); }
610
+ ], viewQueries: [{ propertyName: "cdkConnectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "cascaderOptions", predicate: ["cascaderOptions"], descendants: true, read: ElementRef }, { propertyName: "cascaderOptionContainers", predicate: ["cascaderOptionContainers"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n <ng-container *ngIf=\"thyShowInput\">\n <div\n thySelectControl\n [thyShowSearch]=\"thyShowSearch\"\n [thySize]=\"thySize\"\n [thyAllowClear]=\"true\"\n [thySelectedOptions]=\"selected\"\n [thyMaxTagCount]=\"thyMaxTagCount\"\n (thyOnRemove)=\"removeSelectedItem($event)\"\n (thyOnClear)=\"clearSelection($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnSearch)=\"searchFilter($event)\"\n [thyDisabled]=\"disabled\"\n [thyIsMultiple]=\"thyMultiple\"\n [thyPanelOpened]=\"menuVisible\"\n [thyPlaceholder]=\"thyPlaceholder\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyPreset]=\"thyPreset\">\n <ng-template #customDisplayTemplate let-value>\n <span [ngClass]=\"labelCls\">\n <ng-container *ngIf=\"!isLabelRenderTemplate; else labelTemplate\">{{ value.labelText }}</ng-container>\n <ng-template #labelTemplate>\n <ng-template [ngTemplateOutlet]=\"thyLabelRender\" [ngTemplateOutletContext]=\"value.labelRenderContext\"></ng-template>\n </ng-template>\n </span>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"thy-cascader-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"menuMinWidth\"\n cdkConnectedOverlayTransformOriginOn=\".thy-cascader-menus\"\n (backdropClick)=\"closeMenu()\"\n (detach)=\"closeMenu()\"\n (attach)=\"attached()\"\n (positionChange)=\"positionChange($event)\"\n [cdkConnectedOverlayOpen]=\"menuVisible\">\n <div\n [attr.tabindex]=\"-1\"\n #menu\n [ngClass]=\"menuCls\"\n [ngStyle]=\"thyMenuStyle\"\n (mouseleave)=\"toggleMouseLeave($event)\"\n [@scaleYMotion]=\"'enter'\">\n <ng-container *ngIf=\"!isShowSearchPanel\">\n <ng-container *ngIf=\"columns.length > 0; else emptyPlaceholder\">\n <ul #cascaderOptionContainers *ngFor=\"let options of columns; let i = index\" [ngClass]=\"menuColumnCls\">\n <li\n #cascaderOptions\n thy-cascader-option\n *ngFor=\"let option of options; trackBy: trackByFn\"\n [option]=\"option\"\n [multiple]=\"thyMultiple\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf\"\n [labelProperty]=\"thyLabelProperty\"\n [active]=\"isActivatedOption(option, i)\"\n [halfSelected]=\"isHalfSelectedOption(option, i)\"\n [selected]=\"isSelectedOption(option, i)\"\n (toggleSelectChange)=\"clickOption(option, i, $event)\"\n (click)=\"clickOption(option, i, $event)\"\n (mouseover)=\"mouseoverOption(option, i, $event)\"></li>\n </ul>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isShowSearchPanel\">\n <ng-container *ngIf=\"searchResultList.length; else emptyPlaceholder\">\n <ul class=\"thy-cascader-search-list py-3\">\n <li\n thy-cascader-search-option\n *ngFor=\"let item of searchResultList\"\n [multiple]=\"thyMultiple\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf\"\n [option]=\"item\"\n [active]=\"item.selected\"\n (toggleSelectChange)=\"selectSearchResult($event)\"></li>\n </ul>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPlaceholder>\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty class=\"thy-select-empty-content\" thySize=\"sm\" [thyMessage]=\"emptyStateText\"></thy-empty>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThySelectControl, selector: "thy-select-control,[thySelectControl]", inputs: ["thyPanelOpened", "thyIsMultiple", "thyShowSearch", "thySelectedOptions", "thyDisabled", "customDisplayTemplate", "thyAllowClear", "thyPlaceholder", "thySize", "thyMaxTagCount", "thyBorderless", "thyPreset"], outputs: ["thyOnSearch", "thyOnRemove", "thyOnClear", "thyOnBlur"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyCascaderOptionComponent, selector: "[thy-cascader-option]", inputs: ["option", "multiple", "isOnlySelectLeaf", "active", "halfSelected", "selected", "labelProperty"], outputs: ["toggleSelectChange"] }, { kind: "component", type: ThyCascaderSearchOptionComponent, selector: "[thy-cascader-search-option]", inputs: ["option", "multiple", "isOnlySelectLeaf", "active"], outputs: ["toggleSelectChange"] }, { kind: "component", type: ThyEmpty, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }], animations: [scaleYMotion] }); }
611
611
  }
612
612
  __decorate([
613
613
  InputBoolean(),
614
614
  __metadata("design:type", Object)
615
- ], ThyCascaderComponent.prototype, "thyChangeOnSelect", void 0);
615
+ ], ThyCascader.prototype, "thyChangeOnSelect", void 0);
616
616
  __decorate([
617
617
  InputBoolean(),
618
618
  __metadata("design:type", Object)
619
- ], ThyCascaderComponent.prototype, "thyShowInput", void 0);
619
+ ], ThyCascader.prototype, "thyShowInput", void 0);
620
620
  __decorate([
621
621
  InputBoolean(),
622
622
  __metadata("design:type", Boolean),
623
623
  __metadata("design:paramtypes", [Boolean])
624
- ], ThyCascaderComponent.prototype, "thyMultiple", null);
624
+ ], ThyCascader.prototype, "thyMultiple", null);
625
625
  __decorate([
626
626
  InputNumber(),
627
627
  __metadata("design:type", Object)
628
- ], ThyCascaderComponent.prototype, "thyMaxTagCount", void 0);
628
+ ], ThyCascader.prototype, "thyMaxTagCount", void 0);
629
629
  __decorate([
630
630
  InputBoolean(),
631
631
  __metadata("design:type", Object)
632
- ], ThyCascaderComponent.prototype, "thyIsOnlySelectLeaf", void 0);
632
+ ], ThyCascader.prototype, "thyIsOnlySelectLeaf", void 0);
633
633
  __decorate([
634
634
  InputBoolean(),
635
635
  __metadata("design:type", Boolean)
636
- ], ThyCascaderComponent.prototype, "thyAutoExpand", void 0);
636
+ ], ThyCascader.prototype, "thyAutoExpand", void 0);
637
637
  __decorate([
638
638
  InputBoolean(),
639
639
  __metadata("design:type", Boolean)
640
- ], ThyCascaderComponent.prototype, "thyShowSearch", void 0);
640
+ ], ThyCascader.prototype, "thyShowSearch", void 0);
641
641
  __decorate([
642
642
  InputBoolean(),
643
643
  __metadata("design:type", Object)
644
- ], ThyCascaderComponent.prototype, "thyHasBackdrop", void 0);
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyCascaderComponent, decorators: [{
644
+ ], ThyCascader.prototype, "thyHasBackdrop", void 0);
645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyCascader, decorators: [{
646
646
  type: Component,
647
647
  args: [{ selector: 'thy-cascader,[thy-cascader]', providers: [
648
648
  {
649
649
  provide: NG_VALUE_ACCESSOR,
650
- useExisting: forwardRef(() => ThyCascaderComponent),
650
+ useExisting: forwardRef(() => ThyCascader),
651
651
  multi: true
652
652
  },
653
653
  ThyCascaderService
@@ -658,7 +658,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
658
658
  }, standalone: true, imports: [
659
659
  CdkOverlayOrigin,
660
660
  NgIf,
661
- ThySelectControlComponent,
661
+ ThySelectControl,
662
662
  NgClass,
663
663
  NgTemplateOutlet,
664
664
  CdkConnectedOverlay,
@@ -666,8 +666,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
666
666
  NgFor,
667
667
  ThyCascaderOptionComponent,
668
668
  ThyCascaderSearchOptionComponent,
669
- ThyEmptyComponent,
670
- ThyIconComponent
669
+ ThyEmpty,
670
+ ThyIcon
671
671
  ], animations: [scaleYMotion], template: "<div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n <ng-container *ngIf=\"thyShowInput\">\n <div\n thySelectControl\n [thyShowSearch]=\"thyShowSearch\"\n [thySize]=\"thySize\"\n [thyAllowClear]=\"true\"\n [thySelectedOptions]=\"selected\"\n [thyMaxTagCount]=\"thyMaxTagCount\"\n (thyOnRemove)=\"removeSelectedItem($event)\"\n (thyOnClear)=\"clearSelection($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnSearch)=\"searchFilter($event)\"\n [thyDisabled]=\"disabled\"\n [thyIsMultiple]=\"thyMultiple\"\n [thyPanelOpened]=\"menuVisible\"\n [thyPlaceholder]=\"thyPlaceholder\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyPreset]=\"thyPreset\">\n <ng-template #customDisplayTemplate let-value>\n <span [ngClass]=\"labelCls\">\n <ng-container *ngIf=\"!isLabelRenderTemplate; else labelTemplate\">{{ value.labelText }}</ng-container>\n <ng-template #labelTemplate>\n <ng-template [ngTemplateOutlet]=\"thyLabelRender\" [ngTemplateOutletContext]=\"value.labelRenderContext\"></ng-template>\n </ng-template>\n </span>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"thy-cascader-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"menuMinWidth\"\n cdkConnectedOverlayTransformOriginOn=\".thy-cascader-menus\"\n (backdropClick)=\"closeMenu()\"\n (detach)=\"closeMenu()\"\n (attach)=\"attached()\"\n (positionChange)=\"positionChange($event)\"\n [cdkConnectedOverlayOpen]=\"menuVisible\">\n <div\n [attr.tabindex]=\"-1\"\n #menu\n [ngClass]=\"menuCls\"\n [ngStyle]=\"thyMenuStyle\"\n (mouseleave)=\"toggleMouseLeave($event)\"\n [@scaleYMotion]=\"'enter'\">\n <ng-container *ngIf=\"!isShowSearchPanel\">\n <ng-container *ngIf=\"columns.length > 0; else emptyPlaceholder\">\n <ul #cascaderOptionContainers *ngFor=\"let options of columns; let i = index\" [ngClass]=\"menuColumnCls\">\n <li\n #cascaderOptions\n thy-cascader-option\n *ngFor=\"let option of options; trackBy: trackByFn\"\n [option]=\"option\"\n [multiple]=\"thyMultiple\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf\"\n [labelProperty]=\"thyLabelProperty\"\n [active]=\"isActivatedOption(option, i)\"\n [halfSelected]=\"isHalfSelectedOption(option, i)\"\n [selected]=\"isSelectedOption(option, i)\"\n (toggleSelectChange)=\"clickOption(option, i, $event)\"\n (click)=\"clickOption(option, i, $event)\"\n (mouseover)=\"mouseoverOption(option, i, $event)\"></li>\n </ul>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isShowSearchPanel\">\n <ng-container *ngIf=\"searchResultList.length; else emptyPlaceholder\">\n <ul class=\"thy-cascader-search-list py-3\">\n <li\n thy-cascader-search-option\n *ngFor=\"let item of searchResultList\"\n [multiple]=\"thyMultiple\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf\"\n [option]=\"item\"\n [active]=\"item.selected\"\n (toggleSelectChange)=\"selectSearchResult($event)\"></li>\n </ul>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPlaceholder>\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty class=\"thy-select-empty-content\" thySize=\"sm\" [thyMessage]=\"emptyStateText\"></thy-empty>\n </div>\n</ng-template>\n" }]
672
672
  }], ctorParameters: () => [{ type: undefined, decorators: [{
673
673
  type: Inject,
@@ -760,4 +760,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
760
760
  type: HostListener,
761
761
  args: ['mouseleave', ['$event']]
762
762
  }] } });
763
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILDJCQUEyQixFQUMzQixZQUFZLEVBQ1osV0FBVyxFQUNYLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsa0JBQWtCLEVBQ3JCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUF1Qyx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUEwRCxNQUFNLHNCQUFzQixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRyxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNO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QUFjO3NCQUF0QyxLQUFLO2dCQU1JLFNBQVM7c0JBQWxCLE1BQU07Z0JBTUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBUUcsV0FBVztzQkFBcEIsTUFBTTtnQkFRRyxRQUFRO3NCQUFqQixNQUFNO2dCQUtHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFFZ0QsZUFBZTtzQkFBckUsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRVcsd0JBQXdCO3NCQUF2RixZQUFZO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFWixtQkFBbUI7c0JBQXBFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVVLE9BQU87c0JBQWhFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwQyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBRUMsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQXlSVixXQUFXO3NCQURqQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXMUIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVL0IsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TLFxuICAgIElucHV0Qm9vbGVhbixcbiAgICBJbnB1dE51bWJlcixcbiAgICBTY3JvbGxUb1NlcnZpY2UsXG4gICAgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4sXG4gICAgVGh5Q2xpY2tEaXNwYXRjaGVyXG59IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlFbXB0eUNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5SWNvbkNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBTZWxlY3RDb250cm9sU2l6ZSwgU2VsZWN0T3B0aW9uQmFzZSwgVGh5U2VsZWN0Q29udHJvbENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgZWxlbWVudE1hdGNoQ2xvc2VzdCwgaXNFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlLCBDb25uZWN0aW9uUG9zaXRpb25QYWlyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5cbmltcG9ydCB7IFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYXNjYWRlci1saS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2Nhc2NhZGVyLXNlYXJjaC1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlciwgVGh5Q2FzY2FkZXJPcHRpb24sIFRoeUNhc2NhZGVyU2VhcmNoT3B0aW9uLCBUaHlDYXNjYWRlclRyaWdnZXJUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBUaHlDYXNjYWRlclNlcnZpY2UgfSBmcm9tICcuL2Nhc2NhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2NhbGVZTW90aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcblxuLyoqXG4gKiDnuqfogZTpgInmi6noj5zljZVcbiAqIEBuYW1lIHRoeS1jYXNjYWRlclxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jYXNjYWRlcixbdGh5LWNhc2NhZGVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlDYXNjYWRlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBUaHlDYXNjYWRlclNlcnZpY2VcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6IGB0YWJJbmRleGAsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCRldmVudCknXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgTmdJZixcbiAgICAgICAgVGh5U2VsZWN0Q29udHJvbENvbXBvbmVudCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5RW1wdHlDb21wb25lbnQsXG4gICAgICAgIFRoeUljb25Db21wb25lbnRcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFtzY2FsZVlNb3Rpb25dXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhc2NhZGVyQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpblxuICAgIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXRcbntcbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTlrp7pmYXlgLznmoTlsZ7mgKflkI1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlWYWx1ZVByb3BlcnR5ID0gJ3ZhbHVlJztcblxuICAgIC8qKlxuICAgICAqIOmAiemhueeahOaYvuekuuWAvOeahOWxnuaAp+WQjVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxhYmVsUHJvcGVydHkgPSAnbGFiZWwnO1xuXG4gICAgLyoqXG4gICAgICog5o+P6L+w6L6T5YWl5a2X5q616aKE5pyf5YC855qE566A55+t55qE5o+Q56S65L+h5oGvXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXIgPSAn6K+36YCJ5oupJztcblxuICAgIC8qKlxuICAgICAqIOaOp+WItuWkp+Wwj++8iDTnp43vvIlcbiAgICAgKiBAdHlwZSAnc20nIHwgJ21kJyB8ICdsZycgfCAnJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFNlbGVjdENvbnRyb2xTaXplID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDmlbDmja7poblcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlck9wdGlvbltdXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlPcHRpb25zKG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID8gW29wdGlvbnNdIDogW107XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmluaXRDb2x1bW5zKGNvbHVtbnMpO1xuICAgICAgICBpZiAodGhpcy50aHlDYXNjYWRlclNlcnZpY2UuZGVmYXVsdFZhbHVlICYmIGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pbml0T3B0aW9ucygwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeCueWHu+eItue6p+iPnOWNlemAiemhueaXtu+8jOWPr+mAmui/h+ivpeWHveaVsOWIpOaWreaYr+WQpuWFgeiuuOWAvOeahOWPmOWMllxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNoYW5nZU9uOiAob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgbGV2ZWw6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+mhueaXtu+8jOihqOWNleaYr+WQpuWKqOaAgeWxleekuuaVsOaNrumhuVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5Q2hhbmdlT25TZWxlY3QgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYvuekuui+k+WFpeahhlxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5U2hvd0lucHV0ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOeUqOaIt+iHquWumuS5ieaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TGFiZWxSZW5kZXIodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5sYWJlbFJlbmRlclRwbCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmlzTGFiZWxSZW5kZXJUZW1wbGF0ZSA9IHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyh7IGlzTGFiZWxSZW5kZXJUZW1wbGF0ZTogdGhpcy5pc0xhYmVsUmVuZGVyVGVtcGxhdGUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUxhYmVsUmVuZGVyKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYWJlbFJlbmRlclRwbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDnlKjkuo7liqjmgIHliqDovb3pgInpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5TG9hZERhdGEodmFsdWU6IChub2RlOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg/OiBudW1iZXIpID0+IFByb21pc2VMaWtlPGFueT4pIHtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0Q2FzY2FkZXJPcHRpb25zKHsgbG9hZERhdGE6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIGdldCB0aHlMb2FkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlPy5jYXNjYWRlck9wdGlvbnM/LmxvYWREYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaOp+WItuinpuWPkeeKtuaAgSwg5pSv5oyBIGBjbGlja2AgfCBgaG92ZXJgXG4gICAgICogQHR5cGUgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZSB8IFRoeUNhc2NhZGVyVHJpZ2dlclR5cGVbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVRyaWdnZXJBY3Rpb246IFRoeUNhc2NhZGVyVHJpZ2dlclR5cGUgfCBUaHlDYXNjYWRlclRyaWdnZXJUeXBlW10gPSBbJ2NsaWNrJ107XG5cbiAgICAvKipcbiAgICAgKiDpvKDmoIfnu4/ov4fkuIvmlrnliJfooajpobnml7bvvIzmmK/lkKboh6rliqjlsZXlvIDliJfooajvvIzmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXIgfCBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUV4cGFuZFRyaWdnZXJBY3Rpb246IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlciB8IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlcltdID0gWydjbGljayddO1xuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5rWu5bGC5qC35byPXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5TWVudVN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5rWu5bGC57G75ZCNXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TWVudUNsYXNzTmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubWVudUNsYXNzTmFtZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgIH1cblxuICAgIGdldCB0aHlNZW51Q2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lbnVDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5rWu5bGC5YiX57G75ZCNXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q29sdW1uQ2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5DbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5Q29sdW1uQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblj6ror7tcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgb3ZlcnJpZGUgZ2V0IHRoeURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXQgdGh5RGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOepuueKtuaAgeS4i+eahOWxleekuuaWh+Wtl1xuICAgICAqIEBkZWZhdWx0IOaaguaXoOWPr+mAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUVtcHR5U3RhdGVUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbXB0eVN0YXRlVGV4dCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgc2V0IHRoeU11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNNdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMoeyBpc011bHRpcGxlOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5aSa6YCJ5pe25pyA5aSn5pi+56S655qE5qCH562+5pWw6YeP77yMMCDooajnpLrkuI3pmZDliLZcbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSB0aHlNYXhUYWdDb3VudCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbku4XlhYHorrjpgInmi6nlj7blrZDpoblcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICB0aHlJc09ubHlTZWxlY3RMZWFmID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOWIneWni+WMluaXtu+8jOaYr+WQpuWxleW8gOmdouadv1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUF1dG9FeHBhbmQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlK/mjIHmkJzntKJcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlTaG93U2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDlpJrpgInpgInkuK3pobnnmoTlsZXnpLrmlrnlvI/vvIzpu5jorqTkuLrnqbrvvIzmuLLmn5PmloflrZfmqKHmnb/vvIzkvKDlhaV0YWfvvIzmuLLmn5PlsZXnpLrmqKHmnb8sXG4gICAgICogQGRlZmF1bHQgJyfvvZx0YWdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQcmVzZXQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pyJ5bmV5biDXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUhhc0JhY2tkcm9wID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOWAvOWPkeeUn+WPmOWMluaXtuinpuWPke+8jOi/lOWbnumAieaLqemhueeahOWAvFxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxhbnlbXT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8qKlxuICAgICAqIOWAvOWPkeeUn+WPmOWMluaXtuinpuWPke+8jOi/lOWbnumAieaLqemhueWIl+ihqFxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlDYXNjYWRlck9wdGlvbltdPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeUNhc2NhZGVyT3B0aW9uW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiDpgInmi6npgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb247XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlIOaaguaXoOWunueOsFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlEZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDmuIXnqbrpgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Q2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDkuIvmi4npgInpobnlsZXlvIDlkozmipjlj6DnirbmgIHkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5RXhwYW5kU3RhdHVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXksIHsgc3RhdGljOiB0cnVlIH0pIGNka0Nvbm5lY3RlZE92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlcjogRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnUnKSBtZW51OiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIGRyb3BEb3duUG9zaXRpb24gPSAnYm90dG9tJztcblxuICAgIHB1YmxpYyBtZW51VmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzTGFiZWxSZW5kZXJUZW1wbGF0ZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIHRyaWdnZXJSZWN0OiBET01SZWN0O1xuXG4gICAgcHVibGljIGVtcHR5U3RhdGVUZXh0ID0gJ+aaguaXoOWPr+mAiemhuSc7XG5cbiAgICBwcml2YXRlIHByZWZpeENscyA9ICd0aHktY2FzY2FkZXInO1xuXG4gICAgcHJpdmF0ZSBtZW51Q2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGNvbHVtbkNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfbWVudUNvbHVtbkNsczogYW55O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9tZW51Q2xzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICAgIHByaXZhdGUgX2xhYmVsQ2xzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICAgIHByaXZhdGUgbGFiZWxSZW5kZXJUcGw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgcHVibGljIHBvc2l0aW9uczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdO1xuXG4gICAgZ2V0IHNlbGVjdGVkKCk6IFNlbGVjdE9wdGlvbkJhc2UgfCBTZWxlY3RPcHRpb25CYXNlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkIDogdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF07XG4gICAgfVxuICAgIHByaXZhdGUgaXNNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIG1lbnVNaW5XaWR0aCA9IDEyMjtcblxuICAgIHByaXZhdGUgc2VhcmNoVGV4dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcblxuICAgIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0TGlzdCgpOiBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaFJlc3VsdExpc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU2hvd1NlYXJjaFBhbmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDop6PlhrPmkJzntKIm5aSa6YCJ55qE5oOF5Ya15LiL77yM54K55Ye75pCc57Si6aG55Lya5a+86Ie0IHBhbmVsIOmXqueDgVxuICAgICAqIOeUseS6jueCueWHu+WQju+8jHRoeVNlbGVjdGVkT3B0aW9uc+WPmOWMlu+8jOWvvOiHtCB0aHlTZWxlY3RDb250cm9sXG4gICAgICog5Y+I5Lya6Kem5Y+RIHNlYXJjaEZpbHRlciDlh73mlbDvvIzljbMgcmVzZXRTZWFyY2gg5Lya5omn6KGMXG4gICAgICog5Lya5a+86Ie05oGi5aSN57qn6IGU54q25oCB5YaN5Y+Y5Li65pCc57Si54q25oCBXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGluZ1NlYXJjaFN0YXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9hZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlPy5pc0xvYWRpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY29sdW1ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFmdGVyQ2hhbmdlRm46ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q29sdW1uQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5zZXRMYWJlbENsYXNzKCk7XG4gICAgICAgIHRoaXMuaW5pdFBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbGFiZWxQcm9wZXJ0eTogdGhpcy50aHlMYWJlbFByb3BlcnR5LFxuICAgICAgICAgICAgdmFsdWVQcm9wZXJ0eTogdGhpcy50aHlWYWx1ZVByb3BlcnR5LFxuICAgICAgICAgICAgaXNNdWx0aXBsZTogdGhpcy5pc011bHRpcGxlLFxuICAgICAgICAgICAgaXNPbmx5U2VsZWN0TGVhZjogdGhpcy50aHlJc09ubHlTZWxlY3RMZWFmLFxuICAgICAgICAgICAgaXNMYWJlbFJlbmRlclRlbXBsYXRlOiB0aGlzLmlzTGFiZWxSZW5kZXJUZW1wbGF0ZSxcbiAgICAgICAgICAgIGxvYWREYXRhOiB0aGlzLnRoeUxvYWREYXRhXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jYXNjYWRlclZhbHVlQ2hhbmdlKCkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzVmFsdWVFcXVhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbihvcHRpb25zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5pc1NlbGVjdGlvbk1vZGVsRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aHlDbGVhci5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudGh5U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeUNoYW5nZS5lbWl0KG9wdGlvbnMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFmdGVyQ2hhbmdlRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlckNoYW5nZUZuKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJDaGFuZ2VGbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy50aHlDbGlja0Rpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAuY2xpY2tlZCgwKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLm1lbnU/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5QXV0b0V4cGFuZCkge1xuICAgICAgICAgICAgdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd0aHlJc09ubHlTZWxlY3RMZWFmJ10pIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyh7IGlzT25seVNlbGVjdExlYWY6IGNoYW5nZXNbJ3RoeUlzT25seVNlbGVjdExlYWYnXS5jdXJyZW50VmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgY2FzY2FkZXJQb3NpdGlvbjogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FzY2FkZXJQb3NpdGlvbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uud3JpdGVDYXNjYWRlclZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3NpdGlvbkNoYW5nZShwb3NpdGlvbjogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcG9zaXRpb24uY29ubmVjdGlvblBhaXIub3JpZ2luWSA9PT0gJ2JvdHRvbScgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICBpZiAodGhpcy5kcm9wRG93blBvc2l0aW9uICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93blBvc2l0aW9uID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGFsZlNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmlzSGFsZlNlbGVjdGVkT3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGVjdGVkT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmlzU2VsZWN0ZWRPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5wb3NpdGlvbkNoYW5nZS5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWN0aXZlRWxlbWVudEludG9WaWV3KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsQWN0aXZlRWxlbWVudEludG9WaWV3KCkge1xuICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlT3B0aW9ucyA9IHRoaXMuY2FzY2FkZXJPcHRpb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RoeS1jYXNjYWRlci1tZW51LWl0ZW0tYWN0aXZlJykpXG4gICAgICAgICAgICAgICAgLy8gZm9yIG11bHRpcGxlIG1vZGVcbiAgICAgICAgICAgICAgICAuc2xpY2UoLXRoaXMuY2FzY2FkZXJPcHRpb25Db250YWluZXJzLmxlbmd0aCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2FzY2FkZXJPcHRpb25Db250YWluZXJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDw9IGFjdGl2ZU9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBTY3JvbGxUb1NlcnZpY2Uuc2Nyb2xsVG9FbGVtZW50KGFjdGl2ZU9wdGlvbnNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQsIGl0ZW0ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51VmlzaWJsZShtZW51VmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSAhPT0gbWVudVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVZpc2libGUgPSBtZW51VmlzaWJsZTtcblxuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaW5pdEFjdGl2YXRlZE9wdGlvbnModGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgICAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgICAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJSZWN0ID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeUV4cGFuZFN0YXR1c0NoYW5nZS5lbWl0KG1lbnVWaXNpYmxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudUNscygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudUNscztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1lbnVDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNscyA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tbWVudXNgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tbWVudXMtaGlkZGVuYF06ICF0aGlzLm1lbnVWaXNpYmxlLFxuICAgICAgICAgICAgW2Ake3RoaXMudGh5TWVudUNsYXNzTmFtZX1gXTogdGhpcy50aHlNZW51Q2xhc3NOYW1lLFxuICAgICAgICAgICAgW2B3LTEwMGBdOiB0aGlzLmNvbHVtbnMubGVuZ3RoID09PSAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51Q29sdW1uQ2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51Q29sdW1uQ2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWVudUNvbHVtbkNsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51Q29sdW1uQ2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51YF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy50aHlDb2x1bW5DbGFzc05hbWV9YF06IHRoaXMudGh5Q29sdW1uQ2xhc3NOYW1lXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbENscygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxDbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMYWJlbENsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYWJlbENscyA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLWxhYmVsYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXNob3ctc2VhcmNoYF06IGZhbHNlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1mb2N1c2VkYF06IGZhbHNlLFxuICAgICAgICAgICAgJ3RleHQtdHJ1bmNhdGUnOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDbGFzc01hcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xhc3NNYXAgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9YF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXBpY2tlcmBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS0ke3RoaXMudGh5U2l6ZX1gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLWRpc2FibGVkYF06IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXBpY2tlci1vcGVuYF06IHRoaXMubWVudVZpc2libGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3NCeU1hcChjbGFzc01hcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NsaWNrVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnY2xpY2snO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignY2xpY2snKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyRXhwYW5kVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlFeHBhbmRUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVDbGljaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNDbGlja1RyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSghdGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgdG9nZ2xlTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5pc0hvdmVyVHJpZ2dlckFjdGlvbigpIHx8IHRoaXMubWVudVZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUodHJ1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIHRvZ2dsZU1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSB8fCAhdGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhvc3RFbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBtb3VzZVRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGhvc3RFbC5jb250YWlucyhtb3VzZVRhcmdldCkgfHxcbiAgICAgICAgICAgIG1vdXNlVGFyZ2V0Py5jbGFzc0xpc3QuY29udGFpbnMoJ2Nkay1vdmVybGF5LXBhbmUnKSB8fFxuICAgICAgICAgICAgbW91c2VUYXJnZXQ/LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja09wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQgfCBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmNsaWNrT3B0aW9uKG9wdGlvbiwgaW5kZXgsIGV2ZW50LCB0aGlzLnNlbGVjdE9wdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIG1vdXNlb3Zlck9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQgJiYgIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzSG92ZXJFeHBhbmRUcmlnZ2VyQWN0aW9uKCkgJiYgIShvcHRpb24gJiYgb3B0aW9uLmRpc2FibGVkICYmIHRoaXMuaXNNdWx0aXBsZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZU9wdGlvbihvcHRpb24sIGluZGV4LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICAvLyBUYWIg6IGa54Sm5ZCO6Ieq5Yqo6IGa54Sm5YiwIGlucHV0IOi+k+WFpeahhu+8jOatpOWIhuaUr+S4i+ebtOaOpei/lOWbnu+8jOaXoOmcgOinpuWPkSBvblRvdWNoZWRGblxuICAgICAgICBpZiAoZWxlbWVudE1hdGNoQ2xvc2VzdChldmVudD8ucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCwgWycudGh5LWNhc2NhZGVyLW1lbnVzJywgJ3RoeS1jYXNjYWRlciddKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICBpZiAoIWVsZW1lbnRNYXRjaENsb3Nlc3QoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsIFsnLnRoeS1jYXNjYWRlci1tZW51cycsICd0aHktY2FzY2FkZXInXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgICAgIHRoaXMuaXNTaG93U2VhcmNoUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaFJlc3VsdExpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgc2VsZWN0OiBib29sZWFuLCBsb2FkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldEFjdGl2ZU9wdGlvbihvcHRpb24sIGluZGV4LCBzZWxlY3QsIGxvYWRDaGlsZHJlbiwgdGhpcy5zZWxlY3RPcHRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0T3B0aW9uID0gKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKChvcHRpb24uaXNMZWFmIHx8ICF0aGlzLnRoeUlzT25seVNlbGVjdExlYWYpICYmICF0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmFmdGVyQ2hhbmdlRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeVNlbGVjdC5lbWl0KHsgb3B0aW9uLCBpbmRleCB9KTtcbiAgICAgICAgY29uc3QgaXNPcHRpb25DYW5TZWxlY3QgPSB0aGlzLnRoeUNoYW5nZU9uU2VsZWN0ICYmICF0aGlzLmlzTXVsdGlwbGU7XG4gICAgICAgIGlmIChvcHRpb24uaXNMZWFmIHx8ICF0aGlzLnRoeUlzT25seVNlbGVjdExlYWYgfHwgaXNPcHRpb25DYW5TZWxlY3QgfHwgdGhpcy5zaG91bGRQZXJmb3JtU2VsZWN0aW9uKG9wdGlvbiwgaW5kZXgpKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWxlY3RPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHVibGljIHJlbW92ZVNlbGVjdGVkSXRlbShldmVudDogeyBpdGVtOiBTZWxlY3RPcHRpb25CYXNlOyAkZXZlbnRPcmlnaW46IEV2ZW50IH0pIHtcbiAgICAgICAgZXZlbnQuJGV2ZW50T3JpZ2luLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5yZW1vdmVTZWxlY3RlZEl0ZW0oZXZlbnQ/Lml0ZW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdWxkUGVyZm9ybVNlbGVjdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBsZXZlbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy50aHlDaGFuZ2VPbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMudGh5Q2hhbmdlT24ob3B0aW9uLCBsZXZlbCkgPT09IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFmdGVyQ2hhbmdlRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Q2xpY2tEaXNwYXRjaGVyOiBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHB1YmxpYyB0aHlDYXNjYWRlclNlcnZpY2U6IFRoeUNhc2NhZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogVGh5Q2FzY2FkZXJPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LnZhbHVlIHx8IGl0ZW0/Ll9pZCB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoRmlsdGVyKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXNlYXJjaFRleHQgJiYgIXRoaXMuaXNTZWxlY3RpbmdTZWFyY2hTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCQubmV4dChzZWFyY2hUZXh0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGZpbHRlcih0ZXh0ID0+IHRleHQgIT09ICcnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShzZWFyY2hUZXh0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBsb2NhbCBzZWFyY2hcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEluTG9jYWwoc2VhcmNoVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dTZWFyY2hQYW5lbCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEluTG9jYWwoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaEluTG9jYWwoc2VhcmNoVGV4dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc1Nob3dTZWFyY2hQYW5lbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5yZXNldFNlYXJjaCgpO1xuICAgICAgICB0aGlzLnNjcm9sbEFjdGl2ZUVsZW1lbnRJbnRvVmlldygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RTZWFyY2hSZXN1bHQoc2VsZWN0T3B0aW9uRGF0YTogVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB0aHlSb3dWYWx1ZTogc2VsZWN0ZWRPcHRpb25zIH0gPSBzZWxlY3RPcHRpb25EYXRhO1xuICAgICAgICBpZiAoc2VsZWN0T3B0aW9uRGF0YS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucy5mb3JFYWNoKChpdGVtOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVPcHRpb24oaXRlbSwgaW5kZXgsIGluZGV4ID09PSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoIC0gMSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0aW5nU2VhcmNoU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgc2VsZWN0T3B0aW9uRGF0YS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5TZWFyY2hSZXN1bHRMaXN0ID0gdGhpcy5zZWFyY2hSZXN1bHRMaXN0O1xuICAgICAgICAgICAgLy8g5L+d5oyB5pCc57Si6YCJ6aG5XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1NlYXJjaFBhbmVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWFyY2hSZXN1bHRMaXN0ID0gb3JpZ2luU2VhcmNoUmVzdWx0TGlzdDtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0aW5nU2VhcmNoU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemUgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVzaXplLm9ic2VydmUodGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJSZWN0ID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkgJiYgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Lm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2RrT3ZlcmxheU9yaWdpbiAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiICN0cmlnZ2VyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5U2hvd0lucHV0XCI+XG4gICAgPGRpdlxuICAgICAgdGh5U2VsZWN0Q29udHJvbFxuICAgICAgW3RoeVNob3dTZWFyY2hdPVwidGh5U2hvd1NlYXJjaFwiXG4gICAgICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgICAgIFt0aHlBbGxvd0NsZWFyXT1cInRydWVcIlxuICAgICAgW3RoeVNlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFwiXG4gICAgICBbdGh5TWF4VGFnQ291bnRdPVwidGh5TWF4VGFnQ291bnRcIlxuICAgICAgKHRoeU9uUmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQpXCJcbiAgICAgICh0aHlPbkNsZWFyKT1cImNsZWFyU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgKHRoeU9uQmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAodGh5T25TZWFyY2gpPVwic2VhcmNoRmlsdGVyKCRldmVudClcIlxuICAgICAgW3RoeURpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFt0aHlJc011bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgIFt0aHlQYW5lbE9wZW5lZF09XCJtZW51VmlzaWJsZVwiXG4gICAgICBbdGh5UGxhY2Vob2xkZXJdPVwidGh5UGxhY2Vob2xkZXJcIlxuICAgICAgW2N1c3RvbURpc3BsYXlUZW1wbGF0ZV09XCJjdXN0b21EaXNwbGF5VGVtcGxhdGVcIlxuICAgICAgW3RoeVByZXNldF09XCJ0aHlQcmVzZXRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRGlzcGxheVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwibGFiZWxDbHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTGFiZWxSZW5kZXJUZW1wbGF0ZTsgZWxzZSBsYWJlbFRlbXBsYXRlXCI+e3sgdmFsdWUubGFiZWxUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsYWJlbFRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeUxhYmVsUmVuZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInZhbHVlLmxhYmVsUmVuZGVyQ29udGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0aHlIYXNCYWNrZHJvcFwiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwidGh5LWNhc2NhZGVyLWJhY2tkcm9wXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwicG9zaXRpb25zXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aF09XCJtZW51TWluV2lkdGhcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT249XCIudGh5LWNhc2NhZGVyLW1lbnVzXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VNZW51KClcIlxuICAoZGV0YWNoKT1cImNsb3NlTWVudSgpXCJcbiAgKGF0dGFjaCk9XCJhdHRhY2hlZCgpXCJcbiAgKHBvc2l0aW9uQ2hhbmdlKT1cInBvc2l0aW9uQ2hhbmdlKCRldmVudClcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwibWVudVZpc2libGVcIj5cbiAgPGRpdlxuICAgIFthdHRyLnRhYmluZGV4XT1cIi0xXCJcbiAgICAjbWVudVxuICAgIFtuZ0NsYXNzXT1cIm1lbnVDbHNcIlxuICAgIFtuZ1N0eWxlXT1cInRoeU1lbnVTdHlsZVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidG9nZ2xlTW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCInZW50ZXInXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1Nob3dTZWFyY2hQYW5lbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbnMubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDx1bCAjY2FzY2FkZXJPcHRpb25Db250YWluZXJzICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCJtZW51Q29sdW1uQ2xzXCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICAjY2FzY2FkZXJPcHRpb25zXG4gICAgICAgICAgICB0aHktY2FzY2FkZXItb3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICBbb3B0aW9uXT1cIm9wdGlvblwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgICAgICAgW2lzT25seVNlbGVjdExlYWZdPVwidGh5SXNPbmx5U2VsZWN0TGVhZlwiXG4gICAgICAgICAgICBbbGFiZWxQcm9wZXJ0eV09XCJ0aHlMYWJlbFByb3BlcnR5XCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgICAgICBbaGFsZlNlbGVjdGVkXT1cImlzSGFsZlNlbGVjdGVkT3B0aW9uKG9wdGlvbiwgaSlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWRPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgICAgICAodG9nZ2xlU2VsZWN0Q2hhbmdlKT1cImNsaWNrT3B0aW9uKG9wdGlvbiwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tPcHRpb24ob3B0aW9uLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwibW91c2VvdmVyT3B0aW9uKG9wdGlvbiwgaSwgJGV2ZW50KVwiPjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93U2VhcmNoUGFuZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hSZXN1bHRMaXN0Lmxlbmd0aDsgZWxzZSBlbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cInRoeS1jYXNjYWRlci1zZWFyY2gtbGlzdCBweS0zXCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICB0aHktY2FzY2FkZXItc2VhcmNoLW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VhcmNoUmVzdWx0TGlzdFwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgICAgICAgW2lzT25seVNlbGVjdExlYWZdPVwidGh5SXNPbmx5U2VsZWN0TGVhZlwiXG4gICAgICAgICAgICBbb3B0aW9uXT1cIml0ZW1cIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICh0b2dnbGVTZWxlY3RDaGFuZ2UpPVwic2VsZWN0U2VhcmNoUmVzdWx0KCRldmVudClcIj48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVBsYWNlaG9sZGVyPlxuICA8ZGl2IGNsYXNzPVwidGh5LWNhc2NhZGVyLWVtcHR5LWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogdHJpZ2dlclJlY3Q/LndpZHRoIH1cIj5cbiAgICA8dGh5LWVtcHR5IGNsYXNzPVwidGh5LXNlbGVjdC1lbXB0eS1jb250ZW50XCIgdGh5U2l6ZT1cInNtXCIgW3RoeU1lc3NhZ2VdPVwiZW1wdHlTdGF0ZVRleHRcIj48L3RoeS1lbXB0eT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
763
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILDJCQUEyQixFQUMzQixZQUFZLEVBQ1osV0FBVyxFQUNYLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsa0JBQWtCLEVBQ3JCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQXVDLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQTBELE1BQU0sc0JBQXNCLENBQUM7QUFDckksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FB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UztzQkFBbEIsTUFBTTtnQkFNRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTTtnQkFRRyxXQUFXO3NCQUFwQixNQUFNO2dCQVFHLFFBQVE7c0JBQWpCLE1BQU07Z0JBS0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVnRCxlQUFlO3NCQUFyRSxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFVyx3QkFBd0I7c0JBQXZGLFlBQVk7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVaLG1CQUFtQjtzQkFBcEUsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRVUsT0FBTztzQkFBaEUsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBDLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFFQyxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBeVJWLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVcxQixnQkFBZ0I7c0JBRHRCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVUvQixnQkFBZ0I7c0JBRHRCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlMsXG4gICAgSW5wdXRCb29sZWFuLFxuICAgIElucHV0TnVtYmVyLFxuICAgIFNjcm9sbFRvU2VydmljZSxcbiAgICBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpbixcbiAgICBUaHlDbGlja0Rpc3BhdGNoZXJcbn0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUVtcHR5IH0gZnJvbSAnbmd4LXRldGh5cy9lbXB0eSc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFNlbGVjdENvbnRyb2xTaXplLCBTZWxlY3RPcHRpb25CYXNlLCBUaHlTZWxlY3RDb250cm9sIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBlbGVtZW50TWF0Y2hDbG9zZXN0LCBpc0VtcHR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luLCBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcblxuaW1wb3J0IHsgVGh5Q2FzY2FkZXJPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2Nhc2NhZGVyLWxpLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY2FzY2FkZXItc2VhcmNoLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyLCBUaHlDYXNjYWRlck9wdGlvbiwgVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb24sIFRoeUNhc2NhZGVyVHJpZ2dlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFRoeUNhc2NhZGVyU2VydmljZSB9IGZyb20gJy4vY2FzY2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBzY2FsZVlNb3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuXG4vKipcbiAqIOe6p+iBlOmAieaLqeiPnOWNlVxuICogQG5hbWUgdGh5LWNhc2NhZGVyXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWNhc2NhZGVyLFt0aHktY2FzY2FkZXJdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FzY2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeUNhc2NhZGVyKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFRoeUNhc2NhZGVyU2VydmljZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogYHRhYkluZGV4YCxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoJGV2ZW50KSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDZGtPdmVybGF5T3JpZ2luLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBUaHlTZWxlY3RDb250cm9sLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICAgICAgICBOZ1N0eWxlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVGh5Q2FzY2FkZXJPcHRpb25Db21wb25lbnQsXG4gICAgICAgIFRoeUNhc2NhZGVyU2VhcmNoT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBUaHlFbXB0eSxcbiAgICAgICAgVGh5SWNvblxuICAgIF0sXG4gICAgYW5pbWF0aW9uczogW3NjYWxlWU1vdGlvbl1cbn0pXG5leHBvcnQgY2xhc3MgVGh5Q2FzY2FkZXJcbiAgICBleHRlbmRzIFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluXG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAgIC8qKlxuICAgICAqIOmAiemhueeahOWunumZheWAvOeahOWxnuaAp+WQjVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVZhbHVlUHJvcGVydHkgPSAndmFsdWUnO1xuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5pi+56S65YC855qE5bGe5oCn5ZCNXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5TGFiZWxQcm9wZXJ0eSA9ICdsYWJlbCc7XG5cbiAgICAvKipcbiAgICAgKiDmj4/ov7DovpPlhaXlrZfmrrXpooTmnJ/lgLznmoTnroDnn63nmoTmj5DnpLrkv6Hmga9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZWhvbGRlciA9ICfor7fpgInmi6knO1xuXG4gICAgLyoqXG4gICAgICog5o6n5Yi25aSn5bCP77yINOenje+8iVxuICAgICAqIEB0eXBlICdzbScgfCAnbWQnIHwgJ2xnJyB8ICcnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2l6ZTogU2VsZWN0Q29udHJvbFNpemUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIOaVsOaNrumhuVxuICAgICAqIEB0eXBlIFRoeUNhc2NhZGVyT3B0aW9uW11cbiAgICAgKiBAZGVmYXVsdCBbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeU9wdGlvbnMob3B0aW9uczogVGh5Q2FzY2FkZXJPcHRpb25bXSB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGggPyBbb3B0aW9uc10gOiBbXTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaW5pdENvbHVtbnMoY29sdW1ucyk7XG4gICAgICAgIGlmICh0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5kZWZhdWx0VmFsdWUgJiYgY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmluaXRPcHRpb25zKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog54K55Ye754i257qn6I+c5Y2V6YCJ6aG55pe277yM5Y+v6YCa6L+H6K+l5Ye95pWw5Yik5pat5piv5ZCm5YWB6K645YC855qE5Y+Y5YyWXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Q2hhbmdlT246IChvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBsZXZlbDogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog54K55Ye76aG55pe277yM6KGo5Y2V5piv5ZCm5Yqo5oCB5bGV56S65pWw5o2u6aG5XG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlDaGFuZ2VPblNlbGVjdCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5pi+56S66L6T5YWl5qGGXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlTaG93SW5wdXQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog55So5oi36Ieq5a6a5LmJ5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlMYWJlbFJlbmRlcih2YWx1ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLmxhYmVsUmVuZGVyVHBsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0Q2FzY2FkZXJPcHRpb25zKHsgaXNMYWJlbFJlbmRlclRlbXBsYXRlOiB0aGlzLmlzTGFiZWxSZW5kZXJUZW1wbGF0ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TGFiZWxSZW5kZXIoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsUmVuZGVyVHBsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeUqOS6juWKqOaAgeWKoOi9vemAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlMb2FkRGF0YSh2YWx1ZTogKG5vZGU6IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZUxpa2U8YW55Pikge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMoeyBsb2FkRGF0YTogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUxvYWREYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2U/LmNhc2NhZGVyT3B0aW9ucz8ubG9hZERhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5o6n5Yi26Kem5Y+R54q25oCBLCDmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlclRyaWdnZXJUeXBlIHwgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZVtdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VHJpZ2dlckFjdGlvbjogVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZSB8IFRoeUNhc2NhZGVyVHJpZ2dlclR5cGVbXSA9IFsnY2xpY2snXTtcblxuICAgIC8qKlxuICAgICAqIOm8oOagh+e7j+i/h+S4i+aWueWIl+ihqOmhueaXtu+8jOaYr+WQpuiHquWKqOWxleW8gOWIl+ihqO+8jOaUr+aMgSBgY2xpY2tgIHwgYGhvdmVyYFxuICAgICAqIEB0eXBlIFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlciB8IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlcltdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RXhwYW5kVHJpZ2dlckFjdGlvbjogVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyIHwgVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyW10gPSBbJ2NsaWNrJ107XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmta7lsYLmoLflvI9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlNZW51U3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmta7lsYLnsbvlkI1cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlNZW51Q2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tZW51Q2xhc3NOYW1lID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeU1lbnVDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudUNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmta7lsYLliJfnsbvlkI1cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlDb2x1bW5DbGFzc05hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbHVtbkNsYXNzTmFtZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgIH1cblxuICAgIGdldCB0aHlDb2x1bW5DbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWPquivu1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICBvdmVycmlkZSBnZXQgdGh5RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHNldCB0aHlEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog56m654q25oCB5LiL55qE5bGV56S65paH5a2XXG4gICAgICogQGRlZmF1bHQg5pqC5peg5Y+v6YCJ6aG5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5RW1wdHlTdGF0ZVRleHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVtcHR5U3RhdGVUZXh0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgdGh5TXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc011bHRpcGxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyh7IGlzTXVsdGlwbGU6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIGdldCB0aHlNdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNdWx0aXBsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lpJrpgInml7bmnIDlpKfmmL7npLrnmoTmoIfnrb7mlbDph4/vvIwwIOihqOekuuS4jemZkOWItlxuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHRoeU1heFRhZ0NvdW50ID0gMDtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuS7heWFgeiuuOmAieaLqeWPtuWtkOmhuVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHRoeUlzT25seVNlbGVjdExlYWYgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyW5pe277yM5piv5ZCm5bGV5byA6Z2i5p2/XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QXV0b0V4cGFuZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaUr+aMgeaQnOe0olxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeVNob3dTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWkmumAiemAieS4remhueeahOWxleekuuaWueW8j++8jOm7mOiupOS4uuepuu+8jOa4suafk+aWh+Wtl+aooeadv++8jOS8oOWFpXRhZ++8jOa4suafk+WxleekuuaooeadvyxcbiAgICAgKiBAZGVmYXVsdCAnJ++9nHRhZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVByZXNldDogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmnInluZXluINcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5SGFzQmFja2Ryb3AgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5YC85Y+R55Sf5Y+Y5YyW5pe26Kem5Y+R77yM6L+U5Zue6YCJ5oup6aG555qE5YC8XG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPGFueVtdPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gICAgLyoqXG4gICAgICog5YC85Y+R55Sf5Y+Y5YyW5pe26Kem5Y+R77yM6L+U5Zue6YCJ5oup6aG55YiX6KGoXG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPFRoeUNhc2NhZGVyT3B0aW9uW10+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeVNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5Q2FzY2FkZXJPcHRpb25bXT4oKTtcblxuICAgIC8qKlxuICAgICAqIOmAieaLqemAiemhueaXtuinpuWPkVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgb3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbjtcbiAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGUg5pqC5peg5a6e546wXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeURlc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb247XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIC8qKlxuICAgICAqIOa4heepuumAiemhueaXtuinpuWPkVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlDbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIOS4i+aLiemAiemhueWxleW8gOWSjOaKmOWPoOeKtuaAgeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlFeHBhbmRTdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2Nhc2NhZGVyT3B0aW9ucycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjYXNjYWRlck9wdGlvbnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2Nhc2NhZGVyT3B0aW9uQ29udGFpbmVycycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjYXNjYWRlck9wdGlvbkNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSwgeyBzdGF0aWM6IHRydWUgfSkgY2RrQ29ubmVjdGVkT3ZlcmxheTogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0cmlnZ2VyOiBFbGVtZW50UmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudScpIG1lbnU6IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgZHJvcERvd25Qb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gICAgcHVibGljIG1lbnVWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNMYWJlbFJlbmRlclRlbXBsYXRlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdHJpZ2dlclJlY3Q6IERPTVJlY3Q7XG5cbiAgICBwdWJsaWMgZW1wdHlTdGF0ZVRleHQgPSAn5pqC5peg5Y+v6YCJ6aG5JztcblxuICAgIHByaXZhdGUgcHJlZml4Q2xzID0gJ3RoeS1jYXNjYWRlcic7XG5cbiAgICBwcml2YXRlIG1lbnVDbGFzc05hbWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgY29sdW1uQ2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9tZW51Q29sdW1uQ2xzOiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX21lbnVDbHM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuXG4gICAgcHJpdmF0ZSBfbGFiZWxDbHM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuXG4gICAgcHJpdmF0ZSBsYWJlbFJlbmRlclRwbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICBwdWJsaWMgcG9zaXRpb25zOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW107XG5cbiAgICBnZXQgc2VsZWN0ZWQoKTogU2VsZWN0T3B0aW9uQmFzZSB8IFNlbGVjdE9wdGlvbkJhc2VbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeU11bHRpcGxlID8gdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQgOiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc011bHRpcGxlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbWVudU1pbldpZHRoID0gMTIyO1xuXG4gICAgcHJpdmF0ZSBzZWFyY2hUZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuXG4gICAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRMaXN0KCk6IFRoeUNhc2NhZGVyU2VhcmNoT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VhcmNoUmVzdWx0TGlzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTaG93U2VhcmNoUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOino+WGs+aQnOe0oiblpJrpgInnmoTmg4XlhrXkuIvvvIzngrnlh7vmkJzntKLpobnkvJrlr7zoh7QgcGFuZWwg6Zeq54OBXG4gICAgICog55Sx5LqO54K55Ye75ZCO77yMdGh5U2VsZWN0ZWRPcHRpb25z5Y+Y5YyW77yM5a+86Ie0IHRoeVNlbGVjdENvbnRyb2xcbiAgICAgKiDlj4jkvJrop6blj5Egc2VhcmNoRmlsdGVyIOWHveaVsO+8jOWNsyByZXNldFNlYXJjaCDkvJrmiafooYxcbiAgICAgKiDkvJrlr7zoh7TmgaLlpI3nuqfogZTnirbmgIHlho3lj5jkuLrmkJzntKLnirbmgIFcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzU2VsZWN0aW5nU2VhcmNoU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBnZXQgaXNMb2FkaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2U/LmlzTG9hZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jb2x1bW5zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWZ0ZXJDaGFuZ2VGbjogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgcmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgICAgICB0aGlzLnNldE1lbnVDb2x1bW5DbGFzcygpO1xuICAgICAgICB0aGlzLnNldExhYmVsQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5pbml0UG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5pbml0U2VhcmNoKCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsYWJlbFByb3BlcnR5OiB0aGlzLnRoeUxhYmVsUHJvcGVydHksXG4gICAgICAgICAgICB2YWx1ZVByb3BlcnR5OiB0aGlzLnRoeVZhbHVlUHJvcGVydHksXG4gICAgICAgICAgICBpc011bHRpcGxlOiB0aGlzLmlzTXVsdGlwbGUsXG4gICAgICAgICAgICBpc09ubHlTZWxlY3RMZWFmOiB0aGlzLnRoeUlzT25seVNlbGVjdExlYWYsXG4gICAgICAgICAgICBpc0xhYmVsUmVuZGVyVGVtcGxhdGU6IHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlLFxuICAgICAgICAgICAgbG9hZERhdGE6IHRoaXMudGh5TG9hZERhdGFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0Q2FzY2FkZXJPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmNhc2NhZGVyVmFsdWVDaGFuZ2UoKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuaXNWYWx1ZUVxdWFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKG9wdGlvbnMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmlzU2VsZWN0aW9uTW9kZWxFbXB0eSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoeUNsZWFyLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50aHlTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMudGh5Q2hhbmdlLmVtaXQob3B0aW9ucy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWZ0ZXJDaGFuZ2VGbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyQ2hhbmdlRm4oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlckNoYW5nZUZuID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNsaWNrRGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgIC5jbGlja2VkKDApXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMubWVudT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVudVZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50aHlBdXRvRXhwYW5kKSB7XG4gICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RoeUlzT25seVNlbGVjdExlYWYnXSkge1xuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0Q2FzY2FkZXJPcHRpb25zKHsgaXNPbmx5U2VsZWN0TGVhZjogY2hhbmdlc1sndGh5SXNPbmx5U2VsZWN0TGVhZiddLmN1cnJlbnRWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBjYXNjYWRlclBvc2l0aW9uOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10gPSBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYXNjYWRlclBvc2l0aW9uO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS53cml0ZUNhc2NhZGVyVmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHBvc2l0aW9uQ2hhbmdlKHBvc2l0aW9uOiBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBwb3NpdGlvbi5jb25uZWN0aW9uUGFpci5vcmlnaW5ZID09PSAnYm90dG9tJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgIGlmICh0aGlzLmRyb3BEb3duUG9zaXRpb24gIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duUG9zaXRpb24gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0FjdGl2YXRlZE9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pc0FjdGl2YXRlZE9wdGlvbihvcHRpb24sIGluZGV4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNIYWxmU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaXNIYWxmU2VsZWN0ZWRPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaXNTZWxlY3RlZE9wdGlvbihvcHRpb24sIGluZGV4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5LnBvc2l0aW9uQ2hhbmdlLnBpcGUodGFrZSgxKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxBY3RpdmVFbGVtZW50SW50b1ZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxBY3RpdmVFbGVtZW50SW50b1ZpZXcoKSB7XG4gICAgICAgIGlmICghaXNFbXB0eSh0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWxlY3RlZE9wdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVPcHRpb25zID0gdGhpcy5jYXNjYWRlck9wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndGh5LWNhc2NhZGVyLW1lbnUtaXRlbS1hY3RpdmUnKSlcbiAgICAgICAgICAgICAgICAvLyBmb3IgbXVsdGlwbGUgbW9kZVxuICAgICAgICAgICAgICAgIC5zbGljZSgtdGhpcy5jYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMubGVuZ3RoKTtcblxuICAgICAgICAgICAgdGhpcy5jYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPD0gYWN0aXZlT3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIFNjcm9sbFRvU2VydmljZS5zY3JvbGxUb0VsZW1lbnQoYWN0aXZlT3B0aW9uc1tpbmRleF0ubmF0aXZlRWxlbWVudCwgaXRlbS5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1lbnVWaXNpYmxlKG1lbnVWaXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVWaXNpYmxlICE9PSBtZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51VmlzaWJsZSA9IG1lbnVWaXNpYmxlO1xuXG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pbml0QWN0aXZhdGVkT3B0aW9ucyh0aGlzLm1lbnVWaXNpYmxlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclJlY3QgPSB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQobWVudVZpc2libGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51Q2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51Q2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWVudUNsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51Q2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51c2BdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51cy1oaWRkZW5gXTogIXRoaXMubWVudVZpc2libGUsXG4gICAgICAgICAgICBbYCR7dGhpcy50aHlNZW51Q2xhc3NOYW1lfWBdOiB0aGlzLnRoeU1lbnVDbGFzc05hbWUsXG4gICAgICAgICAgICBbYHctMTAwYF06IHRoaXMuY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVDb2x1bW5DbHMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVDb2x1bW5DbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNZW51Q29sdW1uQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVDb2x1bW5DbHMgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1lbnVgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnRoeUNvbHVtbkNsYXNzTmFtZX1gXTogdGhpcy50aHlDb2x1bW5DbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsQ2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbENscztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExhYmVsQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhYmVsQ2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItbGFiZWxgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tc2hvdy1zZWFyY2hgXTogZmFsc2UsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWZvY3VzZWRgXTogZmFsc2UsXG4gICAgICAgICAgICAndGV4dC10cnVuY2F0ZSc6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENsYXNzTWFwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc31gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LSR7dGhpcy50aHlTaXplfWBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItZGlzYWJsZWRgXTogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLW9wZW5gXTogdGhpcy5tZW51VmlzaWJsZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzc0J5TWFwKGNsYXNzTWFwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ2xpY2tUcmlnZ2VyQWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGh5VHJpZ2dlckFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdjbGljayc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJpZ2dlckFjdGlvbi5pbmRleE9mKCdjbGljaycpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSG92ZXJUcmlnZ2VyQWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGh5VHJpZ2dlckFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdob3Zlcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJpZ2dlckFjdGlvbi5pbmRleE9mKCdob3ZlcicpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSG92ZXJFeHBhbmRUcmlnZ2VyQWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGh5RXhwYW5kVHJpZ2dlckFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24gPT09ICdob3Zlcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGh5RXhwYW5kVHJpZ2dlckFjdGlvbi5pbmRleE9mKCdob3ZlcicpICE9PSAtMTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIHRvZ2dsZUNsaWNrKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0NsaWNrVHJpZ2dlckFjdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKCF0aGlzLm1lbnVWaXNpYmxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVNb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmlzSG92ZXJUcmlnZ2VyQWN0aW9uKCkgfHwgdGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSh0cnVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgdG9nZ2xlTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5pc0hvdmVyVHJpZ2dlckFjdGlvbigpIHx8ICF0aGlzLm1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaG9zdEVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG1vdXNlVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaG9zdEVsLmNvbnRhaW5zKG1vdXNlVGFyZ2V0KSB8fFxuICAgICAgICAgICAgbW91c2VUYXJnZXQ/LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktcGFuZScpIHx8XG4gICAgICAgICAgICBtb3VzZVRhcmdldD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjZGstb3ZlcmxheS1iYWNrZHJvcCcpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsaWNrT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCB8IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2xpY2tPcHRpb24ob3B0aW9uLCBpbmRleCwgZXZlbnQsIHRoaXMuc2VsZWN0T3B0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VvdmVyT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uICYmIG9wdGlvbi5kaXNhYmxlZCAmJiAhdGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNIb3ZlckV4cGFuZFRyaWdnZXJBY3Rpb24oKSAmJiAhKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQgJiYgdGhpcy5pc011bHRpcGxlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKG9wdGlvbiwgaW5kZXgsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoZXZlbnQ/OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIFRhYiDogZrnhKblkI7oh6rliqjogZrnhKbliLAgaW5wdXQg6L6T5YWl5qGG77yM5q2k5YiG5pSv5LiL55u05o6l6L+U5Zue77yM5peg6ZyA6Kem5Y+RIG9uVG91Y2hlZEZuXG4gICAgICAgIGlmIChlbGVtZW50TWF0Y2hDbG9zZXN0KGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJy50aHktY2FzY2FkZXItbWVudXMnLCAndGh5LWNhc2NhZGVyJ10pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cblxuICAgIG9uRm9jdXMoZXZlbnQ/OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGlmICghZWxlbWVudE1hdGNoQ2xvc2VzdChldmVudD8ucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCwgWycudGh5LWNhc2NhZGVyLW1lbnVzJywgJ3RoeS1jYXNjYWRlciddKSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgICAgIGlucHV0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlTWVudSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dTZWFyY2hQYW5lbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VhcmNoUmVzdWx0TGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFjdGl2ZU9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBzZWxlY3Q6IGJvb2xlYW4sIGxvYWRDaGlsZHJlbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0QWN0aXZlT3B0aW9uKG9wdGlvbiwgaW5kZXgsIHNlbGVjdCwgbG9hZENoaWxkcmVuLCB0aGlzLnNlbGVjdE9wdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RPcHRpb24gPSAob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoKG9wdGlvbi5pc0xlYWYgfHwgIXRoaXMudGh5SXNPbmx5U2VsZWN0TGVhZikgJiYgIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJDaGFuZ2VGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGh5U2VsZWN0LmVtaXQoeyBvcHRpb24sIGluZGV4IH0pO1xuICAgICAgICBjb25zdCBpc09wdGlvbkNhblNlbGVjdCA9IHRoaXMudGh5Q2hhbmdlT25TZWxlY3QgJiYgIXRoaXMuaXNNdWx0aXBsZTtcbiAgICAgICAgaWYgKG9wdGlvbi5pc0xlYWYgfHwgIXRoaXMudGh5SXNPbmx5U2VsZWN0TGVhZiB8fCBpc09wdGlvbkNhblNlbGVjdCB8fCB0aGlzLnNob3VsZFBlcmZvcm1TZWxlY3Rpb24ob3B0aW9uLCBpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlbGVjdE9wdGlvbihvcHRpb24sIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwdWJsaWMgcmVtb3ZlU2VsZWN0ZWRJdGVtKGV2ZW50OiB7IGl0ZW06IFNlbGVjdE9wdGlvbkJhc2U7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICBldmVudC4kZXZlbnRPcmlnaW4uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnJlbW92ZVNlbGVjdGVkSXRlbShldmVudD8uaXRlbSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRQZXJmb3JtU2VsZWN0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGxldmVsOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnRoeUNoYW5nZU9uID09PSAnZnVuY3Rpb24nID8gdGhpcy50aHlDaGFuZ2VPbihvcHRpb24sIGxldmVsKSA9PT0gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWZ0ZXJDaGFuZ2VGbiA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IHN0cmluZyxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB0aHlDbGlja0Rpc3BhdGNoZXI6IFRoeUNsaWNrRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIHRoeUNhc2NhZGVyU2VydmljZTogVGh5Q2FzY2FkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBUaHlDYXNjYWRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gaXRlbT8udmFsdWUgfHwgaXRlbT8uX2lkIHx8IGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2hGaWx0ZXIoc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghc2VhcmNoVGV4dCAmJiAhdGhpcy5pc1NlbGVjdGluZ1NlYXJjaFN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0JC5uZXh0KHNlYXJjaFRleHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKHRleHQgPT4gdGV4dCAhPT0gJycpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHNlYXJjaFRleHQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcblxuICAgICAgICAgICAgICAgIC8vIGxvY2FsIHNlYXJjaFxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5Mb2NhbChzZWFyY2hUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1NlYXJjaFBhbmVsID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoSW5Mb2NhbChzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VhcmNoSW5Mb2NhbChzZWFyY2hUZXh0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1NlYXJjaFBhbmVsID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnJlc2V0U2VhcmNoKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsQWN0aXZlRWxlbWVudEludG9WaWV3KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdFNlYXJjaFJlc3VsdChzZWxlY3RPcHRpb25EYXRhOiBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHRoeVJvd1ZhbHVlOiBzZWxlY3RlZE9wdGlvbnMgfSA9IHNlbGVjdE9wdGlvbkRhdGE7XG4gICAgICAgIGlmIChzZWxlY3RPcHRpb25EYXRhLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zLmZvckVhY2goKGl0ZW06IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZU9wdGlvbihpdGVtLCBpbmRleCwgaW5kZXggPT09IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RpbmdTZWFyY2hTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICBzZWxlY3RPcHRpb25EYXRhLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpblNlYXJjaFJlc3VsdExpc3QgPSB0aGlzLnNlYXJjaFJlc3VsdExpc3Q7XG4gICAgICAgICAgICAvLyDkv53mjIHmkJzntKLpgInpoblcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93U2VhcmNoUGFuZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaFJlc3VsdExpc3QgPSBvcmlnaW5TZWFyY2hSZXN1bHRMaXN0O1xuICAgICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RpbmdTZWFyY2hTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZSA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXNpemUub2JzZXJ2ZSh0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclJlY3QgPSB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheSAmJiB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Lm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjZGtPdmVybGF5T3JpZ2luICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCIgI3RyaWdnZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHlTaG93SW5wdXRcIj5cbiAgICA8ZGl2XG4gICAgICB0aHlTZWxlY3RDb250cm9sXG4gICAgICBbdGh5U2hvd1NlYXJjaF09XCJ0aHlTaG93U2VhcmNoXCJcbiAgICAgIFt0aHlTaXplXT1cInRoeVNpemVcIlxuICAgICAgW3RoeUFsbG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICBbdGh5U2VsZWN0ZWRPcHRpb25zXT1cInNlbGVjdGVkXCJcbiAgICAgIFt0aHlNYXhUYWdDb3VudF09XCJ0aHlNYXhUYWdDb3VudFwiXG4gICAgICAodGh5T25SZW1vdmUpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudClcIlxuICAgICAgKHRoeU9uQ2xlYXIpPVwiY2xlYXJTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAodGh5T25CbHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICh0aHlPblNlYXJjaCk9XCJzZWFyY2hGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICBbdGh5RGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3RoeUlzTXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgW3RoeVBhbmVsT3BlbmVkXT1cIm1lbnVWaXNpYmxlXCJcbiAgICAgIFt0aHlQbGFjZWhvbGRlcl09XCJ0aHlQbGFjZWhvbGRlclwiXG4gICAgICBbY3VzdG9tRGlzcGxheVRlbXBsYXRlXT1cImN1c3RvbURpc3BsYXlUZW1wbGF0ZVwiXG4gICAgICBbdGh5UHJlc2V0XT1cInRoeVByZXNldFwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21EaXNwbGF5VGVtcGxhdGUgbGV0LXZhbHVlPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJsYWJlbENsc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMYWJlbFJlbmRlclRlbXBsYXRlOyBlbHNlIGxhYmVsVGVtcGxhdGVcIj57eyB2YWx1ZS5sYWJlbFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xhYmVsVGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGh5TGFiZWxSZW5kZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwidmFsdWUubGFiZWxSZW5kZXJDb250ZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRoeUhhc0JhY2tkcm9wXCJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJ0aHktY2FzY2FkZXItYmFja2Ryb3BcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJwb3NpdGlvbnNcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoXT1cIm1lbnVNaW5XaWR0aFwiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5Pbj1cIi50aHktY2FzY2FkZXItbWVudXNcIlxuICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZU1lbnUoKVwiXG4gIChkZXRhY2gpPVwiY2xvc2VNZW51KClcIlxuICAoYXR0YWNoKT1cImF0dGFjaGVkKClcIlxuICAocG9zaXRpb25DaGFuZ2UpPVwicG9zaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJtZW51VmlzaWJsZVwiPlxuICA8ZGl2XG4gICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICNtZW51XG4gICAgW25nQ2xhc3NdPVwibWVudUNsc1wiXG4gICAgW25nU3R5bGVdPVwidGh5TWVudVN0eWxlXCJcbiAgICAobW91c2VsZWF2ZSk9XCJ0b2dnbGVNb3VzZUxlYXZlKCRldmVudClcIlxuICAgIFtAc2NhbGVZTW90aW9uXT1cIidlbnRlcidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2hvd1NlYXJjaFBhbmVsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1ucy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgPHVsICNjYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMgKm5nRm9yPVwibGV0IG9wdGlvbnMgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cIm1lbnVDb2x1bW5DbHNcIj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgICNjYXNjYWRlck9wdGlvbnNcbiAgICAgICAgICAgIHRoeS1jYXNjYWRlci1vcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgIFtvcHRpb25dPVwib3B0aW9uXCJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgICAgICAgICBbaXNPbmx5U2VsZWN0TGVhZl09XCJ0aHlJc09ubHlTZWxlY3RMZWFmXCJcbiAgICAgICAgICAgIFtsYWJlbFByb3BlcnR5XT1cInRoeUxhYmVsUHJvcGVydHlcIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJpc0FjdGl2YXRlZE9wdGlvbihvcHRpb24sIGkpXCJcbiAgICAgICAgICAgIFtoYWxmU2VsZWN0ZWRdPVwiaXNIYWxmU2VsZWN0ZWRPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZE9wdGlvbihvcHRpb24sIGkpXCJcbiAgICAgICAgICAgICh0b2dnbGVTZWxlY3RDaGFuZ2UpPVwiY2xpY2tPcHRpb24ob3B0aW9uLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja09wdGlvbihvcHRpb24sIGksICRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZW92ZXJPcHRpb24ob3B0aW9uLCBpLCAkZXZlbnQpXCI+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3dTZWFyY2hQYW5lbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFJlc3VsdExpc3QubGVuZ3RoOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwidGh5LWNhc2NhZGVyLXNlYXJjaC1saXN0IHB5LTNcIj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgIHRoeS1jYXNjYWRlci1zZWFyY2gtb3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWFyY2hSZXN1bHRMaXN0XCJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgICAgICAgICBbaXNPbmx5U2VsZWN0TGVhZl09XCJ0aHlJc09ubHlTZWxlY3RMZWFmXCJcbiAgICAgICAgICAgIFtvcHRpb25dPVwiaXRlbVwiXG4gICAgICAgICAgICBbYWN0aXZlXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgKHRvZ2dsZVNlbGVjdENoYW5nZSk9XCJzZWxlY3RTZWFyY2hSZXN1bHQoJGV2ZW50KVwiPjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XG4gIDxkaXYgY2xhc3M9XCJ0aHktY2FzY2FkZXItZW1wdHktY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyAnd2lkdGgucHgnOiB0cmlnZ2VyUmVjdD8ud2lkdGggfVwiPlxuICAgIDx0aHktZW1wdHkgY2xhc3M9XCJ0aHktc2VsZWN0LWVtcHR5LWNvbnRlbnRcIiB0aHlTaXplPVwic21cIiBbdGh5TWVzc2FnZV09XCJlbXB0eVN0YXRlVGV4dFwiPjwvdGh5LWVtcHR5PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -10,7 +10,7 @@ import { ThyInputModule } from 'ngx-tethys/input';
10
10
  import { ThySelectCommonModule } from 'ngx-tethys/shared';
11
11
  import { ThyCascaderOptionComponent } from './cascader-li.component';
12
12
  import { ThyCascaderSearchOptionComponent } from './cascader-search-option.component';
13
- import { ThyCascaderComponent } from './cascader.component';
13
+ import { ThyCascader } from './cascader.component';
14
14
  import * as i0 from "@angular/core";
15
15
  export class ThyCascaderModule {
16
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyCascaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -23,9 +23,9 @@ export class ThyCascaderModule {
23
23
  ThySelectCommonModule,
24
24
  ThyCheckboxModule,
25
25
  ThyFlexibleTextModule,
26
- ThyCascaderComponent,
26
+ ThyCascader,
27
27
  ThyCascaderOptionComponent,
28
- ThyCascaderSearchOptionComponent], exports: [ThyCascaderComponent] }); }
28
+ ThyCascaderSearchOptionComponent], exports: [ThyCascader] }); }
29
29
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyCascaderModule, imports: [CommonModule,
30
30
  FormsModule,
31
31
  OverlayModule,
@@ -35,7 +35,7 @@ export class ThyCascaderModule {
35
35
  ThySelectCommonModule,
36
36
  ThyCheckboxModule,
37
37
  ThyFlexibleTextModule,
38
- ThyCascaderComponent,
38
+ ThyCascader,
39
39
  ThyCascaderOptionComponent,
40
40
  ThyCascaderSearchOptionComponent] }); }
41
41
  }
@@ -52,11 +52,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
52
52
  ThySelectCommonModule,
53
53
  ThyCheckboxModule,
54
54
  ThyFlexibleTextModule,
55
- ThyCascaderComponent,
55
+ ThyCascader,
56
56
  ThyCascaderOptionComponent,
57
57
  ThyCascaderSearchOptionComponent
58
58
  ],
59
- exports: [ThyCascaderComponent]
59
+ exports: [ThyCascader]
60
60
  }]
61
61
  }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQW1CNUQsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsWUFmdEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxhQUFhO1lBQ2IsY0FBYztZQUNkLGFBQWE7WUFDYixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLDBCQUEwQjtZQUMxQixnQ0FBZ0MsYUFFMUIsb0JBQW9COytHQUVyQixpQkFBaUIsWUFmdEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxhQUFhO1lBQ2IsY0FBYztZQUNkLGFBQWE7WUFDYixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLDBCQUEwQjtZQUMxQixnQ0FBZ0M7OzJGQUkzQixpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIsZ0NBQWdDO3FCQUNuQztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9jaGVja2JveCc7XG5pbXBvcnQgeyBUaHlFbXB0eU1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0TW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IFRoeUljb25Nb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW5wdXRNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2lucHV0JztcbmltcG9ydCB7IFRoeVNlbGVjdENvbW1vbk1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYXNjYWRlci1saS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2Nhc2NhZGVyLXNlYXJjaC1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUNhc2NhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jYXNjYWRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgT3ZlcmxheU1vZHVsZSxcbiAgICAgICAgVGh5SW5wdXRNb2R1bGUsXG4gICAgICAgIFRoeUljb25Nb2R1bGUsXG4gICAgICAgIFRoeUVtcHR5TW9kdWxlLFxuICAgICAgICBUaHlTZWxlY3RDb21tb25Nb2R1bGUsXG4gICAgICAgIFRoeUNoZWNrYm94TW9kdWxlLFxuICAgICAgICBUaHlGbGV4aWJsZVRleHRNb2R1bGUsXG4gICAgICAgIFRoeUNhc2NhZGVyQ29tcG9uZW50LFxuICAgICAgICBUaHlDYXNjYWRlck9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb25Db21wb25lbnRcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtUaHlDYXNjYWRlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5Q2FzY2FkZXJNb2R1bGUge31cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFtQm5ELE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLFlBZnRCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxhQUFhO1lBQ2IsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLFdBQVc7WUFDWCwwQkFBMEI7WUFDMUIsZ0NBQWdDLGFBRTFCLFdBQVc7K0dBRVosaUJBQWlCLFlBZnRCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxhQUFhO1lBQ2IsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLFdBQVc7WUFDWCwwQkFBMEI7WUFDMUIsZ0NBQWdDOzsyRkFJM0IsaUJBQWlCO2tCQWpCN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsV0FBVzt3QkFDWCwwQkFBMEI7d0JBQzFCLGdDQUFnQztxQkFDbkM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5Q2hlY2tib3hNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2NoZWNrYm94JztcbmltcG9ydCB7IFRoeUVtcHR5TW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9lbXB0eSc7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHRNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgVGh5SWNvbk1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlJbnB1dE1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvaW5wdXQnO1xuaW1wb3J0IHsgVGh5U2VsZWN0Q29tbW9uTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXJPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2Nhc2NhZGVyLWxpLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY2FzY2FkZXItc2VhcmNoLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXIgfSBmcm9tICcuL2Nhc2NhZGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBPdmVybGF5TW9kdWxlLFxuICAgICAgICBUaHlJbnB1dE1vZHVsZSxcbiAgICAgICAgVGh5SWNvbk1vZHVsZSxcbiAgICAgICAgVGh5RW1wdHlNb2R1bGUsXG4gICAgICAgIFRoeVNlbGVjdENvbW1vbk1vZHVsZSxcbiAgICAgICAgVGh5Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIFRoeUZsZXhpYmxlVGV4dE1vZHVsZSxcbiAgICAgICAgVGh5Q2FzY2FkZXIsXG4gICAgICAgIFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1RoeUNhc2NhZGVyXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlDYXNjYWRlck1vZHVsZSB7fVxuIl19