@kirbydesign/designsystem 10.1.3 → 10.2.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 (386) hide show
  1. package/avatar/avatar.component.d.ts +2 -1
  2. package/button/button.component.d.ts +1 -0
  3. package/calendar/calendar.component.d.ts +28 -18
  4. package/calendar/interfaces/calendar-day.d.ts +17 -0
  5. package/calendar/public_api.d.ts +1 -1
  6. package/chart/shared/chart-config-service/chart-config.service.d.ts +1 -1
  7. package/empty-state/empty-state.component.d.ts +10 -3
  8. package/esm2022/accordion/accordion-item.component.mjs +4 -4
  9. package/esm2022/accordion/accordion.directive.mjs +4 -4
  10. package/esm2022/accordion/accordion.module.mjs +5 -5
  11. package/esm2022/action-group/action-group.component.mjs +4 -4
  12. package/esm2022/avatar/avatar.component.mjs +7 -5
  13. package/esm2022/badge/badge.component.mjs +4 -4
  14. package/esm2022/button/button.component.mjs +18 -6
  15. package/esm2022/calendar/calendar.component.mjs +168 -101
  16. package/esm2022/calendar/interfaces/calendar-day.mjs +2 -0
  17. package/esm2022/calendar/interfaces/calendar-year-navigator-config.mjs +2 -0
  18. package/esm2022/calendar/public_api.mjs +1 -1
  19. package/esm2022/card/card-as-button/card-as-button.directive.mjs +4 -4
  20. package/esm2022/card/card-footer/card-footer.component.mjs +4 -4
  21. package/esm2022/card/card-header/card-header.component.mjs +4 -4
  22. package/esm2022/card/card.component.mjs +4 -4
  23. package/esm2022/card/card.module.mjs +5 -5
  24. package/esm2022/chart/chart/chart.component.mjs +4 -4
  25. package/esm2022/chart/charts.module.mjs +5 -5
  26. package/esm2022/chart/shared/base-chart/base-chart.component.mjs +4 -4
  27. package/esm2022/chart/shared/chart-config-service/chart-config.service.mjs +4 -4
  28. package/esm2022/chart/shared/chart-js-service/chart-js.service.mjs +4 -4
  29. package/esm2022/chart/stock-chart/stock-chart-js.service.mjs +4 -4
  30. package/esm2022/chart/stock-chart/stock-chart.component.mjs +4 -4
  31. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  32. package/esm2022/data-table/data-table.module.mjs +5 -5
  33. package/esm2022/data-table/sortable/sortable.component.mjs +4 -4
  34. package/esm2022/divider/divider.component.mjs +4 -4
  35. package/esm2022/dropdown/dropdown.component.mjs +6 -6
  36. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  37. package/esm2022/dropdown/keyboard-handler.service.mjs +4 -4
  38. package/esm2022/empty-state/empty-state.component.mjs +31 -7
  39. package/esm2022/empty-state/empty-state.module.mjs +5 -5
  40. package/esm2022/fab-sheet/fab-sheet.component.mjs +4 -4
  41. package/esm2022/flag/flag.component.mjs +4 -4
  42. package/esm2022/form-field/directives/affix/affix.directive.mjs +4 -4
  43. package/esm2022/form-field/directives/date/date-input.directive.mjs +4 -4
  44. package/esm2022/form-field/directives/decimal-mask/decimal-mask.directive.mjs +4 -4
  45. package/esm2022/form-field/form-field-message/form-field-message.component.mjs +4 -4
  46. package/esm2022/form-field/form-field.component.mjs +4 -4
  47. package/esm2022/form-field/form-field.module.mjs +8 -7
  48. package/esm2022/form-field/input/input.component.mjs +4 -4
  49. package/esm2022/form-field/input-counter/input-counter.component.mjs +4 -4
  50. package/esm2022/form-field/textarea/textarea.component.mjs +4 -4
  51. package/esm2022/header/header.component.mjs +16 -16
  52. package/esm2022/header/header.module.mjs +5 -5
  53. package/esm2022/helpers/content-mutation-observer.mjs +50 -0
  54. package/esm2022/helpers/element-ancestor-utils.mjs +33 -0
  55. package/esm2022/helpers/ionic-element-part-helper.mjs +4 -4
  56. package/esm2022/helpers/line-clamp-helper.mjs +4 -4
  57. package/esm2022/helpers/platform.service.mjs +4 -4
  58. package/esm2022/helpers/public_api.mjs +3 -2
  59. package/esm2022/icon/icon-registry.service.mjs +4 -4
  60. package/esm2022/icon/icon.component.mjs +4 -4
  61. package/esm2022/icon/icon.module.mjs +5 -5
  62. package/esm2022/item/item.component.mjs +13 -9
  63. package/esm2022/item/item.module.mjs +5 -5
  64. package/esm2022/item/label/label.component.mjs +5 -5
  65. package/esm2022/item-group/item-group.component.mjs +4 -4
  66. package/esm2022/item-sliding/item-sliding.component.mjs +4 -4
  67. package/esm2022/kirby-app/kirby-app.component.mjs +4 -4
  68. package/esm2022/kirby-app/kirby-app.module.mjs +5 -5
  69. package/esm2022/kirby-ionic-module/kirby-ionic.module.mjs +5 -5
  70. package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +34 -7
  71. package/esm2022/lib/directives/key-handler/key-handler.directive.mjs +4 -4
  72. package/esm2022/lib/directives/modal-router-link/modal-router-link.directive.mjs +4 -4
  73. package/esm2022/lib/kirby.module.mjs +5 -5
  74. package/esm2022/list/directives/infinite-scroll.directive.mjs +4 -4
  75. package/esm2022/list/directives/list-item-color.directive.mjs +4 -4
  76. package/esm2022/list/helpers/list-helper.mjs +4 -4
  77. package/esm2022/list/list-experimental/list-experimental.component.mjs +4 -4
  78. package/esm2022/list/list-header/list-header.component.mjs +4 -4
  79. package/esm2022/list/list-item/list-item.component.mjs +5 -5
  80. package/esm2022/list/list-section-header/list-section-header.component.mjs +4 -4
  81. package/esm2022/list/list.component.mjs +5 -5
  82. package/esm2022/list/list.directive.mjs +13 -13
  83. package/esm2022/list/list.module.mjs +5 -5
  84. package/esm2022/loading-overlay/loading-overlay.component.mjs +4 -4
  85. package/esm2022/loading-overlay/loading-overlay.service.mjs +4 -4
  86. package/esm2022/menu/menu.component.mjs +215 -12
  87. package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +4 -4
  88. package/esm2022/modal/modal/alert/alert.component.mjs +4 -4
  89. package/esm2022/modal/modal/footer/modal-footer.component.mjs +4 -4
  90. package/esm2022/modal/modal/modal-component/modal.component.mjs +18 -8
  91. package/esm2022/modal/modal/services/action-sheet.helper.mjs +4 -4
  92. package/esm2022/modal/modal/services/alert.helper.mjs +4 -4
  93. package/esm2022/modal/modal/services/can-dismiss.helper.mjs +4 -4
  94. package/esm2022/modal/modal/services/modal-animation-builder.service.mjs +4 -4
  95. package/esm2022/modal/modal/services/modal.controller.mjs +4 -4
  96. package/esm2022/modal/modal/services/modal.helper.mjs +5 -4
  97. package/esm2022/modal/modal-navigation.service.mjs +4 -4
  98. package/esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.mjs +19 -10
  99. package/esm2022/modal/modal-wrapper/config/modal-config.mjs +1 -1
  100. package/esm2022/modal/modal-wrapper/modal-elements-mover.delegate.mjs +1 -1
  101. package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +35 -12
  102. package/esm2022/modal/modal.interfaces.mjs +4 -4
  103. package/esm2022/page/page-footer/page-footer.component.mjs +4 -4
  104. package/esm2022/page/page.component.mjs +39 -38
  105. package/esm2022/page/page.module.mjs +5 -5
  106. package/esm2022/popover/popover.component.mjs +4 -4
  107. package/esm2022/progress-circle/progress-circle-ring.component.mjs +4 -4
  108. package/esm2022/progress-circle/progress-circle.component.mjs +4 -4
  109. package/esm2022/radio/radio-group/radio-group.component.mjs +4 -4
  110. package/esm2022/radio/radio-module.mjs +5 -5
  111. package/esm2022/radio/radio.component.mjs +4 -4
  112. package/esm2022/range/range.component.mjs +4 -4
  113. package/esm2022/reorder-list/reorder-list.component.mjs +5 -5
  114. package/esm2022/router-outlet/router-outlet.component.mjs +4 -4
  115. package/esm2022/router-outlet/router-outlet.module.mjs +5 -5
  116. package/esm2022/section-header/section-header.component.mjs +4 -4
  117. package/esm2022/shared/component-loader.directive.mjs +4 -4
  118. package/esm2022/shared/fit-heading/fit-heading.directive.mjs +4 -4
  119. package/esm2022/shared/floating/floating.directive.mjs +4 -4
  120. package/esm2022/shared/portal/portal.directive.mjs +4 -4
  121. package/esm2022/shared/public_api.mjs +2 -1
  122. package/esm2022/shared/resize-observer/resize-observer.factory.mjs +4 -4
  123. package/esm2022/shared/resize-observer/resize-observer.service.mjs +4 -4
  124. package/esm2022/shared/theme-color/theme-color.directive.mjs +4 -4
  125. package/esm2022/shared/translation/translation.interface.mjs +2 -0
  126. package/esm2022/shared/translation/translation.service.mjs +37 -0
  127. package/esm2022/shared/translation/translations/da.mjs +11 -0
  128. package/esm2022/shared/translation/translations/en.mjs +11 -0
  129. package/esm2022/slide/slide-stretch-height.directive.mjs +4 -4
  130. package/esm2022/slide/slide.directive.mjs +4 -4
  131. package/esm2022/slide/slide.module.mjs +5 -5
  132. package/esm2022/slide/slides.component.mjs +16 -9
  133. package/esm2022/slide-button/slide-button.component.mjs +4 -4
  134. package/esm2022/spinner/spinner.component.mjs +4 -4
  135. package/esm2022/spinner/spinner.module.mjs +5 -5
  136. package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +4 -4
  137. package/esm2022/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +4 -4
  138. package/esm2022/tab-navigation/tab-navigation.module.mjs +5 -5
  139. package/esm2022/tabs/tab-button/tab-button.component.mjs +4 -4
  140. package/esm2022/tabs/tabs.component.mjs +4 -4
  141. package/esm2022/tabs/tabs.module.mjs +5 -5
  142. package/esm2022/tabs/tabs.service.mjs +4 -4
  143. package/esm2022/testing/test-helper.mjs +8 -5
  144. package/esm2022/testing-base/lib/components/mock.accordion-item.component.mjs +4 -4
  145. package/esm2022/testing-base/lib/components/mock.action-group.component.mjs +4 -4
  146. package/esm2022/testing-base/lib/components/mock.action-sheet.component.mjs +4 -4
  147. package/esm2022/testing-base/lib/components/mock.alert.component.mjs +4 -4
  148. package/esm2022/testing-base/lib/components/mock.avatar.component.mjs +4 -4
  149. package/esm2022/testing-base/lib/components/mock.badge.component.mjs +4 -4
  150. package/esm2022/testing-base/lib/components/mock.base-chart.component.mjs +4 -4
  151. package/esm2022/testing-base/lib/components/mock.button.component.mjs +4 -4
  152. package/esm2022/testing-base/lib/components/mock.calendar.component.mjs +4 -4
  153. package/esm2022/testing-base/lib/components/mock.card-footer.component.mjs +4 -4
  154. package/esm2022/testing-base/lib/components/mock.card-header.component.mjs +4 -4
  155. package/esm2022/testing-base/lib/components/mock.card.component.mjs +4 -4
  156. package/esm2022/testing-base/lib/components/mock.chart.component.mjs +4 -4
  157. package/esm2022/testing-base/lib/components/mock.checkbox.component.mjs +4 -4
  158. package/esm2022/testing-base/lib/components/mock.divider.component.mjs +4 -4
  159. package/esm2022/testing-base/lib/components/mock.dropdown.component.mjs +4 -4
  160. package/esm2022/testing-base/lib/components/mock.empty-state.component.mjs +4 -4
  161. package/esm2022/testing-base/lib/components/mock.fab-sheet.component.mjs +4 -4
  162. package/esm2022/testing-base/lib/components/mock.flag.component.mjs +4 -4
  163. package/esm2022/testing-base/lib/components/mock.form-field-message.component.mjs +4 -4
  164. package/esm2022/testing-base/lib/components/mock.form-field.component.mjs +4 -4
  165. package/esm2022/testing-base/lib/components/mock.header.component.mjs +10 -10
  166. package/esm2022/testing-base/lib/components/mock.icon.component.mjs +4 -4
  167. package/esm2022/testing-base/lib/components/mock.input-counter.component.mjs +4 -4
  168. package/esm2022/testing-base/lib/components/mock.input.component.mjs +4 -4
  169. package/esm2022/testing-base/lib/components/mock.item-group.component.mjs +4 -4
  170. package/esm2022/testing-base/lib/components/mock.item-sliding.component.mjs +4 -4
  171. package/esm2022/testing-base/lib/components/mock.item.component.mjs +4 -4
  172. package/esm2022/testing-base/lib/components/mock.kirby-app.component.mjs +4 -4
  173. package/esm2022/testing-base/lib/components/mock.label.component.mjs +4 -4
  174. package/esm2022/testing-base/lib/components/mock.list-experimental.component.mjs +4 -4
  175. package/esm2022/testing-base/lib/components/mock.list-header.component.mjs +4 -4
  176. package/esm2022/testing-base/lib/components/mock.list-item.component.mjs +4 -4
  177. package/esm2022/testing-base/lib/components/mock.list-section-header.component.mjs +4 -4
  178. package/esm2022/testing-base/lib/components/mock.list.component.mjs +4 -4
  179. package/esm2022/testing-base/lib/components/mock.loading-overlay.component.mjs +4 -4
  180. package/esm2022/testing-base/lib/components/mock.menu.component.mjs +4 -4
  181. package/esm2022/testing-base/lib/components/mock.modal-compact-wrapper.component.mjs +4 -4
  182. package/esm2022/testing-base/lib/components/mock.modal-footer.component.mjs +4 -4
  183. package/esm2022/testing-base/lib/components/mock.modal-wrapper.component.mjs +4 -4
  184. package/esm2022/testing-base/lib/components/mock.page-footer.component.mjs +4 -4
  185. package/esm2022/testing-base/lib/components/mock.page.component.mjs +34 -34
  186. package/esm2022/testing-base/lib/components/mock.popover.component.mjs +4 -4
  187. package/esm2022/testing-base/lib/components/mock.progress-circle-ring.component.mjs +4 -4
  188. package/esm2022/testing-base/lib/components/mock.progress-circle.component.mjs +4 -4
  189. package/esm2022/testing-base/lib/components/mock.radio-group.component.mjs +4 -4
  190. package/esm2022/testing-base/lib/components/mock.radio.component.mjs +4 -4
  191. package/esm2022/testing-base/lib/components/mock.range.component.mjs +4 -4
  192. package/esm2022/testing-base/lib/components/mock.reorder-list.component.mjs +4 -4
  193. package/esm2022/testing-base/lib/components/mock.router-outlet.component.mjs +4 -4
  194. package/esm2022/testing-base/lib/components/mock.section-header.component.mjs +4 -4
  195. package/esm2022/testing-base/lib/components/mock.segmented-control.component.mjs +4 -4
  196. package/esm2022/testing-base/lib/components/mock.slide-button.component.mjs +4 -4
  197. package/esm2022/testing-base/lib/components/mock.slides.component.mjs +4 -4
  198. package/esm2022/testing-base/lib/components/mock.spinner.component.mjs +4 -4
  199. package/esm2022/testing-base/lib/components/mock.stock-chart.component.mjs +4 -4
  200. package/esm2022/testing-base/lib/components/mock.tab-button.component.mjs +4 -4
  201. package/esm2022/testing-base/lib/components/mock.tab-navigation-item.component.mjs +4 -4
  202. package/esm2022/testing-base/lib/components/mock.tab-navigation.component.mjs +4 -4
  203. package/esm2022/testing-base/lib/components/mock.tabs.component.mjs +4 -4
  204. package/esm2022/testing-base/lib/components/mock.textarea.component.mjs +4 -4
  205. package/esm2022/testing-base/lib/components/mock.toggle-button.component.mjs +4 -4
  206. package/esm2022/testing-base/lib/components/mock.toggle.component.mjs +4 -4
  207. package/esm2022/testing-base/lib/directives/mock.accordion.directive.mjs +4 -4
  208. package/esm2022/testing-base/lib/directives/mock.affix.directive.mjs +4 -4
  209. package/esm2022/testing-base/lib/directives/mock.card-as-button.directive.mjs +4 -4
  210. package/esm2022/testing-base/lib/directives/mock.component-loader.directive.mjs +4 -4
  211. package/esm2022/testing-base/lib/directives/mock.date-input.directive.mjs +4 -4
  212. package/esm2022/testing-base/lib/directives/mock.decimal-mask.directive.mjs +4 -4
  213. package/esm2022/testing-base/lib/directives/mock.fit-heading.directive.mjs +4 -4
  214. package/esm2022/testing-base/lib/directives/mock.floating.directive.mjs +4 -4
  215. package/esm2022/testing-base/lib/directives/mock.infinite-scroll.directive.mjs +4 -4
  216. package/esm2022/testing-base/lib/directives/mock.key-handler.directive.mjs +4 -4
  217. package/esm2022/testing-base/lib/directives/mock.list-item-color.directive.mjs +4 -4
  218. package/esm2022/testing-base/lib/directives/mock.list.directive.mjs +13 -13
  219. package/esm2022/testing-base/lib/directives/mock.modal-router-link.directive.mjs +4 -4
  220. package/esm2022/testing-base/lib/directives/mock.portal.directive.mjs +4 -4
  221. package/esm2022/testing-base/lib/directives/mock.slide.directive.mjs +4 -4
  222. package/esm2022/testing-base/lib/directives/mock.theme-color.directive.mjs +4 -4
  223. package/esm2022/testing-base/lib/kirby-testing-base.module.mjs +5 -5
  224. package/esm2022/testing-jasmine/lib/kirby-testing.module.mjs +5 -5
  225. package/esm2022/testing-jest/lib/kirby-testing.module.mjs +5 -5
  226. package/esm2022/toast/services/toast.controller.mjs +4 -4
  227. package/esm2022/toast/services/toast.helper.mjs +4 -4
  228. package/esm2022/toggle/toggle.component.mjs +4 -4
  229. package/esm2022/toggle-button/toggle-button.component.mjs +4 -4
  230. package/esm2022/toggle-button/toggle-button.module.mjs +5 -5
  231. package/esm2022/types/public_api.mjs +2 -1
  232. package/esm2022/types/unobserve-fn.mjs +2 -0
  233. package/esm2022/types/window-ref.mjs +4 -4
  234. package/fesm2022/kirbydesign-designsystem-accordion.mjs +10 -10
  235. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  236. package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
  237. package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
  238. package/fesm2022/kirbydesign-designsystem-avatar.mjs +6 -4
  239. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  240. package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
  241. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  242. package/fesm2022/kirbydesign-designsystem-button.mjs +17 -5
  243. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  244. package/fesm2022/kirbydesign-designsystem-calendar.mjs +168 -177
  245. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  246. package/fesm2022/kirbydesign-designsystem-card.mjs +16 -16
  247. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  248. package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
  249. package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
  250. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
  251. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  252. package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
  253. package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
  254. package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
  255. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  256. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +12 -12
  257. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  258. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +33 -9
  259. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  260. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
  261. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  262. package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
  263. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  264. package/fesm2022/kirbydesign-designsystem-form-field.mjs +30 -30
  265. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  266. package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
  267. package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
  268. package/fesm2022/kirbydesign-designsystem-helpers.mjs +69 -10
  269. package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
  270. package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
  271. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  272. package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
  273. package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
  274. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
  275. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  276. package/fesm2022/kirbydesign-designsystem-item.mjs +20 -16
  277. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  278. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
  279. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
  280. package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs +4 -4
  281. package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs.map +1 -1
  282. package/fesm2022/kirbydesign-designsystem-list.mjs +42 -42
  283. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  284. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
  285. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/kirbydesign-designsystem-menu.mjs +214 -11
  287. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  288. package/fesm2022/kirbydesign-designsystem-modal.mjs +99 -57
  289. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  290. package/fesm2022/kirbydesign-designsystem-page.mjs +44 -43
  291. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  292. package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
  293. package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
  294. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
  295. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  296. package/fesm2022/kirbydesign-designsystem-radio.mjs +10 -10
  297. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  298. package/fesm2022/kirbydesign-designsystem-range.mjs +3 -3
  299. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  300. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +4 -4
  301. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  302. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
  303. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  304. package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
  305. package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
  306. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
  307. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  308. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
  309. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
  310. package/fesm2022/kirbydesign-designsystem-shared.mjs +71 -17
  311. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  312. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
  313. package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
  314. package/fesm2022/kirbydesign-designsystem-slide.mjs +24 -18
  315. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  316. package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
  317. package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
  318. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
  319. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  320. package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
  321. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  322. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +286 -286
  323. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  324. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
  325. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  326. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
  327. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  328. package/fesm2022/kirbydesign-designsystem-testing.mjs +7 -4
  329. package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
  330. package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
  331. package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
  332. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
  333. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
  334. package/fesm2022/kirbydesign-designsystem-toggle.mjs +3 -3
  335. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  336. package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
  337. package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
  338. package/fesm2022/kirbydesign-designsystem.mjs +43 -16
  339. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  340. package/form-field/form-field.module.d.ts +2 -1
  341. package/helpers/content-mutation-observer.d.ts +8 -0
  342. package/helpers/{element-has-ancestor.d.ts → element-ancestor-utils.d.ts} +1 -0
  343. package/helpers/public_api.d.ts +2 -1
  344. package/icons/svg/accounts-outline.svg +0 -2
  345. package/icons/svg/accounts.svg +0 -2
  346. package/icons/svg/backspace.svg +0 -2
  347. package/icons/svg/camera.svg +0 -2
  348. package/icons/svg/copy.svg +0 -2
  349. package/icons/svg/flag.svg +0 -2
  350. package/icons/svg/inbox-outline.svg +0 -2
  351. package/icons/svg/inbox.svg +0 -2
  352. package/icons/svg/information.svg +0 -2
  353. package/icons/svg/menu-outline.svg +0 -2
  354. package/icons/svg/menu.svg +0 -2
  355. package/icons/svg/person-outline.svg +0 -2
  356. package/icons/svg/person.svg +0 -2
  357. package/icons/svg/reorder.svg +0 -2
  358. package/icons/svg/support.svg +0 -2
  359. package/item/item.component.d.ts +3 -2
  360. package/lib/components/segmented-control/segmented-control.component.d.ts +4 -0
  361. package/menu/menu.component.d.ts +32 -8
  362. package/modal/modal/modal-component/modal.component.d.ts +6 -3
  363. package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +4 -2
  364. package/modal/modal-wrapper/config/modal-config.d.ts +3 -0
  365. package/modal/modal-wrapper/modal-wrapper.component.d.ts +8 -3
  366. package/package.json +4 -4
  367. package/page/page.component.d.ts +4 -3
  368. package/scss/base/_item-typography.scss +1 -0
  369. package/shared/public_api.d.ts +1 -0
  370. package/shared/translation/translation.interface.d.ts +10 -0
  371. package/shared/translation/translation.service.d.ts +12 -0
  372. package/shared/translation/translations/da.d.ts +2 -0
  373. package/shared/translation/translations/en.d.ts +2 -0
  374. package/slide/slides.component.d.ts +3 -1
  375. package/testing/test-helper.d.ts +1 -0
  376. package/types/public_api.d.ts +1 -0
  377. package/types/unobserve-fn.d.ts +1 -0
  378. package/calendar/helpers/calendar-cell.model.d.ts +0 -9
  379. package/calendar/helpers/calendar-options.model.d.ts +0 -9
  380. package/calendar/helpers/calendar.helper.d.ts +0 -24
  381. package/esm2022/calendar/helpers/calendar-cell.model.mjs +0 -2
  382. package/esm2022/calendar/helpers/calendar-options.model.mjs +0 -2
  383. package/esm2022/calendar/helpers/calendar.helper.mjs +0 -80
  384. package/esm2022/calendar/options/calendar-year-navigator-config.mjs +0 -2
  385. package/esm2022/helpers/element-has-ancestor.mjs +0 -24
  386. /package/calendar/{options → interfaces}/calendar-year-navigator-config.d.ts +0 -0
