ngx-tethys 18.0.0-next.0 → 18.0.0-next.2

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 (404) hide show
  1. package/CHANGELOG.md +161 -1
  2. package/action/action.component.d.ts +3 -3
  3. package/alert/alert.component.d.ts +1 -1
  4. package/anchor/anchor.component.d.ts +3 -1
  5. package/autocomplete/autocomplete.component.d.ts +1 -1
  6. package/autocomplete/autocomplete.trigger.directive.d.ts +1 -1
  7. package/avatar/avatar.component.d.ts +4 -4
  8. package/badge/badge.component.d.ts +3 -3
  9. package/breadcrumb/breadcrumb.component.d.ts +30 -2
  10. package/breadcrumb/module.d.ts +3 -1
  11. package/breadcrumb/styles/breadcrumb.scss +8 -0
  12. package/button/button-icon.component.d.ts +2 -2
  13. package/button/button.component.d.ts +2 -2
  14. package/button/styles/button.scss +5 -5
  15. package/card/card.component.d.ts +3 -3
  16. package/card/content.component.d.ts +1 -1
  17. package/carousel/carousel.component.d.ts +4 -4
  18. package/cascader/cascader-li.component.d.ts +5 -5
  19. package/cascader/cascader-search-option.component.d.ts +3 -3
  20. package/cascader/cascader.component.d.ts +8 -8
  21. package/checkbox/checkbox.component.d.ts +1 -1
  22. package/collapse/collapse-item.component.d.ts +2 -2
  23. package/collapse/collapse.component.d.ts +1 -1
  24. package/color-picker/color-picker-panel.component.d.ts +1 -1
  25. package/color-picker/color-picker.component.d.ts +3 -3
  26. package/copy/copy.directive.d.ts +1 -1
  27. package/core/behaviors/decorators.d.ts +1 -1
  28. package/core/overlay/abstract-overlay.config.d.ts +6 -0
  29. package/date-picker/abstract-picker.component.d.ts +15 -8
  30. package/date-picker/abstract-picker.directive.d.ts +3 -3
  31. package/date-picker/base-picker.component.d.ts +2 -2
  32. package/date-picker/date-picker.config.d.ts +1 -0
  33. package/date-picker/date-picker.service.d.ts +1 -0
  34. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -1
  35. package/date-picker/lib/popups/date-popup.component.d.ts +2 -1
  36. package/date-picker/lib/popups/inner-popup.component.d.ts +1 -1
  37. package/date-picker/picker.component.d.ts +1 -1
  38. package/date-picker/picker.util.d.ts +2 -0
  39. package/date-range/date-range.component.d.ts +8 -2
  40. package/dialog/body/dialog-body.component.d.ts +1 -1
  41. package/dialog/footer/dialog-footer.component.d.ts +1 -1
  42. package/dialog/header/dialog-header.component.d.ts +1 -1
  43. package/divider/divider.component.d.ts +2 -2
  44. package/drag-drop/drag-handle.directive.d.ts +1 -1
  45. package/drag-drop/drag.directive.d.ts +1 -1
  46. package/drag-drop/drop-container.directive.d.ts +1 -1
  47. package/dropdown/dropdown-menu-item.directive.d.ts +2 -2
  48. package/dropdown/dropdown-menu.component.d.ts +1 -1
  49. package/dropdown/dropdown.directive.d.ts +1 -1
  50. package/empty/empty.component.d.ts +1 -1
  51. package/esm2022/action/action.component.mjs +7 -6
  52. package/esm2022/alert/alert.component.mjs +5 -5
  53. package/esm2022/anchor/anchor.component.mjs +5 -5
  54. package/esm2022/autocomplete/autocomplete.component.mjs +5 -4
  55. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +5 -5
  56. package/esm2022/avatar/avatar.component.mjs +8 -8
  57. package/esm2022/badge/badge.component.mjs +7 -6
  58. package/esm2022/breadcrumb/breadcrumb.component.mjs +73 -32
  59. package/esm2022/breadcrumb/module.mjs +6 -4
  60. package/esm2022/button/button-icon.component.mjs +6 -5
  61. package/esm2022/button/button.component.mjs +6 -6
  62. package/esm2022/card/card.component.mjs +7 -6
  63. package/esm2022/card/content.component.mjs +5 -4
  64. package/esm2022/carousel/carousel.component.mjs +8 -7
  65. package/esm2022/cascader/cascader-li.component.mjs +9 -8
  66. package/esm2022/cascader/cascader-search-option.component.mjs +7 -6
  67. package/esm2022/cascader/cascader.component.mjs +19 -12
  68. package/esm2022/checkbox/checkbox.component.mjs +5 -4
  69. package/esm2022/collapse/collapse-item.component.mjs +6 -6
  70. package/esm2022/collapse/collapse.component.mjs +5 -4
  71. package/esm2022/color-picker/color-picker-panel.component.mjs +5 -4
  72. package/esm2022/color-picker/color-picker.component.mjs +7 -6
  73. package/esm2022/color-picker/parts/inputs/inputs.component.mjs +1 -1
  74. package/esm2022/copy/copy.directive.mjs +5 -4
  75. package/esm2022/core/behaviors/decorators.mjs +2 -2
  76. package/esm2022/core/overlay/abstract-overlay.config.mjs +7 -1
  77. package/esm2022/date-picker/abstract-picker.component.mjs +28 -17
  78. package/esm2022/date-picker/abstract-picker.directive.mjs +8 -7
  79. package/esm2022/date-picker/base-picker.component.mjs +5 -5
  80. package/esm2022/date-picker/date-picker.component.mjs +3 -3
  81. package/esm2022/date-picker/date-picker.config.mjs +2 -1
  82. package/esm2022/date-picker/date-picker.service.mjs +4 -1
  83. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -5
  84. package/esm2022/date-picker/lib/date/date-header.component.mjs +4 -4
  85. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +4 -4
  86. package/esm2022/date-picker/lib/month/month-header.component.mjs +4 -4
  87. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +7 -4
  88. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +5 -5
  89. package/esm2022/date-picker/lib/year/year-header.component.mjs +4 -4
  90. package/esm2022/date-picker/month-picker.component.mjs +3 -3
  91. package/esm2022/date-picker/picker.component.mjs +5 -5
  92. package/esm2022/date-picker/picker.util.mjs +14 -2
  93. package/esm2022/date-picker/quarter-picker.component.mjs +3 -3
  94. package/esm2022/date-picker/range-picker.component.mjs +3 -3
  95. package/esm2022/date-picker/week-picker.component.mjs +3 -3
  96. package/esm2022/date-picker/year-picker.component.mjs +3 -3
  97. package/esm2022/date-range/date-range.component.mjs +6 -5
  98. package/esm2022/dialog/body/dialog-body.component.mjs +5 -4
  99. package/esm2022/dialog/footer/dialog-footer.component.mjs +5 -4
  100. package/esm2022/dialog/header/dialog-header.component.mjs +5 -4
  101. package/esm2022/divider/divider.component.mjs +6 -5
  102. package/esm2022/drag-drop/drag-handle.directive.mjs +5 -4
  103. package/esm2022/drag-drop/drag.directive.mjs +5 -4
  104. package/esm2022/drag-drop/drop-container.directive.mjs +5 -4
  105. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +7 -6
  106. package/esm2022/dropdown/dropdown-menu.component.mjs +5 -4
  107. package/esm2022/dropdown/dropdown.directive.mjs +5 -5
  108. package/esm2022/empty/empty.component.mjs +5 -4
  109. package/esm2022/form/form-group-error/form-group-error.component.mjs +5 -4
  110. package/esm2022/form/form-group-label.directive.mjs +5 -4
  111. package/esm2022/form/form-group.component.mjs +7 -6
  112. package/esm2022/icon/icon.component.mjs +6 -5
  113. package/esm2022/image/image.class.mjs +1 -1
  114. package/esm2022/image/image.directive.mjs +6 -5
  115. package/esm2022/image/index.mjs +6 -5
  116. package/esm2022/image/preview/image-preview.component.mjs +21 -13
  117. package/esm2022/input/input-search.component.mjs +5 -4
  118. package/esm2022/input/input.component.mjs +6 -5
  119. package/esm2022/input-number/input-number.component.mjs +14 -7
  120. package/esm2022/layout/header.component.mjs +7 -6
  121. package/esm2022/layout/sidebar-header.component.mjs +5 -4
  122. package/esm2022/layout/sidebar.component.mjs +12 -11
  123. package/esm2022/list/list.component.mjs +5 -4
  124. package/esm2022/list/selection/selection-list.mjs +7 -7
  125. package/esm2022/loading/loading.component.mjs +6 -5
  126. package/esm2022/mention/mention.directive.mjs +3 -3
  127. package/esm2022/menu/group/menu-group.component.mjs +10 -9
  128. package/esm2022/menu/item/action/menu-item-action.component.mjs +17 -7
  129. package/esm2022/menu/item/name/menu-item-name.component.mjs +5 -4
  130. package/esm2022/menu/menu.component.mjs +5 -4
  131. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +5 -4
  132. package/esm2022/nav/nav-ink-bar.directive.mjs +6 -5
  133. package/esm2022/nav/nav-item.directive.mjs +7 -6
  134. package/esm2022/nav/nav.component.mjs +18 -7
  135. package/esm2022/pagination/pagination.class.mjs +1 -1
  136. package/esm2022/pagination/pagination.component.mjs +22 -10
  137. package/esm2022/pagination/pagination.config.mjs +3 -2
  138. package/esm2022/popover/popover.directive.mjs +6 -5
  139. package/esm2022/popover/popover.service.mjs +2 -1
  140. package/esm2022/property/property-item.component.mjs +6 -5
  141. package/esm2022/property-operation/property-operation.component.mjs +9 -9
  142. package/esm2022/radio/group/radio-group.component.mjs +5 -4
  143. package/esm2022/rate/rate-item.component.mjs +5 -4
  144. package/esm2022/rate/rate.component.mjs +7 -7
  145. package/esm2022/resizable/resizable.directive.mjs +7 -6
  146. package/esm2022/resizable/resize-handle.component.mjs +5 -4
  147. package/esm2022/resizable/resize-handles.component.mjs +5 -4
  148. package/esm2022/segment/segment-item.component.mjs +5 -5
  149. package/esm2022/segment/segment.component.mjs +5 -4
  150. package/esm2022/select/custom-select/custom-select.component.mjs +14 -14
  151. package/esm2022/select/native-select/native-select.component.mjs +5 -5
  152. package/esm2022/shared/base-form-check.component.mjs +6 -5
  153. package/esm2022/shared/directives/thy-autofocus.directive.mjs +6 -5
  154. package/esm2022/shared/directives/thy-scroll.directive.mjs +5 -4
  155. package/esm2022/shared/directives/thy-show.mjs +5 -4
  156. package/esm2022/shared/option/group/option-group.component.mjs +5 -4
  157. package/esm2022/shared/option/list-option/list-option.component.mjs +5 -4
  158. package/esm2022/shared/option/option.component.mjs +5 -5
  159. package/esm2022/shared/select/select-control/select-control.component.mjs +10 -10
  160. package/esm2022/skeleton/skeleton-circle.component.mjs +5 -5
  161. package/esm2022/skeleton/skeleton-rectangle.component.mjs +5 -5
  162. package/esm2022/skeleton/skeleton.component.mjs +5 -4
  163. package/esm2022/skeleton/stylized/bullet-list.component.mjs +5 -4
  164. package/esm2022/skeleton/stylized/list.component.mjs +5 -4
  165. package/esm2022/skeleton/stylized/paragraph.component.mjs +5 -4
  166. package/esm2022/slide/slide-body/slide-body-section.component.mjs +5 -4
  167. package/esm2022/slider/slider.component.mjs +6 -6
  168. package/esm2022/space/space.component.mjs +5 -4
  169. package/esm2022/stepper/step-header.component.mjs +6 -5
  170. package/esm2022/stepper/stepper.component.mjs +5 -4
  171. package/esm2022/switch/switch.component.mjs +6 -5
  172. package/esm2022/table/table-column.component.mjs +9 -9
  173. package/esm2022/table/table-skeleton.component.mjs +8 -7
  174. package/esm2022/table/table.component.mjs +19 -17
  175. package/esm2022/tabs/tab.component.mjs +5 -4
  176. package/esm2022/tabs/tabs.component.mjs +6 -6
  177. package/esm2022/tag/tag.component.mjs +5 -5
  178. package/esm2022/time-picker/time-picker-panel.component.mjs +6 -6
  179. package/esm2022/time-picker/time-picker.component.mjs +9 -9
  180. package/esm2022/timeline/timeline.component.mjs +5 -4
  181. package/esm2022/tooltip/tooltip.directive.mjs +6 -6
  182. package/esm2022/tree/tree-node.component.mjs +9 -8
  183. package/esm2022/tree/tree.component.mjs +32 -11
  184. package/esm2022/tree/tree.service.mjs +3 -3
  185. package/esm2022/tree-select/tree-select.component.mjs +20 -18
  186. package/esm2022/upload/file-select.component.mjs +24 -27
  187. package/esm2022/version.mjs +2 -2
  188. package/esm2022/vote/vote.component.mjs +7 -6
  189. package/esm2022/watermark/watermark.directive.mjs +5 -4
  190. package/fesm2022/ngx-tethys-action.mjs +6 -5
  191. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  192. package/fesm2022/ngx-tethys-alert.mjs +4 -4
  193. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  194. package/fesm2022/ngx-tethys-anchor.mjs +4 -4
  195. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  196. package/fesm2022/ngx-tethys-autocomplete.mjs +6 -6
  197. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  198. package/fesm2022/ngx-tethys-avatar.mjs +7 -7
  199. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  200. package/fesm2022/ngx-tethys-badge.mjs +6 -5
  201. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  202. package/fesm2022/ngx-tethys-breadcrumb.mjs +117 -77
  203. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  204. package/fesm2022/ngx-tethys-button.mjs +8 -8
  205. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  206. package/fesm2022/ngx-tethys-card.mjs +8 -7
  207. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  208. package/fesm2022/ngx-tethys-carousel.mjs +7 -6
  209. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  210. package/fesm2022/ngx-tethys-cascader.mjs +28 -21
  211. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  212. package/fesm2022/ngx-tethys-checkbox.mjs +4 -3
  213. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  214. package/fesm2022/ngx-tethys-collapse.mjs +7 -7
  215. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  216. package/fesm2022/ngx-tethys-color-picker.mjs +9 -8
  217. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  218. package/fesm2022/ngx-tethys-copy.mjs +4 -3
  219. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  220. package/fesm2022/ngx-tethys-core.mjs +7 -1
  221. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  222. package/fesm2022/ngx-tethys-date-picker.mjs +86 -57
  223. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  224. package/fesm2022/ngx-tethys-date-range.mjs +5 -4
  225. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  226. package/fesm2022/ngx-tethys-dialog.mjs +8 -7
  227. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  228. package/fesm2022/ngx-tethys-divider.mjs +5 -4
  229. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  230. package/fesm2022/ngx-tethys-drag-drop.mjs +8 -8
  231. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  232. package/fesm2022/ngx-tethys-dropdown.mjs +10 -10
  233. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  234. package/fesm2022/ngx-tethys-empty.mjs +4 -3
  235. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  236. package/fesm2022/ngx-tethys-form.mjs +10 -10
  237. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  238. package/fesm2022/ngx-tethys-icon.mjs +5 -5
  239. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  240. package/fesm2022/ngx-tethys-image.mjs +24 -16
  241. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  242. package/fesm2022/ngx-tethys-input-number.mjs +13 -6
  243. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  244. package/fesm2022/ngx-tethys-input.mjs +7 -6
  245. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  246. package/fesm2022/ngx-tethys-layout.mjs +17 -16
  247. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  248. package/fesm2022/ngx-tethys-list.mjs +8 -8
  249. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  250. package/fesm2022/ngx-tethys-loading.mjs +5 -4
  251. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  252. package/fesm2022/ngx-tethys-mention.mjs +2 -2
  253. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  254. package/fesm2022/ngx-tethys-menu.mjs +26 -16
  255. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  256. package/fesm2022/ngx-tethys-nav.mjs +26 -16
  257. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  258. package/fesm2022/ngx-tethys-pagination.mjs +23 -10
  259. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  260. package/fesm2022/ngx-tethys-popover.mjs +6 -5
  261. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  262. package/fesm2022/ngx-tethys-property-operation.mjs +8 -8
  263. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  264. package/fesm2022/ngx-tethys-property.mjs +5 -4
  265. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  266. package/fesm2022/ngx-tethys-radio.mjs +7 -6
  267. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  268. package/fesm2022/ngx-tethys-rate.mjs +8 -8
  269. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  270. package/fesm2022/ngx-tethys-resizable.mjs +10 -10
  271. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  272. package/fesm2022/ngx-tethys-segment.mjs +6 -6
  273. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  274. package/fesm2022/ngx-tethys-select.mjs +15 -15
  275. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  276. package/fesm2022/ngx-tethys-shared.mjs +25 -25
  277. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  278. package/fesm2022/ngx-tethys-skeleton.mjs +14 -14
  279. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  280. package/fesm2022/ngx-tethys-slide.mjs +4 -4
  281. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  282. package/fesm2022/ngx-tethys-slider.mjs +5 -5
  283. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  284. package/fesm2022/ngx-tethys-space.mjs +4 -3
  285. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  286. package/fesm2022/ngx-tethys-stepper.mjs +7 -6
  287. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  288. package/fesm2022/ngx-tethys-switch.mjs +5 -4
  289. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  290. package/fesm2022/ngx-tethys-table.mjs +29 -27
  291. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  292. package/fesm2022/ngx-tethys-tabs.mjs +7 -7
  293. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  294. package/fesm2022/ngx-tethys-tag.mjs +4 -4
  295. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  296. package/fesm2022/ngx-tethys-time-picker.mjs +11 -11
  297. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  298. package/fesm2022/ngx-tethys-timeline.mjs +4 -3
  299. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  300. package/fesm2022/ngx-tethys-tooltip.mjs +5 -5
  301. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  302. package/fesm2022/ngx-tethys-tree-select.mjs +14 -11
  303. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  304. package/fesm2022/ngx-tethys-tree.mjs +39 -18
  305. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  306. package/fesm2022/ngx-tethys-upload.mjs +23 -27
  307. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  308. package/fesm2022/ngx-tethys-vote.mjs +6 -5
  309. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  310. package/fesm2022/ngx-tethys-watermark.mjs +4 -3
  311. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  312. package/fesm2022/ngx-tethys.mjs +1 -1
  313. package/fesm2022/ngx-tethys.mjs.map +1 -1
  314. package/form/form-group-error/form-group-error.component.d.ts +1 -1
  315. package/form/form-group-label.directive.d.ts +1 -1
  316. package/form/form-group.component.d.ts +3 -3
  317. package/icon/icon.component.d.ts +2 -2
  318. package/image/image.class.d.ts +1 -1
  319. package/image/image.directive.d.ts +2 -2
  320. package/image/index.d.ts +5 -4
  321. package/image/preview/image-preview.component.d.ts +5 -5
  322. package/input/input-search.component.d.ts +1 -1
  323. package/input/input.component.d.ts +2 -2
  324. package/input/styles/input-group.scss +3 -0
  325. package/input-number/input-number.component.d.ts +10 -3
  326. package/layout/header.component.d.ts +3 -3
  327. package/layout/sidebar-header.component.d.ts +1 -1
  328. package/layout/sidebar.component.d.ts +7 -7
  329. package/list/list.component.d.ts +1 -1
  330. package/list/selection/selection-list.d.ts +3 -3
  331. package/loading/loading.component.d.ts +2 -2
  332. package/menu/group/menu-group.component.d.ts +6 -6
  333. package/menu/item/action/menu-item-action.component.d.ts +8 -3
  334. package/menu/item/name/menu-item-name.component.d.ts +1 -1
  335. package/menu/menu.component.d.ts +1 -1
  336. package/menu/styles/menu.scss +8 -0
  337. package/nav/icon-nav/icon-nav-link.directive.d.ts +1 -1
  338. package/nav/nav-ink-bar.directive.d.ts +2 -2
  339. package/nav/nav-item.directive.d.ts +3 -3
  340. package/nav/nav.component.d.ts +7 -5
  341. package/package.json +2 -2
  342. package/pagination/pagination.class.d.ts +4 -0
  343. package/pagination/pagination.component.d.ts +11 -6
  344. package/popover/popover.directive.d.ts +2 -2
  345. package/property/property-item.component.d.ts +4 -1
  346. package/property/styles/properties.scss +2 -0
  347. package/property-operation/property-operation.component.d.ts +5 -5
  348. package/radio/group/radio-group.component.d.ts +1 -1
  349. package/rate/rate-item.component.d.ts +1 -1
  350. package/rate/rate.component.d.ts +3 -3
  351. package/resizable/resizable.directive.d.ts +3 -3
  352. package/resizable/resize-handle.component.d.ts +1 -1
  353. package/resizable/resize-handles.component.d.ts +1 -1
  354. package/schematics/ng-update/update-18/complete.js +0 -10
  355. package/schematics/ng-update/update-18/index.spec.js +0 -73
  356. package/schematics/ng-update/update-18/update-data.js +4 -860
  357. package/schematics/version.d.ts +1 -1
  358. package/schematics/version.js +1 -1
  359. package/segment/segment-item.component.d.ts +1 -1
  360. package/segment/segment.component.d.ts +5 -1
  361. package/select/custom-select/custom-select.component.d.ts +10 -10
  362. package/select/native-select/native-select.component.d.ts +1 -1
  363. package/shared/base-form-check.component.d.ts +2 -2
  364. package/shared/directives/thy-autofocus.directive.d.ts +2 -2
  365. package/shared/directives/thy-scroll.directive.d.ts +1 -1
  366. package/shared/directives/thy-show.d.ts +1 -1
  367. package/shared/option/group/option-group.component.d.ts +1 -1
  368. package/shared/option/list-option/list-option.component.d.ts +1 -1
  369. package/shared/option/option.component.d.ts +1 -1
  370. package/shared/option/styles/select-dropdown.scss +1 -0
  371. package/shared/select/select-control/select-control.component.d.ts +6 -6
  372. package/skeleton/skeleton-circle.component.d.ts +1 -1
  373. package/skeleton/skeleton-rectangle.component.d.ts +1 -1
  374. package/skeleton/skeleton.component.d.ts +1 -1
  375. package/skeleton/stylized/bullet-list.component.d.ts +1 -1
  376. package/skeleton/stylized/list.component.d.ts +1 -1
  377. package/skeleton/stylized/paragraph.component.d.ts +1 -1
  378. package/slide/slide-body/slide-body-section.component.d.ts +1 -1
  379. package/slider/slider.component.d.ts +2 -2
  380. package/slider/slider.scss +12 -20
  381. package/space/space.component.d.ts +1 -1
  382. package/stepper/step-header.component.d.ts +2 -2
  383. package/stepper/stepper.component.d.ts +1 -1
  384. package/styles/modules/tables.scss +20 -0
  385. package/styles/variables.scss +2 -2
  386. package/switch/switch.component.d.ts +2 -2
  387. package/table/styles/skeleton.scss +5 -0
  388. package/table/table-column.component.d.ts +5 -5
  389. package/table/table-skeleton.component.d.ts +2 -2
  390. package/table/table.component.d.ts +13 -11
  391. package/tabs/tab.component.d.ts +1 -1
  392. package/tabs/tabs.component.d.ts +2 -2
  393. package/tag/tag.component.d.ts +1 -1
  394. package/time-picker/time-picker-panel.component.d.ts +2 -2
  395. package/time-picker/time-picker.component.d.ts +5 -5
  396. package/timeline/timeline.component.d.ts +1 -1
  397. package/tooltip/tooltip.directive.d.ts +10 -2
  398. package/tree/tree-node.component.d.ts +20 -5
  399. package/tree/tree.component.d.ts +17 -7
  400. package/tree/tree.service.d.ts +1 -1
  401. package/tree-select/tree-select.component.d.ts +7 -7
  402. package/upload/file-select.component.d.ts +7 -8
  403. package/vote/vote.component.d.ts +3 -3
  404. package/watermark/watermark.directive.d.ts +1 -1
