@koobiq/components 18.30.0 → 18.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/actions-panel/actions-panel-config.d.ts +2 -0
  2. package/actions-panel/actions-panel.d.ts +3 -57
  3. package/autocomplete/autocomplete-trigger.directive.d.ts +3 -4
  4. package/autocomplete/autocomplete.component.d.ts +1 -0
  5. package/autocomplete/autocomplete.module.d.ts +1 -1
  6. package/button-toggle/button-toggle.module.d.ts +3 -4
  7. package/code-block/code-block-highlight.d.ts +1 -2
  8. package/code-block/code-block.d.ts +57 -10
  9. package/core/common-behaviors/color.d.ts +3 -0
  10. package/core/common-behaviors/common-module.d.ts +16 -3
  11. package/core/common-behaviors/error-state.d.ts +18 -0
  12. package/core/common-behaviors/index.d.ts +1 -1
  13. package/core/form-field/form-field-ref.d.ts +5 -3
  14. package/core/option/_option-theme.scss +24 -2
  15. package/core/option/option.d.ts +2 -2
  16. package/core/public-api.d.ts +1 -0
  17. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +1 -1
  18. package/core/styles/common/_select.scss +10 -24
  19. package/core/styles/theming/_theming.scss +0 -4
  20. package/core/tokens/index.d.ts +1 -0
  21. package/core/tokens/window.d.ts +5 -0
  22. package/core/validation/validation.d.ts +23 -2
  23. package/datepicker/datepicker-input.directive.d.ts +14 -5
  24. package/datepicker/datepicker-input.scss +1 -5
  25. package/datepicker/datepicker-module.d.ts +1 -1
  26. package/datepicker/datepicker-toggle.component.d.ts +22 -0
  27. package/datepicker/datepicker-toggle.scss +6 -0
  28. package/dropdown/dropdown-trigger.directive.d.ts +1 -0
  29. package/ellipsis-center/ellipsis-center.directive.d.ts +7 -1
  30. package/esm2022/actions-panel/actions-panel-config.mjs +1 -1
  31. package/esm2022/actions-panel/actions-panel.mjs +16 -113
  32. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +9 -13
  33. package/esm2022/autocomplete/autocomplete.component.mjs +10 -2
  34. package/esm2022/autocomplete/autocomplete.module.mjs +5 -11
  35. package/esm2022/breadcrumbs/breadcrumbs.mjs +1 -1
  36. package/esm2022/button-toggle/button-toggle.module.mjs +5 -6
  37. package/esm2022/code-block/code-block-highlight.mjs +8 -12
  38. package/esm2022/code-block/code-block.mjs +60 -18
  39. package/esm2022/core/common-behaviors/color.mjs +4 -1
  40. package/esm2022/core/common-behaviors/common-module.mjs +19 -26
  41. package/esm2022/core/common-behaviors/error-state.mjs +28 -1
  42. package/esm2022/core/common-behaviors/index.mjs +2 -2
  43. package/esm2022/core/form-field/form-field-ref.mjs +3 -4
  44. package/esm2022/core/option/option.mjs +9 -7
  45. package/esm2022/core/public-api.mjs +2 -1
  46. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  47. package/esm2022/core/tokens/index.mjs +2 -0
  48. package/esm2022/core/tokens/window.mjs +19 -0
  49. package/esm2022/core/utils/utils.mjs +2 -1
  50. package/esm2022/core/validation/validation.mjs +21 -2
  51. package/esm2022/core/version.mjs +2 -2
  52. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  53. package/esm2022/datepicker/calendar-header.component.mjs +3 -3
  54. package/esm2022/datepicker/datepicker-input.directive.mjs +66 -6
  55. package/esm2022/datepicker/datepicker-module.mjs +8 -3
  56. package/esm2022/datepicker/datepicker-toggle.component.mjs +94 -10
  57. package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -3
  58. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  59. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +8 -1
  60. package/esm2022/file-upload/multiple-file-upload.component.mjs +2 -2
  61. package/esm2022/filter-bar/filter-bar.mjs +27 -5
  62. package/esm2022/filter-bar/filter-bar.types.mjs +1 -1
  63. package/esm2022/filter-bar/filter-search.mjs +2 -2
  64. package/esm2022/filter-bar/filters.mjs +3 -3
  65. package/esm2022/filter-bar/pipe-add.mjs +2 -2
  66. package/esm2022/filter-bar/pipes/pipe-date.mjs +5 -11
  67. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +5 -11
  68. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -9
  69. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +30 -10
  70. package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
  71. package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
  72. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
  73. package/esm2022/form-field/cleaner.mjs +11 -6
  74. package/esm2022/form-field/error.mjs +20 -0
  75. package/esm2022/form-field/fieldset.mjs +84 -0
  76. package/esm2022/form-field/form-field-control.mjs +2 -2
  77. package/esm2022/form-field/form-field.mjs +247 -74
  78. package/esm2022/form-field/form-field.module.mjs +59 -47
  79. package/esm2022/form-field/hint.mjs +10 -18
  80. package/esm2022/form-field/label.mjs +19 -0
  81. package/esm2022/form-field/password-hint.mjs +6 -5
  82. package/esm2022/form-field/password-toggle.mjs +52 -27
  83. package/esm2022/form-field/prefix.mjs +9 -3
  84. package/esm2022/form-field/public-api.mjs +5 -2
  85. package/esm2022/form-field/reactive-password-hint.mjs +65 -0
  86. package/esm2022/form-field/stepper.mjs +34 -16
  87. package/esm2022/form-field/suffix.mjs +8 -3
  88. package/esm2022/form-field/validate.directive.mjs +16 -19
  89. package/esm2022/icon/icon-button.component.mjs +2 -2
  90. package/esm2022/input/input-number.mjs +7 -2
  91. package/esm2022/input/input.module.mjs +1 -5
  92. package/esm2022/list/list-selection.component.mjs +5 -4
  93. package/esm2022/list/list.component.mjs +2 -2
  94. package/esm2022/modal/modal-util.mjs +2 -1
  95. package/esm2022/navbar/navbar-item.component.mjs +10 -11
  96. package/esm2022/overflow-items/overflow-items.mjs +27 -10
  97. package/esm2022/radio/radio.module.mjs +4 -5
  98. package/esm2022/scrollbar/scrollbar.component.mjs +14 -11
  99. package/esm2022/scrollbar/scrollbar.directive.mjs +2 -1
  100. package/esm2022/select/select.component.mjs +39 -18
  101. package/esm2022/sidepanel/sidepanel.module.mjs +1 -5
  102. package/esm2022/splitter/splitter.component.mjs +5 -3
  103. package/esm2022/tabs/paginated-tab-header.mjs +6 -2
  104. package/esm2022/tabs/tabs.module.mjs +1 -5
  105. package/esm2022/tags/tag-list.component.mjs +2 -2
  106. package/esm2022/textarea/textarea.component.mjs +7 -6
  107. package/esm2022/textarea/textarea.module.mjs +4 -5
  108. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  109. package/esm2022/timezone/timezone-select.component.mjs +6 -4
  110. package/esm2022/toast/toast-animations.mjs +2 -2
  111. package/esm2022/toast/toast.component.mjs +3 -3
  112. package/esm2022/toggle/toggle.component.mjs +3 -3
  113. package/esm2022/toggle/toggle.module.mjs +4 -5
  114. package/esm2022/top-bar/top-bar.mjs +2 -2
  115. package/esm2022/tree/padding.directive.mjs +8 -6
  116. package/esm2022/tree/toggle.mjs +2 -2
  117. package/esm2022/tree/tree-option.component.mjs +5 -4
  118. package/esm2022/tree/tree-selection.component.mjs +2 -2
  119. package/esm2022/tree/tree.mjs +2 -2
  120. package/esm2022/tree-select/tree-select.component.mjs +48 -24
  121. package/fesm2022/koobiq-components-actions-panel.mjs +16 -112
  122. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-autocomplete.mjs +21 -24
  124. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
  126. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-button-toggle.mjs +5 -5
  128. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-code-block.mjs +65 -28
  130. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-core.mjs +99 -39
  132. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-datepicker.mjs +162 -14
  134. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-dropdown.mjs +5 -4
  136. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -0
  138. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-file-upload.mjs +1 -1
  140. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-filter-bar.mjs +95 -46
  142. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  143. package/fesm2022/koobiq-components-form-field.mjs +610 -219
  144. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  145. package/fesm2022/koobiq-components-icon.mjs +2 -2
  146. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  147. package/fesm2022/koobiq-components-input.mjs +7 -5
  148. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-list.mjs +6 -5
  150. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-modal.mjs +1 -0
  152. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-navbar.mjs +9 -10
  154. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-overflow-items.mjs +26 -9
  156. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  157. package/fesm2022/koobiq-components-radio.mjs +4 -4
  158. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  159. package/fesm2022/koobiq-components-scrollbar.mjs +14 -10
  160. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  161. package/fesm2022/koobiq-components-select.mjs +39 -18
  162. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  163. package/fesm2022/koobiq-components-sidepanel.mjs +1 -4
  164. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  165. package/fesm2022/koobiq-components-splitter.mjs +4 -2
  166. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  167. package/fesm2022/koobiq-components-tabs.mjs +5 -5
  168. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  169. package/fesm2022/koobiq-components-tags.mjs +2 -2
  170. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  171. package/fesm2022/koobiq-components-textarea.mjs +9 -8
  172. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  173. package/fesm2022/koobiq-components-timezone.mjs +7 -5
  174. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-toast.mjs +3 -3
  176. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-toggle.mjs +6 -6
  178. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  179. package/fesm2022/koobiq-components-top-bar.mjs +2 -2
  180. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  181. package/fesm2022/koobiq-components-tree-select.mjs +48 -24
  182. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  183. package/fesm2022/koobiq-components-tree.mjs +17 -14
  184. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  185. package/file-upload/multiple-file-upload.component.d.ts +1 -1
  186. package/filter-bar/filter-bar.d.ts +7 -1
  187. package/filter-bar/filter-bar.types.d.ts +5 -0
  188. package/filter-bar/pipes/pipe-multi-select.d.ts +5 -1
  189. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +5 -1
  190. package/form-field/_fiedset-theme.scss +13 -0
  191. package/form-field/_form-field-theme.scss +29 -13
  192. package/form-field/_hint-theme.scss +21 -22
  193. package/form-field/cleaner.d.ts +5 -1
  194. package/form-field/cleaner.scss +1 -4
  195. package/form-field/error.d.ts +8 -0
  196. package/form-field/fieldset-tokens.scss +5 -0
  197. package/form-field/fieldset.d.ts +27 -0
  198. package/form-field/fieldset.scss +93 -0
  199. package/form-field/form-field-control.d.ts +1 -1
  200. package/form-field/form-field-tokens.scss +13 -3
  201. package/form-field/form-field.d.ts +210 -22
  202. package/form-field/form-field.module.d.ts +14 -12
  203. package/form-field/form-field.scss +58 -78
  204. package/form-field/hint.d.ts +5 -1
  205. package/form-field/hint.scss +3 -5
  206. package/form-field/label.d.ts +6 -0
  207. package/form-field/password-hint.d.ts +1 -1
  208. package/form-field/password-toggle.d.ts +25 -11
  209. package/form-field/password-toggle.scss +1 -2
  210. package/form-field/prefix.d.ts +2 -1
  211. package/form-field/public-api.d.ts +4 -1
  212. package/form-field/reactive-password-hint.d.ts +19 -0
  213. package/form-field/stepper.d.ts +20 -8
  214. package/form-field/stepper.scss +12 -11
  215. package/form-field/suffix.d.ts +2 -1
  216. package/form-field/validate.directive.d.ts +10 -12
  217. package/icon/_icon-button-theme.scss +67 -85
  218. package/input/input-tokens.scss +2 -2
  219. package/input/input.module.d.ts +3 -4
  220. package/input/input.scss +1 -2
  221. package/list/_list-theme.scss +24 -2
  222. package/list/list-tokens.scss +5 -0
  223. package/navbar/navbar-item.component.d.ts +3 -1
  224. package/overflow-items/overflow-items.d.ts +12 -5
  225. package/package.json +6 -6
  226. package/prebuilt-themes/dark-theme.css +1 -1
  227. package/prebuilt-themes/light-theme.css +1 -1
  228. package/prebuilt-themes/theme.css +1 -1
  229. package/radio/radio.module.d.ts +1 -2
  230. package/schematics/ng-add/index.js +5 -5
  231. package/scrollbar/scrollbar.component.d.ts +1 -0
  232. package/select/select-tokens.scss +5 -4
  233. package/select/select.component.d.ts +12 -3
  234. package/sidepanel/sidepanel.module.d.ts +5 -6
  235. package/splitter/splitter.component.d.ts +1 -0
  236. package/tabs/paginated-tab-header.d.ts +1 -0
  237. package/tabs/tabs.module.d.ts +5 -6
  238. package/tags/tag-list.scss +8 -4
  239. package/textarea/textarea.component.d.ts +1 -0
  240. package/textarea/textarea.module.d.ts +2 -3
  241. package/timepicker/timepicker.scss +1 -1
  242. package/toast/toast.component.scss +2 -0
  243. package/toggle/_toggle-theme.scss +10 -2
  244. package/toggle/toggle-tokens.scss +7 -1
  245. package/toggle/toggle.module.d.ts +1 -2
  246. package/toggle/toggle.scss +6 -6
  247. package/top-bar/top-bar.scss +48 -32
  248. package/tree/_tree-theme.scss +30 -7
  249. package/tree/padding.directive.d.ts +1 -1
  250. package/tree/tree-option.scss +5 -2
  251. package/tree/tree-tokens.scss +5 -0
  252. package/tree-select/tree-select.component.d.ts +10 -1
  253. package/esm2022/form-field/form-field-errors.mjs +0 -7
  254. package/form-field/form-field-errors.d.ts +0 -2
