@sbb-esta/lyne-elements 4.0.0-next.3 → 4.0.0-next.4

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 (600) hide show
  1. package/accordion/accordion.component.d.ts.map +1 -1
  2. package/accordion/accordion.component.js +29 -27
  3. package/action-group/action-group.component.js +1 -1
  4. package/alert/alert/alert.component.js +7 -7
  5. package/alert/alert-group/alert-group.component.d.ts +1 -1
  6. package/alert/alert-group/alert-group.component.d.ts.map +1 -1
  7. package/alert/alert-group/alert-group.component.js +23 -23
  8. package/autocomplete/autocomplete-base-element.d.ts +1 -0
  9. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  10. package/autocomplete/autocomplete-base-element.js +58 -56
  11. package/autocomplete/autocomplete.component.d.ts.map +1 -1
  12. package/autocomplete/autocomplete.component.js +12 -12
  13. package/breadcrumb/breadcrumb/breadcrumb.component.js +5 -5
  14. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +2 -3
  15. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  16. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +53 -47
  17. package/button/common/button-common.d.ts.map +1 -1
  18. package/button/common/button-common.js +40 -42
  19. package/button/common.js +1 -1
  20. package/button.js +1 -1
  21. package/calendar/calendar.component.d.ts +4 -4
  22. package/calendar/calendar.component.d.ts.map +1 -1
  23. package/calendar/calendar.component.js +183 -183
  24. package/card/card/card.component.d.ts +3 -6
  25. package/card/card/card.component.d.ts.map +1 -1
  26. package/card/card/card.component.js +32 -47
  27. package/card/card-badge/card-badge.component.d.ts +0 -2
  28. package/card/card-badge/card-badge.component.d.ts.map +1 -1
  29. package/card/card-badge/card-badge.component.js +29 -36
  30. package/card/common/card-action-common.d.ts.map +1 -1
  31. package/card/common/card-action-common.js +36 -24
  32. package/checkbox/checkbox/checkbox.component.d.ts +1 -1
  33. package/checkbox/checkbox/checkbox.component.js +1 -1
  34. package/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -2
  35. package/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -1
  36. package/checkbox/checkbox-group/checkbox-group.component.js +39 -38
  37. package/checkbox/checkbox-panel/checkbox-panel.component.d.ts +1 -14
  38. package/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  39. package/checkbox/checkbox-panel/checkbox-panel.component.js +35 -55
  40. package/checkbox/common.js +1 -1
  41. package/checkbox-common-t04WeA36.js +5 -0
  42. package/checkbox.js +1 -1
  43. package/chip/chip-group/chip-group.component.d.ts +1 -0
  44. package/chip/chip-group/chip-group.component.d.ts.map +1 -1
  45. package/chip/chip-group/chip-group.component.js +23 -23
  46. package/clock/clock.component.d.ts +3 -1
  47. package/clock/clock.component.d.ts.map +1 -1
  48. package/clock/clock.component.js +40 -39
  49. package/container/container/container.component.d.ts.map +1 -1
  50. package/container/container/container.component.js +27 -24
  51. package/container/sticky-bar/sticky-bar.component.d.ts +3 -1
  52. package/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
  53. package/container/sticky-bar/sticky-bar.component.js +41 -41
  54. package/core/a11y/focus-visible-within-controller.d.ts +2 -1
  55. package/core/a11y/focus-visible-within-controller.d.ts.map +1 -1
  56. package/core/a11y/focus-visible-within-controller.js +8 -7
  57. package/core/base-elements/action-base-element.d.ts +1 -0
  58. package/core/base-elements/action-base-element.d.ts.map +1 -1
  59. package/core/base-elements/action-base-element.js +37 -45
  60. package/core/base-elements/button-base-element.d.ts +1 -1
  61. package/core/base-elements/button-base-element.d.ts.map +1 -1
  62. package/core/base-elements/button-base-element.js +55 -56
  63. package/core/base-elements/link-base-element.d.ts.map +1 -1
  64. package/core/base-elements/link-base-element.js +62 -64
  65. package/core/base-elements/open-close-base-element.d.ts +2 -1
  66. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  67. package/core/base-elements/open-close-base-element.js +8 -8
  68. package/core/controllers/media-matchers-controller.d.ts +4 -1
  69. package/core/controllers/media-matchers-controller.d.ts.map +1 -1
  70. package/core/controllers/media-matchers-controller.js +30 -26
  71. package/core/controllers/overlay-position-controller.d.ts +3 -2
  72. package/core/controllers/overlay-position-controller.d.ts.map +1 -1
  73. package/core/controllers/overlay-position-controller.js +35 -35
  74. package/core/controllers/property-watcher-controller.d.ts +16 -0
  75. package/core/controllers/property-watcher-controller.d.ts.map +1 -0
  76. package/core/controllers/property-watcher-controller.js +58 -0
  77. package/core/controllers.d.ts +1 -1
  78. package/core/controllers.js +21 -18
  79. package/core/datetime/date-adapter.d.ts +1 -3
  80. package/core/datetime/date-adapter.d.ts.map +1 -1
  81. package/core/dom/animation.d.ts.map +1 -1
  82. package/core/dom/animation.js +2 -2
  83. package/core/dom/set-or-remove-attribute.d.ts +0 -14
  84. package/core/dom/set-or-remove-attribute.d.ts.map +1 -1
  85. package/core/dom/set-or-remove-attribute.js +3 -11
  86. package/core/dom.d.ts +0 -2
  87. package/core/dom.d.ts.map +1 -1
  88. package/core/dom.js +25 -33
  89. package/core/i18n/i18n.d.ts +0 -2
  90. package/core/i18n/i18n.d.ts.map +1 -1
  91. package/core/i18n/i18n.js +60 -66
  92. package/core/i18n.js +53 -54
  93. package/core/interfaces/types.d.ts +0 -14
  94. package/core/interfaces/types.d.ts.map +1 -1
  95. package/core/mixins/element-internals-mixin.d.ts +14 -1
  96. package/core/mixins/element-internals-mixin.d.ts.map +1 -1
  97. package/core/mixins/element-internals-mixin.js +102 -75
  98. package/core/mixins/form-associated-mixin.js +1 -1
  99. package/core/mixins/form-associated-radio-button-mixin.js +16 -16
  100. package/core/mixins/panel-mixin.d.ts +10 -2
  101. package/core/mixins/panel-mixin.d.ts.map +1 -1
  102. package/core/mixins/panel-mixin.js +51 -37
  103. package/core/mixins/selection-panel-mixin.d.ts +5 -11
  104. package/core/mixins/selection-panel-mixin.d.ts.map +1 -1
  105. package/core/mixins/selection-panel-mixin.js +35 -83
  106. package/core/mixins.js +28 -27
  107. package/core/overlay/overlay-option-panel.d.ts +2 -1
  108. package/core/overlay/overlay-option-panel.d.ts.map +1 -1
  109. package/core/overlay/overlay-option-panel.js +9 -6
  110. package/core/styles/core.scss +32 -11
  111. package/core/styles/mixins/card.scss +71 -55
  112. package/core/testing/wait-for-render.d.ts +1 -1
  113. package/core.css +151 -26
  114. package/custom-elements.json +8452 -8203
  115. package/date-input/date-input.component.d.ts +0 -5
  116. package/date-input/date-input.component.d.ts.map +1 -1
  117. package/date-input/date-input.component.js +0 -7
  118. package/development/accordion/accordion.component.d.ts.map +1 -1
  119. package/development/accordion/accordion.component.js +5 -4
  120. package/development/action-group/action-group.component.js +2 -2
  121. package/development/alert/alert/alert.component.js +5 -5
  122. package/development/alert/alert-group/alert-group.component.d.ts +1 -1
  123. package/development/alert/alert-group/alert-group.component.d.ts.map +1 -1
  124. package/development/alert/alert-group/alert-group.component.js +5 -5
  125. package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
  126. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  127. package/development/autocomplete/autocomplete-base-element.js +28 -32
  128. package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
  129. package/development/autocomplete/autocomplete.component.js +2 -3
  130. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
  131. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +2 -3
  132. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  133. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +33 -24
  134. package/development/button/common/button-common.d.ts.map +1 -1
  135. package/development/button/common/button-common.js +8 -17
  136. package/development/button/common.js +1 -1
  137. package/development/button.js +1 -1
  138. package/development/calendar/calendar.component.d.ts +4 -4
  139. package/development/calendar/calendar.component.d.ts.map +1 -1
  140. package/development/calendar/calendar.component.js +11 -11
  141. package/development/card/card/card.component.d.ts +3 -6
  142. package/development/card/card/card.component.d.ts.map +1 -1
  143. package/development/card/card/card.component.js +91 -146
  144. package/development/card/card-badge/card-badge.component.d.ts +0 -2
  145. package/development/card/card-badge/card-badge.component.d.ts.map +1 -1
  146. package/development/card/card-badge/card-badge.component.js +34 -71
  147. package/development/card/common/card-action-common.d.ts.map +1 -1
  148. package/development/card/common/card-action-common.js +21 -10
  149. package/development/checkbox/checkbox/checkbox.component.d.ts +1 -1
  150. package/development/checkbox/checkbox/checkbox.component.js +2 -2
  151. package/development/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -2
  152. package/development/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -1
  153. package/development/checkbox/checkbox-group/checkbox-group.component.js +13 -15
  154. package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts +1 -14
  155. package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  156. package/development/checkbox/checkbox-panel/checkbox-panel.component.js +6 -41
  157. package/development/checkbox/common.js +1 -1
  158. package/development/{checkbox-common-CX17vF7q.js → checkbox-common-D2-QcV8n.js} +4 -1
  159. package/development/checkbox.js +1 -1
  160. package/development/chip/chip-group/chip-group.component.d.ts +1 -0
  161. package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
  162. package/development/chip/chip-group/chip-group.component.js +11 -5
  163. package/development/clock/clock.component.d.ts +3 -1
  164. package/development/clock/clock.component.d.ts.map +1 -1
  165. package/development/clock/clock.component.js +5 -4
  166. package/development/container/container/container.component.d.ts.map +1 -1
  167. package/development/container/container/container.component.js +4 -3
  168. package/development/container/sticky-bar/sticky-bar.component.d.ts +3 -1
  169. package/development/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
  170. package/development/container/sticky-bar/sticky-bar.component.js +40 -34
  171. package/development/core/a11y/focus-visible-within-controller.d.ts +2 -1
  172. package/development/core/a11y/focus-visible-within-controller.d.ts.map +1 -1
  173. package/development/core/a11y/focus-visible-within-controller.js +4 -3
  174. package/development/core/a11y/interactivity-checker.js +1 -1
  175. package/development/core/base-elements/action-base-element.d.ts +1 -0
  176. package/development/core/base-elements/action-base-element.d.ts.map +1 -1
  177. package/development/core/base-elements/action-base-element.js +41 -56
  178. package/development/core/base-elements/button-base-element.d.ts +1 -1
  179. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  180. package/development/core/base-elements/button-base-element.js +7 -7
  181. package/development/core/base-elements/link-base-element.d.ts.map +1 -1
  182. package/development/core/base-elements/link-base-element.js +6 -15
  183. package/development/core/base-elements/open-close-base-element.d.ts +2 -1
  184. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  185. package/development/core/base-elements/open-close-base-element.js +12 -6
  186. package/development/core/controllers/media-matchers-controller.d.ts +4 -1
  187. package/development/core/controllers/media-matchers-controller.d.ts.map +1 -1
  188. package/development/core/controllers/media-matchers-controller.js +12 -5
  189. package/development/core/controllers/overlay-position-controller.d.ts +3 -2
  190. package/development/core/controllers/overlay-position-controller.d.ts.map +1 -1
  191. package/development/core/controllers/overlay-position-controller.js +3 -3
  192. package/development/core/controllers/property-watcher-controller.d.ts +16 -0
  193. package/development/core/controllers/property-watcher-controller.d.ts.map +1 -0
  194. package/development/core/controllers/property-watcher-controller.js +101 -0
  195. package/development/core/controllers.d.ts +1 -1
  196. package/development/core/controllers.js +6 -3
  197. package/development/core/datetime/date-adapter.d.ts +1 -3
  198. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  199. package/development/core/datetime/date-adapter.js +1 -1
  200. package/development/core/dom/animation.d.ts.map +1 -1
  201. package/development/core/dom/animation.js +2 -2
  202. package/development/core/dom/set-or-remove-attribute.d.ts +0 -14
  203. package/development/core/dom/set-or-remove-attribute.d.ts.map +1 -1
  204. package/development/core/dom/set-or-remove-attribute.js +1 -9
  205. package/development/core/dom.d.ts +0 -2
  206. package/development/core/dom.d.ts.map +1 -1
  207. package/development/core/dom.js +2 -10
  208. package/development/core/i18n/i18n.d.ts +0 -2
  209. package/development/core/i18n/i18n.d.ts.map +1 -1
  210. package/development/core/i18n/i18n.js +1 -8
  211. package/development/core/i18n.js +1 -2
  212. package/development/core/interfaces/types.d.ts +0 -14
  213. package/development/core/interfaces/types.d.ts.map +1 -1
  214. package/development/core/mixins/element-internals-mixin.d.ts +14 -1
  215. package/development/core/mixins/element-internals-mixin.d.ts.map +1 -1
  216. package/development/core/mixins/element-internals-mixin.js +58 -10
  217. package/development/core/mixins/form-associated-input-mixin.js +1 -1
  218. package/development/core/mixins/form-associated-mixin.js +2 -2
  219. package/development/core/mixins/form-associated-radio-button-mixin.js +2 -2
  220. package/development/core/mixins/panel-mixin.d.ts +10 -2
  221. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  222. package/development/core/mixins/panel-mixin.js +24 -6
  223. package/development/core/mixins/selection-panel-mixin.d.ts +5 -11
  224. package/development/core/mixins/selection-panel-mixin.d.ts.map +1 -1
  225. package/development/core/mixins/selection-panel-mixin.js +47 -111
  226. package/development/core/mixins.js +18 -9
  227. package/development/core/overlay/overlay-option-panel.d.ts +2 -1
  228. package/development/core/overlay/overlay-option-panel.d.ts.map +1 -1
  229. package/development/core/overlay/overlay-option-panel.js +10 -2
  230. package/development/core/overlay/position.js +1 -1
  231. package/development/core/testing/wait-for-render.d.ts +1 -1
  232. package/development/core/testing/wait-for-render.js +1 -1
  233. package/development/date-input/date-input.component.d.ts +0 -5
  234. package/development/date-input/date-input.component.d.ts.map +1 -1
  235. package/development/date-input/date-input.component.js +1 -8
  236. package/development/dialog/dialog/dialog.component.js +7 -7
  237. package/development/expansion-panel/expansion-panel/expansion-panel.component.d.ts +4 -6
  238. package/development/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
  239. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +30 -33
  240. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +2 -0
  241. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  242. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +17 -2
  243. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +1 -0
  244. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
  245. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +17 -6
  246. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  247. package/development/file-selector/common/file-selector-common.js +5 -5
  248. package/development/flip-card/flip-card/flip-card.component.d.ts +2 -1
  249. package/development/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
  250. package/development/flip-card/flip-card/flip-card.component.js +25 -14
  251. package/development/flip-card/flip-card-details/flip-card-details.component.d.ts +3 -1
  252. package/development/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
  253. package/development/flip-card/flip-card-details/flip-card-details.component.js +7 -6
  254. package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -2
  255. package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
  256. package/development/flip-card/flip-card-summary/flip-card-summary.component.js +1 -7
  257. package/development/form-field/error/error.component.js +2 -2
  258. package/development/form-field/form-field/form-field.component.d.ts +1 -1
  259. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  260. package/development/form-field/form-field/form-field.component.js +2 -2
  261. package/development/form-field/form-field-clear/form-field-clear.component.js +2 -2
  262. package/development/header/common/header-action-common.js +5 -5
  263. package/development/header/header/header.component.d.ts +1 -1
  264. package/development/header/header/header.component.d.ts.map +1 -1
  265. package/development/header/header/header.component.js +14 -14
  266. package/development/header/header-environment/header-environment.component.d.ts +1 -0
  267. package/development/header/header-environment/header-environment.component.d.ts.map +1 -1
  268. package/development/header/header-environment/header-environment.component.js +8 -5
  269. package/development/icon/icon-base.d.ts +1 -0
  270. package/development/icon/icon-base.d.ts.map +1 -1
  271. package/development/icon/icon-base.js +21 -25
  272. package/development/icon/icon-validate.js +2 -2
  273. package/development/{icon-sidebar-button-common-C6QChtaa.js → icon-sidebar-button-common-DR6eQvkq.js} +4 -4
  274. package/development/image/image.component.d.ts +5 -3
  275. package/development/image/image.component.d.ts.map +1 -1
  276. package/development/image/image.component.js +10 -9
  277. package/development/link/common/block-link-common.js +1 -1
  278. package/development/link/common/inline-link-common.js +1 -1
  279. package/development/link/common/link-common.d.ts.map +1 -1
  280. package/development/link/common/link-common.js +2 -3
  281. package/development/link/common.js +1 -1
  282. package/development/{link-common-DYZHRSSJ.js → link-common-CYr3PeRf.js} +9 -16
  283. package/development/link-list/link-list-anchor/link-list-anchor.component.js +6 -6
  284. package/development/link.js +1 -1
  285. package/development/map-container/map-container.component.d.ts +3 -1
  286. package/development/map-container/map-container.component.d.ts.map +1 -1
  287. package/development/map-container/map-container.component.js +5 -4
  288. package/development/menu/common/menu-action-common.js +2 -2
  289. package/development/menu/menu/menu.component.d.ts +1 -1
  290. package/development/menu/menu/menu.component.d.ts.map +1 -1
  291. package/development/menu/menu/menu.component.js +29 -23
  292. package/development/{mini-button-common-TSDaMUCP.js → mini-button-common-CWTMR_Lu.js} +15 -15
  293. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -1
  294. package/development/mini-calendar/mini-calendar/mini-calendar.component.js +7 -6
  295. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +4 -4
  296. package/development/navigation/common/navigation-action-common.js +7 -7
  297. package/development/navigation/navigation/navigation.component.d.ts +0 -1
  298. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  299. package/development/navigation/navigation/navigation.component.js +26 -38
  300. package/development/navigation/navigation-marker/navigation-marker.component.d.ts +1 -1
  301. package/development/navigation/navigation-marker/navigation-marker.component.d.ts.map +1 -1
  302. package/development/navigation/navigation-marker/navigation-marker.component.js +8 -8
  303. package/development/navigation/navigation-section/navigation-section.component.d.ts +8 -7
  304. package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  305. package/development/navigation/navigation-section/navigation-section.component.js +48 -45
  306. package/development/notification/notification.component.d.ts +3 -2
  307. package/development/notification/notification.component.d.ts.map +1 -1
  308. package/development/notification/notification.component.js +22 -19
  309. package/development/option/optgroup/optgroup-base-element.d.ts +0 -3
  310. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  311. package/development/option/optgroup/optgroup-base-element.js +6 -32
  312. package/development/option/optgroup/optgroup.component.d.ts +2 -2
  313. package/development/option/optgroup/optgroup.component.d.ts.map +1 -1
  314. package/development/option/optgroup/optgroup.component.js +21 -13
  315. package/development/option/option/option-base-element.d.ts +0 -5
  316. package/development/option/option/option-base-element.d.ts.map +1 -1
  317. package/development/option/option/option-base-element.js +8 -41
  318. package/development/option/option/option.component.d.ts +5 -4
  319. package/development/option/option/option.component.d.ts.map +1 -1
  320. package/development/option/option/option.component.js +52 -39
  321. package/development/overlay/overlay-base-element.d.ts +1 -1
  322. package/development/overlay/overlay-base-element.js +2 -2
  323. package/development/overlay/overlay.component.js +7 -7
  324. package/development/paginator/common/paginator-common.d.ts +0 -1
  325. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  326. package/development/paginator/common/paginator-common.js +1 -1
  327. package/development/paginator/paginator/paginator.component.d.ts +1 -1
  328. package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
  329. package/development/paginator/paginator/paginator.component.js +8 -14
  330. package/development/popover/{popover/popover.component.d.ts → popover.component.d.ts} +2 -2
  331. package/development/popover/popover.component.d.ts.map +1 -0
  332. package/development/popover/popover.component.js +720 -0
  333. package/development/popover.d.ts +1 -1
  334. package/development/popover.d.ts.map +1 -1
  335. package/development/popover.js +1 -1
  336. package/development/radio-button/common.js +1 -1
  337. package/development/radio-button/radio-button/radio-button.component.d.ts +0 -1
  338. package/development/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
  339. package/development/radio-button/radio-button/radio-button.component.js +1 -2
  340. package/development/radio-button/radio-button-group/radio-button-group.component.d.ts +0 -1
  341. package/development/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  342. package/development/radio-button/radio-button-group/radio-button-group.component.js +28 -43
  343. package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts +0 -12
  344. package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
  345. package/development/radio-button/radio-button-panel/radio-button-panel.component.js +5 -37
  346. package/development/{radio-button-common-BPrInmpg.js → radio-button-common-B3kVD7QV.js} +19 -42
  347. package/development/radio-button.js +1 -1
  348. package/development/{sbb-tokens-DZrHvErO.js → sbb-tokens-CZCt5L4q.js} +9 -9
  349. package/development/select/select.component.d.ts +1 -1
  350. package/development/select/select.component.d.ts.map +1 -1
  351. package/development/select/select.component.js +31 -36
  352. package/development/selection-action-panel/selection-action-panel.component.d.ts +0 -1
  353. package/development/selection-action-panel/selection-action-panel.component.d.ts.map +1 -1
  354. package/development/selection-action-panel/selection-action-panel.component.js +22 -9
  355. package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts +5 -6
  356. package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
  357. package/development/selection-expansion-panel/selection-expansion-panel.component.js +35 -30
  358. package/development/sidebar/common.js +1 -1
  359. package/development/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
  360. package/development/sidebar/sidebar/sidebar.component.js +13 -14
  361. package/development/sidebar/sidebar-container/sidebar-container.component.d.ts.map +1 -1
  362. package/development/sidebar/sidebar-container/sidebar-container.component.js +10 -8
  363. package/development/sidebar.js +1 -1
  364. package/development/skiplink-list/skiplink-list.component.js +1 -1
  365. package/development/stepper/step/step.component.d.ts +3 -1
  366. package/development/stepper/step/step.component.d.ts.map +1 -1
  367. package/development/stepper/step/step.component.js +25 -12
  368. package/development/stepper/step-label/step-label.component.d.ts +4 -1
  369. package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
  370. package/development/stepper/step-label/step-label.component.js +40 -17
  371. package/development/stepper/stepper/stepper.component.d.ts +2 -2
  372. package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
  373. package/development/stepper/stepper/stepper.component.js +21 -22
  374. package/development/tabs/tab/tab.component.d.ts +0 -5
  375. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  376. package/development/tabs/tab/tab.component.js +3 -9
  377. package/development/tabs/tab-group/tab-group.component.d.ts +1 -25
  378. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  379. package/development/tabs/tab-group/tab-group.component.js +19 -23
  380. package/development/tabs/tab-label/tab-label.component.d.ts +1 -0
  381. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  382. package/development/tabs/tab-label/tab-label.component.js +20 -7
  383. package/development/tag/tag/tag.component.js +9 -9
  384. package/development/teaser/teaser.component.js +2 -2
  385. package/development/teaser-product/common.js +1 -1
  386. package/development/teaser-product/teaser-product/teaser-product.component.js +2 -2
  387. package/development/{teaser-product-common-v3BvyFdH.js → teaser-product-common-CJfmvweQ.js} +2 -2
  388. package/development/teaser-product.js +1 -1
  389. package/development/time-input/time-input.component.d.ts +0 -5
  390. package/development/time-input/time-input.component.d.ts.map +1 -1
  391. package/development/time-input/time-input.component.js +1 -8
  392. package/development/toast/toast.component.js +5 -5
  393. package/development/toggle/toggle/toggle.component.js +4 -4
  394. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  395. package/development/toggle/toggle-option/toggle-option.component.js +2 -3
  396. package/development/toggle-check/toggle-check.component.js +4 -4
  397. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  398. package/development/tooltip/tooltip.component.js +7 -7
  399. package/development/visual-checkbox/visual-checkbox.component.js +8 -4
  400. package/dialog/dialog/dialog.component.js +20 -20
  401. package/expansion-panel/expansion-panel/expansion-panel.component.d.ts +4 -6
  402. package/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
  403. package/expansion-panel/expansion-panel/expansion-panel.component.js +51 -56
  404. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +2 -0
  405. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  406. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +21 -13
  407. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +1 -0
  408. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
  409. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +24 -20
  410. package/file-selector/common/file-selector-common.d.ts.map +1 -1
  411. package/file-selector/common/file-selector-common.js +28 -28
  412. package/flip-card/flip-card/flip-card.component.d.ts +2 -1
  413. package/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
  414. package/flip-card/flip-card/flip-card.component.js +44 -40
  415. package/flip-card/flip-card-details/flip-card-details.component.d.ts +3 -1
  416. package/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
  417. package/flip-card/flip-card-details/flip-card-details.component.js +15 -14
  418. package/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -2
  419. package/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
  420. package/flip-card/flip-card-summary/flip-card-summary.component.js +23 -26
  421. package/form-field/error/error.component.js +3 -3
  422. package/form-field/form-field/form-field.component.d.ts +1 -1
  423. package/form-field/form-field/form-field.component.d.ts.map +1 -1
  424. package/form-field/form-field/form-field.component.js +1 -1
  425. package/form-field/form-field-clear/form-field-clear.component.js +7 -7
  426. package/header/common/header-action-common.js +14 -14
  427. package/header/header/header.component.d.ts +1 -1
  428. package/header/header/header.component.d.ts.map +1 -1
  429. package/header/header/header.component.js +40 -40
  430. package/header/header-environment/header-environment.component.d.ts +1 -0
  431. package/header/header-environment/header-environment.component.d.ts.map +1 -1
  432. package/header/header-environment/header-environment.component.js +8 -9
  433. package/icon/icon-base.d.ts +1 -0
  434. package/icon/icon-base.d.ts.map +1 -1
  435. package/icon/icon-base.js +45 -48
  436. package/icon/icon-validate.js +3 -3
  437. package/{icon-sidebar-button-common-W6GYJbVt.js → icon-sidebar-button-common-ffAscVDk.js} +1 -1
  438. package/image/image.component.d.ts +5 -3
  439. package/image/image.component.d.ts.map +1 -1
  440. package/image/image.component.js +31 -30
  441. package/index.d.ts +1 -1
  442. package/index.js +1 -1
  443. package/link/common/block-link-common.js +1 -1
  444. package/link/common/inline-link-common.js +1 -1
  445. package/link/common/link-common.d.ts.map +1 -1
  446. package/link/common/link-common.js +2 -3
  447. package/link/common.js +1 -1
  448. package/link-common-D9TmX32v.js +45 -0
  449. package/link-list/link-list-anchor/link-list-anchor.component.js +9 -9
  450. package/link.js +1 -1
  451. package/map-container/map-container.component.d.ts +3 -1
  452. package/map-container/map-container.component.d.ts.map +1 -1
  453. package/map-container/map-container.component.js +18 -17
  454. package/menu/common/menu-action-common.js +5 -5
  455. package/menu/menu/menu.component.d.ts +1 -1
  456. package/menu/menu/menu.component.d.ts.map +1 -1
  457. package/menu/menu/menu.component.js +29 -28
  458. package/mini-button-common-Bb4ri3Rn.js +10 -0
  459. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -1
  460. package/mini-calendar/mini-calendar/mini-calendar.component.js +22 -21
  461. package/navigation/common/navigation-action-common.js +10 -10
  462. package/navigation/navigation/navigation.component.d.ts +0 -1
  463. package/navigation/navigation/navigation.component.d.ts.map +1 -1
  464. package/navigation/navigation/navigation.component.js +46 -55
  465. package/navigation/navigation-marker/navigation-marker.component.d.ts +1 -1
  466. package/navigation/navigation-marker/navigation-marker.component.d.ts.map +1 -1
  467. package/navigation/navigation-marker/navigation-marker.component.js +20 -20
  468. package/navigation/navigation-section/navigation-section.component.d.ts +8 -7
  469. package/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  470. package/navigation/navigation-section/navigation-section.component.js +65 -65
  471. package/notification/notification.component.d.ts +3 -2
  472. package/notification/notification.component.d.ts.map +1 -1
  473. package/notification/notification.component.js +22 -25
  474. package/off-brand-theme.css +151 -26
  475. package/option/optgroup/optgroup-base-element.d.ts +0 -3
  476. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  477. package/option/optgroup/optgroup-base-element.js +45 -64
  478. package/option/optgroup/optgroup.component.d.ts +2 -2
  479. package/option/optgroup/optgroup.component.d.ts.map +1 -1
  480. package/option/optgroup/optgroup.component.js +27 -19
  481. package/option/option/option-base-element.d.ts +0 -5
  482. package/option/option/option-base-element.d.ts.map +1 -1
  483. package/option/option/option-base-element.js +58 -74
  484. package/option/option/option.component.d.ts +5 -4
  485. package/option/option/option.component.d.ts.map +1 -1
  486. package/option/option/option.component.js +40 -36
  487. package/overlay/overlay-base-element.d.ts +1 -1
  488. package/overlay/overlay-base-element.js +1 -1
  489. package/overlay/overlay.component.js +28 -28
  490. package/package.json +1 -6
  491. package/paginator/common/paginator-common.d.ts +0 -1
  492. package/paginator/common/paginator-common.d.ts.map +1 -1
  493. package/paginator/paginator/paginator.component.d.ts +1 -1
  494. package/paginator/paginator/paginator.component.d.ts.map +1 -1
  495. package/paginator/paginator/paginator.component.js +17 -20
  496. package/popover/{popover/popover.component.d.ts → popover.component.d.ts} +2 -2
  497. package/popover/popover.component.d.ts.map +1 -0
  498. package/popover/popover.component.js +316 -0
  499. package/popover.d.ts +1 -1
  500. package/popover.d.ts.map +1 -1
  501. package/popover.js +1 -1
  502. package/radio-button/common.js +1 -1
  503. package/radio-button/radio-button/radio-button.component.d.ts +0 -1
  504. package/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
  505. package/radio-button/radio-button/radio-button.component.js +4 -5
  506. package/radio-button/radio-button-group/radio-button-group.component.d.ts +0 -1
  507. package/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  508. package/radio-button/radio-button-group/radio-button-group.component.js +45 -46
  509. package/radio-button/radio-button-panel/radio-button-panel.component.d.ts +0 -12
  510. package/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
  511. package/radio-button/radio-button-panel/radio-button-panel.component.js +36 -54
  512. package/radio-button-common-1Yg7p8dc.js +5 -0
  513. package/radio-button.js +1 -1
  514. package/safety-theme.css +151 -26
  515. package/{sbb-tokens-BNWpZrLn.js → sbb-tokens-DruExozg.js} +8 -8
  516. package/select/select.component.d.ts +1 -1
  517. package/select/select.component.d.ts.map +1 -1
  518. package/select/select.component.js +52 -52
  519. package/selection-action-panel/selection-action-panel.component.d.ts +0 -1
  520. package/selection-action-panel/selection-action-panel.component.d.ts.map +1 -1
  521. package/selection-action-panel/selection-action-panel.component.js +9 -13
  522. package/selection-expansion-panel/selection-expansion-panel.component.d.ts +5 -6
  523. package/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
  524. package/selection-expansion-panel/selection-expansion-panel.component.js +49 -55
  525. package/sidebar/common.js +1 -1
  526. package/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
  527. package/sidebar/sidebar/sidebar.component.js +26 -32
  528. package/sidebar/sidebar-container/sidebar-container.component.d.ts.map +1 -1
  529. package/sidebar/sidebar-container/sidebar-container.component.js +33 -32
  530. package/sidebar.js +1 -1
  531. package/skiplink-list/skiplink-list.component.js +1 -1
  532. package/standard-theme.css +151 -26
  533. package/stepper/step/step.component.d.ts +3 -1
  534. package/stepper/step/step.component.d.ts.map +1 -1
  535. package/stepper/step/step.component.js +28 -20
  536. package/stepper/step-label/step-label.component.d.ts +4 -1
  537. package/stepper/step-label/step-label.component.d.ts.map +1 -1
  538. package/stepper/step-label/step-label.component.js +35 -23
  539. package/stepper/stepper/stepper.component.d.ts +2 -2
  540. package/stepper/stepper/stepper.component.d.ts.map +1 -1
  541. package/stepper/stepper/stepper.component.js +49 -48
  542. package/tabs/tab/tab.component.d.ts +0 -5
  543. package/tabs/tab/tab.component.d.ts.map +1 -1
  544. package/tabs/tab/tab.component.js +12 -18
  545. package/tabs/tab-group/tab-group.component.d.ts +1 -25
  546. package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  547. package/tabs/tab-group/tab-group.component.js +48 -50
  548. package/tabs/tab-label/tab-label.component.d.ts +1 -0
  549. package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  550. package/tabs/tab-label/tab-label.component.js +34 -29
  551. package/tag/tag/tag.component.js +12 -12
  552. package/teaser/teaser.component.js +1 -1
  553. package/teaser-product/common.js +1 -1
  554. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  555. package/teaser-product-common-DwaWdQEh.js +5 -0
  556. package/teaser-product.js +1 -1
  557. package/time-input/time-input.component.d.ts +0 -5
  558. package/time-input/time-input.component.d.ts.map +1 -1
  559. package/time-input/time-input.component.js +3 -10
  560. package/toast/toast.component.js +23 -23
  561. package/toggle/toggle/toggle.component.js +13 -13
  562. package/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  563. package/toggle/toggle-option/toggle-option.component.js +20 -21
  564. package/toggle-check/toggle-check.component.js +8 -8
  565. package/tooltip/tooltip.component.d.ts.map +1 -1
  566. package/tooltip/tooltip.component.js +39 -39
  567. package/visual-checkbox/visual-checkbox.component.js +15 -15
  568. package/checkbox-common-DK5WsQPi.js +0 -5
  569. package/core/controllers/ancestor-watcher-controller.d.ts +0 -14
  570. package/core/controllers/ancestor-watcher-controller.d.ts.map +0 -1
  571. package/core/controllers/ancestor-watcher-controller.js +0 -51
  572. package/core/dom/breakpoint.d.ts +0 -16
  573. package/core/dom/breakpoint.d.ts.map +0 -1
  574. package/core/dom/breakpoint.js +0 -12
  575. package/core/dom/host-context.d.ts +0 -11
  576. package/core/dom/host-context.d.ts.map +0 -1
  577. package/core/dom/host-context.js +0 -17
  578. package/development/core/controllers/ancestor-watcher-controller.d.ts +0 -14
  579. package/development/core/controllers/ancestor-watcher-controller.d.ts.map +0 -1
  580. package/development/core/controllers/ancestor-watcher-controller.js +0 -87
  581. package/development/core/dom/breakpoint.d.ts +0 -16
  582. package/development/core/dom/breakpoint.d.ts.map +0 -1
  583. package/development/core/dom/breakpoint.js +0 -19
  584. package/development/core/dom/host-context.d.ts +0 -11
  585. package/development/core/dom/host-context.d.ts.map +0 -1
  586. package/development/core/dom/host-context.js +0 -21
  587. package/development/popover/popover/popover.component.d.ts.map +0 -1
  588. package/development/popover/popover/popover.component.js +0 -722
  589. package/development/popover/popover.d.ts +0 -5
  590. package/development/popover/popover.d.ts.map +0 -1
  591. package/development/popover/popover.js +0 -6
  592. package/link-common-CdQBSga7.js +0 -46
  593. package/mini-button-common-C3-aFB4L.js +0 -10
  594. package/popover/popover/popover.component.d.ts.map +0 -1
  595. package/popover/popover/popover.component.js +0 -321
  596. package/popover/popover.d.ts +0 -5
  597. package/popover/popover.d.ts.map +0 -1
  598. package/popover/popover.js +0 -5
  599. package/radio-button-common-chJrmIBn.js +0 -5
  600. package/teaser-product-common-a4NenpSA.js +0 -5
