@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
@@ -21,14 +21,11 @@ const optionObserverConfig = {
21
21
  characterData: true
22
22
  };
23
23
  let SbbOptionBaseElement = (() => {
24
- var _negative_accessor_storage, _disabledFromGroup_accessor_storage, _groupLabel_accessor_storage, _label_accessor_storage, _disableLabelHighlight_accessor_storage, __highlightString_accessor_storage, __inertAriaGroups_accessor_storage, _a;
24
+ var _disabledFromGroup_accessor_storage, _groupLabel_accessor_storage, _label_accessor_storage, _disableLabelHighlight_accessor_storage, __highlightString_accessor_storage, __inertAriaGroups_accessor_storage, _a;
25
25
  let _classSuper = SbbDisabledMixin(SbbIconNameMixin(SbbElementInternalsMixin(SbbHydrationMixin(LitElement))));
26
26
  let _instanceExtraInitializers = [];
27
27
  let _set_value_decorators;
28
28
  let _set_selected_decorators;
29
- let _negative_decorators;
30
- let _negative_initializers = [];
31
- let _negative_extraInitializers = [];
32
29
  let _disabledFromGroup_decorators;
33
30
  let _disabledFromGroup_initializers = [];
34
31
  let _disabledFromGroup_extraInitializers = [];
@@ -50,7 +47,6 @@ let SbbOptionBaseElement = (() => {
50
47
  return _a = class extends _classSuper {
51
48
  constructor() {
52
49
  super();
53
- __privateAdd(this, _negative_accessor_storage);
54
50
  __privateAdd(this, _disabledFromGroup_accessor_storage);
55
51
  __privateAdd(this, _groupLabel_accessor_storage);
56
52
  __privateAdd(this, _label_accessor_storage);
@@ -58,8 +54,7 @@ let SbbOptionBaseElement = (() => {
58
54
  __privateAdd(this, __highlightString_accessor_storage);
59
55
  __privateAdd(this, __inertAriaGroups_accessor_storage);
60
56
  this._value = (__runInitializers(this, _instanceExtraInitializers), null);
61
- __privateSet(this, _negative_accessor_storage, __runInitializers(this, _negative_initializers, false));
62
- __privateSet(this, _disabledFromGroup_accessor_storage, (__runInitializers(this, _negative_extraInitializers), __runInitializers(this, _disabledFromGroup_initializers, false)));
57
+ __privateSet(this, _disabledFromGroup_accessor_storage, __runInitializers(this, _disabledFromGroup_initializers, false));
63
58
  __privateSet(this, _groupLabel_accessor_storage, (__runInitializers(this, _disabledFromGroup_extraInitializers), __runInitializers(this, _groupLabel_initializers, "")));
64
59
  __privateSet(this, _label_accessor_storage, (__runInitializers(this, _groupLabel_extraInitializers), __runInitializers(this, _label_initializers, void 0)));
65
60
  __privateSet(this, _disableLabelHighlight_accessor_storage, (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _disableLabelHighlight_initializers, false)));
@@ -109,13 +104,6 @@ let SbbOptionBaseElement = (() => {
109
104
  get selected() {
110
105
  return this.hasAttribute("selected");
111
106
  }
112
- /** Whether to apply the negative styling */
113
- get negative() {
114
- return __privateGet(this, _negative_accessor_storage);
115
- }
116
- set negative(value) {
117
- __privateSet(this, _negative_accessor_storage, value);
118
- }
119
107
  /** Whether the component must be set disabled due disabled attribute on sbb-optgroup. */
120
108
  get disabledFromGroup() {
121
109
  return __privateGet(this, _disabledFromGroup_accessor_storage);
@@ -177,26 +165,12 @@ let SbbOptionBaseElement = (() => {
177
165
  connectedCallback() {
178
166
  super.connectedCallback();
179
167
  this.id ||= `${this.optionId}-${nextId++}`;
180
- if (this.hydrationRequired) {
181
- this.hydrationComplete.then(() => this.init());
182
- } else {
183
- this.init();
184
- }
185
168
  }
186
169
  requestUpdate(name, oldValue, options) {
187
170
  super.requestUpdate(name, oldValue, options);
188
171
  if (name === "disabled" || name === "disabledFromGroup") {
189
- if (this.disabled || this.disabledFromGroup) {
190
- this.internals.states.add("disabled");
191
- } else {
192
- this.internals.states.delete("disabled");
193
- }
194
- }
195
- }
196
- willUpdate(changedProperties) {
197
- super.willUpdate(changedProperties);
198
- if (changedProperties.has("disabled")) {
199
- setOrRemoveAttribute(this, "tabindex", isAndroid && !this.disabled && 0);
172
+ this.toggleState("disabled", this.disabled || this.disabledFromGroup);
173
+ setOrRemoveAttribute(this, "tabindex", isAndroid && !this.disabled && !this.disabledFromGroup ? 0 : null);
200
174
  this.updateAriaDisabled();
201
175
  }
202
176
  }
@@ -206,17 +180,14 @@ let SbbOptionBaseElement = (() => {
206
180
  }
207
181
  updateDisableHighlight(disabled) {
208
182
  this.disableLabelHighlight = disabled;
209
- this.toggleAttribute("data-disable-highlight", disabled);
183
+ this.toggleState("disable-highlight", disabled);
210
184
  }
211
185
  /**
212
186
  * Whether the option is currently active.
213
187
  * @internal
214
188
  */
215
189
  setActive(value) {
216
- this.toggleAttribute("data-active", value);
217
- }
218
- init() {
219
- this.setAttributeFromParent();
190
+ this.toggleState("active", value);
220
191
  }
221
192
  updateAriaDisabled() {
222
193
  this.internals.ariaDisabled = this.disabled || this.disabledFromGroup ? "true" : null;
@@ -284,11 +255,10 @@ let SbbOptionBaseElement = (() => {
284
255
  </div>
285
256
  `;
286
257
  }
287
- }, _negative_accessor_storage = new WeakMap(), _disabledFromGroup_accessor_storage = new WeakMap(), _groupLabel_accessor_storage = new WeakMap(), _label_accessor_storage = new WeakMap(), _disableLabelHighlight_accessor_storage = new WeakMap(), __highlightString_accessor_storage = new WeakMap(), __inertAriaGroups_accessor_storage = new WeakMap(), (() => {
258
+ }, _disabledFromGroup_accessor_storage = new WeakMap(), _groupLabel_accessor_storage = new WeakMap(), _label_accessor_storage = new WeakMap(), _disableLabelHighlight_accessor_storage = new WeakMap(), __highlightString_accessor_storage = new WeakMap(), __inertAriaGroups_accessor_storage = new WeakMap(), (() => {
288
259
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
289
260
  _set_value_decorators = [property()];
290
261
  _set_selected_decorators = [property({ type: Boolean })];
291
- _negative_decorators = [state()];
292
262
  _disabledFromGroup_decorators = [state()];
293
263
  _groupLabel_decorators = [state()];
294
264
  _label_decorators = [state()];
@@ -301,9 +271,6 @@ let SbbOptionBaseElement = (() => {
301
271
  __esDecorate(_a, null, _set_selected_decorators, { kind: "setter", name: "selected", static: false, private: false, access: { has: (obj) => "selected" in obj, set: (obj, value) => {
302
272
  obj.selected = value;
303
273
  } }, metadata: _metadata }, null, _instanceExtraInitializers);
304
- __esDecorate(_a, null, _negative_decorators, { kind: "accessor", name: "negative", static: false, private: false, access: { has: (obj) => "negative" in obj, get: (obj) => obj.negative, set: (obj, value) => {
305
- obj.negative = value;
306
- } }, metadata: _metadata }, _negative_initializers, _negative_extraInitializers);
307
274
  __esDecorate(_a, null, _disabledFromGroup_decorators, { kind: "accessor", name: "disabledFromGroup", static: false, private: false, access: { has: (obj) => "disabledFromGroup" in obj, get: (obj) => obj.disabledFromGroup, set: (obj, value) => {
308
275
  obj.disabledFromGroup = value;
309
276
  } }, metadata: _metadata }, _disabledFromGroup_initializers, _disabledFromGroup_extraInitializers);
@@ -330,4 +297,4 @@ let SbbOptionBaseElement = (() => {
330
297
  export {
331
298
  SbbOptionBaseElement
332
299
  };
333
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL29wdGlvbi9vcHRpb24vb3B0aW9uLWJhc2UtZWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNdXRhdGlvbkNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL211dGF0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBpc0FuZHJvaWQsIGlzQmxpbmssIGlzU2FmYXJpLCBzZXRPclJlbW92ZUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7XG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbixcbiAgU2JiSHlkcmF0aW9uTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLnRzJztcblxuaW1wb3J0ICcuLi8uLi9zY3JlZW4tcmVhZGVyLW9ubHkudHMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBncm91cHMgbGFiZWxzIGFyZSBub3QgcmVhZCBieSBWb2ljZU92ZXIuXG4gKiBUbyBzb2x2ZSB0aGUgcHJvYmxlbSwgd2UgcmVtb3ZlIHRoZSByb2xlPVwiZ3JvdXBcIiBhbmQgYWRkIGFuIGhpZGRlbiBzcGFuIGNvbnRhaW5pbmcgdGhlIGdyb3VwIG5hbWVcbiAqIFRPRE86IFdlIHNob3VsZCBwZXJpb2RpY2FsbHkgY2hlY2sgaWYgaXQgaGFzIGJlZW4gc29sdmVkIGFuZCwgaWYgc28sIHJlbW92ZSB0aGUgcHJvcGVydHkuXG4gKi9cbmNvbnN0IGluZXJ0QXJpYUdyb3VwcyA9IGlzU2FmYXJpO1xuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF0dHJpYnV0ZSB0byBsb29rIGF0IGlmIGNvbXBvbmVudCBpcyBuZXN0ZWQgaW4gYW4gb3B0aW9uIGdyb3VwICovXG5jb25zdCBvcHRpb25PYnNlcnZlckNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIGNoaWxkTGlzdDogdHJ1ZSxcbiAgc3VidHJlZTogdHJ1ZSxcbiAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJPcHRpb25CYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkljb25OYW1lTWl4aW4oU2JiRWxlbWVudEludGVybmFsc01peGluKFNiYkh5ZHJhdGlvbk1peGluKExpdEVsZW1lbnQpKSksXG4pIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgb3B0aW9uc2VsZWN0ZWQ6ICdvcHRpb25zZWxlY3RlZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9wdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBvcHRpb24uXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICogRHVlIHRvIHRoaXMsIGl0IGlzIGltcGxlbWVudGVkIGFzIGEgZ2V0dGVyL3NldHRlciBhbmQgdGhlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaygpIGhhbmRsZXMgdGhlIGRpZmYgY2hlY2suXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGAke3ZhbHVlfWApO1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiAodGhpcy5fdmFsdWUgPz8gdGhpcy5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpIGFzIFQ7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCB2YWx1ZSk7XG4gICAgdGhpcy5fdXBkYXRlQXJpYVNlbGVjdGVkKCk7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoJ3NlbGVjdGVkJyk7XG4gIH1cblxuICAvKiogV2hldGhlciB0byBhcHBseSB0aGUgbmVnYXRpdmUgc3R5bGluZyAqL1xuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgbmVnYXRpdmUgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IG11c3QgYmUgc2V0IGRpc2FibGVkIGR1ZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb24gc2JiLW9wdGdyb3VwLiAqL1xuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZGlzYWJsZWRGcm9tR3JvdXAgPSBmYWxzZTtcblxuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZ3JvdXBMYWJlbCA9ICcnO1xuXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBhY2Nlc3NvciBsYWJlbCE6IHN0cmluZztcblxuICAvKiogRGlzYWJsZSB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBsYWJlbC4gKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGRpc2FibGVMYWJlbEhpZ2hsaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgcG9ydGlvbiBvZiB0aGUgaGlnaGxpZ2h0ZWQgbGFiZWwuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hpZ2hsaWdodFN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaW5lcnRBcmlhR3JvdXBzID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMuc2VsZWN0QnlDbGljayhlKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBNdXRhdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgICAgICBjb25maWc6IG9wdGlvbk9ic2VydmVyQ29uZmlnLFxuICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTtcbiAgICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uTGFiZWxDaGFuZ2VkJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoaW5lcnRBcmlhR3JvdXBzKSB7XG4gICAgICBpZiAodGhpcy5oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX2luZXJ0QXJpYUdyb3VwcyA9IGluZXJ0QXJpYUdyb3VwcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5lcnRBcmlhR3JvdXBzID0gaW5lcnRBcmlhR3JvdXBzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKG5hbWUgIT09ICd2YWx1ZScgfHwgb2xkICE9PSB2YWx1ZSkge1xuICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIaWdobGlnaHQgdGhlIGxhYmVsIG9mIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHZhbHVlIHRoZSBoaWdobGlnaHRlZCBwb3J0aW9uIG9mIHRoZSBsYWJlbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBoaWdobGlnaHQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodFN0cmluZyA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbihzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgLyoqIEVtaXRzIHdoZW4gYW4gb3B0aW9uIHdhcyBzZWxlY3RlZCBieSB1c2VyLiAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uc2VsZWN0ZWQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlkIHx8PSBgJHt0aGlzLm9wdGlvbklkfS0ke25leHRJZCsrfWA7XG4gICAgaWYgKHRoaXMuaHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLmluaXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmIChuYW1lID09PSAnZGlzYWJsZWQnIHx8IG5hbWUgPT09ICdkaXNhYmxlZEZyb21Hcm91cCcpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWRGcm9tR3JvdXApIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnZGlzYWJsZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2Rpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAndGFiaW5kZXgnLCBpc0FuZHJvaWQgJiYgIXRoaXMuZGlzYWJsZWQgJiYgMCk7XG4gICAgICB0aGlzLnVwZGF0ZUFyaWFEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIEluaXQgZmlyc3Qgc2VsZWN0IHN0YXRlIGJlY2F1c2UgZmFsc2Ugd291bGQgbm90IGNhbGwgc2V0dGVyIG9mIHNlbGVjdGVkIHByb3BlcnR5LlxuICAgIHRoaXMuX3VwZGF0ZUFyaWFTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0QXR0cmlidXRlRnJvbVBhcmVudCgpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVEaXNhYmxlSGlnaGxpZ2h0KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlTGFiZWxIaWdobGlnaHQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1kaXNhYmxlLWhpZ2hsaWdodCcsIGRpc2FibGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0QWN0aXZlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtYWN0aXZlJywgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVGcm9tUGFyZW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlQXJpYURpc2FibGVkKCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCA/ICd0cnVlJyA6IG51bGw7XG5cbiAgICAvLyBMaXN0ZW5lZCBieSBhdXRvY29tcGxldGVcbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVkaXNhYmxlZGNoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVBcmlhU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYVNlbGVjdGVkID0gYCR7dGhpcy5zZWxlY3RlZH1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUhpZ2hsaWdodFN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNsb3ROb2RlcyA9IEFycmF5LmZyb20odGhpcy5jaGlsZE5vZGVzID8/IFtdKS5maWx0ZXIoXG4gICAgICAobikgPT4gbi5ub2RlVHlwZSAhPT0gTm9kZS5DT01NRU5UX05PREUgJiYgKCEobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG4uc2xvdCAhPT0gJ2ljb24nKSxcbiAgICApO1xuICAgIGNvbnN0IGxhYmVsTm9kZXMgPSBzbG90Tm9kZXMuZmlsdGVyKChlbCkgPT4gZWwubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSBhcyBUZXh0W107XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBoaWdobGlnaHQgaWYgdGhlIHNsb3QgY29udGFpbiBtb3JlIHRoYW4ganVzdCB0ZXh0IG5vZGVzLlxuICAgIC8vIFdlIG5lZWQgdG8gaWdub3JlIHRlbXBsYXRlIGVsZW1lbnRzLCBhcyBTU1IgYWRkcyBhIGRlY2xhcmF0aXZlIHNoYWRvdyBET01cbiAgICAvLyBpbiB0aGUgZm9ybSBvZiBhIHRlbXBsYXRlIGVsZW1lbnQuXG4gICAgaWYgKFxuICAgICAgbGFiZWxOb2Rlcy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHNsb3ROb2Rlcy5maWx0ZXIoKG4pID0+ICEobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG4ubG9jYWxOYW1lICE9PSAndGVtcGxhdGUnKS5sZW5ndGggIT09XG4gICAgICAgIGxhYmVsTm9kZXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVIaWdobGlnaHQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFiZWwgPSBsYWJlbE5vZGVzXG4gICAgICAubWFwKChsKSA9PiBsLndob2xlVGV4dClcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwudHJpbSgpKVxuICAgICAgLmpvaW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIaWdobGlnaHRlZExhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodFN0cmluZyB8fCAhdGhpcy5faGlnaGxpZ2h0U3RyaW5nLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIGh0bWxgJHt0aGlzLmxhYmVsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hJbmRleCA9IHRoaXMubGFiZWwhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9oaWdobGlnaHRTdHJpbmcudG9Mb3dlckNhc2UoKSk7XG5cbiAgICBpZiAobWF0Y2hJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBodG1sYCR7dGhpcy5sYWJlbH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZygwLCBtYXRjaEluZGV4KTtcbiAgICBjb25zdCBoaWdobGlnaHRlZCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZyhcbiAgICAgIG1hdGNoSW5kZXgsXG4gICAgICBtYXRjaEluZGV4ICsgdGhpcy5faGlnaGxpZ2h0U3RyaW5nLmxlbmd0aCxcbiAgICApO1xuICAgIGNvbnN0IHBvc3RmaXggPSB0aGlzLmxhYmVsIS5zdWJzdHJpbmcobWF0Y2hJbmRleCArIHRoaXMuX2hpZ2hsaWdodFN0cmluZy5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3ByZWZpeH08L3NwYW4+PHNwYW4+JHtoaWdobGlnaHRlZH08L3NwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3Bvc3RmaXh9PC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVySWNvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19pY29uXCI+ICR7dGhpcy5yZW5kZXJJY29uU2xvdCgpfSA8L3NwYW4+YDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJMYWJlbCgpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbCAmJiAhdGhpcy5kaXNhYmxlTGFiZWxIaWdobGlnaHQgPyB0aGlzLmdldEhpZ2hsaWdodGVkTGFiZWwoKSA6IG5vdGhpbmc7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyVGljaygpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICByZXR1cm4gbm90aGluZztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1vcHRpb25fX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW9wdGlvblwiPlxuICAgICAgICAgICR7dGhpcy5yZW5kZXJJY29uKCl9XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19sYWJlbFwiPlxuICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLmhhbmRsZUhpZ2hsaWdodFN0YXRlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj0ke1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFNjcmVlbiByZWFkZXJzIHdpdGggQ2hyb21pdW0gcmVhZCB0aGUgb3B0aW9uIHR3aWNlLlxuICAgICAgICAgICAgICAgICAqIFdlIHRoZXJlZm9yZSBoYXZlIHRvIGhpZGUgdGhlIG9wdGlvbiBmb3IgdGhlIHNjcmVlbiByZWFkZXJzLlxuICAgICAgICAgICAgICAgICAqIFRPRE86IFJlY2hlY2sgcGVyaW9kaWNhbGx5IGlmIHRoaXMgaXMgc3RpbGwgbmVjZXNzYXJ5LlxuICAgICAgICAgICAgICAgICAqIGh0dHBzOi8vaXNzdWVzLmNocm9taXVtLm9yZy9pc3N1ZXMvNDYwMTY1NzQxXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaXNCbGluayA/ICd0cnVlJyA6IG5vdGhpbmdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAke3RoaXMucmVuZGVyTGFiZWwoKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICR7dGhpcy5faW5lcnRBcmlhR3JvdXBzICYmIHRoaXMuZ3JvdXBMYWJlbFxuICAgICAgICAgICAgICA/IGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+ICgke3RoaXMuZ3JvdXBMYWJlbH0pPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAke3RoaXMucmVuZGVyVGljaygpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBvcHRpb25zZWxlY3RlZDogRXZlbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsSUFBSSxTQUFTO0FBT2IsTUFBTSxrQkFBa0I7QUFHeEIsTUFBTSx1QkFBNkM7QUFBQSxFQUNqRCxXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxlQUFlOztJQUdLLHdCQUFvQixNQUFBOztvQkFBcUIsaUJBQzdELGlCQUFpQix5QkFBeUIsa0JBQWtCLFVBQVUsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFEckQsU0FBQSxtQkFBeUMsWUFFOUQ7QUFBQSxJQXVEQyxjQUFBO0FBQ0UsWUFBQTtBQWxCTztBQUdBO0FBRUE7QUFFQTtBQUdBO0FBR0E7QUFFQTtBQTVCRCxXQUFBLFVBM0JZLGtCQUFBLE1BQUEsMEJBQUEsR0EyQk87QUFhQyx5QkFBQSw0QkFBQSxrQkFBQSxNQUFBLHdCQUFXLEtBQUs7QUFHaEIseUJBQUEsc0NBQUEsa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsaUNBQW9CLEtBQUs7QUFFekIseUJBQUEsK0JBQUEsa0JBQUEsTUFBQSxvQ0FBQSxHQUFBLGtCQUFBLE1BQUEsMEJBQWEsRUFBRTtBQUVmLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsNkJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFBLE1BQUE7QUFHQSx5QkFBQSwwQ0FBQSxrQkFBQSxNQUFBLHdCQUFBLEdBQUEsa0JBQUEsTUFBQSxxQ0FBaUMsS0FBSztBQUd4Qyx5QkFBQSxxQ0FBQSxrQkFBQSxNQUFBLHdDQUFBLEdBQUEsa0JBQUEsTUFBQSxnQ0FBa0MsSUFBSTtBQUV0Qyx5QkFBQSxxQ0FBQSxrQkFBQSxNQUFBLG1DQUFBLEdBQUEsa0JBQUEsTUFBQSxnQ0FBbUIsS0FBSzs7QUFJaEQsV0FBSyxtQkFBbUIsU0FBUyxDQUFDLE1BQWtCLEtBQUssY0FBYyxDQUFDLEdBQUc7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
300
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL29wdGlvbi9vcHRpb24vb3B0aW9uLWJhc2UtZWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNdXRhdGlvbkNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL211dGF0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBpc0FuZHJvaWQsIGlzQmxpbmssIGlzU2FmYXJpLCBzZXRPclJlbW92ZUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7XG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbixcbiAgU2JiSHlkcmF0aW9uTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLnRzJztcblxuaW1wb3J0ICcuLi8uLi9zY3JlZW4tcmVhZGVyLW9ubHkudHMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBncm91cHMgbGFiZWxzIGFyZSBub3QgcmVhZCBieSBWb2ljZU92ZXIuXG4gKiBUbyBzb2x2ZSB0aGUgcHJvYmxlbSwgd2UgcmVtb3ZlIHRoZSByb2xlPVwiZ3JvdXBcIiBhbmQgYWRkIGFuIGhpZGRlbiBzcGFuIGNvbnRhaW5pbmcgdGhlIGdyb3VwIG5hbWVcbiAqIFRPRE86IFdlIHNob3VsZCBwZXJpb2RpY2FsbHkgY2hlY2sgaWYgaXQgaGFzIGJlZW4gc29sdmVkIGFuZCwgaWYgc28sIHJlbW92ZSB0aGUgcHJvcGVydHkuXG4gKi9cbmNvbnN0IGluZXJ0QXJpYUdyb3VwcyA9IGlzU2FmYXJpO1xuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF0dHJpYnV0ZSB0byBsb29rIGF0IGlmIGNvbXBvbmVudCBpcyBuZXN0ZWQgaW4gYW4gb3B0aW9uIGdyb3VwICovXG5jb25zdCBvcHRpb25PYnNlcnZlckNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIGNoaWxkTGlzdDogdHJ1ZSxcbiAgc3VidHJlZTogdHJ1ZSxcbiAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJPcHRpb25CYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkljb25OYW1lTWl4aW4oU2JiRWxlbWVudEludGVybmFsc01peGluKFNiYkh5ZHJhdGlvbk1peGluKExpdEVsZW1lbnQpKSksXG4pIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgb3B0aW9uc2VsZWN0ZWQ6ICdvcHRpb25zZWxlY3RlZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9wdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBvcHRpb24uXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICogRHVlIHRvIHRoaXMsIGl0IGlzIGltcGxlbWVudGVkIGFzIGEgZ2V0dGVyL3NldHRlciBhbmQgdGhlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaygpIGhhbmRsZXMgdGhlIGRpZmYgY2hlY2suXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGAke3ZhbHVlfWApO1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiAodGhpcy5fdmFsdWUgPz8gdGhpcy5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpIGFzIFQ7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCB2YWx1ZSk7XG4gICAgdGhpcy5fdXBkYXRlQXJpYVNlbGVjdGVkKCk7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoJ3NlbGVjdGVkJyk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IG11c3QgYmUgc2V0IGRpc2FibGVkIGR1ZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb24gc2JiLW9wdGdyb3VwLiAqL1xuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZGlzYWJsZWRGcm9tR3JvdXAgPSBmYWxzZTtcblxuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZ3JvdXBMYWJlbCA9ICcnO1xuXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBhY2Nlc3NvciBsYWJlbCE6IHN0cmluZztcblxuICAvKiogRGlzYWJsZSB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBsYWJlbC4gKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGRpc2FibGVMYWJlbEhpZ2hsaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgcG9ydGlvbiBvZiB0aGUgaGlnaGxpZ2h0ZWQgbGFiZWwuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hpZ2hsaWdodFN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaW5lcnRBcmlhR3JvdXBzID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMuc2VsZWN0QnlDbGljayhlKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBNdXRhdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgICAgICBjb25maWc6IG9wdGlvbk9ic2VydmVyQ29uZmlnLFxuICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTtcbiAgICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uTGFiZWxDaGFuZ2VkJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoaW5lcnRBcmlhR3JvdXBzKSB7XG4gICAgICBpZiAodGhpcy5oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX2luZXJ0QXJpYUdyb3VwcyA9IGluZXJ0QXJpYUdyb3VwcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5lcnRBcmlhR3JvdXBzID0gaW5lcnRBcmlhR3JvdXBzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKG5hbWUgIT09ICd2YWx1ZScgfHwgb2xkICE9PSB2YWx1ZSkge1xuICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIaWdobGlnaHQgdGhlIGxhYmVsIG9mIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHZhbHVlIHRoZSBoaWdobGlnaHRlZCBwb3J0aW9uIG9mIHRoZSBsYWJlbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBoaWdobGlnaHQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodFN0cmluZyA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbihzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgLyoqIEVtaXRzIHdoZW4gYW4gb3B0aW9uIHdhcyBzZWxlY3RlZCBieSB1c2VyLiAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uc2VsZWN0ZWQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlkIHx8PSBgJHt0aGlzLm9wdGlvbklkfS0ke25leHRJZCsrfWA7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAobmFtZSA9PT0gJ2Rpc2FibGVkJyB8fCBuYW1lID09PSAnZGlzYWJsZWRGcm9tR3JvdXAnKSB7XG4gICAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCk7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ3RhYmluZGV4JyxcbiAgICAgICAgaXNBbmRyb2lkICYmICF0aGlzLmRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkRnJvbUdyb3VwID8gMCA6IG51bGwsXG4gICAgICApO1xuICAgICAgdGhpcy51cGRhdGVBcmlhRGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBJbml0IGZpcnN0IHNlbGVjdCBzdGF0ZSBiZWNhdXNlIGZhbHNlIHdvdWxkIG5vdCBjYWxsIHNldHRlciBvZiBzZWxlY3RlZCBwcm9wZXJ0eS5cbiAgICB0aGlzLl91cGRhdGVBcmlhU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZWxlY3RCeUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcblxuICBwcm90ZWN0ZWQgdXBkYXRlRGlzYWJsZUhpZ2hsaWdodChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0ID0gZGlzYWJsZWQ7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnZGlzYWJsZS1oaWdobGlnaHQnLCBkaXNhYmxlZCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3B0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNldEFjdGl2ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2FjdGl2ZScsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVBcmlhRGlzYWJsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYURpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwID8gJ3RydWUnIDogbnVsbDtcblxuICAgIC8vIExpc3RlbmVkIGJ5IGF1dG9jb21wbGV0ZVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCfJtWRpc2FibGVkY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUFyaWFTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmludGVybmFscy5hcmlhU2VsZWN0ZWQgPSBgJHt0aGlzLnNlbGVjdGVkfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3Qgc2xvdE5vZGVzID0gQXJyYXkuZnJvbSh0aGlzLmNoaWxkTm9kZXMgPz8gW10pLmZpbHRlcihcbiAgICAgIChuKSA9PiBuLm5vZGVUeXBlICE9PSBOb2RlLkNPTU1FTlRfTk9ERSAmJiAoIShuIGluc3RhbmNlb2YgRWxlbWVudCkgfHwgbi5zbG90ICE9PSAnaWNvbicpLFxuICAgICk7XG4gICAgY29uc3QgbGFiZWxOb2RlcyA9IHNsb3ROb2Rlcy5maWx0ZXIoKGVsKSA9PiBlbC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIGFzIFRleHRbXTtcblxuICAgIC8vIERpc2FibGUgdGhlIGhpZ2hsaWdodCBpZiB0aGUgc2xvdCBjb250YWluIG1vcmUgdGhhbiBqdXN0IHRleHQgbm9kZXMuXG4gICAgLy8gV2UgbmVlZCB0byBpZ25vcmUgdGVtcGxhdGUgZWxlbWVudHMsIGFzIFNTUiBhZGRzIGEgZGVjbGFyYXRpdmUgc2hhZG93IERPTVxuICAgIC8vIGluIHRoZSBmb3JtIG9mIGEgdGVtcGxhdGUgZWxlbWVudC5cbiAgICBpZiAoXG4gICAgICBsYWJlbE5vZGVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgc2xvdE5vZGVzLmZpbHRlcigobikgPT4gIShuIGluc3RhbmNlb2YgRWxlbWVudCkgfHwgbi5sb2NhbE5hbWUgIT09ICd0ZW1wbGF0ZScpLmxlbmd0aCAhPT1cbiAgICAgICAgbGFiZWxOb2Rlcy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZUhpZ2hsaWdodCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsTm9kZXNcbiAgICAgIC5tYXAoKGwpID0+IGwud2hvbGVUZXh0KVxuICAgICAgLmZpbHRlcigobCkgPT4gbC50cmltKCkpXG4gICAgICAuam9pbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEhpZ2hsaWdodGVkTGFiZWwoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICghdGhpcy5faGlnaGxpZ2h0U3RyaW5nIHx8ICF0aGlzLl9oaWdobGlnaHRTdHJpbmcudHJpbSgpKSB7XG4gICAgICByZXR1cm4gaHRtbGAke3RoaXMubGFiZWx9YDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaEluZGV4ID0gdGhpcy5sYWJlbCEudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuX2hpZ2hsaWdodFN0cmluZy50b0xvd2VyQ2FzZSgpKTtcblxuICAgIGlmIChtYXRjaEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGh0bWxgJHt0aGlzLmxhYmVsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5sYWJlbCEuc3Vic3RyaW5nKDAsIG1hdGNoSW5kZXgpO1xuICAgIGNvbnN0IGhpZ2hsaWdodGVkID0gdGhpcy5sYWJlbCEuc3Vic3RyaW5nKFxuICAgICAgbWF0Y2hJbmRleCxcbiAgICAgIG1hdGNoSW5kZXggKyB0aGlzLl9oaWdobGlnaHRTdHJpbmcubGVuZ3RoLFxuICAgICk7XG4gICAgY29uc3QgcG9zdGZpeCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZyhtYXRjaEluZGV4ICsgdGhpcy5faGlnaGxpZ2h0U3RyaW5nLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9fbGFiZWwtLWhpZ2hsaWdodFwiPiR7cHJlZml4fTwvc3Bhbj48c3Bhbj4ke2hpZ2hsaWdodGVkfTwvc3BhblxuICAgICAgPjxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9fbGFiZWwtLWhpZ2hsaWdodFwiPiR7cG9zdGZpeH08L3NwYW4+XG4gICAgYDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJJY29uKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2ljb25cIj4gJHt0aGlzLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5gO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlckxhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHwgdHlwZW9mIG5vdGhpbmcge1xuICAgIHJldHVybiB0aGlzLmxhYmVsICYmICF0aGlzLmRpc2FibGVMYWJlbEhpZ2hsaWdodCA/IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRMYWJlbCgpIDogbm90aGluZztcbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJUaWNrKCk6IFRlbXBsYXRlUmVzdWx0IHwgdHlwZW9mIG5vdGhpbmcge1xuICAgIHJldHVybiBub3RoaW5nO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLW9wdGlvbl9fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3B0aW9uXCI+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlckljb24oKX1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuaGFuZGxlSGlnaGxpZ2h0U3RhdGV9Pjwvc2xvdD5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSR7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogU2NyZWVuIHJlYWRlcnMgd2l0aCBDaHJvbWl1bSByZWFkIHRoZSBvcHRpb24gdHdpY2UuXG4gICAgICAgICAgICAgICAgICogV2UgdGhlcmVmb3JlIGhhdmUgdG8gaGlkZSB0aGUgb3B0aW9uIGZvciB0aGUgc2NyZWVuIHJlYWRlcnMuXG4gICAgICAgICAgICAgICAgICogVE9ETzogUmVjaGVjayBwZXJpb2RpY2FsbHkgaWYgdGhpcyBpcyBzdGlsbCBuZWNlc3NhcnkuXG4gICAgICAgICAgICAgICAgICogaHR0cHM6Ly9pc3N1ZXMuY2hyb21pdW0ub3JnL2lzc3Vlcy80NjAxNjU3NDFcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpc0JsaW5rID8gJ3RydWUnIDogbm90aGluZ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICR7dGhpcy5yZW5kZXJMYWJlbCgpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgJHt0aGlzLl9pbmVydEFyaWFHcm91cHMgJiYgdGhpcy5ncm91cExhYmVsXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLXNjcmVlbi1yZWFkZXItb25seT4gKCR7dGhpcy5ncm91cExhYmVsfSk8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICR7dGhpcy5yZW5kZXJUaWNrKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIG9wdGlvbnNlbGVjdGVkOiBFdmVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxJQUFJLFNBQVM7QUFPYixNQUFNLGtCQUFrQjtBQUd4QixNQUFNLHVCQUE2QztBQUFBLEVBQ2pELFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULGVBQWU7O0lBR0ssd0JBQW9CLE1BQUE7O29CQUFxQixpQkFDN0QsaUJBQWlCLHlCQUF5QixrQkFBa0IsVUFBVSxDQUFDLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQURyRCxTQUFBLG1CQUF5QyxZQUU5RDtBQUFBLElBb0RDLGNBQUE7QUFDRSxZQUFBO0FBZk87QUFFQTtBQUVBO0FBR0E7QUFHQTtBQUVBO0FBekJELFdBQUEsVUEzQlksa0JBQUEsTUFBQSwwQkFBQSxHQTJCTztBQWFDLHlCQUFBLHFDQUFBLGtCQUFBLE1BQUEsaUNBQW9CLEtBQUs7QUFFekIseUJBQUEsK0JBQUEsa0JBQUEsTUFBQSxvQ0FBQSxHQUFBLGtCQUFBLE1BQUEsMEJBQWEsRUFBRTtBQUVmLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsNkJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFBLE1BQUE7QUFH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
@@ -20,13 +20,14 @@ export declare class SbbOptionElement<T = string> extends SbbOptionBaseElement<T
20
20
  protected optionId: string;
21
21
  private set _variant(value);
22
22
  private get _variant();
23
- private set _isMultiple(value);
24
- private get _isMultiple();
23
+ private _variantInternal?;
25
24
  constructor();
26
- protected setAttributeFromParent(): void;
25
+ private _isMultiple;
26
+ private _handleNegativeChange;
27
+ connectedCallback(): void;
28
+ private _init;
27
29
  protected selectByClick(event: MouseEvent): void;
28
30
  protected selectViaUserInteraction(selected: boolean): void;
29
- protected init(): void;
30
31
  private _setVariantByContext;
31
32
  protected handleHighlightState(): void;
32
33
  protected renderIcon(): TemplateResult;
@@ -1 +1 @@
1
- {"version":3,"file":"option.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/option/option/option.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,OAAO,EAAE,MAAM,KAAK,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEhE;;;;;;;;GAQG;AACH,qBAEM,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IAChE,gBAAgC,IAAI,YAAY;IAChD,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,gBAAgC,MAAM;;;MAG3B;IAEX,SAAS,CAAC,QAAQ,SAAgB;IAElC,OAAO,KAAK,QAAQ,QAInB;IACD,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,WAAW,QAEtB;IACD,OAAO,KAAK,WAAW,GAEtB;;IAYD,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAUxC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;cAc7B,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;cAMjD,IAAI,IAAI,IAAI;IAS/B,OAAO,CAAC,oBAAoB;cAST,oBAAoB,IAAI,IAAI;cAS5B,UAAU,IAAI,cAAc;cAoB5B,WAAW,IAAI,cAAc,GAAG,OAAO,OAAO;cAO9C,UAAU,IAAI,cAAc,GAAG,OAAO,OAAO;CAKjE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;IAED,UAAU,2BAA2B;QACnC,qBAAqB,EAAE,KAAK,CAAC;KAC9B;CACF"}
1
+ {"version":3,"file":"option.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/option/option/option.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,OAAO,EAAE,MAAM,KAAK,CAAC;AAQpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEhE;;;;;;;;GAQG;AACH,qBAEM,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IAChE,gBAAgC,IAAI,YAAY;IAChD,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,gBAAgC,MAAM;;;MAG3B;IAEX,SAAS,CAAC,QAAQ,SAAgB;IAElC,OAAO,KAAK,QAAQ,QAQnB;IACD,OAAO,KAAK,QAAQ,GAEnB;IACD,OAAO,CAAC,gBAAgB,CAAC,CAAmB;;IA8B5C,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,qBAAqB;IAOb,iBAAiB,IAAI,IAAI;IAazC,OAAO,CAAC,KAAK;IAKb,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;cAc7B,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAMpE,OAAO,CAAC,oBAAoB;cAQT,oBAAoB,IAAI,IAAI;cAS5B,UAAU,IAAI,cAAc;cAoB5B,WAAW,IAAI,cAAc,GAAG,OAAO,OAAO;cAO9C,UAAU,IAAI,cAAc,GAAG,OAAO,OAAO;CAKjE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;IAED,UAAU,2BAA2B;QACnC,qBAAqB,EAAE,KAAK,CAAC;KAC9B;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { css, nothing, html } from "lit";
3
3
  import { customElement } from "lit/decorators.js";
4
- import { SbbAncestorWatcherController } from "../../core/controllers.js";
4
+ import { SbbPropertyWatcherController } from "../../core/controllers.js";
5
5
  import { boxSizingStyles } from "../../core/styles.js";
6
6
  import { SbbOptionBaseElement } from "./option-base-element.js";
7
7
  import "../../visual-checkbox.js";
@@ -26,7 +26,7 @@ const style = css`:host {
26
26
  display: block;
27
27
  }
28
28
 
29
- :host([data-negative]) {
29
+ :host(:is(:state(negative),[state--negative])) {
30
30
  --sbb-option-color: var(--sbb-color-3-negative);
31
31
  --sbb-option-icon-color: var(--sbb-color-5);
32
32
  --sbb-option-background-color-hover: var(--sbb-background-color-3-negative);
@@ -46,7 +46,7 @@ const style = css`:host {
46
46
  --sbb-option-background-color: var(--sbb-option-background-color-active);
47
47
  }
48
48
 
49
- :host(:not([data-disable-highlight])) .sbb-option__label slot {
49
+ :host(:not(:is(:state(disable-highlight),[state--disable-highlight]))) .sbb-option__label slot {
50
50
  display: none;
51
51
  }
52
52
 
@@ -59,16 +59,16 @@ const style = css`:host {
59
59
  }
60
60
  }
61
61
 
62
- :host([data-variant=select]) {
62
+ :host(:is(:state(variant-select),[state--variant-select])) {
63
63
  --sbb-option-column-gap: var(--sbb-spacing-fixed-2x);
64
64
  --sbb-option-justify-content: space-between;
65
65
  }
66
66
 
67
- :host([data-variant=select][data-multiple]) {
67
+ :host(:is(:state(variant-select),[state--variant-select]):is(:state(multiple),[state--multiple])) {
68
68
  --sbb-option-justify-content: start;
69
69
  }
70
70
 
71
- :host([data-active]) {
71
+ :host(:is(:state(active),[state--active])) {
72
72
  --sbb-option-focus-outline-color: var(--sbb-focus-outline-color);
73
73
  }
74
74
 
@@ -113,11 +113,11 @@ const style = css`:host {
113
113
  border: var(--sbb-focus-outline-width) solid var(--sbb-option-focus-outline-color);
114
114
  border-radius: var(--sbb-option-border-radius);
115
115
  }
116
- :host(:is(:state(disabled),[state--disabled]):not([data-multiple])) .sbb-option {
116
+ :host(:is(:state(disabled),[state--disabled]):not(:is(:state(multiple),[state--multiple]))) .sbb-option {
117
117
  position: relative;
118
118
  z-index: 0;
119
119
  }
120
- :host(:is(:state(disabled),[state--disabled]):not([data-multiple])) .sbb-option::before {
120
+ :host(:is(:state(disabled),[state--disabled]):not(:is(:state(multiple),[state--multiple]))) .sbb-option::before {
121
121
  content: "";
122
122
  display: block;
123
123
  position: absolute;
@@ -128,7 +128,7 @@ const style = css`:host {
128
128
  z-index: -1;
129
129
  }
130
130
  @media (forced-colors: active) {
131
- :host(:is(:state(disabled),[state--disabled]):not([data-multiple])) .sbb-option::before {
131
+ :host(:is(:state(disabled),[state--disabled]):not(:is(:state(multiple),[state--multiple]))) .sbb-option::before {
132
132
  border-color: GrayText;
133
133
  }
134
134
  }
@@ -156,42 +156,61 @@ let SbbOptionElement = (() => {
156
156
  let _classThis;
157
157
  let _classSuper = SbbOptionBaseElement;
158
158
  _a = class extends _classSuper {
159
- set _variant(state) {
160
- if (state) {
161
- this.setAttribute("data-variant", state);
159
+ set _variant(variant) {
160
+ if (this._variantInternal) {
161
+ this.internals.states.delete(`variant-${this._variantInternal}`);
162
+ }
163
+ this._variantInternal = variant;
164
+ if (this._variantInternal) {
165
+ this.internals.states.add(`variant-${this._variantInternal}`);
162
166
  }
163
167
  }
164
168
  get _variant() {
165
- return this.getAttribute("data-variant");
166
- }
167
- set _isMultiple(isMultiple) {
168
- this.toggleAttribute("data-multiple", isMultiple);
169
- }
170
- get _isMultiple() {
171
- return !this.hydrationRequired && this.hasAttribute("data-multiple");
169
+ return this._variantInternal ?? null;
172
170
  }
173
171
  constructor() {
174
172
  super();
175
173
  this.optionId = `sbb-option`;
176
- this.addController(new SbbAncestorWatcherController(this, () => this.closest("sbb-optgroup"), {
174
+ this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-optgroup"), {
177
175
  disabled: (p) => this.disabledFromGroup = p.disabled,
178
176
  label: (p) => this.groupLabel = p.label
179
177
  }));
178
+ this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-autocomplete"), {
179
+ negative: (e) => this._handleNegativeChange(e)
180
+ }));
181
+ this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-select"), {
182
+ multiple: (ancestor) => {
183
+ this.toggleState("multiple", ancestor.multiple);
184
+ this.requestUpdate();
185
+ },
186
+ negative: (e) => this._handleNegativeChange(e)
187
+ }));
188
+ }
189
+ _isMultiple() {
190
+ return !this.hydrationRequired && this.internals.states.has("multiple");
180
191
  }
181
- setAttributeFromParent() {
182
- this.negative = !!this.closest?.(
183
- // :is() selector not possible due to test environment
184
- `sbb-autocomplete[negative],sbb-form-field[negative]`
185
- );
186
- this.toggleAttribute("data-negative", this.negative);
187
- this.toggleAttribute("data-multiple", this._isMultiple);
192
+ _handleNegativeChange(ancestor) {
193
+ this.toggleState("negative", ancestor.negative);
194
+ this.requestUpdate();
195
+ }
196
+ connectedCallback() {
197
+ super.connectedCallback();
198
+ if (this.hydrationRequired) {
199
+ this.hydrationComplete.then(() => this._init());
200
+ } else {
201
+ this._init();
202
+ }
203
+ }
204
+ _init() {
205
+ this._setVariantByContext();
206
+ this.handleHighlightState();
188
207
  }
189
208
  selectByClick(event) {
190
209
  if (this.disabled || this.disabledFromGroup) {
191
210
  event.stopPropagation();
192
211
  return;
193
212
  }
194
- if (this._isMultiple) {
213
+ if (this._isMultiple()) {
195
214
  event.stopPropagation();
196
215
  this.selectViaUserInteraction(!this.selected);
197
216
  } else {
@@ -202,18 +221,12 @@ let SbbOptionElement = (() => {
202
221
  super.selectViaUserInteraction(selected);
203
222
  this.dispatchEvent(new Event("optionselectionchange", { bubbles: true, composed: true }));
204
223
  }
205
- init() {
206
- super.init();
207
- this._setVariantByContext();
208
- this.handleHighlightState();
209
- }
210
224
  _setVariantByContext() {
211
225
  if (this.closest?.("sbb-autocomplete")) {
212
226
  this._variant = "autocomplete";
213
227
  } else if (this.closest?.("sbb-select")) {
214
228
  this._variant = "select";
215
229
  }
216
- this._isMultiple = !!this.closest?.("sbb-select[multiple]");
217
230
  }
218
231
  handleHighlightState() {
219
232
  if (this._variant !== "autocomplete") {
@@ -225,14 +238,14 @@ let SbbOptionElement = (() => {
225
238
  renderIcon() {
226
239
  return html`
227
240
  <!-- Icon -->
228
- ${!this._isMultiple ? html` <span class="sbb-option__icon"> ${this.renderIconSlot()} </span>` : nothing}
241
+ ${!this._isMultiple() ? html` <span class="sbb-option__icon"> ${this.renderIconSlot()} </span>` : nothing}
229
242
 
230
243
  <!-- Checkbox -->
231
- ${this._isMultiple ? html`
244
+ ${this._isMultiple() ? html`
232
245
  <sbb-visual-checkbox
233
246
  ?checked=${this.selected}
234
247
  ?disabled=${this.disabled || this.disabledFromGroup}
235
- ?negative=${this.negative}
248
+ ?negative=${this.matches?.(":is(:state(negative),[state--negative])")}
236
249
  ></sbb-visual-checkbox>
237
250
  ` : nothing}
238
251
  `;
@@ -244,7 +257,7 @@ let SbbOptionElement = (() => {
244
257
  return super.renderLabel();
245
258
  }
246
259
  renderTick() {
247
- return this._variant === "select" && !this._isMultiple && this.selected ? html`<sbb-icon name="tick-small"></sbb-icon>` : nothing;
260
+ return this._variant === "select" && !this._isMultiple() && this.selected ? html`<sbb-icon name="tick-small"></sbb-icon>` : nothing;
248
261
  }
249
262
  }, _classThis = _a, (() => {
250
263
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -260,4 +273,4 @@ let SbbOptionElement = (() => {
260
273
  export {
261
274
  SbbOptionElement
262
275
  };
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL29wdGlvbi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkFuY2VzdG9yV2F0Y2hlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcblxuaW1wb3J0IHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuL29wdGlvbi1iYXNlLWVsZW1lbnQudHMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vb3B0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vdmlzdWFsLWNoZWNrYm94LnRzJztcblxuZXhwb3J0IHR5cGUgU2JiT3B0aW9uVmFyaWFudCA9ICdhdXRvY29tcGxldGUnIHwgJ3NlbGVjdCcgfCBudWxsO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIG9uIG9wdGlvbiBpdGVtIHdoaWNoIGNhbiBiZSB1c2VkIGluIGBzYmItc2VsZWN0YCBvciBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgb3B0aW9uIGxhYmVsLlxuICogQHNsb3QgaWNvbiAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhbiBpY29uLiBJZiBgaWNvbi1uYW1lYCBpcyBzZXQsIGEgc2JiLWljb24gd2lsbCBiZSB1c2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW9wdGlvbi1pY29uLWNvbnRhaW5lci1kaXNwbGF5PW5vbmVdIC0gQ2FuIGJlIHVzZWQgdG8gcmVzZXJ2ZSBzcGFjZSBldmVuXG4gKiB3aGVuIHByZXNlcnZlLWljb24tc3BhY2Ugb24gYXV0b2NvbXBsZXRlIGlzIG5vdCBzZXQgb3IgaWNvbk5hbWUgaXMgbm90IHNldC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZykgfCBudWxsXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1vcHRpb24nKVxuY2xhc3MgU2JiT3B0aW9uRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ29wdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBldmVudHMgPSB7XG4gICAgb3B0aW9uc2VsZWN0aW9uY2hhbmdlOiAnb3B0aW9uc2VsZWN0aW9uY2hhbmdlJyxcbiAgICBvcHRpb25zZWxlY3RlZDogJ29wdGlvbnNlbGVjdGVkJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcm90ZWN0ZWQgb3B0aW9uSWQgPSBgc2JiLW9wdGlvbmA7XG5cbiAgcHJpdmF0ZSBzZXQgX3ZhcmlhbnQoc3RhdGU6IFNiYk9wdGlvblZhcmlhbnQpIHtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLXZhcmlhbnQnLCBzdGF0ZSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZ2V0IF92YXJpYW50KCk6IFNiYk9wdGlvblZhcmlhbnQge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgnZGF0YS12YXJpYW50JykgYXMgU2JiT3B0aW9uVmFyaWFudDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IF9pc011bHRpcGxlKGlzTXVsdGlwbGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1tdWx0aXBsZScsIGlzTXVsdGlwbGUpO1xuICB9XG4gIHByaXZhdGUgZ2V0IF9pc011bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5oeWRyYXRpb25SZXF1aXJlZCAmJiB0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1tdWx0aXBsZScpO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFNiYkFuY2VzdG9yV2F0Y2hlckNvbnRyb2xsZXIodGhpcywgKCkgPT4gdGhpcy5jbG9zZXN0KCdzYmItb3B0Z3JvdXAnKSwge1xuICAgICAgICBkaXNhYmxlZDogKHApID0+ICh0aGlzLmRpc2FibGVkRnJvbUdyb3VwID0gcC5kaXNhYmxlZCksXG4gICAgICAgIGxhYmVsOiAocCkgPT4gKHRoaXMuZ3JvdXBMYWJlbCA9IHAubGFiZWwpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBdHRyaWJ1dGVGcm9tUGFyZW50KCk6IHZvaWQge1xuICAgIHRoaXMubmVnYXRpdmUgPSAhIXRoaXMuY2xvc2VzdD8uKFxuICAgICAgLy8gOmlzKCkgc2VsZWN0b3Igbm90IHBvc3NpYmxlIGR1ZSB0byB0ZXN0IGVudmlyb25tZW50XG4gICAgICBgc2JiLWF1dG9jb21wbGV0ZVtuZWdhdGl2ZV0sc2JiLWZvcm0tZmllbGRbbmVnYXRpdmVdYCxcbiAgICApO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSk7XG5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1tdWx0aXBsZScsIHRoaXMuX2lzTXVsdGlwbGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEJ5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNdWx0aXBsZSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbighdGhpcy5zZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0VmlhVXNlckludGVyYWN0aW9uKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24oc2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBzdXBlci5zZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24oc2VsZWN0ZWQpO1xuICAgIC8qKiBUaGUgb3B0aW9uc2VsZWN0aW9uY2hhbmdlIGV2ZW50IGlzIGRpc3BhdGNoZWQgd2hlbiB0aGUgb3B0aW9uIHNlbGVjdGlvbiBzdGF0dXMgY2hhbmdlcy4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcHRpb25zZWxlY3Rpb25jaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLmluaXQoKTtcbiAgICB0aGlzLl9zZXRWYXJpYW50QnlDb250ZXh0KCk7XG4gICAgLy8gV2UgbmVlZCB0byBjaGVjayBoaWdobGlnaHQgc3RhdGUgYm90aCBvbiBzbG90IGNoYW5nZSwgYnV0IGFsc28gd2hlbiBjb25uZWN0aW5nXG4gICAgLy8gdGhlIGVsZW1lbnQgdG8gdGhlIERPTS4gVGhlIHNsb3QgY2hhbmdlIGV2ZW50cyBtaWdodCBiZSBzd2FsbG93ZWQgd2hlbiB1c2luZyBkZWNsYXJhdGl2ZVxuICAgIC8vIHNoYWRvdyBET00gd2l0aCBTU1Igb3IgaWYgdGhlIERPTSBpcyBjaGFuZ2VkIHdoZW4gZGlzY29ubmVjdGVkLlxuICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFZhcmlhbnRCeUNvbnRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VzdD8uKCdzYmItYXV0b2NvbXBsZXRlJykpIHtcbiAgICAgIHRoaXMuX3ZhcmlhbnQgPSAnYXV0b2NvbXBsZXRlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xvc2VzdD8uKCdzYmItc2VsZWN0JykpIHtcbiAgICAgIHRoaXMuX3ZhcmlhbnQgPSAnc2VsZWN0JztcbiAgICB9XG4gICAgdGhpcy5faXNNdWx0aXBsZSA9ICEhdGhpcy5jbG9zZXN0Py4oJ3NiYi1zZWxlY3RbbXVsdGlwbGVdJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ZhcmlhbnQgIT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVIaWdobGlnaHQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VwZXIuaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJJY29uKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDwhLS0gSWNvbiAtLT5cbiAgICAgICR7IXRoaXMuX2lzTXVsdGlwbGVcbiAgICAgICAgPyBodG1sYCA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2ljb25cIj4gJHt0aGlzLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5gXG4gICAgICAgIDogbm90aGluZ31cblxuICAgICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICAgICR7dGhpcy5faXNNdWx0aXBsZVxuICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICA8c2JiLXZpc3VhbC1jaGVja2JveFxuICAgICAgICAgICAgICA/Y2hlY2tlZD0ke3RoaXMuc2VsZWN0ZWR9XG4gICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cH1cbiAgICAgICAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgICAgID48L3NiYi12aXN1YWwtY2hlY2tib3g+XG4gICAgICAgICAgYFxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJMYWJlbCgpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICBpZiAodGhpcy5fdmFyaWFudCAhPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgIHJldHVybiBub3RoaW5nO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIucmVuZGVyTGFiZWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUaWNrKCk6IFRlbXBsYXRlUmVzdWx0IHwgdHlwZW9mIG5vdGhpbmcge1xuICAgIHJldHVybiB0aGlzLl92YXJpYW50ID09PSAnc2VsZWN0JyAmJiAhdGhpcy5faXNNdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkXG4gICAgICA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCJ0aWNrLXNtYWxsXCI+PC9zYmItaWNvbj5gXG4gICAgICA6IG5vdGhpbmc7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1vcHRpb24nOiBTYmJPcHRpb25FbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgb3B0aW9uc2VsZWN0aW9uY2hhbmdlOiBFdmVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXlCTSxvQkFBZ0IsTUFBQTs7MEJBRHJCLGNBQWMsWUFBWSxDQUFDOzs7O29CQUNlO0FBQVIsRUFBQSxtQkFBUSxZQUF1QjtBQUFBLElBVWhFLElBQVksU0FBUyxPQUF1QjtBQUMxQyxVQUFJLE9BQU87QUFDVCxhQUFLLGFBQWEsZ0JBQWdCLEtBQUs7QUFBQSxNQUN6QztBQUFBLElBQ0Y7QUFBQSxJQUNBLElBQVksV0FBUTtBQUNsQixhQUFPLEtBQUssYUFBYSxjQUFjO0FBQUEsSUFDekM7QUFBQSxJQUVBLElBQVksWUFBWSxZQUFtQjtBQUN6QyxXQUFLLGdCQUFnQixpQkFBaUIsVUFBVTtBQUFBLElBQ2xEO0FBQUEsSUFDQSxJQUFZLGNBQVc7QUFDckIsYUFBTyxDQUFDLEtBQUsscUJBQXFCLEtBQUssYUFBYSxlQUFlO0FBQUEsSUFDckU7QUFBQSxJQUVBLGNBQUE7QUFDRSxZQUFBO0FBbkJRLFdBQUEsV0FBVztBQW9CbkIsV0FBSyxjQUNILElBQUksNkJBQTZCLE1BQU0sTUFBTSxLQUFLLFFBQVEsY0FBYyxHQUFHO0FBQUEsUUFDekUsVUFBVSxDQUFDLE1BQU8sS0FBSyxvQkFBb0IsRUFBRTtBQUFBLFFBQzdDLE9BQU8sQ0FBQyxNQUFPLEtBQUssYUFBYSxFQUFFO0FBQUEsTUFBQSxDQUNwQyxDQUFDO0FBQUEsSUFFTjtBQUFBLElBRVUseUJBQXNCO0FBQzlCLFdBQUssV0FBVyxDQUFDLENBQUMsS0FBSztBQUFBO0FBQUEsUUFFckI7QUFBQSxNQUFBO0FBRUYsV0FBSyxnQkFBZ0IsaUJBQWlCLEtBQUssUUFBUTtBQUVuRCxXQUFLLGdCQUFnQixpQkFBaUIsS0FBSyxXQUFXO0FBQUEsSUFDeEQ7QUFBQSxJQUVVLGNBQWMsT0FBaUI7QUFDdkMsVUFBSSxLQUFLLFlBQVksS0FBSyxtQkFBbUI7QUFDM0MsY0FBTSxnQkFBQTtBQUNOO0FBQUEsTUFDRjtBQUVBLFVBQUksS0FBSyxhQUFhO0FBQ3BCLGNBQU0sZ0JBQUE7QUFDTixhQUFLLHlCQUF5QixDQUFDLEtBQUssUUFBUTtBQUFBLE1BQzlDLE9BQU87QUFDTCxhQUFLLHlCQUF5QixJQUFJO0FBQUEsTUFDcEM7QUFBQSxJQUNGO0FBQUEsSUFFbUIseUJBQXlCLFVBQWlCO0FBQzNELFlBQU0seUJBQXlCLFFBQVE7QUFFdkMsV0FBSyxjQUFjLElBQUksTUFBTSx5QkFBeUIsRUFBRSxTQUFTLE1BQU0sVUFBVSxLQUFBLENBQU0sQ0FBQztBQUFBLElBQzFGO0FBQUEsSUFFbUIsT0FBSTtBQUNyQixZQUFNLEtBQUE7QUFDTixXQUFLLHFCQUFBO0FBSUwsV0FBSyxxQkFBQTtBQUFBLElBQ1A7QUFBQSxJQUVRLHVCQUFvQjtBQUMxQixVQUFJLEtBQUssVUFBVSxrQkFBa0IsR0FBRztBQUN0QyxhQUFLLFdBQVc7QUFBQSxNQUNsQixXQUFXLEtBQUssVUFBVSxZQUFZLEdBQUc7QUFDdkMsYUFBSyxXQUFXO0FBQUEsTUFDbEI7QUFDQSxXQUFLLGNBQWMsQ0FBQyxDQUFDLEtBQUssVUFBVSxzQkFBc0I7QUFBQSxJQUM1RDtBQUFBLElBRW1CLHVCQUFvQjtBQUNyQyxVQUFJLEtBQUssYUFBYSxnQkFBZ0I7QUFDcEMsYUFBSyx1QkFBdUIsSUFBSTtBQUNoQztBQUFBLE1BQ0Y7QUFFQSxZQUFNLHFCQUFBO0FBQUEsSUFDUjtBQUFBLElBRW1CLGFBQVU7QUFDM0IsYUFBTztBQUFBO0FBQUEsUUFFSCxDQUFDLEtBQUssY0FDSix3Q0FBd0MsS0FBSyxlQUFBLENBQWdCLGFBQzdELE9BQU87QUFBQTtBQUFBO0FBQUEsUUFHVCxLQUFLLGNBQ0g7QUFBQTtBQUFBLHlCQUVlLEtBQUssUUFBUTtBQUFBLDBCQUNaLEtBQUssWUFBWSxLQUFLLGlCQUFpQjtBQUFBLDBCQUN2QyxLQUFLLFFBQVE7QUFBQTtBQUFBLGNBRzdCLE9BQU87QUFBQTtBQUFBLElBRWY7QUFBQSxJQUVtQixjQUFXO0FBQzVCLFVBQUksS0FBSyxhQUFhLGdCQUFnQjtBQUNwQyxlQUFPO0FBQUEsTUFDVDtBQUNBLGFBQU8sTUFBTSxZQUFBO0FBQUEsSUFDZjtBQUFBLElBRW1CLGFBQVU7QUFDM0IsYUFBTyxLQUFLLGFBQWEsWUFBWSxDQUFDLEtBQUssZUFBZSxLQUFLLFdBQzNELGdEQUNBO0FBQUEsSUFDTjtBQUFBOztBQTVIRixpQkFBQSxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBQ2tDLEdBQUEsT0FBTyxVQUNoQixHQUFBLFNBQXlCLENBQUMsaUJBQWlCLEtBQUssR0FDdkMsR0FBQSxTQUFTO0FBQUEsSUFDdkMsdUJBQXVCO0FBQUEsSUFDdkIsZ0JBQWdCO0FBQUEsRUFBQSxHQUxkLGtCQUFBLFlBQUEsdUJBQUEsR0FBNkI7OzsifQ==
276
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL29wdGlvbi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlRWxlbWVudCB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS50cyc7XG5pbXBvcnQgeyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QudHMnO1xuXG5pbXBvcnQgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vb3B0aW9uLWJhc2UtZWxlbWVudC50cyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9vcHRpb24uc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi92aXN1YWwtY2hlY2tib3gudHMnO1xuXG5leHBvcnQgdHlwZSBTYmJPcHRpb25WYXJpYW50ID0gJ2F1dG9jb21wbGV0ZScgfCAnc2VsZWN0JyB8IG51bGw7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgb24gb3B0aW9uIGl0ZW0gd2hpY2ggY2FuIGJlIHVzZWQgaW4gYHNiYi1zZWxlY3RgIG9yIGBzYmItYXV0b2NvbXBsZXRlYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBvcHRpb24gbGFiZWwuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGljb24uIElmIGBpY29uLW5hbWVgIGlzIHNldCwgYSBzYmItaWNvbiB3aWxsIGJlIHVzZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItb3B0aW9uLWljb24tY29udGFpbmVyLWRpc3BsYXk9bm9uZV0gLSBDYW4gYmUgdXNlZCB0byByZXNlcnZlIHNwYWNlIGV2ZW5cbiAqIHdoZW4gcHJlc2VydmUtaWNvbi1zcGFjZSBvbiBhdXRvY29tcGxldGUgaXMgbm90IHNldCBvciBpY29uTmFtZSBpcyBub3Qgc2V0LlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIChUID0gc3RyaW5nKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLW9wdGlvbicpXG5jbGFzcyBTYmJPcHRpb25FbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4ge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnb3B0aW9uJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBvcHRpb25zZWxlY3Rpb25jaGFuZ2U6ICdvcHRpb25zZWxlY3Rpb25jaGFuZ2UnLFxuICAgIG9wdGlvbnNlbGVjdGVkOiAnb3B0aW9uc2VsZWN0ZWQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByb3RlY3RlZCBvcHRpb25JZCA9IGBzYmItb3B0aW9uYDtcblxuICBwcml2YXRlIHNldCBfdmFyaWFudCh2YXJpYW50OiBTYmJPcHRpb25WYXJpYW50KSB7XG4gICAgaWYgKHRoaXMuX3ZhcmlhbnRJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgdmFyaWFudC0ke3RoaXMuX3ZhcmlhbnRJbnRlcm5hbH1gKTtcbiAgICB9XG4gICAgdGhpcy5fdmFyaWFudEludGVybmFsID0gdmFyaWFudDtcbiAgICBpZiAodGhpcy5fdmFyaWFudEludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGB2YXJpYW50LSR7dGhpcy5fdmFyaWFudEludGVybmFsfWApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfdmFyaWFudCgpOiBTYmJPcHRpb25WYXJpYW50IHtcbiAgICByZXR1cm4gdGhpcy5fdmFyaWFudEludGVybmFsID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdmFyaWFudEludGVybmFsPzogU2JiT3B0aW9uVmFyaWFudDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcih0aGlzLCAoKSA9PiB0aGlzLmNsb3Nlc3QoJ3NiYi1vcHRncm91cCcpLCB7XG4gICAgICAgIGRpc2FibGVkOiAocCkgPT4gKHRoaXMuZGlzYWJsZWRGcm9tR3JvdXAgPSBwLmRpc2FibGVkKSxcbiAgICAgICAgbGFiZWw6IChwKSA9PiAodGhpcy5ncm91cExhYmVsID0gcC5sYWJlbCksXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIodGhpcywgKCkgPT4gdGhpcy5jbG9zZXN0KCdzYmItYXV0b2NvbXBsZXRlJyksIHtcbiAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB0aGlzLl9oYW5kbGVOZWdhdGl2ZUNoYW5nZShlKSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcih0aGlzLCAoKSA9PiB0aGlzLmNsb3Nlc3QoJ3NiYi1zZWxlY3QnKSwge1xuICAgICAgICBtdWx0aXBsZTogKGFuY2VzdG9yKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVTdGF0ZSgnbXVsdGlwbGUnLCBhbmNlc3Rvci5tdWx0aXBsZSk7XG5cbiAgICAgICAgICAvLyBNdWx0aXBsZSBoYXMgdG8gYmUgcHJvcGFnYXRlZCB0byBzYmItdmlzdWFsLWNoZWNrYm94IGluc2lkZSB0aGUgb3B0aW9uLlxuICAgICAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgICB9LFxuICAgICAgICBuZWdhdGl2ZTogKGUpID0+IHRoaXMuX2hhbmRsZU5lZ2F0aXZlQ2hhbmdlKGUpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzTXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmh5ZHJhdGlvblJlcXVpcmVkICYmIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5oYXMoJ211bHRpcGxlJyk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOZWdhdGl2ZUNoYW5nZShhbmNlc3RvcjogU2JiQXV0b2NvbXBsZXRlRWxlbWVudCB8IFNiYlNlbGVjdEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCduZWdhdGl2ZScsIGFuY2VzdG9yLm5lZ2F0aXZlKTtcblxuICAgIC8vIE5lZ2F0aXZlIGhhcyB0byBiZSBwcm9wYWdhdGVkIHRvIHNiYi12aXN1YWwtY2hlY2tib3ggaW5zaWRlIHRoZSBvcHRpb24uXG4gICAgdGhpcy5yZXF1ZXN0VXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaGlnaGxpZ2h0IHN0YXRlIGJvdGggb24gc2xvdCBjaGFuZ2UsIGJ1dCBhbHNvIHdoZW4gY29ubmVjdGluZ1xuICAgIC8vIHRoZSBlbGVtZW50IHRvIHRoZSBET00uIFRoZSBzbG90IGNoYW5nZSBldmVudHMgbWlnaHQgYmUgc3dhbGxvd2VkIHdoZW4gdXNpbmcgZGVjbGFyYXRpdmVcbiAgICAvLyBzaGFkb3cgRE9NIHdpdGggU1NSIG9yIGlmIHRoZSBET00gaXMgY2hhbmdlZCB3aGVuIGRpc2Nvbm5lY3RlZC5cbiAgICBpZiAodGhpcy5oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+IHRoaXMuX2luaXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2luaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NldFZhcmlhbnRCeUNvbnRleHQoKTtcbiAgICB0aGlzLmhhbmRsZUhpZ2hsaWdodFN0YXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWRGcm9tR3JvdXApIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc011bHRpcGxlKCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5zZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24oIXRoaXMuc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2VsZWN0VmlhVXNlckludGVyYWN0aW9uKHNlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgc3VwZXIuc2VsZWN0VmlhVXNlckludGVyYWN0aW9uKHNlbGVjdGVkKTtcbiAgICAvKiogVGhlIG9wdGlvbnNlbGVjdGlvbmNoYW5nZSBldmVudCBpcyBkaXNwYXRjaGVkIHdoZW4gdGhlIG9wdGlvbiBzZWxlY3Rpb24gc3RhdHVzIGNoYW5nZXMuICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uc2VsZWN0aW9uY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRWYXJpYW50QnlDb250ZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3Nlc3Q/Lignc2JiLWF1dG9jb21wbGV0ZScpKSB7XG4gICAgICB0aGlzLl92YXJpYW50ID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNsb3Nlc3Q/Lignc2JiLXNlbGVjdCcpKSB7XG4gICAgICB0aGlzLl92YXJpYW50ID0gJ3NlbGVjdCc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGhhbmRsZUhpZ2hsaWdodFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92YXJpYW50ICE9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlSGlnaGxpZ2h0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1cGVyLmhhbmRsZUhpZ2hsaWdodFN0YXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVySWNvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8IS0tIEljb24gLS0+XG4gICAgICAkeyF0aGlzLl9pc011bHRpcGxlKClcbiAgICAgICAgPyBodG1sYCA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2ljb25cIj4gJHt0aGlzLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5gXG4gICAgICAgIDogbm90aGluZ31cblxuICAgICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICAgICR7dGhpcy5faXNNdWx0aXBsZSgpXG4gICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgIDxzYmItdmlzdWFsLWNoZWNrYm94XG4gICAgICAgICAgICAgID9jaGVja2VkPSR7dGhpcy5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgP2Rpc2FibGVkPSR7dGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwfVxuICAgICAgICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm1hdGNoZXM/LignOnN0YXRlKG5lZ2F0aXZlKScpfVxuICAgICAgICAgICAgPjwvc2JiLXZpc3VhbC1jaGVja2JveD5cbiAgICAgICAgICBgXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlckxhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHwgdHlwZW9mIG5vdGhpbmcge1xuICAgIGlmICh0aGlzLl92YXJpYW50ICE9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgcmV0dXJuIG5vdGhpbmc7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5yZW5kZXJMYWJlbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlclRpY2soKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhbnQgPT09ICdzZWxlY3QnICYmICF0aGlzLl9pc011bHRpcGxlKCkgJiYgdGhpcy5zZWxlY3RlZFxuICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPVwidGljay1zbWFsbFwiPjwvc2JiLWljb24+YFxuICAgICAgOiBub3RoaW5nO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItb3B0aW9uJzogU2JiT3B0aW9uRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIG9wdGlvbnNlbGVjdGlvbmNoYW5nZTogRXZlbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEyQk0sb0JBQWdCLE1BQUE7OzBCQURyQixjQUFjLFlBQVksQ0FBQzs7OztvQkFDZTtBQUFSLEVBQUEsbUJBQVEsWUFBdUI7QUFBQSxJQVVoRSxJQUFZLFNBQVMsU0FBeUI7QUFDNUMsVUFBSSxLQUFLLGtCQUFrQjtBQUN6QixhQUFLLFVBQVUsT0FBTyxPQUFPLFdBQVcsS0FBSyxnQkFBZ0IsRUFBRTtBQUFBLE1BQ2pFO0FBQ0EsV0FBSyxtQkFBbUI7QUFDeEIsVUFBSSxLQUFLLGtCQUFrQjtBQUN6QixhQUFLLFVBQVUsT0FBTyxJQUFJLFdBQVcsS0FBSyxnQkFBZ0IsRUFBRTtBQUFBLE1BQzlEO0FBQUEsSUFDRjtBQUFBLElBQ0EsSUFBWSxXQUFRO0FBQ2xCLGFBQU8sS0FBSyxvQkFBb0I7QUFBQSxJQUNsQztBQUFBLElBR0EsY0FBQTtBQUNFLFlBQUE7QUFqQlEsV0FBQSxXQUFXO0FBa0JuQixXQUFLLGNBQ0gsSUFBSSw2QkFBNkIsTUFBTSxNQUFNLEtBQUssUUFBUSxjQUFjLEdBQUc7QUFBQSxRQUN6RSxVQUFVLENBQUMsTUFBTyxLQUFLLG9CQUFvQixFQUFFO0FBQUEsUUFDN0MsT0FBTyxDQUFDLE1BQU8sS0FBSyxhQUFhLEVBQUU7QUFBQSxNQUFBLENBQ3BDLENBQUM7QUFHSixXQUFLLGNBQ0gsSUFBSSw2QkFBNkIsTUFBTSxNQUFNLEtBQUssUUFBUSxrQkFBa0IsR0FBRztBQUFBLFFBQzdFLFVBQVUsQ0FBQyxNQUFNLEtBQUss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
@@ -17,7 +17,7 @@ export declare abstract class SbbOverlayBaseElement extends SbbOverlayBaseElemen
17
17
  accessor accessibilityLabel: string;
18
18
  /**
19
19
  * Whether to skip restoring focus to the previously-focused element when the overlay is closed.
20
- * Note that automatic focus restoration is an accessibility feature and it is recommended that
20
+ * Note that automatic focus restoration is an accessibility feature, and it is recommended that
21
21
  * you provide your own equivalent, if you decide to turn it off.
22
22
  */
23
23
  accessor skipFocusRestoration: boolean;
@@ -67,7 +67,7 @@ let SbbOverlayBaseElement = (() => {
67
67
  }
68
68
  /**
69
69
  * Whether to skip restoring focus to the previously-focused element when the overlay is closed.
70
- * Note that automatic focus restoration is an accessibility feature and it is recommended that
70
+ * Note that automatic focus restoration is an accessibility feature, and it is recommended that
71
71
  * you provide your own equivalent, if you decide to turn it off.
72
72
  */
73
73
  get skipFocusRestoration() {
@@ -225,4 +225,4 @@ export {
225
225
  SbbOverlayBaseElement,
226
226
  overlayRefs
227
227
  };
228
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1iYXNlLWVsZW1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9vdmVybGF5L292ZXJsYXktYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2VydmVyLCB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sIHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgdHlwZSBTYmJCdXR0b25CYXNlRWxlbWVudCwgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHtcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgU2JiU2Nyb2xsSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IGkxOG5EaWFsb2cgfSBmcm9tICcuLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi9jb3JlL2ludGVyZmFjZXMudHMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50IH0gZnJvbSAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LnRzJztcblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBtZW51IG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIHJlc3RvcmluZyBmb2N1cyB0byB0aGUgcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqIE5vdGUgdGhhdCBhdXRvbWF0aWMgZm9jdXMgcmVzdG9yYXRpb24gaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJlIGFuZCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4gICAqIHlvdSBwcm92aWRlIHlvdXIgb3duIGVxdWl2YWxlbnQsIGlmIHlvdSBkZWNpZGUgdG8gdHVybiBpdCBvZmYuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2tpcEZvY3VzUmVzdG9yYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBUaGUgbGFzdCBlbGVtZW50IHdoaWNoIGhhZCBmb2N1cyBiZWZvcmUgdGhlIGNvbXBvbmVudCB3YXMgb3BlbmVkLlxuICBwcm90ZWN0ZWQgbGFzdEZvY3VzZWRFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q2xvc2VFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvcGVuT3ZlcmxheUNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByb3RlY3RlZCBmb2N1c1RyYXBDb250cm9sbGVyID0gbmV3IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIodGhpcyk7XG4gIHByb3RlY3RlZCBzY3JvbGxIYW5kbGVyID0gbmV3IFNiYlNjcm9sbEhhbmRsZXIoKTtcbiAgcHJvdGVjdGVkIHJldHVyblZhbHVlOiBhbnk7XG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByb3RlY3RlZCBpbmVydENvbnRyb2xsZXIgPSBuZXcgU2JiSW5lcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcm90ZWN0ZWQgZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJpdmF0ZSBfYXJpYUxpdmVSZWZUb2dnbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXJpYUxpdmVSZWYhOiBTYmJTY3JlZW5SZWFkZXJPbmx5RWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNsb3NlQXR0cmlidXRlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBjbG9zZVRhZz86IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhhbmRsZU9wZW5pbmcoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhhbmRsZUNsb3NpbmcoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW47XG5cbiAgLyoqIE9wZW5zIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG5cbiAgICAvLyBBZGQgdGhpcyBvdmVybGF5IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIG92ZXJsYXlSZWZzLnB1c2godGhpcyk7XG5cbiAgICAvLyBEaXNhYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheVxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLmhhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogYW55IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0O1xuICAgIHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCA9IHRhcmdldDtcbiAgICBjb25zdCBldmVudERhdGE6IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyA9IHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudChldmVudERhdGEpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgIHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHRyaWdnZXIgaXMgdmFsaWQgYW5kIGF0dGFjaCBjbGljayBldmVudCBsaXN0ZW5lcnMuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZVRyaWdnZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy50cmlnZ2VyO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQsICdkaWFsb2cnLCB0aGlzLmlkLCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9hcmlhTGl2ZVJlZiA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8U2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ+KCdzYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3RyaWdnZXInKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gUmVtb3ZlIG92ZXJsYXkgbGFiZWwgYXMgc29vbiBhcyBpdCBpcyBub3QgbmVlZGVkIGFueSBtb3JlIHRvIHByZXZlbnQgYWNjZXNzaW5nIGl0IHdpdGggYnJvd3NlIG1vZGUuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIG92ZXJsYXlSZWZzLnNwbGljZShvdmVybGF5UmVmcy5pbmRleE9mKHRoaXMgYXMgU2JiT3ZlcmxheUJhc2VFbGVtZW50KSwgMSk7XG4gIH1cblxuICAvLyBDbG9zZSB0aGUgY29tcG9uZW50IG9uIGNsaWNrIG9mIGFueSBlbGVtZW50IHRoYXQgaGFzIHRoZSBgY2xvc2VBdHRyaWJ1dGVgIGF0dHJpYnV0ZS5cbiAgcHJvdGVjdGVkIGNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5Q2xvc2VFbGVtZW50ID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudClcbiAgICAgIC5maW5kKFxuICAgICAgICAodGFyZ2V0KSA9PlxuICAgICAgICAgICh0YXJnZXQuaGFzQXR0cmlidXRlKHRoaXMuY2xvc2VBdHRyaWJ1dGUpIHx8IHRhcmdldC5sb2NhbE5hbWUgPT09IHRoaXMuY2xvc2VUYWcpICYmXG4gICAgICAgICAgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJyksXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIW92ZXJsYXlDbG9zZUVsZW1lbnQgfHxcbiAgICAgIChvdmVybGF5Q2xvc2VFbGVtZW50LmNsb3Nlc3QodGhpcy5sb2NhbE5hbWUpICE9PSB0aGlzICYmXG4gICAgICAgICF0aGlzLnNoYWRvd1Jvb3Q/LmNvbnRhaW5zKG92ZXJsYXlDbG9zZUVsZW1lbnQpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSB0YXJnZXQgaXMgYSBzdWJtaXNzaW9uIGVsZW1lbnQgd2l0aGluIGEgZm9ybSBhbmQgcmV0dXJuIHRoZSBmb3JtLCBpZiBwcmVzZW50XG4gICAgY29uc3QgY2xvc2VzdEZvcm0gPVxuICAgICAgb3ZlcmxheUNsb3NlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3N1Ym1pdCdcbiAgICAgICAgPyAoKG92ZXJsYXlDbG9zZUVsZW1lbnQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQgfCBTYmJCdXR0b25CYXNlRWxlbWVudCkuZm9ybSA/PyBudWxsKVxuICAgICAgICA6IG51bGw7XG4gICAgb3ZlcmxheVJlZnNbb3ZlcmxheVJlZnMubGVuZ3RoIC0gMV0uY2xvc2UoY2xvc2VzdEZvcm0sIG92ZXJsYXlDbG9zZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9ICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEFyaWFMaXZlUmVmQ29udGVudChsYWJlbD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2FyaWFMaXZlUmVmVG9nZ2xlID0gIXRoaXMuX2FyaWFMaXZlUmVmVG9nZ2xlO1xuXG4gICAgLy8gSWYgdGhlIHRleHQgY29udGVudCByZW1haW5zIHRoZSBzYW1lLCBvbiBWb2ljZU92ZXIgdGhlIGFyaWEtbGl2ZSByZWdpb24gaXMgbm90IGFubm91bmNlZCBhIHNlY29uZCB0aW1lLlxuICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgcmVhZGluZyBvbiBldmVyeSBvcGVuaW5nLCB3ZSB0b2dnbGUgYW4gaW52aXNpYmxlIHNwYWNlLlxuICAgIHRoaXMuX2FyaWFMaXZlUmVmLnRleHRDb250ZW50ID0gYCR7aTE4bkRpYWxvZ1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfSR7XG4gICAgICBsYWJlbCA/IGAsICR7bGFiZWx9YCA6ICcnXG4gICAgfSR7dGhpcy5fYXJpYUxpdmVSZWZUb2dnbGUgPyAnwqAnIDogJyd9YDtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIGRpYWxvZyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlLlxuICAvLyBJbiByYXJlIGNhc2VzLCBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcm90ZWN0ZWQgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLmhhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLmhhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KGRldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIC8qKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPn0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLiAqL1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPignYmVmb3JlY2xvc2UnLCB7IGRldGFpbCwgY2FuY2VsYWJsZTogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpc3BhdGNoQ2xvc2VFdmVudChkZXRhaWw/OiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMpOiBib29sZWFuIHtcbiAgICAvKiogQHR5cGUge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgY2xvc2VkLiAqL1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz4oJ2Nsb3NlJywgeyBkZXRhaWwgfSkpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JPLE1BQU0sY0FBdUMsQ0FBQTtJQUU5Qix5QkFBcUIsTUFBQTs7b0JBQVMsaUJBQWlCLHVCQUF1Qjs7Ozs7Ozs7OztBQUF0RSxTQUFBLG1CQUE4QixZQUF5QztBQUFBOztBQVEzRjtBQUtBO0FBU0E7QUFkZ0IseUJBQUEsMkJBQUEsa0JBQUEsTUFBQSx1QkFBOEIsSUFBSTtBQUtsQyx5QkFBQSx1Q0FBQSxrQkFBQSxNQUFBLDBCQUFBLEdBQUEsa0JBQUEsTUFBQSxrQ0FBNkIsRUFBRTtBQVMvQix5QkFBQSx5Q0FBQSxrQkFBQSxNQUFBLHFDQUFBLEdBQUEsa0JBQUEsTUFBQSxvQ0FBZ0MsS0FBSztBQUczQyxXQUFBLHFCQUFrQixrQkFBQSxNQUFBLHVDQUFBO0FBR2xCLFdBQUEsc0JBQXNCLElBQUksdUJBQXVCLElBQUk7QUFDckQsV0FBQSxnQkFBZ0IsSUFBSSxpQkFBQTtBQUVwQixXQUFBLFdBQVcsSUFBSSxzQkFBc0IsSUFBSTtBQUN6QyxXQUFBLGtCQUFrQixJQUFJLG1CQUFtQixJQUFJO0FBQzdDLFdBQUEsNkJBQTZCLElBQUksOEJBQThCLElBQUk7QUFFckUsV0FBQSxxQkFBcUI7QUFFckIsV0FBQSxrQkFBc0M7QUFBQSxJQThNaEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUEzT0UsSUFBZ0IsVUFBTztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBdkIsSUFBZ0IsUUFBTyxPQUFBO0FBQUEseUJBQUEsMkJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUt2QixJQUFnQixxQkFBa0I7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQWxDLElBQWdCLG1CQUFrQixPQUFBO0FBQUEseUJBQUEsc0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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
228
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1iYXNlLWVsZW1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9vdmVybGF5L292ZXJsYXktYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2VydmVyLCB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sIHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgdHlwZSBTYmJCdXR0b25CYXNlRWxlbWVudCwgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHtcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgU2JiU2Nyb2xsSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IGkxOG5EaWFsb2cgfSBmcm9tICcuLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi9jb3JlL2ludGVyZmFjZXMudHMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50IH0gZnJvbSAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LnRzJztcblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBtZW51IG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIHJlc3RvcmluZyBmb2N1cyB0byB0aGUgcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqIE5vdGUgdGhhdCBhdXRvbWF0aWMgZm9jdXMgcmVzdG9yYXRpb24gaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJlLCBhbmQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdFxuICAgKiB5b3UgcHJvdmlkZSB5b3VyIG93biBlcXVpdmFsZW50LCBpZiB5b3UgZGVjaWRlIHRvIHR1cm4gaXQgb2ZmLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHNraXBGb2N1c1Jlc3RvcmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVGhlIGxhc3QgZWxlbWVudCB3aGljaCBoYWQgZm9jdXMgYmVmb3JlIHRoZSBjb21wb25lbnQgd2FzIG9wZW5lZC5cbiAgcHJvdGVjdGVkIGxhc3RGb2N1c2VkRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcm90ZWN0ZWQgb3ZlcmxheUNsb3NlRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcm90ZWN0ZWQgb3Blbk92ZXJsYXlDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZm9jdXNUcmFwQ29udHJvbGxlciA9IG5ldyBTYmJGb2N1c1RyYXBDb250cm9sbGVyKHRoaXMpO1xuICBwcm90ZWN0ZWQgc2Nyb2xsSGFuZGxlciA9IG5ldyBTYmJTY3JvbGxIYW5kbGVyKCk7XG4gIHByb3RlY3RlZCByZXR1cm5WYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcm90ZWN0ZWQgaW5lcnRDb250cm9sbGVyID0gbmV3IFNiYkluZXJ0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJvdGVjdGVkIGVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByaXZhdGUgX2FyaWFMaXZlUmVmVG9nZ2xlID0gZmFsc2U7XG4gIHByaXZhdGUgX2FyaWFMaXZlUmVmITogU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY2xvc2VUYWc/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVPcGVuaW5nKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVDbG9zaW5nKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuXG4gICAgLy8gQWRkIHRoaXMgb3ZlcmxheSB0byB0aGUgZ2xvYmFsIGNvbGxlY3Rpb25cbiAgICBvdmVybGF5UmVmcy5wdXNoKHRoaXMpO1xuXG4gICAgLy8gRGlzYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG92ZXJsYXlcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgY2xvc2UocmVzdWx0PzogYW55LCB0YXJnZXQ/OiBIVE1MRWxlbWVudCk6IGFueSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXR1cm5WYWx1ZSA9IHJlc3VsdDtcbiAgICB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQgPSB0YXJnZXQ7XG4gICAgY29uc3QgZXZlbnREYXRhOiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgPSB7XG4gICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgfTtcblxuICAgIGlmICghdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoZXZlbnREYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NpbmcnO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3ZlciA9ICdtYW51YWwnO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmVUcmlnZ2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09IHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRoaXMudHJpZ2dlcjtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnZGlhbG9nJywgdGhpcy5pZCwgdGhpcy5zdGF0ZSk7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fYXJpYUxpdmVSZWYgPVxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yPFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50Pignc2JiLXNjcmVlbi1yZWFkZXItb25seScpITtcbiAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLnJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTtcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFjaE9wZW5PdmVybGF5RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIFJlbW92ZSBvdmVybGF5IGxhYmVsIGFzIHNvb24gYXMgaXQgaXMgbm90IG5lZWRlZCBhbnkgbW9yZSB0byBwcmV2ZW50IGFjY2Vzc2luZyBpdCB3aXRoIGJyb3dzZSBtb2RlLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmcy5zcGxpY2Uob3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCksIDEpO1xuICB9XG5cbiAgLy8gQ2xvc2UgdGhlIGNvbXBvbmVudCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgYGNsb3NlQXR0cmlidXRlYCBhdHRyaWJ1dGUuXG4gIHByb3RlY3RlZCBjbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheUNsb3NlRWxlbWVudCA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuZmluZChcbiAgICAgICAgKHRhcmdldCkgPT5cbiAgICAgICAgICAodGFyZ2V0Lmhhc0F0dHJpYnV0ZSh0aGlzLmNsb3NlQXR0cmlidXRlKSB8fCB0YXJnZXQubG9jYWxOYW1lID09PSB0aGlzLmNsb3NlVGFnKSAmJlxuICAgICAgICAgICF0YXJnZXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpLFxuICAgICAgKTtcblxuICAgIGlmIChcbiAgICAgICFvdmVybGF5Q2xvc2VFbGVtZW50IHx8XG4gICAgICAob3ZlcmxheUNsb3NlRWxlbWVudC5jbG9zZXN0KHRoaXMubG9jYWxOYW1lKSAhPT0gdGhpcyAmJlxuICAgICAgICAhdGhpcy5zaGFkb3dSb290Py5jb250YWlucyhvdmVybGF5Q2xvc2VFbGVtZW50KSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdGFyZ2V0IGlzIGEgc3VibWlzc2lvbiBlbGVtZW50IHdpdGhpbiBhIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybSwgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID1cbiAgICAgIG92ZXJsYXlDbG9zZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdzdWJtaXQnXG4gICAgICAgID8gKChvdmVybGF5Q2xvc2VFbGVtZW50IGFzIEhUTUxCdXR0b25FbGVtZW50IHwgU2JiQnV0dG9uQmFzZUVsZW1lbnQpLmZvcm0gPz8gbnVsbClcbiAgICAgICAgOiBudWxsO1xuICAgIG92ZXJsYXlSZWZzW292ZXJsYXlSZWZzLmxlbmd0aCAtIDFdLmNsb3NlKGNsb3Nlc3RGb3JtLCBvdmVybGF5Q2xvc2VFbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9hcmlhTGl2ZVJlZlRvZ2dsZSA9ICF0aGlzLl9hcmlhTGl2ZVJlZlRvZ2dsZTtcblxuICAgIC8vIElmIHRoZSB0ZXh0IGNvbnRlbnQgcmVtYWlucyB0aGUgc2FtZSwgb24gVm9pY2VPdmVyIHRoZSBhcmlhLWxpdmUgcmVnaW9uIGlzIG5vdCBhbm5vdW5jZWQgYSBzZWNvbmQgdGltZS5cbiAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHJlYWRpbmcgb24gZXZlcnkgb3BlbmluZywgd2UgdG9nZ2xlIGFuIGludmlzaWJsZSBzcGFjZS5cbiAgICB0aGlzLl9hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9IGAke2kxOG5EaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0ke1xuICAgICAgbGFiZWwgPyBgLCAke2xhYmVsfWAgOiAnJ1xuICAgIH0ke3RoaXMuX2FyaWFMaXZlUmVmVG9nZ2xlID8gJ8KgJyA6ICcnfWA7XG4gIH1cblxuICAvLyBXYWl0IGZvciBkaWFsb2cgdHJhbnNpdGlvbiB0byBjb21wbGV0ZS5cbiAgLy8gSW4gcmFyZSBjYXNlcywgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJvdGVjdGVkIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudChkZXRhaWw/OiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMpOiBib29sZWFuIHtcbiAgICAvKiogQHR5cGUge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC4gKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz4oJ2JlZm9yZWNsb3NlJywgeyBkZXRhaWwsIGNhbmNlbGFibGU6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaXNwYXRjaENsb3NlRXZlbnQoZGV0YWlsPzogU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzKTogYm9vbGVhbiB7XG4gICAgLyoqIEB0eXBlIHtDdXN0b21FdmVudDxTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHM+fSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC4gKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudDxTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHM+KCdjbG9zZScsIHsgZGV0YWlsIH0pKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCTyxNQUFNLGNBQXVDLENBQUE7SUFFOUIseUJBQXFCLE1BQUE7O29CQUFTLGlCQUFpQix1QkFBdUI7Ozs7Ozs7Ozs7QUFBdEUsU0FBQSxtQkFBOEIsWUFBeUM7QUFBQTs7QUFRM0Y7QUFLQTtBQVNBO0FBZGdCLHlCQUFBLDJCQUFBLGtCQUFBLE1BQUEsdUJBQThCLElBQUk7QUFLbEMseUJBQUEsdUNBQUEsa0JBQUEsTUFBQSwwQkFBQSxHQUFBLGtCQUFBLE1BQUEsa0NBQTZCLEVBQUU7QUFTL0IseUJBQUEseUNBQUEsa0JBQUEsTUFBQSxxQ0FBQSxHQUFBLGtCQUFBLE1BQUEsb0NBQWdDLEtBQUs7QUFHM0MsV0FBQSxxQkFBa0Isa0JBQUEsTUFBQSx1Q0FBQTtBQUdsQixXQUFBLHNCQUFzQixJQUFJLHVCQUF1QixJQUFJO0FBQ3JELFdBQUEsZ0JBQWdCLElBQUksaUJBQUE7QUFFcEIsV0FBQSxXQUFXLElBQUksc0JBQXNCLElBQUk7QUFDekMsV0FBQSxrQkFBa0IsSUFBSSxtQkFBbUIsSUFBSTtBQUM3QyxXQUFBLDZCQUE2QixJQUFJLDhCQUE4QixJQUFJO0FBRXJFLFdBQUEscUJBQXFCO0FBRXJCLFdBQUEsa0JBQXNDO0FBQUEsSUE4TWhEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBM09FLElBQWdCLFVBQU87QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXZCLElBQWdCLFFBQU8sT0FBQTtBQUFBLHlCQUFBLDJCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFLdkIsSUFBZ0IscUJBQWtCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFsQyxJQUFnQixtQkFBa0IsT0FBQTtBQUFBLHlCQUFBLHNDQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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