@@ -235,7 +235,7 @@ export class KbqDropdown {
235
235
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDropdown, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: KBQ_DROPDOWN_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
236
236
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KbqDropdown, selector: "kbq-dropdown", inputs: { navigationWithWrap: "navigationWithWrap", xPosition: "xPosition", yPosition: "yPosition", overlapTriggerY: "overlapTriggerY", overlapTriggerX: "overlapTriggerX", hasBackdrop: "hasBackdrop", panelClass: ["class", "panelClass"], backdropClass: "backdropClass" }, outputs: { closed: "closed" }, providers: [
237
237
  { provide: KBQ_DROPDOWN_PANEL, useExisting: KbqDropdown }
238
- ], queries: [{ propertyName: "lazyContent", first: true, predicate: KbqDropdownContent, descendants: true }, { propertyName: "items", predicate: KbqDropdownItem, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["kbqDropdown"], ngImport: i0, template: "<ng-template>\n <div\n tabindex=\"-1\"\n class=\"kbq-dropdown__panel\"\n [class.kbq-dropdown__panel_nested]=\"parent\"\n [ngClass]=\"classList\"\n [style.min-width]=\"triggerWidth\"\n (@transformDropdown.done)=\"onAnimationDone($event)\"\n (@transformDropdown.start)=\"onAnimationStart($event)\"\n (click)=\"close()\"\n (keydown)=\"handleKeydown($event)\"\n [@transformDropdown]=\"panelAnimationState\"\n >\n <div class=\"kbq-dropdown__content\">\n <ng-content />\n </div>\n </div>\n</ng-template>\n", styles: [".kbq-dropdown-trigger.kbq-button{padding-left:calc(10px - var(--kbq-size-border-width));padding-right:calc(10px - var(--kbq-size-border-width))}.kbq-dropdown-trigger.kbq-button .kbq-icon_left{margin-right:var(--kbq-size-xs)}.kbq-dropdown-trigger.kbq-button .kbq-icon_right{margin-left:var(--kbq-size-3xs)}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_left{margin-right:0}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_right{margin-left:0}.kbq-dropdown-trigger__icon{margin-left:auto;align-self:center}.kbq-dropdown__panel{min-width:var(--kbq-dropdown-size-container-width-min);max-width:var(--kbq-dropdown-size-container-width-max);border-radius:var(--kbq-dropdown-size-container-border-radius);box-sizing:border-box;padding:var(--kbq-size-xxs)}.kbq-dropdown__panel.ng-animating{pointer-events:none}.kbq-dropdown__panel .kbq-option{position:relative}.kbq-dropdown__panel .kbq-option:before,.kbq-dropdown__panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-dropdown__panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-divider{margin-left:calc(var(--kbq-size-xxs) * -1);margin-right:calc(var(--kbq-size-xxs) * -1)}.kbq-dropdown__content{display:flex;flex-direction:column}.kbq-dropdown__panel{box-shadow:var(--kbq-dropdown-container-shadow);background:var(--kbq-dropdown-container-background)}.kbq-dropdown-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-dropdown-item__caption{color:var(--kbq-dropdown-item-caption-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted,.kbq-dropdown-item:hover:not(.kbq-disabled){background:var(--kbq-list-states-hover-container-background);color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item),.kbq-dropdown-item:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.cdk-keyboard-focused{border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-dropdown-item.kbq-selected{background:var(--kbq-list-states-selected-container-background);color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled){background:var(--kbq-list-states-selected-hover-container-background);color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-disabled{background:var(--kbq-list-states-disabled-container-background);color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item.kbq-disabled .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused):has(+:is(.kbq-selected,.cdk-keyboard-focused)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused)+:is(.kbq-selected,.cdk-keyboard-focused){border-top-left-radius:0;border-top-right-radius:0}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{color:var(--kbq-foreground-contrast-secondary)}.kbq-dropdown-item-overlay{background:transparent}.kbq-dropdown-item,.kbq-dropdown__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-dropdown-item .kbq-dropdown-item__caption,.kbq-dropdown__content .kbq-dropdown-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-dropdown__group-header{font-size:var(--kbq-typography-big-strong-font-size);font-weight:var(--kbq-typography-big-strong-font-weight);line-height:var(--kbq-typography-big-strong-line-height);font-family:var(--kbq-typography-big-strong-font-family);text-transform:var(--kbq-typography-big-strong-text-transform);font-feature-settings:var(--kbq-typography-big-strong-font-feature-settings);letter-spacing:var(--kbq-typography-big-strong-letter-spacing)}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}\n", ".kbq-list,.kbq-list-selection{--kbq-list-size-container-padding-left: var(--kbq-size-m);--kbq-list-size-container-padding-right: var(--kbq-size-m);--kbq-list-size-container-padding-vertical: var(--kbq-size-xs);--kbq-list-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-list-size-container-content-gap-vertical: var(--kbq-size-3xs);--kbq-list-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-list-size-header-padding-top: var(--kbq-size-s);--kbq-list-size-header-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-header-padding-horizontal: var(--kbq-size-m);--kbq-list-size-subheading-padding-top: var(--kbq-size-m);--kbq-list-size-subheading-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-subheading-padding-horizontal: var(--kbq-size-m);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}.kbq-dropdown__panel{--kbq-dropdown-size-container-width-min: var(--kbq-size-7xl);--kbq-dropdown-size-container-width-max: 640px;--kbq-dropdown-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-dropdown-size-container-border-radius: var(--kbq-size-s);--kbq-dropdown-container-background: var(--kbq-background-card);--kbq-dropdown-container-shadow: var(--kbq-shadow-popup);--kbq-dropdown-item-border-radius: var(--kbq-size-xs);--kbq-dropdown-item-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
238
+ ], queries: [{ propertyName: "lazyContent", first: true, predicate: KbqDropdownContent, descendants: true }, { propertyName: "items", predicate: KbqDropdownItem, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["kbqDropdown"], ngImport: i0, template: "<ng-template>\n <div\n tabindex=\"-1\"\n class=\"kbq-dropdown__panel\"\n [class.kbq-dropdown__panel_nested]=\"parent\"\n [ngClass]=\"classList\"\n [style.min-width]=\"triggerWidth\"\n (@transformDropdown.done)=\"onAnimationDone($event)\"\n (@transformDropdown.start)=\"onAnimationStart($event)\"\n (click)=\"close()\"\n (keydown)=\"handleKeydown($event)\"\n [@transformDropdown]=\"panelAnimationState\"\n >\n <div class=\"kbq-dropdown__content\">\n <ng-content />\n </div>\n </div>\n</ng-template>\n", styles: [".kbq-dropdown-trigger.kbq-button{padding-left:calc(10px - var(--kbq-size-border-width));padding-right:calc(10px - var(--kbq-size-border-width))}.kbq-dropdown-trigger.kbq-button .kbq-icon_left{margin-right:var(--kbq-size-xs)}.kbq-dropdown-trigger.kbq-button .kbq-icon_right{margin-left:var(--kbq-size-3xs)}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_left{margin-right:0}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_right{margin-left:0}.kbq-dropdown-trigger__icon{margin-left:auto;align-self:center}.kbq-dropdown__panel{min-width:var(--kbq-dropdown-size-container-width-min);max-width:var(--kbq-dropdown-size-container-width-max);border-radius:var(--kbq-dropdown-size-container-border-radius);box-sizing:border-box;padding:var(--kbq-size-xxs)}.kbq-dropdown__panel.ng-animating{pointer-events:none}.kbq-dropdown__panel .kbq-option{position:relative}.kbq-dropdown__panel .kbq-option:before,.kbq-dropdown__panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-dropdown__panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-divider{margin-left:calc(var(--kbq-size-xxs) * -1);margin-right:calc(var(--kbq-size-xxs) * -1)}.kbq-dropdown__content{display:flex;flex-direction:column}.kbq-dropdown__panel{box-shadow:var(--kbq-dropdown-container-shadow);background:var(--kbq-dropdown-container-background)}.kbq-dropdown-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-dropdown-item__caption{color:var(--kbq-dropdown-item-caption-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted,.kbq-dropdown-item:hover:not(.kbq-disabled){background:var(--kbq-list-states-hover-container-background);color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item),.kbq-dropdown-item:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.cdk-keyboard-focused{border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-dropdown-item.kbq-selected{background:var(--kbq-list-states-selected-container-background);color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled){background:var(--kbq-list-states-selected-hover-container-background);color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-disabled{background:var(--kbq-list-states-disabled-container-background);color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item.kbq-disabled .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused):has(+:is(.kbq-selected,.cdk-keyboard-focused)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused)+:is(.kbq-selected,.cdk-keyboard-focused){border-top-left-radius:0;border-top-right-radius:0}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{color:var(--kbq-foreground-contrast-secondary)}.kbq-dropdown-item-overlay{background:transparent}.kbq-dropdown-item,.kbq-dropdown__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-dropdown-item .kbq-dropdown-item__caption,.kbq-dropdown__content .kbq-dropdown-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-dropdown__group-header{font-size:var(--kbq-typography-big-strong-font-size);font-weight:var(--kbq-typography-big-strong-font-weight);line-height:var(--kbq-typography-big-strong-line-height);font-family:var(--kbq-typography-big-strong-font-family);text-transform:var(--kbq-typography-big-strong-text-transform);font-feature-settings:var(--kbq-typography-big-strong-font-feature-settings);letter-spacing:var(--kbq-typography-big-strong-letter-spacing)}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}\n", ".kbq-list,.kbq-list-selection{--kbq-list-size-container-padding-left: var(--kbq-size-m);--kbq-list-size-container-padding-right: var(--kbq-size-m);--kbq-list-size-container-padding-vertical: var(--kbq-size-xs);--kbq-list-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-list-size-container-content-gap-vertical: var(--kbq-size-3xs);--kbq-list-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-list-size-header-padding-top: var(--kbq-size-s);--kbq-list-size-header-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-header-padding-horizontal: var(--kbq-size-m);--kbq-list-size-subheading-padding-top: var(--kbq-size-m);--kbq-list-size-subheading-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-subheading-padding-horizontal: var(--kbq-size-m);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-active-container-background: var(--kbq-states-background-transparent-active);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-multiple-states-selected-container-background: var(--kbq-background-contrast-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-multiple-states-selected-hover-container-background: var(--kbq-states-background-contrast-less-hover);--kbq-list-states-selected-active-container-background: var(--kbq-states-background-theme-less-active);--kbq-list-multiple-states-selected-active-container-background: var(--kbq-states-background-contrast-less-active);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}.kbq-dropdown__panel{--kbq-dropdown-size-container-width-min: var(--kbq-size-7xl);--kbq-dropdown-size-container-width-max: 640px;--kbq-dropdown-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-dropdown-size-container-border-radius: var(--kbq-size-s);--kbq-dropdown-container-background: var(--kbq-background-card);--kbq-dropdown-container-shadow: var(--kbq-shadow-popup);--kbq-dropdown-item-border-radius: var(--kbq-size-xs);--kbq-dropdown-item-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-active-container-background: var(--kbq-states-background-transparent-active);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-multiple-states-selected-container-background: var(--kbq-background-contrast-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-multiple-states-selected-hover-container-background: var(--kbq-states-background-contrast-less-hover);--kbq-list-states-selected-active-container-background: var(--kbq-states-background-theme-less-active);--kbq-list-multiple-states-selected-active-container-background: var(--kbq-states-background-contrast-less-active);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
239
239
  kbqDropdownAnimations.transformDropdown,
240
240
  kbqDropdownAnimations.fadeInItems
241
241
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -247,7 +247,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
247
247
  kbqDropdownAnimations.fadeInItems
248
248
  ], providers: [
249
249
  { provide: KBQ_DROPDOWN_PANEL, useExisting: KbqDropdown }
250
- ], template: "<ng-template>\n <div\n tabindex=\"-1\"\n class=\"kbq-dropdown__panel\"\n [class.kbq-dropdown__panel_nested]=\"parent\"\n [ngClass]=\"classList\"\n [style.min-width]=\"triggerWidth\"\n (@transformDropdown.done)=\"onAnimationDone($event)\"\n (@transformDropdown.start)=\"onAnimationStart($event)\"\n (click)=\"close()\"\n (keydown)=\"handleKeydown($event)\"\n [@transformDropdown]=\"panelAnimationState\"\n >\n <div class=\"kbq-dropdown__content\">\n <ng-content />\n </div>\n </div>\n</ng-template>\n", styles: [".kbq-dropdown-trigger.kbq-button{padding-left:calc(10px - var(--kbq-size-border-width));padding-right:calc(10px - var(--kbq-size-border-width))}.kbq-dropdown-trigger.kbq-button .kbq-icon_left{margin-right:var(--kbq-size-xs)}.kbq-dropdown-trigger.kbq-button .kbq-icon_right{margin-left:var(--kbq-size-3xs)}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_left{margin-right:0}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_right{margin-left:0}.kbq-dropdown-trigger__icon{margin-left:auto;align-self:center}.kbq-dropdown__panel{min-width:var(--kbq-dropdown-size-container-width-min);max-width:var(--kbq-dropdown-size-container-width-max);border-radius:var(--kbq-dropdown-size-container-border-radius);box-sizing:border-box;padding:var(--kbq-size-xxs)}.kbq-dropdown__panel.ng-animating{pointer-events:none}.kbq-dropdown__panel .kbq-option{position:relative}.kbq-dropdown__panel .kbq-option:before,.kbq-dropdown__panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-dropdown__panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-divider{margin-left:calc(var(--kbq-size-xxs) * -1);margin-right:calc(var(--kbq-size-xxs) * -1)}.kbq-dropdown__content{display:flex;flex-direction:column}.kbq-dropdown__panel{box-shadow:var(--kbq-dropdown-container-shadow);background:var(--kbq-dropdown-container-background)}.kbq-dropdown-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-dropdown-item__caption{color:var(--kbq-dropdown-item-caption-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted,.kbq-dropdown-item:hover:not(.kbq-disabled){background:var(--kbq-list-states-hover-container-background);color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item),.kbq-dropdown-item:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.cdk-keyboard-focused{border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-dropdown-item.kbq-selected{background:var(--kbq-list-states-selected-container-background);color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled){background:var(--kbq-list-states-selected-hover-container-background);color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-disabled{background:var(--kbq-list-states-disabled-container-background);color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item.kbq-disabled .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused):has(+:is(.kbq-selected,.cdk-keyboard-focused)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused)+:is(.kbq-selected,.cdk-keyboard-focused){border-top-left-radius:0;border-top-right-radius:0}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{color:var(--kbq-foreground-contrast-secondary)}.kbq-dropdown-item-overlay{background:transparent}.kbq-dropdown-item,.kbq-dropdown__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-dropdown-item .kbq-dropdown-item__caption,.kbq-dropdown__content .kbq-dropdown-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-dropdown__group-header{font-size:var(--kbq-typography-big-strong-font-size);font-weight:var(--kbq-typography-big-strong-font-weight);line-height:var(--kbq-typography-big-strong-line-height);font-family:var(--kbq-typography-big-strong-font-family);text-transform:var(--kbq-typography-big-strong-text-transform);font-feature-settings:var(--kbq-typography-big-strong-font-feature-settings);letter-spacing:var(--kbq-typography-big-strong-letter-spacing)}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}\n", ".kbq-list,.kbq-list-selection{--kbq-list-size-container-padding-left: var(--kbq-size-m);--kbq-list-size-container-padding-right: var(--kbq-size-m);--kbq-list-size-container-padding-vertical: var(--kbq-size-xs);--kbq-list-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-list-size-container-content-gap-vertical: var(--kbq-size-3xs);--kbq-list-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-list-size-header-padding-top: var(--kbq-size-s);--kbq-list-size-header-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-header-padding-horizontal: var(--kbq-size-m);--kbq-list-size-subheading-padding-top: var(--kbq-size-m);--kbq-list-size-subheading-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-subheading-padding-horizontal: var(--kbq-size-m);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}.kbq-dropdown__panel{--kbq-dropdown-size-container-width-min: var(--kbq-size-7xl);--kbq-dropdown-size-container-width-max: 640px;--kbq-dropdown-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-dropdown-size-container-border-radius: var(--kbq-size-s);--kbq-dropdown-container-background: var(--kbq-background-card);--kbq-dropdown-container-shadow: var(--kbq-shadow-popup);--kbq-dropdown-item-border-radius: var(--kbq-size-xs);--kbq-dropdown-item-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"] }]
250
+ ], template: "<ng-template>\n <div\n tabindex=\"-1\"\n class=\"kbq-dropdown__panel\"\n [class.kbq-dropdown__panel_nested]=\"parent\"\n [ngClass]=\"classList\"\n [style.min-width]=\"triggerWidth\"\n (@transformDropdown.done)=\"onAnimationDone($event)\"\n (@transformDropdown.start)=\"onAnimationStart($event)\"\n (click)=\"close()\"\n (keydown)=\"handleKeydown($event)\"\n [@transformDropdown]=\"panelAnimationState\"\n >\n <div class=\"kbq-dropdown__content\">\n <ng-content />\n </div>\n </div>\n</ng-template>\n", styles: [".kbq-dropdown-trigger.kbq-button{padding-left:calc(10px - var(--kbq-size-border-width));padding-right:calc(10px - var(--kbq-size-border-width))}.kbq-dropdown-trigger.kbq-button .kbq-icon_left{margin-right:var(--kbq-size-xs)}.kbq-dropdown-trigger.kbq-button .kbq-icon_right{margin-left:var(--kbq-size-3xs)}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_left{margin-right:0}.kbq-dropdown-trigger.kbq-button-icon.kbq-button-icon_right.kbq-button-icon_left .kbq-icon_right{margin-left:0}.kbq-dropdown-trigger__icon{margin-left:auto;align-self:center}.kbq-dropdown__panel{min-width:var(--kbq-dropdown-size-container-width-min);max-width:var(--kbq-dropdown-size-container-width-max);border-radius:var(--kbq-dropdown-size-container-border-radius);box-sizing:border-box;padding:var(--kbq-size-xxs)}.kbq-dropdown__panel.ng-animating{pointer-events:none}.kbq-dropdown__panel .kbq-option{position:relative}.kbq-dropdown__panel .kbq-option:before,.kbq-dropdown__panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-dropdown__panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-dropdown__panel .kbq-divider{margin-left:calc(var(--kbq-size-xxs) * -1);margin-right:calc(var(--kbq-size-xxs) * -1)}.kbq-dropdown__content{display:flex;flex-direction:column}.kbq-dropdown__panel{box-shadow:var(--kbq-dropdown-container-shadow);background:var(--kbq-dropdown-container-background)}.kbq-dropdown-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-default-text-color)}.kbq-dropdown-item .kbq-dropdown-item__caption{color:var(--kbq-dropdown-item-caption-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted,.kbq-dropdown-item:hover:not(.kbq-disabled){background:var(--kbq-list-states-hover-container-background);color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.kbq-dropdown-item_highlighted .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item),.kbq-dropdown-item:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-hover-text-color)}.kbq-dropdown-item.cdk-keyboard-focused{border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-dropdown-item.kbq-selected{background:var(--kbq-list-states-selected-container-background);color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled){background:var(--kbq-list-states-selected-hover-container-background);color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-selected:hover:not(.kbq-disabled) .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-selected-hover-text-color)}.kbq-dropdown-item.kbq-disabled{background:var(--kbq-list-states-disabled-container-background);color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item.kbq-disabled .kbq-icon.kbq-empty:not(.kbq-icon-button,.kbq-icon-item){color:var(--kbq-list-states-disabled-text-color)}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused):has(+:is(.kbq-selected,.cdk-keyboard-focused)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-dropdown-item:is(.kbq-selected,.cdk-keyboard-focused)+:is(.kbq-selected,.cdk-keyboard-focused){border-top-left-radius:0;border-top-right-radius:0}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{color:var(--kbq-foreground-contrast-secondary)}.kbq-dropdown-item-overlay{background:transparent}.kbq-dropdown-item,.kbq-dropdown__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-dropdown-item .kbq-dropdown-item__caption,.kbq-dropdown__content .kbq-dropdown-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-dropdown__group-header{font-size:var(--kbq-typography-big-strong-font-size);font-weight:var(--kbq-typography-big-strong-font-weight);line-height:var(--kbq-typography-big-strong-line-height);font-family:var(--kbq-typography-big-strong-font-family);text-transform:var(--kbq-typography-big-strong-text-transform);font-feature-settings:var(--kbq-typography-big-strong-font-feature-settings);letter-spacing:var(--kbq-typography-big-strong-letter-spacing)}.kbq-dropdown__group-header.kbq-dropdown__group-header_small{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}\n", ".kbq-list,.kbq-list-selection{--kbq-list-size-container-padding-left: var(--kbq-size-m);--kbq-list-size-container-padding-right: var(--kbq-size-m);--kbq-list-size-container-padding-vertical: var(--kbq-size-xs);--kbq-list-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-list-size-container-content-gap-vertical: var(--kbq-size-3xs);--kbq-list-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-list-size-header-padding-top: var(--kbq-size-s);--kbq-list-size-header-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-header-padding-horizontal: var(--kbq-size-m);--kbq-list-size-subheading-padding-top: var(--kbq-size-m);--kbq-list-size-subheading-padding-bottom: var(--kbq-size-xxs);--kbq-list-size-subheading-padding-horizontal: var(--kbq-size-m);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-active-container-background: var(--kbq-states-background-transparent-active);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-multiple-states-selected-container-background: var(--kbq-background-contrast-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-multiple-states-selected-hover-container-background: var(--kbq-states-background-contrast-less-hover);--kbq-list-states-selected-active-container-background: var(--kbq-states-background-theme-less-active);--kbq-list-multiple-states-selected-active-container-background: var(--kbq-states-background-contrast-less-active);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}.kbq-dropdown__panel{--kbq-dropdown-size-container-width-min: var(--kbq-size-7xl);--kbq-dropdown-size-container-width-max: 640px;--kbq-dropdown-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-dropdown-size-container-border-radius: var(--kbq-size-s);--kbq-dropdown-container-background: var(--kbq-background-card);--kbq-dropdown-container-shadow: var(--kbq-shadow-popup);--kbq-dropdown-item-border-radius: var(--kbq-size-xs);--kbq-dropdown-item-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-default-container-background: transparent;--kbq-list-default-text-color: var(--kbq-foreground-contrast);--kbq-list-default-icon-color: var(--kbq-icon-contrast);--kbq-list-default-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-list-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-list-states-active-container-background: var(--kbq-states-background-transparent-active);--kbq-list-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-container-background: var(--kbq-background-theme-less);--kbq-list-multiple-states-selected-container-background: var(--kbq-background-contrast-less);--kbq-list-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-list-multiple-states-selected-hover-container-background: var(--kbq-states-background-contrast-less-hover);--kbq-list-states-selected-active-container-background: var(--kbq-states-background-theme-less-active);--kbq-list-multiple-states-selected-active-container-background: var(--kbq-states-background-contrast-less-active);--kbq-list-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-list-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-list-states-selected-hover-icon-button-color: var(--kbq-icon-contrast-fade);--kbq-list-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-list-states-disabled-container-background: transparent;--kbq-list-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-list-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);--kbq-list-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"] }]
251
251
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
252
252
  type: Inject,