@@ -5,13 +5,13 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
5
5
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
6
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
7
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
- import { __runInitializers, __esDecorate } from "tslib";
8
+ import { __esDecorate, __runInitializers } from "tslib";
9
9
  import { ResizeController } from "@lit-labs/observers/resize-controller.js";
10
10
  import { css, isServer, nothing, html } from "lit";
11
11
  import { property } from "lit/decorators.js";
12
12
  import { ref } from "lit/directives/ref.js";
13
13
  import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
14
- import { SbbEscapableOverlayController } from "../core/controllers.js";
14
+ import { SbbEscapableOverlayController, SbbPropertyWatcherController } from "../core/controllers.js";
15
15
  import { idReference, forceType } from "../core/decorators.js";
16
16
  import { isLean, isZeroAnimationDuration, isSafari } from "../core/dom.js";
17
17
  import { SbbNegativeMixin, SbbHydrationMixin } from "../core/mixins.js";
@@ -104,7 +104,7 @@ const style = css`.sbb-gap-fix-wrapper {
104
104
  --sbb-options-panel-padding-block: var(--sbb-spacing-fixed-1x);
105
105
  }
106
106
 
107
- :host([data-state]:not([data-state=closed])) {
107
+ :host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {
108
108
  display: block;
109
109
  }
110
110
 
@@ -115,32 +115,32 @@ const style = css`.sbb-gap-fix-wrapper {
115
115
  --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);