@@ -2,10 +2,10 @@ import { ChangeDetectorRef, Component, ContentChild, ElementRef, EnvironmentInje
2
2
  import { RouterModule, RouterOutlet } from '@angular/router';
3
3
  import { firstValueFrom, merge, Subject } from 'rxjs';
4
4
  import { debounceTime, first, map, takeUntil } from 'rxjs/operators';
5
- import { DesignTokenHelper } from '@kirbydesign/designsystem/helpers';
6
- import { ResizeObserverService } from '@kirbydesign/designsystem/shared';
5
+ import { DesignTokenHelper, getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';
6
+ import { ResizeObserverService, TranslationService } from '@kirbydesign/designsystem/shared';
7
7
  import { WindowRef } from '@kirbydesign/designsystem/types';
8
- import { PlatformService } from '@kirbydesign/designsystem/helpers';
8
+ import { observeContent, PlatformService } from '@kirbydesign/designsystem/helpers';
9
9
  import { CommonModule } from '@angular/common';
10
10
  import { IconModule } from '@kirbydesign/designsystem/icon';
11
11
  import { ButtonComponent } from '@kirbydesign/designsystem/button';
@@ -54,7 +54,7 @@ export class ModalWrapperComponent {
54
54
  get _isDrawer() {
55
55
  return this.config.flavor === 'drawer';
56
56
  }
57
- constructor(changeDetector, injector, elementRef, renderer, zone, resizeObserverService, windowRef, platform, canDismissHelper, environmentInjector) {
57
+ constructor(changeDetector, injector, elementRef, renderer, zone, resizeObserverService, windowRef, platform, canDismissHelper, environmentInjector, translations) {
58
58
  this.changeDetector = changeDetector;
59
59
  this.injector = injector;
60
60
  this.elementRef = elementRef;
@@ -65,6 +65,7 @@ export class ModalWrapperComponent {
65
65
  this.platform = platform;
66
66
  this.canDismissHelper = canDismissHelper;
67
67
  this.environmentInjector = environmentInjector;
68
+ this.translations = translations;
68
69
  this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);
69
70
  this.VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;
70
71
  this.keyboardVisible = false;
@@ -82,12 +83,19 @@ export class ModalWrapperComponent {
82
83
  this.destroy$ = new Subject();
83
84
  this.willClose$ = this.ionModalWillDismiss.pipe(first());
84
85
  this._currentFooter = null;
86
+ this.setAriaLabelFromTitleContent = () => {
87
+ const titleTextContent = this.ionTitleElement?.nativeElement.textContent;
88
+ if (this.ionModalDialog && titleTextContent) {
89
+ this.renderer.setAttribute(this.ionModalDialog, 'aria-label', titleTextContent);
90
+ }
91
+ };
85
92
  this.setViewportHeight();
86
93
  this.observeViewportResize();
87
94
  this.modalElementsMoverDelegate = new ModalElementsMoverDelegate(renderer, elementRef);
88
95
  }
89
96
  ngOnInit() {
90
97
  this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');
98
+ this.ionModalDialog = getIonModalDialogAncestor(this.elementRef.nativeElement);
91
99
  this.initializeSizing();
92
100
  this.initializeModalRoute();
93
101
  this.listenForIonModalDidPresent();
@@ -107,6 +115,7 @@ export class ModalWrapperComponent {
107
115
  if (this.toolbarButtonsQuery) {
108
116
  this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);
109
117
  }
118
+ this.setAriaLabel();
110
119
  }
111
120
  set currentFooter(footer) {
112
121
  if (footer !== null) {
@@ -257,6 +266,20 @@ export class ModalWrapperComponent {
257
266
  });
258
267
  });
259
268
  }
269
+ observeTitleContentChanges() {
270
+ this.mutationObserverUnobserveFn = observeContent(this.ionTitleElement.nativeElement, this.setAriaLabelFromTitleContent);
271
+ }
272
+ setAriaLabel() {
273
+ const ariaLabel = this.config.htmlAttributes?.['aria-label'];
274
+ const ionModalElementDialog = getIonModalDialogAncestor(this.ionModalElement);
275
+ if (ionModalElementDialog && ariaLabel) {
276
+ this.renderer.setAttribute(ionModalElementDialog, 'aria-label', ariaLabel);
277
+ }
278
+ else {
279
+ this.setAriaLabelFromTitleContent();
280
+ this.observeTitleContentChanges();
281
+ }
282
+ }
260
283
  scrollToTop(scrollDuration) {
261
284
  this.ionContent.scrollToTop(scrollDuration || 0);
262
285
  }
@@ -423,7 +446,7 @@ export class ModalWrapperComponent {
423
446
  this.routerOutlet.deactivate();
424
447
  }
425
448
  //clean up the observer
426
- delete this._mutationObserver;
449
+ this.mutationObserverUnobserveFn?.();
427
450
  this.intersectionObserver.disconnect();
428
451
  delete this._intersectionObserver;
429
452
  if (this.resizeObserverService) {
@@ -434,13 +457,13 @@ export class ModalWrapperComponent {
434
457
  this.destroy$.next();
435
458
  this.destroy$.complete();
436
459
  }
437
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.ResizeObserverService }, { token: i2.WindowRef }, { token: i3.PlatformService }, { token: i4.CanDismissHelper }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component }); }
438
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ModalWrapperComponent, isStandalone: true, selector: "kirby-modal-wrapper", inputs: { scrollDisabled: "scrollDisabled", config: "config", content: "content" }, host: { listeners: { "window:focus": "onFocusChange()", "window:focusout": "onFocusChange()", "window:ionKeyboardDidShow": "_onKeyboardShow($event.detail.keyboardHeight)", "window:keyboardWillShow": "_onKeyboardShow($event.keyboardHeight)", "window:ionKeyboardDidHide": "_onKeyboardHide()", "window:keyboardWillHide": "_onKeyboardHide()", "window:resize": "_onWindowResize()" }, properties: { "class.collapsible-title": "this._hasCollapsibleTitle", "class.drawer": "this._isDrawer" } }, providers: [
460
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.ResizeObserverService }, { token: i2.WindowRef }, { token: i3.PlatformService }, { token: i4.CanDismissHelper }, { token: i0.EnvironmentInjector }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
461
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalWrapperComponent, isStandalone: true, selector: "kirby-modal-wrapper", inputs: { scrollDisabled: "scrollDisabled", config: "config", content: "content" }, host: { listeners: { "window:focus": "onFocusChange()", "window:focusout": "onFocusChange()", "window:ionKeyboardDidShow": "_onKeyboardShow($event.detail.keyboardHeight)", "window:keyboardWillShow": "_onKeyboardShow($event.keyboardHeight)", "window:ionKeyboardDidHide": "_onKeyboardHide()", "window:keyboardWillHide": "_onKeyboardHide()", "window:resize": "_onWindowResize()" }, properties: { "class.collapsible-title": "this._hasCollapsibleTitle", "class.drawer": "this._isDrawer" } }, providers: [
439
462
  { provide: Modal, useExisting: ModalWrapperComponent },
440
463
  { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
441
- ], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i6.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
464
+ ], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n [attr.aria-label]=\"translations.get('close')\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i6.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
442
465
  }