@@ -1,7 +1,7 @@
1
- import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef, HostBinding, Optional, Inject, booleanAttribute, numberAttribute } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef, HostBinding, Optional, Inject, numberAttribute } from '@angular/core';
2
2
  import { PaginationDefaultConfig, DEFAULT_RANGE_COUNT, THY_PAGINATION_CONFIG } from './pagination.config';
3
3
  import { useHostRenderer } from '@tethys/cdk/dom';
4
- import { isTemplateRef } from 'ngx-tethys/util';
4
+ import { coerceBooleanProperty, isTemplateRef } from 'ngx-tethys/util';
5
5
  import { PaginationTotalCountFormat } from './pagination.pipe';
6
6
  import { ThyIcon } from 'ngx-tethys/icon';
7
7
  import { ThyOption, ThyEnterDirective } from 'ngx-tethys/shared';
@@ -114,6 +114,15 @@ export class ThyPagination {
114
114
  set pageSizeOptions(value) {
115
115
  this.config.pageSizeOptions = value;
116
116
  }
117
+ /**
118
+ * 分页器单位
119
+ * @default 条
120
+ */
121
+ set unit(value) {
122
+ if (value) {
123
+ this.config.unit = value;
124
+ }
125
+ }
117
126
  constructor(paginationConfig, cdr) {
118
127
  this.paginationConfig = paginationConfig;
119
128
  this.cdr = cdr;
@@ -269,11 +278,11 @@ export class ThyPagination {
269
278
  this.pageSizeChanged.emit(event);
270
279
  }
271
280
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ThyPagination, deps: [{ token: THY_PAGINATION_CONFIG, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
272
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: ThyPagination, isStandalone: true, selector: "thy-pagination", inputs: { thyPageIndex: ["thyPageIndex", "thyPageIndex", numberAttribute], thyPageSize: ["thyPageSize", "thyPageSize", numberAttribute], thyTotal: ["thyTotal", "thyTotal", numberAttribute], thyCustomPages: "thyCustomPages", disabled: ["thyDisabled", "disabled", booleanAttribute], showQuickJumper: ["thyShowQuickJumper", "showQuickJumper", booleanAttribute], showTotalPageCount: ["thyShowTotalPageCount", "showTotalPageCount", booleanAttribute], size: ["thySize", "size"], maxCount: ["thyMaxCount", "maxCount", numberAttribute], marginalCount: ["thyMarginalCount", "marginalCount", numberAttribute], thyRangeCount: ["thyRangeCount", "thyRangeCount", numberAttribute], showSizeChanger: ["thyShowSizeChanger", "showSizeChanger", booleanAttribute], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], hideOnSinglePage: ["thyHideOnSinglePage", "hideOnSinglePage", booleanAttribute], showTotal: ["thyShowTotal", "showTotal"] }, outputs: { pageIndexChange: "thyPageIndexChange", pageChanged: "thyPageChanged", pageSizeChanged: "thyPageSizeChanged" }, host: { properties: { "class.thy-pagination": "this.isPaginationClass", "class.thy-pagination-has-total": "this.showTotal" } }, ngImport: i0, template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>\u6761\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>\u6761\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-select [(ngModel)]=\"selectPageSize\" [thySize]=\"selectSize\" [thyDisabled]=\"disabled\" (ngModelChange)=\"onPageSizeChange($event)\">\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' \u6761/\u9875'\"></thy-option>\n </thy-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\">\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\">\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\">\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\">\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\">\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat : config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThySelect, selector: "thy-select,thy-custom-select", inputs: ["thyDropdownWidthMode", "thyShowSearch", "thyPlaceHolder", "thyServerSearch", "thyLoadState", "thyAutoActiveFirstItem", "thyMode", "thySize", "thyEmptyStateText", "thyEmptySearchMessageText", "thyEnableScrollLoad", "thyAllowClear", "thyDisabled", "thySortComparator", "thyFooterTemplate", "thyPlacement", "thyOrigin", "thyFooterClass", "thyAutoExpand", "thyHasBackdrop", "thyMaxTagCount", "thyBorderless", "thyOptions", "thyPreset"], outputs: ["thyOnSearch", "thyOnScrollToBottom", "thyOnExpandStatusChange"], exportAs: ["thySelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyOption, selector: "thy-option", inputs: ["thyValue", "thyRawValue", "thyLabelText", "thyShowOptionCustom", "thySearchKey", "thyDisabled"], outputs: ["selectionChange", "visibleChange"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "pipe", type: PaginationTotalCountFormat, name: "paginationTotalPagesFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: ThyPagination, isStandalone: true, selector: "thy-pagination", inputs: { thyPageIndex: ["thyPageIndex", "thyPageIndex", numberAttribute], thyPageSize: ["thyPageSize", "thyPageSize", numberAttribute], thyTotal: ["thyTotal", "thyTotal", numberAttribute], thyCustomPages: "thyCustomPages", disabled: ["thyDisabled", "disabled", coerceBooleanProperty], showQuickJumper: ["thyShowQuickJumper", "showQuickJumper", coerceBooleanProperty], showTotalPageCount: ["thyShowTotalPageCount", "showTotalPageCount", coerceBooleanProperty], size: ["thySize", "size"], maxCount: ["thyMaxCount", "maxCount", numberAttribute], marginalCount: ["thyMarginalCount", "marginalCount", numberAttribute], thyRangeCount: ["thyRangeCount", "thyRangeCount", numberAttribute], showSizeChanger: ["thyShowSizeChanger", "showSizeChanger", coerceBooleanProperty], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], hideOnSinglePage: ["thyHideOnSinglePage", "hideOnSinglePage", coerceBooleanProperty], unit: ["thyUnit", "unit"], showTotal: ["thyShowTotal", "showTotal"] }, outputs: { pageIndexChange: "thyPageIndexChange", pageChanged: "thyPageChanged", pageSizeChanged: "thyPageSizeChanged" }, host: { properties: { "class.thy-pagination": "this.isPaginationClass", "class.thy-pagination-has-total": "this.showTotal" } }, ngImport: i0, template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>{{ config.unit }}\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>{{ config.unit }}\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-select [(ngModel)]=\"selectPageSize\" [thySize]=\"selectSize\" [thyDisabled]=\"disabled\" (ngModelChange)=\"onPageSizeChange($event)\">\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' ' + config.unit + '/\u9875'\"></thy-option>\n </thy-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\">\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\">\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\">\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\">\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\">\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat : config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThySelect, selector: "thy-select,thy-custom-select", inputs: ["thyDropdownWidthMode", "thyShowSearch", "thyPlaceHolder", "thyServerSearch", "thyLoadState", "thyAutoActiveFirstItem", "thyMode", "thySize", "thyEmptyStateText", "thyEmptySearchMessageText", "thyEnableScrollLoad", "thyAllowClear", "thyDisabled", "thySortComparator", "thyFooterTemplate", "thyPlacement", "thyOrigin", "thyFooterClass", "thyAutoExpand", "thyHasBackdrop", "thyMaxTagCount", "thyBorderless", "thyOptions", "thyPreset"], outputs: ["thyOnSearch", "thyOnScrollToBottom", "thyOnExpandStatusChange"], exportAs: ["thySelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyOption, selector: "thy-option", inputs: ["thyValue", "thyRawValue", "thyLabelText", "thyShowOptionCustom", "thySearchKey", "thyDisabled"], outputs: ["selectionChange", "visibleChange"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyEnterDirective, selector: "[thyEnter]", outputs: ["thyEnter"] }, { kind: "pipe", type: PaginationTotalCountFormat, name: "paginationTotalPagesFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
273
282
  }
274
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ThyPagination, decorators: [{
275
284
  type: Component,
276
- args: [{ selector: 'thy-pagination', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgTemplateOutlet, ThySelect, FormsModule, NgFor, ThyOption, ThyIcon, ThyEnterDirective, PaginationTotalCountFormat], template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>\u6761\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>\u6761\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-select [(ngModel)]=\"selectPageSize\" [thySize]=\"selectSize\" [thyDisabled]=\"disabled\" (ngModelChange)=\"onPageSizeChange($event)\">\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' \u6761/\u9875'\"></thy-option>\n </thy-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\">\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\">\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\">\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\">\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\">\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat : config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n" }]
285
+ args: [{ selector: 'thy-pagination', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgTemplateOutlet, ThySelect, FormsModule, NgFor, ThyOption, ThyIcon, ThyEnterDirective, PaginationTotalCountFormat], template: "<ng-container *ngIf=\"(hideOnSinglePage && total > pageSize) || !hideOnSinglePage\">\n <div class=\"thy-pagination-total\" *ngIf=\"showTotal\">\n <ng-container *ngIf=\"!isTemplateRef(showTotal); else totalTemplate\">\n <ng-container *ngIf=\"total > 0\">\n <div class=\"mr-3\">\n \u7B2C<span class=\"number\"> {{ range.from }}-{{ range.to }} </span>{{ config.unit }}\n </div>\n <div>\n \u5171<span class=\"number\"> {{ total }} </span>{{ config.unit }}\n </div>\n </ng-container>\n </ng-container>\n <ng-template #totalTemplate>\n <ng-template [ngTemplateOutlet]=\"showTotal\" [ngTemplateOutletContext]=\"{ $implicit: total, range: range }\"></ng-template>\n </ng-template>\n </div>\n <div class=\"thy-pagination-content\">\n <div class=\"thy-pagination-size\" *ngIf=\"config.showSizeChanger\">\n <thy-select [(ngModel)]=\"selectPageSize\" [thySize]=\"selectSize\" [thyDisabled]=\"disabled\" (ngModelChange)=\"onPageSizeChange($event)\">\n <thy-option\n class=\"page-size-option\"\n *ngFor=\"let option of config.pageSizeOptions\"\n [thyValue]=\"option\"\n [thyLabelText]=\"option + ' ' + config.unit + '/\u9875'\"></thy-option>\n </thy-select>\n </div>\n <ul class=\"thy-pagination-pages\">\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(firstIndex)\">\n <a class=\"thy-page-link thy-page-link-first\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.firstText\">{{ config.firstText }}</ng-container>\n <ng-container *ngIf=\"config.firstIcon\">\n <thy-icon [thyIconName]=\"config.firstIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === firstIndex\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex - 1)\">\n <a class=\"thy-page-link page-link-pre\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.previousText\">{{ config.previousText }}</ng-container>\n <ng-container *ngIf=\"config.previousIcon\">\n <thy-icon [thyIconName]=\"config.previousIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item thy-page-number\"\n [class.active]=\"page.active\"\n [class.disabled]=\"disabled\"\n (click)=\"selectPage(page.index)\"\n *ngFor=\"let page of pages\">\n <a class=\"thy-page-link\" href=\"javascript:;\">{{ page.text }}</a>\n </li>\n <li\n class=\"thy-page-item page-item-next\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.directionLinks\"\n (click)=\"selectPage(pageIndex + 1)\">\n <a class=\"thy-page-link thy-page-link-next\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.nextText\">{{ config.nextText }}</ng-container>\n <ng-container *ngIf=\"config.nextIcon\">\n <thy-icon [thyIconName]=\"config.nextIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n <li\n class=\"thy-page-item\"\n [class.disabled]=\"disabled || pageIndex === pageCount\"\n *ngIf=\"config.boundaryLinks\"\n (click)=\"selectPage(pageCount)\">\n <a class=\"thy-page-link thy-page-link-last\" href=\"javascript:;\">\n <ng-container *ngIf=\"config.lastText\">{{ config.lastText }}</ng-container>\n <ng-container *ngIf=\"config.lastIcon\">\n <thy-icon [thyIconName]=\"config.lastIcon\"></thy-icon>\n </ng-container>\n </a>\n </li>\n </ul>\n <ng-container *ngIf=\"config.showTotalPageCount && config.totalPagesFormat\">\n <div class=\"thy-pagination-count\" [innerHTML]=\"pageCount | paginationTotalPagesFormat : config.totalPagesFormat\"></div>\n </ng-container>\n <ng-container *ngIf=\"config.showQuickJumper\">\n <div class=\"thy-pagination-jumper\">\n <div class=\"thy-pagination-jumper-input\">\n \u8DF3\u81F3\n <input type=\"text\" [disabled]=\"disabled\" #jumperInput (thyEnter)=\"jumpPage(jumperInput)\" (blur)=\"jumpPage(jumperInput)\" />\n \u9875\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n" }]
277
286
  }], ctorParameters: () => [{ type: undefined, decorators: [{
278
287
  type: Optional
279
288
  }, {
@@ -292,13 +301,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
292
301
  type: Input
293
302
  }], disabled: [{
294
303
  type: Input,
295
- args: [{ alias: 'thyDisabled', transform: booleanAttribute }]
304
+ args: [{ alias: 'thyDisabled', transform: coerceBooleanProperty }]
296
305
  }], showQuickJumper: [{
297
306
  type: Input,
298
- args: [{ alias: 'thyShowQuickJumper', transform: booleanAttribute }]
307
+ args: [{ alias: 'thyShowQuickJumper', transform: coerceBooleanProperty }]
299
308
  }], showTotalPageCount: [{
300
309
  type: Input,
301
- args: [{ alias: 'thyShowTotalPageCount', transform: booleanAttribute }]
310
+ args: [{ alias: 'thyShowTotalPageCount', transform: coerceBooleanProperty }]
302
311
  }], size: [{
303
312
  type: Input,
304
313
  args: ['thySize']
@@ -313,13 +322,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
313
322
  args: [{ transform: numberAttribute }]
314
323
  }], showSizeChanger: [{
315
324
  type: Input,
316
- args: [{ alias: 'thyShowSizeChanger', transform: booleanAttribute }]
325
+ args: [{ alias: 'thyShowSizeChanger', transform: coerceBooleanProperty }]
317
326
  }], pageSizeOptions: [{
318
327
  type: Input,
319
328
  args: ['thyPageSizeOptions']
320
329
  }], hideOnSinglePage: [{
321
330
  type: Input,
322
- args: [{ alias: 'thyHideOnSinglePage', transform: booleanAttribute }]
331
+ args: [{ alias: 'thyHideOnSinglePage', transform: coerceBooleanProperty }]
332
+ }], unit: [{
333
+ type: Input,
334
+ args: ['thyUnit']
323
335
  }], pageIndexChange: [{
324
336
  type: Output,
325
337
  args: ['thyPageIndexChange']
@@ -339,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
339
351
  type: Input,
340
352
  args: ['thyShowTotal']
341
353
  }] } });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUVOLGdCQUFnQixFQUNoQixlQUFlLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQUMvSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFaEU7Ozs7R0FJRztBQVFILE1BQU0sT0FBTyxhQUFhO0lBSXRCOzs7T0FHRztJQUNILElBQ0ksWUFBWSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFdBQVcsQ0FBQyxRQUFnQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksY0FBYyxDQUFDLEtBQWU7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBT0Q7OztPQUdHO0lBQ0gsSUFDSSxlQUFlLENBQUMsS0FBYztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksa0JBQWtCLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ0ksSUFBSSxDQUFDLElBQXdCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFDSSxhQUFhLENBQUMsS0FBYTtRQUMzQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUNJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLGVBQWUsQ0FBQyxLQUFlO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBd0RELFlBR1ksZ0JBQXFDLEVBQ3JDLEdBQXNCO1FBRHRCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFoTWxDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZCLFdBQU0sR0FBNkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBeURqSDs7V0FFRztRQUMyRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBK0UvRTs7V0FFRztRQUMyQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFM0U7O1dBRUc7UUFDdUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUUvQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFcEUsVUFBSyxHQUEwRCxFQUFFLENBQUM7UUFFbEUsY0FBUyxHQUFHLENBQUMsQ0FBQztRQVVkLFVBQUssR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsaUJBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUVsQyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRUUsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRTlEOzs7V0FHRztRQUdILGNBQVMsR0FBc0YsS0FBSyxDQUFDO0lBT2xHLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsU0FBaUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEQsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNULElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDO1lBQzlDLEVBQUUsRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVTtTQUN4RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO2FBQU0sQ0FBQztZQUNKLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsTUFBZTtRQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDeEQsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JDLE9BQU87b0JBQ0gsS0FBSyxFQUFFLElBQUk7b0JBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ3JCLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTO2lCQUM5QixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUN4QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUV0QixjQUFjO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMxRCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6RSxDQUFDO1lBRUQsYUFBYTtZQUNiLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUNwRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzlELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFFRCxZQUFZO1lBQ1osSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDO1lBQ2hGLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDakMsR0FBRyxHQUFHLFVBQVUsQ0FBQztZQUNyQixDQUFDO1lBQ0QsSUFBSSxTQUFTLEdBQUcsU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUN6QyxLQUFLLEdBQUcsU0FBUyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDUCxLQUFLLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVM7aUJBQzNCLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxLQUFLLEdBQUcsQ0FBQyxHQUFHLFdBQVcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNQLEtBQUssRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNsQixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUztpQkFDM0IsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU8sVUFBVSxDQUFDLFNBQWlCO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFpQjtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pGLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXVCO1FBQzVCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDOzhHQXZVUSxhQUFhLGtCQStMVixxQkFBcUI7a0dBL0x4QixhQUFhLDJHQVFGLGVBQWUsK0NBWWYsZUFBZSxzQ0FjZixlQUFlLDJFQTRCTyxnQkFBZ0IsOERBTVQsZ0JBQWdCLHVFQVNiLGdCQUFnQixvRUFvQjFCLGVBQWUsd0RBU1YsZUFBZSxxREFNMUMsZUFBZSw4REFVYyxnQkFBZ0IsNkhBaUJmLGdCQUFnQixpVUNqTHRFLHEySUFrR0EsNENEOURjLElBQUksNkZBQUUsZ0JBQWdCLG9KQUFFLFNBQVMsd21CQUFFLFdBQVcsK1ZBQUUsS0FBSyxtSEFBRSxTQUFTLGlOQUFFLE9BQU8sc01BQUUsaUJBQWlCLHlFQUFFLDBCQUEwQjs7MkZBRXpILGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0ksZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLENBQUM7OzBCQWdNOUgsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7eUVBdEw3QixZQUFZO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQWFqQyxXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQWVqQyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQWVqQyxjQUFjO3NCQURqQixLQUFLO2dCQWN3RCxRQUFRO3NCQUFyRSxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3hELGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVUvRCxrQkFBa0I7c0JBRHJCLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVdsRSxJQUFJO3NCQURQLEtBQUs7dUJBQUMsU0FBUztnQkFXWixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBU08sYUFBYTtzQkFBOUUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQU81RCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFXakMsZUFBZTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9ELGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQVMyQyxnQkFBZ0I7c0JBQXJGLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUt0QyxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkFLRixXQUFXO3NCQUFwQyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFFTSxlQUFlO3NCQUE1QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkE0QlMsaUJBQWlCO3NCQUFyRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFRbkMsU0FBUztzQkFGUixXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9wdGlvbmFsLFxuICAgIEluamVjdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBhZ2luYXRpb25Db25maWdNb2RlbCB9IGZyb20gJy4vcGFnaW5hdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgREVGQVVMVF9SQU5HRV9DT1VOVCwgVEhZX1BBR0lOQVRJT05fQ09ORklHLCBUaHlQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbmZpZyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uVG90YWxDb3VudEZvcm1hdCB9IGZyb20gJy4vcGFnaW5hdGlvbi5waXBlJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5T3B0aW9uLCBUaHlFbnRlckRpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5U2VsZWN0IH0gZnJvbSAnbmd4LXRldGh5cy9zZWxlY3QnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIOWIhumhtee7hOS7tu+8jOW9k+aVsOaNrumHj+i/h+WkmuaXtu+8jOS9v+eUqOWIhumhteWIhuino+aVsOaNruOAglxuICogQG5hbWUgdGh5LXBhZ2luYXRpb25cbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1wYWdpbmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgVGh5U2VsZWN0LCBGb3Jtc01vZHVsZSwgTmdGb3IsIFRoeU9wdGlvbiwgVGh5SWNvbiwgVGh5RW50ZXJEaXJlY3RpdmUsIFBhZ2luYXRpb25Ub3RhbENvdW50Rm9ybWF0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQYWdpbmF0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBpc1RlbXBsYXRlUmVmID0gaXNUZW1wbGF0ZVJlZjtcbiAgICBwdWJsaWMgY29uZmlnOiBUaHlQYWdpbmF0aW9uQ29uZmlnTW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZywgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLm1haW4pO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5b2T5YmN6aG177yM5pSv5oyB5Y+M5ZCR57uR5a6aXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVBhZ2VJbmRleChwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmr4/pobXmnaHnm67mlbDph49cbiAgICAgKiBAZGVmYXVsdCAyMFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICB0aGlzLnNlbGVjdFBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VDb3VudCgpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplUGFnZXModGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZUNvdW50KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oC76aG15pWwIOS4jiB0b3RhbFBhZ2VzIOS6jOmAieS4gOS8oOWFpVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVRvdGFsKHRvdGFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ5YiG6aG16aG156CB77yM6K6+572u6Ieq5a6a5LmJ5YiG6aG16aG156CB5ZCO5bCG5LiN5qC55o2uIFRvdGFsIOWSjCBQYWdlU2l6ZSDmnaXoh6rliqjorqHnrpfpobXnoIHvvIzlrozlhajku6XkvKDlhaXnmoTpobXnoIHkuLrlh4ZcbiAgICAgKiBAdHlwZSBudW1iZXJbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUN1c3RvbVBhZ2VzKHBhZ2VzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLmN1c3RvbVBhZ2VzID0gcGFnZXM7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5RGlzYWJsZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW/q+mAn+i3s+i9rFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlTaG93UXVpY2tKdW1wZXInLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgc2hvd1F1aWNrSnVtcGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dRdWlja0p1bXBlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpuaYvuekuuaAu+mhteaVsOS/oeaBr1xuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeVNob3dUb3RhbFBhZ2VDb3VudCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNldCBzaG93VG90YWxQYWdlQ291bnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1RvdGFsUGFnZUNvdW50ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5YiG6aG157uE5Lu255qE5aSn5bCPXG4gICAgICogQHR5cGUgc20gfCBtZCB8IGxnXG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVNpemUnKVxuICAgIHNldCBzaXplKHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJykge1xuICAgICAgICB0aGlzLnNlbGVjdFNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci5hZGRDbGFzcyhgdGh5LXBhZ2luYXRpb24tJHtzaXplfWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruacgOWkp+aYvuekuuaVsOmHj++8jOi2heWHuuacgOWkp+aYvuekuuaVsOWQjuS8muiHquWKqOi/m+ihjOWIhuWJsuaYvuekulxuICAgICAqIEBkZWZhdWx0IDlcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeU1heENvdW50JywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgbWF4Q291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNvbmZpZy5tYXhDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rui+uee8mOaYvuekuuaVsOmHj1xuICAgICAqIEBkZWZhdWx0IDJcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeU1hcmdpbmFsQ291bnQnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBtYXJnaW5hbENvdW50OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7kuK3pl7TljLrln5/mmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCA3XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5UmFuZ2VDb3VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcucmFuZ2VDb3VudCA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1hcmdpbmFsQ291bnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlTaG93U2l6ZUNoYW5nZXInLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgc2hvd1NpemVDaGFuZ2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dTaXplQ2hhbmdlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEB0eXBlIG51bWJlcltdXG4gICAgICovXG4gICAgQElucHV0KCd0aHlQYWdlU2l6ZU9wdGlvbnMnKVxuICAgIHNldCBwYWdlU2l6ZU9wdGlvbnModmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnBhZ2VTaXplT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPquacieS4gOmhteaXtuaYr+WQpumakOiXj+WIhumhteWZqFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlIaWRlT25TaW5nbGVQYWdlJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVPblNpbmdsZVBhZ2U6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDpobXnoIHmlLnlj5jnmoTlm57osINcbiAgICAgKi9cbiAgICBAT3V0cHV0KCd0aHlQYWdlSW5kZXhDaGFuZ2UnKSBwYWdlSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIOS4jkJvb3RzdHJhcCBwYWdpbmF0aW9uIOWFvOWuue+8jOWQjue7reeJiOacrOS8mui/m+ihjOWIoOmZpO+8jOWPguaVsOS/neaMgeS4jiBib290c3RyYXAg5LiA6Ie0XG4gICAgICovXG4gICAgQE91dHB1dCgndGh5UGFnZUNoYW5nZWQnKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwYWdlOiBudW1iZXIgfT4oKTtcblxuICAgIEBPdXRwdXQoJ3RoeVBhZ2VTaXplQ2hhbmdlZCcpIHBhZ2VTaXplQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgcHVibGljIHBhZ2VzOiB7IGluZGV4PzogbnVtYmVyOyB0ZXh0Pzogc3RyaW5nOyBhY3RpdmU/OiBib29sZWFuIH1bXSA9IFtdO1xuXG4gICAgcHVibGljIHBhZ2VJbmRleCA9IDE7XG5cbiAgICBwdWJsaWMgcGFnZVNpemU6IG51bWJlcjtcblxuICAgIHB1YmxpYyBwYWdlQ291bnQ6IG51bWJlcjtcblxuICAgIHB1YmxpYyBjdXN0b21QYWdlczogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgdG90YWw6IG51bWJlcjtcblxuICAgIHB1YmxpYyByYW5nZSA9IHsgZnJvbTogMCwgdG86IDAgfTtcblxuICAgIHB1YmxpYyBmaXJzdEluZGV4ID0gMTtcblxuICAgIHB1YmxpYyBpc0hpZGVPblNpbmdsZVBhZ2UgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICBwdWJsaWMgc2VsZWN0U2l6ZSA9ICdtZCc7XG5cbiAgICBwdWJsaWMgc2VsZWN0UGFnZVNpemU6IE51bWJlciA9IDIwO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktcGFnaW5hdGlvbicpIGlzUGFnaW5hdGlvbkNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuiMg+WbtOWSjHRvdGFsXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1wYWdpbmF0aW9uLWhhcy10b3RhbCcpXG4gICAgQElucHV0KCd0aHlTaG93VG90YWwnKVxuICAgIHNob3dUb3RhbDogYm9vbGVhbiB8IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBudW1iZXI7IHJhbmdlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IH0+ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUSFlfUEFHSU5BVElPTl9DT05GSUcpXG4gICAgICAgIHByaXZhdGUgcGFnaW5hdGlvbkNvbmZpZzogVGh5UGFnaW5hdGlvbkNvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0TWFyZ2luYWxDb3VudCh0aGlzLmNvbmZpZy5yYW5nZUNvdW50KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgodGhpcy5wYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1hcmdpbmFsQ291bnQocmFuZ2U6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMubWFyZ2luYWxDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5tYXJnaW5hbENvdW50ID0gcmFuZ2UgPD0gREVGQVVMVF9SQU5HRV9DT1VOVCA/IDEgOiAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYWdlSW5kZXgocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlSW5kZXggPiB0aGlzLnBhZ2VDb3VudCA/IHRoaXMucGFnZUNvdW50IDogcGFnZUluZGV4IHx8IDE7XG4gICAgICAgIGNvbnN0IHRvUGFnZVNpemUgPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemU7XG4gICAgICAgIHRoaXMucmFuZ2UgPSB7XG4gICAgICAgICAgICBmcm9tOiAodGhpcy5wYWdlSW5kZXggLSAxKSAqIHRoaXMucGFnZVNpemUgKyAxLFxuICAgICAgICAgICAgdG86IHRvUGFnZVNpemUgPiB0aGlzLnRvdGFsID8gdGhpcy50b3RhbCA6IHRvUGFnZVNpemVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUGFnZXModGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZUNvdW50KTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlQ291bnQoKSB7XG4gICAgICAgIGxldCBwYWdlQ291bnQgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21QYWdlcyAmJiB0aGlzLmN1c3RvbVBhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhZ2VDb3VudCA9IHRoaXMuY3VzdG9tUGFnZXNbdGhpcy5jdXN0b21QYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhZ2VDb3VudCA9IHRoaXMucGFnZVNpemUgPCAxID8gMSA6IE1hdGguY2VpbCh0aGlzLnRvdGFsIC8gdGhpcy5wYWdlU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYWdlQ291bnQgPSBNYXRoLm1heChwYWdlQ291bnQgfHwgMCwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlUGFnZShpbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IHsgaW5kZXg6IG51bWJlcjsgdGV4dDogc3RyaW5nOyBhY3RpdmU6IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7IGluZGV4LCB0ZXh0LCBhY3RpdmUgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVQYWdlcyhwYWdlSW5kZXg6IG51bWJlciwgcGFnZUNvdW50OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUGFnZXMgJiYgdGhpcy5jdXN0b21QYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzID0gdGhpcy5jdXN0b21QYWdlcy5tYXAocGFnZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHBhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHBhZ2UudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBwYWdlID09PSArcGFnZUluZGV4XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhZ2VzID0gW107XG4gICAgICAgIGNvbnN0IG1hcmdpbmFsQ291bnQgPSB0aGlzLm1hcmdpbmFsQ291bnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlQ291bnQgPSB0aGlzLmNvbmZpZy5yYW5nZUNvdW50O1xuICAgICAgICBjb25zdCBtYXhDb3VudCA9IHRoaXMuY29uZmlnLm1heENvdW50O1xuICAgICAgICBjb25zdCBpc01heFNpemVkID0gcGFnZUNvdW50ID4gbWF4Q291bnQ7XG4gICAgICAgIGlmIChpc01heFNpemVkKSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmVQYWdlcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXJQYWdlcyA9IFtdO1xuXG4gICAgICAgICAgICAvLyBiZWZvcmVQYWdlc1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbWFyZ2luYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKGksIGkudG9TdHJpbmcoKSwgaSA9PT0gcGFnZUluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFnZUluZGV4IC0gTWF0aC5jZWlsKHJhbmdlQ291bnQgLyAyKSA+IHRoaXMuZmlyc3RJbmRleCkge1xuICAgICAgICAgICAgICAgIGJlZm9yZVBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShwYWdlSW5kZXggLSByYW5nZUNvdW50LCAnwrfCt8K3JywgbnVsbCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhZnRlclBhZ2VzXG4gICAgICAgICAgICBpZiAocGFnZUluZGV4ICsgTWF0aC5jZWlsKHJhbmdlQ291bnQgLyAyKSA8IHBhZ2VDb3VudCkge1xuICAgICAgICAgICAgICAgIGFmdGVyUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKHBhZ2VJbmRleCArIHJhbmdlQ291bnQsICfCt8K3wrcnLCBudWxsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcGFnZUNvdW50IC0gbWFyZ2luYWxDb3VudCArIDE7IGkgPD0gcGFnZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBhZnRlclBhZ2VzLnB1c2godGhpcy5tYWtlUGFnZShpLCBpLnRvU3RyaW5nKCksIGkgPT09IHBhZ2VJbmRleCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBtYWluUGFnZXNcbiAgICAgICAgICAgIGxldCBzdGFydCA9IE1hdGgubWF4KG1hcmdpbmFsQ291bnQgKyAxLCBwYWdlSW5kZXggLSAocmFuZ2VDb3VudCAtIDEpIC8gMik7XG4gICAgICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4ocGFnZUluZGV4ICsgKHJhbmdlQ291bnQgLSAxKSAvIDIsIHBhZ2VDb3VudCAtIG1hcmdpbmFsQ291bnQpO1xuICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCAtIDEgPD0gbWFyZ2luYWxDb3VudCkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHJhbmdlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFnZUNvdW50IC0gcGFnZUluZGV4IDw9IG1hcmdpbmFsQ291bnQpIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHBhZ2VDb3VudCAtIHJhbmdlQ291bnQgKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBpID09PSArcGFnZUluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYWdlcyA9IFsuLi5iZWZvcmVQYWdlcywgLi4ucGFnZXMsIC4uLmFmdGVyUGFnZXNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gcGFnZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBpID09PSArcGFnZUluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYWdlcyA9IHBhZ2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnZUNoYW5nZShwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleENoYW5nZS5lbWl0KHBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh7IHBhZ2U6IHBhZ2VJbmRleCB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3RQYWdlKHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gdGhpcy5maXJzdEluZGV4IC0gMSB8fCBwYWdlSW5kZXggPT09IHRoaXMucGFnZUNvdW50ICsgMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZSh0aGlzLnBhZ2VJbmRleCk7XG4gICAgfVxuXG4gICAganVtcFBhZ2UoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gK2lucHV0LnZhbHVlO1xuICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihwYWdlSW5kZXgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhZ2UocGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgIHRoaXMuc2V0UGFnZUluZGV4KHRoaXMucGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihoaWRlT25TaW5nbGVQYWdlICYmIHRvdGFsID4gcGFnZVNpemUpIHx8ICFoaWRlT25TaW5nbGVQYWdlXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi10b3RhbFwiICpuZ0lmPVwic2hvd1RvdGFsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlUmVmKHNob3dUb3RhbCk7IGVsc2UgdG90YWxUZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvdGFsID4gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXItM1wiPlxuICAgICAgICAgIOesrDxzcGFuIGNsYXNzPVwibnVtYmVyXCI+IHt7IHJhbmdlLmZyb20gfX0te3sgcmFuZ2UudG8gfX0gPC9zcGFuPuadoVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICDlhbE8c3BhbiBjbGFzcz1cIm51bWJlclwiPiB7eyB0b3RhbCB9fSA8L3NwYW4+5p2hXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNob3dUb3RhbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdG90YWwsIHJhbmdlOiByYW5nZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tc2l6ZVwiICpuZ0lmPVwiY29uZmlnLnNob3dTaXplQ2hhbmdlclwiPlxuICAgICAgPHRoeS1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RQYWdlU2l6ZVwiIFt0aHlTaXplXT1cInNlbGVjdFNpemVcIiBbdGh5RGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPHRoeS1vcHRpb25cbiAgICAgICAgICBjbGFzcz1cInBhZ2Utc2l6ZS1vcHRpb25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgW3RoeVZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgICAgW3RoeUxhYmVsVGV4dF09XCJvcHRpb24gKyAnIOadoS/pobUnXCI+PC90aHktb3B0aW9uPlxuICAgICAgPC90aHktc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDx1bCBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXBhZ2VzXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gZmlyc3RJbmRleFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmJvdW5kYXJ5TGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShmaXJzdEluZGV4KVwiPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1maXJzdFwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmZpcnN0VGV4dFwiPnt7IGNvbmZpZy5maXJzdFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmZpcnN0SWNvblwiPlxuICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJjb25maWcuZmlyc3RJY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cInRoeS1wYWdlLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcGFnZUluZGV4ID09PSBmaXJzdEluZGV4XCJcbiAgICAgICAgKm5nSWY9XCJjb25maWcuZGlyZWN0aW9uTGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlSW5kZXggLSAxKVwiPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgcGFnZS1saW5rLXByZVwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnByZXZpb3VzVGV4dFwiPnt7IGNvbmZpZy5wcmV2aW91c1RleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnByZXZpb3VzSWNvblwiPlxuICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJjb25maWcucHJldmlvdXNJY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cInRoeS1wYWdlLWl0ZW0gdGh5LXBhZ2UtbnVtYmVyXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJwYWdlLmFjdGl2ZVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2UuaW5kZXgpXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPnt7IHBhZ2UudGV4dCB9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtIHBhZ2UtaXRlbS1uZXh0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gcGFnZUNvdW50XCJcbiAgICAgICAgKm5nSWY9XCJjb25maWcuZGlyZWN0aW9uTGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlSW5kZXggKyAxKVwiPlxuICAgICAgICA8YSBjbGFzcz1cInRoeS1wYWdlLWxpbmsgdGh5LXBhZ2UtbGluay1uZXh0XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubmV4dFRleHRcIj57eyBjb25maWcubmV4dFRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLm5leHRJY29uXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImNvbmZpZy5uZXh0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gcGFnZUNvdW50XCJcbiAgICAgICAgKm5nSWY9XCJjb25maWcuYm91bmRhcnlMaW5rc1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2VDb3VudClcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHRoeS1wYWdlLWxpbmstbGFzdFwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmxhc3RUZXh0XCI+e3sgY29uZmlnLmxhc3RUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5sYXN0SWNvblwiPlxuICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJjb25maWcubGFzdEljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5zaG93VG90YWxQYWdlQ291bnQgJiYgY29uZmlnLnRvdGFsUGFnZXNGb3JtYXRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1jb3VudFwiIFtpbm5lckhUTUxdPVwicGFnZUNvdW50IHwgcGFnaW5hdGlvblRvdGFsUGFnZXNGb3JtYXQgOiBjb25maWcudG90YWxQYWdlc0Zvcm1hdFwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuc2hvd1F1aWNrSnVtcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tanVtcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1qdW1wZXItaW5wdXRcIj5cbiAgICAgICAgICDot7Poh7NcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAjanVtcGVySW5wdXQgKHRoeUVudGVyKT1cImp1bXBQYWdlKGp1bXBlcklucHV0KVwiIChibHVyKT1cImp1bXBQYWdlKGp1bXBlcklucHV0KVwiIC8+XG4gICAgICAgICAg6aG1XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUVOLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUF1QixNQUFNLHFCQUFxQixDQUFDO0FBQy9ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVoRTs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLGFBQWE7SUFJdEI7OztPQUdHO0lBQ0gsSUFDSSxZQUFZLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksV0FBVyxDQUFDLFFBQWdCO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxjQUFjLENBQUMsS0FBZTtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFPRDs7O09BR0c7SUFDSCxJQUNJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxrQkFBa0IsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDSSxJQUFJLENBQUMsSUFBd0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFRRDs7O09BR0c7SUFDSCxJQUNJLGFBQWEsQ0FBQyxLQUFhO1FBQzNCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQ0ksZUFBZSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksZUFBZSxDQUFDLEtBQWU7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFRRDs7O09BR0c7SUFDSCxJQUNJLElBQUksQ0FBQyxLQUFhO1FBQ2xCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFrREQsWUFHWSxnQkFBcUMsRUFDckMsR0FBc0I7UUFEdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUNyQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNNbEMsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDdkIsV0FBTSxHQUE2QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUF5RGpIOztXQUVHO1FBQ2dFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUEwRnBGOztXQUVHO1FBQzJCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUzRTs7V0FFRztRQUN1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRS9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxVQUFLLEdBQTBELEVBQUUsQ0FBQztRQUVsRSxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBVWQsVUFBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFM0IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUVmLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUxQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixpQkFBWSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBRWxDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFFRSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFOUQ7OztXQUdHO1FBR0gsY0FBUyxHQUFzRixLQUFLLENBQUM7SUFPbEcsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1QsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUM7WUFDOUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVO1NBQ3hELENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xELFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7YUFBTSxDQUFDO1lBQ0osU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxRQUFRLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxNQUFlO1FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtRQUN4RCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckMsT0FBTztvQkFDSCxLQUFLLEVBQUUsSUFBSTtvQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDckIsTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVM7aUJBQzlCLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBRXRCLGNBQWM7WUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3RDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7WUFFRCxhQUFhO1lBQ2IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7Z0JBQ3BELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsR0FBRyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUQsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQztZQUVELFlBQVk7WUFDWixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsYUFBYSxDQUFDLENBQUM7WUFDaEYsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxHQUFHLEdBQUcsVUFBVSxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLFNBQVMsR0FBRyxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ3pDLEtBQUssR0FBRyxTQUFTLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNQLEtBQUssRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNsQixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUztpQkFDM0IsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELEtBQUssR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ1AsS0FBSyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7b0JBQ2xCLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTO2lCQUMzQixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxVQUFVLENBQUMsU0FBaUI7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWlCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekYsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBdUI7UUFDNUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBbFZRLGFBQWEsa0JBME1WLHFCQUFxQjtrR0ExTXhCLGFBQWEsMkdBUUYsZUFBZSwrQ0FZZixlQUFlLHNDQWNmLGVBQWUsMkVBNEJPLHFCQUFxQiw4REFNZCxxQkFBcUIsdUVBU2xCLHFCQUFxQixvRUFvQi9CLGVBQWUsd0RBU1YsZUFBZSxxREFNMUMsZUFBZSw4REFVYyxxQkFBcUIsNkhBaUJwQixxQkFBcUIsNFZDaEwzRSx3NElBa0dBLDRDRC9EYyxJQUFJLDZGQUFFLGdCQUFnQixvSkFBRSxTQUFTLHdtQkFBRSxXQUFXLCtWQUFFLEtBQUssbUhBQUUsU0FBUyxpTkFBRSxPQUFPLHNNQUFFLGlCQUFpQix5RUFBRSwwQkFBMEI7OzJGQUV6SCxhQUFhO2tCQVB6QixTQUFTOytCQUNJLGdCQUFnQixtQkFFVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixDQUFDOzswQkEyTTlILFFBQVE7OzBCQUNSLE1BQU07MkJBQUMscUJBQXFCO3lFQWpNN0IsWUFBWTtzQkFEZixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFhakMsV0FBVztzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFlakMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFlakMsY0FBYztzQkFEakIsS0FBSztnQkFjNkQsUUFBUTtzQkFBMUUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU83RCxlQUFlO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFVcEUsa0JBQWtCO3NCQURyQixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFXdkUsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBV1osUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQVNPLGFBQWE7c0JBQTlFLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFPNUQsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBV2pDLGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQVNwRSxlQUFlO3NCQURsQixLQUFLO3VCQUFDLG9CQUFvQjtnQkFTZ0QsZ0JBQWdCO3NCQUExRixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFPckUsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBVWMsZUFBZTtzQkFBNUMsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBS0YsV0FBVztzQkFBcEMsTUFBTTt1QkFBQyxnQkFBZ0I7Z0JBRU0sZUFBZTtzQkFBNUMsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBNEJTLGlCQUFpQjtzQkFBckQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBUW5DLFNBQVM7c0JBRlIsV0FBVzt1QkFBQyxnQ0FBZ0M7O3NCQUM1QyxLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBPcHRpb25hbCxcbiAgICBJbmplY3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UGFnaW5hdGlvbkNvbmZpZ01vZGVsIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhZ2luYXRpb25EZWZhdWx0Q29uZmlnLCBERUZBVUxUX1JBTkdFX0NPVU5ULCBUSFlfUEFHSU5BVElPTl9DT05GSUcsIFRoeVBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGlzVGVtcGxhdGVSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblRvdGFsQ291bnRGb3JtYXQgfSBmcm9tICcuL3BhZ2luYXRpb24ucGlwZSc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeU9wdGlvbiwgVGh5RW50ZXJEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeVNlbGVjdCB9IGZyb20gJ25neC10ZXRoeXMvc2VsZWN0JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiDliIbpobXnu4Tku7bvvIzlvZPmlbDmja7ph4/ov4flpJrml7bvvIzkvb/nlKjliIbpobXliIbop6PmlbDmja7jgIJcbiAqIEBuYW1lIHRoeS1wYWdpbmF0aW9uXG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcGFnaW5hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIFRoeVNlbGVjdCwgRm9ybXNNb2R1bGUsIE5nRm9yLCBUaHlPcHRpb24sIFRoeUljb24sIFRoeUVudGVyRGlyZWN0aXZlLCBQYWdpbmF0aW9uVG90YWxDb3VudEZvcm1hdF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5UGFnaW5hdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgaXNUZW1wbGF0ZVJlZiA9IGlzVGVtcGxhdGVSZWY7XG4gICAgcHVibGljIGNvbmZpZzogVGh5UGFnaW5hdGlvbkNvbmZpZ01vZGVsID0gT2JqZWN0LmFzc2lnbih7fSwgUGFnaW5hdGlvbkRlZmF1bHRDb25maWcsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5tYWluKTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruW9k+WJjemhte+8jOaUr+aMgeWPjOWQkee7keWumlxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlSW5kZXgocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlSW5kZXg7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5q+P6aG15p2h55uu5pWw6YePXG4gICAgICogQGRlZmF1bHQgMjBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RQYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2VzKHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+mhteaVsCDkuI4gdG90YWxQYWdlcyDkuozpgInkuIDkvKDlhaVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlUb3RhbCh0b3RhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudG90YWwgPSB0b3RhbDtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VJbmRleCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5ieWIhumhtemhteegge+8jOiuvue9ruiHquWumuS5ieWIhumhtemhteeggeWQjuWwhuS4jeagueaNriBUb3RhbCDlkowgUGFnZVNpemUg5p2l6Ieq5Yqo6K6h566X6aG156CB77yM5a6M5YWo5Lul5Lyg5YWl55qE6aG156CB5Li65YeGXG4gICAgICogQHR5cGUgbnVtYmVyW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlDdXN0b21QYWdlcyhwYWdlczogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5jdXN0b21QYWdlcyA9IHBhZ2VzO1xuICAgICAgICB0aGlzLmNvbmZpZy5zaG93VG90YWxQYWdlQ291bnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUGFnZUNvdW50KCk7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQYWdlcyh0aGlzLnBhZ2VJbmRleCwgdGhpcy5wYWdlQ291bnQpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKhcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeURpc2FibGVkJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW/q+mAn+i3s+i9rFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlTaG93UXVpY2tKdW1wZXInLCB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCBzaG93UXVpY2tKdW1wZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1F1aWNrSnVtcGVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm5pi+56S65oC76aG15pWw5L+h5oGvXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5U2hvd1RvdGFsUGFnZUNvdW50JywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgc2hvd1RvdGFsUGFnZUNvdW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dUb3RhbFBhZ2VDb3VudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWIhumhtee7hOS7tueahOWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqIEBkZWZhdWx0IG1kXG4gICAgICovXG4gICAgQElucHV0KCd0aHlTaXplJylcbiAgICBzZXQgc2l6ZShzaXplOiAnc20nIHwgJ21kJyB8ICdsZycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RTaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MoYHRoeS1wYWdpbmF0aW9uLSR7c2l6ZX1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mnIDlpKfmmL7npLrmlbDph4/vvIzotoXlh7rmnIDlpKfmmL7npLrmlbDlkI7kvJroh6rliqjov5vooYzliIblibLmmL7npLpcbiAgICAgKiBAZGVmYXVsdCA5XG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlNYXhDb3VudCcsIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IG1heENvdW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jb25maWcubWF4Q291bnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ovrnnvJjmmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCAyXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlNYXJnaW5hbENvdW50JywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWFyZ2luYWxDb3VudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5Lit6Ze05Yy65Z+f5pi+56S65pWw6YePXG4gICAgICogQGRlZmF1bHQgN1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVJhbmdlQ291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnJhbmdlQ291bnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXJnaW5hbENvdW50KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5U2hvd1NpemVDaGFuZ2VyJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgc2hvd1NpemVDaGFuZ2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNob3dTaXplQ2hhbmdlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEB0eXBlIG51bWJlcltdXG4gICAgICovXG4gICAgQElucHV0KCd0aHlQYWdlU2l6ZU9wdGlvbnMnKVxuICAgIHNldCBwYWdlU2l6ZU9wdGlvbnModmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnBhZ2VTaXplT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPquacieS4gOmhteaXtuaYr+WQpumakOiXj+WIhumhteWZqFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICd0aHlIaWRlT25TaW5nbGVQYWdlJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgaGlkZU9uU2luZ2xlUGFnZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWIhumhteWZqOWNleS9jVxuICAgICAqIEBkZWZhdWx0IOadoVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5VW5pdCcpXG4gICAgc2V0IHVuaXQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnVuaXQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOmhteeggeaUueWPmOeahOWbnuiwg1xuICAgICAqL1xuICAgIEBPdXRwdXQoJ3RoeVBhZ2VJbmRleENoYW5nZScpIHBhZ2VJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICog5LiOQm9vdHN0cmFwIHBhZ2luYXRpb24g5YW85a6577yM5ZCO57ut54mI5pys5Lya6L+b6KGM5Yig6Zmk77yM5Y+C5pWw5L+d5oyB5LiOIGJvb3RzdHJhcCDkuIDoh7RcbiAgICAgKi9cbiAgICBAT3V0cHV0KCd0aHlQYWdlQ2hhbmdlZCcpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHBhZ2U6IG51bWJlciB9PigpO1xuXG4gICAgQE91dHB1dCgndGh5UGFnZVNpemVDaGFuZ2VkJykgcGFnZVNpemVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwdWJsaWMgcGFnZXM6IHsgaW5kZXg/OiBudW1iZXI7IHRleHQ/OiBzdHJpbmc7IGFjdGl2ZT86IGJvb2xlYW4gfVtdID0gW107XG5cbiAgICBwdWJsaWMgcGFnZUluZGV4ID0gMTtcblxuICAgIHB1YmxpYyBwYWdlU2l6ZTogbnVtYmVyO1xuXG4gICAgcHVibGljIHBhZ2VDb3VudDogbnVtYmVyO1xuXG4gICAgcHVibGljIGN1c3RvbVBhZ2VzOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyB0b3RhbDogbnVtYmVyO1xuXG4gICAgcHVibGljIHJhbmdlID0geyBmcm9tOiAwLCB0bzogMCB9O1xuXG4gICAgcHVibGljIGZpcnN0SW5kZXggPSAxO1xuXG4gICAgcHVibGljIGlzSGlkZU9uU2luZ2xlUGFnZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIHB1YmxpYyBzZWxlY3RTaXplID0gJ21kJztcblxuICAgIHB1YmxpYyBzZWxlY3RQYWdlU2l6ZTogTnVtYmVyID0gMjA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1wYWdpbmF0aW9uJykgaXNQYWdpbmF0aW9uQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S66IyD5Zu05ZKMdG90YWxcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXBhZ2luYXRpb24taGFzLXRvdGFsJylcbiAgICBASW5wdXQoJ3RoeVNob3dUb3RhbCcpXG4gICAgc2hvd1RvdGFsOiBib29sZWFuIHwgVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IG51bWJlcjsgcmFuZ2U6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfT4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9QQUdJTkFUSU9OX0NPTkZJRylcbiAgICAgICAgcHJpdmF0ZSBwYWdpbmF0aW9uQ29uZmlnOiBUaHlQYWdpbmF0aW9uQ29uZmlnLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRNYXJnaW5hbENvdW50KHRoaXMuY29uZmlnLnJhbmdlQ291bnQpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2VDb3VudCgpO1xuICAgICAgICB0aGlzLnNldFBhZ2VJbmRleCh0aGlzLnBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWFyZ2luYWxDb3VudChyYW5nZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpcy5tYXJnaW5hbENvdW50KSB7XG4gICAgICAgICAgICB0aGlzLm1hcmdpbmFsQ291bnQgPSByYW5nZSA8PSBERUZBVUxUX1JBTkdFX0NPVU5UID8gMSA6IDI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhZ2VJbmRleChwYWdlSW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleCA+IHRoaXMucGFnZUNvdW50ID8gdGhpcy5wYWdlQ291bnQgOiBwYWdlSW5kZXggfHwgMTtcbiAgICAgICAgY29uc3QgdG9QYWdlU2l6ZSA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5yYW5nZSA9IHtcbiAgICAgICAgICAgIGZyb206ICh0aGlzLnBhZ2VJbmRleCAtIDEpICogdGhpcy5wYWdlU2l6ZSArIDEsXG4gICAgICAgICAgICB0bzogdG9QYWdlU2l6ZSA+IHRoaXMudG90YWwgPyB0aGlzLnRvdGFsIDogdG9QYWdlU2l6ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmluaXRpYWxpemVQYWdlcyh0aGlzLnBhZ2VJbmRleCwgdGhpcy5wYWdlQ291bnQpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VDb3VudCgpIHtcbiAgICAgICAgbGV0IHBhZ2VDb3VudCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVBhZ2VzICYmIHRoaXMuY3VzdG9tUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcGFnZUNvdW50ID0gdGhpcy5jdXN0b21QYWdlc1t0aGlzLmN1c3RvbVBhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFnZUNvdW50ID0gdGhpcy5wYWdlU2l6ZSA8IDEgPyAxIDogTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGgubWF4KHBhZ2VDb3VudCB8fCAwLCAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYWdlKGluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgYWN0aXZlOiBib29sZWFuKTogeyBpbmRleDogbnVtYmVyOyB0ZXh0OiBzdHJpbmc7IGFjdGl2ZTogYm9vbGVhbiB9IHtcbiAgICAgICAgcmV0dXJuIHsgaW5kZXgsIHRleHQsIGFjdGl2ZSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVBhZ2VzKHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlQ291bnQ6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21QYWdlcyAmJiB0aGlzLmN1c3RvbVBhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucGFnZXMgPSB0aGlzLmN1c3RvbVBhZ2VzLm1hcChwYWdlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogcGFnZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogcGFnZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHBhZ2UgPT09ICtwYWdlSW5kZXhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFnZXMgPSBbXTtcbiAgICAgICAgY29uc3QgbWFyZ2luYWxDb3VudCA9IHRoaXMubWFyZ2luYWxDb3VudDtcbiAgICAgICAgY29uc3QgcmFuZ2VDb3VudCA9IHRoaXMuY29uZmlnLnJhbmdlQ291bnQ7XG4gICAgICAgIGNvbnN0IG1heENvdW50ID0gdGhpcy5jb25maWcubWF4Q291bnQ7XG4gICAgICAgIGNvbnN0IGlzTWF4U2l6ZWQgPSBwYWdlQ291bnQgPiBtYXhDb3VudDtcbiAgICAgICAgaWYgKGlzTWF4U2l6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBhZ2VzID0gW107XG4gICAgICAgICAgICBjb25zdCBhZnRlclBhZ2VzID0gW107XG5cbiAgICAgICAgICAgIC8vIGJlZm9yZVBhZ2VzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBtYXJnaW5hbENvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBiZWZvcmVQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UoaSwgaS50b1N0cmluZygpLCBpID09PSBwYWdlSW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYWdlSW5kZXggLSBNYXRoLmNlaWwocmFuZ2VDb3VudCAvIDIpID4gdGhpcy5maXJzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKHBhZ2VJbmRleCAtIHJhbmdlQ291bnQsICfCt8K3wrcnLCBudWxsKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGFmdGVyUGFnZXNcbiAgICAgICAgICAgIGlmIChwYWdlSW5kZXggKyBNYXRoLmNlaWwocmFuZ2VDb3VudCAvIDIpIDwgcGFnZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXJQYWdlcy5wdXNoKHRoaXMubWFrZVBhZ2UocGFnZUluZGV4ICsgcmFuZ2VDb3VudCwgJ8K3wrfCtycsIG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBwYWdlQ291bnQgLSBtYXJnaW5hbENvdW50ICsgMTsgaSA8PSBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGFmdGVyUGFnZXMucHVzaCh0aGlzLm1ha2VQYWdlKGksIGkudG9TdHJpbmcoKSwgaSA9PT0gcGFnZUluZGV4KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1haW5QYWdlc1xuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgobWFyZ2luYWxDb3VudCArIDEsIHBhZ2VJbmRleCAtIChyYW5nZUNvdW50IC0gMSkgLyAyKTtcbiAgICAgICAgICAgIGxldCBlbmQgPSBNYXRoLm1pbihwYWdlSW5kZXggKyAocmFuZ2VDb3VudCAtIDEpIC8gMiwgcGFnZUNvdW50IC0gbWFyZ2luYWxDb3VudCk7XG4gICAgICAgICAgICBpZiAocGFnZUluZGV4IC0gMSA8PSBtYXJnaW5hbENvdW50KSB7XG4gICAgICAgICAgICAgICAgZW5kID0gcmFuZ2VDb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYWdlQ291bnQgLSBwYWdlSW5kZXggPD0gbWFyZ2luYWxDb3VudCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gcGFnZUNvdW50IC0gcmFuZ2VDb3VudCArIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGkgPT09ICtwYWdlSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhZ2VzID0gWy4uLmJlZm9yZVBhZ2VzLCAuLi5wYWdlcywgLi4uYWZ0ZXJQYWdlc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGkgPT09ICtwYWdlSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VzID0gcGFnZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYWdlQ2hhbmdlKHBhZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZUluZGV4Q2hhbmdlLmVtaXQocGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHsgcGFnZTogcGFnZUluZGV4IH0pO1xuICAgIH1cblxuICAgIHNlbGVjdFBhZ2UocGFnZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgcGFnZUluZGV4ID09PSB0aGlzLmZpcnN0SW5kZXggLSAxIHx8IHBhZ2VJbmRleCA9PT0gdGhpcy5wYWdlQ291bnQgKyAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlKHRoaXMucGFnZUluZGV4KTtcbiAgICB9XG5cbiAgICBqdW1wUGFnZShpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSAraW5wdXQudmFsdWU7XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHBhZ2VJbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UGFnZShwYWdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBldmVudDtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQYWdlQ291bnQoKTtcbiAgICAgICAgdGhpcy5zZXRQYWdlSW5kZXgodGhpcy5wYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKGhpZGVPblNpbmdsZVBhZ2UgJiYgdG90YWwgPiBwYWdlU2l6ZSkgfHwgIWhpZGVPblNpbmdsZVBhZ2VcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLXRvdGFsXCIgKm5nSWY9XCJzaG93VG90YWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGVSZWYoc2hvd1RvdGFsKTsgZWxzZSB0b3RhbFRlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWwgPiAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtci0zXCI+XG4gICAgICAgICAg56ysPHNwYW4gY2xhc3M9XCJudW1iZXJcIj4ge3sgcmFuZ2UuZnJvbSB9fS17eyByYW5nZS50byB9fSA8L3NwYW4+e3sgY29uZmlnLnVuaXQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAg5YWxPHNwYW4gY2xhc3M9XCJudW1iZXJcIj4ge3sgdG90YWwgfX0gPC9zcGFuPnt7IGNvbmZpZy51bml0IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNob3dUb3RhbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdG90YWwsIHJhbmdlOiByYW5nZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tc2l6ZVwiICpuZ0lmPVwiY29uZmlnLnNob3dTaXplQ2hhbmdlclwiPlxuICAgICAgPHRoeS1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RQYWdlU2l6ZVwiIFt0aHlTaXplXT1cInNlbGVjdFNpemVcIiBbdGh5RGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPHRoeS1vcHRpb25cbiAgICAgICAgICBjbGFzcz1cInBhZ2Utc2l6ZS1vcHRpb25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgW3RoeVZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgICAgW3RoeUxhYmVsVGV4dF09XCJvcHRpb24gKyAnICcgKyBjb25maWcudW5pdCArICcv6aG1J1wiPjwvdGh5LW9wdGlvbj5cbiAgICAgIDwvdGh5LXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJ0aHktcGFnaW5hdGlvbi1wYWdlc1wiPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IGZpcnN0SW5kZXhcIlxuICAgICAgICAqbmdJZj1cImNvbmZpZy5ib3VuZGFyeUxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UoZmlyc3RJbmRleClcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHRoeS1wYWdlLWxpbmstZmlyc3RcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5maXJzdFRleHRcIj57eyBjb25maWcuZmlyc3RUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5maXJzdEljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLmZpcnN0SWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IHBhZ2VJbmRleCA9PT0gZmlyc3RJbmRleFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmRpcmVjdGlvbkxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUluZGV4IC0gMSlcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHBhZ2UtbGluay1wcmVcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wcmV2aW91c1RleHRcIj57eyBjb25maWcucHJldmlvdXNUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wcmV2aW91c0ljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLnByZXZpb3VzSWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJ0aHktcGFnZS1pdGVtIHRoeS1wYWdlLW51bWJlclwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZS5hY3RpdmVcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlLmluZGV4KVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj57eyBwYWdlLnRleHQgfX08L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbSBwYWdlLWl0ZW0tbmV4dFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHBhZ2VDb3VudFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmRpcmVjdGlvbkxpbmtzXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUluZGV4ICsgMSlcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0aHktcGFnZS1saW5rIHRoeS1wYWdlLWxpbmstbmV4dFwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLm5leHRUZXh0XCI+e3sgY29uZmlnLm5leHRUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5uZXh0SWNvblwiPlxuICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJjb25maWcubmV4dEljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwidGh5LXBhZ2UtaXRlbVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwYWdlSW5kZXggPT09IHBhZ2VDb3VudFwiXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmJvdW5kYXJ5TGlua3NcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlQ291bnQpXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidGh5LXBhZ2UtbGluayB0aHktcGFnZS1saW5rLWxhc3RcIiBocmVmPVwiamF2YXNjcmlwdDo7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5sYXN0VGV4dFwiPnt7IGNvbmZpZy5sYXN0VGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcubGFzdEljb25cIj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiY29uZmlnLmxhc3RJY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuc2hvd1RvdGFsUGFnZUNvdW50ICYmIGNvbmZpZy50b3RhbFBhZ2VzRm9ybWF0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tY291bnRcIiBbaW5uZXJIVE1MXT1cInBhZ2VDb3VudCB8IHBhZ2luYXRpb25Ub3RhbFBhZ2VzRm9ybWF0IDogY29uZmlnLnRvdGFsUGFnZXNGb3JtYXRcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnNob3dRdWlja0p1bXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRoeS1wYWdpbmF0aW9uLWp1bXBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGh5LXBhZ2luYXRpb24tanVtcGVyLWlucHV0XCI+XG4gICAgICAgICAg6Lez6IezXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgI2p1bXBlcklucHV0ICh0aHlFbnRlcik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAoYmx1cik9XCJqdW1wUGFnZShqdW1wZXJJbnB1dClcIiAvPlxuICAgICAgICAgIOmhtVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -18,7 +18,8 @@ export const PaginationDefaultConfig = {
18
18
  nextIcon: 'angle-right',
19
19
  totalPagesFormat: '共{total}页',
20
20
  showSizeChanger: false,
21
- pageSizeOptions: [10, 20, 50, 100]
21
+ pageSizeOptions: [10, 20, 50, 100],
22
+ unit: '条'
22
23
  };
23
24
  export const THY_PAGINATION_CONFIG = new InjectionToken('THY_PAGINATION_CONFIG', {
24
25
  providedIn: 'root',
@@ -26,4 +27,4 @@ export const THY_PAGINATION_CONFIG = new InjectionToken('THY_PAGINATION_CONFIG',
26
27
  return {};
27
28
  }
28
29
  });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBNkI7SUFDN0QsYUFBYSxFQUFFLEtBQUs7SUFDcEIsY0FBYyxFQUFFLElBQUk7SUFDcEIsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsZUFBZSxFQUFFLElBQUk7SUFDckIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixTQUFTLEVBQUUsS0FBSztJQUNoQixRQUFRLEVBQUUsTUFBTTtJQUNoQixZQUFZLEVBQUUsRUFBRTtJQUNoQixRQUFRLEVBQUUsRUFBRTtJQUNaLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEVBQUU7SUFDWixZQUFZLEVBQUUsWUFBWTtJQUMxQixRQUFRLEVBQUUsYUFBYTtJQUN2QixnQkFBZ0IsRUFBRSxXQUFXO0lBQzdCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLGVBQWUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztDQUNyQyxDQUFDO0FBS0YsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHVCQUF1QixFQUFFO0lBQ2xHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDVixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UGFnaW5hdGlvbkNvbmZpZ01vZGVsIH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkFOR0VfQ09VTlQgPSA1O1xuXG5leHBvcnQgY29uc3QgUGFnaW5hdGlvbkRlZmF1bHRDb25maWc6IFRoeVBhZ2luYXRpb25Db25maWdNb2RlbCA9IHtcbiAgICBib3VuZGFyeUxpbmtzOiBmYWxzZSxcbiAgICBkaXJlY3Rpb25MaW5rczogdHJ1ZSxcbiAgICBwYWdlU2l6ZTogMjAsXG4gICAgbWF4Q291bnQ6IDcsXG4gICAgcmFuZ2VDb3VudDogREVGQVVMVF9SQU5HRV9DT1VOVCxcbiAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXG4gICAgc2hvd1RvdGFsUGFnZUNvdW50OiB0cnVlLFxuICAgIGZpcnN0VGV4dDogJ+esrOS4gOmhtScsXG4gICAgbGFzdFRleHQ6ICfmnIDlkI7kuIDpobUnLFxuICAgIHByZXZpb3VzVGV4dDogJycsXG4gICAgbmV4dFRleHQ6ICcnLFxuICAgIGZpcnN0SWNvbjogJycsXG4gICAgbGFzdEljb246ICcnLFxuICAgIHByZXZpb3VzSWNvbjogJ2FuZ2xlLWxlZnQnLFxuICAgIG5leHRJY29uOiAnYW5nbGUtcmlnaHQnLFxuICAgIHRvdGFsUGFnZXNGb3JtYXQ6ICflhbF7dG90YWx96aG1JyxcbiAgICBzaG93U2l6ZUNoYW5nZXI6IGZhbHNlLFxuICAgIHBhZ2VTaXplT3B0aW9uczogWzEwLCAyMCwgNTAsIDEwMF1cbn07XG5leHBvcnQgaW50ZXJmYWNlIFRoeVBhZ2luYXRpb25Db25maWcge1xuICAgIG1haW4/OiBUaHlQYWdpbmF0aW9uQ29uZmlnTW9kZWw7XG59XG5cbmV4cG9ydCBjb25zdCBUSFlfUEFHSU5BVElPTl9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGh5UGFnaW5hdGlvbkNvbmZpZz4oJ1RIWV9QQUdJTkFUSU9OX0NPTkZJRycsIHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufSk7XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBNkI7SUFDN0QsYUFBYSxFQUFFLEtBQUs7SUFDcEIsY0FBYyxFQUFFLElBQUk7SUFDcEIsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsZUFBZSxFQUFFLElBQUk7SUFDckIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixTQUFTLEVBQUUsS0FBSztJQUNoQixRQUFRLEVBQUUsTUFBTTtJQUNoQixZQUFZLEVBQUUsRUFBRTtJQUNoQixRQUFRLEVBQUUsRUFBRTtJQUNaLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEVBQUU7SUFDWixZQUFZLEVBQUUsWUFBWTtJQUMxQixRQUFRLEVBQUUsYUFBYTtJQUN2QixnQkFBZ0IsRUFBRSxXQUFXO0lBQzdCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLGVBQWUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNsQyxJQUFJLEVBQUUsR0FBRztDQUNaLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDbEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQYWdpbmF0aW9uQ29uZmlnTW9kZWwgfSBmcm9tICcuL3BhZ2luYXRpb24uY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9SQU5HRV9DT1VOVCA9IDU7XG5cbmV4cG9ydCBjb25zdCBQYWdpbmF0aW9uRGVmYXVsdENvbmZpZzogVGh5UGFnaW5hdGlvbkNvbmZpZ01vZGVsID0ge1xuICAgIGJvdW5kYXJ5TGlua3M6IGZhbHNlLFxuICAgIGRpcmVjdGlvbkxpbmtzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiAyMCxcbiAgICBtYXhDb3VudDogNyxcbiAgICByYW5nZUNvdW50OiBERUZBVUxUX1JBTkdFX0NPVU5ULFxuICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcbiAgICBzaG93VG90YWxQYWdlQ291bnQ6IHRydWUsXG4gICAgZmlyc3RUZXh0OiAn56ys5LiA6aG1JyxcbiAgICBsYXN0VGV4dDogJ+acgOWQjuS4gOmhtScsXG4gICAgcHJldmlvdXNUZXh0OiAnJyxcbiAgICBuZXh0VGV4dDogJycsXG4gICAgZmlyc3RJY29uOiAnJyxcbiAgICBsYXN0SWNvbjogJycsXG4gICAgcHJldmlvdXNJY29uOiAnYW5nbGUtbGVmdCcsXG4gICAgbmV4dEljb246ICdhbmdsZS1yaWdodCcsXG4gICAgdG90YWxQYWdlc0Zvcm1hdDogJ+WFsXt0b3RhbH3pobUnLFxuICAgIHNob3dTaXplQ2hhbmdlcjogZmFsc2UsXG4gICAgcGFnZVNpemVPcHRpb25zOiBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICB1bml0OiAn5p2hJ1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgVGh5UGFnaW5hdGlvbkNvbmZpZyB7XG4gICAgbWFpbj86IFRoeVBhZ2luYXRpb25Db25maWdNb2RlbDtcbn1cblxuZXhwb3J0IGNvbnN0IFRIWV9QQUdJTkFUSU9OX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUaHlQYWdpbmF0aW9uQ29uZmlnPignVEhZX1BBR0lOQVRJT05fQ09ORklHJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59KTtcbiJdfQ==
@@ -1,9 +1,10 @@
1
- import { Directive, ElementRef, NgZone, Input, ViewContainerRef, HostBinding, ChangeDetectorRef, numberAttribute, booleanAttribute } from '@angular/core';
1
+ import { Directive, ElementRef, NgZone, Input, ViewContainerRef, HostBinding, ChangeDetectorRef, numberAttribute } from '@angular/core';
2
2
  import { Platform } from '@angular/cdk/platform';
3
3
  import { FocusMonitor } from '@angular/cdk/a11y';
4
4
  import { ThyOverlayDirectiveBase } from 'ngx-tethys/core';
5
5
  import { ThyPopover } from './popover.service';
6
6
  import { ThyPopoverConfig } from './popover.config';
7
+ import { coerceBooleanProperty } from 'ngx-tethys/util';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/cdk/platform";
9
10
  import * as i2 from "@angular/cdk/a11y";
@@ -116,7 +117,7 @@ export class ThyPopoverDirective extends ThyOverlayDirectiveBase {
116
117
  this.dispose();
117
118
  }
118
119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ThyPopoverDirective, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i2.FocusMonitor }, { token: i0.NgZone }, { token: i3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
119
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.0", type: ThyPopoverDirective, isStandalone: true, selector: "[thyPopover]", inputs: { content: ["thyPopover", "content"], thyTrigger: "thyTrigger", thyPlacement: "thyPlacement", thyOffset: ["thyOffset", "thyOffset", numberAttribute], thyConfig: "thyConfig", thyShowDelay: ["thyShowDelay", "thyShowDelay", numberAttribute], thyHideDelay: ["thyHideDelay", "thyHideDelay", numberAttribute], thyAutoAdaptive: ["thyAutoAdaptive", "thyAutoAdaptive", booleanAttribute], thyDisabled: ["thyDisabled", "thyDisabled", booleanAttribute] }, host: { properties: { "class.thy-popover-opened": "this.popoverOpened" } }, usesInheritance: true, ngImport: i0 }); }
120
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.0", type: ThyPopoverDirective, isStandalone: true, selector: "[thyPopover]", inputs: { content: ["thyPopover", "content"], thyTrigger: "thyTrigger", thyPlacement: "thyPlacement", thyOffset: ["thyOffset", "thyOffset", numberAttribute], thyConfig: "thyConfig", thyShowDelay: ["thyShowDelay", "thyShowDelay", numberAttribute], thyHideDelay: ["thyHideDelay", "thyHideDelay", numberAttribute], thyAutoAdaptive: ["thyAutoAdaptive", "thyAutoAdaptive", coerceBooleanProperty], thyDisabled: ["thyDisabled", "thyDisabled", coerceBooleanProperty] }, host: { properties: { "class.thy-popover-opened": "this.popoverOpened" } }, usesInheritance: true, ngImport: i0 }); }
120
121
  }