116
116
  }
117
117
 
118
- :host(:not([data-state])),
119
- :host([data-state=closed]) {
118
+ :host(:not(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))),
119
+ :host(:is(:state(state-closed),[state--state-closed])) {
120
120
  --sbb-options-panel-visibility: hidden;
121
121
  --sbb-options-pointer-events: none;
122
122
  }
123
123
 
124
- :host([data-state=opening]) {
124
+ :host(:is(:state(state-opening),[state--state-opening])) {
125
125
  --sbb-options-panel-animation-name: open;
126
126
  }
127
127
 
128
- :host([data-state=closing]) {
128
+ :host(:is(:state(state-closing),[state--state-closing])) {
129
129
  --sbb-options-panel-animation-name: close;
130
130
  }
131
131
 
132
- :host([data-state=opened]),
133
- :host([data-state=opening]) {
132
+ :host(:is(:state(state-opened),[state--state-opened])),
133
+ :host(:is(:state(state-opening),[state--state-opening])) {
134
134
  --sbb-options-panel-gap-fix-opacity: 1;
135
135
  }
136
136
 
137
- :host([data-options-panel-position=below]) {
137
+ :host(:is(:state(options-panel-position-below),[state--options-panel-position-below])) {
138
138
  --sbb-options-panel-animation-transform: translateY(
139
139
  calc((var(--sbb-options-panel-origin-height) / 2) * -1)
140
140
  );
141
141
  }
142
142
 
143
- :host([data-options-panel-position=above]) {
143
+ :host(:is(:state(options-panel-position-above),[state--options-panel-position-above])) {
144
144
  --sbb-options-panel-options-border-radius: var(--sbb-options-panel-border-radius)
145
145
  var(--sbb-options-panel-border-radius) 0 0;
146
146
  --sbb-options-panel-gap-fix-top: var(--sbb-options-panel-max-height);
@@ -205,27 +205,25 @@ const style = css`.sbb-gap-fix-wrapper {
205
205
  transition: box-shadow var(--sbb-options-panel-animation-duration) var(--sbb-options-panel-animation-timing-function);
206
206
  z-index: 1;
207
207
  }
208
- :host([data-options-panel-position=below]) .sbb-autocomplete__panel {
208
+ :host(:is(:state(options-panel-position-below),[state--options-panel-position-below])) .sbb-autocomplete__panel {
209
209
  inset-block-start: calc(var(--sbb-options-panel-position-y) - var(--sbb-options-panel-origin-height));
210
210
  }
211
- :host(:is([data-state=opened], [data-state=opening])) .sbb-autocomplete__panel {
211
+ :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))) .sbb-autocomplete__panel {
212
212
  box-shadow: var(--sbb-box-shadow-level-5-hard);
213
213
  }
214
- :host(:is([data-state=opened], [data-state=opening])[negative]) .sbb-autocomplete__panel {
214
+ :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))[negative]) .sbb-autocomplete__panel {
215
215
  box-shadow: var(--sbb-box-shadow-level-5-hard-negative);
216
216
  }
217
- :host([data-options-panel-position=below]) .sbb-autocomplete__panel::before {
217
+ :host(:is(:state(options-panel-position-below),[state--options-panel-position-below])) .sbb-autocomplete__panel::before {
218
218
  display: block;
219
219
  }
220
- :host([data-options-panel-position=above]) .sbb-autocomplete__panel::after {
220
+ :host(:is(:state(options-panel-position-above),[state--options-panel-position-above])) .sbb-autocomplete__panel::after {
221
221
  display: block;
222
222
  }
223
- :host(:is([data-state=opened], [data-state=opening])[data-option-panel-origin-borderless]) .sbb-autocomplete__panel::before, :host(:is([data-state=opened], [data-state=opening])[data-option-panel-origin-borderless]) .sbb-autocomplete__panel::after {
223
+ :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])) .sbb-autocomplete__panel::before, :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])) .sbb-autocomplete__panel::after {
224
224
  box-shadow: var(--sbb-box-shadow-level-5-hard);
225
225
  }
226
- :host(:is([data-state=opened],
227
- [data-state=opening])[data-option-panel-origin-borderless][negative]) .sbb-autocomplete__panel::before, :host(:is([data-state=opened],
228
- [data-state=opening])[data-option-panel-origin-borderless][negative]) .sbb-autocomplete__panel::after {
226
+ :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])[negative]) .sbb-autocomplete__panel::before, :host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening])):is(:state(option-panel-origin-borderless),[state--option-panel-origin-borderless])[negative]) .sbb-autocomplete__panel::after {
229
227
  box-shadow: var(--sbb-box-shadow-level-5-hard-negative);
230
228
  }
231
229
 
@@ -337,7 +335,7 @@ let SbbAutocompleteBaseElement = (() => {
337
335
  let _position_extraInitializers = [];
338
336
  return _a = class extends _classSuper {
339
337
  constructor() {
340
- super(...arguments);
338
+ super();
341
339
  __privateAdd(this, _origin_accessor_storage);
342
340
  __privateAdd(this, _trigger_accessor_storage);
343
341
  __privateAdd(this, _preserveIconSpace_accessor_storage);
@@ -385,6 +383,13 @@ let SbbAutocompleteBaseElement = (() => {
385
383
  this.close();
386
384
  }
387
385
  };
386
+ this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-form-field"), {
387
+ negative: (e) => {
388
+ this.negative = e.negative;
389
+ this.syncNegative();
390
+ },
391
+ borderless: (e) => this.toggleState("option-panel-origin-borderless", e.borderless)
392
+ }));
388
393
  }
389
394
  /**
390
395
  * The element where the autocomplete will attach.
@@ -483,10 +488,7 @@ let SbbAutocompleteBaseElement = (() => {
483
488
  }
484
489
  /** Opens the autocomplete. */
485
490
  open() {
486
- if (this.state !== "closed" || !this._overlay || this.options.length === 0 || this._readonly()) {
487
- return;
488
- }
489
- if (!this.dispatchBeforeOpenEvent()) {
491
+ if (this.state !== "closed" || !this._overlay || this.options.length === 0 || this._readonly() || !this.dispatchBeforeOpenEvent()) {
490
492
  return;
491
493
  }
492
494
  this.showPopover?.();
@@ -526,10 +528,6 @@ let SbbAutocompleteBaseElement = (() => {
526
528
  if (ariaRoleOnHost) {
527
529
  this.id ||= this.overlayId;
528
530
  }
529
- const formField = this.closest("sbb-form-field") ?? this.closest("[data-form-field]");
530
- if (formField) {
531
- this.negative = formField.hasAttribute("negative");
532
- }
533
531
  if (this.hasUpdated) {
534
532
  this._componentSetup();
535
533
  }
@@ -622,7 +620,6 @@ let SbbAutocompleteBaseElement = (() => {
622
620
  if (isServer) {
623
621
  return;
624
622
  }
625
- this.toggleAttribute("data-option-panel-origin-borderless", !!this.closest?.("sbb-form-field")?.hasAttribute("borderless"));
626
623
  this._configureTrigger();
627
624
  }
628
625
  _configureTrigger() {
@@ -771,7 +768,6 @@ let SbbAutocompleteBaseElement = (() => {
771
768
  <div
772
769
  @animationend=${this._onAnimationEnd}
773
770
  class="sbb-autocomplete__panel"
774
- ?data-open=${this.state === "opened" || this.state === "opening"}
775
771
  ${ref((overlayRef) => this._overlay = overlayRef)}
776
772
  >
777
773
  <div class="sbb-autocomplete__wrapper">
@@ -832,4 +828,4 @@ let SbbAutocompleteBaseElement = (() => {
832
828
  export {
833
829
  SbbAutocompleteBaseElement
834
830
  };
835
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyIH0gZnJvbSAnLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIGlkUmVmZXJlbmNlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiwgaXNTYWZhcmksIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uIH0gZnJvbSAnLi4vY29yZS9kb20udHMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQge1xuICBpc0V2ZW50T25FbGVtZW50LFxuICBvdmVybGF5R2FwRml4Q29ybmVycyxcbiAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyxcbiAgc2V0T3ZlcmxheVBvc2l0aW9uLFxufSBmcm9tICcuLi9jb3JlL292ZXJsYXkudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdXNlciBpcyByZXF1aXJlZCB0byBtYWtlIGEgc2VsZWN0aW9uIHdoZW4gdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIHRoZVxuICAgKiBhdXRvY29tcGxldGUuIElmIHRoZSB1c2VyIG1vdmVzIGF3YXkgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9wdGlvbiBmcm9tXG4gICAqIHRoZSBsaXN0LCB0aGUgdmFsdWUgd2lsbCBiZSByZXNldC4gSWYgdGhlIHVzZXIgb3BlbnMgdGhlIHBhbmVsIGFuZCBjbG9zZXMgaXQgd2l0aG91dFxuICAgKiBpbnRlcmFjdGluZyBvciBzZWxlY3RpbmcgYSB2YWx1ZSwgdGhlIGluaXRpYWwgdmFsdWUgd2lsbCBiZSBrZXB0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3JlcXVpcmUtc2VsZWN0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgcG9zaXRpb246ICdhdXRvJyB8ICdhYm92ZScgfCAnYmVsb3cnID0gJ2F1dG8nO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcmlnaW4gPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/XG4gICAgICB0aGlzLnRyaWdnZXIgPz9cbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRyaWdnZXIgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCB0cmlnZ2VyRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3JpZ2luUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIC8qKiBMaXN0ZW5zIHRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBgZGlzYWJsZWRgIG9yIGByZWFkb25seWAgYXR0cmlidXRlIG9mIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF90cmlnZ2VyQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBtdXRhdGlvbnNbMF0udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+W107XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQ7XG5cbiAgLyoqIE9wZW5zIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnIHx8XG4gICAgICAhdGhpcy5fb3ZlcmxheSB8fFxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5fcmVhZG9ubHkoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIHRydWUpO1xuICAgIGNvbnN0IG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQ7XG4gICAgaWYgKCFvcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciBjaGVjayB0aGUgdXNhZ2Ugb2YgdGhlIFwib3JpZ2luXCIgcHJvcGVydHkgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIGZhbHNlKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMub3ZlcmxheUlkO1xuICAgIH1cbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3QoJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0KCdbZGF0YS1mb3JtLWZpZWxkXScpO1xuXG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSkge1xuICAgICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdhdXRvQWN0aXZlRmlyc3RPcHRpb24nKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoaXNTZXJ2ZXIgfHwgIXRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3RyaWdnZXInKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfSBlbHNlIGlmICgoIW5hbWUgfHwgbmFtZSA9PT0gJ29yaWdpbicpICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQsIHVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgYW5kIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHByb3RlY3RlZCBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJPcHRpb25CYXNlRWxlbWVudDxUPjtcbiAgICB0aGlzLl9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHRhcmdldCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25BcnJvd3NTZWxlY3RlZChhY3RpdmVPcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgYWN0aXZlT3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKGFjdGl2ZU9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIF9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHNlbGVjdGVkT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge1xuICAgIC8vIERlc2VsZWN0IHRoZSBwcmV2aW91cyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zXG4gICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5pZCAhPT0gc2VsZWN0ZWRPcHRpb24uaWQgJiYgb3B0aW9uLnNlbGVjdGVkKVxuICAgICAgLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlKSk7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgLy8gR2l2ZW4gYSB2YWx1ZSwgcmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHNob3duIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgICBjb25zdCB0b0Rpc3BsYXkgPSB0aGlzLmRpc3BsYXlXaXRoPy4oc2VsZWN0ZWRPcHRpb24udmFsdWUgYXMgVCkgPz8gc2VsZWN0ZWRPcHRpb24udmFsdWU7XG5cbiAgICAgIC8vIFNldCB0aGUgb3B0aW9uIHZhbHVlXG4gICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IFJlYWN0IG9uQ2hhbmdlIGV2ZW50LCB3ZSBoYXZlIHRvIGdldCB0aGUgc2V0dGVyIGFuZCBjYWxsIGl0LlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTYwMCNpc3N1ZWNvbW1lbnQtMzQ1ODEzMTMwXG4gICAgICBjb25zdCBzZXRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGUsICd2YWx1ZScpIS5zZXQhO1xuICAgICAgc2V0VmFsdWUuY2FsbCh0aGlzLnRyaWdnZXJFbGVtZW50LCB0b0Rpc3BsYXkpO1xuXG4gICAgICAvLyBNYW51YWxseSB0cmlnZ2VyIHRoZSBjaGFuZ2UgZXZlbnRzXG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuXG4gICAgICAvLyBEaXNwYXRjaGluZyB0aGUgaW5wdXQgZXZlbnQgY2hhbmdlcyBfbGFzdElucHV0LCB3aGljaCBzaG91bGQgc3RheSBlbXB0eSBzaW5jZSB0aGVyZSdzIG5vIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IG51bGw7XG5cbiAgICAgIC8vIEN1c3RvbSBpbnB1dCBldmVudCBlbWl0dGVkIHdoZW4gaW5wdXQgdmFsdWUgY2hhbmdlcyBhZnRlciBhbiBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50PHsgb3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB9PignaW5wdXRBdXRvY29tcGxldGUnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7IG9wdGlvbjogc2VsZWN0ZWRPcHRpb24gfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucyh0aGlzLnRyaWdnZXJFbGVtZW50Py52YWx1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBJdCdzIHBvc3NpYmxlIHRvIGZpbHRlciBvdXQgb3B0aW9ucyB3aXRoIGFuIG9wZW5lZCBwYW5lbCBvbiBpbnB1dCBjaGFuZ2UuXG4gICAgICogSW4gdGhpcyBjYXNlLCB0aGUgcGFuZWwncyBwb3NpdGlvbiBtdXN0IGJlIHJlY2FsY3VsYXRlZCBjb25zaWRlcmluZyB0aGUgbmV3IG9wdGlvbidzIGxpc3QuXG4gICAgICovXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuXG4gICAgICAvLyBJZiB0aGUgYXV0b2NvbXBsZXRlIGlzIG9wZW4gYW5kIHRoZSBvcHRpb24gY291bnQgZ2V0cyB0byB6ZXJvLCB3ZSBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLlxuICAgICAgaWYgKHRoaXMuX29wdGlvbnNDb3VudCA+IDAgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIC8vIElmIHRoZSAnaW5wdXQnIGlzIGZvY3VzZWQgYW5kIHRoZSBjb3VudCBvZiBvcHRpb25zIGNoYW5nZXMgZnJvbSAwIHRvID4gMCxcbiAgICAgIC8vIHRoZSBhdXRvY29tcGxldGUgc2hvdWxkIG9wZW4gYXV0b21hdGljYWxseS5cbiAgICAgIGRvY3VtZW50Py5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnRyaWdnZXJFbGVtZW50ICYmXG4gICAgICB0aGlzLl9vcHRpb25zQ291bnQgPT09IDAgJiZcbiAgICAgIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vcHRpb25zQ291bnQgPSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9BY3RpdmVGaXJzdE9wdGlvbikge1xuICAgICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2V0TmV4dEFjdGl2ZU9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgYXV0b2NvbXBsZXRlIHNob3VsZCBpbmhlcml0ICdyZWFkb25seScgc3RhdGUgZnJvbSB0aGUgdHJpZ2dlci4gKi9cbiAgcHJpdmF0ZSBfcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlckVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSA/PyBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBvbmVudFNldHVwKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtb3B0aW9uLXBhbmVsLW9yaWdpbi1ib3JkZXJsZXNzJyxcbiAgICAgICEhdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/Lmhhc0F0dHJpYnV0ZSgnYm9yZGVybGVzcycpLFxuICAgICk7XG5cbiAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVUcmlnZ2VyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHRoaXMudHJpZ2dlciA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0cmlnZ2VyRWxlbWVudCA9PT0gdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbWVudDtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGNhbiBiZSB0aGUgZmFsbGJhY2sgb2YgdGhlIG9yaWdpbiwgd2UgZXZlbnR1YWxseSBoYXZlIHRvIHVwZGF0ZSB0aGUgcG9zaXRpb24uXG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCA9PT0gb3JpZ2luRWxlbWVudCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCEsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknXSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0VHJpZ2dlckF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIE9wZW4gdGhlIG92ZXJsYXkgb24gZm9jdXMsIGNsaWNrLCBpbnB1dCBhbmQgYEFycm93RG93bmAgZXZlbnRcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdpbnB1dCcsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAvLyBXZSBuZWVkIGtleSBldmVudCB0byBydW4gYmVmb3JlIGFueSBvdGhlciBzdWJzY3JpcHRpb24gdG8gZ3VhcmFudGVlIGEgY29ycmVjdFxuICAgICAgICAvLyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgKG5lY2Vzc2FyeSBmb3IgdGhlICdzYmItY2hpcC1ncm91cCcgdXNlIGNhc2UpLlxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gU2V0IG92ZXJsYXkgcG9zaXRpb24sIHdpZHRoIGFuZCBtYXggaGVpZ2h0XG4gIHByaXZhdGUgX3NldE92ZXJsYXlQb3NpdGlvbihvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50KTogdm9pZCB7XG4gICAgLy8gQW4gdW5kZWZpbmVkIG9yaWdpbkVsZW1lbnQgc2hvdWxkIG9ubHkgb2NjdXIgaW4gdGhlIHVubGlrZWx5IGV2ZW50XG4gICAgLy8gdGhhdCB0aGUgYXV0b2NvbXBsZXRlIGxvc2VzIGl0cyBvcmlnaW5FbGVtZW50IGFuZCB0cmlnZ2VyRWxlbWVudCBkdXJpbmcgYW4gb3BlbiBzdGF0ZS5cbiAgICBpZiAoIW9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIG9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItYXV0b2NvbXBsZXRlX19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG9wZW4vY2xvc2UgYW5pbWF0aW9uIGVuZC5cbiAgICogSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgICogVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmhpZGVQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAvLyBDbGVhcnMgdGhlIGlucHV0IGlmIHRoZXJlJ3MgdXNlciBpbnRlcmFjdGlvbiB3aXRob3V0IHNlbGVjdGlvbiAoc2VsZWN0aW9uIGNsZWFycyBgX2xhc3RVc2VySW5wdXRgKS5cbiAgICBpZiAodGhpcy5yZXF1aXJlU2VsZWN0aW9uICYmIHRoaXMudHJpZ2dlckVsZW1lbnQgJiYgdGhpcy5fbGFzdFVzZXJJbnB1dCkge1xuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy50cmlnZ2VyRWxlbWVudCwgJycpO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucygnJyk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoQ2xvc2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnybVkaXNhYmxlZGNoYW5nZScsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbj8uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIEtleWJvYXJkIGludGVyYWN0aW9uc1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgLy8gV2UgbmVlZCBrZXkgZXZlbnQgdG8gcnVuIGJlZm9yZSBhbnkgb3RoZXIgc3Vic2NyaXB0aW9uIHRvIGd1YXJhbnRlZSBhIGNvcnJlY3RcbiAgICAgICAgLy8gaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzIChuZWNlc3NhcnkgZm9yIHRoZSAnc2JiLWNoaXAtZ3JvdXAnIHVzZSBjYXNlKS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBtZW51LlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgPSBpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KTtcbiAgfTtcblxuICAvLyBJZiB0aGUgY2xpY2sgaXMgb3V0c2lkZSB0aGUgYXV0b2NvbXBsZXRlLCBjbG9zZXMgdGhlIHBhbmVsLlxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpICYmXG4gICAgICAhaXNFdmVudE9uRWxlbWVudCh0aGlzLm9yaWdpbkVsZW1lbnQsIGV2ZW50KVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhpZ2hsaWdodCB0aGUgc2VhcmNoZWQgdGV4dCBvbiB0aGUgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0T3B0aW9ucyhzZWFyY2hUZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHNlYXJjaFRlcm0gPT09IG51bGwgfHwgc2VhcmNoVGVybSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5oaWdobGlnaHQoc2VhcmNoVGVybSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPiR7b3ZlcmxheUdhcEZpeENvcm5lcnMoKX08L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3BhbmVsXCJcbiAgICAgICAgICA/ZGF0YS1vcGVuPSR7dGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgfHwgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnfVxuICAgICAgICAgICR7cmVmKChvdmVybGF5UmVmPzogRWxlbWVudCkgPT4gKHRoaXMuX292ZXJsYXkgPSBvdmVybGF5UmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX29wdGlvbnNcIlxuICAgICAgICAgICAgICByb2xlPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5wYW5lbFJvbGUgOiBub3RoaW5nfVxuICAgICAgICAgICAgICBpZD0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMub3ZlcmxheUlkIDogbm90aGluZ31cbiAgICAgICAgICAgICAgJHtyZWYoKGNvbnRhaW5lclJlZikgPT4gKHRoaXMuX29wdGlvbkNvbnRhaW5lciA9IGNvbnRhaW5lclJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX2hhbmRsZVNsb3RjaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRFdmVudE1hcCB7XG4gICAgaW5wdXRBdXRvY29tcGxldGU6IEN1c3RvbUV2ZW50PHsgb3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxhbnk+IH0+O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUNBLE1BQU0saUJBQWlCO0lBRUQsOEJBQTBCLE1BQUE7O0FBQXFC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
831
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuLCBpc1NhZmFyaSwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIG92ZXJsYXlHYXBGaXhDb3JuZXJzLFxuICByZW1vdmVBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdXNlciBpcyByZXF1aXJlZCB0byBtYWtlIGEgc2VsZWN0aW9uIHdoZW4gdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIHRoZVxuICAgKiBhdXRvY29tcGxldGUuIElmIHRoZSB1c2VyIG1vdmVzIGF3YXkgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9wdGlvbiBmcm9tXG4gICAqIHRoZSBsaXN0LCB0aGUgdmFsdWUgd2lsbCBiZSByZXNldC4gSWYgdGhlIHVzZXIgb3BlbnMgdGhlIHBhbmVsIGFuZCBjbG9zZXMgaXQgd2l0aG91dFxuICAgKiBpbnRlcmFjdGluZyBvciBzZWxlY3RpbmcgYSB2YWx1ZSwgdGhlIGluaXRpYWwgdmFsdWUgd2lsbCBiZSBrZXB0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3JlcXVpcmUtc2VsZWN0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgcG9zaXRpb246ICdhdXRvJyB8ICdhYm92ZScgfCAnYmVsb3cnID0gJ2F1dG8nO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcmlnaW4gPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/XG4gICAgICB0aGlzLnRyaWdnZXIgPz9cbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRyaWdnZXIgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCB0cmlnZ2VyRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3JpZ2luUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIC8qKiBMaXN0ZW5zIHRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBgZGlzYWJsZWRgIG9yIGByZWFkb25seWAgYXR0cmlidXRlIG9mIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF90cmlnZ2VyQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBtdXRhdGlvbnNbMF0udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4gdGhpcy5jbG9zZXN0PFNiYkZvcm1GaWVsZEVsZW1lbnQ+KCdzYmItZm9ybS1maWVsZCcpLFxuICAgICAgICB7XG4gICAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5lZ2F0aXZlID0gZS5uZWdhdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBib3JkZXJsZXNzOiAoZSkgPT4gdGhpcy50b2dnbGVTdGF0ZSgnb3B0aW9uLXBhbmVsLW9yaWdpbi1ib3JkZXJsZXNzJywgZS5ib3JkZXJsZXNzKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQ7XG5cbiAgLyoqIE9wZW5zIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnIHx8XG4gICAgICAhdGhpcy5fb3ZlcmxheSB8fFxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5fcmVhZG9ubHkoKSB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIHRydWUpO1xuICAgIGNvbnN0IG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQ7XG4gICAgaWYgKCFvcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciBjaGVjayB0aGUgdXNhZ2Ugb2YgdGhlIFwib3JpZ2luXCIgcHJvcGVydHkgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIGZhbHNlKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMub3ZlcmxheUlkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgfVxuICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYXV0b0FjdGl2ZUZpcnN0T3B0aW9uJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH0gZWxzZSBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICdvcmlnaW4nKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD47XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0YXJnZXQpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZSBhbmQgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uQXJyb3dzU2VsZWN0ZWQoYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGFjdGl2ZU9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyhhY3RpdmVPcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyhzZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICAvLyBEZXNlbGVjdCB0aGUgcHJldmlvdXMgb3B0aW9uc1xuICAgIHRoaXMub3B0aW9uc1xuICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uaWQgIT09IHNlbGVjdGVkT3B0aW9uLmlkICYmIG9wdGlvbi5zZWxlY3RlZClcbiAgICAgIC5mb3JFYWNoKChvcHRpb24pID0+IChvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZSkpO1xuXG4gICAgaWYgKHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIC8vIEdpdmVuIGEgdmFsdWUsIHJldHVybnMgdGhlIHN0cmluZyB0aGF0IHNob3VsZCBiZSBzaG93biB3aXRoaW4gdGhlIGlucHV0LlxuICAgICAgY29uc3QgdG9EaXNwbGF5ID0gdGhpcy5kaXNwbGF5V2l0aD8uKHNlbGVjdGVkT3B0aW9uLnZhbHVlIGFzIFQpID8/IHNlbGVjdGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy50cmlnZ2VyRWxlbWVudCwgdG9EaXNwbGF5KTtcblxuICAgICAgLy8gTWFudWFsbHkgdHJpZ2dlciB0aGUgY2hhbmdlIGV2ZW50c1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgICAgLy8gRGlzcGF0Y2hpbmcgdGhlIGlucHV0IGV2ZW50IGNoYW5nZXMgX2xhc3RJbnB1dCwgd2hpY2ggc2hvdWxkIHN0YXkgZW1wdHkgc2luY2UgdGhlcmUncyBubyBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICAgIHRoaXMuX2xhc3RVc2VySW5wdXQgPSBudWxsO1xuXG4gICAgICAvLyBDdXN0b20gaW5wdXQgZXZlbnQgZW1pdHRlZCB3aGVuIGlucHV0IHZhbHVlIGNoYW5nZXMgYWZ0ZXIgYW4gb3B0aW9uIGlzIHNlbGVjdGVkXG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4oJ2lucHV0QXV0b2NvbXBsZXRlJywge1xuICAgICAgICAgIGRldGFpbDogeyBvcHRpb246IHNlbGVjdGVkT3B0aW9uIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModGhpcy50cmlnZ2VyRWxlbWVudD8udmFsdWUpO1xuXG4gICAgLyoqXG4gICAgICogSXQncyBwb3NzaWJsZSB0byBmaWx0ZXIgb3V0IG9wdGlvbnMgd2l0aCBhbiBvcGVuZWQgcGFuZWwgb24gaW5wdXQgY2hhbmdlLlxuICAgICAqIEluIHRoaXMgY2FzZSwgdGhlIHBhbmVsJ3MgcG9zaXRpb24gbXVzdCBiZSByZWNhbGN1bGF0ZWQgY29uc2lkZXJpbmcgdGhlIG5ldyBvcHRpb24ncyBsaXN0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcblxuICAgICAgLy8gSWYgdGhlIGF1dG9jb21wbGV0ZSBpcyBvcGVuIGFuZCB0aGUgb3B0aW9uIGNvdW50IGdldHMgdG8gemVybywgd2UgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS5cbiAgICAgIGlmICh0aGlzLl9vcHRpb25zQ291bnQgPiAwICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyBJZiB0aGUgJ2lucHV0JyBpcyBmb2N1c2VkIGFuZCB0aGUgY291bnQgb2Ygb3B0aW9ucyBjaGFuZ2VzIGZyb20gMCB0byA+IDAsXG4gICAgICAvLyB0aGUgYXV0b2NvbXBsZXRlIHNob3VsZCBvcGVuIGF1dG9tYXRpY2FsbHkuXG4gICAgICBkb2N1bWVudD8uYWN0aXZlRWxlbWVudCA9PT0gdGhpcy50cmlnZ2VyRWxlbWVudCAmJlxuICAgICAgdGhpcy5fb3B0aW9uc0NvdW50ID09PSAwICYmXG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9uc0NvdW50ID0gdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvQWN0aXZlRmlyc3RPcHRpb24pIHtcbiAgICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgaW5oZXJpdCAncmVhZG9ubHknIHN0YXRlIGZyb20gdGhlIHRyaWdnZXIuICovXG4gIHByaXZhdGUgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVUcmlnZ2VyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHRoaXMudHJpZ2dlciA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0cmlnZ2VyRWxlbWVudCA9PT0gdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbWVudDtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGNhbiBiZSB0aGUgZmFsbGJhY2sgb2YgdGhlIG9yaWdpbiwgd2UgZXZlbnR1YWxseSBoYXZlIHRvIHVwZGF0ZSB0aGUgcG9zaXRpb24uXG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCA9PT0gb3JpZ2luRWxlbWVudCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCEsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknXSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0VHJpZ2dlckF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIE9wZW4gdGhlIG92ZXJsYXkgb24gZm9jdXMsIGNsaWNrLCBpbnB1dCBhbmQgYEFycm93RG93bmAgZXZlbnRcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdpbnB1dCcsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAvLyBXZSBuZWVkIGtleSBldmVudCB0byBydW4gYmVmb3JlIGFueSBvdGhlciBzdWJzY3JpcHRpb24gdG8gZ3VhcmFudGVlIGEgY29ycmVjdFxuICAgICAgICAvLyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgKG5lY2Vzc2FyeSBmb3IgdGhlICdzYmItY2hpcC1ncm91cCcgdXNlIGNhc2UpLlxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gU2V0IG92ZXJsYXkgcG9zaXRpb24sIHdpZHRoIGFuZCBtYXggaGVpZ2h0XG4gIHByaXZhdGUgX3NldE92ZXJsYXlQb3NpdGlvbihvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50KTogdm9pZCB7XG4gICAgLy8gQW4gdW5kZWZpbmVkIG9yaWdpbkVsZW1lbnQgc2hvdWxkIG9ubHkgb2NjdXIgaW4gdGhlIHVubGlrZWx5IGV2ZW50XG4gICAgLy8gdGhhdCB0aGUgYXV0b2NvbXBsZXRlIGxvc2VzIGl0cyBvcmlnaW5FbGVtZW50IGFuZCB0cmlnZ2VyRWxlbWVudCBkdXJpbmcgYW4gb3BlbiBzdGF0ZS5cbiAgICBpZiAoIW9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIG9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItYXV0b2NvbXBsZXRlX19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG9wZW4vY2xvc2UgYW5pbWF0aW9uIGVuZC5cbiAgICogSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgICogVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmhpZGVQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAvLyBDbGVhcnMgdGhlIGlucHV0IGlmIHRoZXJlJ3MgdXNlciBpbnRlcmFjdGlvbiB3aXRob3V0IHNlbGVjdGlvbiAoc2VsZWN0aW9uIGNsZWFycyBgX2xhc3RVc2VySW5wdXRgKS5cbiAgICBpZiAodGhpcy5yZXF1aXJlU2VsZWN0aW9uICYmIHRoaXMudHJpZ2dlckVsZW1lbnQgJiYgdGhpcy5fbGFzdFVzZXJJbnB1dCkge1xuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy50cmlnZ2VyRWxlbWVudCwgJycpO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucygnJyk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoQ2xvc2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnybVkaXNhYmxlZGNoYW5nZScsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbj8uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIEtleWJvYXJkIGludGVyYWN0aW9uc1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgLy8gV2UgbmVlZCBrZXkgZXZlbnQgdG8gcnVuIGJlZm9yZSBhbnkgb3RoZXIgc3Vic2NyaXB0aW9uIHRvIGd1YXJhbnRlZSBhIGNvcnJlY3RcbiAgICAgICAgLy8gaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzIChuZWNlc3NhcnkgZm9yIHRoZSAnc2JiLWNoaXAtZ3JvdXAnIHVzZSBjYXNlKS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBtZW51LlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgPSBpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KTtcbiAgfTtcblxuICAvLyBJZiB0aGUgY2xpY2sgaXMgb3V0c2lkZSB0aGUgYXV0b2NvbXBsZXRlLCBjbG9zZXMgdGhlIHBhbmVsLlxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpICYmXG4gICAgICAhaXNFdmVudE9uRWxlbWVudCh0aGlzLm9yaWdpbkVsZW1lbnQsIGV2ZW50KVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhpZ2hsaWdodCB0aGUgc2VhcmNoZWQgdGV4dCBvbiB0aGUgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0T3B0aW9ucyhzZWFyY2hUZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHNlYXJjaFRlcm0gPT09IG51bGwgfHwgc2VhcmNoVGVybSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5oaWdobGlnaHQoc2VhcmNoVGVybSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPiR7b3ZlcmxheUdhcEZpeENvcm5lcnMoKX08L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3BhbmVsXCJcbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50RXZlbnRNYXAge1xuICAgIGlucHV0QXV0b2NvbXBsZXRlOiBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8YW55PiB9PjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAsB,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAE/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;GAOG;AACH,qBAEM,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IAC5E,gBAAgC,IAAI,gBAAqC;IACzE,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAEhC,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAE7C;;IAOD,SAAS,CAAC,YAAY,IAAI,IAAI;IAU9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAqBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMtD,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IA2B1D,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
1
+ {"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;GAOG;AACH,qBAEM,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IAC5E,gBAAgC,IAAI,gBAAqC;IACzE,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAEhC,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAE7C;;IAOD,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAqBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMtD,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IA2B1D,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
@@ -25,7 +25,6 @@ let SbbAutocompleteElement = (() => {
25
25
  }
26
26
  syncNegative() {
27
27
  this.querySelectorAll?.("sbb-divider, sbb-option-hint").forEach((el) => el.negative = this.negative);
28
- this.querySelectorAll?.("sbb-option, sbb-optgroup").forEach((element) => element.toggleAttribute("data-negative", this.negative));
29
28
  }
30
29
  openedPanelKeyboardInteraction(event) {
31
30
  if (this.state !== "opened") {
@@ -49,7 +48,7 @@ let SbbAutocompleteElement = (() => {
49
48
  this.activeOption?.["selectViaUserInteraction"](true);
50
49
  }
51
50
  setNextActiveOption(event) {
52
- const enabledOptions = this.options.filter((opt) => !opt.matches(":state(disabled)"));
51
+ const enabledOptions = this.options.filter((opt) => !opt.matches(":is(:state(disabled),[state--disabled])"));
53
52
  this.activeOption?.setActive(false);
54
53
  this.triggerElement?.removeAttribute("aria-activedescendant");
55
54
  if (!enabledOptions.length) {
@@ -85,4 +84,4 @@ let SbbAutocompleteElement = (() => {
85
84
  export {
86
85
  SbbAutocompleteElement
87
86
  };
88
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXggfSBmcm9tICcuLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0R3JvdXBFbGVtZW50LCBTYmJPcHRpb25FbGVtZW50LCBTYmJPcHRpb25IaW50RWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWF1dG9jb21wbGV0ZScpXG5jbGFzcyBTYmJBdXRvY29tcGxldGVFbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQ8VD4ge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSBhcmlhUm9sZU9uSG9zdCA/ICdsaXN0Ym94JyA6IG51bGw7XG4gIHByb3RlY3RlZCBvdmVybGF5SWQgPSBgc2JiLWF1dG9jb21wbGV0ZS0keysrbmV4dElkfWA7XG4gIHByb3RlY3RlZCBwYW5lbFJvbGUgPSAnbGlzdGJveCc7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudDxUPj4oJ3NiYi1vcHRpb24nKSA/PyBbXSk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uc2VsZWN0ZWQnLCAoZTogRXZlbnQpID0+IHRoaXMub25PcHRpb25TZWxlY3RlZChlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3luY05lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYkRpdmlkZXJFbGVtZW50IHwgU2JiT3B0aW9uSGludEVsZW1lbnQ+KFxuICAgICAgJ3NiYi1kaXZpZGVyLCBzYmItb3B0aW9uLWhpbnQnLFxuICAgICkuZm9yRWFjaCgoZWwpID0+IChlbC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmUpKTtcblxuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4gfCBTYmJPcHRHcm91cEVsZW1lbnQ+KFxuICAgICAgJ3NiYi1vcHRpb24sIHNiYi1vcHRncm91cCcsXG4gICAgKS5mb3JFYWNoKChlbGVtZW50KSA9PiBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1uZWdhdGl2ZScsIHRoaXMubmVnYXRpdmUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLmFjdGl2ZU9wdGlvbj8uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhb3B0Lm1hdGNoZXMoJzpzdGF0ZShkaXNhYmxlZCknKSk7XG5cbiAgICAvLyBSZXNldCBwb3RlbnRpYWxseSBhY3RpdmUgb3B0aW9uXG4gICAgdGhpcy5hY3RpdmVPcHRpb24/LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcblxuICAgIGlmICghZW5hYmxlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5hY3RpdmVPcHRpb25cbiAgICAgID8gZW5hYmxlZE9wdGlvbnMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbiBhcyBTYmJPcHRpb25FbGVtZW50PFQ+KVxuICAgICAgOiAtMTtcblxuICAgIC8vIEdldCBhbmQgYWN0aXZhdGUgdGhlIG5leHQgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCBhY3RpdmVJdGVtSW5kZXgsIGVuYWJsZWRPcHRpb25zLmxlbmd0aCk7XG4gICAgdGhpcy5hY3RpdmVPcHRpb24gPSBlbmFibGVkT3B0aW9uc1tuZXh0XTtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUodHJ1ZSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCB0aGlzLmFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgdGhpcy5hY3RpdmVPcHRpb24uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xuICAgIGlmICh0aGlzLmF1dG9TZWxlY3RBY3RpdmVPcHRpb24pIHtcbiAgICAgIHRoaXMub25PcHRpb25BcnJvd3NTZWxlY3RlZCh0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbj8uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50LCBhcmlhUm9sZU9uSG9zdCA/IHRoaXMuaWQgOiB0aGlzLm92ZXJsYXlJZCwgZmFsc2UpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYXV0b2NvbXBsZXRlJzogU2JiQXV0b2Nv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
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXggfSBmcm9tICcuLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24udHMnO1xuXG5pbXBvcnQgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC50cyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIE9uIFNhZmFyaSwgdGhlIGFyaWEgcm9sZSAnbGlzdGJveCcgbXVzdCBiZSBvbiB0aGUgaG9zdCBlbGVtZW50LCBvciBlbHNlIFZvaWNlT3ZlciB3b24ndCB3b3JrIGF0IGFsbC5cbiAqIE9uIHRoZSBvdGhlciBoYW5kLCBKQVdTIGFuZCBOVkRBIG5lZWQgdGhlIHJvbGUgdG8gYmUgXCJjbG9zZXJcIiB0byB0aGUgb3B0aW9ucywgb3IgZWxzZSBvcHRncm91cHMgd29uJ3Qgd29yay5cbiAqL1xuY29uc3QgYXJpYVJvbGVPbkhvc3QgPSBpc1NhZmFyaTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyBhIHBhbmVsIHdpdGggYSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItb3B0aW9uYCBvciBgc2JiLW9wdGdyb3VwYCBlbGVtZW50cyB0byB0aGUgYHNiYi1hdXRvY29tcGxldGVgLlxuICogQGNzc3Byb3AgWy0tc2JiLWF1dG9jb21wbGV0ZS16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUnKVxuY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50PFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtJHsrK25leHRJZH1gO1xuICBwcm90ZWN0ZWQgcGFuZWxSb2xlID0gJ2xpc3Rib3gnO1xuXG4gIHByb3RlY3RlZCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4+KCdzYmItb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ29wdGlvbnNlbGVjdGVkJywgKGU6IEV2ZW50KSA9PiB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5zZWxlY3RCeUtleWJvYXJkKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5zZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5hY3RpdmVPcHRpb24/Llsnc2VsZWN0VmlhVXNlckludGVyYWN0aW9uJ10odHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gIW9wdC5tYXRjaGVzKCc6c3RhdGUoZGlzYWJsZWQpJykpO1xuXG4gICAgLy8gUmVzZXQgcG90ZW50aWFsbHkgYWN0aXZlIG9wdGlvblxuICAgIHRoaXMuYWN0aXZlT3B0aW9uPy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG5cbiAgICBpZiAoIWVuYWJsZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuYWN0aXZlT3B0aW9uXG4gICAgICA/IGVuYWJsZWRPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24gYXMgU2JiT3B0aW9uRWxlbWVudDxUPilcbiAgICAgIDogLTE7XG5cbiAgICAvLyBHZXQgYW5kIGFjdGl2YXRlIHRoZSBuZXh0IGFjdGl2ZSBvcHRpb25cbiAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgYWN0aXZlSXRlbUluZGV4LCBlbmFibGVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gZW5hYmxlZE9wdGlvbnNbbmV4dF07XG4gICAgdGhpcy5hY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgdGhpcy5hY3RpdmVPcHRpb24uaWQpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICBpZiAodGhpcy5hdXRvU2VsZWN0QWN0aXZlT3B0aW9uKSB7XG4gICAgICB0aGlzLm9uT3B0aW9uQXJyb3dzU2VsZWN0ZWQodGhpcy5hY3RpdmVPcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVPcHRpb24/LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VHJpZ2dlckF0dHJpYnV0ZXMoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIHNldEFyaWFDb21ib0JveEF0dHJpYnV0ZXMoZWxlbWVudCwgYXJpYVJvbGVPbkhvc3QgPyB0aGlzLmlkIDogdGhpcy5vdmVybGF5SWQsIGZhbHNlKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZSc6IFNiYkF1dG9jb21wbGV0ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFVQSxJQUFJLFNBQVM7QUFNYixNQUFNLGlCQUFpQjtJQVlqQiwwQkFBc0IsTUFBQTs7MEJBRDNCLGNBQWMsa0JBQWtCLENBQUM7Ozs7b0JBQ2U7QUFBUixFQUFBLG1CQUFRLFlBQTZCO0FBQUEsSUFLNUUsSUFBYyxVQUFPO0FBQ25CLGFBQU8sTUFBTSxLQUFLLEtBQUssbUJBQXdDLFlBQVksS0FBSyxFQUFFO0FBQUEsSUFDcEY7QUFBQSxJQUVBLGNBQUE7QUFDRSxZQUFBO0FBUlEsV0FBQSxZQUFZLG9CQUFvQixFQUFFLE1BQU07QUFDeEMsV0FBQSxZQUFZO0FBUXBCLFdBQUssbUJBQW1CLGtCQUFrQixDQUFDLE1BQWEsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO0FBQUEsSUFDbEY7QUFBQSxJQUVVLGVBQVk7QUFDcEIsV0FBSyxtQkFDSCw4QkFBOEIsRUFDOUIsUUFBUSxDQUFDLE9BQVEsR0FBRyxXQUFXLEtBQUssUUFBUztBQUFBLElBQ2pEO0FBQUEsSUFFVSwrQkFBK0IsT0FBb0I7QUFDM0QsVUFBSSxLQUFLLFVBQVUsVUFBVTtBQUMzQjtBQUFBLE1BQ0Y7QUFFQSxjQUFRLE1BQU0sS0FBQTtBQUFBLFFBQ1osS0FBSztBQUNILGVBQUssTUFBQTtBQUNMO0FBQUEsUUFFRixLQUFLO0FBQ0gsZUFBSyxpQkFBaUIsS0FBSztBQUMzQjtBQUFBLFFBRUYsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGVBQUssb0JBQW9CLEtBQUs7QUFDOUI7QUFBQSxNQUFBO0FBQUEsSUFFTjtBQUFBLElBRVUsaUJBQWlCLE9BQW9CO0FBQzdDLFlBQU0sZUFBQTtBQUVOLFdBQUssZUFBZSwwQkFBMEIsRUFBRSxJQUFJO0FBQUEsSUFDdEQ7QUFBQSxJQUVVLG9CQUFvQixPQUFxQjtBQUNqRCxZQUFNLGlCQUFpQixLQUFLLFFBQVEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEseUNBQWtCLENBQUM7QUFHcEYsV0FBSyxjQUFjLFVBQVUsS0FBSztBQUNsQyxXQUFLLGdCQUFnQixnQkFBZ0IsdUJBQXVCO0FBRTVELFVBQUksQ0FBQyxlQUFlLFFBQVE7QUFDMUIsYUFBSyxlQUFlO0FBQ3BCO0FBQUEsTUFDRjtBQUVBLFlBQU0sa0JBQWtCLEtBQUssZUFDekIsZUFBZSxRQUFRLEtBQUssWUFBbUMsSUFDL0Q7QUFHSixZQUFNLE9BQU8sb0JBQW9CLE9BQU8saUJBQWlCLGVBQWUsTUFBTTtBQUM5RSxXQUFLLGVBQWUsZUFBZSxJQUFJO0FBQ3ZDLFdBQUssYUFBYSxVQUFVLElBQUk7QUFDaEMsV0FBSyxnQkFBZ0IsYUFBYSx5QkFBeUIsS0FBSyxhQUFhLEVBQUU7QUFDL0UsV0FBSyxhQUFhLGVBQWUsRUFBRSxPQUFPLFdBQVc7QUFDckQsVUFBSSxLQUFLLHdCQUF3QjtBQUMvQixhQUFLLHVCQUF1QixLQUFLLFlBQVk7QUFBQSxNQUMvQztBQUFBLElBQ0Y7QUFBQSxJQUVVLHFCQUFrQjtBQUMxQixXQUFLLGNBQWMsVUFBVSxLQUFLO0FBQ2xDLFdBQUssZ0JBQWdCLGdCQUFnQix1QkFBdUI7QUFDNUQsV0FBSyxlQUFlO0FBQUEsSUFDdEI7QUFBQSxJQUVVLHFCQUFxQixTQUF5QjtBQUN0RCxnQ0FBMEIsU0FBUyxpQkFBaUIsS0FBSyxLQUFLLEtBQUssV0FBVyxLQUFLO0FBQUEsSUFDckY7QUFBQTs7QUFsRkYsaUJBQUEsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQUNrQyxHQUFBLE9BQU8saUJBQWlCLFlBQVksTUFEaEUsa0JBQUEsWUFBQSx1QkFBQSxHQUFtQzs7OyJ9
@@ -18,7 +18,7 @@ const style = css`:host {
18
18
  --sbb-breadcrumb-color: light-dark(var(--sbb-color-charcoal), var(--sbb-color-smoke));
19
19
  }
20
20
  }
21
- :host(:is(:active, [data-active])) {
21
+ :host(:is(:active, :is(:state(active),[state--active]))) {
22
22
  --sbb-breadcrumb-color: var(--sbb-color-anthracite);
23
23
  --sbb-breadcrumb-color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-cloud));
24
24
  }
@@ -1,7 +1,7 @@
1
1
  import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
2
  import { WithListChildren } from '../../core/mixins.ts';
3
3
  import { SbbBreadcrumbElement } from '../breadcrumb.ts';
4
- declare const SbbBreadcrumbGroupElement_base: import('../../core/mixins.ts').AbstractConstructor<import('../../core/mixins.ts').SbbNamedSlotListMixinType<SbbBreadcrumbElement>> & typeof LitElement;
4
+ declare const SbbBreadcrumbGroupElement_base: import('../../core/mixins.ts').AbstractConstructor<import('../../core/mixins.ts').SbbElementInternalsMixinType> & import('../../core/mixins.ts').AbstractConstructor<import('../../core/mixins.ts').SbbNamedSlotListMixinType<SbbBreadcrumbElement>> & typeof LitElement & import('../../core/mixins.ts').SbbElementInternalsConstructor;
5
5
  /**
6
6
  * It can be used as a container for one or more `sbb-breadcrumb` component.
7
7
  *
@@ -12,8 +12,7 @@ export declare class SbbBreadcrumbGroupElement extends SbbBreadcrumbGroupElement
12
12
  static styles: CSSResultGroup;
13
13
  protected readonly listChildLocalNames: string[];
14
14
  /** The state of the breadcrumb group. */
15
- private set _state(value);
16
- private get _state();
15
+ private accessor _state;
17
16
  private _resizeObserver;
18
17
  private _language;
19
18
  private _markForFocus;
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/breadcrumb/breadcrumb-group/breadcrumb-group.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAWb,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,eAAe,CAAC;;AAIvB;;;;GAIG;AACH,qBAEM,yBAA0B,SAAQ,8BAGD;IACrC,gBAAuB,IAAI,gBAAgB;IAC3C,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,mBAA4B,mBAAmB,WAAsB;IAErE,yCAAyC;IAEzC,OAAO,KAAK,MAAM,QAEjB;IACD,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,CAAC,eAAe,CAIpB;IACH,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAS;;IAO9B,OAAO,CAAC,cAAc;cAiBH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;cAQ3E,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IAa3F,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,UAAU;IAYlB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAK1B,kGAAkG;IAClG,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,eAAe;cAgBJ,MAAM,IAAI,cAAc;CAQ5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,yBAAyB,CAAC;KACnD;CACF"}
1
+ {"version":3,"file":"breadcrumb-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/breadcrumb/breadcrumb-group/breadcrumb-group.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAUb,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,eAAe,CAAC;;AAIvB;;;;GAIG;AACH,qBAEM,yBAA0B,SAAQ,8BAEvC;IACC,gBAAgC,IAAI,gBAAgB;IACpD,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,mBAA4B,mBAAmB,WAAsB;IAErE,yCAAyC;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;IAEzE,OAAO,CAAC,eAAe,CAIpB;IACH,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAS;;IAO9B,OAAO,CAAC,cAAc;cAiBH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;cAQ3E,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IAa3F,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,UAAU;IAYlB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAK1B,kGAAkG;IAClG,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,eAAe;cAgBJ,MAAM,IAAI,cAAc;CAQ5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,yBAAyB,CAAC;KACnD;CACF"}