443
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModalWrapperComponent, decorators: [{
466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalWrapperComponent, decorators: [{
444
467
  type: Component,
445
468
  args: [{ standalone: true, imports: [
446
469
  RouterModule,
@@ -455,8 +478,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
455
478
  ], selector: 'kirby-modal-wrapper', providers: [
456
479
  { provide: Modal, useExisting: ModalWrapperComponent },
457
480
  { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
458
- ], template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"] }]
459
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.ResizeObserverService }, { type: i2.WindowRef }, { type: i3.PlatformService }, { type: i4.CanDismissHelper }, { type: i0.EnvironmentInjector }], propDecorators: { _hasCollapsibleTitle: [{
481
+ ], template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n [attr.aria-label]=\"translations.get('close')\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"] }]
482
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.ResizeObserverService }, { type: i2.WindowRef }, { type: i3.PlatformService }, { type: i4.CanDismissHelper }, { type: i0.EnvironmentInjector }, { type: i1.TranslationService }], propDecorators: { _hasCollapsibleTitle: [{
460
483
  type: HostBinding,
461
484
  args: ['class.collapsible-title']
462
485
  }], scrollDisabled: [{
@@ -517,4 +540,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
517
540
  type: HostListener,
518
541
  args: ['window:resize']
519
542
  }] } });
