@koobiq/components 18.36.0 → 18.38.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 (309) hide show
  1. package/autocomplete/autocomplete.scss +2 -17
  2. package/breadcrumbs/breadcrumbs.d.ts +2 -1
  3. package/breadcrumbs/breadcrumbs.scss +4 -4
  4. package/button/button.component.d.ts +1 -0
  5. package/button-toggle/button-toggle.scss +0 -2
  6. package/content-panel/content-panel.d.ts +1 -1
  7. package/content-panel/index.d.ts +0 -1
  8. package/core/common-behaviors/hover.d.ts +15 -0
  9. package/core/common-behaviors/index.d.ts +1 -1
  10. package/core/locales/en-US.d.ts +6 -0
  11. package/core/locales/es-LA.d.ts +6 -0
  12. package/core/locales/formatters.d.ts +0 -72
  13. package/core/locales/index.d.ts +0 -2
  14. package/core/locales/locale-service.d.ts +24 -386
  15. package/core/locales/pt-BR.d.ts +6 -0
  16. package/core/locales/ru-RU.d.ts +6 -0
  17. package/core/locales/tk-TM.d.ts +6 -0
  18. package/core/option/option.d.ts +3 -2
  19. package/core/pop-up/pop-up-trigger.d.ts +3 -1
  20. package/core/pop-up/pop-up.d.ts +1 -0
  21. package/core/select/common.d.ts +3 -1
  22. package/core/styles/common/_select.scss +20 -0
  23. package/core/styles/typography/_typography.scss +23 -82
  24. package/datepicker/datepicker-module.d.ts +2 -1
  25. package/dropdown/dropdown-item.scss +8 -7
  26. package/dropdown/dropdown.scss +5 -14
  27. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
  28. package/esm2022/breadcrumbs/breadcrumbs.mjs +46 -37
  29. package/esm2022/button/button.component.mjs +6 -4
  30. package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
  31. package/esm2022/code-block/code-block-highlight.mjs +6 -1
  32. package/esm2022/content-panel/content-panel.mjs +2 -2
  33. package/esm2022/content-panel/index.mjs +1 -2
  34. package/esm2022/core/common-behaviors/color.mjs +2 -1
  35. package/esm2022/core/common-behaviors/common-module.mjs +2 -1
  36. package/esm2022/core/common-behaviors/disabled.mjs +2 -1
  37. package/esm2022/core/common-behaviors/error-state.mjs +2 -1
  38. package/esm2022/core/common-behaviors/hover.mjs +34 -0
  39. package/esm2022/core/common-behaviors/index.mjs +2 -2
  40. package/esm2022/core/common-behaviors/tabindex.mjs +2 -1
  41. package/esm2022/core/form-field/field-sizing-content.mjs +5 -2
  42. package/esm2022/core/formatters/number/formatter.mjs +2 -2
  43. package/esm2022/core/locales/en-US.mjs +7 -1
  44. package/esm2022/core/locales/es-LA.mjs +16 -10
  45. package/esm2022/core/locales/formatters.mjs +1 -73
  46. package/esm2022/core/locales/index.mjs +1 -3
  47. package/esm2022/core/locales/locale-service.mjs +5 -8
  48. package/esm2022/core/locales/pt-BR.mjs +25 -19
  49. package/esm2022/core/locales/ru-RU.mjs +7 -1
  50. package/esm2022/core/locales/tk-TM.mjs +30 -24
  51. package/esm2022/core/option/option.mjs +10 -6
  52. package/esm2022/core/pop-up/pop-up-trigger.mjs +2 -1
  53. package/esm2022/core/pop-up/pop-up.mjs +36 -2
  54. package/esm2022/core/select/common.mjs +10 -4
  55. package/esm2022/core/version.mjs +2 -2
  56. package/esm2022/datepicker/calendar-header.component.mjs +5 -4
  57. package/esm2022/datepicker/datepicker-module.mjs +7 -4
  58. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  59. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  60. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +5 -2
  61. package/esm2022/file-upload/file-drop.mjs +5 -3
  62. package/esm2022/file-upload/multiple-file-upload.component.mjs +9 -13
  63. package/esm2022/file-upload/single-file-upload.component.mjs +9 -4
  64. package/esm2022/filter-bar/filter-bar.mjs +6 -2
  65. package/esm2022/filter-bar/filter-search.mjs +3 -3
  66. package/esm2022/filter-bar/filters.mjs +10 -5
  67. package/esm2022/filter-bar/pipe-add.mjs +3 -2
  68. package/esm2022/filter-bar/pipes/base-pipe.mjs +11 -3
  69. package/esm2022/filter-bar/pipes/pipe-date.mjs +3 -3
  70. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +3 -3
  71. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +5 -4
  72. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +2 -2
  73. package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
  74. package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
  75. package/esm2022/filter-bar/pipes/pipe-title.mjs +24 -19
  76. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
  77. package/esm2022/form-field/fieldset.mjs +2 -2
  78. package/esm2022/form-field/form-field.mjs +2 -2
  79. package/esm2022/form-field/stepper.mjs +41 -10
  80. package/esm2022/inline-edit/inline-edit.mjs +9 -5
  81. package/esm2022/input/input-number.mjs +7 -6
  82. package/esm2022/input/input.module.mjs +7 -4
  83. package/esm2022/list/list-selection.component.mjs +31 -15
  84. package/esm2022/markdown/markdown.component.mjs +7 -7
  85. package/esm2022/modal/modal-util.mjs +7 -3
  86. package/esm2022/modal/modal.component.mjs +2 -2
  87. package/esm2022/modal/modal.service.mjs +2 -1
  88. package/esm2022/navbar/navbar-brand.component.mjs +105 -0
  89. package/esm2022/navbar/navbar-item.component.mjs +18 -170
  90. package/esm2022/navbar/navbar-toggle.component.mjs +88 -0
  91. package/esm2022/navbar/navbar.component.mjs +8 -4
  92. package/esm2022/navbar/navbar.module.mjs +4 -2
  93. package/esm2022/navbar/public-api.mjs +3 -1
  94. package/esm2022/navbar/vertical-navbar.component.mjs +28 -6
  95. package/esm2022/navbar-ic/navbar-ic-header.mjs +20 -4
  96. package/esm2022/navbar-ic/navbar-ic-item.mjs +7 -8
  97. package/esm2022/navbar-ic/navbar-ic.animation.mjs +10 -2
  98. package/esm2022/navbar-ic/navbar-ic.mjs +33 -9
  99. package/esm2022/notification-center/notification-center.mjs +9 -33
  100. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  101. package/esm2022/popover/popover.component.mjs +24 -5
  102. package/esm2022/resizer/index.mjs +3 -0
  103. package/esm2022/resizer/koobiq-components-resizer.mjs +5 -0
  104. package/esm2022/resizer/module.mjs +17 -0
  105. package/esm2022/resizer/resizer.mjs +135 -0
  106. package/esm2022/scrollbar/scrollbar.directive.mjs +4 -3
  107. package/esm2022/search-expandable/search-expandable.mjs +5 -5
  108. package/esm2022/select/select.component.mjs +2 -14
  109. package/esm2022/select/select.module.mjs +8 -4
  110. package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
  111. package/esm2022/split-button/split-button.mjs +47 -6
  112. package/esm2022/tags/tag-input.mjs +24 -28
  113. package/esm2022/tags/tag-list.component.mjs +76 -87
  114. package/esm2022/tags/tag.component.mjs +29 -34
  115. package/esm2022/textarea/textarea.module.mjs +5 -4
  116. package/esm2022/time-range/constants.mjs +22 -1
  117. package/esm2022/time-range/time-range-editor.mjs +11 -6
  118. package/esm2022/time-range/time-range-title-as-form-field.mjs +2 -1
  119. package/esm2022/time-range/time-range.mjs +8 -3
  120. package/esm2022/time-range/time-range.service.mjs +43 -106
  121. package/esm2022/time-range/types.mjs +1 -1
  122. package/esm2022/timepicker/timepicker.module.mjs +5 -4
  123. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  124. package/esm2022/timezone/timezone.module.mjs +6 -4
  125. package/esm2022/title/title.directive.mjs +6 -2
  126. package/esm2022/toggle/toggle.component.mjs +3 -3
  127. package/esm2022/top-bar/top-bar.mjs +2 -2
  128. package/esm2022/tree/tree-option.component.mjs +7 -6
  129. package/esm2022/tree/tree-selection.component.mjs +23 -13
  130. package/esm2022/tree-select/tree-select.component.mjs +97 -79
  131. package/esm2022/tree-select/tree-select.module.mjs +7 -4
  132. package/fesm2022/koobiq-components-autocomplete.mjs +3 -3
  133. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-breadcrumbs.mjs +45 -36
  135. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
  137. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-button.mjs +5 -3
  139. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-code-block.mjs +5 -0
  141. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-content-panel.mjs +3 -137
  143. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-core.mjs +156 -478
  145. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-datepicker.mjs +8 -5
  147. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-dropdown.mjs +4 -4
  149. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-ellipsis-center.mjs +4 -1
  151. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-file-upload.mjs +19 -17
  153. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  154. package/fesm2022/koobiq-components-filter-bar.mjs +64 -41
  155. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-form-field.mjs +44 -17
  157. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-inline-edit.mjs +8 -4
  159. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-input.mjs +12 -9
  161. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-list.mjs +30 -14
  163. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-markdown.mjs +6 -6
  165. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-modal.mjs +9 -4
  167. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-navbar-ic.mjs +70 -26
  169. package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
  170. package/fesm2022/koobiq-components-navbar.mjs +792 -740
  171. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-notification-center.mjs +8 -32
  173. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-popover.mjs +25 -6
  175. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-resizer.mjs +156 -0
  177. package/fesm2022/koobiq-components-resizer.mjs.map +1 -0
  178. package/fesm2022/koobiq-components-scrollbar.mjs +3 -2
  179. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-search-expandable.mjs +4 -4
  181. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-select.mjs +8 -17
  183. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
  185. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-split-button.mjs +46 -5
  187. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-tags.mjs +125 -146
  189. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-textarea.mjs +4 -4
  191. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-time-range.mjs +81 -112
  193. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-timepicker.mjs +4 -4
  195. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-timezone.mjs +7 -5
  197. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-title.mjs +5 -1
  199. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-toggle.mjs +2 -2
  201. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  202. package/fesm2022/koobiq-components-top-bar.mjs +2 -2
  203. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  204. package/fesm2022/koobiq-components-tree-select.mjs +102 -82
  205. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  206. package/fesm2022/koobiq-components-tree.mjs +28 -17
  207. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  208. package/file-upload/_file-upload-theme.scss +32 -34
  209. package/file-upload/file-upload-tokens.scss +1 -2
  210. package/file-upload/file-upload.scss +4 -7
  211. package/file-upload/multiple-file-upload.component.d.ts +1 -1
  212. package/file-upload/multiple-file-upload.component.scss +12 -14
  213. package/file-upload/single-file-upload.component.d.ts +1 -0
  214. package/file-upload/single-file-upload.component.scss +5 -7
  215. package/filter-bar/filter-bar.d.ts +3 -1
  216. package/filter-bar/filter-search.scss +1 -3
  217. package/filter-bar/filters.d.ts +1 -0
  218. package/filter-bar/pipes/base-pipe.d.ts +5 -1
  219. package/filter-bar/pipes/pipe-date.scss +4 -2
  220. package/filter-bar/pipes/pipe-title.d.ts +2 -0
  221. package/form-field/fieldset-tokens.scss +2 -1
  222. package/form-field/form-field-tokens.scss +2 -2
  223. package/form-field/form-field.scss +9 -1
  224. package/form-field/stepper.d.ts +28 -6
  225. package/inline-edit/inline-edit.d.ts +5 -1
  226. package/input/input.module.d.ts +2 -1
  227. package/list/list-selection.component.d.ts +12 -1
  228. package/markdown/_markdown-theme.scss +0 -1
  229. package/markdown/markdown.scss +2 -4
  230. package/modal/modal-tokens.scss +2 -1
  231. package/modal/modal-util.d.ts +5 -2
  232. package/modal/modal.scss +3 -4
  233. package/navbar/_navbar-item_vertical.scss +44 -43
  234. package/navbar/_navbar-theme.scss +14 -35
  235. package/navbar/navbar-brand.component.d.ts +39 -0
  236. package/navbar/navbar-brand.scss +78 -45
  237. package/navbar/navbar-divider.scss +1 -1
  238. package/navbar/navbar-item.component.d.ts +4 -36
  239. package/navbar/navbar-toggle.component.d.ts +23 -0
  240. package/navbar/navbar-toggle.scss +64 -0
  241. package/navbar/navbar-tokens.scss +1 -0
  242. package/navbar/navbar.module.d.ts +8 -6
  243. package/navbar/public-api.d.ts +2 -0
  244. package/navbar/vertical-navbar.component.d.ts +20 -2
  245. package/navbar/vertical-navbar.scss +14 -9
  246. package/navbar-ic/navbar-ic-header.d.ts +3 -2
  247. package/navbar-ic/navbar-ic-header.scss +0 -4
  248. package/navbar-ic/navbar-ic-item.d.ts +1 -0
  249. package/navbar-ic/navbar-ic-item.scss +0 -4
  250. package/navbar-ic/navbar-ic.animation.d.ts +1 -0
  251. package/navbar-ic/navbar-ic.d.ts +7 -0
  252. package/notification-center/notification-center.d.ts +12 -9
  253. package/package.json +16 -10
  254. package/popover/popover-tokens.scss +1 -0
  255. package/popover/popover.component.d.ts +12 -1
  256. package/popover/popover.scss +3 -4
  257. package/prebuilt-themes/dark-theme.css +1 -1
  258. package/prebuilt-themes/light-theme.css +1 -1
  259. package/prebuilt-themes/theme.css +1 -1
  260. package/resizer/index.d.ts +2 -0
  261. package/resizer/module.d.ts +7 -0
  262. package/{content-panel/resizable.d.ts → resizer/resizer.d.ts} +18 -13
  263. package/schematics/collection.json +5 -0
  264. package/schematics/migrations/icons-replacement/README.md +93 -0
  265. package/schematics/migrations/icons-replacement/data.js +92 -0
  266. package/schematics/migrations/icons-replacement/index.js +84 -0
  267. package/schematics/migrations/icons-replacement/schema.json +32 -0
  268. package/schematics/ng-add/index.js +6 -6
  269. package/scrollbar/scrollbar.component.scss +2 -3
  270. package/select/select.module.d.ts +2 -1
  271. package/select/select.scss +1 -17
  272. package/sidepanel/sidepanel-tokens.scss +2 -0
  273. package/sidepanel/sidepanel.scss +2 -0
  274. package/split-button/_split-button-theme.scss +89 -34
  275. package/split-button/split-button.d.ts +11 -5
  276. package/split-button/split-button.scss +40 -51
  277. package/tags/tag-input.d.ts +16 -7
  278. package/tags/tag-list.component.d.ts +44 -21
  279. package/tags/tag-list.scss +13 -14
  280. package/tags/tag.component.d.ts +20 -15
  281. package/textarea/textarea-tokens.scss +6 -1
  282. package/textarea/textarea.module.d.ts +2 -1
  283. package/textarea/textarea.scss +4 -0
  284. package/time-range/constants.d.ts +12 -1
  285. package/time-range/time-range-editor.d.ts +7 -9
  286. package/time-range/time-range-title-as-form-field.d.ts +1 -0
  287. package/time-range/time-range.d.ts +5 -2
  288. package/time-range/time-range.service.d.ts +7 -11
  289. package/time-range/types.d.ts +37 -11
  290. package/timepicker/timepicker.module.d.ts +2 -1
  291. package/timezone/timezone-option.component.scss +6 -0
  292. package/timezone/timezone.module.d.ts +1 -1
  293. package/toggle/_toggle-theme.scss +8 -5
  294. package/toggle/toggle-tokens.scss +0 -1
  295. package/toggle/toggle.scss +11 -15
  296. package/top-bar/top-bar-tokens.scss +1 -1
  297. package/top-bar/top-bar.scss +3 -0
  298. package/tree/tree-option.component.d.ts +1 -0
  299. package/tree/tree-selection.component.d.ts +11 -2
  300. package/tree-select/tree-select.component.d.ts +5 -5
  301. package/tree-select/tree-select.module.d.ts +2 -1
  302. package/tree-select/tree-select.scss +4 -0
  303. package/core/common-behaviors/hovered.d.ts +0 -13
  304. package/core/locales/fa-IR.d.ts +0 -162
  305. package/core/locales/zh-CN.d.ts +0 -162
  306. package/esm2022/content-panel/resizable.mjs +0 -138
  307. package/esm2022/core/common-behaviors/hovered.mjs +0 -31
  308. package/esm2022/core/locales/fa-IR.mjs +0 -173
  309. package/esm2022/core/locales/zh-CN.mjs +0 -161
