@sbb-esta/lyne-elements-experimental-dev 0.0.0 → 4.5.1-dev.1771859300

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 (249) hide show
  1. package/README.md +55 -0
  2. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +86 -0
  3. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +54 -0
  4. package/autocomplete-grid/autocomplete-grid-button.js +4 -0
  5. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +25 -0
  6. package/autocomplete-grid/autocomplete-grid-cell.js +4 -0
  7. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +29 -0
  8. package/autocomplete-grid/autocomplete-grid-optgroup.js +4 -0
  9. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +41 -0
  10. package/autocomplete-grid/autocomplete-grid-option.js +5 -0
  11. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +28 -0
  12. package/autocomplete-grid/autocomplete-grid-row.js +4 -0
  13. package/autocomplete-grid/autocomplete-grid.js +4 -0
  14. package/autocomplete-grid.js +15 -0
  15. package/core/datetime/date-helper.js +191 -0
  16. package/core/datetime.js +5 -0
  17. package/core/timetable/access-leg-helper.js +91 -0
  18. package/core/timetable/timetable-helper.js +12 -0
  19. package/core/timetable/timetable-properties.js +1 -0
  20. package/core/timetable.js +8 -0
  21. package/custom-elements.json +8211 -0
  22. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts +39 -0
  23. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -0
  24. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +141 -0
  25. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +31 -0
  26. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -0
  27. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +82 -0
  28. package/development/autocomplete-grid/autocomplete-grid-button.d.ts +5 -0
  29. package/development/autocomplete-grid/autocomplete-grid-button.d.ts.map +1 -0
  30. package/development/autocomplete-grid/autocomplete-grid-button.js +5 -0
  31. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts +19 -0
  32. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts.map +1 -0
  33. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +40 -0
  34. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts +5 -0
  35. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts.map +1 -0
  36. package/development/autocomplete-grid/autocomplete-grid-cell.js +5 -0
  37. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.d.ts +19 -0
  38. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.d.ts.map +1 -0
  39. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +40 -0
  40. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts +5 -0
  41. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts.map +1 -0
  42. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +5 -0
  43. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +26 -0
  44. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -0
  45. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +134 -0
  46. package/development/autocomplete-grid/autocomplete-grid-option.d.ts +5 -0
  47. package/development/autocomplete-grid/autocomplete-grid-option.d.ts.map +1 -0
  48. package/development/autocomplete-grid/autocomplete-grid-option.js +6 -0
  49. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts +20 -0
  50. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts.map +1 -0
  51. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +115 -0
  52. package/development/autocomplete-grid/autocomplete-grid-row.d.ts +5 -0
  53. package/development/autocomplete-grid/autocomplete-grid-row.d.ts.map +1 -0
  54. package/development/autocomplete-grid/autocomplete-grid-row.js +5 -0
  55. package/development/autocomplete-grid/autocomplete-grid.d.ts +5 -0
  56. package/development/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  57. package/development/autocomplete-grid/autocomplete-grid.js +5 -0
  58. package/development/autocomplete-grid.d.ts +10 -0
  59. package/development/autocomplete-grid.d.ts.map +1 -0
  60. package/development/autocomplete-grid.js +16 -0
  61. package/development/core/datetime/date-helper.d.ts +27 -0
  62. package/development/core/datetime/date-helper.d.ts.map +1 -0
  63. package/development/core/datetime/date-helper.js +285 -0
  64. package/development/core/datetime.d.ts +5 -0
  65. package/development/core/datetime.d.ts.map +1 -0
  66. package/development/core/datetime.js +6 -0
  67. package/development/core/timetable/access-leg-helper.d.ts +26 -0
  68. package/development/core/timetable/access-leg-helper.d.ts.map +1 -0
  69. package/development/core/timetable/access-leg-helper.js +125 -0
  70. package/development/core/timetable/timetable-helper.d.ts +12 -0
  71. package/development/core/timetable/timetable-helper.d.ts.map +1 -0
  72. package/development/core/timetable/timetable-helper.js +20 -0
  73. package/development/core/timetable/timetable-properties.d.ts +308 -0
  74. package/development/core/timetable/timetable-properties.d.ts.map +1 -0
  75. package/development/core/timetable/timetable-properties.js +2 -0
  76. package/development/core/timetable.d.ts +7 -0
  77. package/development/core/timetable.d.ts.map +1 -0
  78. package/development/core/timetable.js +9 -0
  79. package/development/differenceInMinutes-B0dawX-5.js +26 -0
  80. package/development/format-BMkeaqaF.js +1433 -0
  81. package/development/isValid-BYRch7pV.js +53 -0
  82. package/development/journey-summary/journey-summary.component.d.ts +65 -0
  83. package/development/journey-summary/journey-summary.component.d.ts.map +1 -0
  84. package/development/journey-summary/journey-summary.component.js +294 -0
  85. package/development/journey-summary.d.ts +5 -0
  86. package/development/journey-summary.d.ts.map +1 -0
  87. package/development/journey-summary.js +5 -0
  88. package/development/pearl-chain/pearl-chain.component.d.ts +42 -0
  89. package/development/pearl-chain/pearl-chain.component.d.ts.map +1 -0
  90. package/development/pearl-chain/pearl-chain.component.js +639 -0
  91. package/development/pearl-chain-time/pearl-chain-time.component.d.ts +47 -0
  92. package/development/pearl-chain-time/pearl-chain-time.component.d.ts.map +1 -0
  93. package/development/pearl-chain-time/pearl-chain-time.component.js +312 -0
  94. package/development/pearl-chain-time.d.ts +5 -0
  95. package/development/pearl-chain-time.d.ts.map +1 -0
  96. package/development/pearl-chain-time.js +5 -0
  97. package/development/pearl-chain-vertical/pearl-chain-vertical.component.d.ts +16 -0
  98. package/development/pearl-chain-vertical/pearl-chain-vertical.component.d.ts.map +1 -0
  99. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +40 -0
  100. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.d.ts +34 -0
  101. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.d.ts.map +1 -0
  102. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +398 -0
  103. package/development/pearl-chain-vertical-item.d.ts +5 -0
  104. package/development/pearl-chain-vertical-item.d.ts.map +1 -0
  105. package/development/pearl-chain-vertical-item.js +5 -0
  106. package/development/pearl-chain-vertical.d.ts +5 -0
  107. package/development/pearl-chain-vertical.d.ts.map +1 -0
  108. package/development/pearl-chain-vertical.js +5 -0
  109. package/development/pearl-chain.d.ts +5 -0
  110. package/development/pearl-chain.d.ts.map +1 -0
  111. package/development/pearl-chain.js +5 -0
  112. package/development/seat-reservation/common/mapper/icon-mapper.d.ts +106 -0
  113. package/development/seat-reservation/common/mapper/icon-mapper.d.ts.map +1 -0
  114. package/development/seat-reservation/common/mapper/icon-mapper.js +72 -0
  115. package/development/seat-reservation/common/mapper/mapper.d.ts +34 -0
  116. package/development/seat-reservation/common/mapper/mapper.d.ts.map +1 -0
  117. package/development/seat-reservation/common/mapper/mapper.js +129 -0
  118. package/development/seat-reservation/common/mapper/seat-reservation-sample-data.d.ts +372 -0
  119. package/development/seat-reservation/common/mapper/seat-reservation-sample-data.d.ts.map +1 -0
  120. package/development/seat-reservation/common/mapper/seat-reservation-sample-data.js +31673 -0
  121. package/development/seat-reservation/common/mapper.d.ts +3 -0
  122. package/development/seat-reservation/common/mapper.d.ts.map +1 -0
  123. package/development/seat-reservation/common/mapper.js +10 -0
  124. package/development/seat-reservation/common/svgs.d.ts +24 -0
  125. package/development/seat-reservation/common/svgs.d.ts.map +1 -0
  126. package/development/seat-reservation/common/svgs.js +46 -0
  127. package/development/seat-reservation/common/translations/i18n.d.ts +28 -0
  128. package/development/seat-reservation/common/translations/i18n.d.ts.map +1 -0
  129. package/development/seat-reservation/common/translations/i18n.js +871 -0
  130. package/development/seat-reservation/common/translations.d.ts +2 -0
  131. package/development/seat-reservation/common/translations.d.ts.map +1 -0
  132. package/development/seat-reservation/common/translations.js +5 -0
  133. package/development/seat-reservation/common/types.d.ts +97 -0
  134. package/development/seat-reservation/common/types.d.ts.map +1 -0
  135. package/development/seat-reservation/common/types.js +2 -0
  136. package/development/seat-reservation/common.d.ts +8 -0
  137. package/development/seat-reservation/common.d.ts.map +1 -0
  138. package/development/seat-reservation/common.js +14 -0
  139. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +273 -0
  140. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -0
  141. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +1171 -0
  142. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts +75 -0
  143. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -0
  144. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +832 -0
  145. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.d.ts +18 -0
  146. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.d.ts.map +1 -0
  147. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +112 -0
  148. package/development/seat-reservation/seat-reservation-area.d.ts +5 -0
  149. package/development/seat-reservation/seat-reservation-area.d.ts.map +1 -0
  150. package/development/seat-reservation/seat-reservation-area.js +5 -0
  151. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.d.ts +9 -0
  152. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.d.ts.map +1 -0
  153. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +303 -0
  154. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.d.ts +20 -0
  155. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.d.ts.map +1 -0
  156. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +167 -0
  157. package/development/seat-reservation/seat-reservation-graphic.d.ts +5 -0
  158. package/development/seat-reservation/seat-reservation-graphic.d.ts.map +1 -0
  159. package/development/seat-reservation/seat-reservation-graphic.js +5 -0
  160. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +65 -0
  161. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -0
  162. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +798 -0
  163. package/development/seat-reservation/seat-reservation-navigation-coach.d.ts +5 -0
  164. package/development/seat-reservation/seat-reservation-navigation-coach.d.ts.map +1 -0
  165. package/development/seat-reservation/seat-reservation-navigation-coach.js +5 -0
  166. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts +21 -0
  167. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts.map +1 -0
  168. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +120 -0
  169. package/development/seat-reservation/seat-reservation-navigation-services.d.ts +5 -0
  170. package/development/seat-reservation/seat-reservation-navigation-services.d.ts.map +1 -0
  171. package/development/seat-reservation/seat-reservation-navigation-services.js +5 -0
  172. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts +42 -0
  173. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts.map +1 -0
  174. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +462 -0
  175. package/development/seat-reservation/seat-reservation-place-control.d.ts +5 -0
  176. package/development/seat-reservation/seat-reservation-place-control.d.ts.map +1 -0
  177. package/development/seat-reservation/seat-reservation-place-control.js +5 -0
  178. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts +14 -0
  179. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  180. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +34 -0
  181. package/development/seat-reservation/seat-reservation-scoped.d.ts +5 -0
  182. package/development/seat-reservation/seat-reservation-scoped.d.ts.map +1 -0
  183. package/development/seat-reservation/seat-reservation-scoped.js +5 -0
  184. package/development/seat-reservation/seat-reservation.d.ts +6 -0
  185. package/development/seat-reservation/seat-reservation.d.ts.map +1 -0
  186. package/development/seat-reservation/seat-reservation.js +7 -0
  187. package/development/seat-reservation.d.ts +12 -0
  188. package/development/seat-reservation.d.ts.map +1 -0
  189. package/development/seat-reservation.js +30 -0
  190. package/development/timetable-duration/timetable-duration.component.d.ts +22 -0
  191. package/development/timetable-duration/timetable-duration.component.d.ts.map +1 -0
  192. package/development/timetable-duration/timetable-duration.component.js +114 -0
  193. package/development/timetable-duration.d.ts +5 -0
  194. package/development/timetable-duration.d.ts.map +1 -0
  195. package/development/timetable-duration.js +5 -0
  196. package/development/timetable-row/timetable-row.component.d.ts +87 -0
  197. package/development/timetable-row/timetable-row.component.d.ts.map +1 -0
  198. package/development/timetable-row/timetable-row.component.js +787 -0
  199. package/development/timetable-row.d.ts +5 -0
  200. package/development/timetable-row.d.ts.map +1 -0
  201. package/development/timetable-row.js +12 -0
  202. package/development/toDate-BWb6Z1JD.js +24 -0
  203. package/differenceInMinutes-COvvdYsJ.js +23 -0
  204. package/format-CmKROkbc.js +1186 -0
  205. package/index.d.ts +44 -0
  206. package/index.js +43 -0
  207. package/isValid-m3_OsPaB.js +45 -0
  208. package/journey-summary/journey-summary.component.js +193 -0
  209. package/journey-summary.js +4 -0
  210. package/package.json +161 -1
  211. package/pearl-chain/pearl-chain.component.js +164 -0
  212. package/pearl-chain-time/pearl-chain-time.component.js +156 -0
  213. package/pearl-chain-time.js +4 -0
  214. package/pearl-chain-vertical/pearl-chain-vertical.component.js +24 -0
  215. package/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +76 -0
  216. package/pearl-chain-vertical-item.js +4 -0
  217. package/pearl-chain-vertical.js +4 -0
  218. package/pearl-chain.js +4 -0
  219. package/seat-reservation/common/mapper/icon-mapper.js +71 -0
  220. package/seat-reservation/common/mapper/mapper.js +89 -0
  221. package/seat-reservation/common/mapper/seat-reservation-sample-data.js +31668 -0
  222. package/seat-reservation/common/mapper.js +9 -0
  223. package/seat-reservation/common/svgs.js +243 -0
  224. package/seat-reservation/common/translations/i18n.js +861 -0
  225. package/seat-reservation/common/translations.js +4 -0
  226. package/seat-reservation/common/types.js +1 -0
  227. package/seat-reservation/common.js +13 -0
  228. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +756 -0
  229. package/seat-reservation/seat-reservation/seat-reservation.component.js +410 -0
  230. package/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +50 -0
  231. package/seat-reservation/seat-reservation-area.js +4 -0
  232. package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +292 -0
  233. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +73 -0
  234. package/seat-reservation/seat-reservation-graphic.js +4 -0
  235. package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +277 -0
  236. package/seat-reservation/seat-reservation-navigation-coach.js +4 -0
  237. package/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +73 -0
  238. package/seat-reservation/seat-reservation-navigation-services.js +4 -0
  239. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +167 -0
  240. package/seat-reservation/seat-reservation-place-control.js +4 -0
  241. package/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +20 -0
  242. package/seat-reservation/seat-reservation-scoped.js +4 -0
  243. package/seat-reservation/seat-reservation.js +6 -0
  244. package/seat-reservation.js +29 -0
  245. package/timetable-duration/timetable-duration.component.js +56 -0
  246. package/timetable-duration.js +4 -0
  247. package/timetable-row/timetable-row.component.js +426 -0
  248. package/timetable-row.js +11 -0
  249. package/toDate-Bw2KTWeq.js +15 -0