520
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZUFB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ZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpcnN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG4gIFNjcm9sbERldGFpbCxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBNb2RhbCwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIE1vZGFsRWxlbWVudFR5cGUgfSBmcm9tICcuLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxDb25maWcsIFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnJztcbmltcG9ydCB7IENPTVBPTkVOVF9QUk9QUyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUgfSBmcm9tICcuL21vZGFsLWVsZW1lbnRzLW1vdmVyLmRlbGVnYXRlJztcblxuY29uc3QgY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMgPSAxMDtcbmNvbnN0IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzID0gNDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQ29udGVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE1vZGFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzaWJsZS10aXRsZScpXG4gIGdldCBfaGFzQ29sbGFwc2libGVUaXRsZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZz8uY29sbGFwc2VUaXRsZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBLRVlCT0FSRF9ISURFX0RFTEFZX0lOX01TID0gMTAwO1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBWSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRSA9IDEwMDtcblxuICBASW5wdXQoKSBzZXQgc2Nyb2xsRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsWSA9ICFkaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBjYW5EaXNtaXNzKGNhbGxiYWNrOiBTaG93QWxlcnRDYWxsYmFjaykge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNhbkRpc21pc3MgPSB0aGlzLmNhbkRpc21pc3NIZWxwZXIuZ2V0Q2FuRGlzbWlzc0NhbGxiYWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogTW9kYWxDb25maWc7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG4gIG1vZGFsV3JhcHBlckluamVjdG9yOiBJbmplY3RvcjtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgdG9vbGJhckJ1dHRvbnNRdWVyeTogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpb25Db250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVG9vbGJhciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Ub29sYmFyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVG9vbGJhckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvblRpdGxlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFRpdGxlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgX2NvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGdldCBjb250ZW50VGl0bGVFbGVtZW50KCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAvKiBcbiAgICAgICAgY29udGVudFRpdGxlRWxlbWVudCBoYXMgbmdJZiBkaXJlY3RpdmUgZGVwZW5kZW50IG9uIF9oYXNDb2xsYXBzaWJsZVRpdGxlOyB0cmlnZ2VyIENEIHRvIG1ha2Ugc3VyZSBlbGVtZW50IGhhcyBiZWVuIHF1ZXJpZWQuIFxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9uTW9kYWxEaWRQcmVzZW50ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgZGlkUHJlc2VudCA9IGZpcnN0VmFsdWVGcm9tKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbFdpbGxEaXNtaXNzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgd2lsbENsb3NlID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdmlld3BvcnRSZXNpemUkID0gdGhpcy52aWV3cG9ydFJlc2l6ZVxuICAgIC5hc09ic2VydmFibGUoKVxuICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLlZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FKSk7XG4gIHByaXZhdGUgX211dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgX2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBnZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIge1xuICAgIGlmICghdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyID0gdGhpcy5jcmVhdGVNb2RhbFdyYXBwZXJJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIH1cbiAgc2Nyb2xsRXZlbnRzRW5hYmxlZDogYm9vbGVhbjtcbiAgaXNDb250ZW50U2Nyb2xsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhd2VyJylcbiAgZ2V0IF9pc0RyYXdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJztcbiAgfVxuXG4gIHdpbGxDbG9zZSQgPSB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MucGlwZShmaXJzdCgpKTtcblxuICBwcml2YXRlIG1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlOiBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FuRGlzbWlzc0hlbHBlcjogQ2FuRGlzbWlzc0hlbHBlcixcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5zZXRWaWV3cG9ydEhlaWdodCgpO1xuICAgIHRoaXMub2JzZXJ2ZVZpZXdwb3J0UmVzaXplKCk7XG4gICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZSA9IG5ldyBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZShyZW5kZXJlciwgZWxlbWVudFJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlvbk1vZGFsRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2lvbi1tb2RhbCcpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNpemluZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1vZGFsUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpO1xuICAgIHRoaXMubGlzdGVuRm9yU2Nyb2xsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpO1xuICAgIHRoaXMuY29tcG9uZW50UHJvcHNJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENPTVBPTkVOVF9QUk9QUywgdXNlVmFsdWU6IHRoaXMuY29uZmlnLmNvbXBvbmVudFByb3BzIH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb2RhbFdyYXBwZXJJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkubWFwKChidXR0b25SZWYpID0+IGJ1dHRvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50Rm9vdGVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc2V0IGN1cnJlbnRGb290ZXIoZm9vdGVyOiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAoZm9vdGVyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKGZvb3RlciwgKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IFtwcm9wZXJ0eSwgcGl4ZWxWYWx1ZV0gPSBbXG4gICAgICAgICAgJy0tZm9vdGVyLWhlaWdodCcsXG4gICAgICAgICAgYCR7TWF0aC5mbG9vcihlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQpfXB4YCxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHByb3BlcnR5LCBwaXhlbFZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRGb290ZXIgPSBmb290ZXI7XG4gIH1cblxuICBwcml2YXRlIGdldCBjdXJyZW50Rm9vdGVyKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRGb290ZXI7XG4gIH1cblxuICBwdWJsaWMgYWRkTW9kYWxFbGVtZW50KHR5cGU6IE1vZGFsRWxlbWVudFR5cGUsIG1vZGFsRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBhZGRNb2RhbEVsZW1lbnRGbiA9IHtcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLkZPT1RFUl06ICgpID0+IHtcbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRGb290ZXIobW9kYWxFbGVtZW50KTtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9vdGVyID0gbW9kYWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB9LFxuICAgICAgW01vZGFsRWxlbWVudFR5cGUuVElUTEVdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZFRpdGxlKFxuICAgICAgICAgIG1vZGFsRWxlbWVudCxcbiAgICAgICAgICB0aGlzLmNvbnRlbnRUaXRsZUVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5faGFzQ29sbGFwc2libGVUaXRsZSxcbiAgICAgICAgICB0aGlzLmlvblRpdGxlRWxlbWVudFxuICAgICAgICApLFxuICAgICAgW01vZGFsRWxlbWVudFR5cGUuUEFHRV9QUk9HUkVTU106ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkUGFnZVByb2dyZXNzKG1vZGFsRWxlbWVudCwgdGhpcy5pb25Ub29sYmFyRWxlbWVudCksXG4gICAgfVt0eXBlXTtcblxuICAgIGFkZE1vZGFsRWxlbWVudEZuKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTW9kYWxFbGVtZW50KHR5cGU6IE1vZGFsRWxlbWVudFR5cGUsIG1vZGFsRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCByZW1vdmVNb2RhbEVsZW1lbnRGbiA9IHtcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLkZPT1RFUl06ICgpID0+IHtcbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5yZW1vdmVGb290ZXIobW9kYWxFbGVtZW50KTtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9vdGVyID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5USVRMRV06ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUucmVtb3ZlVGl0bGUoXG4gICAgICAgICAgbW9kYWxFbGVtZW50LFxuICAgICAgICAgIHRoaXMuX2hhc0NvbGxhcHNpYmxlVGl0bGUsXG4gICAgICAgICAgdGhpcy5jb250ZW50VGl0bGVFbGVtZW50XG4gICAgICAgICksXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5yZW1vdmVQYWdlUHJvZ3Jlc3MobW9kYWxFbGVtZW50KSxcbiAgICB9W3R5cGVdO1xuXG4gICAgcmVtb3ZlTW9kYWxFbGVtZW50Rm4oKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJlc2l6ZU1vZGFsVG9Nb2RhbFdyYXBwZXIoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicgJiYgdGhpcy5jb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgbWVyZ2UodGhpcy5pb25Nb2RhbERpZFByZXNlbnQsIHRoaXMudmlld3BvcnRSZXNpemUkKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIHdhaXQgZm9yIHRlbXBsYXRlIHRvIHJlbmRlclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9tUmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBkb2N1bWVudC5jbGllbnRXaWR0aCAtIGRvbVJlY3QucmlnaHQ7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW9uTW9kYWxFbGVtZW50LCAndG9wJywgYCR7ZG9tUmVjdC50b3B9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdsZWZ0JywgYCR7ZG9tUmVjdC5sZWZ0fXB4YCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW9uTW9kYWxFbGVtZW50LCAncmlnaHQnLCBgJHtyaWdodH1weGApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTaXppbmcoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnNpemUgPT09ICdmdWxsLWhlaWdodCcpIHJldHVybjtcbiAgICB0aGlzLnBhdGNoU2Nyb2xsRWxlbWVudFNpemUoKTtcbiAgICB0aGlzLm9ic2VydmVIZWFkZXJSZXNpemUoKTtcbiAgICB0aGlzLm9ic2VydmVNb2RhbEZ1bGxIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1vZGFsUm91dGUoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLm1vZGFsUm91dGUpIHtcbiAgICAgIHRoaXMub25TaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCh0aGlzLmNvbmZpZy5zaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQpO1xuICAgICAgLy8gTG9hZCBjb21wb25lbnQgZnJvbSBtb2RhbC1yb3V0ZSBpbnNpZGUgcm91dGVyLW91dGxldDpcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmFjdGl2YXRlV2l0aCh0aGlzLmNvbmZpZy5tb2RhbFJvdXRlLCB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25TaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZChzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQ/OiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlPikge1xuICAgIGlmICghc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkKSByZXR1cm47XG4gICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkLnBpcGUodGFrZVVudGlsKHRoaXMud2lsbENsb3NlJCkpLnN1YnNjcmliZSgocm91dGUpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlck91dGxldC5pc0FjdGl2YXRlZCkge1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5kZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlck91dGxldC5hY3RpdmF0ZVdpdGgocm91dGUsIHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoU2Nyb2xsRWxlbWVudFNpemUoKTogdm9pZCB7XG4gICAgY29uc3Qgc3VwcG9ydHNDc3NTaGFkb3dQYXJ0cyA9ICdwYXJ0JyBpbiBIVE1MRWxlbWVudC5wcm90b3R5cGU7XG4gICAgaWYgKHN1cHBvcnRzQ3NzU2hhZG93UGFydHMpIHJldHVybjtcbiAgICB0aGlzLmlvbkNvbnRlbnQuZ2V0U2Nyb2xsRWxlbWVudCgpLnRoZW4oKHNjcm9sbEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsRWxlbWVudCwgJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNjcm9sbEVsZW1lbnQsICdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBzY3JvbGxFbGVtZW50LFxuICAgICAgICAgICd0cmFuc2l0aW9uJyxcbiAgICAgICAgICAncGFkZGluZy1ib3R0b20gJyArIERlc2lnblRva2VuSGVscGVyLnNvZnRLZXlib2FyZFRyYW5zaXRpb25MZWF2ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTW9kYWxGdWxsSGVpZ2h0KCkge1xuICAgIGNvbnN0IGlvbk1vZGFsV3JhcHBlciA9IHRoaXMuZ2V0SW9uTW9kYWxXcmFwcGVyRWxlbWVudCgpO1xuXG4gICAgaWYgKCFpb25Nb2RhbFdyYXBwZXIpIHJldHVybjtcbiAgICAvLyBTdGFydCBvYnNlcnZpbmcgd2hlbiBtb2RhbCBoYXMgZmluaXNoZWQgYW5pbWF0aW5nOlxuICAgIHRoaXMuZGlkUHJlc2VudC50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShpb25Nb2RhbFdyYXBwZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gRXh0cmFjdGVkIGludG8gZnVuY3Rpb24gZm9yIGVhc2Ugb2YgdGVzdGluZ1xuICBwcml2YXRlIGdldElvbk1vZGFsV3JhcHBlckVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmlvbk1vZGFsRWxlbWVudC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC13cmFwcGVyJyk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVIZWFkZXJSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCwgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBbcHJvcGVydHksIHBpeGVsVmFsdWVdID0gWyctLWhlYWRlci1oZWlnaHQnLCBgJHtlbnRyeS5jb250ZW50UmVjdC5oZWlnaHR9cHhgXTtcbiAgICAgIHRoaXMuc2V0Q3NzVmFyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwcm9wZXJ0eSwgcGl4ZWxWYWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpIHtcbiAgICBpZiAodGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vZGFsRGlkUHJlc2VudCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JJb25Nb2RhbFdpbGxEaXNtaXNzKCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxXaWxsRGlzbWlzcycsICgpID0+IHtcbiAgICAgICAgdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLm5leHQoKTtcbiAgICAgICAgdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvclNjcm9sbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IGAobWluLXdpZHRoOiAke0Rlc2lnblRva2VuSGVscGVyLmJyZWFrcG9pbnRzLm1lZGl1bX0pYDtcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGNvbnN0IGVuYWJsZVNjcm9sbEV2ZW50cyA9IChsaXN0T3JFdmVudDogTWVkaWFRdWVyeUxpc3QgfCBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBpc0Rlc2t0b3AgPSBsaXN0T3JFdmVudC5tYXRjaGVzO1xuICAgICAgdGhpcy5zY3JvbGxFdmVudHNFbmFibGVkID0gIWlzRGVza3RvcDtcbiAgICB9O1xuXG4gICAgZW5hYmxlU2Nyb2xsRXZlbnRzKG1lZGlhUXVlcnkpO1xuICAgIG1lZGlhUXVlcnkub25jaGFuZ2UgPSBlbmFibGVTY3JvbGxFdmVudHM7XG5cbiAgICAvLyBSdW5zIHNjcm9sbCBzdWJzY3JpcHRpb24gb3V0c2lkZSB6b25lIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgQ0QgY3ljbGVzXG4gICAgLy8gd2hlbiBpb25TY3JvbGwgZW1pdHMuXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIC8vIEFsd2F5cyBzdWJzY3JpYmUgYXMgaW9uU2Nyb2xsIG9ubHkgZW1pdHMgd2hlbiBzY3JvbGxFdmVudHNFbmFibGVkIGlzIHRydWVcbiAgICAgIHRoaXMuaW9uQ29udGVudC5pb25TY3JvbGxcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKGNvbnRlbnRTY3JvbGxEZWJvdW5jZVRpbWVJbk1TKSxcbiAgICAgICAgICBtYXAoKGV2ZW50KSA9PiBldmVudC5kZXRhaWwpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHNjcm9sbEluZm86IFNjcm9sbERldGFpbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnRTY3JvbGxlZFBhc3RPZmZzZXQgPSBzY3JvbGxJbmZvLnNjcm9sbFRvcCA+IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzO1xuXG4gICAgICAgICAgaWYgKGNvbnRlbnRTY3JvbGxlZFBhc3RPZmZzZXQgIT09IHRoaXMuaXNDb250ZW50U2Nyb2xsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNDb250ZW50U2Nyb2xsZWQgPSBjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0O1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3Aoc2Nyb2xsRHVyYXRpb24gfHwgMCk7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvQm90dG9tKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoZGF0YT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmtleWJvYXJkVmlzaWJsZSB8fCAhdGhpcy52aWV3cG9ydFJlc2l6ZWQpIHtcbiAgICAgIC8vIE5vIGtleWJvYXJkIHZpc2libGUgb3Igdmlld3BvcnQgbm90IHJlc2l6ZWQ6XG4gICAgICAvLyBEaXNtaXNzIG1vZGFsIGFuZCByZXR1cm46XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpO1xuICAgICAgYXdhaXQgdGhpcy5pb25Nb2RhbEVsZW1lbnQuZGlzbWlzcyhkYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBLZXlib2FyZCB2aXNpYmxlOlxuICAgIC8vIEJsdXIgYWN0aXZlIGVsZW1lbnQgYW5kIHdhaXQgZm9yIGtleWJvYXJkIHRvIGhpZGUsXG4gICAgLy8gdGhlbiBkaXNtaXNzIG1vZGFsIGFuZCByZXR1cm46XG4gICAgdGhpcy5ibHVyQWN0aXZlRWxlbWVudCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmRlbGF5ZWRDbG9zZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuZGVsYXllZENsb3NlLFxuICAgICAgICBNb2RhbFdyYXBwZXJDb21wb25lbnQuS0VZQk9BUkRfSElERV9ERUxBWV9JTl9NU1xuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpmb2N1cycpXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpmb2N1c291dCcpXG4gIG9uRm9jdXNDaGFuZ2UoKSB7XG4gICAgLy8gVGhpcyBmaXhlcyBhbiB1bmRlc2lyZWQgc2Nyb2xsIGJlaGF2aW91ciBvY2N1cnJpbmcgb24ga2V5Ym9hcmQtdGFiYmluZyBiYWNrd2FyZHMgKHdpdGggc2hpZnQrdGFiKTpcbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHRoaXMuc2Nyb2xsWSB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzppb25LZXlib2FyZERpZFNob3cnLCBbJyRldmVudC5kZXRhaWwua2V5Ym9hcmRIZWlnaHQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbFNob3cnLCBbJyRldmVudC5rZXlib2FyZEhlaWdodCddKVxuICBfb25LZXlib2FyZFNob3coa2V5Ym9hcmRIZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzppb25LZXlib2FyZERpZEhpZGUnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5Ym9hcmRXaWxsSGlkZScpXG4gIF9vbktleWJvYXJkSGlkZSgpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQ29udGVudE1heEhlaWdodChmcmVlemU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaG91bGRUb2dnbGVNYXhIZWlnaHQgPVxuICAgICAgdGhpcy5jb25maWcuZmxhdm9yID09PSAnbW9kYWwnICYmIHRoaXMucGxhdGZvcm0uaXNQaGFibGV0T3JCaWdnZXIoKTtcbiAgICBpZiAoIXNob3VsZFRvZ2dsZU1heEhlaWdodCkgcmV0dXJuO1xuICAgIGNvbnN0IHN0eWxlID0gJ21heC1oZWlnaHQnO1xuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgaWYgKGZyZWV6ZSkge1xuICAgICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gY29udGVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRlbnRFbGVtZW50LCBzdHlsZSwgYCR7Y29udGVudEhlaWdodH1weGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRLZXlib2FyZFZpc2liaWxpdHkoa2V5Ym9hcmRIZWlnaHQ6IG51bWJlcikge1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeVZpc2libGUgPSBrZXlib2FyZEhlaWdodCA+IDAgJiYgdGhpcy5rZXlib2FyZFZpc2libGU7XG4gICAgY29uc3Qga2V5Ym9hcmRBbHJlYWR5SGlkZGVuID0ga2V5Ym9hcmRIZWlnaHQgPT09IDAgJiYgIXRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGlmIChrZXlib2FyZEFscmVhZHlWaXNpYmxlIHx8IGtleWJvYXJkQWxyZWFkeUhpZGRlbikgcmV0dXJuO1xuICAgIHRoaXMua2V5Ym9hcmRWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwO1xuICAgIHRoaXMudG9nZ2xlQ29udGVudE1heEhlaWdodCh0aGlzLmtleWJvYXJkVmlzaWJsZSk7XG4gICAgdGhpcy5zZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQ6IG51bWJlciwgZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmIChrZXlib2FyZEhlaWdodCA8PSAwIHx8ICFlbGVtZW50KSByZXR1cm4gMDtcbiAgICBjb25zdCBkaXN0YW5jZUZyb21WaWV3cG9ydEJvdHRvbVRvRWxlbWVudCA9IE1hdGguZmxvb3IoXG4gICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJIZWlnaHQgLSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbVxuICAgICk7XG4gICAgcmV0dXJuIE1hdGgubWF4KGtleWJvYXJkSGVpZ2h0IC0gZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDc3NWYXIoZWxlbWVudDogRWxlbWVudCwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlLCBSZW5kZXJlclN0eWxlRmxhZ3MyLkRhc2hDYXNlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNzc0NsYXNzKGVsZW1lbnQ6IEVsZW1lbnQsIGtsYXNzOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbikge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT5cbiAgICAgIGNvbmRpdGlvbiA/IHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudCwga2xhc3MpIDogdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCBrbGFzcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMudG9nZ2xlQ3NzQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZC12aXNpYmxlJywga2V5Ym9hcmRIZWlnaHQgPiAwKTtcbiAgICBjb25zdCBrZXlib2FyZE92ZXJsYXAgPSB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIGxldCBzbmFwRm9vdGVyVG9LZXlib2FyZCA9IGZhbHNlO1xuICAgIGNvbnN0IGVtYmVkZGVkRm9vdGVyRWxlbWVudCA9IHRoaXMuY3VycmVudEZvb3RlcjtcbiAgICBpZiAoZW1iZWRkZWRGb290ZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNldENzc1ZhcihlbWJlZGRlZEZvb3RlckVsZW1lbnQsICctLWtleWJvYXJkLW9mZnNldCcsIGAke2tleWJvYXJkT3ZlcmxhcH1weGApO1xuICAgICAgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBlbWJlZGRlZEZvb3RlckVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzbmFwLXRvLWtleWJvYXJkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudEVsZW1lbnQgPSB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY29udGVudEtleWJvYXJkT2Zmc2V0ID0gc25hcEZvb3RlclRvS2V5Ym9hcmRcbiAgICAgID8ga2V5Ym9hcmRPdmVybGFwXG4gICAgICA6IHRoaXMuZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0LCBjb250ZW50RWxlbWVudCk7XG4gICAgdGhpcy5zZXRDc3NWYXIoY29udGVudEVsZW1lbnQsICctLWtleWJvYXJkLW9mZnNldCcsIGAke2NvbnRlbnRLZXlib2FyZE9mZnNldH1weGApO1xuICB9XG5cbiAgb25IZWFkZXJUb3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMua2V5Ym9hcmRWaXNpYmxlKSB7XG4gICAgICBjb25zdCBpc1Rvb2xiYXJCdXR0b25Ub3VjaCA9IHRoaXMudG9vbGJhckJ1dHRvbnMuc29tZSgoYnV0dG9uKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAoZXZlbnQudGFyZ2V0ID09PSBidXR0b24gfHwgYnV0dG9uLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIC8vIFByZXZlbnQgYmx1ciBpZiBldmVudCB0YXJnZXQgaXMgYSB0b29sYmFyIGJ1dHRvblxuICAgICAgLy8gKHRvIGFsbG93IHRhcCBldmVudCB0byBmaXJlKTpcbiAgICAgIGlmICghaXNUb29sYmFyQnV0dG9uVG91Y2gpIHtcbiAgICAgICAgdGhpcy5ibHVyQWN0aXZlRWxlbWVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBfb25XaW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5zZXRWaWV3cG9ydEhlaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaWV3cG9ydEhlaWdodCgpIHtcbiAgICBjb25zdCB2aCA9ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJIZWlnaHQgKiAwLjAxKS50b0ZpeGVkKDIpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnLS12aCcsIGAke3ZofXB4YCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVWaWV3cG9ydFJlc2l6ZSgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5LCAoZW50cnkpID0+XG4gICAgICB0aGlzLm9uVmlld3BvcnRSZXNpemUoZW50cnkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25WaWV3cG9ydFJlc2l6ZShlbnRyeTogUmVzaXplT2JzZXJ2ZXJFbnRyeSkge1xuICAgIGlmICghdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQpIHtcbiAgICAgIC8vIEluaXRpYWwgb2JzZXJ2ZSBjYWxsYmFjaywgcmVnaXN0ZXIgaW5pdGlhbCBoZWlnaHQ6XG4gICAgICB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodCA9IGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZWQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQgIT09IHRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0O1xuICAgIGlmICghdGhpcy52aWV3cG9ydFJlc2l6ZWQpIHtcbiAgICAgIC8vIFdlIGFyZSBiYWNrIHRvIGluaXRpYWwgdmlldyBwb3J0IGhlaWdodCwgY2hlY2sgZm9yIHBlbmRpbmcgY2xvc2UgZnVuYzpcbiAgICAgIGlmICh0aGlzLmRlbGF5ZWRDbG9zZVRpbWVvdXRJZCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpO1xuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZpZXdwb3J0UmVzaXplLm5leHQoKTtcbiAgfVxuXG4gIGJsdXJBY3RpdmVFbGVtZW50KCkge1xuICAgIGNvbnN0IEJMVVJfVEFSR0VUX1NFTEVDVE9SID0gJ2lucHV0LCB0ZXh0YXJlYSc7XG4gICAgaWYgKHRoaXMua2V5Ym9hcmRWaXNpYmxlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJlxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Lm1hdGNoZXMoQkxVUl9UQVJHRVRfU0VMRUNUT1IpXG4gICAgICApIHtcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgY3JlYXRlTW9kYWxXcmFwcGVySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIge1xuICAgIGNvbnN0IGNhbGxiYWNrOiBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgIGNvbnN0IGlzVG91Y2hpbmdWaWV3cG9ydCA9IGVudHJ5LmludGVyc2VjdGlvblJhdGlvIDwgMTtcbiAgICAgIGlmIChpc1RvdWNoaW5nVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZnVsbC1oZWlnaHQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNldCBleHBsaWNpdCB2aWV3cG9ydCByb290IGlmIHdpdGhpbiBpZnJhbWU6XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5mcmFtZUVsZW1lbnRcbiAgICAgID8gKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudCBhcyBhbnkpIC8vIENhc3QgdG8gYGFueWAgYXMgVHlwZXNjcmlwdCBsaWIuZC50cyBkb2VzbnQgc3VwcG9ydCBEb2N1bWVudCB0eXBlIHlldFxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgICAgcm9vdE1hcmdpbjogJzBweCAwcHggLTFweCAwcHgnLCAvLyBgYm90dG9tOiAtMXB4YCBhbGxvd3MgY2hlY2tpbmcgd2hlbiB0aGUgbW9kYWwgYm90dG9tIGlzIHRvdWNoaW5nIHRoZSB2aWV3cG9ydFxuICAgICAgcm9vdCxcbiAgICAgIHRocmVzaG9sZDogWzAuOTksIDFdLFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJvdXRlck91dGxldC5pc0FjdGl2YXRlZCkge1xuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgICAvL2NsZWFuIHVwIHRoZSBvYnNlcnZlclxuICAgIGRlbGV0ZSB0aGlzLl9tdXRhdGlvbk9ic2VydmVyO1xuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIGRlbGV0ZSB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuY3VycmVudEZvb3Rlcik7XG4gICAgfVxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXIgW2NsYXNzLmNvbnRlbnQtc2Nyb2xsZWRdPVwiaXNDb250ZW50U2Nyb2xsZWRcIiAodG91Y2hzdGFydCk9XCJvbkhlYWRlclRvdWNoU3RhcnQoJGV2ZW50KVwiPlxuICA8aW9uLXRvb2xiYXI+XG4gICAgPGlvbi10aXRsZT48L2lvbi10aXRsZT5cbiAgICA8aW9uLWJ1dHRvbnNcbiAgICAgIHNsb3Q9XCJzZWNvbmRhcnlcIlxuICAgICAgKm5nSWY9XCJjb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiBjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvblwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBraXJieS1idXR0b25cbiAgICAgICAgYXR0ZW50aW9uTGV2ZWw9XCIzXCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgKGNsaWNrKT1cImNvbmZpZy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uLmFjdGlvbigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGtpcmJ5LWljb24gW25hbWVdPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uaWNvbk5hbWVcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBraXJieS1idXR0b25cbiAgICAgICAgYXR0ZW50aW9uTGV2ZWw9XCIzXCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgW25vRGVjb3JhdGlvbl09XCJjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZFwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGtpcmJ5LWljb24gbmFtZT1cImNsb3NlXCI+PC9raXJieS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IFtzY3JvbGxFdmVudHNdPVwic2Nyb2xsRXZlbnRzRW5hYmxlZFwiPlxuICA8aW9uLWhlYWRlciAqbmdJZj1cIl9oYXNDb2xsYXBzaWJsZVRpdGxlXCIgY29sbGFwc2U9XCJjb25kZW5zZVwiPlxuICAgIDxpb24tdG9vbGJhcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwia2lyYnktdGV4dC14bGFyZ2VcIiAjY29udGVudFRpdGxlPjwvc3Bhbj5cbiAgICA8L2lvbi10b29sYmFyPlxuICA8L2lvbi1oZWFkZXI+XG5cbiAgPCEtLSBPdXRsZXQgZm9yIE1vZGFsQ29udHJvbGxlciAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbmZpZy5jb21wb25lbnQ7IGluamVjdG9yOiBjb21wb25lbnRQcm9wc0luamVjdG9yXCJcbiAgPjwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciBwcm9qZWN0ZWQgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQ7IGluamVjdG9yOiBtb2RhbFdyYXBwZXJJbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciByb3V0ZS1iYXNlZCBtb2RhbCAtLT5cbiAgPHJvdXRlci1vdXRsZXRcbiAgICBuYW1lPVwia2lyYnlNb2RhbFdyYXBwZXJPdXRsZXRcIlxuICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImNvbmZpZy5tb2RhbFJvdXRlID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICA+PC9yb3V0ZXItb3V0bGV0PlxuPC9pb24tY29udGVudD5cbiJdfQ==
543
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdGLE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1B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cG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJTdHlsZUZsYWdzMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEZXNpZ25Ub2tlbkhlbHBlciwgZ2V0SW9uTW9kYWxEaWFsb2dBbmNlc3RvciB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5cbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVW5vYnNlcnZlRm4sIFdpbmRvd1JlZiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuaW1wb3J0IHsgb2JzZXJ2ZUNvbnRlbnQsIFBsYXRmb3JtU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG4gIFNjcm9sbERldGFpbCxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBNb2RhbCwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIE1vZGFsRWxlbWVudFR5cGUgfSBmcm9tICcuLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxDb25maWcsIFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnJztcbmltcG9ydCB7IENPTVBPTkVOVF9QUk9QUyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUgfSBmcm9tICcuL21vZGFsLWVsZW1lbnRzLW1vdmVyLmRlbGVnYXRlJztcblxuY29uc3QgY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMgPSAxMDtcbmNvbnN0IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzID0gNDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQ29udGVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE1vZGFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzaWJsZS10aXRsZScpXG4gIGdldCBfaGFzQ29sbGFwc2libGVUaXRsZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZz8uY29sbGFwc2VUaXRsZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBLRVlCT0FSRF9ISURFX0RFTEFZX0lOX01TID0gMTAwO1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBWSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRSA9IDEwMDtcblxuICBASW5wdXQoKSBzZXQgc2Nyb2xsRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsWSA9ICFkaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBjYW5EaXNtaXNzKGNhbGxiYWNrOiBTaG93QWxlcnRDYWxsYmFjaykge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNhbkRpc21pc3MgPSB0aGlzLmNhbkRpc21pc3NIZWxwZXIuZ2V0Q2FuRGlzbWlzc0NhbGxiYWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogTW9kYWxDb25maWc7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG4gIG1vZGFsV3JhcHBlckluamVjdG9yOiBJbmplY3RvcjtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgdG9vbGJhckJ1dHRvbnNRdWVyeTogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpb25Db250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVG9vbGJhciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Ub29sYmFyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVG9vbGJhckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvblRpdGxlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFRpdGxlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgX2NvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGdldCBjb250ZW50VGl0bGVFbGVtZW50KCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAvKiBcbiAgICAgICAgY29udGVudFRpdGxlRWxlbWVudCBoYXMgbmdJZiBkaXJlY3RpdmUgZGVwZW5kZW50IG9uIF9oYXNDb2xsYXBzaWJsZVRpdGxlOyB0cmlnZ2VyIENEIHRvIG1ha2Ugc3VyZSBlbGVtZW50IGhhcyBiZWVuIHF1ZXJpZWQuIFxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgaW9uTW9kYWxEaWFsb2c/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbERpZFByZXNlbnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBkaWRQcmVzZW50ID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbERpZFByZXNlbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlvbk1vZGFsV2lsbERpc21pc3MgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSB3aWxsQ2xvc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MpO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSQgPSB0aGlzLnZpZXdwb3J0UmVzaXplXG4gICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUpKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyVW5vYnNlcnZlRm46IFVub2JzZXJ2ZUZuO1xuICBwcml2YXRlIF9pbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgZ2V0IGludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBpZiAoIXRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuY3JlYXRlTW9kYWxXcmFwcGVySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICB9XG4gIHNjcm9sbEV2ZW50c0VuYWJsZWQ6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYXdlcicpXG4gIGdldCBfaXNEcmF3ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcic7XG4gIH1cblxuICB3aWxsQ2xvc2UkID0gdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLnBpcGUoZmlyc3QoKSk7XG5cbiAgcHJpdmF0ZSBtb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTogTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcml2YXRlIGNhbkRpc21pc3NIZWxwZXI6IENhbkRpc21pc3NIZWxwZXIsXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlID0gbmV3IE1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pb25Nb2RhbERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNpemluZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1vZGFsUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpO1xuICAgIHRoaXMubGlzdGVuRm9yU2Nyb2xsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpO1xuICAgIHRoaXMuY29tcG9uZW50UHJvcHNJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENPTVBPTkVOVF9QUk9QUywgdXNlVmFsdWU6IHRoaXMuY29uZmlnLmNvbXBvbmVudFByb3BzIH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb2RhbFdyYXBwZXJJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkubWFwKChidXR0b25SZWYpID0+IGJ1dHRvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEFyaWFMYWJlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudEZvb3RlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHNldCBjdXJyZW50Rm9vdGVyKGZvb3RlcjogSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgaWYgKGZvb3RlciAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZShmb290ZXIsIChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBbcHJvcGVydHksIHBpeGVsVmFsdWVdID0gW1xuICAgICAgICAgICctLWZvb3Rlci1oZWlnaHQnLFxuICAgICAgICAgIGAke01hdGguZmxvb3IoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0KX1weGAsXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwcm9wZXJ0eSwgcGl4ZWxWYWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50Rm9vdGVyID0gZm9vdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY3VycmVudEZvb3RlcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Rm9vdGVyO1xuICB9XG5cbiAgcHVibGljIGFkZE1vZGFsRWxlbWVudCh0eXBlOiBNb2RhbEVsZW1lbnRUeXBlLCBtb2RhbEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgY29uc3QgYWRkTW9kYWxFbGVtZW50Rm4gPSB7XG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5GT09URVJdOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkRm9vdGVyKG1vZGFsRWxlbWVudCk7XG4gICAgICAgIHRoaXMuY3VycmVudEZvb3RlciA9IG1vZGFsRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgfSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlRJVExFXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRUaXRsZShcbiAgICAgICAgICBtb2RhbEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5jb250ZW50VGl0bGVFbGVtZW50LFxuICAgICAgICAgIHRoaXMuX2hhc0NvbGxhcHNpYmxlVGl0bGUsXG4gICAgICAgICAgdGhpcy5pb25UaXRsZUVsZW1lbnRcbiAgICAgICAgKSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1NdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZFBhZ2VQcm9ncmVzcyhtb2RhbEVsZW1lbnQsIHRoaXMuaW9uVG9vbGJhckVsZW1lbnQpLFxuICAgIH1bdHlwZV07XG5cbiAgICBhZGRNb2RhbEVsZW1lbnRGbigpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZU1vZGFsRWxlbWVudCh0eXBlOiBNb2RhbEVsZW1lbnRUeXBlLCBtb2RhbEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgY29uc3QgcmVtb3ZlTW9kYWxFbGVtZW50Rm4gPSB7XG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5GT09URVJdOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUucmVtb3ZlRm9vdGVyKG1vZGFsRWxlbWVudCk7XG4gICAgICAgIHRoaXMuY3VycmVudEZvb3RlciA9IG51bGw7XG4gICAgICB9LFxuICAgICAgW01vZGFsRWxlbWVudFR5cGUuVElUTEVdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZVRpdGxlKFxuICAgICAgICAgIG1vZGFsRWxlbWVudCxcbiAgICAgICAgICB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlLFxuICAgICAgICAgIHRoaXMuY29udGVudFRpdGxlRWxlbWVudFxuICAgICAgICApLFxuICAgICAgW01vZGFsRWxlbWVudFR5cGUuUEFHRV9QUk9HUkVTU106ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUucmVtb3ZlUGFnZVByb2dyZXNzKG1vZGFsRWxlbWVudCksXG4gICAgfVt0eXBlXTtcblxuICAgIHJlbW92ZU1vZGFsRWxlbWVudEZuKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVSZXNpemVNb2RhbFRvTW9kYWxXcmFwcGVyKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInICYmIHRoaXMuY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmQpIHtcbiAgICAgIG1lcmdlKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LCB0aGlzLnZpZXdwb3J0UmVzaXplJClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAvLyB3YWl0IGZvciB0ZW1wbGF0ZSB0byByZW5kZXJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvbVJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY2xpZW50V2lkdGggLSBkb21SZWN0LnJpZ2h0O1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ3RvcCcsIGAke2RvbVJlY3QudG9wfXB4YCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW9uTW9kYWxFbGVtZW50LCAnbGVmdCcsIGAke2RvbVJlY3QubGVmdH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ3JpZ2h0JywgYCR7cmlnaHR9cHhgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2l6aW5nKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5zaXplID09PSAnZnVsbC1oZWlnaHQnKSByZXR1cm47XG4gICAgdGhpcy5wYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk7XG4gICAgdGhpcy5vYnNlcnZlSGVhZGVyUmVzaXplKCk7XG4gICAgdGhpcy5vYnNlcnZlTW9kYWxGdWxsSGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVNb2RhbFJvdXRlKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5tb2RhbFJvdXRlKSB7XG4gICAgICB0aGlzLm9uU2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQodGhpcy5jb25maWcuc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkKTtcbiAgICAgIC8vIExvYWQgY29tcG9uZW50IGZyb20gbW9kYWwtcm91dGUgaW5zaWRlIHJvdXRlci1vdXRsZXQ6XG4gICAgICB0aGlzLnJvdXRlck91dGxldC5hY3RpdmF0ZVdpdGgodGhpcy5jb25maWcubW9kYWxSb3V0ZSwgdGhpcy5lbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uU2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQoc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkPzogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZT4pIHtcbiAgICBpZiAoIXNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCkgcmV0dXJuO1xuICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJC5waXBlKHRha2VVbnRpbCh0aGlzLndpbGxDbG9zZSQpKS5zdWJzY3JpYmUoKHJvdXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGVhY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHJvdXRlLCB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHN1cHBvcnRzQ3NzU2hhZG93UGFydHMgPSAncGFydCcgaW4gSFRNTEVsZW1lbnQucHJvdG90eXBlO1xuICAgIGlmIChzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzKSByZXR1cm47XG4gICAgdGhpcy5pb25Db250ZW50LmdldFNjcm9sbEVsZW1lbnQoKS50aGVuKChzY3JvbGxFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNjcm9sbEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgc2Nyb2xsRWxlbWVudCxcbiAgICAgICAgICAndHJhbnNpdGlvbicsXG4gICAgICAgICAgJ3BhZGRpbmctYm90dG9tICcgKyBEZXNpZ25Ub2tlbkhlbHBlci5zb2Z0S2V5Ym9hcmRUcmFuc2l0aW9uTGVhdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpIHtcbiAgICBjb25zdCBpb25Nb2RhbFdyYXBwZXIgPSB0aGlzLmdldElvbk1vZGFsV3JhcHBlckVsZW1lbnQoKTtcblxuICAgIGlmICghaW9uTW9kYWxXcmFwcGVyKSByZXR1cm47XG4gICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHdoZW4gbW9kYWwgaGFzIGZpbmlzaGVkIGFuaW1hdGluZzpcbiAgICB0aGlzLmRpZFByZXNlbnQudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUoaW9uTW9kYWxXcmFwcGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4dHJhY3RlZCBpbnRvIGZ1bmN0aW9uIGZvciBlYXNlIG9mIHRlc3RpbmdcbiAgcHJpdmF0ZSBnZXRJb25Nb2RhbFdyYXBwZXJFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5pb25Nb2RhbEVsZW1lbnQuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtd3JhcHBlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlSGVhZGVyUmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFsnLS1oZWFkZXItaGVpZ2h0JywgYCR7ZW50cnkuY29udGVudFJlY3QuaGVpZ2h0fXB4YF07XG4gICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JJb25Nb2RhbERpZFByZXNlbnQoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbERpZFByZXNlbnQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50Lm5leHQoKTtcbiAgICAgICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpIHtcbiAgICBpZiAodGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vZGFsV2lsbERpc21pc3MnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JTY3JvbGwoKSB7XG4gICAgY29uc3QgcXVlcnkgPSBgKG1pbi13aWR0aDogJHtEZXNpZ25Ub2tlbkhlbHBlci5icmVha3BvaW50cy5tZWRpdW19KWA7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBjb25zdCBlbmFibGVTY3JvbGxFdmVudHMgPSAobGlzdE9yRXZlbnQ6IE1lZGlhUXVlcnlMaXN0IHwgTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4ge1xuICAgICAgY29uc3QgaXNEZXNrdG9wID0gbGlzdE9yRXZlbnQubWF0Y2hlcztcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRzRW5hYmxlZCA9ICFpc0Rlc2t0b3A7XG4gICAgfTtcblxuICAgIGVuYWJsZVNjcm9sbEV2ZW50cyhtZWRpYVF1ZXJ5KTtcbiAgICBtZWRpYVF1ZXJ5Lm9uY2hhbmdlID0gZW5hYmxlU2Nyb2xsRXZlbnRzO1xuXG4gICAgLy8gUnVucyBzY3JvbGwgc3Vic2NyaXB0aW9uIG91dHNpZGUgem9uZSB0byBhdm9pZCBleGNlc3NpdmUgYW1vdW50IG9mIENEIGN5Y2xlc1xuICAgIC8vIHdoZW4gaW9uU2Nyb2xsIGVtaXRzLlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgc3Vic2NyaWJlIGFzIGlvblNjcm9sbCBvbmx5IGVtaXRzIHdoZW4gc2Nyb2xsRXZlbnRzRW5hYmxlZCBpcyB0cnVlXG4gICAgICB0aGlzLmlvbkNvbnRlbnQuaW9uU2Nyb2xsXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZShjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyksXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxJbmZvOiBTY3JvbGxEZXRhaWwpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ID0gc2Nyb2xsSW5mby5zY3JvbGxUb3AgPiBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscztcblxuICAgICAgICAgIGlmIChjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ICE9PSB0aGlzLmlzQ29udGVudFNjcm9sbGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gY29udGVudFNjcm9sbGVkUGFzdE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVUaXRsZUNvbnRlbnRDaGFuZ2VzKCkge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlclVub2JzZXJ2ZUZuID0gb2JzZXJ2ZUNvbnRlbnQoXG4gICAgICB0aGlzLmlvblRpdGxlRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5zZXRBcmlhTGFiZWxGcm9tVGl0bGVDb250ZW50XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QXJpYUxhYmVsRnJvbVRpdGxlQ29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCB0aXRsZVRleHRDb250ZW50ID0gdGhpcy5pb25UaXRsZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxEaWFsb2cgJiYgdGl0bGVUZXh0Q29udGVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5pb25Nb2RhbERpYWxvZywgJ2FyaWEtbGFiZWwnLCB0aXRsZVRleHRDb250ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRBcmlhTGFiZWwoKSB7XG4gICAgY29uc3QgYXJpYUxhYmVsID0gdGhpcy5jb25maWcuaHRtbEF0dHJpYnV0ZXM/LlsnYXJpYS1sYWJlbCddO1xuICAgIGNvbnN0IGlvbk1vZGFsRWxlbWVudERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5pb25Nb2RhbEVsZW1lbnQpO1xuXG4gICAgaWYgKGlvbk1vZGFsRWxlbWVudERpYWxvZyAmJiBhcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGlvbk1vZGFsRWxlbWVudERpYWxvZywgJ2FyaWEtbGFiZWwnLCBhcmlhTGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEFyaWFMYWJlbEZyb21UaXRsZUNvbnRlbnQoKTtcbiAgICAgIHRoaXMub2JzZXJ2ZVRpdGxlQ29udGVudENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmN1cnJlbnRGb290ZXI7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsLWhlaWdodCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgZXhwbGljaXQgdmlld3BvcnQgcm9vdCBpZiB3aXRoaW4gaWZyYW1lOlxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZnJhbWVFbGVtZW50XG4gICAgICA/ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQgYXMgYW55KSAvLyBDYXN0IHRvIGBhbnlgIGFzIFR5cGVzY3JpcHQgbGliLmQudHMgZG9lc250IHN1cHBvcnQgRG9jdW1lbnQgdHlwZSB5ZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xcHggMHB4JywgLy8gYGJvdHRvbTogLTFweGAgYWxsb3dzIGNoZWNraW5nIHdoZW4gdGhlIG1vZGFsIGJvdHRvbSBpcyB0b3VjaGluZyB0aGUgdmlld3BvcnRcbiAgICAgIHJvb3QsXG4gICAgICB0aHJlc2hvbGQ6IFswLjk5LCAxXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgLy9jbGVhbiB1cCB0aGUgb2JzZXJ2ZXJcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJVbm9ic2VydmVGbj8uKCk7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZGVsZXRlIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZSkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5jdXJyZW50Rm9vdGVyKTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlciBbY2xhc3MuY29udGVudC1zY3JvbGxlZF09XCJpc0NvbnRlbnRTY3JvbGxlZFwiICh0b3VjaHN0YXJ0KT1cIm9uSGVhZGVyVG91Y2hTdGFydCgkZXZlbnQpXCI+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLXRpdGxlPjwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgc2xvdD1cInNlY29uZGFyeVwiXG4gICAgICAqbmdJZj1cImNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInICYmIGNvbmZpZy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICBhdHRlbnRpb25MZXZlbD1cIjNcIlxuICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICAoY2xpY2spPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uYWN0aW9uKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8a2lyYnktaWNvbiBbbmFtZV09XCJjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbi5pY29uTmFtZVwiPjwva2lyYnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJwcmltYXJ5XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICBhdHRlbnRpb25MZXZlbD1cIjNcIlxuICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICBbbm9EZWNvcmF0aW9uXT1cImNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmFuc2xhdGlvbnMuZ2V0KCdjbG9zZScpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgPlxuICAgICAgICA8a2lyYnktaWNvbiBuYW1lPVwiY2xvc2VcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgW3Njcm9sbEV2ZW50c109XCJzY3JvbGxFdmVudHNFbmFibGVkXCI+XG4gIDxpb24taGVhZGVyICpuZ0lmPVwiX2hhc0NvbGxhcHNpYmxlVGl0bGVcIiBjb2xsYXBzZT1cImNvbmRlbnNlXCI+XG4gICAgPGlvbi10b29sYmFyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJraXJieS10ZXh0LXhsYXJnZVwiICNjb250ZW50VGl0bGU+PC9zcGFuPlxuICAgIDwvaW9uLXRvb2xiYXI+XG4gIDwvaW9uLWhlYWRlcj5cblxuICA8IS0tIE91dGxldCBmb3IgTW9kYWxDb250cm9sbGVyIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiY29uZmlnLmNvbXBvbmVudDsgaW5qZWN0b3I6IGNvbXBvbmVudFByb3BzSW5qZWN0b3JcIlxuICA+PC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBPdXRsZXQgZm9yIHByb2plY3RlZCBjb250ZW50IC0tPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudDsgaW5qZWN0b3I6IG1vZGFsV3JhcHBlckluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBPdXRsZXQgZm9yIHJvdXRlLWJhc2VkIG1vZGFsIC0tPlxuICA8cm91dGVyLW91dGxldFxuICAgIG5hbWU9XCJraXJieU1vZGFsV3JhcHBlck91dGxldFwiXG4gICAgW3N0eWxlLnZpc2liaWxpdHldPVwiY29uZmlnLm1vZGFsUm91dGUgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gID48L3JvdXRlci1vdXRsZXQ+XG48L2lvbi1jb250ZW50PlxuIl19
@@ -38,13 +38,13 @@ export class ModalElementComponent {
38
38
  this.modalElementsAdvertiser.removeModalElement(this.modalElementType, this.elementRef);
39
39
  }