@@ -1,6 +1,10 @@
1
+ import { DOCUMENT } from '@angular/common';
1
2
  import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output, ViewEncapsulation } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
4
  import { KBQ_FORM_FIELD_REF } from '@koobiq/components/core';
3
5
  import { KbqIconModule } from '@koobiq/components/icon';
6
+ import { concatMap, fromEvent, interval, Subject, timer } from 'rxjs';
7
+ import { take, takeUntil } from 'rxjs/operators';
4
8
  import * as i0 from "@angular/core";
5
9
  import * as i1 from "@koobiq/components/icon";
6
10
  // @TODO Temporary solution to resolve circular dependency (#DS-3893)
@@ -10,14 +14,38 @@ const isNumberInput = (control) => {
10
14
  const getKbqStepperToggleMissingControlError = () => {
11
15
  return Error('kbq-stepper should use with kbqNumberInput');
12
16
  };
17
+ /**
18
+ * Timeout duration when clicking the up/down arrow
19
+ * @docs-private
20
+ */
21
+ export const KBQ_STEPPER_INITIAL_TIMEOUT = 300;
22
+ /**
23
+ * Interval delay when clicking the up/down arrow
24
+ * @docs-private
25
+ */
26
+ export const KBQ_STEPPER_INTERVAL_DELAY = 75;
13
27
  /** Component which allow to increment or decrement number value. */
14
28
  export class KbqStepper {
15
29
  constructor() {
16
30
  this.formField = inject(KBQ_FORM_FIELD_REF, { optional: true });
31
+ this.document = inject(DOCUMENT);
17
32
  /** Emitted when the stepper is incremented. */
18
33
  this.stepUp = new EventEmitter();
19
34
  /** Emitted when the stepper is decremented. */
20
35
  this.stepDown = new EventEmitter();
36
+ /** @docs-private */
37
+ this.mouseUp = new Subject();
38
+ /**
39
+ * Timing observable simulating long press in native input-number.
40
+ * - Value increases/decreases by step immediately.
41
+ * - Brief pause (`300ms`)
42
+ * - Numbers start running upward/downward with selected speed
43
+ * (controlled by interval period)
44
+ * @see KBQ_STEPPER_INTERVAL_DELAY
45
+ * @see KBQ_STEPPER_INITIAL_TIMEOUT
46
+ * @docs-private
47
+ */
48
+ this.longPress = timer(KBQ_STEPPER_INITIAL_TIMEOUT).pipe(concatMap(() => interval(KBQ_STEPPER_INTERVAL_DELAY)), takeUntilDestroyed(), takeUntil(this.mouseUp));
21
49
  }
22
50
  /**
23
51
  * Form field number control.
@@ -45,18 +73,21 @@ export class KbqStepper {
45
73
  numberInput.stepDown(numberInput.step);
46
74
  });
47
75
  }
48
- /**
49
- * @docs-private
50
- */
76
+ /** @docs-private */
51
77
  onStepUp($event) {
52
- this.stepUp.emit();
53
- $event.preventDefault();
78
+ this.handleStep($event, this.stepUp);
54
79
  }
55
- /**
56
- * @docs-private
57
- */
80
+ /** @docs-private */
58
81
  onStepDown($event) {
59
- this.stepDown.emit();
82
+ this.handleStep($event, this.stepDown);
83
+ }
84
+ handleStep($event, emitter) {
85
+ emitter.emit();
86
+ // handle case when cursor is out of viewport.
87
+ fromEvent(this.document, 'mouseup')
88
+ .pipe(take(1))
89
+ .subscribe(() => this.mouseUp.next());
90
+ this.longPress.subscribe(() => emitter.emit());
60
91
  $event.preventDefault();
61
92
  }
62
93
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqStepper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -110,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
110
141
  }], stepDown: [{
111
142
  type: Output
112
143
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zdGVwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFVeEQscUVBQXFFO0FBQ3JFLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBcUMsRUFBNkIsRUFBRTtJQUN2RixPQUFPLFFBQVEsSUFBSSxPQUFPLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLHNDQUFzQyxHQUFHLEdBQVUsRUFBRTtJQUN2RCxPQUFPLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGLG9FQUFvRTtBQWlDcEUsTUFBTSxPQUFPLFVBQVU7SUFoQ3ZCO1FBaUNxQixjQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFNUUsK0NBQStDO1FBQzVCLFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV6RSwrQ0FBK0M7UUFDNUIsYUFBUSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0tBZ0Q5RTtJQTlDRzs7OztPQUlHO0lBQ0gsSUFBYyxPQUFPO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFFbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sc0NBQXNDLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFdBQTJCO1FBQ2pDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUV6QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsTUFBa0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLE1BQWtCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVCLENBQUM7a0lBdERRLFVBQVU7c0hBQVYsVUFBVSwrTEEzQlQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FtQlQsMGFBcEJTLGFBQWE7OzRGQTRCZCxVQUFVO2tCQWhDdEIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sYUFBYSxZQUNiLFlBQVksV0FDYixDQUFDLGFBQWEsQ0FBQyxZQUNkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBbUJULFFBRUs7d0JBQ0YsS0FBSyxFQUFFLGFBQWE7cUJBQ3ZCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU1sQixNQUFNO3NCQUF4QixNQUFNO2dCQUdZLFFBQVE7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS0JRX0ZPUk1fRklFTERfUkVGIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxSWNvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IEticUZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29udHJvbCc7XG5cbi8vIEBUT0RPIFRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXNvbHZlIGNpcmN1bGFyIGRlcGVuZGVuY3kgKCNEUy0zODkzKVxudHlwZSBLYnFOdW1iZXJJbnB1dCA9IEticUZvcm1GaWVsZENvbnRyb2w8dW5rbm93bj4gJiB7XG4gICAgc3RlcFVwOiAoc3RlcDogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHN0ZXBEb3duOiAoc3RlcDogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHN0ZXA6IG51bWJlcjtcbn07XG5cbi8vIEBUT0RPIFRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXNvbHZlIGNpcmN1bGFyIGRlcGVuZGVuY3kgKCNEUy0zODkzKVxuY29uc3QgaXNOdW1iZXJJbnB1dCA9IChjb250cm9sOiBLYnFGb3JtRmllbGRDb250cm9sPHVua25vd24+KTogY29udHJvbCBpcyBLYnFOdW1iZXJJbnB1dCA9PiB7XG4gICAgcmV0dXJuICdzdGVwVXAnIGluIGNvbnRyb2wgJiYgJ3N0ZXBEb3duJyBpbiBjb250cm9sO1xufTtcblxuY29uc3QgZ2V0S2JxU3RlcHBlclRvZ2dsZU1pc3NpbmdDb250cm9sRXJyb3IgPSAoKTogRXJyb3IgPT4ge1xuICAgIHJldHVybiBFcnJvcigna2JxLXN0ZXBwZXIgc2hvdWxkIHVzZSB3aXRoIGticU51bWJlcklucHV0Jyk7XG59O1xuXG4vKiogQ29tcG9uZW50IHdoaWNoIGFsbG93IHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgbnVtYmVyIHZhbHVlLiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1zdGVwcGVyJyxcbiAgICBleHBvcnRBczogJ2ticVN0ZXBwZXInLFxuICAgIGltcG9ydHM6IFtLYnFJY29uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJrYnEtc3RlcHBlci1zdGVwLXVwXCJcbiAgICAgICAgICAgIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiXG4gICAgICAgICAgICBrYnEtaWNvbi1idXR0b249XCJrYnEtY2hldnJvbi11cC1zXzE2XCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICBbYXV0b0NvbG9yXT1cInRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0ZXBVcCgkZXZlbnQpXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwia2JxLXN0ZXBwZXItc3RlcC1kb3duXCJcbiAgICAgICAgICAgIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiXG4gICAgICAgICAgICBrYnEtaWNvbi1idXR0b249XCJrYnEtY2hldnJvbi1kb3duLXNfMTZcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgIFthdXRvQ29sb3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RlcERvd24oJGV2ZW50KVwiXG4gICAgICAgID48L2k+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsnc3RlcHBlci5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1zdGVwcGVyJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFTdGVwcGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GaWVsZCA9IGluamVjdChLQlFfRk9STV9GSUVMRF9SRUYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBzdGVwcGVyIGlzIGluY3JlbWVudGVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBzdGVwVXA6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHN0ZXBwZXIgaXMgZGVjcmVtZW50ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHN0ZXBEb3duOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIGZpZWxkIG51bWJlciBjb250cm9sLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgY29udHJvbCgpOiBLYnFOdW1iZXJJbnB1dCB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1GaWVsZD8uY29udHJvbDtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBjb250cm9sLm51bWJlcklucHV0O1xuXG4gICAgICAgIGlmICghaXNOdW1iZXJJbnB1dChpbnB1dCkpIHtcbiAgICAgICAgICAgIHRocm93IGdldEticVN0ZXBwZXJUb2dnbGVNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGNvbm5lY3RUbyhudW1iZXJJbnB1dDogS2JxTnVtYmVySW5wdXQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFudW1iZXJJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RlcFVwLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBudW1iZXJJbnB1dC5zdGVwVXAobnVtYmVySW5wdXQuc3RlcCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RlcERvd24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG51bWJlcklucHV0LnN0ZXBEb3duKG51bWJlcklucHV0LnN0ZXApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgb25TdGVwVXAoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcFVwLmVtaXQoKTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIG9uU3RlcERvd24oJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcERvd24uZW1pdCgpO1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG59XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zdGVwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFVakQscUVBQXFFO0FBQ3JFLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBcUMsRUFBNkIsRUFBRTtJQUN2RixPQUFPLFFBQVEsSUFBSSxPQUFPLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLHNDQUFzQyxHQUFHLEdBQVUsRUFBRTtJQUN2RCxPQUFPLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLENBQUM7QUFFN0Msb0VBQW9FO0FBaUNwRSxNQUFNLE9BQU8sVUFBVTtJ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TUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFPbEIsTUFBTTtzQkFBeEIsTUFBTTtnQkFHWSxRQUFRO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtCUV9GT1JNX0ZJRUxEX1JFRiB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticUljb25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGZyb21FdmVudCwgaW50ZXJ2YWwsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnRyb2wnO1xuXG4vLyBAVE9ETyBUZW1wb3Jhcnkgc29sdXRpb24gdG8gcmVzb2x2ZSBjaXJjdWxhciBkZXBlbmRlbmN5ICgjRFMtMzg5MylcbnR5cGUgS2JxTnVtYmVySW5wdXQgPSBLYnFGb3JtRmllbGRDb250cm9sPHVua25vd24+ICYge1xuICAgIHN0ZXBVcDogKHN0ZXA6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzdGVwRG93bjogKHN0ZXA6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzdGVwOiBudW1iZXI7XG59O1xuXG4vLyBAVE9ETyBUZW1wb3Jhcnkgc29sdXRpb24gdG8gcmVzb2x2ZSBjaXJjdWxhciBkZXBlbmRlbmN5ICgjRFMtMzg5MylcbmNvbnN0IGlzTnVtYmVySW5wdXQgPSAoY29udHJvbDogS2JxRm9ybUZpZWxkQ29udHJvbDx1bmtub3duPik6IGNvbnRyb2wgaXMgS2JxTnVtYmVySW5wdXQgPT4ge1xuICAgIHJldHVybiAnc3RlcFVwJyBpbiBjb250cm9sICYmICdzdGVwRG93bicgaW4gY29udHJvbDtcbn07XG5cbmNvbnN0IGdldEticVN0ZXBwZXJUb2dnbGVNaXNzaW5nQ29udHJvbEVycm9yID0gKCk6IEVycm9yID0+IHtcbiAgICByZXR1cm4gRXJyb3IoJ2ticS1zdGVwcGVyIHNob3VsZCB1c2Ugd2l0aCBrYnFOdW1iZXJJbnB1dCcpO1xufTtcblxuLyoqXG4gKiBUaW1lb3V0IGR1cmF0aW9uIHdoZW4gY2xpY2tpbmcgdGhlIHVwL2Rvd24gYXJyb3dcbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IEtCUV9TVEVQUEVSX0lOSVRJQUxfVElNRU9VVCA9IDMwMDtcblxuLyoqXG4gKiBJbnRlcnZhbCBkZWxheSB3aGVuIGNsaWNraW5nIHRoZSB1cC9kb3duIGFycm93XG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBLQlFfU1RFUFBFUl9JTlRFUlZBTF9ERUxBWSA9IDc1O1xuXG4vKiogQ29tcG9uZW50IHdoaWNoIGFsbG93IHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgbnVtYmVyIHZhbHVlLiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1zdGVwcGVyJyxcbiAgICBleHBvcnRBczogJ2ticVN0ZXBwZXInLFxuICAgIGltcG9ydHM6IFtLYnFJY29uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJrYnEtc3RlcHBlci1zdGVwLXVwXCJcbiAgICAgICAgICAgIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiXG4gICAgICAgICAgICBrYnEtaWNvbi1idXR0b249XCJrYnEtY2hldnJvbi11cC1zXzE2XCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICBbYXV0b0NvbG9yXT1cInRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0ZXBVcCgkZXZlbnQpXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwia2JxLXN0ZXBwZXItc3RlcC1kb3duXCJcbiAgICAgICAgICAgIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiXG4gICAgICAgICAgICBrYnEtaWNvbi1idXR0b249XCJrYnEtY2hldnJvbi1kb3duLXNfMTZcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgIFthdXRvQ29sb3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RlcERvd24oJGV2ZW50KVwiXG4gICAgICAgID48L2k+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsnc3RlcHBlci5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1zdGVwcGVyJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFTdGVwcGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GaWVsZCA9IGluamVjdChLQlFfRk9STV9GSUVMRF9SRUYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgc3RlcHBlciBpcyBpbmNyZW1lbnRlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc3RlcFVwOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBzdGVwcGVyIGlzIGRlY3JlbWVudGVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBzdGVwRG93bjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW91c2VVcCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaW1pbmcgb2JzZXJ2YWJsZSBzaW11bGF0aW5nIGxvbmcgcHJlc3MgaW4gbmF0aXZlIGlucHV0LW51bWJlci5cbiAgICAgKiAtIFZhbHVlIGluY3JlYXNlcy9kZWNyZWFzZXMgYnkgc3RlcCBpbW1lZGlhdGVseS5cbiAgICAgKiAtIEJyaWVmIHBhdXNlIChgMzAwbXNgKVxuICAgICAqIC0gTnVtYmVycyBzdGFydCBydW5uaW5nIHVwd2FyZC9kb3dud2FyZCB3aXRoIHNlbGVjdGVkIHNwZWVkXG4gICAgICogKGNvbnRyb2xsZWQgYnkgaW50ZXJ2YWwgcGVyaW9kKVxuICAgICAqIEBzZWUgS0JRX1NURVBQRVJfSU5URVJWQUxfREVMQVlcbiAgICAgKiBAc2VlIEtCUV9TVEVQUEVSX0lOSVRJQUxfVElNRU9VVFxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvbmdQcmVzcyA9IHRpbWVyKEtCUV9TVEVQUEVSX0lOSVRJQUxfVElNRU9VVCkucGlwZShcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IGludGVydmFsKEtCUV9TVEVQUEVSX0lOVEVSVkFMX0RFTEFZKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5tb3VzZVVwKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIGZpZWxkIG51bWJlciBjb250cm9sLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgY29udHJvbCgpOiBLYnFOdW1iZXJJbnB1dCB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1GaWVsZD8uY29udHJvbDtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBjb250cm9sLm51bWJlcklucHV0O1xuXG4gICAgICAgIGlmICghaXNOdW1iZXJJbnB1dChpbnB1dCkpIHtcbiAgICAgICAgICAgIHRocm93IGdldEticVN0ZXBwZXJUb2dnbGVNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGNvbm5lY3RUbyhudW1iZXJJbnB1dDogS2JxTnVtYmVySW5wdXQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFudW1iZXJJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RlcFVwLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBudW1iZXJJbnB1dC5zdGVwVXAobnVtYmVySW5wdXQuc3RlcCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RlcERvd24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG51bWJlcklucHV0LnN0ZXBEb3duKG51bWJlcklucHV0LnN0ZXApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uU3RlcFVwKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZVN0ZXAoJGV2ZW50LCB0aGlzLnN0ZXBVcCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvblN0ZXBEb3duKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZVN0ZXAoJGV2ZW50LCB0aGlzLnN0ZXBEb3duKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVN0ZXAoJGV2ZW50OiBNb3VzZUV2ZW50LCBlbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4pOiB2b2lkIHtcbiAgICAgICAgZW1pdHRlci5lbWl0KCk7XG4gICAgICAgIC8vIGhhbmRsZSBjYXNlIHdoZW4gY3Vyc29yIGlzIG91dCBvZiB2aWV3cG9ydC5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubW91c2VVcC5uZXh0KCkpO1xuICAgICAgICB0aGlzLmxvbmdQcmVzcy5zdWJzY3JpYmUoKCkgPT4gZW1pdHRlci5lbWl0KCkpO1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG59XG4iXX0=
@@ -136,6 +136,10 @@ export class KbqInlineEdit {
136
136
  this.getValueHandler = input();
137
137
  /** Handler function to update the value */
138
138
  this.setValueHandler = input();
139
+ /**
140
+ * Customizable function that checks if saving on enter available.
141
+ */
142
+ this.canSaveOnEnter = input((event) => hasModifierKey(event, 'ctrlKey', 'metaKey') || !(event.target instanceof HTMLTextAreaElement));
139
143
  /** Emitted when the inline edit is saved successfully. */
140
144
  this.saved = output();
141
145
  /** Emitted when the inline edit is canceled and changes are discarded. */
@@ -238,15 +242,15 @@ export class KbqInlineEdit {
238
242
  }
239
243
  /** @docs-private */
240
244
  onOverlayKeydown(event) {
241
- const { target, key } = event;
242
245
  this.formFieldRef()?.control.ngControl?.control?.markAsTouched();
243
- switch (key) {
246
+ const canSaveOnEnter = this.canSaveOnEnter();
247
+ switch (event.key) {
244
248
  case 'Escape': {
245
249
  this.cancel();
246
250
  break;
247
251
  }
248
252
  case 'Enter': {
249
- if (hasModifierKey(event, 'ctrlKey', 'metaKey') || !(target instanceof HTMLTextAreaElement)) {
253
+ if (canSaveOnEnter(event)) {
250
254
  event.preventDefault();
251
255
  this.formFieldRef()?.control.ngControl?.control?.markAsTouched();
252
256
  setTimeout(() => this.save(event));
@@ -351,7 +355,7 @@ export class KbqInlineEdit {
351
355
  return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type="file"]),textarea') ?? null;
352
356
  }
353
357
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEdit, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
354
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqInlineEdit, isStandalone: true, selector: "kbq-inline-edit", inputs: { showActions: { classPropertyName: "showActions", publicName: "showActions", isSignal: true, isRequired: false, transformFunction: null }, showTooltipOnError: { classPropertyName: "showTooltipOnError", publicName: "showTooltipOnError", isSignal: true, isRequired: false, transformFunction: null }, validationTooltip: { classPropertyName: "validationTooltip", publicName: "validationTooltip", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, editModeWidth: { classPropertyName: "editModeWidth", publicName: "editModeWidth", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "tooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, getValueHandler: { classPropertyName: "getValueHandler", publicName: "getValueHandler", isSignal: true, isRequired: false, transformFunction: null }, setValueHandler: { classPropertyName: "setValueHandler", publicName: "setValueHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { saved: "saved", canceled: "canceled", modeChange: "modeChange" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onClick($event)", "keydown.space": "onClick($event)" }, properties: { "class": "className()", "class.kbq-inline-edit_with-label": "!!label()", "class.kbq-inline-edit_with-menu": "!!menu()", "class.kbq-inline-edit_disabled": "disabled()" }, classAttribute: "kbq-inline-edit" }, queries: [{ propertyName: "menu", first: true, predicate: KbqInlineEditMenu, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: KbqLabel, descendants: true, isSignal: true }, { propertyName: "formFieldRef", first: true, predicate: KbqFormField, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, isSignal: true }, { propertyName: "tooltipTrigger", first: true, predicate: KbqTooltipTrigger, descendants: true, isSignal: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "regionItems", predicate: KbqFocusRegionItem, descendants: true, isSignal: true }], exportAs: ["kbqInlineEdit"], hostDirectives: [{ directive: i1.KbqFocusMonitor }], ngImport: i0, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);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-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "directive", type: KbqFocusRegionItem, selector: "[kbqFocusRegionItem]", outputs: ["tabOut"], exportAs: ["kbqFocusRegionItem"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
358
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqInlineEdit, isStandalone: true, selector: "kbq-inline-edit", inputs: { showActions: { classPropertyName: "showActions", publicName: "showActions", isSignal: true, isRequired: false, transformFunction: null }, showTooltipOnError: { classPropertyName: "showTooltipOnError", publicName: "showTooltipOnError", isSignal: true, isRequired: false, transformFunction: null }, validationTooltip: { classPropertyName: "validationTooltip", publicName: "validationTooltip", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, editModeWidth: { classPropertyName: "editModeWidth", publicName: "editModeWidth", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "tooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, getValueHandler: { classPropertyName: "getValueHandler", publicName: "getValueHandler", isSignal: true, isRequired: false, transformFunction: null }, setValueHandler: { classPropertyName: "setValueHandler", publicName: "setValueHandler", isSignal: true, isRequired: false, transformFunction: null }, canSaveOnEnter: { classPropertyName: "canSaveOnEnter", publicName: "canSaveOnEnter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { saved: "saved", canceled: "canceled", modeChange: "modeChange" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onClick($event)", "keydown.space": "onClick($event)" }, properties: { "class": "className()", "class.kbq-inline-edit_with-label": "!!label()", "class.kbq-inline-edit_with-menu": "!!menu()", "class.kbq-inline-edit_disabled": "disabled()" }, classAttribute: "kbq-inline-edit" }, queries: [{ propertyName: "menu", first: true, predicate: KbqInlineEditMenu, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: KbqLabel, descendants: true, isSignal: true }, { propertyName: "formFieldRef", first: true, predicate: KbqFormField, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, isSignal: true }, { propertyName: "tooltipTrigger", first: true, predicate: KbqTooltipTrigger, descendants: true, isSignal: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "regionItems", predicate: KbqFocusRegionItem, descendants: true, isSignal: true }], exportAs: ["kbqInlineEdit"], hostDirectives: [{ directive: i1.KbqFocusMonitor }], ngImport: i0, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);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-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "directive", type: KbqFocusRegionItem, selector: "[kbqFocusRegionItem]", outputs: ["tabOut"], exportAs: ["kbqFocusRegionItem"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
355
359
  }
356
360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEdit, decorators: [{
357
361
  type: Component,
@@ -375,4 +379,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
375
379
  CdkMonitorFocus
376
380
  ], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);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-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"] }]
377
381
  }], ctorParameters: () => [] });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2lubGluZS1lZGl0LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbmxpbmUtZWRpdC9pbmxpbmUtZWRpdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0Is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U0FBUyxFQUFFLGlCQUFpQjt3QkFDNUIsaUJBQWlCLEVBQUUsaUJBQWlCO3dCQUNwQyxpQkFBaUIsRUFBRSxpQkFBaUI7cUJBQ3ZDLGtCQUNlLENBQUMsZUFBZSxDQUFDLFdBQ3hCO3dCQUNMLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osZUFBZTtxQkFDbEIsY0FDVyxDQUFDLHdDQUF3QyxDQUFDLG1CQUNyQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENka01vbml0b3JGb2N1cywgQ2RrVHJhcEZvY3VzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgT3ZlcmxheSwgU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgdmlld0NoaWxkLFxuICAgIHZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLYnFBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBLYnFCdXR0b25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgS2JxQW5pbWF0aW9uQ3VydmVzLFxuICAgIEticUFuaW1hdGlvbkR1cmF0aW9ucyxcbiAgICBLYnFDb21wb25lbnRDb2xvcnMsXG4gICAgS2JxRm9jdXNNb25pdG9yLFxuICAgIFBvcFVwUGxhY2VtZW50c1xufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFEcm9wZG93blRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgS2JxRm9ybUZpZWxkLCBLYnFMYWJlbCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb24gfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFTZWxlY3QgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvc2VsZWN0JztcbmltcG9ydCB7IEticVRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgS2JxVHJlZVNlbGVjdCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90cmVlLXNlbGVjdCc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IEtCUV9JTkxJTkVfRURJVF9BQ1RJT05fQlVUVE9OU19BTklNQVRJT04gPSB0cmlnZ2VyKCdwYW5lbEFuaW1hdGlvbicsIFtcbiAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDAlKScsIG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICBgJHtLYnFBbmltYXRpb25EdXJhdGlvbnMuSW5zdGFudH0gJHtLYnFBbmltYXRpb25DdXJ2ZXMuRGVjZWxlcmF0aW9uQ3VydmV9YCxcbiAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwJSknLCBvcGFjaXR5OiAxIH0pXG4gICAgICAgICldKVxuXG5dKTtcblxuY29uc3QgYmFzZUNsYXNzID0gJ2ticS1pbmxpbmUtZWRpdCc7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUZvY3VzUmVnaW9uSXRlbV0nLFxuICAgIGV4cG9ydEFzOiAna2JxRm9jdXNSZWdpb25JdGVtJyxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZm9jdXNpbiknOiAnaXNGb2N1c2VkID0gdHJ1ZScsXG4gICAgICAgICcoa2V5ZG93bi50YWIpJzogJ29uVGFiT3V0KCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uc2hpZnQudGFiKSc6ICdvblRhYk91dCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9jdXNSZWdpb25JdGVtIHtcbiAgICByZWFkb25seSB0YWJPdXQgPSBvdXRwdXQ8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIHByb3RlY3RlZCBpc0ZvY3VzZWQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBvblRhYk91dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFiT3V0LmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSAhdGhpcy5pc0ZvY3VzZWQ7XG4gICAgfVxufVxuXG4vKiogRGlyZWN0aXZlIGZvciBlYXN5IHVzaW5nIHN0eWxlcyBvZiBpbmxpbmUgZWRpdCBwbGFjZWhvbGRlciBwdWJsaWNseS4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyXScsXG4gICAgZXhwb3J0QXM6ICdrYnFJbmxpbmVFZGl0UGxhY2Vob2xkZXInLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtaW5saW5lLWVkaXRfX3BsYWNlaG9sZGVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyIHt9XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgZW5oYW5jZXMgZWxlbWVudCBhY3RpbmcgYXMgZHJvcGRvd24gdHJpZ2dlcixcbiAqIHZpc3VhbGx5IGluZGljYXRpbmcgdGhlIGFjdGl2ZSBzdGF0ZSB3aXRoIHRoZSBga2JxLWFjdGl2ZWAgY2xhc3MuXG4gKiBBbHNvLCBpdCBwcmV2ZW50cyBjbGljay9rZXlkb3duIGV2ZW50cyBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQgdG8gZGlzYWJsZSBtb2RlIHRvZ2dsaW5nIG9mIHBhcmVudCBjb21wb25lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxSW5saW5lRWRpdE1lbnVdJyxcbiAgICBleHBvcnRBczogJ2ticUlubGluZUVkaXRNZW51JyxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdidXR0b24nLFxuICAgICAgICBjbGFzczogJ2ticS1pbmxpbmUtZWRpdF9fbWVudScsXG4gICAgICAgICdbY2xhc3Mua2JxLWFjdGl2ZV0nOiAnZHJvcGRvd25UcmlnZ2VyPy5vcGVuZWQnLFxuICAgICAgICAnKGNsaWNrKSc6ICckZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCknLFxuICAgICAgICAnKGtleWRvd24uZW50ZXIpJzogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKScsXG4gICAgICAgICcoa2V5ZG93bi5zcGFjZSknOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxSW5saW5lRWRpdE1lbnUge1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duVHJpZ2dlciA9IGluamVjdChLYnFEcm9wZG93blRyaWdnZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQ3VzdG9taXphYmxlIGNvbXBvbmVudCB0aGF0IGVuYWJsZXMgZWRpdC1pbi1wbGFjZSBsb2dpYyBmb3Igc3BlY2lmaWVkIGNvbnRyb2wgYW5kIGl0J3Mgdmlldy5cbiAqIFRoaXMgY29tcG9uZW50IGlzIHByb2plY3RpbmcgZWRpdC92aWV3IG1vZGUgdGVtcGxhdGVzIGFuZCBhZGRzIGtleWJvYXJkL3BvaW50ZXIgaGFuZGxlcnMuXG4gKiBFZGl0IG1vZGUgb3BlbnMgaW4gYSBwb3NpdGlvbmVkIG92ZXJsYXkgdGhhdCBtYXRjaGVzIHRoZSB2aWV3IG1vZGUgd2lkdGggb3IgY2FuIGJlIGN1c3RvbWl6ZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtaW5saW5lLWVkaXQnLFxuICAgIGV4cG9ydEFzOiAna2JxSW5saW5lRWRpdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lubGluZS1lZGl0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lubGluZS1lZGl0LnNjc3MnLCAnLi9pbmxpbmUtZWRpdC10b2tlbnMuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6IGJhc2VDbGFzcyxcbiAgICAgICAgJ1tjbGFzc10nOiAnY2xhc3NOYW1lKCknLFxuICAgICAgICAnW2NsYXNzLmticS1pbmxpbmUtZWRpdF93aXRoLWxhYmVsXSc6ICchIWxhYmVsKCknLFxuICAgICAgICAnW2NsYXNzLmticS1pbmxpbmUtZWRpdF93aXRoLW1lbnVdJzogJyEhbWVudSgpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5saW5lLWVkaXRfZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uZW50ZXIpJzogJ29uQ2xpY2soJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5zcGFjZSknOiAnb25DbGljaygkZXZlbnQpJ1xuICAgIH0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtLYnFGb2N1c01vbml0b3JdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgS2JxQnV0dG9uTW9kdWxlLFxuICAgICAgICBLYnFJY29uLFxuICAgICAgICBLYnFUb29sdGlwVHJpZ2dlcixcbiAgICAgICAgS2JxRm9jdXNSZWdpb25JdGVtLFxuICAgICAgICBDZGtUcmFwRm9jdXMsXG4gICAgICAgIENka01vbml0b3JGb2N1c1xuICAgIF0sXG4gICAgYW5pbWF0aW9uczogW0tCUV9JTkxJTkVfRURJVF9BQ1RJT05fQlVUVE9OU19BTklNQVRJT05dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxSW5saW5lRWRpdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGticUZvY3VzTW9uaXRvciA9IGluamVjdChLYnFGb2N1c01vbml0b3IsIHsgaG9zdDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgc2F2ZS9jYW5jZWwgYWN0aW9uIGJ1dHRvbnMgaW4gZWRpdCBtb2RlLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2hvd0FjdGlvbnMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHNob3cgdmFsaWRhdGlvbiBlcnJvciB0b29sdGlwcyBvbiBzYXZlIGF0dGVtcHRzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICByZWFkb25seSBzaG93VG9vbHRpcE9uRXJyb3IgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKiogQ3VzdG9tIHZhbGlkYXRpb24gdG9vbHRpcCBtZXNzYWdlLiAqL1xuICAgIHJlYWRvbmx5IHZhbGlkYXRpb25Ub29sdGlwID0gaW5wdXQ8c3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyB0aGUgY29tcG9uZW50LCBwcmV2ZW50aW5nIGludGVyYWN0aW9uIGFuZCBtb2RlIHN3aXRjaGluZy4gT25seSBhbGxvd3MgbWVudSBkcm9wZG93bi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICAgIC8qKiBDdXN0b20gd2lkdGggaW4gcGl4ZWxzIGZvciB0aGUgZWRpdCBtb2RlIG92ZXJsYXkuIEF1dG8tY2FsY3VsYXRlZCBpZiBub3Qgc2V0LiAqL1xuICAgIHJlYWRvbmx5IGVkaXRNb2RlV2lkdGggPSBpbnB1dCh1bmRlZmluZWQsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG4gICAgLyoqIFVzZXItZGVmaW5lZCB0b29sdGlwIHBsYWNlbWVudCAqL1xuICAgIHJlYWRvbmx5IHRvb2x0aXBQbGFjZW1lbnQgPSBpbnB1dDxQb3BVcFBsYWNlbWVudHM+KCk7XG4gICAgLyoqIEhhbmRsZXIgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgKi9cbiAgICByZWFkb25seSBnZXRWYWx1ZUhhbmRsZXIgPSBpbnB1dDwoKSA9PiB1bmtub3duPigpO1xuICAgIC8qKiBIYW5kbGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmFsdWUgKi9cbiAgICByZWFkb25seSBzZXRWYWx1ZUhhbmRsZXIgPSBpbnB1dDwodmFsdWU6IGFueSkgPT4gdm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGlubGluZSBlZGl0IGlzIHNhdmVkIHN1Y2Nlc3NmdWxseS4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2F2ZWQgPSBvdXRwdXQoKTtcbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbmxpbmUgZWRpdCBpcyBjYW5jZWxlZCBhbmQgY2hhbmdlcyBhcmUgZGlzY2FyZGVkLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5jZWxlZCA9IG91dHB1dCgpO1xuICAgIC8qKiBFbWl0dGVkIHdoZW4gbW9kZSBzd2l0Y2hlZCB0byBlZGl0L3ZpZXcgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZUNoYW5nZSA9IG91dHB1dDwndmlldycgfCAnZWRpdCc+KCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtZW51ID0gY29udGVudENoaWxkKEticUlubGluZUVkaXRNZW51KTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsYWJlbCA9IGNvbnRlbnRDaGlsZChLYnFMYWJlbCk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkUmVmID0gY29udGVudENoaWxkKEticUZvcm1GaWVsZCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5T3JpZ2luID0gdmlld0NoaWxkLnJlcXVpcmVkKENka092ZXJsYXlPcmlnaW4pO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvb2x0aXBUcmlnZ2VyID0gdmlld0NoaWxkKEticVRvb2x0aXBUcmlnZ2VyKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5RGlyID0gdmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlZ2lvbkl0ZW1zID0gdmlld0NoaWxkcmVuKEticUZvY3VzUmVnaW9uSXRlbSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCd2aWV3JyB8ICdlZGl0Jz4oJ3ZpZXcnKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5V2lkdGggPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nPignJyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3kgPSBzaWduYWw8U2Nyb2xsU3RyYXRlZ3k+KHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBtb2RlQXNSZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsYXNzTmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke2Jhc2VDbGFzc31fJHt0aGlzLm1vZGUoKX1gKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0VkaXRNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlKCkgPT09ICdlZGl0Jyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFiSW5kZXggPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc0VkaXRNb2RlKCkgfHwgdGhpcy5kaXNhYmxlZCgpID8gLTEgOiAwKSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwbGFjZW1lbnRzID0gUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sb3JzID0gS2JxQ29tcG9uZW50Q29sb3JzO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IHVua25vd247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMubW9kZSlcbiAgICAgICAgICAgIC5waXBlKHNraXAoMSksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY3VycmVudE1vZGUpID0+IHRoaXMubW9kZUNoYW5nZS5lbWl0KGN1cnJlbnRNb2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgdG9nZ2xlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlLnVwZGF0ZSgobW9kZSkgPT4gKG1vZGUgPT09ICd2aWV3JyA/ICdlZGl0JyA6ICd2aWV3JykpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc0VkaXRNb2RlKCkpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5rYnFGb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5vdmVybGF5T3JpZ2luKCkuZWxlbWVudFJlZiwgJ3Byb2dyYW0nKTtcblxuICAgICAgICB0aGlzLnRvZ2dsZU1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbkF0dGFjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5V2lkdGgoKTtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5S2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICAgICAgY29uc3QgZm9ybUZpZWxkUmVmID0gdGhpcy5mb3JtRmllbGRSZWYoKTtcblxuICAgICAgICBmb3JtRmllbGRSZWY/LmNvbnRyb2wuc3RhdGVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vdmVybGF5RGlyKCkhLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcFRyaWdnZXIgPSB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFRyaWdnZXI/LmlzT3BlbiAmJiB0b29sdGlwVHJpZ2dlcj8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkUmVmPy5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSBpbnB1dD8uc2VsZWN0KCk7XG5cbiAgICAgICAgICAgIGlmIChmb3JtRmllbGRSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5QYW5lbChmb3JtRmllbGRSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBzYXZlKCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSW52YWxpZCgpKSB7XG4gICAgICAgICAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5zaG93VG9vbHRpcE9uRXJyb3IoKSAmJiB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk/LnNob3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5zYXZlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5pbml0aWFsVmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICB0aGlzLmNhbmNlbGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbk92ZXJsYXlLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0LCBrZXkgfSA9IGV2ZW50O1xuXG4gICAgICAgIHRoaXMuZm9ybUZpZWxkUmVmKCk/LmNvbnRyb2wubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnY3RybEtleScsICdtZXRhS2V5JykgfHwgISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1GaWVsZFJlZigpPy5jb250cm9sLm5nQ29udHJvbD8uY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2F2ZShldmVudCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgVGFiIGtleSBsaXN0ZW5lcnMgb24gcmVnaW9uIGl0ZW1zLlxuICAgICAqIFNpbmdsZSBpdGVtOiBUYWIgbW92ZXMgdG8gbmV4dCBlZGl0LlxuICAgICAqIE11bHRpcGxlIGl0ZW1zOiBTaGlmdCtUYWIgb24gZmlyc3Qgb3IgVGFiIG9uIGxhc3QgbW92ZXMgdG8gbmV4dCBlZGl0LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0T3ZlcmxheUtleWRvd25MaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVnaW9uSXRlbXMgPSB0aGlzLnJlZ2lvbkl0ZW1zKCk7XG5cbiAgICAgICAgaWYgKHJlZ2lvbkl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IHJlZ2lvbkl0ZW1zLmF0KDApO1xuICAgICAgICBjb25zdCBsYXN0SXRlbSA9IHJlZ2lvbkl0ZW1zLmF0KHJlZ2lvbkl0ZW1zLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgIGlmIChyZWdpb25JdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGZpcnN0SXRlbT8udGFiT3V0LnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuc2F2ZUFuZEZvY3VzTmV4dElubGluZUVkaXQoZXZlbnQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpcnN0SXRlbT8udGFiT3V0LnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnc2hpZnRLZXknKSAmJiB0aGlzLnNhdmVBbmRGb2N1c05leHRJbmxpbmVFZGl0KGV2ZW50KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGFzdEl0ZW0/LnRhYk91dC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdzaGlmdEtleScpICYmIHRoaXMuc2F2ZUFuZEZvY3VzTmV4dElubGluZUVkaXQoZXZlbnQpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlQW5kRm9jdXNOZXh0SW5saW5lRWRpdChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmUoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5pc0ludmFsaWQoKSkgcmV0dXJuO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2ticS1pbmxpbmUtZWRpdF9fZm9jdXNfY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB7IGtleTogJ0VudGVyJyB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRSZWYgPSB0aGlzLmZvcm1GaWVsZFJlZigpO1xuXG4gICAgICAgIGlmICghZm9ybUZpZWxkUmVmKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1GaWVsZFJlZi5pbnZhbGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IGdldFZhbHVlSGFuZGxlciA9IHRoaXMuZ2V0VmFsdWVIYW5kbGVyKCk7XG5cbiAgICAgICAgaWYgKGdldFZhbHVlSGFuZGxlcikgcmV0dXJuIGdldFZhbHVlSGFuZGxlcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvZXJjZUNvbnRyb2woKTtcblxuICAgICAgICByZXR1cm4gY29udHJvbD8udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZTxUPih2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IHRoaXMuc2V0VmFsdWVIYW5kbGVyKCk7XG5cbiAgICAgICAgaWYgKHNldFZhbHVlKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvZXJjZUNvbnRyb2woKTtcblxuICAgICAgICBpZiAoIWNvbnRyb2wpIHJldHVybjtcblxuICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvZXJjZUNvbnRyb2woKSB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZFJlZiA9IHRoaXMuZm9ybUZpZWxkUmVmKCk7XG5cbiAgICAgICAgaWYgKCFmb3JtRmllbGRSZWYpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmIChmb3JtRmllbGRSZWYuY29udHJvbC5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtRmllbGRSZWYuY29udHJvbC5uZ0NvbnRyb2wuY29udHJvbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtRmllbGRSZWYuY29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE92ZXJsYXlXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWRpdE1vZGVXaWR0aCA9IHRoaXMuZWRpdE1vZGVXaWR0aCgpO1xuXG4gICAgICAgIGlmIChlZGl0TW9kZVdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlXaWR0aC5zZXQoZWRpdE1vZGVXaWR0aCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkID0gdGhpcy5sYWJlbCgpXG4gICAgICAgICAgICA/IHRoaXMub3ZlcmxheU9yaWdpbigpLmVsZW1lbnRSZWZcbiAgICAgICAgICAgIDogdGhpcy5lbGVtZW50UmVmO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVdpZHRoLnNldChlbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID8/ICcnKTtcbiAgICB9XG5cbiAgICAvLyBAVE9ETyByZWZhY3RvciB0aGlzICgjRFMtNDE4MSlcbiAgICBwcml2YXRlIG9wZW5QYW5lbChmb3JtRmllbGRSZWY6IEticUZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUZpZWxkUmVmLmNvbnRyb2w7XG5cbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBLYnFTZWxlY3QgfHwgY29udHJvbCBpbnN0YW5jZW9mIEticVRyZWVTZWxlY3QpIHtcbiAgICAgICAgICAgIGNvbnRyb2wub3BlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBLYnFBdXRvY29tcGxldGVUcmlnZ2VyKSB7XG4gICAgICAgICAgICBjb250cm9sLm9wZW5QYW5lbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheURpcigpPy5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Om5vdChbdHlwZT1cImZpbGVcIl0pLHRleHRhcmVhJykgPz8gbnVsbDtcbiAgICB9XG59XG4iLCJAaWYgKGxhYmVsKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19sYWJlbFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtbGFiZWxcIiAvPlxuICAgIDwvZGl2PlxufVxuXG48ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X192aWV3LWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFJbmxpbmVFZGl0Vmlld01vZGVdXCIgLz5cblxuICAgIDxkaXZcbiAgICAgICAgI292ZXJsYXlPcmlnaW5cbiAgICAgICAgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX2ZvY3VzX2NvbnRhaW5lciBrYnEtaW5saW5lLWVkaXRfX292ZXJsYXktb3JpZ2luXCJcbiAgICAgICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICBAaWYgKG1lbnUoKSAmJiBtb2RlKCkgPT09ICd2aWV3Jykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19tZW51LW1hc2sga2JxLW1hc2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX21lbnUtbWFzay1mYWRlIGticS1tYXNrX19mYWRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19tZW51LW1hc2stY29udGFpbmVyIGticS1tYXNrX19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxSW5saW5lRWRpdE1lbnVdXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0VkaXRNb2RlKClcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvdmVybGF5T3JpZ2luXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZXT1cIi1vdmVybGF5T3JpZ2luLm9mZnNldEhlaWdodFwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwib3ZlcmxheVdpZHRoKClcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneV09XCJzY3JvbGxTdHJhdGVneSgpXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJmYWxzZVwiXG4gICAgICAgIChhdHRhY2gpPVwib25BdHRhY2goKVwiXG4gICAgICAgIChvdmVybGF5T3V0c2lkZUNsaWNrKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgIChvdmVybGF5S2V5ZG93bik9XCJvbk92ZXJsYXlLZXlkb3duKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fcGFuZWxcIiBjZGtUcmFwRm9jdXMgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX2NvbnRyb2wtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBrYnFGb2N1c1JlZ2lvbkl0ZW1cbiAgICAgICAgICAgICAgICBba2JxVG9vbHRpcENvbG9yXT1cImNvbG9ycy5FcnJvclwiXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBdPVwidmFsaWRhdGlvblRvb2x0aXAoKSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBBcnJvd109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2ticVRyaWdnZXJdPVwiJ21hbnVhbCdcIlxuICAgICAgICAgICAgICAgIFtrYnFQbGFjZW1lbnRdPVwidG9vbHRpcFBsYWNlbWVudCgpID8/IHBsYWNlbWVudHMuVG9wTGVmdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticUlubGluZUVkaXRFZGl0TW9kZV1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoc2hvd0FjdGlvbnMoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX2FjdGlvbi1idXR0b25zXCIgcm9sZT1cImdyb3VwXCIgW0BwYW5lbEFuaW1hdGlvbl0+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24ga2JxLWJ1dHRvbiBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiIChjbGljayk9XCJzYXZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNoZWNrXzE2XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAga2JxRm9jdXNSZWdpb25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBrYnEtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0LWZhZGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXhtYXJrXzE2XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2lubGluZS1lZGl0LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbmxpbmUtZWRpdC9pbmxpbmUtZWRpdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0Is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LEVBQUUsU0FBUzt3QkFDaEIsU0FBUyxFQUFFLGFBQWE7d0JBQ3hCLG9DQUFvQyxFQUFFLFdBQVc7d0JBQ2pELG1DQUFtQyxFQUFFLFVBQVU7d0JBQy9DLGtDQUFrQyxFQUFFLFlBQVk7d0JBQ2hELFNBQVMsRUFBRSxpQkFBaUI7d0JBQzVCLGlCQUFpQixFQUFFLGlCQUFpQjt3QkFDcEMsaUJBQWlCLEVBQUUsaUJBQWlCO3FCQUN2QyxrQkFDZSxDQUFDLGVBQWUsQ0FBQyxXQUN4Qjt3QkFDTCxtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLGVBQWU7cUJBQ2xCLGNBQ1csQ0FBQyx3Q0FBd0MsQ0FBQyxtQkFDckMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtNb25pdG9yRm9jdXMsIENka1RyYXBGb2N1cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIE92ZXJsYXksIFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBjb250ZW50Q2hpbGQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIHZpZXdDaGlsZCxcbiAgICB2aWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2JxQXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgS2JxQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIEticUFuaW1hdGlvbkN1cnZlcyxcbiAgICBLYnFBbmltYXRpb25EdXJhdGlvbnMsXG4gICAgS2JxQ29tcG9uZW50Q29sb3JzLFxuICAgIEticUZvY3VzTW9uaXRvcixcbiAgICBQb3BVcFBsYWNlbWVudHNcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25UcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticUZvcm1GaWVsZCwgS2JxTGFiZWwgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxU2VsZWN0IH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3NlbGVjdCc7XG5pbXBvcnQgeyBLYnFUb29sdGlwVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IEticVRyZWVTZWxlY3QgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdHJlZS1zZWxlY3QnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBLQlFfSU5MSU5FX0VESVRfQUNUSU9OX0JVVFRPTlNfQU5JTUFUSU9OID0gdHJpZ2dlcigncGFuZWxBbmltYXRpb24nLCBbXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknLCBvcGFjaXR5OiAwIH0pLFxuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgYCR7S2JxQW5pbWF0aW9uRHVyYXRpb25zLkluc3RhbnR9ICR7S2JxQW5pbWF0aW9uQ3VydmVzLkRlY2VsZXJhdGlvbkN1cnZlfWAsXG4gICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCUpJywgb3BhY2l0eTogMSB9KVxuICAgICAgICApXSlcblxuXSk7XG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdrYnEtaW5saW5lLWVkaXQnO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFGb2N1c1JlZ2lvbkl0ZW1dJyxcbiAgICBleHBvcnRBczogJ2ticUZvY3VzUmVnaW9uSXRlbScsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGZvY3VzaW4pJzogJ2lzRm9jdXNlZCA9IHRydWUnLFxuICAgICAgICAnKGtleWRvd24udGFiKSc6ICdvblRhYk91dCgkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duLnNoaWZ0LnRhYiknOiAnb25UYWJPdXQoJGV2ZW50KSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUZvY3VzUmVnaW9uSXRlbSB7XG4gICAgcmVhZG9ubHkgdGFiT3V0ID0gb3V0cHV0PEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgb25UYWJPdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYk91dC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gIXRoaXMuaXNGb2N1c2VkO1xuICAgIH1cbn1cblxuLyoqIERpcmVjdGl2ZSBmb3IgZWFzeSB1c2luZyBzdHlsZXMgb2YgaW5saW5lIGVkaXQgcGxhY2Vob2xkZXIgcHVibGljbHkuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUlubGluZUVkaXRQbGFjZWhvbGRlcl0nLFxuICAgIGV4cG9ydEFzOiAna2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWlubGluZS1lZGl0X19wbGFjZWhvbGRlcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUlubGluZUVkaXRQbGFjZWhvbGRlciB7fVxuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGVuaGFuY2VzIGVsZW1lbnQgYWN0aW5nIGFzIGRyb3Bkb3duIHRyaWdnZXIsXG4gKiB2aXN1YWxseSBpbmRpY2F0aW5nIHRoZSBhY3RpdmUgc3RhdGUgd2l0aCB0aGUgYGticS1hY3RpdmVgIGNsYXNzLlxuICogQWxzbywgaXQgcHJldmVudHMgY2xpY2sva2V5ZG93biBldmVudHMgZnJvbSBiZWluZyBwcm9wYWdhdGVkIHRvIGRpc2FibGUgbW9kZSB0b2dnbGluZyBvZiBwYXJlbnQgY29tcG9uZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUlubGluZUVkaXRNZW51XScsXG4gICAgZXhwb3J0QXM6ICdrYnFJbmxpbmVFZGl0TWVudScsXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAnYnV0dG9uJyxcbiAgICAgICAgY2xhc3M6ICdrYnEtaW5saW5lLWVkaXRfX21lbnUnLFxuICAgICAgICAnW2NsYXNzLmticS1hY3RpdmVdJzogJ2Ryb3Bkb3duVHJpZ2dlcj8ub3BlbmVkJyxcbiAgICAgICAgJyhjbGljayknOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpJyxcbiAgICAgICAgJyhrZXlkb3duLmVudGVyKSc6ICckZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCknLFxuICAgICAgICAnKGtleWRvd24uc3BhY2UpJzogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUlubGluZUVkaXRNZW51IHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93blRyaWdnZXIgPSBpbmplY3QoS2JxRHJvcGRvd25UcmlnZ2VyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEN1c3RvbWl6YWJsZSBjb21wb25lbnQgdGhhdCBlbmFibGVzIGVkaXQtaW4tcGxhY2UgbG9naWMgZm9yIHNwZWNpZmllZCBjb250cm9sIGFuZCBpdCdzIHZpZXcuXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBwcm9qZWN0aW5nIGVkaXQvdmlldyBtb2RlIHRlbXBsYXRlcyBhbmQgYWRkcyBrZXlib2FyZC9wb2ludGVyIGhhbmRsZXJzLlxuICogRWRpdCBtb2RlIG9wZW5zIGluIGEgcG9zaXRpb25lZCBvdmVybGF5IHRoYXQgbWF0Y2hlcyB0aGUgdmlldyBtb2RlIHdpZHRoIG9yIGNhbiBiZSBjdXN0b21pemVkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWlubGluZS1lZGl0JyxcbiAgICBleHBvcnRBczogJ2ticUlubGluZUVkaXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbmxpbmUtZWRpdC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbmxpbmUtZWRpdC5zY3NzJywgJy4vaW5saW5lLWVkaXQtdG9rZW5zLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiBiYXNlQ2xhc3MsXG4gICAgICAgICdbY2xhc3NdJzogJ2NsYXNzTmFtZSgpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5saW5lLWVkaXRfd2l0aC1sYWJlbF0nOiAnISFsYWJlbCgpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5saW5lLWVkaXRfd2l0aC1tZW51XSc6ICchIW1lbnUoKScsXG4gICAgICAgICdbY2xhc3Mua2JxLWlubGluZS1lZGl0X2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duLmVudGVyKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uc3BhY2UpJzogJ29uQ2xpY2soJGV2ZW50KSdcbiAgICB9LFxuICAgIGhvc3REaXJlY3RpdmVzOiBbS2JxRm9jdXNNb25pdG9yXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gICAgICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgICAgIEticUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgS2JxSWNvbixcbiAgICAgICAgS2JxVG9vbHRpcFRyaWdnZXIsXG4gICAgICAgIEticUZvY3VzUmVnaW9uSXRlbSxcbiAgICAgICAgQ2RrVHJhcEZvY3VzLFxuICAgICAgICBDZGtNb25pdG9yRm9jdXNcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFtLQlFfSU5MSU5FX0VESVRfQUNUSU9OX0JVVFRPTlNfQU5JTUFUSU9OXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEticUlubGluZUVkaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBrYnFGb2N1c01vbml0b3IgPSBpbmplY3QoS2JxRm9jdXNNb25pdG9yLCB7IGhvc3Q6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IHNhdmUvY2FuY2VsIGFjdGlvbiBidXR0b25zIGluIGVkaXQgbW9kZS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNob3dBY3Rpb25zID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzaG93IHZhbGlkYXRpb24gZXJyb3IgdG9vbHRpcHMgb24gc2F2ZSBhdHRlbXB0cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2hvd1Rvb2x0aXBPbkVycm9yID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG4gICAgLyoqIEN1c3RvbSB2YWxpZGF0aW9uIHRvb2x0aXAgbWVzc2FnZS4gKi9cbiAgICByZWFkb25seSB2YWxpZGF0aW9uVG9vbHRpcCA9IGlucHV0PHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIGNvbXBvbmVudCwgcHJldmVudGluZyBpbnRlcmFjdGlvbiBhbmQgbW9kZSBzd2l0Y2hpbmcuIE9ubHkgYWxsb3dzIG1lbnUgZHJvcGRvd24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKiogQ3VzdG9tIHdpZHRoIGluIHBpeGVscyBmb3IgdGhlIGVkaXQgbW9kZSBvdmVybGF5LiBBdXRvLWNhbGN1bGF0ZWQgaWYgbm90IHNldC4gKi9cbiAgICByZWFkb25seSBlZGl0TW9kZVdpZHRoID0gaW5wdXQodW5kZWZpbmVkLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuICAgIC8qKiBVc2VyLWRlZmluZWQgdG9vbHRpcCBwbGFjZW1lbnQgKi9cbiAgICByZWFkb25seSB0b29sdGlwUGxhY2VtZW50ID0gaW5wdXQ8UG9wVXBQbGFjZW1lbnRzPigpO1xuICAgIC8qKiBIYW5kbGVyIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlICovXG4gICAgcmVhZG9ubHkgZ2V0VmFsdWVIYW5kbGVyID0gaW5wdXQ8KCkgPT4gdW5rbm93bj4oKTtcbiAgICAvKiogSGFuZGxlciBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIHZhbHVlICovXG4gICAgcmVhZG9ubHkgc2V0VmFsdWVIYW5kbGVyID0gaW5wdXQ8KHZhbHVlOiBhbnkpID0+IHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogQ3VzdG9taXphYmxlIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIHNhdmluZyBvbiBlbnRlciBhdmFpbGFibGUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY2FuU2F2ZU9uRW50ZXIgPSBpbnB1dChcbiAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiA9PlxuICAgICAgICAgICAgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdjdHJsS2V5JywgJ21ldGFLZXknKSB8fCAhKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpXG4gICAgKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGlubGluZSBlZGl0IGlzIHNhdmVkIHN1Y2Nlc3NmdWxseS4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2F2ZWQgPSBvdXRwdXQoKTtcbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbmxpbmUgZWRpdCBpcyBjYW5jZWxlZCBhbmQgY2hhbmdlcyBhcmUgZGlzY2FyZGVkLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5jZWxlZCA9IG91dHB1dCgpO1xuICAgIC8qKiBFbWl0dGVkIHdoZW4gbW9kZSBzd2l0Y2hlZCB0byBlZGl0L3ZpZXcgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZUNoYW5nZSA9IG91dHB1dDwndmlldycgfCAnZWRpdCc+KCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtZW51ID0gY29udGVudENoaWxkKEticUlubGluZUVkaXRNZW51KTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsYWJlbCA9IGNvbnRlbnRDaGlsZChLYnFMYWJlbCk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkUmVmID0gY29udGVudENoaWxkKEticUZvcm1GaWVsZCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5T3JpZ2luID0gdmlld0NoaWxkLnJlcXVpcmVkKENka092ZXJsYXlPcmlnaW4pO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvb2x0aXBUcmlnZ2VyID0gdmlld0NoaWxkKEticVRvb2x0aXBUcmlnZ2VyKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5RGlyID0gdmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlZ2lvbkl0ZW1zID0gdmlld0NoaWxkcmVuKEticUZvY3VzUmVnaW9uSXRlbSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCd2aWV3JyB8ICdlZGl0Jz4oJ3ZpZXcnKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5V2lkdGggPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nPignJyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3kgPSBzaWduYWw8U2Nyb2xsU3RyYXRlZ3k+KHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBtb2RlQXNSZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsYXNzTmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke2Jhc2VDbGFzc31fJHt0aGlzLm1vZGUoKX1gKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0VkaXRNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlKCkgPT09ICdlZGl0Jyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFiSW5kZXggPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc0VkaXRNb2RlKCkgfHwgdGhpcy5kaXNhYmxlZCgpID8gLTEgOiAwKSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwbGFjZW1lbnRzID0gUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sb3JzID0gS2JxQ29tcG9uZW50Q29sb3JzO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IHVua25vd247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMubW9kZSlcbiAgICAgICAgICAgIC5waXBlKHNraXAoMSksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY3VycmVudE1vZGUpID0+IHRoaXMubW9kZUNoYW5nZS5lbWl0KGN1cnJlbnRNb2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgdG9nZ2xlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlLnVwZGF0ZSgobW9kZSkgPT4gKG1vZGUgPT09ICd2aWV3JyA/ICdlZGl0JyA6ICd2aWV3JykpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc0VkaXRNb2RlKCkpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5rYnFGb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5vdmVybGF5T3JpZ2luKCkuZWxlbWVudFJlZiwgJ3Byb2dyYW0nKTtcblxuICAgICAgICB0aGlzLnRvZ2dsZU1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbkF0dGFjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5V2lkdGgoKTtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5S2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICAgICAgY29uc3QgZm9ybUZpZWxkUmVmID0gdGhpcy5mb3JtRmllbGRSZWYoKTtcblxuICAgICAgICBmb3JtRmllbGRSZWY/LmNvbnRyb2wuc3RhdGVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vdmVybGF5RGlyKCkhLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcFRyaWdnZXIgPSB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFRyaWdnZXI/LmlzT3BlbiAmJiB0b29sdGlwVHJpZ2dlcj8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkUmVmPy5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSBpbnB1dD8uc2VsZWN0KCk7XG5cbiAgICAgICAgICAgIGlmIChmb3JtRmllbGRSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5QYW5lbChmb3JtRmllbGRSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBzYXZlKCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSW52YWxpZCgpKSB7XG4gICAgICAgICAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5zaG93VG9vbHRpcE9uRXJyb3IoKSAmJiB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk/LnNob3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5zYXZlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5pbml0aWFsVmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICB0aGlzLmNhbmNlbGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbk92ZXJsYXlLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUZpZWxkUmVmKCk/LmNvbnRyb2wubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIGNvbnN0IGNhblNhdmVPbkVudGVyID0gdGhpcy5jYW5TYXZlT25FbnRlcigpO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzoge1xuICAgICAgICAgICAgICAgIGlmIChjYW5TYXZlT25FbnRlcihldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtRmllbGRSZWYoKT8uY29udHJvbC5uZ0NvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNhdmUoZXZlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIFRhYiBrZXkgbGlzdGVuZXJzIG9uIHJlZ2lvbiBpdGVtcy5cbiAgICAgKiBTaW5nbGUgaXRlbTogVGFiIG1vdmVzIHRvIG5leHQgZWRpdC5cbiAgICAgKiBNdWx0aXBsZSBpdGVtczogU2hpZnQrVGFiIG9uIGZpcnN0IG9yIFRhYiBvbiBsYXN0IG1vdmVzIHRvIG5leHQgZWRpdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldE92ZXJsYXlLZXlkb3duTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZ2lvbkl0ZW1zID0gdGhpcy5yZWdpb25JdGVtcygpO1xuXG4gICAgICAgIGlmIChyZWdpb25JdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaXJzdEl0ZW0gPSByZWdpb25JdGVtcy5hdCgwKTtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSByZWdpb25JdGVtcy5hdChyZWdpb25JdGVtcy5sZW5ndGggLSAxKTtcblxuICAgICAgICBpZiAocmVnaW9uSXRlbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBmaXJzdEl0ZW0/LnRhYk91dC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLnNhdmVBbmRGb2N1c05leHRJbmxpbmVFZGl0KGV2ZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaXJzdEl0ZW0/LnRhYk91dC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiBoYXNNb2RpZmllcktleShldmVudCwgJ3NoaWZ0S2V5JykgJiYgdGhpcy5zYXZlQW5kRm9jdXNOZXh0SW5saW5lRWRpdChldmVudClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxhc3RJdGVtPy50YWJPdXQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChldmVudCkgPT4gIWhhc01vZGlmaWVyS2V5KGV2ZW50LCAnc2hpZnRLZXknKSAmJiB0aGlzLnNhdmVBbmRGb2N1c05leHRJbmxpbmVFZGl0KGV2ZW50KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZUFuZEZvY3VzTmV4dElubGluZUVkaXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuaXNJbnZhbGlkKCkpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50Py5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdrYnEtaW5saW5lLWVkaXRfX2ZvY3VzX2NvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgeyBrZXk6ICdFbnRlcicgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybUZpZWxkUmVmID0gdGhpcy5mb3JtRmllbGRSZWYoKTtcblxuICAgICAgICBpZiAoIWZvcm1GaWVsZFJlZikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBmb3JtRmllbGRSZWYuaW52YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbHVlKCkge1xuICAgICAgICBjb25zdCBnZXRWYWx1ZUhhbmRsZXIgPSB0aGlzLmdldFZhbHVlSGFuZGxlcigpO1xuXG4gICAgICAgIGlmIChnZXRWYWx1ZUhhbmRsZXIpIHJldHVybiBnZXRWYWx1ZUhhbmRsZXIoKTtcblxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb2VyY2VDb250cm9sKCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2w/LnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWU8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlSGFuZGxlcigpO1xuXG4gICAgICAgIGlmIChzZXRWYWx1ZSkge1xuICAgICAgICAgICAgc2V0VmFsdWUodGhpcy5pbml0aWFsVmFsdWUpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb2VyY2VDb250cm9sKCk7XG5cbiAgICAgICAgaWYgKCFjb250cm9sKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2VyY2VDb250cm9sKCkge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRSZWYgPSB0aGlzLmZvcm1GaWVsZFJlZigpO1xuXG4gICAgICAgIGlmICghZm9ybUZpZWxkUmVmKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAoZm9ybUZpZWxkUmVmLmNvbnRyb2wubmdDb250cm9sIGluc3RhbmNlb2YgTmdDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybUZpZWxkUmVmLmNvbnRyb2wubmdDb250cm9sLmNvbnRyb2w7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybUZpZWxkUmVmLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRPdmVybGF5V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVkaXRNb2RlV2lkdGggPSB0aGlzLmVkaXRNb2RlV2lkdGgoKTtcblxuICAgICAgICBpZiAoZWRpdE1vZGVXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5V2lkdGguc2V0KGVkaXRNb2RlV2lkdGgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCA9IHRoaXMubGFiZWwoKVxuICAgICAgICAgICAgPyB0aGlzLm92ZXJsYXlPcmlnaW4oKS5lbGVtZW50UmVmXG4gICAgICAgICAgICA6IHRoaXMuZWxlbWVudFJlZjtcblxuICAgICAgICB0aGlzLm92ZXJsYXlXaWR0aC5zZXQoZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA/PyAnJyk7XG4gICAgfVxuXG4gICAgLy8gQFRPRE8gcmVmYWN0b3IgdGhpcyAoI0RTLTQxODEpXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWwoZm9ybUZpZWxkUmVmOiBLYnFGb3JtRmllbGQpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1GaWVsZFJlZi5jb250cm9sO1xuXG4gICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgS2JxU2VsZWN0IHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBLYnFUcmVlU2VsZWN0KSB7XG4gICAgICAgICAgICBjb250cm9sLm9wZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgS2JxQXV0b2NvbXBsZXRlVHJpZ2dlcikge1xuICAgICAgICAgICAgY29udHJvbC5vcGVuUGFuZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5wdXROYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlEaXIoKT8ub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dDpub3QoW3R5cGU9XCJmaWxlXCJdKSx0ZXh0YXJlYScpID8/IG51bGw7XG4gICAgfVxufVxuIiwiQGlmIChsYWJlbCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fbGFiZWxcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWxhYmVsXCIgLz5cbiAgICA8L2Rpdj5cbn1cblxuPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fdmlldy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxSW5saW5lRWRpdFZpZXdNb2RlXVwiIC8+XG5cbiAgICA8ZGl2XG4gICAgICAgICNvdmVybGF5T3JpZ2luXG4gICAgICAgIGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19mb2N1c19jb250YWluZXIga2JxLWlubGluZS1lZGl0X19vdmVybGF5LW9yaWdpblwiXG4gICAgICAgIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuXG4gICAgQGlmIChtZW51KCkgJiYgbW9kZSgpID09PSAndmlldycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fbWVudS1tYXNrIGticS1tYXNrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19tZW51LW1hc2stZmFkZSBrYnEtbWFza19fZmFkZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fbWVudS1tYXNrLWNvbnRhaW5lciBrYnEtbWFza19fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticUlubGluZUVkaXRNZW51XVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNFZGl0TW9kZSgpXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3ZlcmxheU9yaWdpblwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WV09XCItb3ZlcmxheU9yaWdpbi5vZmZzZXRIZWlnaHRcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cIm92ZXJsYXlXaWR0aCgpXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlEaXNhYmxlQ2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3koKVwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICAgICAgICAoYXR0YWNoKT1cIm9uQXR0YWNoKClcIlxuICAgICAgICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAob3ZlcmxheUtleWRvd24pPVwib25PdmVybGF5S2V5ZG93bigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX3BhbmVsXCIgY2RrVHJhcEZvY3VzIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19jb250cm9sLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAga2JxRm9jdXNSZWdpb25JdGVtXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBDb2xvcl09XCJjb2xvcnMuRXJyb3JcIlxuICAgICAgICAgICAgICAgIFtrYnFUb29sdGlwXT1cInZhbGlkYXRpb25Ub29sdGlwKCkgPz8gJydcIlxuICAgICAgICAgICAgICAgIFtrYnFUb29sdGlwQXJyb3ddPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtrYnFUcmlnZ2VyXT1cIidtYW51YWwnXCJcbiAgICAgICAgICAgICAgICBba2JxUGxhY2VtZW50XT1cInRvb2x0aXBQbGFjZW1lbnQoKSA/PyBwbGFjZW1lbnRzLlRvcExlZnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFJbmxpbmVFZGl0RWRpdE1vZGVdXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHNob3dBY3Rpb25zKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19hY3Rpb24tYnV0dG9uc1wiIHJvbGU9XCJncm91cFwiIFtAcGFuZWxBbmltYXRpb25dPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGticS1idXR0b24gW2NvbG9yXT1cIidjb250cmFzdCdcIiAoY2xpY2spPVwic2F2ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1jaGVja18xNlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGticUZvY3VzUmVnaW9uSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidjb250cmFzdC1mYWRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS14bWFya18xNlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==