253
253
  args: [KBQ_DROPDOWN_DEFAULT_OPTIONS]
@@ -280,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
280
280
  }], closed: [{
281
281
  type: Output
282
282
  }] } });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkUsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwy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TTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGtvb2JpcS9jZGsvYTExeSc7XG5pbXBvcnQgeyBFU0NBUEUsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBrYnFEcm9wZG93bkFuaW1hdGlvbnMgfSBmcm9tICcuL2Ryb3Bkb3duLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25Db250ZW50IH0gZnJvbSAnLi9kcm9wZG93bi1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0aHJvd0ticURyb3Bkb3duSW52YWxpZFBvc2l0aW9uWCwgdGhyb3dLYnFEcm9wZG93bkludmFsaWRQb3NpdGlvblkgfSBmcm9tICcuL2Ryb3Bkb3duLWVycm9ycyc7XG5pbXBvcnQgeyBLYnFEcm9wZG93bkl0ZW0gfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Qb3NpdGlvblgsXG4gICAgRHJvcGRvd25Qb3NpdGlvblksXG4gICAgS0JRX0RST1BET1dOX0RFRkFVTFRfT1BUSU9OUyxcbiAgICBLQlFfRFJPUERPV05fUEFORUwsXG4gICAgS2JxRHJvcGRvd25EZWZhdWx0T3B0aW9ucyxcbiAgICBLYnFEcm9wZG93blBhbmVsXG59IGZyb20gJy4vZHJvcGRvd24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1kcm9wZG93bicsXG4gICAgZXhwb3J0QXM6ICdrYnFEcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICdkcm9wZG93bi5odG1sJyxcbiAgICAvKiBDb21wb25lbnQgaW5oZXJpdHMgc3R5bGVzIGZyb20gYGxpc3RgLCBzbyBgbGlzdGAgdmFyaWFibGVzIGFyZSBpbXBvcnRlZCBhcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC4gKi9cbiAgICBzdHlsZVVybHM6IFsnZHJvcGRvd24uc2NzcycsICdkcm9wZG93bi10b2tlbnMuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICBrYnFEcm9wZG93bkFuaW1hdGlvbnMudHJhbnNmb3JtRHJvcGRvd24sXG4gICAgICAgIGticURyb3Bkb3duQW5pbWF0aW9ucy5mYWRlSW5JdGVtc1xuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogS0JRX0RST1BET1dOX1BBTkVMLCB1c2VFeGlzdGluZzogS2JxRHJvcGRvd24gfV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRHJvcGRvd24gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBLYnFEcm9wZG93blBhbmVsLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgbmF2aWdhdGlvbldpdGhXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duIGluIHRoZSBYIGF4aXMuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgeFBvc2l0aW9uKCk6IERyb3Bkb3duUG9zaXRpb25YIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3hQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBzZXQgeFBvc2l0aW9uKHZhbHVlOiBEcm9wZG93blBvc2l0aW9uWCkge1xuICAgICAgICBpZiAodmFsdWUgIT09ICdiZWZvcmUnICYmIHZhbHVlICE9PSAnYWZ0ZXInKSB7XG4gICAgICAgICAgICB0aHJvd0ticURyb3Bkb3duSW52YWxpZFBvc2l0aW9uWCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5feFBvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biBpbiB0aGUgWSBheGlzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHlQb3NpdGlvbigpOiBEcm9wZG93blBvc2l0aW9uWSB7XG4gICAgICAgIHJldHVybiB0aGlzLl95UG9zaXRpb247XG4gICAgfVxuXG4gICAgc2V0IHlQb3NpdGlvbih2YWx1ZTogRHJvcGRvd25Qb3NpdGlvblkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnYWJvdmUnICYmIHZhbHVlICE9PSAnYmVsb3cnKSB7XG4gICAgICAgICAgICB0aHJvd0ticURyb3Bkb3duSW52YWxpZFBvc2l0aW9uWSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5feVBvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIHNob3VsZCBvdmVybGFwIGl0cyB0cmlnZ2VyIHZlcnRpY2FsbHkuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgb3ZlcmxhcFRyaWdnZXJZKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxhcFRyaWdnZXJZO1xuICAgIH1cblxuICAgIHNldCBvdmVybGFwVHJpZ2dlclkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxhcFRyaWdnZXJZID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgZHJvcGRvd24gc2hvdWxkIG92ZXJsYXAgaXRzIHRyaWdnZXIgaG9yaXpvbnRhbGx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG92ZXJsYXBUcmlnZ2VyWCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXBUcmlnZ2VyWDtcbiAgICB9XG5cbiAgICBzZXQgb3ZlcmxhcFRyaWdnZXJYKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXBUcmlnZ2VyWCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIGhhcyBhIGJhY2tkcm9wLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc0JhY2tkcm9wKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzQmFja2Ryb3A7XG4gICAgfVxuXG4gICAgc2V0IGhhc0JhY2tkcm9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2hhc0JhY2tkcm9wID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB0YWtlcyBjbGFzc2VzIHNldCBvbiB0aGUgaG9zdCBrYnEtZHJvcGRvd24gZWxlbWVudCBhbmQgYXBwbGllcyB0aGVtIG9uIHRoZVxuICAgICAqIGRyb3Bkb3duIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiAgT3RoZXJ3aXNlLCBpdCdzIGRpZmZpY3VsdFxuICAgICAqIHRvIHN0eWxlIHRoZSBjb250YWluaW5nIGRyb3Bkb3duIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjbGFzc2VzIGxpc3Qgb2YgY2xhc3MgbmFtZXNcbiAgICAgKi9cbiAgICBASW5wdXQoJ2NsYXNzJylcbiAgICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYW5lbENsYXNzID0gdGhpcy5wcmV2aW91c1BhbmVsQ2xhc3M7XG5cbiAgICAgICAgaWYgKHByZXZpb3VzUGFuZWxDbGFzcyAmJiBwcmV2aW91c1BhbmVsQ2xhc3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmV2aW91c1BhbmVsQ2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4gKHRoaXMuY2xhc3NMaXN0W2NsYXNzTmFtZV0gPSBmYWxzZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c1BhbmVsQ2xhc3MgPSBjbGFzc2VzO1xuXG4gICAgICAgIGlmIChjbGFzc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNsYXNzZXMuc3BsaXQoJyAnKS5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4gKHRoaXMuY2xhc3NMaXN0W2NsYXNzTmFtZV0gPSB0cnVlKSk7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfeFBvc2l0aW9uOiBEcm9wZG93blBvc2l0aW9uWCA9IHRoaXMuZGVmYXVsdE9wdGlvbnMueFBvc2l0aW9uO1xuICAgIHByaXZhdGUgX3lQb3NpdGlvbjogRHJvcGRvd25Qb3NpdGlvblkgPSB0aGlzLmRlZmF1bHRPcHRpb25zLnlQb3NpdGlvbjtcbiAgICBwcml2YXRlIF9vdmVybGFwVHJpZ2dlclg6IGJvb2xlYW4gPSB0aGlzLmRlZmF1bHRPcHRpb25zLm92ZXJsYXBUcmlnZ2VyWDtcbiAgICBwcml2YXRlIF9vdmVybGFwVHJpZ2dlclk6IGJvb2xlYW4gPSB0aGlzLmRlZmF1bHRPcHRpb25zLm92ZXJsYXBUcmlnZ2VyWTtcbiAgICBwcml2YXRlIF9oYXNCYWNrZHJvcDogYm9vbGVhbiA9IHRoaXMuZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3A7XG5cbiAgICB0cmlnZ2VyV2lkdGg6IHN0cmluZyA9ICcnO1xuICAgIC8qKiBDb25maWcgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBkcm9wZG93bidzIG5nQ2xhc3MgKi9cbiAgICBjbGFzc0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgICAvKiogQ3VycmVudCBzdGF0ZSBvZiB0aGUgcGFuZWwgYW5pbWF0aW9uLiAqL1xuICAgIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBkcm9wZG93biBjb21wbGV0ZXMuICovXG4gICAgYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIGlzIGFuaW1hdGluZy4gKi9cbiAgICBpc0FuaW1hdGluZzogYm9vbGVhbjtcblxuICAgIC8qKiBQYXJlbnQgZHJvcGRvd24gb2YgdGhlIGN1cnJlbnQgZHJvcGRvd24gcGFuZWwuICovXG4gICAgcGFyZW50OiBLYnFEcm9wZG93blBhbmVsIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIExheW91dCBkaXJlY3Rpb24gb2YgdGhlIGRyb3Bkb3duLiAqL1xuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xuXG4gICAgLyoqIENsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBiYWNrZHJvcCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3M6IHN0cmluZyA9IHRoaXMuZGVmYXVsdE9wdGlvbnMuYmFja2Ryb3BDbGFzcztcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiB0aGUgaXRlbXMgaW5zaWRlIG9mIGEgZHJvcGRvd24uXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFEcm9wZG93bkl0ZW0sIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgaXRlbXM6IFF1ZXJ5TGlzdDxLYnFEcm9wZG93bkl0ZW0+O1xuXG4gICAgLyoqXG4gICAgICogRHJvcGRvd24gY29udGVudCB0aGF0IHdpbGwgYmUgcmVuZGVyZWQgbGF6aWx5LlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEticURyb3Bkb3duQ29udGVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGxhenlDb250ZW50OiBLYnFEcm9wZG93bkNvbnRlbnQ7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZCB8ICdjbGljaycgfCAna2V5ZG93bicgfCAndGFiJz4oKTtcblxuICAgIHByaXZhdGUgcHJldmlvdXNQYW5lbENsYXNzOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGtleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxLYnFEcm9wZG93bkl0ZW0+O1xuXG4gICAgLyoqIE9ubHkgdGhlIGRpcmVjdCBkZXNjZW5kYW50IG1lbnUgaXRlbXMuICovXG4gICAgcHJpdmF0ZSBkaXJlY3REZXNjZW5kYW50SXRlbXMgPSBuZXcgUXVlcnlMaXN0PEticURyb3Bkb3duSXRlbT4oKTtcblxuICAgIC8qKiBTdWJzY3JpcHRpb24gdG8gdGFiIGV2ZW50cyBvbiB0aGUgZHJvcGRvd24gcGFuZWwgKi9cbiAgICBwcml2YXRlIHRhYlN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KEtCUV9EUk9QRE9XTl9ERUZBVUxUX09QVElPTlMpIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IEticURyb3Bkb3duRGVmYXVsdE9wdGlvbnNcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKTtcblxuICAgICAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPEticURyb3Bkb3duSXRlbT4odGhpcy5kaXJlY3REZXNjZW5kYW50SXRlbXMpLndpdGhUeXBlQWhlYWQoKTtcblxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uV2l0aFdyYXApIHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci53aXRoV3JhcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJTdWJzY3JpcHRpb24gPSB0aGlzLmtleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlZC5lbWl0KCd0YWInKSk7XG5cbiAgICAgICAgLy8gSWYgYSB1c2VyIG1hbnVhbGx5IChwcm9ncmFtbWF0aWNhbGx5KSBmb2N1c2VzIGEgbWVudSBpdGVtLCB3ZSBuZWVkIHRvIHJlZmxlY3QgdGhhdCBmb2N1c1xuICAgICAgICAvLyBjaGFuZ2UgYmFjayB0byB0aGUga2V5IG1hbmFnZXIuIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHVuc3Vic2NyaWJlIGhlcmUgYmVjYXVzZSBmb2N1c2VkXG4gICAgICAgIC8vIGlzIGludGVybmFsIGFuZCB3ZSBrbm93IHRoYXQgaXQgZ2V0cyBjb21wbGV0ZWQgb24gZGVzdHJveS5cbiAgICAgICAgdGhpcy5kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGl0ZW1zKSA9PiBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW06IEticURyb3Bkb3duSXRlbSkgPT4gaXRlbS5mb2N1c2VkKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmb2N1c2VkSXRlbSkgPT4gdGhpcy5rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZm9jdXNlZEl0ZW0gYXMgS2JxRHJvcGRvd25JdGVtKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIGhvdmVyZWQgZHJvcGRvd24gaXRlbSBjaGFuZ2VzLiAqL1xuICAgIGhvdmVyZWQoKTogT2JzZXJ2YWJsZTxLYnFEcm9wZG93bkl0ZW0+IHtcbiAgICAgICAgY29uc3QgaXRlbUNoYW5nZXMgPSB0aGlzLmRpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzIGFzIE9ic2VydmFibGU8UXVlcnlMaXN0PEticURyb3Bkb3duSXRlbT4+O1xuXG4gICAgICAgIHJldHVybiBpdGVtQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoaXRlbXMpID0+IG1lcmdlKC4uLml0ZW1zLm1hcCgoaXRlbTogS2JxRHJvcGRvd25JdGVtKSA9PiBpdGVtLmhvdmVyZWQpKSlcbiAgICAgICAgKSBhcyBPYnNlcnZhYmxlPEticURyb3Bkb3duSXRlbT47XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBhIGtleWJvYXJkIGV2ZW50IGZyb20gdGhlIGRyb3Bkb3duLCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcblxuICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgRVNDQVBFOlxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTEVGVF9BUlJPVzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdsdHInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICYmIHRoaXMuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVyB8fCBrZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbigna2V5Ym9hcmQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBldmVudCB0byBwcm9wYWdhdGUgaWYgd2UndmUgYWxyZWFkeSBoYW5kbGVkIGl0LCBvciBpdCBtYXlcbiAgICAgICAgLy8gZW5kIHVwIHJlYWNoaW5nIG90aGVyIG92ZXJsYXlzIHRoYXQgd2VyZSBvcGVuZWQgZWFybGllci5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGRyb3Bkb3duLlxuICAgICAqIEBwYXJhbSBvcmlnaW4gQWN0aW9uIGZyb20gd2hpY2ggdGhlIGZvY3VzIG9yaWdpbmF0ZWQuIFVzZWQgdG8gc2V0IHRoZSBjb3JyZWN0IHN0eWxpbmcuXG4gICAgICovXG4gICAgZm9jdXNGaXJzdEl0ZW0ob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgICAgICAvLyBXaGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkIGxhemlseSwgaXQgdGFrZXMgYSBiaXQgYmVmb3JlIHRoZSBpdGVtcyBhcmUgaW5zaWRlIHRoZSBET00uXG4gICAgICAgIGlmICh0aGlzLmxhenlDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmtleU1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4ob3JpZ2luKS5zZXRGaXJzdEl0ZW1BY3RpdmUoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4ob3JpZ2luKS5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgYWN0aXZlIGl0ZW0gaW4gdGhlIGRyb3Bkb3duLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbmVkLCBhbGxvd2luZ1xuICAgICAqIHRoZSB1c2VyIHRvIHN0YXJ0IGZyb20gdGhlIGZpcnN0IG9wdGlvbiB3aGVuIHByZXNzaW5nIHRoZSBkb3duIGFycm93LlxuICAgICAqL1xuICAgIHJlc2V0QWN0aXZlSXRlbSgpIHtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/LnJlc2V0U3R5bGVzKCk7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGNsYXNzZXMgdG8gdGhlIGRyb3Bkb3duIHBhbmVsIGJhc2VkIG9uIGl0cyBwb3NpdGlvbi4gQ2FuIGJlIHVzZWQgYnlcbiAgICAgKiBjb25zdW1lcnMgdG8gYWRkIHNwZWNpZmljIHN0eWxpbmcgYmFzZWQgb24gdGhlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSBwb3NYIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biBhbG9uZyB0aGUgeCBheGlzLlxuICAgICAqIEBwYXJhbSBwb3NZIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biBhbG9uZyB0aGUgeSBheGlzLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzZXRQb3NpdGlvbkNsYXNzZXMocG9zWDogRHJvcGRvd25Qb3NpdGlvblggPSB0aGlzLnhQb3NpdGlvbiwgcG9zWTogRHJvcGRvd25Qb3NpdGlvblkgPSB0aGlzLnlQb3NpdGlvbikge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5jbGFzc0xpc3Q7XG5cbiAgICAgICAgY2xhc3Nlc1sna2JxLWRyb3Bkb3duLWJlZm9yZSddID0gcG9zWCA9PT0gJ2JlZm9yZSc7XG4gICAgICAgIGNsYXNzZXNbJ2ticS1kcm9wZG93bi1hZnRlciddID0gcG9zWCA9PT0gJ2FmdGVyJztcbiAgICAgICAgY2xhc3Nlc1sna2JxLWRyb3Bkb3duLWFib3ZlJ10gPSBwb3NZID09PSAnYWJvdmUnO1xuICAgICAgICBjbGFzc2VzWydrYnEtZHJvcGRvd24tYmVsb3cnXSA9IHBvc1kgPT09ICdiZWxvdyc7XG4gICAgfVxuXG4gICAgLyoqIFN0YXJ0cyB0aGUgZW50ZXIgYW5pbWF0aW9uLiAqL1xuICAgIHN0YXJ0QW5pbWF0aW9uKCkge1xuICAgICAgICB0aGlzLnBhbmVsQW5pbWF0aW9uU3RhdGUgPSAnZW50ZXInO1xuICAgIH1cblxuICAgIC8qKiBSZXNldHMgdGhlIHBhbmVsIGFuaW1hdGlvbiB0byBpdHMgaW5pdGlhbCBzdGF0ZS4gKi9cbiAgICByZXNldEFuaW1hdGlvbigpIHtcbiAgICAgICAgdGhpcy5wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICAgIH1cblxuICAgIC8qKiBDYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgcGFuZWwgYW5pbWF0aW9uIGNvbXBsZXRlcy4gKi9cbiAgICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5pc0FuaW1hdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNBbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBlbGVtZW50IHRvIHRoZSB0b3AgYXMgc29vbiBhcyB0aGUgYW5pbWF0aW9uIHN0YXJ0cy4gVGhpcyBpcyBuZWNlc3NhcnksXG4gICAgICAgIC8vIGJlY2F1c2Ugd2UgbW92ZSBmb2N1cyB0byB0aGUgZmlyc3QgaXRlbSB3aGlsZSBpdCdzIHN0aWxsIGJlaW5nIGFuaW1hdGVkLCB3aGljaCBjYW4gdGhyb3dcbiAgICAgICAgLy8gdGhlIGJyb3dzZXIgb2ZmIHdoZW4gaXQgZGV0ZXJtaW5lcyB0aGUgc2Nyb2xsIHBvc2l0aW9uLiBBbHRlcm5hdGl2ZWx5IHdlIGNhbiBtb3ZlIGZvY3VzXG4gICAgICAgIC8vIHdoZW4gdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBob3dldmVyIG1vdmluZyBmb2N1cyBhc3luY2hyb25vdXNseSB3aWxsIGludGVycnVwdCBzY3JlZW5cbiAgICAgICAgLy8gcmVhZGVycyB3aGljaCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmVhZGluZyBvdXQgdGhlIGRyb3Bkb3duIGFscmVhZHkuIFdlIHRha2UgdGhlIGBlbGVtZW50YFxuICAgICAgICAvLyBmcm9tIHRoZSBgZXZlbnRgIHNpbmNlIHdlIGNhbid0IHVzZSBhIGBWaWV3Q2hpbGRgIHRvIGFjY2VzcyB0aGUgcGFuZS5cbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicgJiYgdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgZXZlbnQuZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzT3JpZ2luID0gdGhpcy5rZXlNYW5hZ2VyLmdldEZvY3VzT3JpZ2luKCkgPT09ICdrZXlib2FyZCcgPyAna2V5ZG93bicgOiAnY2xpY2snO1xuXG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoZm9jdXNPcmlnaW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgYSBzdHJlYW0gdGhhdCB3aWxsIGtlZXAgdHJhY2sgb2YgYW55IG5ld2x5LWFkZGVkIG1lbnUgaXRlbXMgYW5kIHdpbGwgdXBkYXRlIHRoZSBsaXN0XG4gICAgICogb2YgZGlyZWN0IGRlc2NlbmRhbnRzLiBXZSBjb2xsZWN0IHRoZSBkZXNjZW5kYW50cyB0aGlzIHdheSwgYmVjYXVzZSBgaXRlbXNgIGNhbiBpbmNsdWRlXG4gICAgICogaXRlbXMgdGhhdCBhcmUgcGFydCBvZiBjaGlsZCBtZW51cywgYW5kIHVzaW5nIGEgY3VzdG9tIHdheSBvZiByZWdpc3RlcmluZyBpdGVtcyBpcyB1bnJlbGlhYmxlXG4gICAgICogd2hlbiBpdCBjb21lcyB0byBtYWludGFpbmluZyB0aGUgaXRlbSBvcmRlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCkge1xuICAgICAgICB0aGlzLml0ZW1zLmNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5pdGVtcykpLnN1YnNjcmliZSgoaXRlbXM6IFF1ZXJ5TGlzdDxLYnFEcm9wZG93bkl0ZW0+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldChpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ucGFyZW50RHJvcGRvd25QYW5lbCA9PT0gdGhpcykpO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3REZXNjZW5kYW50SXRlbXMubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBjbGFzcz1cImticS1kcm9wZG93bl9fcGFuZWxcIlxuICAgICAgICBbY2xhc3Mua2JxLWRyb3Bkb3duX19wYW5lbF9uZXN0ZWRdPVwicGFyZW50XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJ0cmlnZ2VyV2lkdGhcIlxuICAgICAgICAoQHRyYW5zZm9ybURyb3Bkb3duLmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgICAoQHRyYW5zZm9ybURyb3Bkb3duLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgW0B0cmFuc2Zvcm1Ecm9wZG93bl09XCJwYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZHJvcGRvd25fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkUsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwy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TTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGtvb2JpcS9jZGsvYTExeSc7XG5pbXBvcnQgeyBFU0NBUEUsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBrYnFEcm9wZG93bkFuaW1hdGlvbnMgfSBmcm9tICcuL2Ryb3Bkb3duLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25Db250ZW50IH0gZnJvbSAnLi9kcm9wZG93bi1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0aHJvd0ticURyb3Bkb3duSW52YWxpZFBvc2l0aW9uWCwgdGhyb3dLYnFEcm9wZG93bkludmFsaWRQb3NpdGlvblkgfSBmcm9tICcuL2Ryb3Bkb3duLWVycm9ycyc7XG5pbXBvcnQgeyBLYnFEcm9wZG93bkl0ZW0gfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Qb3NpdGlvblgsXG4gICAgRHJvcGRvd25Qb3NpdGlvblksXG4gICAgS0JRX0RST1BET1dOX0RFRkFVTFRfT1BUSU9OUyxcbiAgICBLQlFfRFJPUERPV05fUEFORUwsXG4gICAgS2JxRHJvcGRvd25EZWZhdWx0T3B0aW9ucyxcbiAgICBLYnFEcm9wZG93blBhbmVsXG59IGZyb20gJy4vZHJvcGRvd24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1kcm9wZG93bicsXG4gICAgZXhwb3J0QXM6ICdrYnFEcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICdkcm9wZG93bi5odG1sJyxcbiAgICAvKiBDb21wb25lbnQgaW5oZXJpdHMgc3R5bGVzIGZyb20gYGxpc3RgLCBzbyBgbGlzdGAgdmFyaWFibGVzIGFyZSBpbXBvcnRlZCBhcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC4gKi9cbiAgICBzdHlsZVVybHM6IFsnZHJvcGRvd24uc2NzcycsICdkcm9wZG93bi10b2tlbnMuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICBrYnFEcm9wZG93bkFuaW1hdGlvbnMudHJhbnNmb3JtRHJvcGRvd24sXG4gICAgICAgIGticURyb3Bkb3duQW5pbWF0aW9ucy5mYWRlSW5JdGVtc1xuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogS0JRX0RST1BET1dOX1BBTkVMLCB1c2VFeGlzdGluZzogS2JxRHJvcGRvd24gfV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRHJvcGRvd24gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBLYnFEcm9wZG93blBhbmVsLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgbmF2aWdhdGlvbldpdGhXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duIGluIHRoZSBYIGF4aXMuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgeFBvc2l0aW9uKCk6IERyb3Bkb3duUG9zaXRpb25YIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3hQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBzZXQgeFBvc2l0aW9uKHZhbHVlOiBEcm9wZG93blBvc2l0aW9uWCkge1xuICAgICAgICBpZiAodmFsdWUgIT09ICdiZWZvcmUnICYmIHZhbHVlICE9PSAnYWZ0ZXInKSB7XG4gICAgICAgICAgICB0aHJvd0ticURyb3Bkb3duSW52YWxpZFBvc2l0aW9uWCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5feFBvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biBpbiB0aGUgWSBheGlzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHlQb3NpdGlvbigpOiBEcm9wZG93blBvc2l0aW9uWSB7XG4gICAgICAgIHJldHVybiB0aGlzLl95UG9zaXRpb247XG4gICAgfVxuXG4gICAgc2V0IHlQb3NpdGlvbih2YWx1ZTogRHJvcGRvd25Qb3NpdGlvblkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnYWJvdmUnICYmIHZhbHVlICE9PSAnYmVsb3cnKSB7XG4gICAgICAgICAgICB0aHJvd0ticURyb3Bkb3duSW52YWxpZFBvc2l0aW9uWSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5feVBvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIHNob3VsZCBvdmVybGFwIGl0cyB0cmlnZ2VyIHZlcnRpY2FsbHkuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgb3ZlcmxhcFRyaWdnZXJZKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxhcFRyaWdnZXJZO1xuICAgIH1cblxuICAgIHNldCBvdmVybGFwVHJpZ2dlclkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxhcFRyaWdnZXJZID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgZHJvcGRvd24gc2hvdWxkIG92ZXJsYXAgaXRzIHRyaWdnZXIgaG9yaXpvbnRhbGx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG92ZXJsYXBUcmlnZ2VyWCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXBUcmlnZ2VyWDtcbiAgICB9XG5cbiAgICBzZXQgb3ZlcmxhcFRyaWdnZXJYKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXBUcmlnZ2VyWCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIGhhcyBhIGJhY2tkcm9wLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc0JhY2tkcm9wKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzQmFja2Ryb3A7XG4gICAgfVxuXG4gICAgc2V0IGhhc0JhY2tkcm9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2hhc0JhY2tkcm9wID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB0YWtlcyBjbGFzc2VzIHNldCBvbiB0aGUgaG9zdCBrYnEtZHJvcGRvd24gZWxlbWVudCBhbmQgYXBwbGllcyB0aGVtIG9uIHRoZVxuICAgICAqIGRyb3Bkb3duIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiAgT3RoZXJ3aXNlLCBpdCdzIGRpZmZpY3VsdFxuICAgICAqIHRvIHN0eWxlIHRoZSBjb250YWluaW5nIGRyb3Bkb3duIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjbGFzc2VzIGxpc3Qgb2YgY2xhc3MgbmFtZXNcbiAgICAgKi9cbiAgICBASW5wdXQoJ2NsYXNzJylcbiAgICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYW5lbENsYXNzID0gdGhpcy5wcmV2aW91c1BhbmVsQ2xhc3M7XG5cbiAgICAgICAgaWYgKHByZXZpb3VzUGFuZWxDbGFzcyAmJiBwcmV2aW91c1BhbmVsQ2xhc3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmV2aW91c1BhbmVsQ2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4gKHRoaXMuY2xhc3NMaXN0W2NsYXNzTmFtZV0gPSBmYWxzZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c1BhbmVsQ2xhc3MgPSBjbGFzc2VzO1xuXG4gICAgICAgIGlmIChjbGFzc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNsYXNzZXMuc3BsaXQoJyAnKS5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4gKHRoaXMuY2xhc3NMaXN0W2NsYXNzTmFtZV0gPSB0cnVlKSk7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfeFBvc2l0aW9uOiBEcm9wZG93blBvc2l0aW9uWCA9IHRoaXMuZGVmYXVsdE9wdGlvbnMueFBvc2l0aW9uO1xuICAgIHByaXZhdGUgX3lQb3NpdGlvbjogRHJvcGRvd25Qb3NpdGlvblkgPSB0aGlzLmRlZmF1bHRPcHRpb25zLnlQb3NpdGlvbjtcbiAgICBwcml2YXRlIF9vdmVybGFwVHJpZ2dlclg6IGJvb2xlYW4gPSB0aGlzLmRlZmF1bHRPcHRpb25zLm92ZXJsYXBUcmlnZ2VyWDtcbiAgICBwcml2YXRlIF9vdmVybGFwVHJpZ2dlclk6IGJvb2xlYW4gPSB0aGlzLmRlZmF1bHRPcHRpb25zLm92ZXJsYXBUcmlnZ2VyWTtcbiAgICBwcml2YXRlIF9oYXNCYWNrZHJvcDogYm9vbGVhbiA9IHRoaXMuZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3A7XG5cbiAgICB0cmlnZ2VyV2lkdGg6IHN0cmluZyA9ICcnO1xuICAgIC8qKiBDb25maWcgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBkcm9wZG93bidzIG5nQ2xhc3MgKi9cbiAgICBjbGFzc0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgICAvKiogQ3VycmVudCBzdGF0ZSBvZiB0aGUgcGFuZWwgYW5pbWF0aW9uLiAqL1xuICAgIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBkcm9wZG93biBjb21wbGV0ZXMuICovXG4gICAgYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIGlzIGFuaW1hdGluZy4gKi9cbiAgICBpc0FuaW1hdGluZzogYm9vbGVhbjtcblxuICAgIC8qKiBQYXJlbnQgZHJvcGRvd24gb2YgdGhlIGN1cnJlbnQgZHJvcGRvd24gcGFuZWwuICovXG4gICAgcGFyZW50OiBLYnFEcm9wZG93blBhbmVsIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIExheW91dCBkaXJlY3Rpb24gb2YgdGhlIGRyb3Bkb3duLiAqL1xuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xuXG4gICAgLyoqIENsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBiYWNrZHJvcCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3M6IHN0cmluZyA9IHRoaXMuZGVmYXVsdE9wdGlvbnMuYmFja2Ryb3BDbGFzcztcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiB0aGUgaXRlbXMgaW5zaWRlIG9mIGEgZHJvcGRvd24uXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFEcm9wZG93bkl0ZW0sIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgaXRlbXM6IFF1ZXJ5TGlzdDxLYnFEcm9wZG93bkl0ZW0+O1xuXG4gICAgLyoqXG4gICAgICogRHJvcGRvd24gY29udGVudCB0aGF0IHdpbGwgYmUgcmVuZGVyZWQgbGF6aWx5LlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEticURyb3Bkb3duQ29udGVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGxhenlDb250ZW50OiBLYnFEcm9wZG93bkNvbnRlbnQ7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZCB8ICdjbGljaycgfCAna2V5ZG93bicgfCAndGFiJz4oKTtcblxuICAgIHByaXZhdGUgcHJldmlvdXNQYW5lbENsYXNzOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGtleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxLYnFEcm9wZG93bkl0ZW0+O1xuXG4gICAgLyoqIE9ubHkgdGhlIGRpcmVjdCBkZXNjZW5kYW50IG1lbnUgaXRlbXMuICovXG4gICAgcHJpdmF0ZSBkaXJlY3REZXNjZW5kYW50SXRlbXMgPSBuZXcgUXVlcnlMaXN0PEticURyb3Bkb3duSXRlbT4oKTtcblxuICAgIC8qKiBTdWJzY3JpcHRpb24gdG8gdGFiIGV2ZW50cyBvbiB0aGUgZHJvcGRvd24gcGFuZWwgKi9cbiAgICBwcml2YXRlIHRhYlN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KEtCUV9EUk9QRE9XTl9ERUZBVUxUX09QVElPTlMpIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IEticURyb3Bkb3duRGVmYXVsdE9wdGlvbnNcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKTtcblxuICAgICAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPEticURyb3Bkb3duSXRlbT4odGhpcy5kaXJlY3REZXNjZW5kYW50SXRlbXMpLndpdGhUeXBlQWhlYWQoKTtcblxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uV2l0aFdyYXApIHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci53aXRoV3JhcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJTdWJzY3JpcHRpb24gPSB0aGlzLmtleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlZC5lbWl0KCd0YWInKSk7XG5cbiAgICAgICAgLy8gSWYgYSB1c2VyIG1hbnVhbGx5IChwcm9ncmFtbWF0aWNhbGx5KSBmb2N1c2VzIGEgbWVudSBpdGVtLCB3ZSBuZWVkIHRvIHJlZmxlY3QgdGhhdCBmb2N1c1xuICAgICAgICAvLyBjaGFuZ2UgYmFjayB0byB0aGUga2V5IG1hbmFnZXIuIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHVuc3Vic2NyaWJlIGhlcmUgYmVjYXVzZSBmb2N1c2VkXG4gICAgICAgIC8vIGlzIGludGVybmFsIGFuZCB3ZSBrbm93IHRoYXQgaXQgZ2V0cyBjb21wbGV0ZWQgb24gZGVzdHJveS5cbiAgICAgICAgdGhpcy5kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGl0ZW1zKSA9PiBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW06IEticURyb3Bkb3duSXRlbSkgPT4gaXRlbS5mb2N1c2VkKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmb2N1c2VkSXRlbSkgPT4gdGhpcy5rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZm9jdXNlZEl0ZW0gYXMgS2JxRHJvcGRvd25JdGVtKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIGhvdmVyZWQgZHJvcGRvd24gaXRlbSBjaGFuZ2VzLiAqL1xuICAgIGhvdmVyZWQoKTogT2JzZXJ2YWJsZTxLYnFEcm9wZG93bkl0ZW0+IHtcbiAgICAgICAgY29uc3QgaXRlbUNoYW5nZXMgPSB0aGlzLmRpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzIGFzIE9ic2VydmFibGU8UXVlcnlMaXN0PEticURyb3Bkb3duSXRlbT4+O1xuXG4gICAgICAgIHJldHVybiBpdGVtQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoaXRlbXMpID0+IG1lcmdlKC4uLml0ZW1zLm1hcCgoaXRlbTogS2JxRHJvcGRvd25JdGVtKSA9PiBpdGVtLmhvdmVyZWQpKSlcbiAgICAgICAgKSBhcyBPYnNlcnZhYmxlPEticURyb3Bkb3duSXRlbT47XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBhIGtleWJvYXJkIGV2ZW50IGZyb20gdGhlIGRyb3Bkb3duLCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcblxuICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgRVNDQVBFOlxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTEVGVF9BUlJPVzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdsdHInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICYmIHRoaXMuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVyB8fCBrZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbigna2V5Ym9hcmQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBldmVudCB0byBwcm9wYWdhdGUgaWYgd2UndmUgYWxyZWFkeSBoYW5kbGVkIGl0LCBvciBpdCBtYXlcbiAgICAgICAgLy8gZW5kIHVwIHJlYWNoaW5nIG90aGVyIG92ZXJsYXlzIHRoYXQgd2VyZSBvcGVuZWQgZWFybGllci5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGRyb3Bkb3duLlxuICAgICAqIEBwYXJhbSBvcmlnaW4gQWN0aW9uIGZyb20gd2hpY2ggdGhlIGZvY3VzIG9yaWdpbmF0ZWQuIFVzZWQgdG8gc2V0IHRoZSBjb3JyZWN0IHN0eWxpbmcuXG4gICAgICovXG4gICAgZm9jdXNGaXJzdEl0ZW0ob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgICAgICAvLyBXaGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkIGxhemlseSwgaXQgdGFrZXMgYSBiaXQgYmVmb3JlIHRoZSBpdGVtcyBhcmUgaW5zaWRlIHRoZSBET00uXG4gICAgICAgIGlmICh0aGlzLmxhenlDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmtleU1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4ob3JpZ2luKS5zZXRGaXJzdEl0ZW1BY3RpdmUoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4ob3JpZ2luKS5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgYWN0aXZlIGl0ZW0gaW4gdGhlIGRyb3Bkb3duLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbmVkLCBhbGxvd2luZ1xuICAgICAqIHRoZSB1c2VyIHRvIHN0YXJ0IGZyb20gdGhlIGZpcnN0IG9wdGlvbiB3aGVuIHByZXNzaW5nIHRoZSBkb3duIGFycm93LlxuICAgICAqL1xuICAgIHJlc2V0QWN0aXZlSXRlbSgpIHtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/LnJlc2V0U3R5bGVzKCk7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGNsYXNzZXMgdG8gdGhlIGRyb3Bkb3duIHBhbmVsIGJhc2VkIG9uIGl0cyBwb3NpdGlvbi4gQ2FuIGJlIHVzZWQgYnlcbiAgICAgKiBjb25zdW1lcnMgdG8gYWRkIHNwZWNpZmljIHN0eWxpbmcgYmFzZWQgb24gdGhlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSBwb3NYIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biBhbG9uZyB0aGUgeCBheGlzLlxuICAgICAqIEBwYXJhbSBwb3NZIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biBhbG9uZyB0aGUgeSBheGlzLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzZXRQb3NpdGlvbkNsYXNzZXMocG9zWDogRHJvcGRvd25Qb3NpdGlvblggPSB0aGlzLnhQb3NpdGlvbiwgcG9zWTogRHJvcGRvd25Qb3NpdGlvblkgPSB0aGlzLnlQb3NpdGlvbikge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5jbGFzc0xpc3Q7XG5cbiAgICAgICAgY2xhc3Nlc1sna2JxLWRyb3Bkb3duLWJlZm9yZSddID0gcG9zWCA9PT0gJ2JlZm9yZSc7XG4gICAgICAgIGNsYXNzZXNbJ2ticS1kcm9wZG93bi1hZnRlciddID0gcG9zWCA9PT0gJ2FmdGVyJztcbiAgICAgICAgY2xhc3Nlc1sna2JxLWRyb3Bkb3duLWFib3ZlJ10gPSBwb3NZID09PSAnYWJvdmUnO1xuICAgICAgICBjbGFzc2VzWydrYnEtZHJvcGRvd24tYmVsb3cnXSA9IHBvc1kgPT09ICdiZWxvdyc7XG4gICAgfVxuXG4gICAgLyoqIFN0YXJ0cyB0aGUgZW50ZXIgYW5pbWF0aW9uLiAqL1xuICAgIHN0YXJ0QW5pbWF0aW9uKCkge1xuICAgICAgICB0aGlzLnBhbmVsQW5pbWF0aW9uU3RhdGUgPSAnZW50ZXInO1xuICAgIH1cblxuICAgIC8qKiBSZXNldHMgdGhlIHBhbmVsIGFuaW1hdGlvbiB0byBpdHMgaW5pdGlhbCBzdGF0ZS4gKi9cbiAgICByZXNldEFuaW1hdGlvbigpIHtcbiAgICAgICAgdGhpcy5wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICAgIH1cblxuICAgIC8qKiBDYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgcGFuZWwgYW5pbWF0aW9uIGNvbXBsZXRlcy4gKi9cbiAgICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5pc0FuaW1hdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNBbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBlbGVtZW50IHRvIHRoZSB0b3AgYXMgc29vbiBhcyB0aGUgYW5pbWF0aW9uIHN0YXJ0cy4gVGhpcyBpcyBuZWNlc3NhcnksXG4gICAgICAgIC8vIGJlY2F1c2Ugd2UgbW92ZSBmb2N1cyB0byB0aGUgZmlyc3QgaXRlbSB3aGlsZSBpdCdzIHN0aWxsIGJlaW5nIGFuaW1hdGVkLCB3aGljaCBjYW4gdGhyb3dcbiAgICAgICAgLy8gdGhlIGJyb3dzZXIgb2ZmIHdoZW4gaXQgZGV0ZXJtaW5lcyB0aGUgc2Nyb2xsIHBvc2l0aW9uLiBBbHRlcm5hdGl2ZWx5IHdlIGNhbiBtb3ZlIGZvY3VzXG4gICAgICAgIC8vIHdoZW4gdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBob3dldmVyIG1vdmluZyBmb2N1cyBhc3luY2hyb25vdXNseSB3aWxsIGludGVycnVwdCBzY3JlZW5cbiAgICAgICAgLy8gcmVhZGVycyB3aGljaCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmVhZGluZyBvdXQgdGhlIGRyb3Bkb3duIGFscmVhZHkuIFdlIHRha2UgdGhlIGBlbGVtZW50YFxuICAgICAgICAvLyBmcm9tIHRoZSBgZXZlbnRgIHNpbmNlIHdlIGNhbid0IHVzZSBhIGBWaWV3Q2hpbGRgIHRvIGFjY2VzcyB0aGUgcGFuZS5cbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicgJiYgdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgZXZlbnQuZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzT3JpZ2luID0gdGhpcy5rZXlNYW5hZ2VyLmdldEZvY3VzT3JpZ2luKCkgPT09ICdrZXlib2FyZCcgPyAna2V5ZG93bicgOiAnY2xpY2snO1xuXG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoZm9jdXNPcmlnaW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgYSBzdHJlYW0gdGhhdCB3aWxsIGtlZXAgdHJhY2sgb2YgYW55IG5ld2x5LWFkZGVkIG1lbnUgaXRlbXMgYW5kIHdpbGwgdXBkYXRlIHRoZSBsaXN0XG4gICAgICogb2YgZGlyZWN0IGRlc2NlbmRhbnRzLiBXZSBjb2xsZWN0IHRoZSBkZXNjZW5kYW50cyB0aGlzIHdheSwgYmVjYXVzZSBgaXRlbXNgIGNhbiBpbmNsdWRlXG4gICAgICogaXRlbXMgdGhhdCBhcmUgcGFydCBvZiBjaGlsZCBtZW51cywgYW5kIHVzaW5nIGEgY3VzdG9tIHdheSBvZiByZWdpc3RlcmluZyBpdGVtcyBpcyB1bnJlbGlhYmxlXG4gICAgICogd2hlbiBpdCBjb21lcyB0byBtYWludGFpbmluZyB0aGUgaXRlbSBvcmRlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCkge1xuICAgICAgICB0aGlzLml0ZW1zLmNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5pdGVtcykpLnN1YnNjcmliZSgoaXRlbXM6IFF1ZXJ5TGlzdDxLYnFEcm9wZG93bkl0ZW0+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldChpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ucGFyZW50RHJvcGRvd25QYW5lbCA9PT0gdGhpcykpO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3REZXNjZW5kYW50SXRlbXMubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBjbGFzcz1cImticS1kcm9wZG93bl9fcGFuZWxcIlxuICAgICAgICBbY2xhc3Mua2JxLWRyb3Bkb3duX19wYW5lbF9uZXN0ZWRdPVwicGFyZW50XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJ0cmlnZ2VyV2lkdGhcIlxuICAgICAgICAoQHRyYW5zZm9ybURyb3Bkb3duLmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgICAoQHRyYW5zZm9ybURyb3Bkb3duLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgW0B0cmFuc2Zvcm1Ecm9wZG93bl09XCJwYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZHJvcGRvd25fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -16,6 +16,7 @@ export class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