40
40
  }
41
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModalElementComponent, deps: [{ token: ModalElementType }, { token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
42
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ModalElementComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
41
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalElementComponent, deps: [{ token: ModalElementType }, { token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
42
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalElementComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModalElementComponent, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalElementComponent, decorators: [{
45
45
  type: Component,
46
46
  args: [{ template: '' }]
47
47
  }], ctorParameters: () => [{ type: ModalElementType }, { type: i0.ElementRef }, { type: ModalElementsAdvertiser, decorators: [{
48
48
  type: Optional
49
49
  }] }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0IxRixNQUFNLE9BQWdCLEtBQUs7Q0FRMUI7QUFDRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIseUVBQWEsQ0FBQTtJQUNiLDJEQUFNLENBQUE7SUFDTix5REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsdUJBQXVCO0NBRzVDO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUN6QyxJQUFZLGtCQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQ1UsZ0JBQWtDLEVBQ2xDLFVBQW1DLEVBQ3ZCLHVCQUFnRDtRQUY1RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ3ZCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFDbkUsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO2lJQXJCbUIscUJBQXFCO3FIQUFyQixxQkFBcUIsb0RBRHBCLEVBQUU7OzJGQUNILHFCQUFxQjtrQkFEMUMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OzBCQVN0QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9wdWJsaWNfYXBpJztcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUV2ZW50RGV0YWlsPFQgPSBhbnk+IHtcbiAgZGF0YT86IFQ7XG4gIHJvbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheSB7XG4gIGRpc21pc3M6IChkYXRhPzogYW55KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBvbldpbGxEaXNtaXNzOiBQcm9taXNlPE92ZXJsYXlFdmVudERldGFpbD47XG4gIG9uRGlkRGlzbWlzczogUHJvbWlzZTxPdmVybGF5RXZlbnREZXRhaWw+O1xuICBpc0Rpc21pc3Npbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsUm91dGVBY3RpdmF0aW9uIHtcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICBpc05ld01vZGFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kYWwge1xuICBkaWRQcmVzZW50OiBQcm9taXNlPHZvaWQ+O1xuICB3aWxsQ2xvc2U6IFByb21pc2U8dm9pZD47XG4gIGNsb3NlOiAoZGF0YT86IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2Nyb2xsVG9Ub3A6IChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSA9PiB2b2lkO1xuICBzY3JvbGxUb0JvdHRvbTogKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pID0+IHZvaWQ7XG4gIHNjcm9sbERpc2FibGVkOiBib29sZWFuO1xuICBjYW5EaXNtaXNzOiBTaG93QWxlcnRDYWxsYmFjaztcbn1cbi8qKlxuICogV0FSTklORzogVGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBvdXRzaWRlIG9mIEtpcmJ5LlxuICovXG5leHBvcnQgZW51bSBNb2RhbEVsZW1lbnRUeXBlIHtcbiAgUEFHRV9QUk9HUkVTUyxcbiAgRk9PVEVSLFxuICBUSVRMRSxcbn1cblxuLyoqXG4gKiBXQVJOSU5HOiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIG91dHNpZGUgb2YgS2lyYnkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlciB7XG4gIGFkZE1vZGFsRWxlbWVudDogKHR5cGU6IE1vZGFsRWxlbWVudFR5cGUsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkO1xuICByZW1vdmVNb2RhbEVsZW1lbnQ6ICh0eXBlOiBNb2RhbEVsZW1lbnRUeXBlLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBXQVJOSU5HOiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIG91dHNpZGUgb2YgS2lyYnkuXG4gKi9cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2RhbEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGdldCBpc0NvbnRhaW5lZEluTW9kYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxFbGVtZW50c0FkdmVydGlzZXIgIT09IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsRWxlbWVudFR5cGU6IE1vZGFsRWxlbWVudFR5cGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVkSW5Nb2RhbCkge1xuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlci5hZGRNb2RhbEVsZW1lbnQodGhpcy5tb2RhbEVsZW1lbnRUeXBlLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVkSW5Nb2RhbCkge1xuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlci5yZW1vdmVNb2RhbEVsZW1lbnQodGhpcy5tb2RhbEVsZW1lbnRUeXBlLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cbiAgfVxufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0IxRixNQUFNLE9BQWdCLEtBQUs7Q0FRMUI7QUFDRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIseUVBQWEsQ0FBQTtJQUNiLDJEQUFNLENBQUE7SUFDTix5REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsdUJBQXVCO0NBRzVDO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUN6QyxJQUFZLGtCQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQ1UsZ0JBQWtDLEVBQ2xDLFVBQW1DLEVBQ3ZCLHVCQUFnRDtRQUY1RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ3ZCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFDbkUsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO2tJQXJCbUIscUJBQXFCO3NIQUFyQixxQkFBcUIsb0RBRHBCLEVBQUU7OzRGQUNILHFCQUFxQjtrQkFEMUMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OzBCQVN0QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9wdWJsaWNfYXBpJztcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUV2ZW50RGV0YWlsPFQgPSBhbnk+IHtcbiAgZGF0YT86IFQ7XG4gIHJvbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheSB7XG4gIGRpc21pc3M6IChkYXRhPzogYW55KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBvbldpbGxEaXNtaXNzOiBQcm9taXNlPE92ZXJsYXlFdmVudERldGFpbD47XG4gIG9uRGlkRGlzbWlzczogUHJvbWlzZTxPdmVybGF5RXZlbnREZXRhaWw+O1xuICBpc0Rpc21pc3Npbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsUm91dGVBY3RpdmF0aW9uIHtcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICBpc05ld01vZGFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kYWwge1xuICBkaWRQcmVzZW50OiBQcm9taXNlPHZvaWQ+O1xuICB3aWxsQ2xvc2U6IFByb21pc2U8dm9pZD47XG4gIGNsb3NlOiAoZGF0YT86IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2Nyb2xsVG9Ub3A6IChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSA9PiB2b2lkO1xuICBzY3JvbGxUb0JvdHRvbTogKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pID0+IHZvaWQ7XG4gIHNjcm9sbERpc2FibGVkOiBib29sZWFuO1xuICBjYW5EaXNtaXNzOiBTaG93QWxlcnRDYWxsYmFjaztcbn1cbi8qKlxuICogV0FSTklORzogVGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBvdXRzaWRlIG9mIEtpcmJ5LlxuICovXG5leHBvcnQgZW51bSBNb2RhbEVsZW1lbnRUeXBlIHtcbiAgUEFHRV9QUk9HUkVTUyxcbiAgRk9PVEVSLFxuICBUSVRMRSxcbn1cblxuLyoqXG4gKiBXQVJOSU5HOiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIG91dHNpZGUgb2YgS2lyYnkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlciB7XG4gIGFkZE1vZGFsRWxlbWVudDogKHR5cGU6IE1vZGFsRWxlbWVudFR5cGUsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkO1xuICByZW1vdmVNb2RhbEVsZW1lbnQ6ICh0eXBlOiBNb2RhbEVsZW1lbnRUeXBlLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBXQVJOSU5HOiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIG91dHNpZGUgb2YgS2lyYnkuXG4gKi9cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2RhbEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGdldCBpc0NvbnRhaW5lZEluTW9kYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxFbGVtZW50c0FkdmVydGlzZXIgIT09IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsRWxlbWVudFR5cGU6IE1vZGFsRWxlbWVudFR5cGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVkSW5Nb2RhbCkge1xuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlci5hZGRNb2RhbEVsZW1lbnQodGhpcy5tb2RhbEVsZW1lbnRUeXBlLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmlzQ29udGFpbmVkSW5Nb2RhbCkge1xuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlci5yZW1vdmVNb2RhbEVsZW1lbnQodGhpcy5tb2RhbEVsZW1lbnRUeXBlLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -19,10 +19,10 @@ export class PageFooterComponent {
19
19
  ngOnDestroy() {
20
20
  this.pageComponent.tabBarBottomHidden = false;
21
21
  }
22
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PageFooterComponent, deps: [{ token: i1.PageComponent, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
23
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: PageFooterComponent, selector: "kirby-page-footer", inputs: { hasPadding: "hasPadding" }, ngImport: i0, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFooterComponent, deps: [{ token: i1.PageComponent, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
23
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageFooterComponent, selector: "kirby-page-footer", inputs: { hasPadding: "hasPadding" }, ngImport: i0, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PageFooterComponent, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFooterComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'kirby-page-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"] }]
28
28
  }], ctorParameters: () => [{ type: i1.PageComponent, decorators: [{
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
32
32
  }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { hasPadding: [{
33
33
  type: Input
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS9zcmMvcGFnZS1mb290ZXIvcGFnZS1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFnZS9zcmMvcGFnZS1mb290ZXIvcGFnZS1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVFsRCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ2tDLGFBQTRCLEVBQ3BELFdBQXVCLEVBQ3ZCLFFBQW1CO1FBRkssa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDcEQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUw3QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBT3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQzlCLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNoRCxDQUFDO2lJQXpCVSxtQkFBbUI7cUhBQW5CLG1CQUFtQiwrRkNuQmhDLCtGQUdBOzsyRkRnQmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzswQkFPNUMsUUFBUTs7MEJBQUksUUFBUTswRkFIdkIsVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgU2tpcFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtZm9vdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgaGFzUGFkZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYWdlQ29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIGlmICghcGFnZUNvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYWdlIGZvb3RlciBtdXN0IHJlc2lkZSBpbnNpZGUgb2YgYSBLaXJieSBwYWdlJyk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5wYWdlQ29tcG9uZW50LnRhYkJhckJvdHRvbUhpZGRlbiA9IGZhbHNlO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCxcbiAgICAgIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ29tcG9uZW50LnRhYkJhckJvdHRvbUhpZGRlbiA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtjbGFzcy5wYWRkaW5nXT1cImhhc1BhZGRpbmdcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS9zcmMvcGFnZS1mb290ZXIvcGFnZS1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFnZS9zcmMvcGFnZS1mb290ZXIvcGFnZS1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVFsRCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ2tDLGFBQTRCLEVBQ3BELFdBQXVCLEVBQ3ZCLFFBQW1CO1FBRkssa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDcEQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUw3QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBT3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQzlCLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNoRCxDQUFDO2tJQXpCVSxtQkFBbUI7c0hBQW5CLG1CQUFtQiwrRkNuQmhDLCtGQUdBOzs0RkRnQmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzswQkFPNUMsUUFBUTs7MEJBQUksUUFBUTswRkFIdkIsVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgU2tpcFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtZm9vdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgaGFzUGFkZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBwYWdlQ29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIGlmICghcGFnZUNvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYWdlIGZvb3RlciBtdXN0IHJlc2lkZSBpbnNpZGUgb2YgYSBLaXJieSBwYWdlJyk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5wYWdlQ29tcG9uZW50LnRhYkJhckJvdHRvbUhpZGRlbiA9IGZhbHNlO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCxcbiAgICAgIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ29tcG9uZW50LnRhYkJhckJvdHRvbUhpZGRlbiA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtjbGFzcy5wYWRkaW5nXT1cImhhc1BhZGRpbmdcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=