@@ -0,0 +1,798 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ import { __runInitializers, __esDecorate } from "tslib";
9
+ import { SbbLanguageController } from "@sbb-esta/lyne-elements/core/controllers.js";
10
+ import { forceType } from "@sbb-esta/lyne-elements/core/decorators.js";
11
+ import { boxSizingStyles } from "@sbb-esta/lyne-elements/core/styles.js";
12
+ import { css, LitElement, nothing, html } from "lit";
13
+ import { customElement, property } from "lit/decorators.js";
14
+ import { classMap } from "lit/directives/class-map.js";
15
+ import { getI18nSeatReservation } from "../common/translations.js";
16
+ import "@sbb-esta/lyne-elements/screen-reader-only.js";
17
+ import "../seat-reservation-navigation-services.js";
18
+ const style = css`:host {
19
+ display: inline-block;
20
+ min-height: calc(44 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
21
+ --sbb-seat-reservation-navigation-travelclass-spacing: 10;
22
+ --sbb-seat-reservation-navigation-btn-border-width-default: 1;
23
+ --sbb-seat-reservation-navigation-btn-border-width: var(
24
+ --sbb-seat-reservation-navigation-btn-border-width-default
25
+ );
26
+ --sbb-seat-reservation-navigation-btn-border-color: var(--sbb-color-granite);
27
+ --sbb-seat-reservation-navigation-btn-border-color: light-dark(
28
+ var(--sbb-color-granite),
29
+ var(--sbb-color-graphite)
30
+ );
31
+ --sbb-seat-reservation-navigation-btn-background-color: var(--sbb-color-white);
32
+ --sbb-seat-reservation-navigation-btn-background-color: light-dark(
33
+ var(--sbb-color-white),
34
+ var(--sbb-color-black)
35
+ );
36
+ --sbb-seat-reservation-navigation-btn-border-width-selected: 2;
37
+ --sbb-seat-reservation-navigation-btn-background-color-selected: var(--sbb-color-milk);
38
+ --sbb-seat-reservation-navigation-btn-background-color-selected: light-dark(
39
+ var(--sbb-color-milk),
40
+ var(--sbb-color-iron)
41
+ );
42
+ --sbb-seat-reservation-navigation-btn-border-color-selected: var(--sbb-color-black);
43
+ --sbb-seat-reservation-navigation-btn-border-color-selected: light-dark(
44
+ var(--sbb-color-black),
45
+ var(--sbb-color-white)
46
+ );
47
+ --sbb-seat-reservation-navigation-btn-outline-width-focused: 1;
48
+ --sbb-seat-reservation-navigation-btn-outline-color-focused: var(--sbb-color-black);
49
+ --sbb-seat-reservation-navigation-btn-outline-color-focused: light-dark(
50
+ var(--sbb-color-black),
51
+ var(--sbb-color-white)
52
+ );
53
+ --sbb-seat-reservation-navigation-btn-outline-offset-focused: 4;
54
+ --sbb-seat-reservation-navigation-btn-background-color-focused: var(--sbb-color-white);
55
+ --sbb-seat-reservation-navigation-btn-background-color-focused: light-dark(
56
+ var(--sbb-color-white),
57
+ var(--sbb-color-black)
58
+ );
59
+ --sbb-seat-reservation-navigation-btn-border-width-focused: var(
60
+ --sbb-seat-reservation-navigation-btn-border-width
61
+ );
62
+ --sbb-seat-reservation-navigation-btn-border-color-focused: var(--sbb-color-black);
63
+ --sbb-seat-reservation-navigation-btn-border-color-focused: light-dark(
64
+ var(--sbb-color-black),
65
+ var(--sbb-color-white)
66
+ );
67
+ --sbb-seat-reservation-navigation-btn-border-width-hovered: 2;
68
+ --sbb-seat-reservation-navigation-btn-background-color-hovered: var(--sbb-color-cloud);
69
+ --sbb-seat-reservation-navigation-btn-background-color-hovered: light-dark(
70
+ var(--sbb-color-cloud),
71
+ var(--sbb-color-midnight)
72
+ );
73
+ --sbb-seat-reservation-navigation-btn-border-color-hovered: var(--sbb-color-black);
74
+ --sbb-seat-reservation-navigation-btn-border-color-hovered: light-dark(
75
+ var(--sbb-color-black),
76
+ var(--sbb-color-white)
77
+ );
78
+ --sbb-seat-reservation-navigation-btn-background-color-disabled: var(--sbb-background-color-2);
79
+ --sbb-seat-reservation-navigation-btn-border-color-disabled: var(--sbb-color-platinum);
80
+ --sbb-seat-reservation-navigation-btn-border-color-disabled: light-dark(
81
+ var(--sbb-color-platinum),
82
+ var(--sbb-color-iron)
83
+ );
84
+ }
85
+
86
+ .sbb-sr-navigation__item-coach {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: calc(8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
90
+ width: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
91
+ list-style-type: none;
92
+ }
93
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class, .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {
94
+ width: calc(100% - 18 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
95
+ }
96
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation__ctrl-button:not(.sbb-seat-reservation-navigation-driver-area) {
97
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x);
98
+ }
99
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation__ctrl-button:not(.sbb-seat-reservation-navigation-driver-area)::before {
100
+ content: "";
101
+ position: absolute;
102
+ width: 100%;
103
+ height: 100%;
104
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
105
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x);
106
+ }
107
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class {
108
+ margin-inline-start: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
109
+ }
110
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {
111
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x);
112
+ }
113
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {
114
+ content: "";
115
+ position: absolute;
116
+ width: 100%;
117
+ height: 100%;
118
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
119
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x);
120
+ }
121
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__additional-information {
122
+ padding-inline-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
123
+ }
124
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {
125
+ margin-inline-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
126
+ }
127
+
128
+ .sbb-sr-navigation__ctrl-button {
129
+ appearance: none;
130
+ box-sizing: border-box;
131
+ margin: 0;
132
+ outline: none;
133
+ border: none;
134
+ border-radius: 0;
135
+ padding: 0;
136
+ background: none;
137
+ -webkit-tap-highlight-color: transparent;
138
+ color: inherit;
139
+ display: flex;
140
+ flex-direction: column;
141
+ justify-content: center;
142
+ height: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
143
+ position: relative;
144
+ background-color: var(--sbb-seat-reservation-navigation-btn-background-color);
145
+ cursor: var(--sbb-cursor-pointer);
146
+ }
147
+ .sbb-sr-navigation__ctrl-button.sbb-sr-navigation-driver-area {
148
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
149
+ }
150
+ .sbb-sr-navigation__ctrl-button.sbb-sr-navigation-driver-area::before {
151
+ content: "";
152
+ position: absolute;
153
+ width: 100%;
154
+ height: 100%;
155
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
156
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
157
+ }
158
+ .sbb-sr-navigation__ctrl-button {
159
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
160
+ }
161
+ .sbb-sr-navigation__ctrl-button::before {
162
+ content: "";
163
+ position: absolute;
164
+ width: 100%;
165
+ height: 100%;
166
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
167
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
168
+ }
169
+
170
+ .sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button {
171
+ --sbb-seat-reservation-navigation-btn-background-color: var(
172
+ --sbb-seat-reservation-navigation-btn-background-color-focused
173
+ );
174
+ --sbb-seat-reservation-navigation-btn-border-color: var(
175
+ --sbb-seat-reservation-navigation-btn-border-color-focused
176
+ );
177
+ --sbb-seat-reservation-navigation-btn-border-width: var(
178
+ --sbb-seat-reservation-navigation-btn-border-width-focused
179
+ );
180
+ outline: calc(var(--sbb-seat-reservation-navigation-btn-outline-width-focused) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-outline-color-focused);
181
+ outline-offset: calc(var(--sbb-seat-reservation-navigation-btn-outline-offset-focused) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
182
+ }
183
+ .sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-travelclass {
184
+ background-color: var(--sbb-color-metal);
185
+ background-color: light-dark(var(--sbb-color-metal), var(--sbb-color-storm));
186
+ }
187
+ .sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-number {
188
+ color: var(--sbb-color-anthracite);
189
+ color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-graphite));
190
+ }
191
+
192
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button {
193
+ --sbb-seat-reservation-navigation-btn-background-color: var(
194
+ --sbb-seat-reservation-navigation-btn-background-color-selected
195
+ );
196
+ --sbb-seat-reservation-navigation-btn-border-color: var(
197
+ --sbb-seat-reservation-navigation-btn-border-color-selected
198
+ );
199
+ --sbb-seat-reservation-navigation-btn-border-width: var(
200
+ --sbb-seat-reservation-navigation-btn-border-width-selected
201
+ );
202
+ }
203
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-travelclass {
204
+ background-color: var(--sbb-color-black);
205
+ background-color: light-dark(var(--sbb-color-black), var(--sbb-color-white));
206
+ }
207
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-number {
208
+ color: var(--sbb-color-black);
209
+ color: light-dark(var(--sbb-color-black), var(--sbb-color-white));
210
+ }
211
+
212
+ .sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
213
+ --sbb-seat-reservation-navigation-btn-background-color: var(
214
+ --sbb-seat-reservation-navigation-btn-background-color-hovered
215
+ );
216
+ --sbb-seat-reservation-navigation-btn-border-color: var(
217
+ --sbb-seat-reservation-navigation-btn-border-color-hovered
218
+ );
219
+ --sbb-seat-reservation-navigation-btn-border-width: var(
220
+ --sbb-seat-reservation-navigation-btn-border-width-hovered
221
+ );
222
+ }
223
+
224
+ .sbb-sr-navigation__item-coach--selected.sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
225
+ --sbb-seat-reservation-navigation-btn-background-color: var(
226
+ --sbb-seat-reservation-navigation-btn-background-color-selected
227
+ );
228
+ --sbb-seat-reservation-navigation-btn-border-color: var(
229
+ --sbb-seat-reservation-navigation-btn-border-color-selected
230
+ );
231
+ --sbb-seat-reservation-navigation-btn-border-width: var(
232
+ --sbb-seat-reservation-navigation-btn-border-width-selected
233
+ );
234
+ background-color: var(--sbb-seat-reservation-navigation-btn-background-color-hovered) !important;
235
+ }
236
+
237
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button:focus-visible:not([disabled], :disabled) {
238
+ --sbb-seat-reservation-navigation-btn-background-color: var(
239
+ --sbb-seat-reservation-navigation-btn-background-color-selected
240
+ );
241
+ --sbb-seat-reservation-navigation-btn-border-color: var(
242
+ --sbb-seat-reservation-navigation-btn-border-color-selected
243
+ );
244
+ --sbb-seat-reservation-navigation-btn-border-width: var(
245
+ --sbb-seat-reservation-navigation-btn-border-width-selected
246
+ );
247
+ }
248
+
249
+ .sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
250
+ --sbb-seat-reservation-navigation-btn-background-color: var(
251
+ --sbb-seat-reservation-navigation-btn-background-color-hovered
252
+ );
253
+ --sbb-seat-reservation-navigation-btn-border-color: var(
254
+ --sbb-seat-reservation-navigation-btn-border-color-hovered
255
+ );
256
+ --sbb-seat-reservation-navigation-btn-border-width: var(
257
+ --sbb-seat-reservation-navigation-btn-border-width-hovered
258
+ );
259
+ }
260
+
261
+ .sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) {
262
+ --sbb-seat-reservation-navigation-btn-background-color: var(
263
+ --sbb-seat-reservation-navigation-btn-background-color-hovered
264
+ );
265
+ --sbb-seat-reservation-navigation-btn-border-color: var(
266
+ --sbb-seat-reservation-navigation-btn-border-color-hovered
267
+ );
268
+ --sbb-seat-reservation-navigation-btn-border-width: var(
269
+ --sbb-seat-reservation-navigation-btn-border-width-hovered
270
+ );
271
+ }
272
+ .sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) .sbb-sr-navigation__item-coach-travelclass {
273
+ background-color: var(--sbb-color-smoke);
274
+ }
275
+ .sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) .sbb-sr-navigation__item-coach-number {
276
+ color: var(--sbb-color-iron);
277
+ color: light-dark(var(--sbb-color-iron), var(--sbb-color-silver));
278
+ }
279
+
280
+ .sbb-sr-navigation__ctrl-button:is([disabled], :disabled) {
281
+ --sbb-seat-reservation-navigation-btn-background-color: var(
282
+ --sbb-seat-reservation-navigation-btn-background-color-disabled
283
+ );
284
+ --sbb-seat-reservation-navigation-btn-border-color: var(
285
+ --sbb-seat-reservation-navigation-btn-border-color-disabled
286
+ );
287
+ cursor: unset;
288
+ pointer-events: unset;
289
+ }
290
+ .sbb-sr-navigation__ctrl-button:is([disabled], :disabled) .sbb-sr-navigation__item-coach-travelclass {
291
+ background-color: var(--sbb-color-graphite);
292
+ background-color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));
293
+ }
294
+ .sbb-sr-navigation__ctrl-button:is([disabled], :disabled) .sbb-sr-navigation__item-coach-number {
295
+ color: var(--sbb-color-graphite);
296
+ color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));
297
+ }
298
+
299
+ .sbb-sr-navigation__additional-information {
300
+ display: flex;
301
+ justify-content: space-between;
302
+ align-items: center;
303
+ flex: 1;
304
+ column-gap: calc(8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
305
+ padding-inline: calc(16 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
306
+ font-family: var(--sbb-typo-font-family);
307
+ font-weight: 700;
308
+ color: var(--sbb-color-granite);
309
+ color: light-dark(var(--sbb-color-granite), var(--sbb-color-granite));
310
+ }
311
+ @media (forced-colors: active) {
312
+ .sbb-sr-navigation__additional-information {
313
+ color: var(--sbb-color-milk);
314
+ }
315
+ }
316
+
317
+ .sbb-sr-navigation__item-coach-number {
318
+ color: var(--sbb-color-granite);
319
+ color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
320
+ }
321
+ @media (forced-colors: active) {
322
+ .sbb-sr-navigation__item-coach-number {
323
+ color: var(--sbb-color-granite);
324
+ color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
325
+ }
326
+ }
327
+ @media (forced-colors: active) and (forced-colors: active) {
328
+ .sbb-sr-navigation__item-coach-number {
329
+ color: inherit;
330
+ }
331
+ }
332
+ .sbb-sr-navigation__item-coach-number .sbb-sr-navigation__item-coach-travelclass {
333
+ background-color: var(--sbb-background-color-2-inverted);
334
+ }
335
+
336
+ .sbb-sr-navigation--first-class {
337
+ width: calc(100% - 8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
338
+ position: absolute;
339
+ inset-block-start: calc(3 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
340
+ inset-inline-start: calc(4 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
341
+ border: calc(1 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid transparent;
342
+ border-radius: var(--sbb-border-radius-1x);
343
+ margin: auto;
344
+ background-color: var(--sbb-color-lemon);
345
+ }
346
+
347
+ .sbb-sr-navigation__item-coach-travelclass {
348
+ display: flex;
349
+ align-items: center;
350
+ justify-content: center;
351
+ min-height: calc(20 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
352
+ min-width: calc(20 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
353
+ border-radius: var(--sbb-border-radius-1x);
354
+ text-align: center;
355
+ background-color: var(--sbb-color-granite);
356
+ background-color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
357
+ color: var(--sbb-color-white);
358
+ color: light-dark(var(--sbb-color-white), var(--sbb-color-black));
359
+ }
360
+
361
+ :host([vertical]) .sbb-sr-navigation__item-coach {
362
+ flex-direction: row;
363
+ }
364
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation__ctrl-button {
365
+ flex-direction: row-reverse;
366
+ height: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
367
+ min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
368
+ }
369
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation__additional-information {
370
+ flex-direction: column-reverse;
371
+ padding-block: calc(16 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
372
+ padding-inline-start: unset;
373
+ padding-inline-end: unset;
374
+ }
375
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation--first-class {
376
+ height: calc(100% - 8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
377
+ width: initial;
378
+ inset-inline-end: calc(3 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
379
+ inset-block-start: calc(4 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
380
+ inset-inline-start: initial;
381
+ }
382
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class, :host([vertical]) .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {
383
+ height: calc(100% - 18 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
384
+ }
385
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {
386
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
387
+ }
388
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {
389
+ content: "";
390
+ position: absolute;
391
+ width: 100%;
392
+ height: 100%;
393
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
394
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
395
+ }
396
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation--first-class {
397
+ margin-block-start: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
398
+ margin-inline-start: initial;
399
+ }
400
+ :host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {
401
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
402
+ }
403
+ :host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {
404
+ content: "";
405
+ position: absolute;
406
+ width: 100%;
407
+ height: 100%;
408
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
409
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
410
+ }
411
+ :host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation--first-class {
412
+ margin-block-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
413
+ margin-inline-end: initial;
414
+ }
415
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation-driver-area {
416
+ height: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
417
+ min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
418
+ }`;
419
+ let SbbSeatReservationNavigationCoachElement = (() => {
420
+ var _coachId_accessor_storage, _propertyIds_accessor_storage, _selected_accessor_storage, _focused_accessor_storage, _hovered_accessor_storage, _nativeFocusActive_accessor_storage, _index_accessor_storage, _freePlacesByType_accessor_storage, _travelClass_accessor_storage, _driverArea_accessor_storage, _first_accessor_storage, _last_accessor_storage, _disable_accessor_storage, _vertical_accessor_storage, _a;
421
+ let _classDecorators = [customElement("sbb-seat-reservation-navigation-coach")];
422
+ let _classDescriptor;
423
+ let _classExtraInitializers = [];
424
+ let _classThis;
425
+ let _classSuper = LitElement;
426
+ let _coachId_decorators;
427
+ let _coachId_initializers = [];
428
+ let _coachId_extraInitializers = [];
429
+ let _propertyIds_decorators;
430
+ let _propertyIds_initializers = [];
431
+ let _propertyIds_extraInitializers = [];
432
+ let _selected_decorators;
433
+ let _selected_initializers = [];
434
+ let _selected_extraInitializers = [];
435
+ let _focused_decorators;
436
+ let _focused_initializers = [];
437
+ let _focused_extraInitializers = [];
438
+ let _hovered_decorators;
439
+ let _hovered_initializers = [];
440
+ let _hovered_extraInitializers = [];
441
+ let _nativeFocusActive_decorators;
442
+ let _nativeFocusActive_initializers = [];
443
+ let _nativeFocusActive_extraInitializers = [];
444
+ let _index_decorators;
445
+ let _index_initializers = [];
446
+ let _index_extraInitializers = [];
447
+ let _freePlacesByType_decorators;
448
+ let _freePlacesByType_initializers = [];
449
+ let _freePlacesByType_extraInitializers = [];
450
+ let _travelClass_decorators;
451
+ let _travelClass_initializers = [];
452
+ let _travelClass_extraInitializers = [];
453
+ let _driverArea_decorators;
454
+ let _driverArea_initializers = [];
455
+ let _driverArea_extraInitializers = [];
456
+ let _first_decorators;
457
+ let _first_initializers = [];
458
+ let _first_extraInitializers = [];
459
+ let _last_decorators;
460
+ let _last_initializers = [];
461
+ let _last_extraInitializers = [];
462
+ let _disable_decorators;
463
+ let _disable_initializers = [];
464
+ let _disable_extraInitializers = [];
465
+ let _vertical_decorators;
466
+ let _vertical_initializers = [];
467
+ let _vertical_extraInitializers = [];
468
+ _a = class extends _classSuper {
469
+ constructor() {
470
+ super(...arguments);
471
+ __privateAdd(this, _coachId_accessor_storage);
472
+ __privateAdd(this, _propertyIds_accessor_storage);
473
+ __privateAdd(this, _selected_accessor_storage);
474
+ __privateAdd(this, _focused_accessor_storage);
475
+ __privateAdd(this, _hovered_accessor_storage);
476
+ __privateAdd(this, _nativeFocusActive_accessor_storage);
477
+ __privateAdd(this, _index_accessor_storage);
478
+ __privateAdd(this, _freePlacesByType_accessor_storage);
479
+ __privateAdd(this, _travelClass_accessor_storage);
480
+ __privateAdd(this, _driverArea_accessor_storage);
481
+ __privateAdd(this, _first_accessor_storage);
482
+ __privateAdd(this, _last_accessor_storage);
483
+ __privateAdd(this, _disable_accessor_storage);
484
+ __privateAdd(this, _vertical_accessor_storage);
485
+ __privateSet(this, _coachId_accessor_storage, __runInitializers(this, _coachId_initializers, ""));
486
+ __privateSet(this, _propertyIds_accessor_storage, (__runInitializers(this, _coachId_extraInitializers), __runInitializers(this, _propertyIds_initializers, [])));
487
+ __privateSet(this, _selected_accessor_storage, (__runInitializers(this, _propertyIds_extraInitializers), __runInitializers(this, _selected_initializers, false)));
488
+ __privateSet(this, _focused_accessor_storage, (__runInitializers(this, _selected_extraInitializers), __runInitializers(this, _focused_initializers, false)));
489
+ __privateSet(this, _hovered_accessor_storage, (__runInitializers(this, _focused_extraInitializers), __runInitializers(this, _hovered_initializers, false)));
490
+ __privateSet(this, _nativeFocusActive_accessor_storage, (__runInitializers(this, _hovered_extraInitializers), __runInitializers(this, _nativeFocusActive_initializers, true)));
491
+ __privateSet(this, _index_accessor_storage, (__runInitializers(this, _nativeFocusActive_extraInitializers), __runInitializers(this, _index_initializers, 0)));
492
+ __privateSet(this, _freePlacesByType_accessor_storage, (__runInitializers(this, _index_extraInitializers), __runInitializers(this, _freePlacesByType_initializers, { seats: 0, bicycles: 0 })));
493
+ __privateSet(this, _travelClass_accessor_storage, (__runInitializers(this, _freePlacesByType_extraInitializers), __runInitializers(this, _travelClass_initializers, ["ANY_CLASS"])));
494
+ __privateSet(this, _driverArea_accessor_storage, (__runInitializers(this, _travelClass_extraInitializers), __runInitializers(this, _driverArea_initializers, false)));
495
+ __privateSet(this, _first_accessor_storage, (__runInitializers(this, _driverArea_extraInitializers), __runInitializers(this, _first_initializers, false)));
496
+ __privateSet(this, _last_accessor_storage, (__runInitializers(this, _first_extraInitializers), __runInitializers(this, _last_initializers, false)));
497
+ __privateSet(this, _disable_accessor_storage, (__runInitializers(this, _last_extraInitializers), __runInitializers(this, _disable_initializers, false)));
498
+ __privateSet(this, _vertical_accessor_storage, (__runInitializers(this, _disable_extraInitializers), __runInitializers(this, _vertical_initializers, false)));
499
+ this._language = (__runInitializers(this, _vertical_extraInitializers), new SbbLanguageController(this));
500
+ }
501
+ /** Coach ID, which is used to identify the coach in the navigation */
502
+ get coachId() {
503
+ return __privateGet(this, _coachId_accessor_storage);
504
+ }
505
+ set coachId(value) {
506
+ __privateSet(this, _coachId_accessor_storage, value);
507
+ }
508
+ /** Coach service property ids, which are used to display the services in the navigation */
509
+ get propertyIds() {
510
+ return __privateGet(this, _propertyIds_accessor_storage);
511
+ }
512
+ set propertyIds(value) {
513
+ __privateSet(this, _propertyIds_accessor_storage, value);
514
+ }
515
+ /** Select coach property */
516
+ get selected() {
517
+ return __privateGet(this, _selected_accessor_storage);
518
+ }
519
+ set selected(value) {
520
+ __privateSet(this, _selected_accessor_storage, value);
521
+ }
522
+ /** Focus coach property */
523
+ get focused() {
524
+ return __privateGet(this, _focused_accessor_storage);
525
+ }
526
+ set focused(value) {
527
+ __privateSet(this, _focused_accessor_storage, value);
528
+ }
529
+ /** Hover coach property */
530
+ get hovered() {
531
+ return __privateGet(this, _hovered_accessor_storage);
532
+ }
533
+ set hovered(value) {
534
+ __privateSet(this, _hovered_accessor_storage, value);
535
+ }
536
+ /** Native focus for this navigation coach is also set when the focused property is changed */
537
+ get nativeFocusActive() {
538
+ return __privateGet(this, _nativeFocusActive_accessor_storage);
539
+ }
540
+ set nativeFocusActive(value) {
541
+ __privateSet(this, _nativeFocusActive_accessor_storage, value);
542
+ }
543
+ get index() {
544
+ return __privateGet(this, _index_accessor_storage);
545
+ }
546
+ set index(value) {
547
+ __privateSet(this, _index_accessor_storage, value);
548
+ }
549
+ /** Representation of places available for selecting, counting seat places and bicycle places separately */
550
+ get freePlacesByType() {
551
+ return __privateGet(this, _freePlacesByType_accessor_storage);
552
+ }
553
+ set freePlacesByType(value) {
554
+ __privateSet(this, _freePlacesByType_accessor_storage, value);
555
+ }
556
+ /** Travel class of the coach */
557
+ get travelClass() {
558
+ return __privateGet(this, _travelClass_accessor_storage);
559
+ }
560
+ set travelClass(value) {
561
+ __privateSet(this, _travelClass_accessor_storage, value);
562
+ }
563
+ /** If the coach is a driver/restricted area */
564
+ get driverArea() {
565
+ return __privateGet(this, _driverArea_accessor_storage);
566
+ }
567
+ set driverArea(value) {
568
+ __privateSet(this, _driverArea_accessor_storage, value);
569
+ }
570
+ /** If the coach is the first in the navigation */
571
+ get first() {
572
+ return __privateGet(this, _first_accessor_storage);
573
+ }
574
+ set first(value) {
575
+ __privateSet(this, _first_accessor_storage, value);
576
+ }
577
+ /** If the coach is the last in the navigation */
578
+ get last() {
579
+ return __privateGet(this, _last_accessor_storage);
580
+ }
581
+ set last(value) {
582
+ __privateSet(this, _last_accessor_storage, value);
583
+ }
584
+ /** Disable the coach navigation */
585
+ get disable() {
586
+ return __privateGet(this, _disable_accessor_storage);
587
+ }
588
+ set disable(value) {
589
+ __privateSet(this, _disable_accessor_storage, value);
590
+ }
591
+ /** If the coach navigation should be displayed vertically */
592
+ get vertical() {
593
+ return __privateGet(this, _vertical_accessor_storage);
594
+ }
595
+ set vertical(value) {
596
+ __privateSet(this, _vertical_accessor_storage, value);
597
+ }
598
+ willUpdate(changedProperties) {
599
+ super.willUpdate(changedProperties);
600
+ if (changedProperties.has("selected")) {
601
+ const selectedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
602
+ if (this.selected && selectedNavButtonElement) {
603
+ if (this.nativeFocusActive) {
604
+ selectedNavButtonElement.focus();
605
+ }
606
+ this.dispatchEvent(new Event("focuscoach", { bubbles: true, composed: true }));
607
+ }
608
+ }
609
+ if (changedProperties.has("focused") && this.focused) {
610
+ const focusedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
611
+ if (focusedNavButtonElement && this.nativeFocusActive) {
612
+ focusedNavButtonElement.focus();
613
+ }
614
+ }
615
+ }
616
+ /**
617
+ * Render a list of service icons provided by a caller
618
+ *
619
+ * @protected
620
+ */
621
+ render() {
622
+ return html`
623
+ <div
624
+ class="${classMap({
625
+ "sbb-sr-navigation__item-coach": true,
626
+ "last-coach": this.last,
627
+ "first-coach": this.first,
628
+ "sbb-sr-navigation__item-coach--selected": this.selected,
629
+ "sbb-sr-navigation__item-coach--focused": this.focused,
630
+ "sbb-sr-navigation__item-coach--hovered": this.hovered
631
+ })}"
632
+ >
633
+ ${this._getNavigationButton()}
634
+ ${this.propertyIds?.length ? html`<sbb-seat-reservation-navigation-services
635
+ ?vertical="${this.vertical}"
636
+ .propertyIds="${this.propertyIds}"
637
+ ></sbb-seat-reservation-navigation-services>` : nothing}
638
+ </div>
639
+ `;
640
+ }
641
+ _getNavigationButton() {
642
+ const currServiceClassNumber = this._getCoachServiceClassNumber();
643
+ const titleDescriptionNavCoachButton = this._getTitleDescriptionNavCoachButton(currServiceClassNumber);
644
+ const ariaDescriptionCoachServices = this._getAriaDescriptionCoachServices();
645
+ return html` <button
646
+ @click=${() => this._selectNavCoach(this.index)}
647
+ class="${classMap({
648
+ "sbb-sr-navigation__ctrl-button": true,
649
+ "sbb-sr-navigation-driver-area": this.driverArea
650
+ })}"
651
+ ?disabled="${this.disable}"
652
+ title="${titleDescriptionNavCoachButton}"
653
+ type="button"
654
+ aria-describedby="nav-coach-service-descriptions-${this.index}"
655
+ >
656
+ ${this._getBtnInformation(currServiceClassNumber)}
657
+ </button>
658
+ <sbb-screen-reader-only id="nav-coach-service-descriptions-${this.index}"
659
+ >${ariaDescriptionCoachServices}</sbb-screen-reader-only
660
+ >`;
661
+ }
662
+ _getBtnInformation(serviceClassNumber) {
663
+ if (this.driverArea) {
664
+ return null;
665
+ }
666
+ return html`
667
+ ${serviceClassNumber === 1 ? html`<span class="sbb-sr-navigation--first-class"></span>` : nothing}
668
+ ${this.travelClass?.length > 0 || this.coachId ? html`<div class="sbb-sr-navigation__additional-information">
669
+ ${this.coachId ? html`<div class="sbb-sr-navigation__item-coach-number" aria-hidden="true">
670
+ ${this.coachId}
671
+ </div>` : nothing}
672
+ <div
673
+ ${serviceClassNumber ?? nothing}
674
+ class="sbb-sr-navigation__item-coach-travelclass"
675
+ aria-hidden="true"
676
+ >
677
+ ${serviceClassNumber}
678
+ </div>
679
+ </div>` : nothing}
680
+ `;
681
+ }
682
+ _getTitleDescriptionNavCoachButton(serviceClassNumber) {
683
+ if (this.driverArea) {
684
+ return getI18nSeatReservation("NAVIGATE_COACH_BLOCKED", this._language.current, [
685
+ this.coachId
686
+ ]);
687
+ }
688
+ let label = getI18nSeatReservation("NAVIGATE_TO_COACH", this._language.current, [this.coachId]);
689
+ if (serviceClassNumber) {
690
+ const serviceClassTranslationKey = serviceClassNumber === 1 ? "SERVICE_CLASS_FIRST" : "SERVICE_CLASS_SECOND";
691
+ const serviceClassTranslation = getI18nSeatReservation(serviceClassTranslationKey, this._language.current);
692
+ const serviceClassLabel = getI18nSeatReservation("NAVIGATE_TO_COACH_SERVICE_CLASS_SUB", this._language.current, [serviceClassTranslation]);
693
+ label = label.concat(serviceClassLabel);
694
+ }
695
+ const freePlacesTxt = getI18nSeatReservation("COACH_AVAILABLE_NUMBER_OF_PLACES", this._language.current, [this.freePlacesByType.seats, this.freePlacesByType.bicycles]);
696
+ label = label.concat(". ").concat(freePlacesTxt);
697
+ return label;
698
+ }
699
+ _getAriaDescriptionCoachServices() {
700
+ let ariaDescription = null;
701
+ if (this.propertyIds.length) {
702
+ ariaDescription = getI18nSeatReservation("COACH_AVAILABLE_SERVICES", this._language.current) + ": ";
703
+ ariaDescription += this.propertyIds.map((propertyId) => getI18nSeatReservation(propertyId, this._language.current)).join();
704
+ }
705
+ return ariaDescription;
706
+ }
707
+ /**
708
+ * emits the index of the coach array for the main navigation.
709
+ * @param coachIndex
710
+ * @private
711
+ */
712
+ _selectNavCoach(coachIndex) {
713
+ this.dispatchEvent(new CustomEvent("selectcoach", {
714
+ bubbles: true,
715
+ composed: true,
716
+ detail: coachIndex
717
+ }));
718
+ }
719
+ _getCoachServiceClassNumber() {
720
+ if (this.travelClass?.includes("FIRST")) {
721
+ return 1;
722
+ } else if (this.travelClass?.includes("SECOND")) {
723
+ return 2;
724
+ } else {
725
+ return null;
726
+ }
727
+ }
728
+ }, _coachId_accessor_storage = new WeakMap(), _propertyIds_accessor_storage = new WeakMap(), _selected_accessor_storage = new WeakMap(), _focused_accessor_storage = new WeakMap(), _hovered_accessor_storage = new WeakMap(), _nativeFocusActive_accessor_storage = new WeakMap(), _index_accessor_storage = new WeakMap(), _freePlacesByType_accessor_storage = new WeakMap(), _travelClass_accessor_storage = new WeakMap(), _driverArea_accessor_storage = new WeakMap(), _first_accessor_storage = new WeakMap(), _last_accessor_storage = new WeakMap(), _disable_accessor_storage = new WeakMap(), _vertical_accessor_storage = new WeakMap(), _classThis = _a, (() => {
729
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
730
+ _coachId_decorators = [forceType(), property({ attribute: "coach-id" })];
731
+ _propertyIds_decorators = [property({ attribute: "property-ids", type: Array })];
732
+ _selected_decorators = [forceType(), property({ type: Boolean })];
733
+ _focused_decorators = [forceType(), property({ type: Boolean })];
734
+ _hovered_decorators = [forceType(), property({ type: Boolean })];
735
+ _nativeFocusActive_decorators = [forceType(), property({ type: Boolean })];
736
+ _index_decorators = [forceType(), property({ type: Number })];
737
+ _freePlacesByType_decorators = [property({ attribute: "free-places-by-type", type: Object })];
738
+ _travelClass_decorators = [property({ attribute: "travel-class", type: Array })];
739
+ _driverArea_decorators = [forceType(), property({ attribute: "driver-area", type: Boolean })];
740
+ _first_decorators = [forceType(), property({ type: Boolean })];
741
+ _last_decorators = [forceType(), property({ type: Boolean })];
742
+ _disable_decorators = [forceType(), property({ attribute: "disable", type: Boolean })];
743
+ _vertical_decorators = [forceType(), property({ type: Boolean, reflect: true, useDefault: true })];
744
+ __esDecorate(_a, null, _coachId_decorators, { kind: "accessor", name: "coachId", static: false, private: false, access: { has: (obj) => "coachId" in obj, get: (obj) => obj.coachId, set: (obj, value) => {
745
+ obj.coachId = value;
746
+ } }, metadata: _metadata }, _coachId_initializers, _coachId_extraInitializers);
747
+ __esDecorate(_a, null, _propertyIds_decorators, { kind: "accessor", name: "propertyIds", static: false, private: false, access: { has: (obj) => "propertyIds" in obj, get: (obj) => obj.propertyIds, set: (obj, value) => {
748
+ obj.propertyIds = value;
749
+ } }, metadata: _metadata }, _propertyIds_initializers, _propertyIds_extraInitializers);
750
+ __esDecorate(_a, null, _selected_decorators, { kind: "accessor", name: "selected", static: false, private: false, access: { has: (obj) => "selected" in obj, get: (obj) => obj.selected, set: (obj, value) => {
751
+ obj.selected = value;
752
+ } }, metadata: _metadata }, _selected_initializers, _selected_extraInitializers);
753
+ __esDecorate(_a, null, _focused_decorators, { kind: "accessor", name: "focused", static: false, private: false, access: { has: (obj) => "focused" in obj, get: (obj) => obj.focused, set: (obj, value) => {
754
+ obj.focused = value;
755
+ } }, metadata: _metadata }, _focused_initializers, _focused_extraInitializers);
756
+ __esDecorate(_a, null, _hovered_decorators, { kind: "accessor", name: "hovered", static: false, private: false, access: { has: (obj) => "hovered" in obj, get: (obj) => obj.hovered, set: (obj, value) => {
757
+ obj.hovered = value;
758
+ } }, metadata: _metadata }, _hovered_initializers, _hovered_extraInitializers);
759
+ __esDecorate(_a, null, _nativeFocusActive_decorators, { kind: "accessor", name: "nativeFocusActive", static: false, private: false, access: { has: (obj) => "nativeFocusActive" in obj, get: (obj) => obj.nativeFocusActive, set: (obj, value) => {
760
+ obj.nativeFocusActive = value;
761
+ } }, metadata: _metadata }, _nativeFocusActive_initializers, _nativeFocusActive_extraInitializers);
762
+ __esDecorate(_a, null, _index_decorators, { kind: "accessor", name: "index", static: false, private: false, access: { has: (obj) => "index" in obj, get: (obj) => obj.index, set: (obj, value) => {
763
+ obj.index = value;
764
+ } }, metadata: _metadata }, _index_initializers, _index_extraInitializers);
765
+ __esDecorate(_a, null, _freePlacesByType_decorators, { kind: "accessor", name: "freePlacesByType", static: false, private: false, access: { has: (obj) => "freePlacesByType" in obj, get: (obj) => obj.freePlacesByType, set: (obj, value) => {
766
+ obj.freePlacesByType = value;
767
+ } }, metadata: _metadata }, _freePlacesByType_initializers, _freePlacesByType_extraInitializers);
768
+ __esDecorate(_a, null, _travelClass_decorators, { kind: "accessor", name: "travelClass", static: false, private: false, access: { has: (obj) => "travelClass" in obj, get: (obj) => obj.travelClass, set: (obj, value) => {
769
+ obj.travelClass = value;
770
+ } }, metadata: _metadata }, _travelClass_initializers, _travelClass_extraInitializers);
771
+ __esDecorate(_a, null, _driverArea_decorators, { kind: "accessor", name: "driverArea", static: false, private: false, access: { has: (obj) => "driverArea" in obj, get: (obj) => obj.driverArea, set: (obj, value) => {
772
+ obj.driverArea = value;
773
+ } }, metadata: _metadata }, _driverArea_initializers, _driverArea_extraInitializers);
774
+ __esDecorate(_a, null, _first_decorators, { kind: "accessor", name: "first", static: false, private: false, access: { has: (obj) => "first" in obj, get: (obj) => obj.first, set: (obj, value) => {
775
+ obj.first = value;
776
+ } }, metadata: _metadata }, _first_initializers, _first_extraInitializers);
777
+ __esDecorate(_a, null, _last_decorators, { kind: "accessor", name: "last", static: false, private: false, access: { has: (obj) => "last" in obj, get: (obj) => obj.last, set: (obj, value) => {
778
+ obj.last = value;
779
+ } }, metadata: _metadata }, _last_initializers, _last_extraInitializers);
780
+ __esDecorate(_a, null, _disable_decorators, { kind: "accessor", name: "disable", static: false, private: false, access: { has: (obj) => "disable" in obj, get: (obj) => obj.disable, set: (obj, value) => {
781
+ obj.disable = value;
782
+ } }, metadata: _metadata }, _disable_initializers, _disable_extraInitializers);
783
+ __esDecorate(_a, null, _vertical_decorators, { kind: "accessor", name: "vertical", static: false, private: false, access: { has: (obj) => "vertical" in obj, get: (obj) => obj.vertical, set: (obj, value) => {
784
+ obj.vertical = value;
785
+ } }, metadata: _metadata }, _vertical_initializers, _vertical_extraInitializers);
786
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
787
+ _classThis = _classDescriptor.value;
788
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
789
+ })(), _a.styles = [boxSizingStyles, style], _a.events = {
790
+ selectcoach: "selectcoach",
791
+ focuscoach: "focuscoach"
792
+ }, __runInitializers(_classThis, _classExtraInitializers), _a;
793
+ return _classThis;
794
+ })();
795
+ export {
796
+ SbbSeatReservationNavigationCoachElement
797
+ };
798
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIG5vdGhpbmcsIHR5cGUgUHJvcGVydHlWYWx1ZXMsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi90cmFuc2xhdGlvbnMudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2FjaE51bWJlck9mRnJlZVBsYWNlcywgUGxhY2VUcmF2ZWxDbGFzcyB9IGZyb20gJy4uL2NvbW1vbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlcy50cyc7XG5cbmV4cG9ydCB0eXBlIFNlbGVjdENvYWNoRXZlbnREZXRhaWxzID0gbnVtYmVyO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSB0aGUgbmF2aWdhdGlvbiBjb2FjaCBpdGVtIGZvciBTZWF0IHJlc2VydmF0aW9uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzZWxlY3Rjb2FjaDogJ3NlbGVjdGNvYWNoJyxcbiAgICBmb2N1c2NvYWNoOiAnZm9jdXNjb2FjaCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIENvYWNoIElELCB3aGljaCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjb2FjaCBpbiB0aGUgbmF2aWdhdGlvbiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY29hY2gtaWQnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjb2FjaElkOiBzdHJpbmcgPSAnJztcblxuICAvKiogQ29hY2ggc2VydmljZSBwcm9wZXJ0eSBpZHMsIHdoaWNoIGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHNlcnZpY2VzIGluIHRoZSBuYXZpZ2F0aW9uICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3Byb3BlcnR5LWlkcycsIHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwcm9wZXJ0eUlkczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogU2VsZWN0IGNvYWNoIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBGb2N1cyBjb2FjaCBwcm9wZXJ0eSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBIb3ZlciBjb2FjaCBwcm9wZXJ0eSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBOYXRpdmUgZm9jdXMgZm9yIHRoaXMgbmF2aWdhdGlvbiBjb2FjaCBpcyBhbHNvIHNldCB3aGVuIHRoZSBmb2N1c2VkIHByb3BlcnR5IGlzIGNoYW5nZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG5hdGl2ZUZvY3VzQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbmRleDogbnVtYmVyID0gMDtcblxuICAvKiogUmVwcmVzZW50YXRpb24gb2YgcGxhY2VzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW5nLCBjb3VudGluZyBzZWF0IHBsYWNlcyBhbmQgYmljeWNsZSBwbGFjZXMgc2VwYXJhdGVseSAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmcmVlLXBsYWNlcy1ieS10eXBlJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmcmVlUGxhY2VzQnlUeXBlOiBDb2FjaE51bWJlck9mRnJlZVBsYWNlcyA9IHsgc2VhdHM6IDAsIGJpY3ljbGVzOiAwIH07XG5cbiAgLyoqIFRyYXZlbCBjbGFzcyBvZiB0aGUgY29hY2ggKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndHJhdmVsLWNsYXNzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHRyYXZlbENsYXNzOiBQbGFjZVRyYXZlbENsYXNzW10gPSBbJ0FOWV9DTEFTUyddO1xuXG4gIC8qKiBJZiB0aGUgY29hY2ggaXMgYSBkcml2ZXIvcmVzdHJpY3RlZCBhcmVhICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkcml2ZXItYXJlYScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGRyaXZlckFyZWE6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSWYgdGhlIGNvYWNoIGlzIHRoZSBmaXJzdCBpbiB0aGUgbmF2aWdhdGlvbiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSWYgdGhlIGNvYWNoIGlzIHRoZSBsYXN0IGluIHRoZSBuYXZpZ2F0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsYXN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERpc2FibGUgdGhlIGNvYWNoIG5hdmlnYXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIElmIHRoZSBjb2FjaCBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgdmVydGljYWxseSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSwgdXNlRGVmYXVsdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgdmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzZWxlY3RlZCcpKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE5hdkJ1dHRvbkVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcuc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uJyxcbiAgICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCAmJiBzZWxlY3RlZE5hdkJ1dHRvbkVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNBY3RpdmUpIHtcbiAgICAgICAgICBzZWxlY3RlZE5hdkJ1dHRvbkVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICAvKiogRW1pdHMgd2hlbiBhIG5hdiBjb2FjaCBoYXMgdGhlIGZvY3VzICovXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2ZvY3VzY29hY2gnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdmb2N1c2VkJykgJiYgdGhpcy5mb2N1c2VkKSB7XG4gICAgICBjb25zdCBmb2N1c2VkTmF2QnV0dG9uRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nLFxuICAgICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcblxuICAgICAgaWYgKGZvY3VzZWROYXZCdXR0b25FbGVtZW50ICYmIHRoaXMubmF0aXZlRm9jdXNBY3RpdmUpIHtcbiAgICAgICAgZm9jdXNlZE5hdkJ1dHRvbkVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGEgbGlzdCBvZiBzZXJ2aWNlIGljb25zIHByb3ZpZGVkIGJ5IGEgY2FsbGVyXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaCc6IHRydWUsXG4gICAgICAgICAgJ2xhc3QtY29hY2gnOiB0aGlzLmxhc3QsXG4gICAgICAgICAgJ2ZpcnN0LWNvYWNoJzogdGhpcy5maXJzdCxcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLXNlbGVjdGVkJzogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLWZvY3VzZWQnOiB0aGlzLmZvY3VzZWQsXG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLS1ob3ZlcmVkJzogdGhpcy5ob3ZlcmVkLFxuICAgICAgICB9KX1cIlxuICAgICAgPlxuICAgICAgICAke3RoaXMuX2dldE5hdmlnYXRpb25CdXR0b24oKX1cbiAgICAgICAgJHt0aGlzLnByb3BlcnR5SWRzPy5sZW5ndGhcbiAgICAgICAgICA/IGh0bWxgPHNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tc2VydmljZXNcbiAgICAgICAgICAgICAgP3ZlcnRpY2FsPVwiJHt0aGlzLnZlcnRpY2FsfVwiXG4gICAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz1cIiR7dGhpcy5wcm9wZXJ0eUlkc31cIlxuICAgICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlcz5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5hdmlnYXRpb25CdXR0b24oKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyU2VydmljZUNsYXNzTnVtYmVyID0gdGhpcy5fZ2V0Q29hY2hTZXJ2aWNlQ2xhc3NOdW1iZXIoKTtcbiAgICBjb25zdCB0aXRsZURlc2NyaXB0aW9uTmF2Q29hY2hCdXR0b24gPVxuICAgICAgdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uKGN1cnJTZXJ2aWNlQ2xhc3NOdW1iZXIpO1xuICAgIGNvbnN0IGFyaWFEZXNjcmlwdGlvbkNvYWNoU2VydmljZXMgPSB0aGlzLl9nZXRBcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzKCk7XG5cbiAgICByZXR1cm4gaHRtbGAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9zZWxlY3ROYXZDb2FjaCh0aGlzLmluZGV4KX1cbiAgICAgICAgY2xhc3M9XCIke2NsYXNzTWFwKHtcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uJzogdHJ1ZSxcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb24tZHJpdmVyLWFyZWEnOiB0aGlzLmRyaXZlckFyZWEsXG4gICAgICAgIH0pfVwiXG4gICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5kaXNhYmxlfVwiXG4gICAgICAgIHRpdGxlPVwiJHt0aXRsZURlc2NyaXB0aW9uTmF2Q29hY2hCdXR0b259XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJuYXYtY29hY2gtc2VydmljZS1kZXNjcmlwdGlvbnMtJHt0aGlzLmluZGV4fVwiXG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fZ2V0QnRuSW5mb3JtYXRpb24oY3VyclNlcnZpY2VDbGFzc051bWJlcil9XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5IGlkPVwibmF2LWNvYWNoLXNlcnZpY2UtZGVzY3JpcHRpb25zLSR7dGhpcy5pbmRleH1cIlxuICAgICAgICA+JHthcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seVxuICAgICAgPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRCdG5JbmZvcm1hdGlvbihzZXJ2aWNlQ2xhc3NOdW1iZXI6IG51bWJlciB8IG51bGwpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGlmICh0aGlzLmRyaXZlckFyZWEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgJHtzZXJ2aWNlQ2xhc3NOdW1iZXIgPT09IDFcbiAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb24tLWZpcnN0LWNsYXNzXCI+PC9zcGFuPmBcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHt0aGlzLnRyYXZlbENsYXNzPy5sZW5ndGggPiAwIHx8IHRoaXMuY29hY2hJZFxuICAgICAgICA/IGh0bWxgPGRpdiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19hZGRpdGlvbmFsLWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICAke3RoaXMuY29hY2hJZFxuICAgICAgICAgICAgICA/IGh0bWxgPGRpdiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLW51bWJlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLmNvYWNoSWR9XG4gICAgICAgICAgICAgICAgPC9kaXY+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICR7c2VydmljZUNsYXNzTnVtYmVyID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtdHJhdmVsY2xhc3NcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAke3NlcnZpY2VDbGFzc051bWJlcn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgOiBub3RoaW5nfVxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUaXRsZURlc2NyaXB0aW9uTmF2Q29hY2hCdXR0b24oc2VydmljZUNsYXNzTnVtYmVyOiBudW1iZXIgfCBudWxsKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kcml2ZXJBcmVhKSB7XG4gICAgICByZXR1cm4gZ2V0STE4blNlYXRSZXNlcnZhdGlvbignTkFWSUdBVEVfQ09BQ0hfQkxPQ0tFRCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgICAgdGhpcy5jb2FjaElkLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgbGV0IGxhYmVsID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbignTkFWSUdBVEVfVE9fQ09BQ0gnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbdGhpcy5jb2FjaElkXSk7XG5cbiAgICAvL0lmIHNlcnZpY2UgY2xhc3MgZXhpc3QsIHRoZW4gZXhwYW5kIGxhYmVsIHdpdGggc2VydmljZSBjbGFzcyB0cmFuc2xhdGlvblxuICAgIGlmIChzZXJ2aWNlQ2xhc3NOdW1iZXIpIHtcbiAgICAgIGNvbnN0IHNlcnZpY2VDbGFzc1RyYW5zbGF0aW9uS2V5ID1cbiAgICAgICAgc2VydmljZUNsYXNzTnVtYmVyID09PSAxID8gJ1NFUlZJQ0VfQ0xBU1NfRklSU1QnIDogJ1NFUlZJQ0VfQ0xBU1NfU0VDT05EJztcbiAgICAgIGNvbnN0IHNlcnZpY2VDbGFzc1RyYW5zbGF0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgc2VydmljZUNsYXNzVHJhbnNsYXRpb25LZXksXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VydmljZUNsYXNzTGFiZWwgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAnTkFWSUdBVEVfVE9fQ09BQ0hfU0VSVklDRV9DTEFTU19TVUInLFxuICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICBbc2VydmljZUNsYXNzVHJhbnNsYXRpb25dLFxuICAgICAgKTtcbiAgICAgIGxhYmVsID0gbGFiZWwuY29uY2F0KHNlcnZpY2VDbGFzc0xhYmVsKTtcbiAgICB9XG5cbiAgICAvLyBFeHBhbmRzIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHNlYXRzIGFuZCBiaWN5Y2xlIHNwYWNlcyBhcyBpbmZvXG4gICAgY29uc3QgZnJlZVBsYWNlc1R4dCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAnQ09BQ0hfQVZBSUxBQkxFX05VTUJFUl9PRl9QTEFDRVMnLFxuICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgIFt0aGlzLmZyZWVQbGFjZXNCeVR5cGUuc2VhdHMsIHRoaXMuZnJlZVBsYWNlc0J5VHlwZS5iaWN5Y2xlc10sXG4gICAgKTtcbiAgICBsYWJlbCA9IGxhYmVsLmNvbmNhdCgnLiAnKS5jb25jYXQoZnJlZVBsYWNlc1R4dCk7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlcygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBsZXQgYXJpYURlc2NyaXB0aW9uID0gbnVsbDtcbiAgICBpZiAodGhpcy5wcm9wZXJ0eUlkcy5sZW5ndGgpIHtcbiAgICAgIGFyaWFEZXNjcmlwdGlvbiA9XG4gICAgICAgIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0FWQUlMQUJMRV9TRVJWSUNFUycsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpICsgJzogJztcbiAgICAgIGFyaWFEZXNjcmlwdGlvbiArPSB0aGlzLnByb3BlcnR5SWRzXG4gICAgICAgIC5tYXAoKHByb3BlcnR5SWQpID0+IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24ocHJvcGVydHlJZCwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkpXG4gICAgICAgIC5qb2luKCk7XG4gICAgfVxuICAgIHJldHVybiBhcmlhRGVzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBjb2FjaCBhcnJheSBmb3IgdGhlIG1haW4gbmF2aWdhdGlvbi5cbiAgICogQHBhcmFtIGNvYWNoSW5kZXhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdE5hdkNvYWNoKGNvYWNoSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtDdXN0b21FdmVudDxTZWxlY3RDb2FjaEV2ZW50RGV0YWlscz59XG4gICAgICogRW1pdHMgd2hlbiBhIGNvYWNoIHdpdGhpbiB0aGUgbmF2aWdhdGlvbiB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgdGhlIGNsaWNrZWQgY29hY2ggbmF2IGluZGV4LlxuICAgICAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudDxTZWxlY3RDb2FjaEV2ZW50RGV0YWlscz4oJ3NlbGVjdGNvYWNoJywge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiBjb2FjaEluZGV4LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvYWNoU2VydmljZUNsYXNzTnVtYmVyKCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnRyYXZlbENsYXNzPy5pbmNsdWRlcygnRklSU1QnKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRyYXZlbENsYXNzPy5pbmNsdWRlcygnU0VDT05EJykpIHtcbiAgICAgIHJldHVybiAyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2gnOiBTYmJTZWF0UmVzZXJ2YXRpb25OYXZpZ2F0aW9uQ29hY2hFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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