16
16
  * @default 50
17
17
  */
18
18
  this.debounceInterval = 50;
19
+ /** @docs-private */
19
20
  this.resizeStream = new Subject();
20
21
  this.resizeSubscription = Subscription.EMPTY;
21
22
  }
@@ -39,6 +40,11 @@ export class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
39
40
  super.ngOnDestroy();
40
41
  this.resizeSubscription.unsubscribe();
41
42
  }
43
+ /**
44
+ * Updates the displayed text with center ellipsis truncation based on container width.
45
+ * Recreates start/end span elements, measures available space, and adjusts text accordingly.
46
+ * @docs-private
47
+ */
42
48
  refresh() {
43
49
  let start = '';
44
50
  let end = '';
@@ -69,6 +75,7 @@ export class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
69
75
  }
70
76
  dataTextStart.innerText = start;
71
77
  dataTextEnd.innerText = end;
78
+ this.cdr.markForCheck();
72
79
  });
73
80
  this.renderer.appendChild(this.elementRef.nativeElement, dataTextStart);
74
81
  this.renderer.appendChild(this.elementRef.nativeElement, dataTextEnd);
@@ -107,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
107
114
  declarations: [KbqEllipsisCenterDirective]
108
115
  }]
109
116
  }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMtY2VudGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZWxsaXBzaXMtY2VudGVyL2VsbGlwc2lzLWNlbnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUdmLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBUzlCLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFQakU7O1FBUVksYUFBUSxHQUFjLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxRQUFHLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBU2xELHFCQUFnQixHQUFXLGtCQUFrQixDQUFDO1FBRTlDLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFFdkI7OztXQUdHO1FBQ29DLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUU1RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFJckMsdUJBQWtCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztLQStEbkQ7SUFwRkcsSUFBYSxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxHQUFHLENBQUMsYUFB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a0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUVELGFBQWEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsQ0FBQztrSUF2RlEsMEJBQTBCO3NIQUExQiwwQkFBMEIsOE1BbUJmLGVBQWU7OzRGQW5CMUIsMEJBQTBCO2tCQVB0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3dCQUM1QixpQkFBaUIsRUFBRSwyQkFBMkI7cUJBQ2pEO2lCQUNKOzhCQUtnQixpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTWlDLGdCQUFnQjtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7O0FBMkV6QyxNQUFNLE9BQU8sdUJBQXVCO2tJQUF2Qix1QkFBdUI7bUlBQXZCLHVCQUF1QixpQkE5RnZCLDBCQUEwQixhQUExQiwwQkFBMEI7bUlBOEYxQix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUM3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticVRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IE1JTl9WSVNJQkxFX0xFTkdUSCA9IDUwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1trYnFFbGxpcHNpc0NlbnRlcl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtZWxsaXBzaXMtY2VudGVyJyxcbiAgICAgICAgJyh3aW5kb3c6cmVzaXplKSc6ICdyZXNpemVTdHJlYW0ubmV4dCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRWxsaXBzaXNDZW50ZXJEaXJlY3RpdmUgZXh0ZW5kcyBLYnFUb29sdGlwVHJpZ2dlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgQElucHV0KCkgc2V0IGticUVsbGlwc2lzQ2VudGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fa2JxRWxsaXBzaXNDZW50ZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIC8vIGNoZWNrIHRoZSB2aWV3IHRvIHByb3Blcmx5IGNhbGN1bGF0ZSB0ZXh0LXN0YXJ0IGFuZCB0ZXh0LWVuZCBvbiB0ZXh0IGluaXRpYWxpemVkXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBtaW5WaXNpYmxlTGVuZ3RoOiBudW1iZXIgPSBNSU5fVklTSUJMRV9MRU5HVEg7XG5cbiAgICBASW5wdXQoKSBjaGFyV2lkdGggPSA3O1xuXG4gICAgLyoqXG4gICAgICogRGVib3VuY2UgdGltZSAobXMpIGZvciByZXNpemUgZXZlbnRzIGJlZm9yZSByZWNhbGN1bGF0aW5nIGVsbGlwc2lzIHBvc2l0aW9uLlxuICAgICAqIEBkZWZhdWx0IDUwXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgZGVib3VuY2VJbnRlcnZhbDogbnVtYmVyID0gNTA7XG5cbiAgICByZWFkb25seSByZXNpemVTdHJlYW0gPSBuZXcgU3ViamVjdDxFdmVudD4oKTtcblxuICAgIHByaXZhdGUgX2ticUVsbGlwc2lzQ2VudGVyOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLl9rYnFFbGxpcHNpc0NlbnRlcjtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IHRoaXMucmVzaXplU3RyZWFtXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZUludGVydmFsKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaCgpIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gJyc7XG4gICAgICAgIGxldCBlbmQgPSAnJztcblxuICAgICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLl9rYnFFbGxpcHNpc0NlbnRlcjtcblxuICAgICAgICBjb25zdCBbZGF0YVRleHRTdGFydCwgZGF0YVRleHRFbmRdID0gWydkYXRhLXRleHQtc3RhcnQnLCAnZGF0YS10ZXh0LWVuZCddLm1hcCgocXVlcnlTZWxlY3RvcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3F1ZXJ5U2VsZWN0b3J9YCk7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhuZXdFbGVtZW50LCBxdWVyeVNlbGVjdG9yKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZGF0YVRleHRTdGFydCwgdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRoaXMuX2ticUVsbGlwc2lzQ2VudGVyKSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZGF0YVRleHRFbmQsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChlbmQpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggPiBkYXRhVGV4dFN0YXJ0LnNjcm9sbFdpZHRoO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gJyc7XG4gICAgICAgICAgICAgICAgZW5kID0gdGhpcy5fa2JxRWxsaXBzaXNDZW50ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF2ZXJhZ2VDaGFyV2lkdGggPSB0aGlzLmNoYXJXaWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hhcnNMZW5ndGggPSBNYXRoLnJvdW5kKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC8gMiAvIGF2ZXJhZ2VDaGFyV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNsaWNlSW5kZXg6IG51bWJlciA9IE1hdGgucm91bmQodGhpcy5fa2JxRWxsaXBzaXNDZW50ZXIubGVuZ3RoIC0gbGFzdENoYXJzTGVuZ3RoKTtcblxuICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5fa2JxRWxsaXBzaXNDZW50ZXIuc2xpY2UoMCwgc2xpY2VJbmRleCk7XG4gICAgICAgICAgICAgICAgZW5kID0gdGhpcy5fa2JxRWxsaXBzaXNDZW50ZXIuc2xpY2Uoc2xpY2VJbmRleCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGFUZXh0U3RhcnQuaW5uZXJUZXh0ID0gc3RhcnQ7XG4gICAgICAgICAgICBkYXRhVGV4dEVuZC5pbm5lclRleHQgPSBlbmQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGRhdGFUZXh0U3RhcnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBkYXRhVGV4dEVuZCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGV4cG9ydHM6IFtLYnFFbGxpcHNpc0NlbnRlckRpcmVjdGl2ZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbS2JxRWxsaXBzaXNDZW50ZXJEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIEticUVsbGlwc2lzQ2VudGVyTW9kdWxlIHt9XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMtY2VudGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZWxsaXBzaXMtY2VudGVyL2VsbGlwc2lzLWNlbnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUdmLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBUzlCLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFQakU7O1FBUVksYUFBUSxHQUFjLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxRQUFHLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBU2xELHFCQUFnQixHQUFXLGtCQUFrQixDQUFDO1FBRTlDLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFFdkI7OztXQUdHO1FBQ29DLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUVyRSxvQkFBb0I7UUFDWCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFJckMsdUJBQWtCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztLQXNFbkQ7SUE1RkcsSUFBYSxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxH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IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticVRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IE1JTl9WSVNJQkxFX0xFTkdUSCA9IDUwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1trYnFFbGxpcHNpc0NlbnRlcl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtZWxsaXBzaXMtY2VudGVyJyxcbiAgICAgICAgJyh3aW5kb3c6cmVzaXplKSc6ICdyZXNpemVTdHJlYW0ubmV4dCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRWxsaXBzaXNDZW50ZXJEaXJlY3RpdmUgZXh0ZW5kcyBLYnFUb29sdGlwVHJpZ2dlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgQElucHV0KCkgc2V0IGticUVsbGlwc2lzQ2VudGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fa2JxRWxsaXBzaXNDZW50ZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIC8vIGNoZWNrIHRoZSB2aWV3IHRvIHByb3Blcmx5IGNhbGN1bGF0ZSB0ZXh0LXN0YXJ0IGFuZCB0ZXh0LWVuZCBvbiB0ZXh0IGluaXRpYWxpemVkXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBtaW5WaXNpYmxlTGVuZ3RoOiBudW1iZXIgPSBNSU5fVklTSUJMRV9MRU5HVEg7XG5cbiAgICBASW5wdXQoKSBjaGFyV2lkdGggPSA3O1xuXG4gICAgLyoqXG4gICAgICogRGVib3VuY2UgdGltZSAobXMpIGZvciByZXNpemUgZXZlbnRzIGJlZm9yZSByZWNhbGN1bGF0aW5nIGVsbGlwc2lzIHBvc2l0aW9uLlxuICAgICAqIEBkZWZhdWx0IDUwXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgZGVib3VuY2VJbnRlcnZhbDogbnVtYmVyID0gNTA7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlYWRvbmx5IHJlc2l6ZVN0cmVhbSA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSBfa2JxRWxsaXBzaXNDZW50ZXI6IHN0cmluZztcblxuICAgIHByaXZhdGUgcmVzaXplU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuX2ticUVsbGlwc2lzQ2VudGVyO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gdGhpcy5yZXNpemVTdHJlYW1cbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlSW50ZXJ2YWwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2goKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgZGlzcGxheWVkIHRleHQgd2l0aCBjZW50ZXIgZWxsaXBzaXMgdHJ1bmNhdGlvbiBiYXNlZCBvbiBjb250YWluZXIgd2lkdGguXG4gICAgICogUmVjcmVhdGVzIHN0YXJ0L2VuZCBzcGFuIGVsZW1lbnRzLCBtZWFzdXJlcyBhdmFpbGFibGUgc3BhY2UsIGFuZCBhZGp1c3RzIHRleHQgYWNjb3JkaW5nbHkuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHJlZnJlc2goKTogdm9pZCB7XG4gICAgICAgIGxldCBzdGFydCA9ICcnO1xuICAgICAgICBsZXQgZW5kID0gJyc7XG5cbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5fa2JxRWxsaXBzaXNDZW50ZXI7XG5cbiAgICAgICAgY29uc3QgW2RhdGFUZXh0U3RhcnQsIGRhdGFUZXh0RW5kXSA9IFsnZGF0YS10ZXh0LXN0YXJ0JywgJ2RhdGEtdGV4dC1lbmQnXS5tYXAoKHF1ZXJ5U2VsZWN0b3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAuJHtxdWVyeVNlbGVjdG9yfWApO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobmV3RWxlbWVudCwgcXVlcnlTZWxlY3Rvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdFbGVtZW50O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRhdGFUZXh0U3RhcnQsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLl9rYnFFbGxpcHNpc0NlbnRlcikpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRhdGFUZXh0RW5kLCB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQoZW5kKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoID4gZGF0YVRleHRTdGFydC5zY3JvbGxXaWR0aDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9ICcnO1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMuX2ticUVsbGlwc2lzQ2VudGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdmVyYWdlQ2hhcldpZHRoID0gdGhpcy5jaGFyV2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdENoYXJzTGVuZ3RoID0gTWF0aC5yb3VuZCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCAvIDIgLyBhdmVyYWdlQ2hhcldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzbGljZUluZGV4OiBudW1iZXIgPSBNYXRoLnJvdW5kKHRoaXMuX2ticUVsbGlwc2lzQ2VudGVyLmxlbmd0aCAtIGxhc3RDaGFyc0xlbmd0aCk7XG5cbiAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMuX2ticUVsbGlwc2lzQ2VudGVyLnNsaWNlKDAsIHNsaWNlSW5kZXgpO1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMuX2ticUVsbGlwc2lzQ2VudGVyLnNsaWNlKHNsaWNlSW5kZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhVGV4dFN0YXJ0LmlubmVyVGV4dCA9IHN0YXJ0O1xuICAgICAgICAgICAgZGF0YVRleHRFbmQuaW5uZXJUZXh0ID0gZW5kO1xuXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgZGF0YVRleHRTdGFydCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGRhdGFUZXh0RW5kKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgZXhwb3J0czogW0ticUVsbGlwc2lzQ2VudGVyRGlyZWN0aXZlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtLYnFFbGxpcHNpc0NlbnRlckRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRWxsaXBzaXNDZW50ZXJNb2R1bGUge31cbiJdfQ==
@@ -199,7 +199,7 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
199
199
  this.fileRemoved.emit([removedFile, index]);
200
200
  this.filesChange.emit(this.files);
201
201
  this.onTouched();
202
- this.listSelection.keyManager.setActiveItem(-1);
202
+ this.listSelection?.keyManager.setActiveItem(-1);
203
203
  }
204
204
  mapToFileItem(files) {
205
205
  if (!files) {
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
291
291
  type: ContentChildren,
292
292
  args: [KbqHint]
293
293
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWxlLXVwbG9hZC9tdWx0aXBsZS1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL211bHRpcGxlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDSCw2QkFBNkIsRUFHN0IsaUJBQWlCLEVBSXBCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBRXZCLElBQUksOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBYXZDLE1BQU0sQ0FBQyxNQUFNLDhDQUE4QyxHQUN2RCxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUV2QyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQVkvQixNQUFNLE9BQU8sOEJBQ1QsU0FBUSxpQkFBaUI7SUE2QnpC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LEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFTRixLQUFLO3NCQURSLEtBQUs7Z0JBUytCLFdBQVc7c0JBQS9DLE1BQU07dUJBQUMsa0JBQWtCO2dCQUtQLFVBQVU7c0JBQTVCLE1BQU07Z0JBS1ksV0FBVztzQkFBN0IsTUFBTTtnQkFJWSxjQUFjO3NCQURoQyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJcEMsS0FBSztzQkFBakMsU0FBUzt1QkFBQyxPQUFPO2dCQUM0QixhQUFhO3NCQUExRCxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDdUIsa0JBQWtCO3NCQUFuRSxTQUFTO3VCQUFDLG9CQUFvQjtnQkFHYyxJQUFJO3NCQUFoRCxlQUFlO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBydVJVTG9jYWxlRGF0YSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticUhpbnQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFMaXN0U2VsZWN0aW9uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2xpc3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTixcbiAgICBLYnFGaWxlLFxuICAgIEticUZpbGVJdGVtLFxuICAgIEticUZpbGVVcGxvYWRCYXNlLFxuICAgIEticUZpbGVWYWxpZGF0b3JGbixcbiAgICBLYnFJbnB1dEZpbGUsXG4gICAgS2JxSW5wdXRGaWxlTGFiZWxcbn0gZnJvbSAnLi9maWxlLXVwbG9hZCc7XG5cbmxldCBuZXh0TXVsdGlwbGVGaWxlVXBsb2FkVW5pcXVlSWQgPSAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIEticUlucHV0RmlsZU11bHRpcGxlTGFiZWwgZXh0ZW5kcyBLYnFJbnB1dEZpbGVMYWJlbCB7XG4gICAgY2FwdGlvblRleHRXaGVuU2VsZWN0ZWQ6IHN0cmluZztcbiAgICBjYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplOiBzdHJpbmc7XG4gICAgZ3JpZEhlYWRlcnM6IHtcbiAgICAgICAgZmlsZTogc3RyaW5nO1xuICAgICAgICBzaXplOiBzdHJpbmc7XG4gICAgfTtcblxuICAgIFtrOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2xdOiB1bmtub3duO1xufVxuXG5leHBvcnQgY29uc3QgS0JRX01VTFRJUExFX0ZJTEVfVVBMT0FEX0RFRkFVTFRfQ09ORklHVVJBVElPTjogS2JxSW5wdXRGaWxlTXVsdGlwbGVMYWJlbCA9XG4gICAgcnVSVUxvY2FsZURhdGEuZmlsZVVwbG9hZC5tdWx0aXBsZTtcblxuY29uc3QgZmlsZVNpemVDZWxsUGFkZGluZyA9IDE2O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1tdWx0aXBsZS1maWxlLXVwbG9hZCxrYnEtZmlsZS11cGxvYWRbbXVsdGlwbGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLnNjc3MnLCAnLi9maWxlLXVwbG9hZC10b2tlbnMuc2NzcycsICcuL211bHRpcGxlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLW11bHRpcGxlLWZpbGUtdXBsb2FkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTXVsdGlwbGVGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBLYnFGaWxlVXBsb2FkQmFzZVxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgS2JxSW5wdXRGaWxlLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVja1xue1xuICAgIC8qKlxuICAgICAqIEEgdmFsdWUgcmVzcG9uc2libGUgZm9yIHByb2dyZXNzIHNwaW5uZXIgdHlwZS5cbiAgICAgKiBMb2FkaW5nIGxvZ2ljIGRlcGVuZHMgb24gc2VsZWN0ZWQgbW9kZSAqL1xuICAgIEBJbnB1dCgpIHByb2dyZXNzTW9kZTogUHJvZ3Jlc3NTcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSc7XG4gICAgLyoqIEFycmF5IG9mIGZpbGUgdHlwZSBzcGVjaWZpZXJzICovXG4gICAgQElucHV0KCkgYWNjZXB0Pzogc3RyaW5nW107XG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGBGb3JtQ29udHJvbC5lcnJvcnNgXG4gICAgICovXG4gICAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHNpemU6ICdjb21wYWN0JyB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcbiAgICAvKipcbiAgICAgKiBjdXN0b20gSUQgZm9yIHRoZSBmaWxlIGlucHV0IGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nID0gYGticS1tdWx0aXBsZS1maWxlLXVwbG9hZC0ke25leHRNdWx0aXBsZUZpbGVVcGxvYWRVbmlxdWVJZCsrfWA7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIEZvcm1Db250cm9sIGZvciB2YWxpZGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgY3VzdG9tVmFsaWRhdGlvbj86IEticUZpbGVWYWxpZGF0b3JGbltdO1xuXG4gICAgLyoqIEFuIG9iamVjdCB1c2VkIHRvIGNvbnRyb2wgdGhlIGVycm9yIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgZXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEticUZpbGVJdGVtW10gPSBbXTtcblxuICAgIGdldCBmaWxlcygpOiBLYnFGaWxlSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbGVzKGN1cnJlbnRGaWxlTGlzdDogS2JxRmlsZUl0ZW1bXSkge1xuICAgICAgICB0aGlzLl9maWxlcyA9IGN1cnJlbnRGaWxlTGlzdDtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZSh0aGlzLl9maWxlcyk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBFbWl0cyBhbiBldmVudCBjb250YWluaW5nIHVwZGF0ZWQgZmlsZSBsaXN0LlxuICAgICAqIHB1YmxpYyBvdXRwdXQgd2lsbCBiZSByZW5hbWVkIHRvIGZpbGVzQ2hhbmdlIGluIG5leHQgbWFqb3IgcmVsZWFzZSAoI0RTLTM3MDApICovXG4gICAgQE91dHB1dCgnZmlsZVF1ZXVlQ2hhbmdlZCcpIHJlYWRvbmx5IGZpbGVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbGVJdGVtW10+KCk7XG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgY29udGFpbmluZyBhIGNodW5rIG9mIGZpbGVzIGFkZGVkIHRvIHRoZSBmaWxlIGxpc3QuXG4gICAgICogVXNlZnVsIHdoZW4gaGFuZGxpbmcgYWRkZWQgZmlsZXMsIHNraXBwaW5nIGZpbHRlcmluZyBmaWxlIGxpc3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbGVzQWRkZWQ6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW1bXT4oKTtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCBjb250YWluaW5nIGEgdHVwbGUgb2YgZmlsZSBhbmQgZmlsZSdzIGluZGV4IHdoZW4gcmVtb3ZlZCBmcm9tIHRoZSBmaWxlIGxpc3QuXG4gICAgICogVXNlZnVsIHdoZW4gaGFuZGxlIHJlbW92ZWQgZmlsZXMsIHNraXBwaW5nIGZpbHRlcmluZyBmaWxlIGxpc3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbGVSZW1vdmVkOiBFdmVudEVtaXR0ZXI8W0ticUZpbGVJdGVtLCBudW1iZXJdPiA9IG5ldyBFdmVudEVtaXR0ZXI8W0ticUZpbGVJdGVtLCBudW1iZXJdPigpO1xuXG4gICAgLyoqIEZpbGUgSWNvbiBUZW1wbGF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2ticUZpbGVJY29uJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBjdXN0b21GaWxlSWNvbjogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIHJlYWRvbmx5IGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoS2JxTGlzdFNlbGVjdGlvbikgcHJpdmF0ZSByZWFkb25seSBsaXN0U2VsZWN0aW9uOiBLYnFMaXN0U2VsZWN0aW9uO1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVTaXplSGVhZGVyQ2VsbCcpIHByaXZhdGUgcmVhZG9ubHkgZmlsZVNpemVIZWFkZXJDZWxsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFIaW50KSBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludDogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBoYXNGb2N1cyA9IGZhbHNlO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgY29sdW1uRGVmczogeyBoZWFkZXI6IHN0cmluZzsgY3NzQ2xhc3M6IHN0cmluZyB9W107XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBjb25maWc6IEticUlucHV0RmlsZU11bHRpcGxlTGFiZWw7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHNlcGFyYXRlZENhcHRpb25UZXh0OiBzdHJpbmdbXTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHNlcGFyYXRlZENhcHRpb25UZXh0V2hlblNlbGVjdGVkOiBzdHJpbmdbXTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHNlcGFyYXRlZENhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemU6IHN0cmluZ1tdO1xuXG4gICAgLyoqIGN2YU9uQ2hhbmdlIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyT25DaGFuZ2UgKENvbnRyb2xWYWx1ZUFjY2Vzc29yKS5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgY3ZhT25DaGFuZ2UgPSAoXzogS2JxRmlsZUl0ZW1bXSkgPT4ge307XG5cbiAgICAvKiogb25Ub3VjaCBmdW5jdGlvbiByZWdpc3RlcmVkIHZpYSByZWdpc3Rlck9uVG91Y2ggKENvbnRyb2xWYWx1ZUFjY2Vzc29yKS5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBhY2NlcHRlZEZpbGVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjY2VwdD8uam9pbignLCcpIHx8ICcqLyonO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgRm9ybUNvbnRyb2wuZXJyb3JzYFxuICAgICAqL1xuICAgIGdldCBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9ycyAmJiAhIXRoaXMuZXJyb3JzLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBoYXNIaW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaW50Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIGFuIGludmFsaWQgc3RhdGUgYmFzZWQgb24gYGVycm9yU3RhdGVgLFxuICAgICAqIGFwcGx5aW5nIGEgQ1NTIGNsYXNzIGluIEhUTUwgZm9yIHZpc3VhbCBmZWVkYmFjay5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IG1heFdpZHRoIGZvciBmaWxlc2l6ZSBjZWxsIHRvIGVuYWJsZSBwcm9wZXIgZWxsaXBzaXMgY2VudGVyLFxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGZpbGVTaXplQ2VsbE1heFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlU2l6ZUhlYWRlckNlbGw/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBmaWxlU2l6ZUNlbGxQYWRkaW5nO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbiA9IGluamVjdDxLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsPihLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTiwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IHdlIHByb3ZpZGUgdGhlIHZhbHVlIGFjY2Vzc29yIHRocm91Z2ggaGVyZSwgaW5zdGVhZCBvZlxuICAgICAgICAgICAgLy8gdGhlIGBwcm92aWRlcnNgIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBGb3JtQ29udHJvbCBzcGVjaWZpYyBlcnJvcnMgdXBkYXRlXG4gICAgICAgIHRoaXMubmdDb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMubmdDb250cm9sPy5lcnJvcnMgfHwge30pO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAgICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgICAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgd3JpdGVWYWx1ZShmaWxlczogRmlsZUxpc3QgfCBLYnFGaWxlSXRlbVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVzID0gZmlsZXMgaW5zdGFuY2VvZiBGaWxlTGlzdCB8fCAhZmlsZXMgPyB0aGlzLm1hcFRvRmlsZUl0ZW0oZmlsZXMpIDogZmlsZXM7XG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3ZhT25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25GaWxlU2VsZWN0ZWRWaWFDbGljayh7IHRhcmdldCB9OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZXNUb0FkZCA9IHRoaXMubWFwVG9GaWxlSXRlbSgodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzKTtcblxuICAgICAgICB0aGlzLmZpbGVzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5maWxlcyxcbiAgICAgICAgICAgIC4uLmZpbGVzVG9BZGRcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5maWxlc0FkZGVkLmVtaXQoZmlsZXNUb0FkZCk7XG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgLy8gYWxsb3dzIHRoZSBzYW1lIGZpbGUgc2VsZWN0aW9uIGV2ZXJ5IHRpbWUgdXNlciBjbGlja3Mgb24gdGhlIGNvbnRyb2wuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGFyZ2V0LCAndmFsdWUnLCBudWxsKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0IHwgS2JxRmlsZVtdKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlc1RvQWRkID0gdGhpcy5tYXBUb0ZpbGVJdGVtKGZpbGVzKTtcblxuICAgICAgICB0aGlzLmZpbGVzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5maWxlcyxcbiAgICAgICAgICAgIC4uLmZpbGVzVG9BZGRcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5maWxlc0FkZGVkLmVtaXQoZmlsZXNUb0FkZCk7XG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlciwgZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlID0gdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlc107XG4gICAgICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChbcmVtb3ZlZEZpbGUsIGluZGV4XSk7XG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICB0aGlzLmxpc3RTZWxlY3Rpb24ua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZVBhcmFtcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ3VyYXRpb24gfHwgdGhpcy5sb2NhbGVTZXJ2aWNlPy5nZXRQYXJhbXMoJ2ZpbGVVcGxvYWQnKS5tdWx0aXBsZTtcblxuICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSBbXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuZmlsZSwgY3NzQ2xhc3M6ICdmaWxlJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6IHRoaXMuY29uZmlnLmdyaWRIZWFkZXJzLnNpemUsIGNzc0NsYXNzOiAnc2l6ZScgfSxcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnJywgY3NzQ2xhc3M6ICdhY3Rpb24nIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdldENhcHRpb25UZXh0KCk7XG5cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgbWFwVG9GaWxlSXRlbShmaWxlczogRmlsZUxpc3QgfCBLYnFGaWxlW10gfCBudWxsKTogS2JxRmlsZUl0ZW1bXSB7XG4gICAgICAgIGlmICghZmlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGZpbGVzKS5tYXAoKGZpbGU6IEZpbGUpID0+ICh7XG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgaGFzRXJyb3I6IHRoaXMudmFsaWRhdGVGaWxlKGZpbGUpLFxuICAgICAgICAgICAgbG9hZGluZzogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSksXG4gICAgICAgICAgICBwcm9ncmVzczogbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRmlsZShmaWxlOiBGaWxlKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXN0b21WYWxpZGF0aW9uPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yc1BlckZpbGUgPSB0aGlzLmN1c3RvbVZhbGlkYXRpb25cbiAgICAgICAgICAgIC5yZWR1Y2UoKGVycm9yczogKHN0cmluZyB8IG51bGwpW10sIHZhbGlkYXRvckZuOiBLYnFGaWxlVmFsaWRhdG9yRm4pID0+IHtcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh2YWxpZGF0b3JGbihmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIHN0cmluZ1tdO1xuXG4gICAgICAgIHRoaXMuZXJyb3JzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5lcnJvcnMsXG4gICAgICAgICAgICAuLi5lcnJvcnNQZXJGaWxlXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuICEhZXJyb3JzUGVyRmlsZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGVmYXVsdFBhcmFtcygpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBLQlFfTVVMVElQTEVfRklMRV9VUExPQURfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuXG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IFtcbiAgICAgICAgICAgIHsgaGVhZGVyOiB0aGlzLmNvbmZpZy5ncmlkSGVhZGVycy5maWxlLCBjc3NDbGFzczogJ2ZpbGUnIH0sXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuc2l6ZSwgY3NzQ2xhc3M6ICdzaXplJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6ICcnLCBjc3NDbGFzczogJ2FjdGlvbicgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhcHRpb25UZXh0KCkge1xuICAgICAgICB0aGlzLnNlcGFyYXRlZENhcHRpb25UZXh0ID0gdGhpcy5jb25maWcuY2FwdGlvblRleHQuc3BsaXQoJ3t7IGJyb3dzZUxpbmsgfX0nKTtcbiAgICAgICAgdGhpcy5zZXBhcmF0ZWRDYXB0aW9uVGV4dFdoZW5TZWxlY3RlZCA9IHRoaXMuY29uZmlnLmNhcHRpb25UZXh0V2hlblNlbGVjdGVkLnNwbGl0KCd7eyBicm93c2VMaW5rIH19Jyk7XG4gICAgICAgIHRoaXMuc2VwYXJhdGVkQ2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZSA9IHRoaXMuY29uZmlnLmNhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemUuc3BsaXQoJ3t7IGJyb3dzZUxpbmsgfX0nKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAga2JxRmlsZURyb3BcbiAgICBjbGFzcz1cImticS1maWxlLXVwbG9hZFwiXG4gICAgW2NsYXNzLmticS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2NsYXNzLmticS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmlsZXM/Lmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwic2l6ZVwiXG4gICAgKGZpbGVzRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxuPlxuICAgIEBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHpvbmVcIj5cbiAgICAgICAgICAgIEBpZiAoc2l6ZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvdWQtYXJyb3ctdXAtb18zMlwiIGNsYXNzPVwia2JxLWRyb3B6b25lX19pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wem9uZV9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGVfX2hlYWRlclwiPnt7IGNvbmZpZy50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwcmV0dGllci1pZ25vcmUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGVfX2NhcHRpb25cIj57eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dFswXSB9fTxsYWJlbCBrYnEtbGluayBwc2V1ZG8gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3RhYkluZGV4XT1cIi0xXCIgW2Zvcl09XCJpbnB1dElkXCI+e3sgY29uZmlnLmJyb3dzZUxpbmsgfX08bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVwiIC8+PC9sYWJlbD57eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dFsxXSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNsb3VkLWFycm93LXVwLW9fMjRcIiBjbGFzcz1cImticS1kcm9wem9uZV9faWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3B6b25lX190ZXh0IG11bHRpcGxlX19jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlcGFyYXRlZENhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemVbMF0gfX1cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGticS1saW5rIHBzZXVkbyBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbZm9yXT1cImlucHV0SWRcIiBbdGFiSW5kZXhdPVwiLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5icm93c2VMaW5rIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlcGFyYXRlZENhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemVbMV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWRfX2Ryb3B6b25lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19ncmlkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLW11bHRpcGxlLXVwbG9hZGVkX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLW11bHRpcGxlLXVwbG9hZGVkX19oZWFkZXItaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2ZpbGVTaXplSGVhZGVyQ2VsbCBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fZmlsZSBrYnEtZmlsZS11cGxvYWRfX2dyaWQtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5ncmlkSGVhZGVycy5maWxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX3NpemUga2JxLWZpbGUtdXBsb2FkX19ncmlkLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuZ3JpZEhlYWRlcnMuc2l6ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19hY3Rpb24ga2JxLWZpbGUtdXBsb2FkX19ncmlkLWNlbGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGticS1saXN0LXNlbGVjdGlvbiBbYXV0b1NlbGVjdF09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWxlIG9mIGZpbGVzOyB0cmFjayBmaWxlOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtbGlzdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpcGxlX191cGxvYWRlZC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmlsZS5maWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJkZWxldGVGaWxlKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZGVsZXRlKT1cImRlbGV0ZUZpbGUoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19yb3dcIiBbY2xhc3MuZXJyb3JdPVwiZmlsZS5oYXNFcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fZmlsZSBrYnEtZmlsZS11cGxvYWRfX2dyaWQtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImZpbGVTaXplQ2VsbE1heFdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxvYWRpbmc6IGZpbGUubG9hZGluZyB8IGFzeW5jLCBwcm9ncmVzczogZmlsZS5wcm9ncmVzcyB8IGFzeW5jIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgYXN5bmNEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhc3luY0RhdGEubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGN1c3RvbUZpbGVJY29uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGZpbGUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXN5bmNEYXRhLmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGticS1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1maWxlLXVwbG9hZC1uYW1lLWNlbGxfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwicHJvZ3Jlc3NNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3luY0RhdGEucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbGUtaXRlbV9fdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlYm91bmNlSW50ZXJ2YWxdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticUVsbGlwc2lzQ2VudGVyXT1cImZpbGUuZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19zaXplIGticS1maWxlLXVwbG9hZF9fZ3JpZC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlLmZpbGUuc2l6ZSB8IGticURhdGFTaXplIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fYWN0aW9uIGticS1maWxlLXVwbG9hZF9fZ3JpZC1jZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVGaWxlKGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkga2JxLWljb24tYnV0dG9uPVwia2JxLXhtYXJrLWNpcmNsZV8xNlwiIHRhYmluZGV4PVwiLTFcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9rYnEtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2ticS1saXN0LXNlbGVjdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi11cGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHpvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvdWQtYXJyb3ctdXAtb18yNFwiIGNsYXNzPVwia2JxLWRyb3B6b25lX19pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3B6b25lX190ZXh0IG11bHRpcGxlX19jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dFdoZW5TZWxlY3RlZFswXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGticS1saW5rIHBzZXVkbyBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbZm9yXT1cImlucHV0SWRcIiBbdGFiSW5kZXhdPVwiLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuYnJvd3NlTGluayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dFdoZW5TZWxlY3RlZFsxXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG5cbkBpZiAoaGFzSGludCkge1xuICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX2hpbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWhpbnRcIiAvPlxuICAgIDwvZGl2PlxufVxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGU+XG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBtdWx0aXBsZVxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZFZpYUNsaWNrKCRldmVudClcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWxlLXVwbG9hZC9tdWx0aXBsZS1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL211bHRpcGxlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDSCw2QkFBNkIsRUFHN0IsaUJBQWlCLEVBSXBCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBRXZCLElBQUksOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBYXZDLE1BQU0sQ0FBQyxNQUFNLDhDQUE4QyxHQUN2RCxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUV2QyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQVkvQixNQUFNLE9BQU8sOEJBQ1QsU0FBUSxpQkFBaUI7SUE2QnpC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LEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFTRixLQUFLO3NCQURSLEtBQUs7Z0JBUytCLFdBQVc7c0JBQS9DLE1BQU07dUJBQUMsa0JBQWtCO2dCQUtQLFVBQVU7c0JBQTVCLE1BQU07Z0JBS1ksV0FBVztzQkFBN0IsTUFBTTtnQkFJWSxjQUFjO3NCQURoQyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJcEMsS0FBSztzQkFBakMsU0FBUzt1QkFBQyxPQUFPO2dCQUM0QixhQUFhO3NCQUExRCxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDdUIsa0JBQWtCO3NCQUFuRSxTQUFTO3VCQUFDLG9CQUFvQjtnQkFHYyxJQUFJO3NCQUFoRCxlQUFlO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBydVJVTG9jYWxlRGF0YSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticUhpbnQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFMaXN0U2VsZWN0aW9uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2xpc3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTixcbiAgICBLYnFGaWxlLFxuICAgIEticUZpbGVJdGVtLFxuICAgIEticUZpbGVVcGxvYWRCYXNlLFxuICAgIEticUZpbGVWYWxpZGF0b3JGbixcbiAgICBLYnFJbnB1dEZpbGUsXG4gICAgS2JxSW5wdXRGaWxlTGFiZWxcbn0gZnJvbSAnLi9maWxlLXVwbG9hZCc7XG5cbmxldCBuZXh0TXVsdGlwbGVGaWxlVXBsb2FkVW5pcXVlSWQgPSAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIEticUlucHV0RmlsZU11bHRpcGxlTGFiZWwgZXh0ZW5kcyBLYnFJbnB1dEZpbGVMYWJlbCB7XG4gICAgY2FwdGlvblRleHRXaGVuU2VsZWN0ZWQ6IHN0cmluZztcbiAgICBjYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplOiBzdHJpbmc7XG4gICAgZ3JpZEhlYWRlcnM6IHtcbiAgICAgICAgZmlsZTogc3RyaW5nO1xuICAgICAgICBzaXplOiBzdHJpbmc7XG4gICAgfTtcblxuICAgIFtrOiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2xdOiB1bmtub3duO1xufVxuXG5leHBvcnQgY29uc3QgS0JRX01VTFRJUExFX0ZJTEVfVVBMT0FEX0RFRkFVTFRfQ09ORklHVVJBVElPTjogS2JxSW5wdXRGaWxlTXVsdGlwbGVMYWJlbCA9XG4gICAgcnVSVUxvY2FsZURhdGEuZmlsZVVwbG9hZC5tdWx0aXBsZTtcblxuY29uc3QgZmlsZVNpemVDZWxsUGFkZGluZyA9IDE2O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1tdWx0aXBsZS1maWxlLXVwbG9hZCxrYnEtZmlsZS11cGxvYWRbbXVsdGlwbGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLnNjc3MnLCAnLi9maWxlLXVwbG9hZC10b2tlbnMuc2NzcycsICcuL211bHRpcGxlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLW11bHRpcGxlLWZpbGUtdXBsb2FkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxTXVsdGlwbGVGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBLYnFGaWxlVXBsb2FkQmFzZVxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgS2JxSW5wdXRGaWxlLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVja1xue1xuICAgIC8qKlxuICAgICAqIEEgdmFsdWUgcmVzcG9uc2libGUgZm9yIHByb2dyZXNzIHNwaW5uZXIgdHlwZS5cbiAgICAgKiBMb2FkaW5nIGxvZ2ljIGRlcGVuZHMgb24gc2VsZWN0ZWQgbW9kZSAqL1xuICAgIEBJbnB1dCgpIHByb2dyZXNzTW9kZTogUHJvZ3Jlc3NTcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSc7XG4gICAgLyoqIEFycmF5IG9mIGZpbGUgdHlwZSBzcGVjaWZpZXJzICovXG4gICAgQElucHV0KCkgYWNjZXB0Pzogc3RyaW5nW107XG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGBGb3JtQ29udHJvbC5lcnJvcnNgXG4gICAgICovXG4gICAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHNpemU6ICdjb21wYWN0JyB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcbiAgICAvKipcbiAgICAgKiBjdXN0b20gSUQgZm9yIHRoZSBmaWxlIGlucHV0IGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nID0gYGticS1tdWx0aXBsZS1maWxlLXVwbG9hZC0ke25leHRNdWx0aXBsZUZpbGVVcGxvYWRVbmlxdWVJZCsrfWA7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIEZvcm1Db250cm9sIGZvciB2YWxpZGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgY3VzdG9tVmFsaWRhdGlvbj86IEticUZpbGVWYWxpZGF0b3JGbltdO1xuXG4gICAgLyoqIEFuIG9iamVjdCB1c2VkIHRvIGNvbnRyb2wgdGhlIGVycm9yIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgZXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEticUZpbGVJdGVtW10gPSBbXTtcblxuICAgIGdldCBmaWxlcygpOiBLYnFGaWxlSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbGVzKGN1cnJlbnRGaWxlTGlzdDogS2JxRmlsZUl0ZW1bXSkge1xuICAgICAgICB0aGlzLl9maWxlcyA9IGN1cnJlbnRGaWxlTGlzdDtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZSh0aGlzLl9maWxlcyk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBFbWl0cyBhbiBldmVudCBjb250YWluaW5nIHVwZGF0ZWQgZmlsZSBsaXN0LlxuICAgICAqIHB1YmxpYyBvdXRwdXQgd2lsbCBiZSByZW5hbWVkIHRvIGZpbGVzQ2hhbmdlIGluIG5leHQgbWFqb3IgcmVsZWFzZSAoI0RTLTM3MDApICovXG4gICAgQE91dHB1dCgnZmlsZVF1ZXVlQ2hhbmdlZCcpIHJlYWRvbmx5IGZpbGVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbGVJdGVtW10+KCk7XG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgY29udGFpbmluZyBhIGNodW5rIG9mIGZpbGVzIGFkZGVkIHRvIHRoZSBmaWxlIGxpc3QuXG4gICAgICogVXNlZnVsIHdoZW4gaGFuZGxpbmcgYWRkZWQgZmlsZXMsIHNraXBwaW5nIGZpbHRlcmluZyBmaWxlIGxpc3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbGVzQWRkZWQ6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW1bXT4oKTtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCBjb250YWluaW5nIGEgdHVwbGUgb2YgZmlsZSBhbmQgZmlsZSdzIGluZGV4IHdoZW4gcmVtb3ZlZCBmcm9tIHRoZSBmaWxlIGxpc3QuXG4gICAgICogVXNlZnVsIHdoZW4gaGFuZGxlIHJlbW92ZWQgZmlsZXMsIHNraXBwaW5nIGZpbHRlcmluZyBmaWxlIGxpc3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbGVSZW1vdmVkOiBFdmVudEVtaXR0ZXI8W0ticUZpbGVJdGVtLCBudW1iZXJdPiA9IG5ldyBFdmVudEVtaXR0ZXI8W0ticUZpbGVJdGVtLCBudW1iZXJdPigpO1xuXG4gICAgLyoqIEZpbGUgSWNvbiBUZW1wbGF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2ticUZpbGVJY29uJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBjdXN0b21GaWxlSWNvbjogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIHJlYWRvbmx5IGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoS2JxTGlzdFNlbGVjdGlvbikgcHJpdmF0ZSByZWFkb25seSBsaXN0U2VsZWN0aW9uPzogS2JxTGlzdFNlbGVjdGlvbjtcbiAgICBAVmlld0NoaWxkKCdmaWxlU2l6ZUhlYWRlckNlbGwnKSBwcml2YXRlIHJlYWRvbmx5IGZpbGVTaXplSGVhZGVyQ2VsbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oS2JxSGludCkgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnQ6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGNvbHVtbkRlZnM6IHsgaGVhZGVyOiBzdHJpbmc7IGNzc0NsYXNzOiBzdHJpbmcgfVtdO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgY29uZmlnOiBLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dDogc3RyaW5nW107XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dFdoZW5TZWxlY3RlZDogc3RyaW5nW107XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplOiBzdHJpbmdbXTtcblxuICAgIC8qKiBjdmFPbkNoYW5nZSBmdW5jdGlvbiByZWdpc3RlcmVkIHZpYSByZWdpc3Rlck9uQ2hhbmdlIChDb250cm9sVmFsdWVBY2Nlc3NvcikuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGN2YU9uQ2hhbmdlID0gKF86IEticUZpbGVJdGVtW10pID0+IHt9O1xuXG4gICAgLyoqIG9uVG91Y2ggZnVuY3Rpb24gcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJPblRvdWNoIChDb250cm9sVmFsdWVBY2Nlc3NvcikuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgYWNjZXB0ZWRGaWxlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2NlcHQ/LmpvaW4oJywnKSB8fCAnKi8qJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYEZvcm1Db250cm9sLmVycm9yc2BcbiAgICAgKi9cbiAgICBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcnMgJiYgISF0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgaGFzSGludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGludC5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBhbiBpbnZhbGlkIHN0YXRlIGJhc2VkIG9uIGBlcnJvclN0YXRlYCxcbiAgICAgKiBhcHBseWluZyBhIENTUyBjbGFzcyBpbiBIVE1MIGZvciB2aXN1YWwgZmVlZGJhY2suXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBtYXhXaWR0aCBmb3IgZmlsZXNpemUgY2VsbCB0byBlbmFibGUgcHJvcGVyIGVsbGlwc2lzIGNlbnRlcixcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldCBmaWxlU2l6ZUNlbGxNYXhXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVNpemVIZWFkZXJDZWxsPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gZmlsZVNpemVDZWxsUGFkZGluZztcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb24gPSBpbmplY3Q8S2JxSW5wdXRGaWxlTXVsdGlwbGVMYWJlbD4oS0JRX0ZJTEVfVVBMT0FEX0NPTkZJR1VSQVRJT04sIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAvLyBOb3RlOiB3ZSBwcm92aWRlIHRoZSB2YWx1ZSBhY2Nlc3NvciB0aHJvdWdoIGhlcmUsIGluc3RlYWQgb2ZcbiAgICAgICAgICAgIC8vIHRoZSBgcHJvdmlkZXJzYCB0byBhdm9pZCBydW5uaW5nIGludG8gYSBjaXJjdWxhciBpbXBvcnQuXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gRm9ybUNvbnRyb2wgc3BlY2lmaWMgZXJyb3JzIHVwZGF0ZVxuICAgICAgICB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8ucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gT2JqZWN0LnZhbHVlcyh0aGlzLm5nQ29udHJvbD8uZXJyb3JzIHx8IHt9KTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoaXMgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZVxuICAgICAgICAgICAgLy8gZXJyb3IgdHJpZ2dlcnMgdGhhdCB3ZSBjYW4ndCBzdWJzY3JpYmUgdG8gKGUuZy4gcGFyZW50IGZvcm0gc3VibWlzc2lvbnMpLiBUaGlzIG1lYW5zXG4gICAgICAgICAgICAvLyB0aGF0IHdoYXRldmVyIGxvZ2ljIGlzIGluIGhlcmUgaGFzIHRvIGJlIHN1cGVyIGxlYW4gb3Igd2UgcmlzayBkZXN0cm95aW5nIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHdyaXRlVmFsdWUoZmlsZXM6IEZpbGVMaXN0IHwgS2JxRmlsZUl0ZW1bXSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVzIGluc3RhbmNlb2YgRmlsZUxpc3QgfHwgIWZpbGVzID8gdGhpcy5tYXBUb0ZpbGVJdGVtKGZpbGVzKSA6IGZpbGVzO1xuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcyk7XG4gICAgfVxuXG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soeyB0YXJnZXQgfTogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVzVG9BZGQgPSB0aGlzLm1hcFRvRmlsZUl0ZW0oKHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyk7XG5cbiAgICAgICAgdGhpcy5maWxlcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1RvQWRkXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZmlsZXNBZGRlZC5lbWl0KGZpbGVzVG9BZGQpO1xuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcyk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIC8vIGFsbG93cyB0aGUgc2FtZSBmaWxlIHNlbGVjdGlvbiBldmVyeSB0aW1lIHVzZXIgY2xpY2tzIG9uIHRoZSBjb250cm9sLlxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRhcmdldCwgJ3ZhbHVlJywgbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvbkZpbGVEcm9wcGVkKGZpbGVzOiBGaWxlTGlzdCB8IEticUZpbGVbXSkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZXNUb0FkZCA9IHRoaXMubWFwVG9GaWxlSXRlbShmaWxlcyk7XG5cbiAgICAgICAgdGhpcy5maWxlcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1RvQWRkXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZmlsZXNBZGRlZC5lbWl0KGZpbGVzVG9BZGQpO1xuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcyk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBkZWxldGVGaWxlKGluZGV4OiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZSA9IHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKVswXTtcblxuICAgICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXNdO1xuICAgICAgICB0aGlzLmZpbGVSZW1vdmVkLmVtaXQoW3JlbW92ZWRGaWxlLCBpbmRleF0pO1xuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcyk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5saXN0U2VsZWN0aW9uPy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbiB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmdldFBhcmFtcygnZmlsZVVwbG9hZCcpLm11bHRpcGxlO1xuXG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IFtcbiAgICAgICAgICAgIHsgaGVhZGVyOiB0aGlzLmNvbmZpZy5ncmlkSGVhZGVycy5maWxlLCBjc3NDbGFzczogJ2ZpbGUnIH0sXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuc2l6ZSwgY3NzQ2xhc3M6ICdzaXplJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6ICcnLCBjc3NDbGFzczogJ2FjdGlvbicgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBtYXBUb0ZpbGVJdGVtKGZpbGVzOiBGaWxlTGlzdCB8IEticUZpbGVbXSB8IG51bGwpOiBLYnFGaWxlSXRlbVtdIHtcbiAgICAgICAgaWYgKCFmaWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpLm1hcCgoZmlsZTogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBoYXNFcnJvcjogdGhpcy52YWxpZGF0ZUZpbGUoZmlsZSksXG4gICAgICAgICAgICBsb2FkaW5nOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKSxcbiAgICAgICAgICAgIHByb2dyZXNzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVGaWxlKGZpbGU6IEZpbGUpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1c3RvbVZhbGlkYXRpb24/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3JzUGVyRmlsZSA9IHRoaXMuY3VzdG9tVmFsaWRhdGlvblxuICAgICAgICAgICAgLnJlZHVjZSgoZXJyb3JzOiAoc3RyaW5nIHwgbnVsbClbXSwgdmFsaWRhdG9yRm46IEticUZpbGVWYWxpZGF0b3JGbikgPT4ge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHZhbGlkYXRvckZuKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG5cbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLmVycm9ycyxcbiAgICAgICAgICAgIC4uLmVycm9yc1BlckZpbGVcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gISFlcnJvcnNQZXJGaWxlLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREZWZhdWx0UGFyYW1zKCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEtCUV9NVUxUSVBMRV9GSUxFX1VQTE9BRF9ERUZBVUxUX0NPTkZJR1VSQVRJT047XG5cbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gW1xuICAgICAgICAgICAgeyBoZWFkZXI6IHRoaXMuY29uZmlnLmdyaWRIZWFkZXJzLmZpbGUsIGNzc0NsYXNzOiAnZmlsZScgfSxcbiAgICAgICAgICAgIHsgaGVhZGVyOiB0aGlzLmNvbmZpZy5ncmlkSGVhZGVycy5zaXplLCBjc3NDbGFzczogJ3NpemUnIH0sXG4gICAgICAgICAgICB7IGhlYWRlcjogJycsIGNzc0NsYXNzOiAnYWN0aW9uJyB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5nZXRDYXB0aW9uVGV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FwdGlvblRleHQoKSB7XG4gICAgICAgIHRoaXMuc2VwYXJhdGVkQ2FwdGlvblRleHQgPSB0aGlzLmNvbmZpZy5jYXB0aW9uVGV4dC5zcGxpdCgne3sgYnJvd3NlTGluayB9fScpO1xuICAgICAgICB0aGlzLnNlcGFyYXRlZENhcHRpb25UZXh0V2hlblNlbGVjdGVkID0gdGhpcy5jb25maWcuY2FwdGlvblRleHRXaGVuU2VsZWN0ZWQuc3BsaXQoJ3t7IGJyb3dzZUxpbmsgfX0nKTtcbiAgICAgICAgdGhpcy5zZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplID0gdGhpcy5jb25maWcuY2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZS5zcGxpdCgne3sgYnJvd3NlTGluayB9fScpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBrYnFGaWxlRHJvcFxuICAgIGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkXCJcbiAgICBbY2xhc3Mua2JxLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbY2xhc3Mua2JxLWVycm9yXT1cImludmFsaWRcIlxuICAgIFtjbGFzcy5zZWxlY3RlZF09XCJmaWxlcz8ubGVuZ3RoXCJcbiAgICBbbmdDbGFzc109XCJzaXplXCJcbiAgICAoZmlsZXNEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiXG4+XG4gICAgQGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wem9uZVwiPlxuICAgICAgICAgICAgQGlmIChzaXplID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1jbG91ZC1hcnJvdy11cC1vXzMyXCIgY2xhc3M9XCJrYnEtZHJvcHpvbmVfX2ljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3B6b25lX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXBsZV9faGVhZGVyXCI+e3sgY29uZmlnLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByZXR0aWVyLWlnbm9yZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXBsZV9fY2FwdGlvblwiPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzBdIH19PGxhYmVsIGticS1saW5rIHBzZXVkbyBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdGFiSW5kZXhdPVwiLTFcIiBbZm9yXT1cImlucHV0SWRcIj57eyBjb25maWcuYnJvd3NlTGluayB9fTxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCIgLz48L2xhYmVsPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzFdIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvdWQtYXJyb3ctdXAtb18yNFwiIGNsYXNzPVwia2JxLWRyb3B6b25lX19pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcHpvbmVfX3RleHQgbXVsdGlwbGVfX2NhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZVswXSB9fVxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwga2JxLWxpbmsgcHNldWRvIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtmb3JdPVwiaW5wdXRJZFwiIFt0YWJJbmRleF09XCItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLmJyb3dzZUxpbmsgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZVsxXSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXVwbG9hZF9fZHJvcHpvbmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX2dyaWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtbXVsdGlwbGUtdXBsb2FkZWRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtbXVsdGlwbGUtdXBsb2FkZWRfX2hlYWRlci1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjZmlsZVNpemVIZWFkZXJDZWxsIGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19maWxlIGticS1maWxlLXVwbG9hZF9fZ3JpZC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLmdyaWRIZWFkZXJzLmZpbGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fc2l6ZSBrYnEtZmlsZS11cGxvYWRfX2dyaWQtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5ncmlkSGVhZGVycy5zaXplIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX2FjdGlvbiBrYnEtZmlsZS11cGxvYWRfX2dyaWQtY2VsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8a2JxLWxpc3Qtc2VsZWN0aW9uIFthdXRvU2VsZWN0XT1cImZhbHNlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpbGUgb2YgZmlsZXM7IHRyYWNrIGZpbGU7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGticS1saXN0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlwbGVfX3VwbG9hZGVkLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmaWxlLmZpbGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cImRlbGV0ZUZpbGUoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5kZWxldGUpPVwiZGVsZXRlRmlsZShpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX3Jvd1wiIFtjbGFzcy5lcnJvcl09XCJmaWxlLmhhc0Vycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19maWxlIGticS1maWxlLXVwbG9hZF9fZ3JpZC1jZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiZmlsZVNpemVDZWxsTWF4V2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbG9hZGluZzogZmlsZS5sb2FkaW5nIHwgYXN5bmMsIHByb2dyZXNzOiBmaWxlLnByb2dyZXNzIHwgYXN5bmMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhc3luY0RhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWFzeW5jRGF0YS5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoY3VzdG9tRmlsZUljb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZmlsZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhc3luY0RhdGEubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2JxLXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkLW5hbWUtY2VsbF9faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJwcm9ncmVzc01vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImFzeW5jRGF0YS5wcm9ncmVzcyB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsZS1pdGVtX190ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVib3VuY2VJbnRlcnZhbF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2JxRWxsaXBzaXNDZW50ZXJdPVwiZmlsZS5maWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX3NpemUga2JxLWZpbGUtdXBsb2FkX19ncmlkLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbGUuZmlsZS5zaXplIHwga2JxRGF0YVNpemUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19hY3Rpb24ga2JxLWZpbGUtdXBsb2FkX19ncmlkLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbGUoaW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbi1idXR0b249XCJrYnEteG1hcmstY2lyY2xlXzE2XCIgdGFiaW5kZXg9XCItMVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ticS1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwva2JxLWxpc3Qtc2VsZWN0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXVwbG9hZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wem9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1jbG91ZC1hcnJvdy11cC1vXzI0XCIgY2xhc3M9XCJrYnEtZHJvcHpvbmVfX2ljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcHpvbmVfX3RleHQgbXVsdGlwbGVfX2NhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlcGFyYXRlZENhcHRpb25UZXh0V2hlblNlbGVjdGVkWzBdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwga2JxLWxpbmsgcHNldWRvIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtmb3JdPVwiaW5wdXRJZFwiIFt0YWJJbmRleF09XCItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5icm93c2VMaW5rIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlcGFyYXRlZENhcHRpb25UZXh0V2hlblNlbGVjdGVkWzFdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cblxuQGlmIChoYXNIaW50KSB7XG4gICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9faGludFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtaGludFwiIC8+XG4gICAgPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZT5cbiAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIG11bHRpcGxlXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soJGV2ZW50KVwiXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=