121
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ThyPopoverDirective, decorators: [{
122
123
  type: Directive,
@@ -147,9 +148,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
147
148
  args: [{ transform: numberAttribute }]
148
149
  }], thyAutoAdaptive: [{
149
150
  type: Input,
150
- args: [{ transform: booleanAttribute }]
151
+ args: [{ transform: coerceBooleanProperty }]
151
152
  }], thyDisabled: [{
152
153
  type: Input,
153
- args: [{ transform: booleanAttribute }]
154
+ args: [{ transform: coerceBooleanProperty }]
154
155
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBRU4sS0FBSyxFQUdMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQW1DLE1BQU0saUJBQWlCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUVwRDs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHVCQUF1QjtJQVE1RDs7T0FFRztJQUNILElBQWEsVUFBVSxDQUFDLE9BQTBCO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFrQkQ7O09BRUc7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksWUFBWSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQU9EOzs7T0FHRztJQUNILElBQTRDLFdBQVcsQ0FBQyxLQUFjO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFJRCxZQUNXLFVBQXNCLEVBQzdC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dEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFNTSxXQUFXO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFRoeU92ZXJsYXlEaXJlY3RpdmVCYXNlLCBUaHlPdmVybGF5VHJpZ2dlciwgVGh5UGxhY2VtZW50IH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICcuL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnLi9wb3BvdmVyLXJlZic7XG5pbXBvcnQgeyBUaHlQb3BvdmVyQ29uZmlnIH0gZnJvbSAnLi9wb3BvdmVyLmNvbmZpZyc7XG5cbi8qKlxuICog5by55Ye65oKs5rWu5bGC5oyH5LukXG4gKiBAbmFtZSB0aHlQb3BvdmVyXG4gKiBAb3JkZXIgNTBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGh5UG9wb3Zlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGh5UG9wb3ZlckRpcmVjdGl2ZSBleHRlbmRzIFRoeU92ZXJsYXlEaXJlY3RpdmVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBIb3N0QmluZGluZyhgY2xhc3MudGh5LXBvcG92ZXItb3BlbmVkYCkgcG9wb3Zlck9wZW5lZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5oKs5rWu57uE5Lu25oiW6ICF5qih5p2/XG4gICAgICovXG4gICAgQElucHV0KCd0aHlQb3BvdmVyJykgY29udGVudDogQ29tcG9uZW50VHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIOW8ueWHuuaCrOa1ruWxgueahOinpuWPkeaWueW8j1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlUcmlnZ2VyKHRyaWdnZXI6IFRoeU92ZXJsYXlUcmlnZ2VyKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5by55Ye65oKs5rWu5bGC55qE5L2N572uXG4gICAgICogQHR5cGUgdG9wIHwgdG9wTGVmdCB8IHRvcFJpZ2h0IHwgYm90dG9tIHwgYm90dG9tTGVmdCB8IGJvdHRvbVJpZ2h0IHwgbGVmdCB8IGxlZnRUb3AgfCBsZWZ0Qm90dG9tIHwgcmlnaHQgfCAgcmlnaHRUb3AgfCByaWdodEJvdHRvbVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlbWVudDogVGh5UGxhY2VtZW50ID0gJ2JvdHRvbSc7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rmgqzmta7lsYLnmoTlgY/np7vph49cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0aHlPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rmgqzmta7lsYLnmoTphY3nva5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDb25maWc6IFRoeVBvcG92ZXJDb25maWc7XG5cbiAgICAvKipcbiAgICAgKiDmmL7npLrlu7bov5/ml7bpl7RcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlTaG93RGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNob3dEZWxheSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOmakOiXj+W7tui/n+aXtumXtFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeUhpZGVEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuaGlkZURlbGF5ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo6YCC6YWN5YaF5a655Y+Y5YyW6YeN5paw6K6h566X5L2N572uXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHRoeUF1dG9BZGFwdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55So5omT5byA5oKs5rWu5bGCXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHRoeURpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgcGxhdGZvcm0sIGZvY3VzTW9uaXRvciwgbmdab25lLCB0cnVlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLnRyaWdnZXIgPT09ICdjbGljaycgfHwgdGhpcy50cmlnZ2VyID09PSAnZm9jdXMnLFxuICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMudGh5UGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy50aHlPZmZzZXQsXG4gICAgICAgICAgICAgICAgYXV0b0FkYXB0aXZlOiB0aGlzLnRoeUF1dG9BZGFwdGl2ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudGh5Q29uZmlnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZiA9IHRoaXMucG9wb3Zlci5vcGVuKHRoaXMuY29udGVudCwgY29uZmlnKTtcblxuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpO1xuICAgIH1cblxuICAgIHNob3coZGVsYXk6IG51bWJlciA9IHRoaXMuc2hvd0RlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy5oaWRlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICh0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgZGVsYXkgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gb3ZlcmxheVJlZjtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIGhpZGUoZGVsYXk6IG51bWJlciA9IHRoaXMuaGlkZURlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucG9wb3ZlclJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5oaWRlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICB9XG59XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBRU4sS0FBSyxFQUdMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQW1DLE1BQU0saUJBQWlCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUV4RDs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHVCQUF1QjtJQVE1RDs7T0FFRztJQUNILElBQWEsVUFBVSxDQUFDLE9BQTBCO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFrQkQ7O09BRUc7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksWUFBWSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQU9EOzs7T0FHRztJQUNILElBQWlELFdBQVcsQ0FBQyxLQUFjO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFD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QVMsRUFBRSxlQUFlLEVBQUU7Z0JBUVEsZUFBZTtzQkFBM0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNTSxXQUFXO3NCQUEzRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBUaHlPdmVybGF5RGlyZWN0aXZlQmFzZSwgVGh5T3ZlcmxheVRyaWdnZXIsIFRoeVBsYWNlbWVudCB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlclJlZiB9IGZyb20gJy4vcG9wb3Zlci1yZWYnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlckNvbmZpZyB9IGZyb20gJy4vcG9wb3Zlci5jb25maWcnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcblxuLyoqXG4gKiDlvLnlh7rmgqzmta7lsYLmjIfku6RcbiAqIEBuYW1lIHRoeVBvcG92ZXJcbiAqIEBvcmRlciA1MFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aHlQb3BvdmVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQb3BvdmVyRGlyZWN0aXZlIGV4dGVuZHMgVGh5T3ZlcmxheURpcmVjdGl2ZUJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktcG9wb3Zlci1vcGVuZWRgKSBwb3BvdmVyT3BlbmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmgqzmta7nu4Tku7bmiJbogIXmqKHmnb9cbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVBvcG92ZXInKSBjb250ZW50OiBDb21wb25lbnRUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICog5by55Ye65oKs5rWu5bGC55qE6Kem5Y+R5pa55byPXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeVRyaWdnZXIodHJpZ2dlcjogVGh5T3ZlcmxheVRyaWdnZXIpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyID0gdHJpZ2dlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rmgqzmta7lsYLnmoTkvY3nva5cbiAgICAgKiBAdHlwZSB0b3AgfCB0b3BMZWZ0IHwgdG9wUmlnaHQgfCBib3R0b20gfCBib3R0b21MZWZ0IHwgYm90dG9tUmlnaHQgfCBsZWZ0IHwgbGVmdFRvcCB8IGxlZnRCb3R0b20gfCByaWdodCB8ICByaWdodFRvcCB8IHJpZ2h0Qm90dG9tXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2VtZW50OiBUaHlQbGFjZW1lbnQgPSAnYm90dG9tJztcblxuICAgIC8qKlxuICAgICAqIOW8ueWHuuaCrOa1ruWxgueahOWBj+enu+mHj1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRoeU9mZnNldDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIOW8ueWHuuaCrOa1ruWxgueahOmFjee9rlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZztcblxuICAgIC8qKlxuICAgICAqIOaYvuekuuW7tui/n+aXtumXtFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVNob3dEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2hvd0RlbGF5ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6ZqQ6JeP5bu26L+f5pe26Ze0XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5SGlkZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5oaWRlRGVsYXkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDoh6rliqjpgILphY3lhoXlrrnlj5jljJbph43mlrDorqHnrpfkvY3nva5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBdXRvQWRhcHRpdmUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqOaJk+W8gOaCrOa1ruWxglxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgc2V0IHRoeURpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgcGxhdGZvcm0sIGZvY3VzTW9uaXRvciwgbmdab25lLCB0cnVlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLnRyaWdnZXIgPT09ICdjbGljaycgfHwgdGhpcy50cmlnZ2VyID09PSAnZm9jdXMnLFxuICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMudGh5UGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy50aHlPZmZzZXQsXG4gICAgICAgICAgICAgICAgYXV0b0FkYXB0aXZlOiB0aGlzLnRoeUF1dG9BZGFwdGl2ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudGh5Q29uZmlnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZiA9IHRoaXMucG9wb3Zlci5vcGVuKHRoaXMuY29udGVudCwgY29uZmlnKTtcblxuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpO1xuICAgIH1cblxuICAgIHNob3coZGVsYXk6IG51bWJlciA9IHRoaXMuc2hvd0RlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy5oaWRlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICh0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgZGVsYXkgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gb3ZlcmxheVJlZjtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIGhpZGUoZGVsYXk6IG51bWJlciA9IHRoaXMuaGlkZURlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucG9wb3ZlclJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5oaWRlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICB9XG59XG4iXX0=
@@ -28,6 +28,7 @@ export class ThyPopover extends ThyAbstractOverlayService {
28
28
  const positionStrategy = new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);
29
29
  const positions = getFlexiblePositions(config.placement, config.offset, 'thy-popover');
30
30
  positionStrategy.withPositions(positions);
31
+ positionStrategy.withPush(config.canPush);
31
32
  positionStrategy.withGrowAfterOpen(true);
32
33
  positionStrategy.withTransformOriginOn('.thy-popover-container');
33
34
  positionStrategy.positionChanges.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(change => {
@@ -209,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
209
210
  type: Inject,
210
211
  args: [DOCUMENT]
211
212
  }] }, { type: i2.Platform }, { type: i1.OverlayContainer }] });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsb0JBQW9CLEVBQXlCLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckksT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlDQUFpQyxFQUVqQyxPQUFPLEVBRVAsZ0JBQWdCLEVBSWhCLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFFbkksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ25CLE1BQU0sa0JBQWtCLENB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QUFDLDBCQUEwQjs7MEJBRWpDLE1BQU07MkJBQUMsMkJBQTJCOzswQkFJbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZU9yVGVtcGxhdGVSZWYsIGdldEZsZXhpYmxlUG9zaXRpb25zLCBUaHlBYnN0cmFjdE92ZXJsYXlSZWYsIFRoeUFic3RyYWN0T3ZlcmxheVNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgRnVuY3Rpb25Qcm9wLCBpc0Z1bmN0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQXJyYXksIGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBPdmVybGF5Q29udGFpbmVyLFxuICAgIE92ZXJsYXlSZWYsXG4gICAgUG9zaXRpb25TdHJhdGVneSxcbiAgICBTY3JvbGxTdHJhdGVneSxcbiAgICBWaWV3cG9ydFJ1bGVyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBTdGF0aWNQcm92aWRlciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGh5UG9wb3ZlckNvbnRhaW5lciB9IGZyb20gJy4vcG9wb3Zlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUludGVybmFsUG9wb3ZlclJlZiwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJy4vcG9wb3Zlci1yZWYnO1xuaW1wb3J0IHtcbiAgICBUSFlfUE9QT1ZFUl9ERUZBVUxUX0NPTkZJRyxcbiAgICBUSFlfUE9QT1ZFUl9ERUZBVUxUX0NPTkZJR19WQUxVRSxcbiAgICBUSFlfUE9QT1ZFUl9TQ1JPTExfU1RSQVRFR1ksXG4gICAgVGh5UG9wb3ZlckNvbmZpZ1xufSBmcm9tICcuL3BvcG92ZXIuY29uZmlnJztcbmltcG9ydCB7IHBvcG92ZXJBYnN0cmFjdE92ZXJsYXlPcHRpb25zIH0gZnJvbSAnLi9wb3BvdmVyLm9wdGlvbnMnO1xuaW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBvcmRlciAxMFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGh5UG9wb3ZlciBleHRlbmRzIFRoeUFic3RyYWN0T3ZlcmxheVNlcnZpY2U8VGh5UG9wb3ZlckNvbmZpZywgVGh5UG9wb3ZlckNvbnRhaW5lcj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBvcmlnaW5JbnN0YW5jZXNNYXAgPSBuZXcgTWFwPFxuICAgICAgICBFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZztcbiAgICAgICAgICAgIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55LCBhbnk+O1xuICAgICAgICB9XG4gICAgPigpO1xuXG4gICAgcHJpdmF0ZSBidWlsZFBvc2l0aW9uU3RyYXRlZ3k8VERhdGE+KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZzxURGF0YT4pOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4gPSBjb25maWcub3JpZ2luUG9zaXRpb24gPyBjb25maWcub3JpZ2luUG9zaXRpb24gOiBjb25maWcub3JpZ2luO1xuICAgICAgICAvLyBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pO1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdwb3J0UnVsZXIsXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudCxcbiAgICAgICAgICAgIHRoaXMuX3BsYXRmb3JtLFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheUNvbnRhaW5lclxuICAgICAgICApO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBnZXRGbGV4aWJsZVBvc2l0aW9ucyhjb25maWcucGxhY2VtZW50LCBjb25maWcub2Zmc2V0LCAndGh5LXBvcG92ZXInKTtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKHBvc2l0aW9ucyk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aEdyb3dBZnRlck9wZW4odHJ1ZSk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcudGh5LXBvcG92ZXItY29udGFpbmVyJyk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2Uuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzLmlzT3ZlcmxheUNsaXBwZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBwb3NpdGlvbiBjaGFuZ2VzIG9jY3VyIGFuZCB0aGUgb3ZlcmxheSBpcyBjbGlwcGVkIGJ5XG4gICAgICAgICAgICAgICAgLy8gYSBwYXJlbnQgc2Nyb2xsYWJsZSB0aGVuIGNsb3NlIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZyk6IFNjcm9sbFN0cmF0ZWd5IHtcbiAgICAgICAgaWYgKGNvbmZpZy5zY3JvbGxTdHJhdGVneSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zY3JvbGxTdHJhdGVneTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcm9sbFN0cmF0ZWd5ICYmIGlzRnVuY3Rpb24odGhpcy5zY3JvbGxTdHJhdGVneSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbFN0cmF0ZWd5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJ1aWxkT3ZlcmxheUNvbmZpZzxURGF0YT4oY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnPFREYXRhPik6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5idWlsZFBvc2l0aW9uU3RyYXRlZ3koY29uZmlnKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuYnVpbGRCYXNlT3ZlcmxheUNvbmZpZyhjb25maWcsICd0aHktcG9wb3Zlci1wYW5lbCcpO1xuICAgICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICBvdmVybGF5Q29uZmlnLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5idWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBvdmVybGF5Q29uZmlnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhdHRhY2hPdmVybGF5Q29udGFpbmVyKG92ZXJsYXk6IE92ZXJsYXlSZWYsIGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZzxhbnk+KTogVGh5UG9wb3ZlckNvbnRhaW5lciB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmplY3RvciA9IGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGh5UG9wb3ZlckNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChUaHlQb3BvdmVyQ29udGFpbmVyLCBjb25maWcudmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBvdmVybGF5LmF0dGFjaDxUaHlQb3BvdmVyQ29udGFpbmVyPihjb250YWluZXJQb3J0YWwpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBYnN0cmFjdE92ZXJsYXlSZWY8VCwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBjb250YWluZXJJbnN0YW5jZTogVGh5UG9wb3ZlckNvbnRhaW5lcixcbiAgICAgICAgY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnXG4gICAgKTogVGh5QWJzdHJhY3RPdmVybGF5UmVmPFQsIFRoeVBvcG92ZXJDb250YWluZXIsIFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaHlJbnRlcm5hbFBvcG92ZXJSZWYob3ZlcmxheVJlZiwgY29udGFpbmVySW5zdGFuY2UsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUluamVjdG9yPFQ+KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZywgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUPiwgcG9wb3ZlckNvbnRhaW5lcjogVGh5UG9wb3ZlckNvbnRhaW5lcik6IEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgdXNlckluamVjdG9yID0gY29uZmlnICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuXG4gICAgICAgIGNvbnN0IGluamVjdGlvblRva2VuczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgICAgICAgIHsgcHJvdmlkZTogVGh5UG9wb3ZlckNvbnRhaW5lciwgdXNlVmFsdWU6IHBvcG92ZXJDb250YWluZXIgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBUaHlQb3BvdmVyUmVmLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBwb3BvdmVyUmVmXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGNvbmZpZy5kaXJlY3Rpb24gJiYgKCF1c2VySW5qZWN0b3IgfHwgIXVzZXJJbmplY3Rvci5nZXQ8RGlyZWN0aW9uYWxpdHkgfCBudWxsPihEaXJlY3Rpb25hbGl0eSwgbnVsbCkpKSB7XG4gICAgICAgICAgICBpbmplY3Rpb25Ub2tlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZTogb2YoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsIHByb3ZpZGVyczogaW5qZWN0aW9uVG9rZW5zIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3JpZ2luRWxlbWVudEFkZEFjdGl2ZUNsYXNzKGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSB7XG4gICAgICAgICAgICBjb2VyY2VFbGVtZW50PEhUTUxFbGVtZW50Pihjb25maWcub3JpZ2luKS5jbGFzc0xpc3QuYWRkKC4uLmNvZXJjZUFycmF5KGNvbmZpZy5vcmlnaW5BY3RpdmVDbGFzcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcub3JpZ2luQWN0aXZlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNvZXJjZUVsZW1lbnQ8SFRNTEVsZW1lbnQ+KGNvbmZpZy5vcmlnaW4pLmNsYXNzTGlzdC5yZW1vdmUoLi4uY29lcmNlQXJyYXkoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHKVxuICAgICAgICBkZWZhdWx0Q29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnLFxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX1NDUk9MTF9TVFJBVEVHWSlcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IEZ1bmN0aW9uUHJvcDxTY3JvbGxTdHJhdGVneT4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICAgICkge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIHBvcG92ZXJBYnN0cmFjdE92ZXJsYXlPcHRpb25zLFxuICAgICAgICAgICAgb3ZlcmxheSxcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLlRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHX1ZBTFVFLFxuICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5zdXJlQ2xvc2VDbG9zZXN0KG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNsb3NlQW5kRW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jb25maWcubWFudWFsQ2xvc3VyZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlQW5kRW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZUFuZEVuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbHVlLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbG9zZUFuZEVuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmiZPlvIDmgqzmta7lsYJcbiAgICAgKi9cbiAgICBvcGVuPFQsIFREYXRhID0gdW5rbm93biwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlT3JUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgY29uZmlnPzogVGh5UG9wb3ZlckNvbmZpZzxURGF0YT5cbiAgICApOiBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoY29uZmlnLm9yaWdpbik7XG4gICAgICAgIC8vIOm7mOiupOWFs+mXreS5i+WJjeeahOW8ueWHuuahhlxuICAgICAgICAvLyAxLiDlvZPkuYvliY3nmoQgUG9wb3ZlciDorr7nva4gbWFudWFsQ2xvc3VyZSDkuLogdHJ1ZSDml7YsIOW8ueWHuuWFtuS7liBQb3BvdmVyIOaXtuS4jeiHquWKqOWFs+mXrSBtYW51YWxDbG9zdXJlIOS4uiB0cnVlIOeahCBQb3BvdmVyXG4gICAgICAgIC8vIDIuIOW9k+WJjeeahCBPcmlnaW4g5a+55bqU55qEIFBvcG92ZXIg5bey57uP5by55Ye677yM5LiN566hIG1hbnVhbENsb3N1cmUg6K6+572u5Li65L2V77yM55u05o6l5YWz6Zet5bm26L+U5ZueXG4gICAgICAgIGlmICh0aGlzLmVuc3VyZUNsb3NlQ2xvc2VzdChvcmlnaW5FbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMub3Blbk92ZXJsYXk8VCwgVFJlc3VsdD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgY29uZmlnKSBhcyBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQsIFREYXRhPjtcbiAgICAgICAgY29uZmlnID0gcG9wb3ZlclJlZi5jb250YWluZXJJbnN0YW5jZS5jb25maWc7XG4gICAgICAgIHBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmRlbGV0ZShvcmlnaW5FbGVtZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50QWRkQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgdGhpcy5vcmlnaW5JbnN0YW5jZXNNYXAuc2V0KG9yaWdpbkVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIHBvcG92ZXJSZWZcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uSWTojrflj5bmiZPlvIDnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRQb3BvdmVyQnlJZChpZDogc3RyaW5nKTogVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWJzdHJhY3RPdmVybGF5QnlJZChpZCkgYXMgVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluW3sue7j+aJk+W8gOeahOaCrOa1ruWxglxuICAgICAqL1xuICAgIGdldE9wZW5lZFBvcG92ZXJzKCk6IFRoeVBvcG92ZXJSZWY8U2FmZUFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFic3RyYWN0T3ZlcmxheXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgRmluZHMgdGhlIGNsb3Nlc3QgVGh5UG9wb3ZlclJlZiB0byBhbiBlbGVtZW50IGJ5IGxvb2tpbmcgYXQgdGhlIERPTS5cbiAgICAgKiBAZGVzY3JpcHRpb24g6YCa6L+HIERvbSDlhYPntKDmn6Xmib7mnIDov5HlvLnlh7rnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0UG9wb3ZlcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IFRoeVBvcG92ZXJSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdCgnLnRoeS1wb3BvdmVyLWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3BvdmVyQnlJZChwYXJlbnQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWFs+mXreaCrOa1ruWxglxuICAgICAqL1xuICAgIGNsb3NlPFQ+KHJlc3VsdD86IFQsIGZvcmNlPzogYm9vbGVhbikge1xuICAgICAgICBzdXBlci5jbG9zZShyZXN1bHQsIGZvcmNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgfVxufVxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsb0JBQW9CLEVBQXlCLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckksT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlDQUFpQyxFQUVqQyxPQUFPLEVBRVAsZ0JBQWdCLEVBSWhCLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFFbkksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ25CLE1BQU0sa0JBQWtCLENB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VTs7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVTs7MEJBaUhGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsMEJBQTBCOzswQkFFakMsTUFBTTsyQkFBQywyQkFBMkI7OzBCQUlsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlT3JUZW1wbGF0ZVJlZiwgZ2V0RmxleGlibGVQb3NpdGlvbnMsIFRoeUFic3RyYWN0T3ZlcmxheVJlZiwgVGh5QWJzdHJhY3RPdmVybGF5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBGdW5jdGlvblByb3AsIGlzRnVuY3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSwgY29lcmNlRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4sXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5Q29uZmlnLFxuICAgIE92ZXJsYXlDb250YWluZXIsXG4gICAgT3ZlcmxheVJlZixcbiAgICBQb3NpdGlvblN0cmF0ZWd5LFxuICAgIFNjcm9sbFN0cmF0ZWd5LFxuICAgIFZpZXdwb3J0UnVsZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBOZ1pvbmUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFN0YXRpY1Byb3ZpZGVyLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUaHlQb3BvdmVyQ29udGFpbmVyIH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5SW50ZXJuYWxQb3BvdmVyUmVmLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnLi9wb3BvdmVyLXJlZic7XG5pbXBvcnQge1xuICAgIFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHLFxuICAgIFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHX1ZBTFVFLFxuICAgIFRIWV9QT1BPVkVSX1NDUk9MTF9TVFJBVEVHWSxcbiAgICBUaHlQb3BvdmVyQ29uZmlnXG59IGZyb20gJy4vcG9wb3Zlci5jb25maWcnO1xuaW1wb3J0IHsgcG9wb3ZlckFic3RyYWN0T3ZlcmxheU9wdGlvbnMgfSBmcm9tICcuL3BvcG92ZXIub3B0aW9ucyc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5cbi8qKlxuICogQHB1YmxpY1xuICogQG9yZGVyIDEwXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaHlQb3BvdmVyIGV4dGVuZHMgVGh5QWJzdHJhY3RPdmVybGF5U2VydmljZTxUaHlQb3BvdmVyQ29uZmlnLCBUaHlQb3BvdmVyQ29udGFpbmVyPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIG9yaWdpbkluc3RhbmNlc01hcCA9IG5ldyBNYXA8XG4gICAgICAgIEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudCxcbiAgICAgICAge1xuICAgICAgICAgICAgY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnO1xuICAgICAgICAgICAgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnksIGFueT47XG4gICAgICAgIH1cbiAgICA+KCk7XG5cbiAgICBwcml2YXRlIGJ1aWxkUG9zaXRpb25TdHJhdGVneTxURGF0YT4oY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnPFREYXRhPik6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBvcmlnaW46IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneU9yaWdpbiA9IGNvbmZpZy5vcmlnaW5Qb3NpdGlvbiA/IGNvbmZpZy5vcmlnaW5Qb3NpdGlvbiA6IGNvbmZpZy5vcmlnaW47XG4gICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbik7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBuZXcgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KFxuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgdGhpcy5fdmlld3BvcnRSdWxlcixcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50LFxuICAgICAgICAgICAgdGhpcy5fcGxhdGZvcm0sXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5Q29udGFpbmVyXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKGNvbmZpZy5wbGFjZW1lbnQsIGNvbmZpZy5vZmZzZXQsICd0aHktcG9wb3ZlcicpO1xuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneS53aXRoUHVzaChjb25maWcuY2FuUHVzaCk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aEdyb3dBZnRlck9wZW4odHJ1ZSk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcudGh5LXBvcG92ZXItY29udGFpbmVyJyk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2Uuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzLmlzT3ZlcmxheUNsaXBwZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBwb3NpdGlvbiBjaGFuZ2VzIG9jY3VyIGFuZCB0aGUgb3ZlcmxheSBpcyBjbGlwcGVkIGJ5XG4gICAgICAgICAgICAgICAgLy8gYSBwYXJlbnQgc2Nyb2xsYWJsZSB0aGVuIGNsb3NlIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZyk6IFNjcm9sbFN0cmF0ZWd5IHtcbiAgICAgICAgaWYgKGNvbmZpZy5zY3JvbGxTdHJhdGVneSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zY3JvbGxTdHJhdGVneTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcm9sbFN0cmF0ZWd5ICYmIGlzRnVuY3Rpb24odGhpcy5zY3JvbGxTdHJhdGVneSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbFN0cmF0ZWd5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJ1aWxkT3ZlcmxheUNvbmZpZzxURGF0YT4oY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnPFREYXRhPik6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5idWlsZFBvc2l0aW9uU3RyYXRlZ3koY29uZmlnKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuYnVpbGRCYXNlT3ZlcmxheUNvbmZpZyhjb25maWcsICd0aHktcG9wb3Zlci1wYW5lbCcpO1xuICAgICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICBvdmVybGF5Q29uZmlnLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5idWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBvdmVybGF5Q29uZmlnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhdHRhY2hPdmVybGF5Q29udGFpbmVyKG92ZXJsYXk6IE92ZXJsYXlSZWYsIGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZzxhbnk+KTogVGh5UG9wb3ZlckNvbnRhaW5lciB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmplY3RvciA9IGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGh5UG9wb3ZlckNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChUaHlQb3BvdmVyQ29udGFpbmVyLCBjb25maWcudmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBvdmVybGF5LmF0dGFjaDxUaHlQb3BvdmVyQ29udGFpbmVyPihjb250YWluZXJQb3J0YWwpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBYnN0cmFjdE92ZXJsYXlSZWY8VCwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBjb250YWluZXJJbnN0YW5jZTogVGh5UG9wb3ZlckNvbnRhaW5lcixcbiAgICAgICAgY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnXG4gICAgKTogVGh5QWJzdHJhY3RPdmVybGF5UmVmPFQsIFRoeVBvcG92ZXJDb250YWluZXIsIFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaHlJbnRlcm5hbFBvcG92ZXJSZWYob3ZlcmxheVJlZiwgY29udGFpbmVySW5zdGFuY2UsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUluamVjdG9yPFQ+KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZywgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUPiwgcG9wb3ZlckNvbnRhaW5lcjogVGh5UG9wb3ZlckNvbnRhaW5lcik6IEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgdXNlckluamVjdG9yID0gY29uZmlnICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuXG4gICAgICAgIGNvbnN0IGluamVjdGlvblRva2VuczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgICAgICAgIHsgcHJvdmlkZTogVGh5UG9wb3ZlckNvbnRhaW5lciwgdXNlVmFsdWU6IHBvcG92ZXJDb250YWluZXIgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBUaHlQb3BvdmVyUmVmLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBwb3BvdmVyUmVmXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGNvbmZpZy5kaXJlY3Rpb24gJiYgKCF1c2VySW5qZWN0b3IgfHwgIXVzZXJJbmplY3Rvci5nZXQ8RGlyZWN0aW9uYWxpdHkgfCBudWxsPihEaXJlY3Rpb25hbGl0eSwgbnVsbCkpKSB7XG4gICAgICAgICAgICBpbmplY3Rpb25Ub2tlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZTogb2YoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsIHByb3ZpZGVyczogaW5qZWN0aW9uVG9rZW5zIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3JpZ2luRWxlbWVudEFkZEFjdGl2ZUNsYXNzKGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSB7XG4gICAgICAgICAgICBjb2VyY2VFbGVtZW50PEhUTUxFbGVtZW50Pihjb25maWcub3JpZ2luKS5jbGFzc0xpc3QuYWRkKC4uLmNvZXJjZUFycmF5KGNvbmZpZy5vcmlnaW5BY3RpdmVDbGFzcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcub3JpZ2luQWN0aXZlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNvZXJjZUVsZW1lbnQ8SFRNTEVsZW1lbnQ+KGNvbmZpZy5vcmlnaW4pLmNsYXNzTGlzdC5yZW1vdmUoLi4uY29lcmNlQXJyYXkoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHKVxuICAgICAgICBkZWZhdWx0Q29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnLFxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX1NDUk9MTF9TVFJBVEVHWSlcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IEZ1bmN0aW9uUHJvcDxTY3JvbGxTdHJhdGVneT4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICAgICkge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIHBvcG92ZXJBYnN0cmFjdE92ZXJsYXlPcHRpb25zLFxuICAgICAgICAgICAgb3ZlcmxheSxcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLlRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHX1ZBTFVFLFxuICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5zdXJlQ2xvc2VDbG9zZXN0KG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNsb3NlQW5kRW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jb25maWcubWFudWFsQ2xvc3VyZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlQW5kRW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZUFuZEVuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbHVlLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbG9zZUFuZEVuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmiZPlvIDmgqzmta7lsYJcbiAgICAgKi9cbiAgICBvcGVuPFQsIFREYXRhID0gdW5rbm93biwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlT3JUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgY29uZmlnPzogVGh5UG9wb3ZlckNvbmZpZzxURGF0YT5cbiAgICApOiBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoY29uZmlnLm9yaWdpbik7XG4gICAgICAgIC8vIOm7mOiupOWFs+mXreS5i+WJjeeahOW8ueWHuuahhlxuICAgICAgICAvLyAxLiDlvZPkuYvliY3nmoQgUG9wb3ZlciDorr7nva4gbWFudWFsQ2xvc3VyZSDkuLogdHJ1ZSDml7YsIOW8ueWHuuWFtuS7liBQb3BvdmVyIOaXtuS4jeiHquWKqOWFs+mXrSBtYW51YWxDbG9zdXJlIOS4uiB0cnVlIOeahCBQb3BvdmVyXG4gICAgICAgIC8vIDIuIOW9k+WJjeeahCBPcmlnaW4g5a+55bqU55qEIFBvcG92ZXIg5bey57uP5by55Ye677yM5LiN566hIG1hbnVhbENsb3N1cmUg6K6+572u5Li65L2V77yM55u05o6l5YWz6Zet5bm26L+U5ZueXG4gICAgICAgIGlmICh0aGlzLmVuc3VyZUNsb3NlQ2xvc2VzdChvcmlnaW5FbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMub3Blbk92ZXJsYXk8VCwgVFJlc3VsdD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgY29uZmlnKSBhcyBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQsIFREYXRhPjtcbiAgICAgICAgY29uZmlnID0gcG9wb3ZlclJlZi5jb250YWluZXJJbnN0YW5jZS5jb25maWc7XG4gICAgICAgIHBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmRlbGV0ZShvcmlnaW5FbGVtZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50QWRkQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgdGhpcy5vcmlnaW5JbnN0YW5jZXNNYXAuc2V0KG9yaWdpbkVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIHBvcG92ZXJSZWZcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uSWTojrflj5bmiZPlvIDnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRQb3BvdmVyQnlJZChpZDogc3RyaW5nKTogVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWJzdHJhY3RPdmVybGF5QnlJZChpZCkgYXMgVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluW3sue7j+aJk+W8gOeahOaCrOa1ruWxglxuICAgICAqL1xuICAgIGdldE9wZW5lZFBvcG92ZXJzKCk6IFRoeVBvcG92ZXJSZWY8U2FmZUFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFic3RyYWN0T3ZlcmxheXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgRmluZHMgdGhlIGNsb3Nlc3QgVGh5UG9wb3ZlclJlZiB0byBhbiBlbGVtZW50IGJ5IGxvb2tpbmcgYXQgdGhlIERPTS5cbiAgICAgKiBAZGVzY3JpcHRpb24g6YCa6L+HIERvbSDlhYPntKDmn6Xmib7mnIDov5HlvLnlh7rnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0UG9wb3ZlcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IFRoeVBvcG92ZXJSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdCgnLnRoeS1wb3BvdmVyLWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3BvdmVyQnlJZChwYXJlbnQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWFs+mXreaCrOa1ruWxglxuICAgICAqL1xuICAgIGNsb3NlPFQ+KHJlc3VsdD86IFQsIGZvcmNlPzogYm9vbGVhbikge1xuICAgICAgICBzdXBlci5jbG9zZShyZXN1bHQsIGZvcmNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgfVxufVxuIl19