@sbb-esta/lyne-elements 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/accordion/accordion.d.ts +0 -1
  2. package/action-group/action-group.d.ts +0 -1
  3. package/alert/alert/alert.d.ts +0 -1
  4. package/alert/alert-group/alert-group.d.ts +0 -1
  5. package/alert/alert.js +1 -1
  6. package/autocomplete/autocomplete-base-element.d.ts +0 -1
  7. package/autocomplete/autocomplete.d.ts +0 -1
  8. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  9. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  10. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  11. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  12. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  13. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  14. package/autocomplete.js +1 -1
  15. package/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  16. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  17. package/breadcrumb/breadcrumb-group.js +2 -2
  18. package/breadcrumb/breadcrumb.js +11 -11
  19. package/button/button/button.d.ts +0 -1
  20. package/button/button-link/button-link.d.ts +0 -1
  21. package/button/button-static/button-static.d.ts +0 -1
  22. package/button/common/button-common.d.ts +0 -1
  23. package/button/mini-button/mini-button-base-element.d.ts +0 -1
  24. package/button/mini-button/mini-button.d.ts +0 -1
  25. package/button/mini-button-group/index.d.ts +2 -0
  26. package/button/mini-button-group/index.d.ts.map +1 -0
  27. package/button/mini-button-group/mini-button-group.d.ts +28 -0
  28. package/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  29. package/button/mini-button-group.d.ts +2 -0
  30. package/button/mini-button-group.d.ts.map +1 -0
  31. package/button/mini-button-group.js +47 -0
  32. package/button/secondary-button/secondary-button.d.ts +0 -1
  33. package/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  34. package/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  35. package/button/tertiary-button/tertiary-button.d.ts +0 -1
  36. package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  37. package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  38. package/button/transparent-button/transparent-button.d.ts +0 -1
  39. package/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  40. package/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  41. package/button.d.ts +1 -0
  42. package/button.d.ts.map +1 -1
  43. package/button.js +1 -0
  44. package/calendar/calendar.d.ts +0 -1
  45. package/calendar.js +1 -1
  46. package/card/card/card.d.ts +0 -1
  47. package/card/card-badge/card-badge.d.ts +0 -1
  48. package/card/card-button/card-button.d.ts +0 -1
  49. package/card/card-link/card-link.d.ts +0 -1
  50. package/card/card.js +1 -1
  51. package/card/common/card-action-common.d.ts +0 -1
  52. package/checkbox/checkbox/checkbox.d.ts +0 -1
  53. package/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  54. package/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  55. package/checkbox/common/checkbox-common.d.ts +0 -1
  56. package/chip/chip.d.ts +0 -1
  57. package/chip.js +1 -1
  58. package/clock/clock.d.ts +0 -1
  59. package/clock/clock.d.ts.map +1 -1
  60. package/container/container/container.d.ts +1 -1
  61. package/container/container/container.d.ts.map +1 -1
  62. package/container/container.js +21 -16
  63. package/container/sticky-bar/sticky-bar.d.ts +0 -1
  64. package/container/sticky-bar.js +5 -5
  65. package/core/a11y/focus-visible-within-controller.d.ts +0 -1
  66. package/core/base-elements/action-base-element.d.ts +0 -1
  67. package/core/base-elements/button-base-element.d.ts +0 -1
  68. package/core/base-elements/link-base-element.d.ts +0 -1
  69. package/core/base-elements/open-close-base-element.d.ts +0 -1
  70. package/core/config/config.d.ts +0 -1
  71. package/core/controllers/connected-abort-controller.d.ts +0 -1
  72. package/core/controllers/language-controller.d.ts +0 -1
  73. package/core/controllers/slot-state-controller.d.ts +0 -1
  74. package/core/datetime/native-date-adapter.d.ts +0 -1
  75. package/core/decorators/host-attributes.d.ts +0 -1
  76. package/core/decorators/slot-state.d.ts +0 -1
  77. package/core/dom/ssr.d.ts +0 -1
  78. package/core/eventing/form-element-handlers.d.ts +0 -1
  79. package/core/i18n/i18n.d.ts +0 -1
  80. package/core/i18n.js +1 -1
  81. package/core/images.d.ts.map +1 -1
  82. package/core/mixins/disabled-mixin.d.ts +0 -1
  83. package/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  84. package/core/mixins/form-associated-mixin.d.ts +0 -1
  85. package/core/mixins/hydration-mixin.d.ts +0 -1
  86. package/core/mixins/named-slot-list-mixin.d.ts +7 -2
  87. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  88. package/core/mixins/negative-mixin.d.ts +0 -1
  89. package/core/mixins/panel-mixin.d.ts +0 -1
  90. package/core/mixins/required-mixin.d.ts +0 -1
  91. package/core/mixins/update-scheduler-mixin.d.ts +0 -1
  92. package/core/mixins.js +100 -88
  93. package/core/overlay/overlay.d.ts +0 -1
  94. package/core/styles/core.scss +21 -19
  95. package/core/styles/mixins/link.scss +9 -6
  96. package/core/styles/mixins/lists.scss +5 -5
  97. package/core/styles/mixins/pearl-chain-bullet.scss +14 -9
  98. package/core/styles/mixins/table.scss +19 -17
  99. package/core/testing/mocha-extensions.d.ts +0 -1
  100. package/core/testing/wait-for-image-ready.d.ts +0 -1
  101. package/core/testing/wait-for-render.d.ts +0 -1
  102. package/core.css +10 -8
  103. package/custom-elements.json +2893 -691
  104. package/datepicker/common/datepicker-button.d.ts +0 -1
  105. package/datepicker/datepicker/datepicker.d.ts +0 -1
  106. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  107. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  108. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -1
  109. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  110. package/development/accordion/accordion.d.ts +0 -1
  111. package/development/action-group/action-group.d.ts +0 -1
  112. package/development/alert/alert/alert.d.ts +0 -1
  113. package/development/alert/alert-group/alert-group.d.ts +0 -1
  114. package/development/alert/alert.js +1 -1
  115. package/development/autocomplete/autocomplete-base-element.d.ts +0 -1
  116. package/development/autocomplete/autocomplete.d.ts +0 -1
  117. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  118. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  119. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  120. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  121. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  122. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  123. package/development/autocomplete.js +7 -5
  124. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  125. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  126. package/development/breadcrumb/breadcrumb-group.js +4 -4
  127. package/development/breadcrumb/breadcrumb.js +8 -6
  128. package/development/button/button/button.d.ts +0 -1
  129. package/development/button/button-link/button-link.d.ts +0 -1
  130. package/development/button/button-static/button-static.d.ts +0 -1
  131. package/development/button/common/button-common.d.ts +0 -1
  132. package/development/button/mini-button/mini-button-base-element.d.ts +0 -1
  133. package/development/button/mini-button/mini-button.d.ts +0 -1
  134. package/development/button/mini-button-group/index.d.ts +2 -0
  135. package/development/button/mini-button-group/index.d.ts.map +1 -0
  136. package/development/button/mini-button-group/mini-button-group.d.ts +28 -0
  137. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  138. package/development/button/mini-button-group.d.ts +2 -0
  139. package/development/button/mini-button-group.d.ts.map +1 -0
  140. package/development/button/mini-button-group.js +142 -0
  141. package/development/button/secondary-button/secondary-button.d.ts +0 -1
  142. package/development/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  143. package/development/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  144. package/development/button/tertiary-button/tertiary-button.d.ts +0 -1
  145. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  146. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  147. package/development/button/transparent-button/transparent-button.d.ts +0 -1
  148. package/development/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  149. package/development/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  150. package/development/button.d.ts +1 -0
  151. package/development/button.d.ts.map +1 -1
  152. package/development/button.js +2 -1
  153. package/development/calendar/calendar.d.ts +0 -1
  154. package/development/calendar.js +3 -3
  155. package/development/card/card/card.d.ts +0 -1
  156. package/development/card/card-badge/card-badge.d.ts +0 -1
  157. package/development/card/card-button/card-button.d.ts +0 -1
  158. package/development/card/card-link/card-link.d.ts +0 -1
  159. package/development/card/card.js +3 -3
  160. package/development/card/common/card-action-common.d.ts +0 -1
  161. package/development/checkbox/checkbox/checkbox.d.ts +0 -1
  162. package/development/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  163. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  164. package/development/checkbox/common/checkbox-common.d.ts +0 -1
  165. package/development/chip/chip.d.ts +0 -1
  166. package/development/chip.js +4 -2
  167. package/development/clock/clock.d.ts +0 -1
  168. package/development/clock/clock.d.ts.map +1 -1
  169. package/development/clock.js +1 -1
  170. package/development/container/container/container.d.ts +1 -1
  171. package/development/container/container/container.d.ts.map +1 -1
  172. package/development/container/container.js +39 -3
  173. package/development/container/sticky-bar/sticky-bar.d.ts +0 -1
  174. package/development/container/sticky-bar.js +1 -4
  175. package/development/core/a11y/focus-visible-within-controller.d.ts +0 -1
  176. package/development/core/base-elements/action-base-element.d.ts +0 -1
  177. package/development/core/base-elements/button-base-element.d.ts +0 -1
  178. package/development/core/base-elements/link-base-element.d.ts +0 -1
  179. package/development/core/base-elements/open-close-base-element.d.ts +0 -1
  180. package/development/core/config/config.d.ts +0 -1
  181. package/development/core/controllers/connected-abort-controller.d.ts +0 -1
  182. package/development/core/controllers/language-controller.d.ts +0 -1
  183. package/development/core/controllers/slot-state-controller.d.ts +0 -1
  184. package/development/core/datetime/native-date-adapter.d.ts +0 -1
  185. package/development/core/decorators/host-attributes.d.ts +0 -1
  186. package/development/core/decorators/slot-state.d.ts +0 -1
  187. package/development/core/dom/ssr.d.ts +0 -1
  188. package/development/core/eventing/form-element-handlers.d.ts +0 -1
  189. package/development/core/i18n/i18n.d.ts +0 -1
  190. package/development/core/i18n.js +2 -2
  191. package/development/core/images.d.ts.map +1 -1
  192. package/development/core/mixins/disabled-mixin.d.ts +0 -1
  193. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  194. package/development/core/mixins/form-associated-mixin.d.ts +0 -1
  195. package/development/core/mixins/hydration-mixin.d.ts +0 -1
  196. package/development/core/mixins/named-slot-list-mixin.d.ts +7 -2
  197. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  198. package/development/core/mixins/negative-mixin.d.ts +0 -1
  199. package/development/core/mixins/panel-mixin.d.ts +0 -1
  200. package/development/core/mixins/required-mixin.d.ts +0 -1
  201. package/development/core/mixins/update-scheduler-mixin.d.ts +0 -1
  202. package/development/core/mixins.js +24 -12
  203. package/development/core/overlay/overlay.d.ts +0 -1
  204. package/development/core/testing/mocha-extensions.d.ts +0 -1
  205. package/development/core/testing/wait-for-image-ready.d.ts +0 -1
  206. package/development/core/testing/wait-for-render.d.ts +0 -1
  207. package/development/datepicker/common/datepicker-button.d.ts +0 -1
  208. package/development/datepicker/datepicker/datepicker.d.ts +0 -1
  209. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  210. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  211. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -1
  212. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  213. package/development/datepicker/datepicker-toggle.js +4 -2
  214. package/development/dialog/dialog/dialog.d.ts +0 -1
  215. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  216. package/development/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  217. package/development/dialog/dialog-content/dialog-content.d.ts +0 -1
  218. package/development/dialog/dialog-content.js +8 -6
  219. package/development/dialog/dialog-title/dialog-title.d.ts +0 -1
  220. package/development/dialog/dialog.js +7 -3
  221. package/development/divider/divider.d.ts +0 -1
  222. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  223. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  224. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  225. package/development/expansion-panel/expansion-panel-header.js +1 -1
  226. package/development/file-selector/file-selector.d.ts +0 -1
  227. package/development/flip-card/flip-card/flip-card.d.ts +22 -7
  228. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  229. package/development/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  230. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  231. package/development/flip-card/flip-card-summary.js +3 -1
  232. package/development/flip-card/flip-card.js +93 -24
  233. package/development/footer/footer.d.ts +0 -1
  234. package/development/footer.js +1 -1
  235. package/development/form-error/form-error.d.ts +0 -1
  236. package/development/form-error.js +4 -4
  237. package/development/form-field/form-field/form-field.d.ts +1 -2
  238. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  239. package/development/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  240. package/development/form-field/form-field.js +72 -29
  241. package/development/header/common/header-action-common.d.ts +0 -1
  242. package/development/header/common.js +2 -2
  243. package/development/header/header/header.d.ts +0 -1
  244. package/development/header/header-button/header-button.d.ts +0 -1
  245. package/development/header/header-link/header-link.d.ts +0 -1
  246. package/development/header/header.js +2 -2
  247. package/development/icon/icon-base.d.ts +0 -1
  248. package/development/icon/icon-name-mixin.d.ts +0 -1
  249. package/development/icon/icon.d.ts +0 -1
  250. package/development/image/image.d.ts +0 -1
  251. package/development/image.js +2 -2
  252. package/development/journey-header/journey-header.d.ts +0 -1
  253. package/development/lead-container/lead-container.d.ts +0 -1
  254. package/development/lead-container.js +1 -1
  255. package/development/link/block-link/block-link.d.ts +0 -1
  256. package/development/link/block-link-button/block-link-button.d.ts +0 -1
  257. package/development/link/block-link-static/block-link-static.d.ts +0 -1
  258. package/development/link/common/block-link-common.d.ts +0 -1
  259. package/development/link/common/inline-link-common.d.ts +0 -1
  260. package/development/link/common/link-common.d.ts +0 -1
  261. package/development/link/common.js +9 -7
  262. package/development/link/link/link.d.ts +0 -1
  263. package/development/link/link-button/link-button.d.ts +0 -1
  264. package/development/link/link-static/link-static.d.ts +0 -1
  265. package/development/link-list/common/link-list-base.d.ts +27 -0
  266. package/development/link-list/common/link-list-base.d.ts.map +1 -0
  267. package/development/link-list/common.d.ts +2 -0
  268. package/development/link-list/common.d.ts.map +1 -0
  269. package/development/link-list/common.js +113 -0
  270. package/development/link-list/link-list/link-list.d.ts +22 -0
  271. package/development/link-list/link-list/link-list.d.ts.map +1 -0
  272. package/development/link-list/link-list-anchor/index.d.ts +2 -0
  273. package/development/link-list/link-list-anchor/index.d.ts.map +1 -0
  274. package/development/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  275. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  276. package/development/link-list/link-list-anchor.d.ts +2 -0
  277. package/development/link-list/link-list-anchor.d.ts.map +1 -0
  278. package/development/link-list/link-list-anchor.js +91 -0
  279. package/development/link-list/link-list.d.ts +1 -38
  280. package/development/link-list/link-list.d.ts.map +1 -1
  281. package/development/link-list/link-list.js +194 -0
  282. package/development/link-list.d.ts +2 -0
  283. package/development/link-list.d.ts.map +1 -1
  284. package/development/link-list.js +4 -260
  285. package/development/loading-indicator/loading-indicator.d.ts +0 -1
  286. package/development/logo/logo.d.ts +0 -1
  287. package/development/logo.js +2 -2
  288. package/development/map-container/map-container.d.ts +0 -1
  289. package/development/map-container.js +13 -11
  290. package/development/menu/common/menu-action-common.d.ts +0 -1
  291. package/development/menu/menu/menu.d.ts +0 -1
  292. package/development/menu/menu-button/menu-button.d.ts +0 -1
  293. package/development/menu/menu-link/menu-link.d.ts +0 -1
  294. package/development/menu/menu.js +8 -6
  295. package/development/message/message.d.ts +0 -1
  296. package/development/navigation/common/navigation-action-common.d.ts +0 -1
  297. package/development/navigation/navigation/navigation.d.ts +0 -1
  298. package/development/navigation/navigation-button/navigation-button.d.ts +0 -1
  299. package/development/navigation/navigation-link/navigation-link.d.ts +0 -1
  300. package/development/navigation/navigation-list/navigation-list.d.ts +0 -1
  301. package/development/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  302. package/development/navigation/navigation-section/navigation-section.d.ts +0 -1
  303. package/development/navigation/navigation-section.js +7 -5
  304. package/development/navigation/navigation.js +13 -11
  305. package/development/notification/notification.d.ts +0 -1
  306. package/development/option/optgroup/optgroup-base-element.d.ts +0 -1
  307. package/development/option/optgroup/optgroup.d.ts +0 -1
  308. package/development/option/option/option-base-element.d.ts +0 -1
  309. package/development/option/option/option.d.ts +0 -1
  310. package/development/overlay/overlay-base-element.d.ts +0 -1
  311. package/development/overlay/overlay.d.ts +0 -1
  312. package/development/overlay/overlay.d.ts.map +1 -1
  313. package/development/overlay.js +9 -5
  314. package/development/popover/popover/popover.d.ts +0 -1
  315. package/development/popover/popover/popover.d.ts.map +1 -1
  316. package/development/popover/popover-trigger/popover-trigger.d.ts +0 -1
  317. package/development/popover/popover-trigger.js +3 -3
  318. package/development/popover/popover.js +5 -3
  319. package/development/radio-button/common/radio-button-common.d.ts +0 -1
  320. package/development/radio-button/common.js +6 -6
  321. package/development/radio-button/radio-button/radio-button.d.ts +0 -1
  322. package/development/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  323. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  324. package/development/screen-reader-only/screen-reader-only.d.ts +0 -1
  325. package/development/select/select.d.ts +0 -1
  326. package/development/select.js +7 -5
  327. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  328. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  329. package/development/selection-expansion-panel.js +6 -2
  330. package/development/signet/signet.d.ts +0 -1
  331. package/development/signet.js +1 -1
  332. package/development/skiplink-list/skiplink-list.d.ts +0 -1
  333. package/development/slider/slider.d.ts +0 -1
  334. package/development/slider.js +4 -4
  335. package/development/status/status.d.ts +0 -1
  336. package/development/stepper/step/step.d.ts +0 -1
  337. package/development/stepper/step-label/step-label.d.ts +0 -1
  338. package/development/stepper/stepper/stepper.d.ts +0 -1
  339. package/development/table/table-wrapper/table-wrapper.d.ts +0 -1
  340. package/development/tabs/tab/tab.d.ts +0 -1
  341. package/development/tabs/tab-group/tab-group.d.ts +0 -1
  342. package/development/tabs/tab-label/tab-label.d.ts +0 -1
  343. package/development/tabs/tab-label.js +10 -10
  344. package/development/tag/tag/tag.d.ts +0 -1
  345. package/development/tag/tag-group/tag-group.d.ts +0 -1
  346. package/development/tag/tag.js +3 -3
  347. package/development/teaser/teaser.d.ts +0 -1
  348. package/development/teaser-hero/teaser-hero.d.ts +27 -0
  349. package/development/teaser-hero/teaser-hero.d.ts.map +1 -0
  350. package/development/teaser-hero.d.ts +2 -0
  351. package/development/teaser-hero.d.ts.map +1 -0
  352. package/development/teaser-hero.js +207 -0
  353. package/development/teaser-product/common/teaser-product-common.d.ts +7 -0
  354. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  355. package/development/teaser-product/common.d.ts +2 -0
  356. package/development/teaser-product/common.d.ts.map +1 -0
  357. package/development/teaser-product/common.js +219 -0
  358. package/development/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  359. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  360. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  361. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  362. package/development/teaser-product/teaser-product-static.d.ts +2 -0
  363. package/development/teaser-product/teaser-product-static.d.ts.map +1 -0
  364. package/development/teaser-product/teaser-product-static.js +25 -0
  365. package/development/teaser-product/teaser-product.d.ts +2 -0
  366. package/development/teaser-product/teaser-product.d.ts.map +1 -0
  367. package/development/teaser-product/teaser-product.js +80 -0
  368. package/development/teaser-product.d.ts +4 -0
  369. package/development/teaser-product.d.ts.map +1 -0
  370. package/development/teaser-product.js +4 -0
  371. package/development/time-input/time-input.d.ts +0 -1
  372. package/development/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  373. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  374. package/development/timetable-occupancy.js +1 -1
  375. package/development/title/title-base.d.ts +0 -1
  376. package/development/title/title.d.ts +0 -1
  377. package/development/toast/toast.d.ts +0 -1
  378. package/development/toggle/toggle/toggle.d.ts +0 -1
  379. package/development/toggle/toggle-option/toggle-option.d.ts +0 -1
  380. package/development/toggle/toggle.js +1 -1
  381. package/development/toggle-check/toggle-check.d.ts +0 -1
  382. package/development/train/train/train.d.ts +0 -1
  383. package/development/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  384. package/development/train/train-blocked-passage.js +1 -1
  385. package/development/train/train-formation/train-formation.d.ts +0 -1
  386. package/development/train/train-formation.js +9 -7
  387. package/development/train/train-wagon/train-wagon.d.ts +0 -1
  388. package/development/train/train-wagon.js +1 -1
  389. package/development/train/train.js +1 -1
  390. package/development/visual-checkbox/visual-checkbox.d.ts +0 -1
  391. package/development/visual-checkbox.js +1 -1
  392. package/dialog/dialog/dialog.d.ts +0 -1
  393. package/dialog/dialog/dialog.d.ts.map +1 -1
  394. package/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  395. package/dialog/dialog-content/dialog-content.d.ts +0 -1
  396. package/dialog/dialog-content.js +1 -1
  397. package/dialog/dialog-title/dialog-title.d.ts +0 -1
  398. package/dialog/dialog.js +3 -3
  399. package/divider/divider.d.ts +0 -1
  400. package/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  401. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  402. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  403. package/expansion-panel/expansion-panel-header.js +1 -1
  404. package/file-selector/file-selector.d.ts +0 -1
  405. package/flip-card/flip-card/flip-card.d.ts +22 -7
  406. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  407. package/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  408. package/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  409. package/flip-card/flip-card-summary.js +8 -8
  410. package/flip-card/flip-card.js +63 -32
  411. package/footer/footer.d.ts +0 -1
  412. package/footer.js +1 -1
  413. package/form-error/form-error.d.ts +0 -1
  414. package/form-error.js +1 -1
  415. package/form-field/form-field/form-field.d.ts +1 -2
  416. package/form-field/form-field/form-field.d.ts.map +1 -1
  417. package/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  418. package/form-field/form-field.js +22 -22
  419. package/header/common/header-action-common.d.ts +0 -1
  420. package/header/common.js +1 -1
  421. package/header/header/header.d.ts +0 -1
  422. package/header/header-button/header-button.d.ts +0 -1
  423. package/header/header-link/header-link.d.ts +0 -1
  424. package/header/header.js +1 -1
  425. package/icon/icon-base.d.ts +0 -1
  426. package/icon/icon-name-mixin.d.ts +0 -1
  427. package/icon/icon.d.ts +0 -1
  428. package/image/image.d.ts +0 -1
  429. package/image.js +25 -25
  430. package/index.d.ts +11 -1
  431. package/index.js +11 -1
  432. package/journey-header/journey-header.d.ts +0 -1
  433. package/lead-container/lead-container.d.ts +0 -1
  434. package/lead-container.js +1 -1
  435. package/link/block-link/block-link.d.ts +0 -1
  436. package/link/block-link-button/block-link-button.d.ts +0 -1
  437. package/link/block-link-static/block-link-static.d.ts +0 -1
  438. package/link/common/block-link-common.d.ts +0 -1
  439. package/link/common/inline-link-common.d.ts +0 -1
  440. package/link/common/link-common.d.ts +0 -1
  441. package/link/common.js +6 -6
  442. package/link/link/link.d.ts +0 -1
  443. package/link/link-button/link-button.d.ts +0 -1
  444. package/link/link-static/link-static.d.ts +0 -1
  445. package/link-list/common/link-list-base.d.ts +27 -0
  446. package/link-list/common/link-list-base.d.ts.map +1 -0
  447. package/link-list/common.d.ts +2 -0
  448. package/link-list/common.d.ts.map +1 -0
  449. package/link-list/common.js +59 -0
  450. package/link-list/link-list/link-list.d.ts +22 -0
  451. package/link-list/link-list/link-list.d.ts.map +1 -0
  452. package/link-list/link-list-anchor/index.d.ts +2 -0
  453. package/link-list/link-list-anchor/index.d.ts.map +1 -0
  454. package/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  455. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  456. package/link-list/link-list-anchor.d.ts +2 -0
  457. package/link-list/link-list-anchor.d.ts.map +1 -0
  458. package/link-list/link-list-anchor.js +18 -0
  459. package/link-list/link-list.d.ts +1 -38
  460. package/link-list/link-list.d.ts.map +1 -1
  461. package/link-list/link-list.js +27 -0
  462. package/link-list.d.ts +2 -0
  463. package/link-list.d.ts.map +1 -1
  464. package/link-list.js +3 -66
  465. package/loading-indicator/loading-indicator.d.ts +0 -1
  466. package/logo/logo.d.ts +0 -1
  467. package/logo.js +1 -1
  468. package/map-container/map-container.d.ts +0 -1
  469. package/map-container.js +1 -1
  470. package/menu/common/menu-action-common.d.ts +0 -1
  471. package/menu/menu/menu.d.ts +0 -1
  472. package/menu/menu-button/menu-button.d.ts +0 -1
  473. package/menu/menu-link/menu-link.d.ts +0 -1
  474. package/menu/menu.js +1 -1
  475. package/message/message.d.ts +0 -1
  476. package/navigation/common/navigation-action-common.d.ts +0 -1
  477. package/navigation/navigation/navigation.d.ts +0 -1
  478. package/navigation/navigation-button/navigation-button.d.ts +0 -1
  479. package/navigation/navigation-link/navigation-link.d.ts +0 -1
  480. package/navigation/navigation-list/navigation-list.d.ts +0 -1
  481. package/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  482. package/navigation/navigation-section/navigation-section.d.ts +0 -1
  483. package/navigation/navigation-section.js +1 -1
  484. package/navigation/navigation.js +1 -1
  485. package/notification/notification.d.ts +0 -1
  486. package/option/optgroup/optgroup-base-element.d.ts +0 -1
  487. package/option/optgroup/optgroup.d.ts +0 -1
  488. package/option/option/option-base-element.d.ts +0 -1
  489. package/option/option/option.d.ts +0 -1
  490. package/overlay/overlay-base-element.d.ts +0 -1
  491. package/overlay/overlay.d.ts +0 -1
  492. package/overlay/overlay.d.ts.map +1 -1
  493. package/overlay.js +2 -2
  494. package/package.json +46 -1
  495. package/popover/popover/popover.d.ts +0 -1
  496. package/popover/popover/popover.d.ts.map +1 -1
  497. package/popover/popover-trigger/popover-trigger.d.ts +0 -1
  498. package/popover/popover-trigger.js +1 -1
  499. package/popover/popover.js +1 -1
  500. package/radio-button/common/radio-button-common.d.ts +0 -1
  501. package/radio-button/common.js +1 -1
  502. package/radio-button/radio-button/radio-button.d.ts +0 -1
  503. package/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  504. package/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  505. package/screen-reader-only/screen-reader-only.d.ts +0 -1
  506. package/select/select.d.ts +0 -1
  507. package/select.js +1 -1
  508. package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  509. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  510. package/signet/signet.d.ts +0 -1
  511. package/signet.js +1 -1
  512. package/skiplink-list/skiplink-list.d.ts +0 -1
  513. package/slider/slider.d.ts +0 -1
  514. package/slider.js +1 -1
  515. package/standard-theme.css +19 -13
  516. package/status/status.d.ts +0 -1
  517. package/stepper/step/step.d.ts +0 -1
  518. package/stepper/step-label/step-label.d.ts +0 -1
  519. package/stepper/stepper/stepper.d.ts +0 -1
  520. package/table/table-wrapper/table-wrapper.d.ts +0 -1
  521. package/tabs/tab/tab.d.ts +0 -1
  522. package/tabs/tab-group/tab-group.d.ts +0 -1
  523. package/tabs/tab-label/tab-label.d.ts +0 -1
  524. package/tabs/tab-label.js +1 -1
  525. package/tag/tag/tag.d.ts +0 -1
  526. package/tag/tag-group/tag-group.d.ts +0 -1
  527. package/tag/tag.js +1 -1
  528. package/teaser/teaser.d.ts +0 -1
  529. package/teaser-hero/teaser-hero.d.ts +27 -0
  530. package/teaser-hero/teaser-hero.d.ts.map +1 -0
  531. package/teaser-hero.d.ts +2 -0
  532. package/teaser-hero.d.ts.map +1 -0
  533. package/teaser-hero.js +58 -0
  534. package/teaser-product/common/teaser-product-common.d.ts +7 -0
  535. package/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  536. package/teaser-product/common.d.ts +2 -0
  537. package/teaser-product/common.d.ts.map +1 -0
  538. package/teaser-product/common.js +38 -0
  539. package/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  540. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  541. package/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  542. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  543. package/teaser-product/teaser-product-static.d.ts +2 -0
  544. package/teaser-product/teaser-product-static.d.ts.map +1 -0
  545. package/teaser-product/teaser-product-static.js +19 -0
  546. package/teaser-product/teaser-product.d.ts +2 -0
  547. package/teaser-product/teaser-product.d.ts.map +1 -0
  548. package/teaser-product/teaser-product.js +21 -0
  549. package/teaser-product.d.ts +4 -0
  550. package/teaser-product.d.ts.map +1 -0
  551. package/teaser-product.js +3 -0
  552. package/time-input/time-input.d.ts +0 -1
  553. package/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  554. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  555. package/timetable-occupancy.js +1 -1
  556. package/title/title-base.d.ts +0 -1
  557. package/title/title.d.ts +0 -1
  558. package/toast/toast.d.ts +0 -1
  559. package/toggle/toggle/toggle.d.ts +0 -1
  560. package/toggle/toggle-option/toggle-option.d.ts +0 -1
  561. package/toggle/toggle.js +1 -1
  562. package/toggle-check/toggle-check.d.ts +0 -1
  563. package/train/train/train.d.ts +0 -1
  564. package/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  565. package/train/train-blocked-passage.js +1 -1
  566. package/train/train-formation/train-formation.d.ts +0 -1
  567. package/train/train-formation.js +1 -1
  568. package/train/train-wagon/train-wagon.d.ts +0 -1
  569. package/train/train-wagon.js +1 -1
  570. package/train/train.js +1 -1
  571. package/visual-checkbox/visual-checkbox.d.ts +0 -1
  572. package/visual-checkbox.js +1 -1
@@ -184,7 +184,7 @@ const imageHelperGetBreakpoints = (jsonString) => {
184
184
  let jsonObject;
185
185
  try {
186
186
  jsonObject = JSON.parse(jsonString);
187
- } catch (error) {
187
+ } catch {
188
188
  logWarning == null ? void 0 : logWarning();
189
189
  return [];
190
190
  }
@@ -551,4 +551,4 @@ SbbImageElement = __decorateClass([
551
551
  export {
552
552
  SbbImageElement
553
553
  };
554
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ac2JiLWVzdGEvbHluZS1kZXNpZ24tdG9rZW5zL2Rpc3QvanMvc2JiLXRva2Vucy5tanMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaW1hZ2UvaW1hZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEbyBub3QgZWRpdCBkaXJlY3RseVxuICogR2VuZXJhdGVkIG9uIE1vbiwgMTUgSnVsIDIwMjQgMDk6NDA6MTYgR01UXG4gKi9cblxuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMXggPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjJ4ID0gODA7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb24zeCA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjR4ID0gMTYwO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uNXggPSAyMDA7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb242eCA9IDI0MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjEyeCA9IDQ4MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25FYXNpbmcgPSBcImN1YmljLWJlemllciguNDcsIC4xLCAxLCAuNjMpXCI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgxeCA9IDE7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgyeCA9IDI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgzeCA9IDM7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzMXggPSAyO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czJ4ID0gNDtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM0eCA9IDg7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzNnggPSAxMjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM4eCA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czE2eCA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRaZXJvTWluID0gMDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50WmVyb01heCA9IDM1OTtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TWljcm9NaW4gPSAzNjA7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludE1pY3JvTWF4ID0gNTk5O1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1pbiA9IDYwMDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50U21hbGxNYXggPSA4Mzk7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludE1lZGl1bU1pbiA9IDg0MDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TWVkaXVtTWF4ID0gMTAyMztcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TGFyZ2VNaW4gPSAxMDI0O1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRMYXJnZU1heCA9IDEyNzk7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFdpZGVNaW4gPSAxMjgwO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRXaWRlTWF4ID0gMTQzOTtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50VWx0cmFNaW4gPSAxNDQwO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRVbHRyYU1heCA9IDI1Nzk7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFjayA9IFwiIzAwMDAwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTAgPSBcInJnYmEoMCwgMCwgMCwgMClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGExMCA9IFwicmdiYSgwLCAwLCAwLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhMTUgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGEyMCA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhMzAgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTQwID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGE1MCA9IFwicmdiYSgwLCAwLCAwLCAwLjUpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhNjAgPSBcInJnYmEoMCwgMCwgMCwgMC42KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTcwID0gXCJyZ2JhKDAsIDAsIDAsIDAuNylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pZG5pZ2h0ID0gXCIjMTUxNTE1XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDaGFyY29hbCA9IFwiIzIxMjEyMVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9ySXJvbiA9IFwiIzQ0NDQ0NFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQW50aHJhY2l0ZSA9IFwiIzVhNWE1YVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3Jhbml0ZSA9IFwiIzY4Njg2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWV0YWwgPSBcIiM3Njc2NzZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1ldGFsQWxwaGEwID0gXCJyZ2JhKDExOCwgMTE4LCAxMTgsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JNZXRhbEFscGhhMjAgPSBcInJnYmEoMTE4LCAxMTgsIDExOCwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU21va2UgPSBcIiM4ZDhkOGRcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlQWxwaGEwID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTbW9rZUFscGhhNSA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU21va2VBbHBoYTEwID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlQWxwaGEyMCA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTdG9ybSA9IFwiI2E4YThhOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3JhcGhpdGUgPSBcIiNiN2I3YjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckNlbWVudCA9IFwiI2JkYmRiZFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQ2VtZW50QWxwaGEwID0gXCJyZ2JhKDE4OSwgMTg5LCAxODksIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDZW1lbnRBbHBoYTIwID0gXCJyZ2JhKDE4OSwgMTg5LCAxODksIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclBsYXRpbnVtID0gXCIjY2RjZGNkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQbGF0aW51bUFscGhhMCA9IFwicmdiYSgyMDUsIDIwNSwgMjA1LCAwKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGxhdGludW1BbHBoYTIwID0gXCJyZ2JhKDIwNSwgMjA1LCAyMDUsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckFsdW1pbml1bSA9IFwiI2QyZDJkMlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2lsdmVyID0gXCIjZGNkY2RjXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDbG91ZCA9IFwiI2U1ZTVlNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQ2xvdWRBbHBoYTgwID0gXCJyZ2JhKDIyOSwgMjI5LCAyMjksIDAuOClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pbGsgPSBcIiNmNmY2ZjZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZCA9IFwiI2ViMDAwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkQWxwaGEwID0gXCJyZ2JhKDIzNSwgMCwgMCwgMClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZEFscGhhMjAgPSBcInJnYmEoMjM1LCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWRBbHBoYTkwID0gXCJyZ2JhKDIzNSwgMCwgMCwgMC45KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkTW9kZURhcmsgPSBcIiNmZjM4MzhcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZDEyNSA9IFwiI2M2MDAxOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkMTI1QWxwaGEwID0gXCJyZ2JhKDE5OCwgMCwgMjQsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQxMjVBbHBoYTIwID0gXCJyZ2JhKDE5OCwgMCwgMjQsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZDE1MCA9IFwiI2EyMDAxM1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGUgPSBcIiNmZmZmZmZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlQWxwaGEwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JXaGl0ZUFscGhhMjAgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGVBbHBoYTMwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlQWxwaGE1MCA9IFwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JXaGl0ZUFscGhhNjAgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGVBbHBoYTcwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNreSA9IFwiIzAwNzljN1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHQgPSBcIiMxNDNhODVcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclZpb2xldCA9IFwiIzZmMjI4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGluayA9IFwiI2NmNDA4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQXV0dW1uID0gXCIjZTg0ZTEwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JPcmFuZ2UgPSBcIiNmMjdlMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclBlYWNoID0gXCIjZmNiYjAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JMZW1vbiA9IFwiI2ZmZGUxNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd24gPSBcIiNiNzYwMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckdyZWVuID0gXCIjMDA4YTM2XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JUdXJxdW9pc2UgPSBcIiMwMGE1OWJcIjtcbmV4cG9ydCBjb25zdCBTYmJGb2N1c091dGxpbmVPZmZzZXQgPSAzO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1plcm8gPSA0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc01pY3JvID0gNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNTbWFsbCA9IDQ7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zTWVkaXVtID0gODtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNMYXJnZSA9IDg7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zV2lkZSA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1VsdHJhID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlWmVybyA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZU1pY3JvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlU21hbGwgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVNZWRpdW0gPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVMYXJnZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVdpZGUgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVVbHRyYSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlWmVybyA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlTWljcm8gPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZVNtYWxsID0gNDg7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVNZWRpdW0gPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZUxhcmdlID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVXaWRlID0gNzI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVVbHRyYSA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlUGFnZU1heFdpZHRoID0gMTIwMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cxT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MU9mZnNldFkgPSAyO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzFCbHVyID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MVNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93Mk9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzJPZmZzZXRZID0gMTtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyQmx1ciA9IDQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MlNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU29mdDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NvZnQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NvZnROZWdhdGl2ZTFDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjE1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NvZnROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzSGFyZDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzSGFyZDJDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzSGFyZE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNIYXJkTmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC40KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzFPZmZzZXRYID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxT2Zmc2V0WSA9IDQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MUJsdXIgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93Mk9mZnNldFkgPSAxO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJCbHVyID0gODtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTb2Z0MUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMDUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U29mdDJDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U29mdE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMTUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U29mdE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVIYXJkMUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVIYXJkMkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVIYXJkTmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNUhhcmROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjQpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MU9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzFPZmZzZXRZID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MUJsdXIgPSAxMjg7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MVNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93Mk9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJPZmZzZXRZID0gNDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cyQmx1ciA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJTcHJlYWQgPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNvZnQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4wNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTb2Z0MkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTb2Z0TmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTb2Z0TmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOUhhcmQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOUhhcmQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOUhhcmROZWdhdGl2ZTFDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjMpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5SGFyZE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MU9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxT2Zmc2V0WSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxQmx1ciA9IDE5MjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MVNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNoYWRvdzJPZmZzZXRYID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93Mk9mZnNldFkgPSA0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyQmx1ciA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU29mdDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTb2Z0MkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU29mdE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMTUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNvZnROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMUhhcmQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFIYXJkMkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExSGFyZE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExSGFyZE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNaZXJvID0gMjg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzTWljcm8gPSAyODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNTbWFsbCA9IDI4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c01lZGl1bSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c0xhcmdlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzV2lkZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c1VsdHJhID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNaZXJvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNNaWNybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzU21hbGwgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c01lZGl1bSA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzTGFyZ2UgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c1dpZGUgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c1VsdHJhID0gMzY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc1plcm8gPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzTWljcm8gPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzU21hbGwgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzTWVkaXVtID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc0xhcmdlID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc1dpZGUgPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzVWx0cmEgPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNaZXJvID0gNDQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTTWljcm8gPSA0NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNTbWFsbCA9IDQ0O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U01lZGl1bSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U0xhcmdlID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTV2lkZSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U1VsdHJhID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNWmVybyA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TU1pY3JvID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNU21hbGwgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1NZWRpdW0gPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1MYXJnZSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TVdpZGUgPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1VbHRyYSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFplcm8gPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExNaWNybyA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFNtYWxsID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMTWVkaXVtID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMTGFyZ2UgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExXaWRlID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMVWx0cmEgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpU21hbGwgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpTWVkaXVtID0gMzY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUljb25VaUxhcmdlID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMXggPSA0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDJ4ID0gODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQzeCA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDR4ID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkNXggPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ2eCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDd4ID0gMjg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkOHggPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ5eCA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDEweCA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDEyeCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE0eCA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE2eCA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE4eCA9IDcyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDIweCA9IDgwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDI0eCA9IDk2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDMweCA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNaZXJvID0gMTI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzTWljcm8gPSAxMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNTbWFsbCA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c01lZGl1bSA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c0xhcmdlID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzV2lkZSA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c1VsdHJhID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNaZXJvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNNaWNybyA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzU21hbGwgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c01lZGl1bSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzTGFyZ2UgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c1dpZGUgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c1VsdHJhID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc1plcm8gPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzTWljcm8gPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzU21hbGwgPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzTWVkaXVtID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc0xhcmdlID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc1dpZGUgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzVWx0cmEgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNaZXJvID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTTWljcm8gPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNTbWFsbCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU01lZGl1bSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU0xhcmdlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTV2lkZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1VsdHJhID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNWmVybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTU1pY3JvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNU21hbGwgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1NZWRpdW0gPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1MYXJnZSA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVdpZGUgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1VbHRyYSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFplcm8gPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxNaWNybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFNtYWxsID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMTWVkaXVtID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMTGFyZ2UgPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxXaWRlID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMVWx0cmEgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsWmVybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxNaWNybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxTbWFsbCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxNZWRpdW0gPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsTGFyZ2UgPSA4MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsV2lkZSA9IDgwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxVbHRyYSA9IDk2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsWmVybyA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsTWljcm8gPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bFNtYWxsID0gNzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxNZWRpdW0gPSA4MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bExhcmdlID0gOTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxXaWRlID0gOTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxVbHRyYSA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJUeXBvRm9udEZhbWlseSA9IFwiXFxcIlNCQlxcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvTGV0dGVyU3BhY2luZ1RpdGxlcyA9IFwiMFwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MZXR0ZXJTcGFjaW5nQm9keVRleHQgPSBcIjAuMDNlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MaW5lSGVpZ2h0VGl0bGVzID0gXCIxLjNcIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvTGluZUhlaWdodEJvZHlUZXh0ID0gXCIxLjc1XCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMDc1eCA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTA4MTI1eCA9IDEzO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTA4NzV4ID0gMTQ7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlRGVmYXVsdCA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTExMjV4ID0gMTg7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTI1eCA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTE1eCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTJ4ID0gMzI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMjV4ID0gNDA7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlM3ggPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUzNXggPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGU0eCA9IDY0O1xuIiwiaW1wb3J0IHtcbiAgU2JiQnJlYWtwb2ludFplcm9NaW4sXG4gIFNiYkJyZWFrcG9pbnRaZXJvTWF4LFxuICBTYmJCcmVha3BvaW50TWljcm9NaW4sXG4gIFNiYkJyZWFrcG9pbnRNaWNyb01heCxcbiAgU2JiQnJlYWtwb2ludFNtYWxsTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4sXG4gIFNiYkJyZWFrcG9pbnRNZWRpdW1NYXgsXG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1pbixcbiAgU2JiQnJlYWtwb2ludExhcmdlTWF4LFxuICBTYmJCcmVha3BvaW50V2lkZU1pbixcbiAgU2JiQnJlYWtwb2ludFdpZGVNYXgsXG4gIFNiYkJyZWFrcG9pbnRVbHRyYU1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWF4LFxuICBTYmJUeXBvU2NhbGVEZWZhdWx0LFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1kZXNpZ24tdG9rZW5zJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBldmVudE9wdGlvbnMsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgaG9zdENvbnRleHQgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ltYWdlLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWcge1xuICBicmVha3BvaW50czogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50IHtcbiAgaW1hZ2U6IHtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeSB7XG4gIGNvbmRpdGlvbkZlYXR1cmU6IHN0cmluZztcbiAgY29uZGl0aW9uRmVhdHVyZVZhbHVlOiB7XG4gICAgbHluZURlc2lnblRva2VuOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBmYWxzZTtcbn1cblxuLyoqXG4gKiB3ZSBjaGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1hbnVhbGx5LCBzbyBpdCdzIHNhZmUgdG8gdXNlIGBhbnlgIGFzIHJldHVybiB0eXBlXG4gKi9cbmNvbnN0IGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMgPSAoXG4gIGpzb25TdHJpbmc6IHN0cmluZyxcbik6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdID0+IHtcbiAgaWYgKCFqc29uU3RyaW5nIHx8IGpzb25TdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBgYnJlYWtwb2ludHNgIGtleSBpbiBvYmplY3RcbiAgY29uc3QgbG9nV2FybmluZyA9IGltcG9ydC5tZXRhLmVudi5ERVZcbiAgICA/ICgpID0+XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnc2JiLWltYWdlIGVycm9yOiBhdHRyaWJ1dGUgYnJlYWtwb2ludHMgaGFzIHdyb25nIGRhdGEgZm9ybWF0LiBSZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIGhvdyB5b3Ugc2hvdWxkIGZvcm1hdCB0aGUgZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUuJyxcbiAgICAgICAgKVxuICAgIDogbnVsbDtcbiAgbGV0IGpzb25PYmplY3Q6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnO1xuXG4gIHRyeSB7XG4gICAganNvbk9iamVjdCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaWYgKCFqc29uT2JqZWN0LmJyZWFrcG9pbnRzIHx8IGpzb25PYmplY3QuYnJlYWtwb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIGdldCBhbiBhcnJheSBvZiBicmVha3BvaW50c1xuICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbk9iamVjdC5icmVha3BvaW50cykpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogMS4gbWFrZSBzdXJlIHRoYXQgZWFjaCBlbnRyeSB3aXRoaW4gdGhlIGJyZWFrcG9pbnRzIG9iamVjdCBjb250YWlucyBvbmx5IGFsbG93ZWQga2V5c1xuICAgKiAyLiBtYWtlIHN1cmUgdGhhdCBhbGwgbmVjZXNzYXJ5IGtleXMgYXJlIHByZXNlbnRcbiAgICovXG4gIGxldCB3cm9uZ0tleURldGVjdGVkID0gZmFsc2U7XG4gIGxldCBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBhbGxvd2VkS2V5cyA9IFsnaW1hZ2UnLCAnbWVkaWFRdWVyaWVzJ107XG5cbiAganNvbk9iamVjdC5icmVha3BvaW50cy5mb3JFYWNoKChicmVha3BvaW50KSA9PiB7XG4gICAgY29uc3QgYnJlYWtwb2ludEtleXMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50KTtcblxuICAgIGJyZWFrcG9pbnRLZXlzLmZvckVhY2goKGJyZWFrcG9pbnRLZXkpID0+IHtcbiAgICAgIGlmICghYWxsb3dlZEtleXMuaW5jbHVkZXMoYnJlYWtwb2ludEtleSkpIHtcbiAgICAgICAgd3JvbmdLZXlEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhbGxvd2VkS2V5cy5mb3JFYWNoKChhbGxvd2VkS2V5KSA9PiB7XG4gICAgICBpZiAoIWJyZWFrcG9pbnRLZXlzLmluY2x1ZGVzKGFsbG93ZWRLZXkpKSB7XG4gICAgICAgIG1pc3NpbmdLZXlEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICh3cm9uZ0tleURldGVjdGVkIHx8IG1pc3NpbmdLZXlEZXRlY3RlZCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBqc29uT2JqZWN0LmJyZWFrcG9pbnRzO1xufTtcblxuY29uc3QgZXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIG9uY2U6IHRydWUsXG4gIHBhc3NpdmU6IHRydWUsXG59O1xuXG5jb25zdCBweFRvUmVtID0gKHB4OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICByZXR1cm4gcHggLyBTYmJUeXBvU2NhbGVEZWZhdWx0O1xufTtcblxuY29uc3QgYnJlYWtwb2ludE1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgJ3NiYi1icmVha3BvaW50LXplcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50WmVyb01pbiksXG4gICdzYmItYnJlYWtwb2ludC16ZXJvLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFplcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWVkaXVtLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1pbiksXG4gICdzYmItYnJlYWtwb2ludC1tZWRpdW0tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXdpZGUtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50V2lkZU1pbiksXG4gICdzYmItYnJlYWtwb2ludC13aWRlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFdpZGVNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNYXgpLFxufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbWFnZS5cbiAqXG4gKiBAZXZlbnQge0V2ZW50fSBsb2FkIC0gRW1pdHMgd2hlbiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLlxuICogQGV2ZW50IHtFdmVudH0gZXJyb3IgLSBFbWl0cyB3aGVuIHRoZSBpbWFnZSBsb2FkaW5nIGVuZGVkIGluIGFuIGVycm9yLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLWFzcGVjdC1yYXRpbz1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGBhc3BlY3RSYXRpb2AgcHJvcGVydHkuXG4gKiBUaGlzIHdheSB3ZSBjYW4gaGF2ZSwgZm9yIGV4YW1wbGUsIGFuIGltYWdlIGNvbXBvbmVudCB3aXRoIGFuIGFzcGVjdFxuICogcmF0aW8gb2YgNC8zIGluIHNtYWxsZXIgdmlld3BvcnRzIGFuZCAxNi85IGluIGxhcmdlciB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2UtYm9yZGVyLXJhZGl1cz12YXIoLS1zYmItYm9yZGVyLXJhZGl1cy00eCldIC0gQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlXG4gKiBgYm9yZGVyUmFkaXVzYCBwcm9wZXJ0eSBpbiBjYXNlIG9mIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGRpZmZlcmVudCB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2Utb2JqZWN0LXBvc2l0aW9uXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LXBvc2l0aW9uIGNzcyBwcm9wZXJ0eSBvZiB0aGUgaW1hZ2UgaXRzZWxmIGlmIHRoZSBpbWFnZSBpdHNlbGYgaXMgY3JvcHBlZC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1pbWFnZScpXG5leHBvcnQgY2xhc3MgU2JiSW1hZ2VFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBlcnJvcjogJ2Vycm9yJyxcbiAgICBsb2FkOiAnbG9hZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJpdmF0ZSBfY2FwdGlvbkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfbGlua3NJbkNhcHRpb24/OiBOb2RlTGlzdE9mPEhUTUxMaW5rRWxlbWVudD47XG4gIHByaXZhdGUgX2NvbmZpZyA9IHtcbiAgICBub25SZXRpbmFRdWFsaXR5OiAnNDUnLFxuICAgIHJldGluYVF1YWxpdHk6ICcyMCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEFuIGFsdCB0ZXh0IGlzIG5vdCBhbHdheXMgbmVjZXNzYXJ5IChlLmcuIGluIHRlYXNlciBjYXJkcyB3aGVuXG4gICAqIGFkZGl0aW9uYWwgbGluayB0ZXh0IGlzIHByb3ZpZGVkKS4gSW4gdGhpcyBjYXNlIHdlIGNhbiBsZWF2ZVxuICAgKiB0aGUgdmFsdWUgb2YgdGhlIGFsdCBhdHRyaWJ1dGUgYmxhbmssIGJ1dCB0aGUgYXR0cmlidXRlIGl0c2VsZlxuICAgKiBzdGlsbCBuZWVkcyB0byBiZSBwcmVzZW50LiBUaGF0IHdheSB3ZSBjYW4gc2lnbmFsIGFzc2lzdGl2ZVxuICAgKiB0ZWNobm9sb2d5LCB0aGF0IHRoZXkgY2FuIHNraXAgdGhlIGltYWdlLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFsdD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGZhbHNlLCB3ZSBzaG93IGEgYmx1cnJlZCB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBhc1xuICAgKiBwbGFjZWhvbGRlciBiZWZvcmUgdGhlIGFjdHVhbCBpbWFnZSBzaG93cyB1cC4gVGhpcyB3aWxsIGhlbHBcbiAgICogdG8gaW1wcm92ZSB0aGUgcGVyY2VpdmVkIGxvYWRpbmcgcGVyZm9ybWFuY2UuIFJlYWQgbW9yZSBhYm91dFxuICAgKiB0aGUgaWRlYSBvZiBscWlwIGhlcmU6XG4gICAqIGh0dHBzOi8vbWVkaXVtLmNvbS9AaW1naXgvbHFpcC15b3VyLWltYWdlcy1mb3ItZmFzdC1sb2FkaW5nLTI1MjNkOWVlNGE2MlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2tpcC1scWlwJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgc2tpcExxaXAgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBjYXB0aW9uIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgaW1hZ2UgKGUuZy5cbiAgICogZGVzY3JpcHRpb25zIGFuZCB0aGUgbGlrZSkuXG4gICAqIExpbmtzIHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIHRhYmluZGV4PS0xIGlmIGhpZGVGcm9tU2NyZWVucmVhZGVyXG4gICAqIGlzIHNldCB0byB0cnVlLiBUaGF0IHdheSB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlY29tZSBmb2N1c2FibGUuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgY2FwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYSBjb3B5cmlnaHQgdGV4dCBpcyBwcm92aWRlZCwgd2Ugd2lsbCBhZGQgaXQgdG8gdGhlIGNhcHRpb25cbiAgICogYW5kIGNyZWF0ZSBhIHN0cnVjdHVyZWQgZGF0YSBqc29uLWxkIGJsb2NrIHdpdGggdGhlIGNvcHlyaWdodFxuICAgKiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBjb3B5cmlnaHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvcHlyaWdodCBob2xkZXIgY2FuIGVpdGhlciBiZSBhbiBPcmdhbml6YXRpb24gb3IgYSBQZXJzb25cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2NvcHlyaWdodC1ob2xkZXInIH0pXG4gIHB1YmxpYyBjb3B5cmlnaHRIb2xkZXI6ICdPcmdhbml6YXRpb24nIHwgJ1BlcnNvbicgPSAnT3JnYW5pemF0aW9uJztcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSwgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGN1c3RvbSBmb2NhbCBwb2ludFxuICAgKiBmb3IgdGhlIGltYWdlLiBTZWUgZnVsbCBkb2N1bWVudGF0aW9uIGhlcmU6XG4gICAqIGh0dHBzOi8vZG9jcy5pbWdpeC5jb20vYXBpcy9yZW5kZXJpbmcvZm9jYWxwb2ludC1jcm9wXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjdXN0b20tZm9jYWwtcG9pbnQnLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBjdXN0b21Gb2NhbFBvaW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBsYXp5IHByb3BlcnR5IGlzIHNldCB0byB0cnVlLCB0aGUgbW9kdWxlIHdpbGwgYXV0b21hdGljYWxseVxuICAgKiBjaGFuZ2UgdGhlIGRlY29kaW5nIHRvIGFzeW5jLCBvdGhlcndpc2UgdGhlIGRlY29kaW5nIGlzIHNldCB0byBhdXRvXG4gICAqIHdoaWNoIGxlYXZlcyB0aGUgaGFuZGxpbmcgdXAgdG8gdGhlIGJyb3dzZXIuIFJlYWQgbW9yZSBhYm91dCB0aGVcbiAgICogZGVjb2RpbmcgYXR0cmlidXRlIGhlcmU6XG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSW1hZ2VFbGVtZW50L2RlY29kaW5nXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgZGVjb2Rpbmc6ICdzeW5jJyB8ICdhc3luYycgfCAnYXV0bycgPSAnYXV0byc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUsIHRvIHJlY2VpdmUgdmlzdWFsIGd1aWRhbmNlIHdoZXJlIHRoZSBjdXN0b20gZm9jYWxcbiAgICogcG9pbnQgaXMgY3VycmVudGx5IHNldC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LWRlYnVnJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZm9jYWxQb2ludERlYnVnID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYSBmbG9hdGluZyBudW1iZXIgYmV0d2VlbiAwIChsZWZ0KSBhbmQgMSAocmlnaHQpLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZm9jYWwtcG9pbnQteCcsIHR5cGU6IE51bWJlciB9KSBwdWJsaWMgZm9jYWxQb2ludFggPSAxO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGEgZmxvYXRpbmcgbnVtYmVyIGJldHdlZW4gMCAodG9wKSBhbmQgMSAoYm90dG9tKS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXknLCB0eXBlOiBOdW1iZXIgfSkgcHVibGljIGZvY2FsUG9pbnRZID0gMTtcblxuICAvKipcbiAgICogUmlnaHQgbm93IHRoZSBtb2R1bGUgaXMgaGVhdmlseSBjb3VwbGVkIHdpdGggdGhlIGltYWdlIGRlbGl2ZXJ5XG4gICAqIHNlcnZpY2UgaW1naXggYW5kIGRlcGVuZHMgb24gdGhlIG9yaWdpbmFsIGZpbGVzIGJlaW5nIHN0b3JlZFxuICAgKiBpbnNpZGUgQUVNLiBZb3UgY2FuIHBhc3MgaW4gYW55IGh0dHBzOi8vY2RuLmltZy5zYmIuY2ggaW1nXG4gICAqIHNyYyBhZGRyZXNzIHlvdSBmaW5kIG9uIHNiYi5jaCB0byBwbGF5IGFyb3VuZCB3aXRoIGl0LiBKdXN0XG4gICAqIHN0cmlwIHRoZSB1cmwgcGFyYW1ldGVycyBhbmQgcGFzdGUgaW4gdGhlIHBsYWluIGZpbGUgYWRkcmVzcy5cbiAgICogSWYgeW91IHdhbnQgdG8ga25vdyBob3cgdG8gYmVzdCB3b3JrIHdpdGggdGhpcyBtb2R1bGUgd2l0aFxuICAgKiBpbWFnZXMgY29taW5nIGZyb20gYSBkaWZmZXJlbnQgc291cmNlLCBwbGVhc2UgY29udGFjdCB0aGVcbiAgICogTFlORSBDb3JlIFRlYW0uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbWFnZS1zcmMnIH0pIHB1YmxpYyBpbWFnZVNyYz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltcG9ydGFuY2UgYXR0cmlidXRlIGlzIGZhaXJseSBuZXcgYXR0cmlidXRlIHdoaWNoIHNob3VsZFxuICAgKiBoZWxwIHRoZSBicm93c2VyIGRlY2lkZSB3aGljaCByZXNvdXJjZXMgaXQgc2hvdWxkIHByaW9yaXRpc2VcbiAgICogZHVyaW5nIHBhZ2UgbG9hZC4gV2Ugd2lsbCBzZXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBiYXNlZCBvbiB0aGVcbiAgICogdmFsdWUsIHdlIHJlY2VpdmUgaW4gdGhlIGxvYWRpbmcgYXR0cmlidXRlLiAnZWFnZXInLCB3aGljaCB3ZSB1c2VcbiAgICogZm9yIHRoZSBsYXJnZXN0IGltYWdlIHdpdGhpbiB0aGUgaW5pdGlhbCB2aWV3cG9ydCwgd2lsbCBzZXQgdGhlXG4gICAqIGF0dHJpYnV0ZSB2YWx1ZSB0byAnaGlnaCcuICdsYXp5Jywgd2hpY2ggd2UgdXNlIGZvciBpbWFnZXMgYmVsb3dcbiAgICogdGhlIGZvbGQsIHdpbGwgc2V0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgdG8gJ2xvdycuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgaW1wb3J0YW5jZTogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdycgPSAnaGlnaCc7XG5cbiAgLyoqXG4gICAqIFdpdGggdGhlIHN1cHBvcnQgb2YgbmF0aXZlIGltYWdlIGxhenkgbG9hZGluZywgd2UgY2FuIG5vd1xuICAgKiBkZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGxvYWQgdGhlIGltYWdlIGltbWVkaWF0ZWx5IG9yIG9ubHlcbiAgICogb25jZSBpdCBpcyBjbG9zZSB0byB0aGUgdmlzaWJsZSB2aWV3cG9ydC4gVGhlIHZhbHVlIGVhZ2VyIGlzXG4gICAqIGJlc3QgdXNlZCBmb3IgaW1hZ2VzIHdpdGhpbiB0aGUgaW5pdGlhbCB2aWV3cG9ydC4gV2Ugd2FudCB0b1xuICAgKiBsb2FkIHRoZXNlIGltYWdlcyBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIGltcHJvdmUgdGhlIENvcmUgV2ViXG4gICAqIFZpdGFscyB2YWx1ZXMuIGxhenkgb24gdGhlIG90aGVyIGhhbmQgd29ya3MgYmVzdCBmb3IgaW1hZ2VzXG4gICAqIHdoaWNoIGFyZSBmdXJ0aGVyIGRvd24gdGhlIHBhZ2Ugb3IgaW52aXNpYmxlIGR1cmluZyB0aGUgbG9hZGluZ1xuICAgKiBvZiB0aGUgaW5pdGlhbCB2aWV3cG9ydC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBsb2FkaW5nOiAnZWFnZXInIHwgJ2xhenknID0gJ2VhZ2VyJztcblxuICAvKipcbiAgICogV2l0aCBwZXJmb3JtYW5jZS5tYXJrIHlvdSBjYW4gbG9nIGEgdGltZXN0YW1wIGFzc29jaWF0ZWQgd2l0aFxuICAgKiB0aGUgbmFtZSB5b3UgZGVmaW5lIGluIHBlcmZvcm1hbmNlTWFyayB3aGVuIGEgY2VydGFpbiBldmVudCBpc1xuICAgKiBoYXBwZW5pbmcuIEluIG91ciBjYXNlIHdlIHdpbGwgbG9nIHRoZSBwZXJmb3JtYW5jZS5tYXJrIGludG9cbiAgICogdGhlIFBlcmZvcm1hbmNlRW50cnkgQVBJIG9uY2UgdGhlIGltYWdlIGlzIGZ1bGx5IGxvYWRlZC5cbiAgICogUGVyZm9ybWFuY2UgbW9uaXRvcmluZyB0b29scyBsaWtlIFNwZWVkQ3VydmUgb3IgTGlnaHRob3VzZSBhcmVcbiAgICogdGhlbiBhYmxlIHRvIGdyYWIgdGhlc2UgZW50cmllcyBmcm9tIHRoZSBQZXJmb3JtYW5jZUVudHJ5IEFQSVxuICAgKiBhbmQgZ2l2ZSB1cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBpbnNpZ2h0cyBhYm91dCBvdXIgcGFnZVxuICAgKiBsb2FkaW5nIGJlaGF2aW91ci4gV2UgYXJlIHRoZW4gYWxzbyBhYmxlIHRvIG1vbml0b3IgdGhlc2VcbiAgICogdmFsdWVzIG92ZXIgYSBsb25nIHBlcmlvZCB0byBzZWUgaWYgb3VyIHBlcmZvcm1hbmNlXG4gICAqIGluY3JlYXNlcyBvciBkZWNyZWFzZXMgb3ZlciB0aW1lLiBCZXN0IHRvIHVzZSBsb3dlcmNhc2Ugc3RyaW5nc1xuICAgKiBoZXJlLCBzZXBhcmF0ZSB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzIG9yIGRhc2hlcy5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BlcmZvcm1hbmNlLW1hcmsnIH0pIHB1YmxpYyBwZXJmb3JtYW5jZU1hcms/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpdGggdGhlIHBpY3R1cmVTaXplc0NvbmZpZyBvYmplY3QsIHlvdSBjYW4gcGFzcyBpbiBpbmZvcm1hdGlvblxuICAgKiBpbnRvIGltYWdlIGFib3V0IHdoYXQga2luZCBvZiBzb3VyY2UgZWxlbWVudHMgc2hvdWxkIGdldFxuICAgKiByZW5kZXJlZC4gbWVkaWFRdWVyaWVzIGFjY2VwdHMgbXVsdGlwbGUgTWVkaWEgUXVlcnkgZW50cmllc1xuICAgKiB3aGljaCBjYW4gZ2V0IGNvbWJpbmVkIGJ5IGRlZmluaW5nIGEgY29uZGl0aW9uT3BlcmF0b3IuXG4gICAqIFR5cGUgaXM6IHN0cmluZ2lmaWVkIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnLU9iamVjdFxuICAgKiBBbiBleGFtcGxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzOlxuICAgKiB7XG4gICAqICAgIFwiYnJlYWtwb2ludHNcIjogW1xuICAgKiAgICAgIHtcbiAgICogICAgICAgIFwiaW1hZ2VcIjoge1xuICAgKiAgICAgICAgICBcImhlaWdodFwiOiBcIjY3NVwiLFxuICAgKiAgICAgICAgICBcIndpZHRoXCI6IFwiMTIwMFwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1sYXJnZS1taW5cIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfSxcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI1NDlcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjk3NlwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1zbWFsbC1taW5cIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfSxcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCIxODBcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjMyMFwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWF4LXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1taWNyby1tYXhcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBcImFuZFwiXG4gICAqICAgICAgICAgIH0sXG4gICAqICAgICAgICAgIHtcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJvcmllbnRhdGlvblwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IGZhbHNlLFxuICAgKiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcImxhbmRzY2FwZVwiXG4gICAqICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAqICAgICAgICAgIH1cbiAgICogICAgICAgIF1cbiAgICogICAgICB9XG4gICAqICAgIF1cbiAgICogIH1cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BpY3R1cmUtc2l6ZXMtY29uZmlnJyB9KSBwdWJsaWMgcGljdHVyZVNpemVzQ29uZmlnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb3JkZXIgcmFkaXVzIG9mIHRoZSBpbWFnZS4gQ2hvb3NlIGJldHdlZW4gYSBkZWZhdWx0IHJhZGl1cywgbm8gcmFkaXVzIGFuZCBhIGNvbXBsZXRlbHkgcm91bmQgaW1hZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdib3JkZXItcmFkaXVzJywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYm9yZGVyUmFkaXVzOlxuICAgIHwgJ2RlZmF1bHQnXG4gICAgfCAnbm9uZSdcbiAgICB8ICdyb3VuZCcgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIFNldCBhbiBhc3BlY3QgcmF0aW9cbiAgICogZGVmYXVsdCBpcyAnMTYtOScgKDE2LzkpXG4gICAqIG90aGVyIHZhbHVlczogJ2ZyZWUnLCAnMS0xJywgJzEtMicsICcyLTEnLCAnMi0zJywgJzMtMicsICczLTQnLCAnNC0zJywgJzQtNScsICc1LTQnLCAnOS0xNidcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FzcGVjdC1yYXRpbycsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFzcGVjdFJhdGlvOlxuICAgIHwgJ2ZyZWUnXG4gICAgfCAnMS0xJ1xuICAgIHwgJzEtMidcbiAgICB8ICcyLTEnXG4gICAgfCAnMi0zJ1xuICAgIHwgJzMtMidcbiAgICB8ICczLTQnXG4gICAgfCAnNC0zJ1xuICAgIHwgJzQtNSdcbiAgICB8ICc1LTQnXG4gICAgfCAnOS0xNidcbiAgICB8ICcxNi05JyA9ICcxNi05JztcblxuICAvKiogV2hldGhlciB0aGUgaW1hZ2UgaXMgZmluaXNoZWQgbG9hZGluZyBvciBmYWlsZWQgdG8gbG9hZC4gKi9cbiAgcHVibGljIGdldCBjb21wbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTEltYWdlRWxlbWVudD4oJy5zYmItaW1hZ2VfX2ltZycpPy5jb21wbGV0ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbmVzdGVkIGluIGFuIGA8c2JiLXRlYXNlci1oZXJvPmAgZWxlbWVudCBvbiBpbiBhbiBgPHNiYi10ZWFzZXItcGFpZD5gIGVsZW1lbnQuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS10ZWFzZXInLFxuICAgICAgISFob3N0Q29udGV4dCgnc2JiLXRlYXNlci1oZXJvJywgdGhpcykgfHwgISF0aGlzLmNsb3Nlc3QoJ3NiYi10ZWFzZXItcGFpZCcpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5fY2FwdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9saW5rc0luQ2FwdGlvbiA9IHRoaXMuX2NhcHRpb25FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTExpbmtFbGVtZW50PignYScpO1xuXG4gICAgaWYgKCF0aGlzLl9saW5rc0luQ2FwdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FkZEZvY3VzQWJpbGl0eVRvTGlua3NJbkNhcHRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGltYWdlIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVseSBsb2FkZWQuXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtcbiAgICBpZiAodGhpcy5jb21wbGV0ZSkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nUGVyZm9ybWFuY2VNYXJrcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZXJmb3JtYW5jZU1hcmspIHtcbiAgICAgIHBlcmZvcm1hbmNlLmNsZWFyTWFya3ModGhpcy5wZXJmb3JtYW5jZU1hcmspO1xuICAgICAgcGVyZm9ybWFuY2UubWFyayh0aGlzLnBlcmZvcm1hbmNlTWFyayk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbWF0Y2hNZWRpYVF1ZXJ5RGVzaWduVG9rZW4oYnJlYWtwb2ludFNpemVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gYnJlYWtwb2ludE1hcFticmVha3BvaW50U2l6ZU5hbWVdO1xuICAgIHJldHVybiB2YWx1ZSA/IGAke3ZhbHVlfXJlbWAgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEZvY3VzQWJpbGl0eVRvTGlua3NJbkNhcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fbGlua3NJbkNhcHRpb24/LmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIGxpbmsucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUltYWdlVXJsKGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCwgbHF1aXAgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKCFiYXNlVXJsIHx8IGJhc2VVcmwgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRpbmcgYW4gVVJMIHdpdGhvdXQgYSBzY2hlbWEgd2lsbCBmYWlsLCBidXQgaXMgYSB2YWxpZCBpbnB1dCBmb3IgYmFzZVVybC5cbiAgICAvLyBlLmcuIGltYWdlLXNyYyBjYW4gYmUgaHR0cHM6Ly9leGFtcGxlLmNvbS9teS1pbWFnZS5wbmcgb3IgL215LWltYWdlLnBuZ1xuICAgIGNvbnN0IGlzRnVsbHlRdWFsaWZpZWRVcmwgPSAhIWJhc2VVcmwubWF0Y2goL15cXHcrOlxcL1xcLy8pO1xuICAgIGNvbnN0IGltYWdlVXJsT2JqID0gaXNGdWxseVF1YWxpZmllZFVybCA/IG5ldyBVUkwoYmFzZVVybCkgOiBuZXcgVVJMKGBodHRwOi8vbm9vcC8ke2Jhc2VVcmx9YCk7XG5cbiAgICBpZiAobHF1aXApIHtcbiAgICAgIC8vIGJsdXIgYW5kIHNpemU6ID9ibHVyPTEwMCZ3PTEwMCZoPTU2XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdibHVyJywgJzEwMCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgndycsICcxMDAnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2gnLCAnNTYnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ0ROIEluZm9ybWF0aW9uOiBodHRwczovL2RvY3MuaW1naXguY29tL2FwaXMvcmVuZGVyaW5nXG4gICAgICAvLyBwYXJhbS5hdXRvOiA/YXV0bz1mb3JtYXQsY29tcHJlc3MsY3M9dGlueXNyZ2JcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2F1dG8nLCAnZm9ybWF0LGNvbXByZXNzLGNzPXRpbnlzcmdiJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VzdG9tRm9jYWxQb2ludCkge1xuICAgICAgLy8gY3JvcDogYCZmaXQ9Y3JvcCZjcm9wPWZvY2FscG9pbnQmZnAteD0ke3RoaXMuZm9jYWxQb2ludFh9JmZwLXk9JHt0aGlzLmZvY2FsUG9pbnRZfSZmcC16PTFgLFxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZml0JywgJ2Nyb3AnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2Nyb3AnLCAnZm9jYWxwb2ludCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteCcsIHRoaXMuZm9jYWxQb2ludFgudG9TdHJpbmcoMTApKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXknLCB0aGlzLmZvY2FsUG9pbnRZLnRvU3RyaW5nKDEwKSk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC16JywgJzEnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb2NhbFBvaW50RGVidWcpIHtcbiAgICAgIC8vIGZvY2FsUG9pbnREZWJ1ZzogJyZmcC1kZWJ1Zz10cnVlJ1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAtZGVidWcnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8vIEluIGNhc2Ugb2YgXCJub29wXCIgaG9zdCwgd2UgZG9uJ3QgcmV0dXJuIHRoZSBob3N0IGFuZCBtdXN0IHJlbW92ZSB0aGVcbiAgICAvLyBzdGFydGluZyBgL2Agb2YgdGhlIHBhdGhuYW1lLlxuICAgIHJldHVybiBpc0Z1bGx5UXVhbGlmaWVkVXJsXG4gICAgICA/IGltYWdlVXJsT2JqLmhyZWZcbiAgICAgIDogaW1hZ2VVcmxPYmoucGF0aG5hbWUuc3Vic3RyaW5nKDEpICsgaW1hZ2VVcmxPYmouc2VhcmNoO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZVBpY3R1cmVTaXplQ29uZmlncygpOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ0JyZWFrcG9pbnRbXSB7XG4gICAgbGV0IHBpY3R1cmVTaXplc0NvbmZpZztcblxuICAgIGlmICh0aGlzLnBpY3R1cmVTaXplc0NvbmZpZykge1xuICAgICAgcGljdHVyZVNpemVzQ29uZmlnID0gdGhpcy5waWN0dXJlU2l6ZXNDb25maWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlZmF1bHQgY29uZmlnXG4gICAgICBwaWN0dXJlU2l6ZXNDb25maWcgPSBge1xuICAgICAgICBcImJyZWFrcG9pbnRzXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogNjc1LFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDEyMDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LWxhcmdlLW1pblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiA1NDksXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogOTc2XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1zbWFsbC1taW5cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogMTgwLFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDMyMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1heC13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMocGljdHVyZVNpemVzQ29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU1lZGlhUXVlcnlTdHJpbmcoXG4gICAgbWVkaWFRdWVyaWVzOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ01lZGlhUXVlcnlbXSxcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbWVkaWFRdWVyeSA9ICcnO1xuXG4gICAgbWVkaWFRdWVyaWVzLmZvckVhY2goKG1xKSA9PiB7XG4gICAgICBjb25zdCBtcUNvbmRpdGlvbiA9IG1xLmNvbmRpdGlvbkZlYXR1cmU7XG4gICAgICBsZXQgbXFWYWx1ZTtcblxuICAgICAgaWYgKG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS5seW5lRGVzaWduVG9rZW4pIHtcbiAgICAgICAgbXFWYWx1ZSA9IHRoaXMuX21hdGNoTWVkaWFRdWVyeURlc2lnblRva2VuKG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtcVZhbHVlID0gbXEuY29uZGl0aW9uRmVhdHVyZVZhbHVlLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtcUNvbWJpbmVyID0gbXEuY29uZGl0aW9uT3BlcmF0b3IgPyBgICR7bXEuY29uZGl0aW9uT3BlcmF0b3J9IGAgOiAnJztcblxuICAgICAgbWVkaWFRdWVyeSArPSBgKCR7bXFDb25kaXRpb259OiAke21xVmFsdWV9KSR7bXFDb21iaW5lcn1gO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lZGlhUXVlcnk7XG4gIH1cblxuICBAZXZlbnRPcHRpb25zKGV2ZW50TGlzdGVuZXJPcHRpb25zKVxuICBwcml2YXRlIF9pbWFnZUxvYWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dQZXJmb3JtYW5jZU1hcmtzKCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJywgdHJ1ZSk7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnbG9hZCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGxldCB7IGNhcHRpb24gfSA9IHRoaXM7XG4gICAgbGV0IHNjaGVtYURhdGEgPSAnJztcblxuICAgIGNvbnN0IGltYWdlVXJsTFFJUCA9IHRoaXMuX3ByZXBhcmVJbWFnZVVybCh0aGlzLmltYWdlU3JjLCB0cnVlKTtcbiAgICBjb25zdCBpbWFnZVVybFdpdGhQYXJhbXMgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMubG9hZGluZyA9PT0gJ2xhenknKSB7XG4gICAgICB0aGlzLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgIHRoaXMuaW1wb3J0YW5jZSA9ICdsb3cnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvcHlyaWdodCkge1xuICAgICAgY2FwdGlvbiA9IGAke3RoaXMuY2FwdGlvbn0gwqkke3RoaXMuY29weXJpZ2h0fWA7XG4gICAgICBzY2hlbWFEYXRhID0gYHtcbiAgICAgICAgXCJAY29udGV4dFwiOiBcImh0dHBzOi8vc2NoZW1hLm9yZ1wiLFxuICAgICAgICBcIkB0eXBlXCI6IFwiUGhvdG9ncmFwaFwiLFxuICAgICAgICBcImltYWdlXCI6IFwiJHt0aGlzLmltYWdlU3JjfVwiLFxuICAgICAgICBcImNvcHlyaWdodEhvbGRlclwiOiB7XG4gICAgICAgICAgXCJAdHlwZVwiOiBcIiR7dGhpcy5jb3B5cmlnaHRIb2xkZXJ9XCIsXG4gICAgICAgICAgXCJuYW1lXCI6IFwiJHt0aGlzLmNvcHlyaWdodH1cIlxuICAgICAgICB9XG4gICAgICB9YDtcbiAgICB9XG5cbiAgICBjb25zdCBwaWN0dXJlU2l6ZUNvbmZpZ3MgPSB0aGlzLl9wcmVwYXJlUGljdHVyZVNpemVDb25maWdzKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYWx0IGF0dHJpYnV0ZSBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZm9yIHRoZSBpbWcgZWxlbWVudC5cbiAgICAgKiBJZiBpdCBoYXMgYW4gZW1wdHkgc3RyaW5nIGFzIGl0cyB2YWx1ZSwgaXQgaXMgc2ltcGx5IGlnbm9yZWRcbiAgICAgKiBieSBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLiBJZiB3ZSBsZWF2ZSBpdCBvdXQgY29tcGxldGVseSxcbiAgICAgKiB0aGV5IG1pZ2h0IHRyeSB0byBpbnRlcnByZXQgdGhlIGltZyBlbGVtZW50LlxuICAgICAqL1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGZpZ3VyZSBjbGFzcz1cInNiYi1pbWFnZV9fZmlndXJlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItaW1hZ2VfX3dyYXBwZXJcIj5cbiAgICAgICAgICAkeyF0aGlzLnNraXBMcWlwXG4gICAgICAgICAgICA/IGh0bWxgPGltZ1xuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItaW1hZ2VfX2JsdXJyZWRcIlxuICAgICAgICAgICAgICAgIHNyYz0ke2ltYWdlVXJsTFFJUH1cbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMDBcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjU2MlwiXG4gICAgICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICAgIGRlY29kaW5nPSR7dGhpcy5kZWNvZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICAvPmBcbiAgICAgICAgICAgIDogbm90aGluZ31cblxuICAgICAgICAgIDxwaWN0dXJlPlxuICAgICAgICAgICAgPCEtLSByZW5kZXIgcGljdHVyZSBlbGVtZW50IHNvdXJjZXMgLS0+XG4gICAgICAgICAgICAke3BpY3R1cmVTaXplQ29uZmlncy5tYXAoKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbWFnZUhlaWdodCA9IGNvbmZpZy5pbWFnZS5oZWlnaHQ7XG4gICAgICAgICAgICAgIGNvbnN0IGltYWdlV2lkdGggPSBjb25maWcuaW1hZ2Uud2lkdGg7XG4gICAgICAgICAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB0aGlzLl9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKGNvbmZpZy5tZWRpYVF1ZXJpZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGh0bWxgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICAgIG1lZGlhPSR7YCR7bWVkaWFRdWVyeX1gfVxuICAgICAgICAgICAgICAgICAgc2l6ZXM9JHtgJHtpbWFnZVdpZHRofXB4YH1cbiAgICAgICAgICAgICAgICAgIHNyY3NldD0ke1xuICAgICAgICAgICAgICAgICAgICBgJHtpbWFnZVVybFdpdGhQYXJhbXN9Jnc9JHtpbWFnZVdpZHRofSZoPSR7aW1hZ2VIZWlnaHR9JnE9JHt0aGlzLl9jb25maWcubm9uUmV0aW5hUXVhbGl0eX0gJHtpbWFnZVdpZHRofXcsIGAgK1xuICAgICAgICAgICAgICAgICAgICBgJHtpbWFnZVVybFdpdGhQYXJhbXN9Jnc9JHtpbWFnZVdpZHRoICogMn0maD0ke2ltYWdlSGVpZ2h0ICogMn0mcT0ke1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5yZXRpbmFRdWFsaXR5XG4gICAgICAgICAgICAgICAgICAgIH0gJHtpbWFnZVdpZHRoICogMn13YFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgID48L3NvdXJjZT5gLFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGFsdD0ke3RoaXMuYWx0IHx8ICcnfVxuICAgICAgICAgICAgICBAbG9hZD0ke3RoaXMuX2ltYWdlTG9hZGVkfVxuICAgICAgICAgICAgICBAZXJyb3I9JHsoKSA9PiB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdlcnJvcicpKX1cbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItaW1hZ2VfX2ltZ1wiXG4gICAgICAgICAgICAgIHNyYz0ke3RoaXMuaW1hZ2VTcmMhfVxuICAgICAgICAgICAgICB3aWR0aD1cIjEwMDBcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCI1NjJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPSR7dGhpcy5sb2FkaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGRlY29kaW5nPSR7dGhpcy5kZWNvZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICAuZmV0Y2hQcmlvcml0eT0ke3RoaXMuaW1wb3J0YW5jZSA/PyBub3RoaW5nfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke2NhcHRpb25cbiAgICAgICAgICA/IGh0bWxgPGZpZ2NhcHRpb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItaW1hZ2VfX2NhcHRpb25cIlxuICAgICAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2FwdGlvbn1cbiAgICAgICAgICAgICAgJHtyZWYoKGVsKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FwdGlvbkVsZW1lbnQgPSBlbCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA+PC9maWdjYXB0aW9uPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7c2NoZW1hRGF0YVxuICAgICAgICAgID8gaHRtbGA8c2NyaXB0IHR5cGU9XCJhcHBsaWNhdGlvbi9sZCtqc29uXCIgLmlubmVySFRNTD0ke3NjaGVtYURhdGF9Pjwvc2NyaXB0PmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2ZpZ3VyZT5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItaW1hZ2UnOiBTYmJJbWFnZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7OztBQXNCTyxNQUFNLHVCQUF1QjtBQUM3QixNQUFNLHVCQUF1QjtBQUM3QixNQUFNLHdCQUF3QjtBQUM5QixNQUFNLHdCQUF3QjtBQUM5QixNQUFNLHdCQUF3QjtBQUM5QixNQUFNLHdCQUF3QjtBQUM5QixN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QTtBQUFBLEVBQXBFLFNBQVMsRUFBRSxXQUFXLHNCQUFzQixNQUFNLFNBQVM7QUFBQSxHQTFEakQsZ0JBMEQwRCxXQUFBLG9CQUFBLENBQUE7QUFTbEQsZ0JBQUE7QUFBQSxFQUFsQixTQUFTO0FBQUEsR0FuRUMsZ0JBbUVRLFdBQUEsWUFBQSxDQUFBO0FBTWlELGdCQUFBO0FBQUEsRUFBbkUsU0FBUyxFQUFFLFdBQVcscUJBQXFCLE1BQU0sU0FBUztBQUFBLEdBekVoRCxnQkF5RXlELFdBQUEsbUJBQUEsQ0FBQTtBQUtMLGdCQUFBO0FBQUEsRUFBOUQsU0FBUyxFQUFFLFdBQVcsaUJBQWlCLE1BQU0sUUFBUTtBQUFBLEdBOUUzQyxnQkE4RW9ELFdBQUEsZUFBQSxDQUFBO0FBS0EsZ0JBQUE7QUFBQSxFQUE5RCxTQUFTLEVBQUUsV0FBVyxpQkFBaUIsTUFBTSxRQUFRO0FBQUEsR0FuRjNDLGdCQW1Gb0QsV0FBQSxlQUFBLENBQUE7QUFZbEIsZ0JBQUE7QUFBQSxFQUE1QyxTQUFTLEVBQUUsV0FBVyxhQUFhO0FBQUEsR0EvRnpCLGdCQStGa0MsV0FBQSxZQUFBLENBQUE7QUFXMUIsZ0JBQUE7QUFBQSxFQUFsQixTQUFTO0FBQUEsR0ExR0MsZ0JBMEdRLFdBQUEsY0FBQSxDQUFBO0FBWUEsZ0JBQUE7QUFBQSxFQUFsQixTQUFTO0FBQUEsR0F0SEMsZ0JBc0hRLFdBQUEsV0FBQSxDQUFBO0FBZWlDLGdCQUFBO0FBQUEsRUFBbkQsU0FBUyxFQUFFLFdBQVcsb0JBQW9CO0FBQUEsR0FySWhDLGdCQXFJeUMsV0FBQSxtQkFBQSxDQUFBO0FBc0VJLGdCQUFBO0FBQUEsRUFBdkQsU0FBUyxFQUFFLFdBQVcsd0JBQXdCO0FBQUEsR0EzTXBDLGdCQTJNNkMsV0FBQSxzQkFBQSxDQUFBO0FBS1EsZ0JBQUE7QUFBQSxFQUEvRCxTQUFTLEVBQUUsV0FBVyxpQkFBaUIsU0FBUyxNQUFNO0FBQUEsR0FoTjVDLGdCQWdOcUQsV0FBQSxnQkFBQSxDQUFBO0FBV3pELGdCQUFBO0FBQUEsRUFETixTQUFTLEVBQUUsV0FBVyxnQkFBZ0IsU0FBUyxNQUFNO0FBQUEsR0ExTjNDLGdCQTJOSixXQUFBLGVBQUEsQ0FBQTtBQTBNQyxnQkFBQTtBQUFBLEVBRFAsYUFBYSxvQkFBb0I7QUFBQSxHQXBhdkIsZ0JBcWFILFdBQUEsZ0JBQUEsQ0FBQTtBQXJhRyxrQkFBTixnQkFBQTtBQUFBLEVBRE4sY0FBYyxXQUFXO0FBQUEsR0FDYixlQUFBOyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXX0=
554
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ac2JiLWVzdGEvbHluZS1kZXNpZ24tdG9rZW5zL2Rpc3QvanMvc2JiLXRva2Vucy5tanMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaW1hZ2UvaW1hZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEbyBub3QgZWRpdCBkaXJlY3RseVxuICogR2VuZXJhdGVkIG9uIE1vbiwgMTUgSnVsIDIwMjQgMDk6NDA6MTYgR01UXG4gKi9cblxuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uMXggPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjJ4ID0gODA7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb24zeCA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjR4ID0gMTYwO1xuZXhwb3J0IGNvbnN0IFNiYkFuaW1hdGlvbkR1cmF0aW9uNXggPSAyMDA7XG5leHBvcnQgY29uc3QgU2JiQW5pbWF0aW9uRHVyYXRpb242eCA9IDI0MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25EdXJhdGlvbjEyeCA9IDQ4MDtcbmV4cG9ydCBjb25zdCBTYmJBbmltYXRpb25FYXNpbmcgPSBcImN1YmljLWJlemllciguNDcsIC4xLCAxLCAuNjMpXCI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgxeCA9IDE7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgyeCA9IDI7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyV2lkdGgzeCA9IDM7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzMXggPSAyO1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czJ4ID0gNDtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM0eCA9IDg7XG5leHBvcnQgY29uc3QgU2JiQm9yZGVyUmFkaXVzNnggPSAxMjtcbmV4cG9ydCBjb25zdCBTYmJCb3JkZXJSYWRpdXM4eCA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkJvcmRlclJhZGl1czE2eCA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRaZXJvTWluID0gMDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50WmVyb01heCA9IDM1OTtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TWljcm9NaW4gPSAzNjA7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludE1pY3JvTWF4ID0gNTk5O1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRTbWFsbE1pbiA9IDYwMDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50U21hbGxNYXggPSA4Mzk7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludE1lZGl1bU1pbiA9IDg0MDtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TWVkaXVtTWF4ID0gMTAyMztcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50TGFyZ2VNaW4gPSAxMDI0O1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRMYXJnZU1heCA9IDEyNzk7XG5leHBvcnQgY29uc3QgU2JiQnJlYWtwb2ludFdpZGVNaW4gPSAxMjgwO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRXaWRlTWF4ID0gMTQzOTtcbmV4cG9ydCBjb25zdCBTYmJCcmVha3BvaW50VWx0cmFNaW4gPSAxNDQwO1xuZXhwb3J0IGNvbnN0IFNiYkJyZWFrcG9pbnRVbHRyYU1heCA9IDI1Nzk7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFjayA9IFwiIzAwMDAwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTAgPSBcInJnYmEoMCwgMCwgMCwgMClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGExMCA9IFwicmdiYSgwLCAwLCAwLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhMTUgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGEyMCA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhMzAgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTQwID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckJsYWNrQWxwaGE1MCA9IFwicmdiYSgwLCAwLCAwLCAwLjUpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JCbGFja0FscGhhNjAgPSBcInJnYmEoMCwgMCwgMCwgMC42KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQmxhY2tBbHBoYTcwID0gXCJyZ2JhKDAsIDAsIDAsIDAuNylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pZG5pZ2h0ID0gXCIjMTUxNTE1XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDaGFyY29hbCA9IFwiIzIxMjEyMVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9ySXJvbiA9IFwiIzQ0NDQ0NFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQW50aHJhY2l0ZSA9IFwiIzVhNWE1YVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3Jhbml0ZSA9IFwiIzY4Njg2OFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTWV0YWwgPSBcIiM3Njc2NzZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1ldGFsQWxwaGEwID0gXCJyZ2JhKDExOCwgMTE4LCAxMTgsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JNZXRhbEFscGhhMjAgPSBcInJnYmEoMTE4LCAxMTgsIDExOCwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU21va2UgPSBcIiM4ZDhkOGRcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlQWxwaGEwID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTbW9rZUFscGhhNSA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU21va2VBbHBoYTEwID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNtb2tlQWxwaGEyMCA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JTdG9ybSA9IFwiI2E4YThhOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yR3JhcGhpdGUgPSBcIiNiN2I3YjdcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckNlbWVudCA9IFwiI2JkYmRiZFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQ2VtZW50QWxwaGEwID0gXCJyZ2JhKDE4OSwgMTg5LCAxODksIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDZW1lbnRBbHBoYTIwID0gXCJyZ2JhKDE4OSwgMTg5LCAxODksIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclBsYXRpbnVtID0gXCIjY2RjZGNkXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JQbGF0aW51bUFscGhhMCA9IFwicmdiYSgyMDUsIDIwNSwgMjA1LCAwKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGxhdGludW1BbHBoYTIwID0gXCJyZ2JhKDIwNSwgMjA1LCAyMDUsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckFsdW1pbml1bSA9IFwiI2QyZDJkMlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yU2lsdmVyID0gXCIjZGNkY2RjXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JDbG91ZCA9IFwiI2U1ZTVlNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQ2xvdWRBbHBoYTgwID0gXCJyZ2JhKDIyOSwgMjI5LCAyMjksIDAuOClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvck1pbGsgPSBcIiNmNmY2ZjZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZCA9IFwiI2ViMDAwMFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkQWxwaGEwID0gXCJyZ2JhKDIzNSwgMCwgMCwgMClcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZEFscGhhMjAgPSBcInJnYmEoMjM1LCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWRBbHBoYTkwID0gXCJyZ2JhKDIzNSwgMCwgMCwgMC45KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkTW9kZURhcmsgPSBcIiNmZjM4MzhcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZDEyNSA9IFwiI2M2MDAxOFwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUmVkMTI1QWxwaGEwID0gXCJyZ2JhKDE5OCwgMCwgMjQsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JSZWQxMjVBbHBoYTIwID0gXCJyZ2JhKDE5OCwgMCwgMjQsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclJlZDE1MCA9IFwiI2EyMDAxM1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGUgPSBcIiNmZmZmZmZcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlQWxwaGEwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JXaGl0ZUFscGhhMjAgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGVBbHBoYTMwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvcldoaXRlQWxwaGE1MCA9IFwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JXaGl0ZUFscGhhNjAgPSBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yV2hpdGVBbHBoYTcwID0gXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNylcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclNreSA9IFwiIzAwNzljN1wiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yTmlnaHQgPSBcIiMxNDNhODVcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclZpb2xldCA9IFwiIzZmMjI4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yUGluayA9IFwiI2NmNDA4MlwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQXV0dW1uID0gXCIjZTg0ZTEwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JPcmFuZ2UgPSBcIiNmMjdlMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvclBlYWNoID0gXCIjZmNiYjAwXCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JMZW1vbiA9IFwiI2ZmZGUxNVwiO1xuZXhwb3J0IGNvbnN0IFNiYkNvbG9yQnJvd24gPSBcIiNiNzYwMDBcIjtcbmV4cG9ydCBjb25zdCBTYmJDb2xvckdyZWVuID0gXCIjMDA4YTM2XCI7XG5leHBvcnQgY29uc3QgU2JiQ29sb3JUdXJxdW9pc2UgPSBcIiMwMGE1OWJcIjtcbmV4cG9ydCBjb25zdCBTYmJGb2N1c091dGxpbmVPZmZzZXQgPSAzO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1plcm8gPSA0O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc01pY3JvID0gNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNTbWFsbCA9IDQ7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zTWVkaXVtID0gODtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZENvbHVtbnNMYXJnZSA9IDg7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRDb2x1bW5zV2lkZSA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkQ29sdW1uc1VsdHJhID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlWmVybyA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZU1pY3JvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZUdyaWRHdXR0ZXJSZXNwb25zaXZlU21hbGwgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVNZWRpdW0gPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVMYXJnZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VHcmlkR3V0dGVyUmVzcG9uc2l2ZVdpZGUgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlR3JpZEd1dHRlclJlc3BvbnNpdmVVbHRyYSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlWmVybyA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYkxheW91dEJhc2VPZmZzZXRSZXNwb25zaXZlTWljcm8gPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZVNtYWxsID0gNDg7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVNZWRpdW0gPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlT2Zmc2V0UmVzcG9uc2l2ZUxhcmdlID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVXaWRlID0gNzI7XG5leHBvcnQgY29uc3QgU2JiTGF5b3V0QmFzZU9mZnNldFJlc3BvbnNpdmVVbHRyYSA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJMYXlvdXRCYXNlUGFnZU1heFdpZHRoID0gMTIwMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cxT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MU9mZnNldFkgPSAyO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzFCbHVyID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MVNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93Mk9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NoYWRvdzJPZmZzZXRZID0gMTtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNTaGFkb3cyQmx1ciA9IDQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU2hhZG93MlNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzU29mdDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NvZnQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NvZnROZWdhdGl2ZTFDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjE1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsM1NvZnROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzSGFyZDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzSGFyZDJDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwzSGFyZE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDNIYXJkTmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC40KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzFPZmZzZXRYID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxT2Zmc2V0WSA9IDQ7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93MUJsdXIgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cxU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyT2Zmc2V0WCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U2hhZG93Mk9mZnNldFkgPSAxO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNVNoYWRvdzJCbHVyID0gODtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTaGFkb3cyU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVTb2Z0MUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMDUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U29mdDJDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjEpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U29mdE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMTUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw1U29mdE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVIYXJkMUNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVIYXJkMkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDVIYXJkTmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsNUhhcmROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjQpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MU9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzFPZmZzZXRZID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MUJsdXIgPSAxMjg7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93MVNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5U2hhZG93Mk9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJPZmZzZXRZID0gNDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTaGFkb3cyQmx1ciA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNoYWRvdzJTcHJlYWQgPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOVNvZnQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4wNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTb2Z0MkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTb2Z0TmVnYXRpdmUxQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4xNSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDlTb2Z0TmVnYXRpdmUyQ29sb3IgPSBcInJnYmEoMCwgMCwgMCwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOUhhcmQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOUhhcmQyQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4yKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsOUhhcmROZWdhdGl2ZTFDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjMpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWw5SGFyZE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MU9mZnNldFggPSAwO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxT2Zmc2V0WSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cxQmx1ciA9IDE5MjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93MVNwcmVhZCA9IDA7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNoYWRvdzJPZmZzZXRYID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU2hhZG93Mk9mZnNldFkgPSA0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyQmx1ciA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTaGFkb3cyU3ByZWFkID0gMDtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU29mdDFDb2xvciA9IFwicmdiYSgxNDEsIDE0MSwgMTQxLCAwLjA1KVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFTb2Z0MkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMSlcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExU29mdE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMTUpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMVNvZnROZWdhdGl2ZTJDb2xvciA9IFwicmdiYSgwLCAwLCAwLCAwLjIpXCI7XG5leHBvcnQgY29uc3QgU2JiU2hhZG93RWxldmF0aW9uTGV2ZWwxMUhhcmQxQ29sb3IgPSBcInJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xKVwiO1xuZXhwb3J0IGNvbnN0IFNiYlNoYWRvd0VsZXZhdGlvbkxldmVsMTFIYXJkMkNvbG9yID0gXCJyZ2JhKDE0MSwgMTQxLCAxNDEsIDAuMilcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExSGFyZE5lZ2F0aXZlMUNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuMylcIjtcbmV4cG9ydCBjb25zdCBTYmJTaGFkb3dFbGV2YXRpb25MZXZlbDExSGFyZE5lZ2F0aXZlMkNvbG9yID0gXCJyZ2JhKDAsIDAsIDAsIDAuNClcIjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNaZXJvID0gMjg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzTWljcm8gPSAyODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4eHNTbWFsbCA9IDI4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c01lZGl1bSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c0xhcmdlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHhzV2lkZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHh4c1VsdHJhID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNaZXJvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYeHNNaWNybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzU21hbGwgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c01lZGl1bSA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50WHhzTGFyZ2UgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c1dpZGUgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFh4c1VsdHJhID0gMzY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc1plcm8gPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzTWljcm8gPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzU21hbGwgPSAzNjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzTWVkaXVtID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc0xhcmdlID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRYc1dpZGUgPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFhzVWx0cmEgPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNaZXJvID0gNDQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTTWljcm8gPSA0NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudFNTbWFsbCA9IDQ0O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U01lZGl1bSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U0xhcmdlID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRTV2lkZSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50U1VsdHJhID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNWmVybyA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TU1pY3JvID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRNU21hbGwgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1NZWRpdW0gPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1MYXJnZSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TVdpZGUgPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudE1VbHRyYSA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFplcm8gPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExNaWNybyA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNpemVFbGVtZW50TFNtYWxsID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMTWVkaXVtID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMTGFyZ2UgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplRWxlbWVudExXaWRlID0gNjQ7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUVsZW1lbnRMVWx0cmEgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpU21hbGwgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTaXplSWNvblVpTWVkaXVtID0gMzY7XG5leHBvcnQgY29uc3QgU2JiU2l6ZUljb25VaUxhcmdlID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkMXggPSA0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDJ4ID0gODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQzeCA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDR4ID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkNXggPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ2eCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDd4ID0gMjg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ0ZpeGVkOHggPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nRml4ZWQ5eCA9IDM2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDEweCA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDEyeCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE0eCA9IDU2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE2eCA9IDY0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDE4eCA9IDcyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDIweCA9IDgwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDI0eCA9IDk2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdGaXhlZDMweCA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNaZXJvID0gMTI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzTWljcm8gPSAxMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4eHNTbWFsbCA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c01lZGl1bSA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c0xhcmdlID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHhzV2lkZSA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHh4c1VsdHJhID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNaZXJvID0gMTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeHNNaWNybyA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzU21hbGwgPSAxNjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c01lZGl1bSA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhzTGFyZ2UgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c1dpZGUgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4c1VsdHJhID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc1plcm8gPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzTWljcm8gPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzU21hbGwgPSAyMDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzTWVkaXVtID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc0xhcmdlID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYc1dpZGUgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhzVWx0cmEgPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNaZXJvID0gMjQ7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTTWljcm8gPSAyNDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVNTbWFsbCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU01lZGl1bSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU0xhcmdlID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVTV2lkZSA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlU1VsdHJhID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNWmVybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTU1pY3JvID0gMzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVNU21hbGwgPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1NZWRpdW0gPSA0MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1MYXJnZSA9IDQwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTVdpZGUgPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZU1VbHRyYSA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFplcm8gPSAzMjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxNaWNybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlTFNtYWxsID0gNDA7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMTWVkaXVtID0gNDg7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMTGFyZ2UgPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZUxXaWRlID0gNTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVMVWx0cmEgPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsWmVybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxNaWNybyA9IDMyO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxTbWFsbCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxNZWRpdW0gPSA2NDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsTGFyZ2UgPSA4MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVhsV2lkZSA9IDgwO1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWGxVbHRyYSA9IDk2O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsWmVybyA9IDQ4O1xuZXhwb3J0IGNvbnN0IFNiYlNwYWNpbmdSZXNwb25zaXZlWHhsTWljcm8gPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bFNtYWxsID0gNzI7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxNZWRpdW0gPSA4MDtcbmV4cG9ydCBjb25zdCBTYmJTcGFjaW5nUmVzcG9uc2l2ZVh4bExhcmdlID0gOTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxXaWRlID0gOTY7XG5leHBvcnQgY29uc3QgU2JiU3BhY2luZ1Jlc3BvbnNpdmVYeGxVbHRyYSA9IDEyMDtcbmV4cG9ydCBjb25zdCBTYmJUeXBvRm9udEZhbWlseSA9IFwiXFxcIlNCQlxcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvTGV0dGVyU3BhY2luZ1RpdGxlcyA9IFwiMFwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MZXR0ZXJTcGFjaW5nQm9keVRleHQgPSBcIjAuMDNlbVwiO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9MaW5lSGVpZ2h0VGl0bGVzID0gXCIxLjNcIjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvTGluZUhlaWdodEJvZHlUZXh0ID0gXCIxLjc1XCI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMDc1eCA9IDEyO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTA4MTI1eCA9IDEzO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTA4NzV4ID0gMTQ7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlRGVmYXVsdCA9IDE2O1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTExMjV4ID0gMTg7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMTI1eCA9IDIwO1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTE1eCA9IDI0O1xuZXhwb3J0IGNvbnN0IFNiYlR5cG9TY2FsZTJ4ID0gMzI7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlMjV4ID0gNDA7XG5leHBvcnQgY29uc3QgU2JiVHlwb1NjYWxlM3ggPSA0ODtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGUzNXggPSA1NjtcbmV4cG9ydCBjb25zdCBTYmJUeXBvU2NhbGU0eCA9IDY0O1xuIiwiaW1wb3J0IHtcbiAgU2JiQnJlYWtwb2ludFplcm9NaW4sXG4gIFNiYkJyZWFrcG9pbnRaZXJvTWF4LFxuICBTYmJCcmVha3BvaW50TWljcm9NaW4sXG4gIFNiYkJyZWFrcG9pbnRNaWNyb01heCxcbiAgU2JiQnJlYWtwb2ludFNtYWxsTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4sXG4gIFNiYkJyZWFrcG9pbnRNZWRpdW1NYXgsXG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1pbixcbiAgU2JiQnJlYWtwb2ludExhcmdlTWF4LFxuICBTYmJCcmVha3BvaW50V2lkZU1pbixcbiAgU2JiQnJlYWtwb2ludFdpZGVNYXgsXG4gIFNiYkJyZWFrcG9pbnRVbHRyYU1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWF4LFxuICBTYmJUeXBvU2NhbGVEZWZhdWx0LFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1kZXNpZ24tdG9rZW5zJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBldmVudE9wdGlvbnMsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgaG9zdENvbnRleHQgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ltYWdlLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWcge1xuICBicmVha3BvaW50czogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50IHtcbiAgaW1hZ2U6IHtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeSB7XG4gIGNvbmRpdGlvbkZlYXR1cmU6IHN0cmluZztcbiAgY29uZGl0aW9uRmVhdHVyZVZhbHVlOiB7XG4gICAgbHluZURlc2lnblRva2VuOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBmYWxzZTtcbn1cblxuLyoqXG4gKiB3ZSBjaGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1hbnVhbGx5LCBzbyBpdCdzIHNhZmUgdG8gdXNlIGBhbnlgIGFzIHJldHVybiB0eXBlXG4gKi9cbmNvbnN0IGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMgPSAoXG4gIGpzb25TdHJpbmc6IHN0cmluZyxcbik6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdID0+IHtcbiAgaWYgKCFqc29uU3RyaW5nIHx8IGpzb25TdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBgYnJlYWtwb2ludHNgIGtleSBpbiBvYmplY3RcbiAgY29uc3QgbG9nV2FybmluZyA9IGltcG9ydC5tZXRhLmVudi5ERVZcbiAgICA/ICgpID0+XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnc2JiLWltYWdlIGVycm9yOiBhdHRyaWJ1dGUgYnJlYWtwb2ludHMgaGFzIHdyb25nIGRhdGEgZm9ybWF0LiBSZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIGhvdyB5b3Ugc2hvdWxkIGZvcm1hdCB0aGUgZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUuJyxcbiAgICAgICAgKVxuICAgIDogbnVsbDtcbiAgbGV0IGpzb25PYmplY3Q6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnO1xuXG4gIHRyeSB7XG4gICAganNvbk9iamVjdCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmICghanNvbk9iamVjdC5icmVha3BvaW50cyB8fCBqc29uT2JqZWN0LmJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSBnZXQgYW4gYXJyYXkgb2YgYnJlYWtwb2ludHNcbiAgaWYgKCFBcnJheS5pc0FycmF5KGpzb25PYmplY3QuYnJlYWtwb2ludHMpKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIG1ha2Ugc3VyZSB0aGF0IGVhY2ggZW50cnkgd2l0aGluIHRoZSBicmVha3BvaW50cyBvYmplY3QgY29udGFpbnMgb25seSBhbGxvd2VkIGtleXNcbiAgICogMi4gbWFrZSBzdXJlIHRoYXQgYWxsIG5lY2Vzc2FyeSBrZXlzIGFyZSBwcmVzZW50XG4gICAqL1xuICBsZXQgd3JvbmdLZXlEZXRlY3RlZCA9IGZhbHNlO1xuICBsZXQgbWlzc2luZ0tleURldGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgYWxsb3dlZEtleXMgPSBbJ2ltYWdlJywgJ21lZGlhUXVlcmllcyddO1xuXG4gIGpzb25PYmplY3QuYnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludCkgPT4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRLZXlzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludCk7XG5cbiAgICBicmVha3BvaW50S2V5cy5mb3JFYWNoKChicmVha3BvaW50S2V5KSA9PiB7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmluY2x1ZGVzKGJyZWFrcG9pbnRLZXkpKSB7XG4gICAgICAgIHdyb25nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWxsb3dlZEtleXMuZm9yRWFjaCgoYWxsb3dlZEtleSkgPT4ge1xuICAgICAgaWYgKCFicmVha3BvaW50S2V5cy5pbmNsdWRlcyhhbGxvd2VkS2V5KSkge1xuICAgICAgICBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpZiAod3JvbmdLZXlEZXRlY3RlZCB8fCBtaXNzaW5nS2V5RGV0ZWN0ZWQpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4ganNvbk9iamVjdC5icmVha3BvaW50cztcbn07XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuY29uc3QgcHhUb1JlbSA9IChweDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIHB4IC8gU2JiVHlwb1NjYWxlRGVmYXVsdDtcbn07XG5cbmNvbnN0IGJyZWFrcG9pbnRNYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICdzYmItYnJlYWtwb2ludC16ZXJvLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFplcm9NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtemVyby1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRaZXJvTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LW1pY3JvLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1pY3JvTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LW1pY3JvLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1pY3JvTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXNtYWxsLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFNtYWxsTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXNtYWxsLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFNtYWxsTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LW1lZGl1bS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbWVkaXVtLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1heCksXG4gICdzYmItYnJlYWtwb2ludC1sYXJnZS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRMYXJnZU1pbiksXG4gICdzYmItYnJlYWtwb2ludC1sYXJnZS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRMYXJnZU1heCksXG4gICdzYmItYnJlYWtwb2ludC13aWRlLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFdpZGVNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtd2lkZS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRXaWRlTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXVsdHJhLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFVsdHJhTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXVsdHJhLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFVsdHJhTWF4KSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW1hZ2UuXG4gKlxuICogQGV2ZW50IHtFdmVudH0gbG9hZCAtIEVtaXRzIHdoZW4gdGhlIGltYWdlIGhhcyBiZWVuIGxvYWRlZC5cbiAqIEBldmVudCB7RXZlbnR9IGVycm9yIC0gRW1pdHMgd2hlbiB0aGUgaW1hZ2UgbG9hZGluZyBlbmRlZCBpbiBhbiBlcnJvci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1hc3BlY3QtcmF0aW89YXV0b10gLSBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSBgYXNwZWN0UmF0aW9gIHByb3BlcnR5LlxuICogVGhpcyB3YXkgd2UgY2FuIGhhdmUsIGZvciBleGFtcGxlLCBhbiBpbWFnZSBjb21wb25lbnQgd2l0aCBhbiBhc3BlY3RcbiAqIHJhdGlvIG9mIDQvMyBpbiBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgMTYvOSBpbiBsYXJnZXIgdmlld3BvcnRzLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLWJvcmRlci1yYWRpdXM9dmFyKC0tc2JiLWJvcmRlci1yYWRpdXMtNHgpXSAtIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZVxuICogYGJvcmRlclJhZGl1c2AgcHJvcGVydHkgaW4gY2FzZSBvZiBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZmZXJlbnQgdmlld3BvcnRzLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLW9iamVjdC1wb3NpdGlvbl0gLSBDYW4gYmUgdXNlZCB0byBzZXQgdGhlIG9iamVjdC1wb3NpdGlvbiBjc3MgcHJvcGVydHkgb2YgdGhlIGltYWdlIGl0c2VsZiBpZiB0aGUgaW1hZ2UgaXRzZWxmIGlzIGNyb3BwZWQuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItaW1hZ2UnKVxuZXhwb3J0IGNsYXNzIFNiYkltYWdlRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZXJyb3I6ICdlcnJvcicsXG4gICAgbG9hZDogJ2xvYWQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX2NhcHRpb25FbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2xpbmtzSW5DYXB0aW9uPzogTm9kZUxpc3RPZjxIVE1MTGlua0VsZW1lbnQ+O1xuICBwcml2YXRlIF9jb25maWcgPSB7XG4gICAgbm9uUmV0aW5hUXVhbGl0eTogJzQ1JyxcbiAgICByZXRpbmFRdWFsaXR5OiAnMjAnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBBbiBhbHQgdGV4dCBpcyBub3QgYWx3YXlzIG5lY2Vzc2FyeSAoZS5nLiBpbiB0ZWFzZXIgY2FyZHMgd2hlblxuICAgKiBhZGRpdGlvbmFsIGxpbmsgdGV4dCBpcyBwcm92aWRlZCkuIEluIHRoaXMgY2FzZSB3ZSBjYW4gbGVhdmVcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBhbHQgYXR0cmlidXRlIGJsYW5rLCBidXQgdGhlIGF0dHJpYnV0ZSBpdHNlbGZcbiAgICogc3RpbGwgbmVlZHMgdG8gYmUgcHJlc2VudC4gVGhhdCB3YXkgd2UgY2FuIHNpZ25hbCBhc3Npc3RpdmVcbiAgICogdGVjaG5vbG9neSwgdGhhdCB0aGV5IGNhbiBza2lwIHRoZSBpbWFnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhbHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byBmYWxzZSwgd2Ugc2hvdyBhIGJsdXJyZWQgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYXNcbiAgICogcGxhY2Vob2xkZXIgYmVmb3JlIHRoZSBhY3R1YWwgaW1hZ2Ugc2hvd3MgdXAuIFRoaXMgd2lsbCBoZWxwXG4gICAqIHRvIGltcHJvdmUgdGhlIHBlcmNlaXZlZCBsb2FkaW5nIHBlcmZvcm1hbmNlLiBSZWFkIG1vcmUgYWJvdXRcbiAgICogdGhlIGlkZWEgb2YgbHFpcCBoZXJlOlxuICAgKiBodHRwczovL21lZGl1bS5jb20vQGltZ2l4L2xxaXAteW91ci1pbWFnZXMtZm9yLWZhc3QtbG9hZGluZy0yNTIzZDllZTRhNjJcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NraXAtbHFpcCcsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIHNraXBMcWlwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgY2FwdGlvbiBjYW4gcHJvdmlkZSBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIGltYWdlIChlLmcuXG4gICAqIGRlc2NyaXB0aW9ucyBhbmQgdGhlIGxpa2UpLlxuICAgKiBMaW5rcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSB0YWJpbmRleD0tMSBpZiBoaWRlRnJvbVNjcmVlbnJlYWRlclxuICAgKiBpcyBzZXQgdG8gdHJ1ZS4gVGhhdCB3YXkgdGhleSB3aWxsIG5vIGxvbmdlciBiZWNvbWUgZm9jdXNhYmxlLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGNhcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGEgY29weXJpZ2h0IHRleHQgaXMgcHJvdmlkZWQsIHdlIHdpbGwgYWRkIGl0IHRvIHRoZSBjYXB0aW9uXG4gICAqIGFuZCBjcmVhdGUgYSBzdHJ1Y3R1cmVkIGRhdGEganNvbi1sZCBibG9jayB3aXRoIHRoZSBjb3B5cmlnaHRcbiAgICogaW5mb3JtYXRpb24uXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgY29weXJpZ2h0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb3B5cmlnaHQgaG9sZGVyIGNhbiBlaXRoZXIgYmUgYW4gT3JnYW5pemF0aW9uIG9yIGEgUGVyc29uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjb3B5cmlnaHQtaG9sZGVyJyB9KVxuICBwdWJsaWMgY29weXJpZ2h0SG9sZGVyOiAnT3JnYW5pemF0aW9uJyB8ICdQZXJzb24nID0gJ09yZ2FuaXphdGlvbic7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUsIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjdXN0b20gZm9jYWwgcG9pbnRcbiAgICogZm9yIHRoZSBpbWFnZS4gU2VlIGZ1bGwgZG9jdW1lbnRhdGlvbiBoZXJlOlxuICAgKiBodHRwczovL2RvY3MuaW1naXguY29tL2FwaXMvcmVuZGVyaW5nL2ZvY2FscG9pbnQtY3JvcFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY3VzdG9tLWZvY2FsLXBvaW50JywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgY3VzdG9tRm9jYWxQb2ludCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgbGF6eSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHlcbiAgICogY2hhbmdlIHRoZSBkZWNvZGluZyB0byBhc3luYywgb3RoZXJ3aXNlIHRoZSBkZWNvZGluZyBpcyBzZXQgdG8gYXV0b1xuICAgKiB3aGljaCBsZWF2ZXMgdGhlIGhhbmRsaW5nIHVwIHRvIHRoZSBicm93c2VyLiBSZWFkIG1vcmUgYWJvdXQgdGhlXG4gICAqIGRlY29kaW5nIGF0dHJpYnV0ZSBoZXJlOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEltYWdlRWxlbWVudC9kZWNvZGluZ1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGRlY29kaW5nOiAnc3luYycgfCAnYXN5bmMnIHwgJ2F1dG8nID0gJ2F1dG8nO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlLCB0byByZWNlaXZlIHZpc3VhbCBndWlkYW5jZSB3aGVyZSB0aGUgY3VzdG9tIGZvY2FsXG4gICAqIHBvaW50IGlzIGN1cnJlbnRseSBzZXQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC1kZWJ1ZycsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGZvY2FsUG9pbnREZWJ1ZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGEgZmxvYXRpbmcgbnVtYmVyIGJldHdlZW4gMCAobGVmdCkgYW5kIDEgKHJpZ2h0KS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXgnLCB0eXBlOiBOdW1iZXIgfSkgcHVibGljIGZvY2FsUG9pbnRYID0gMTtcblxuICAvKipcbiAgICogUGFzcyBpbiBhIGZsb2F0aW5nIG51bWJlciBiZXR3ZWVuIDAgKHRvcCkgYW5kIDEgKGJvdHRvbSkuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC15JywgdHlwZTogTnVtYmVyIH0pIHB1YmxpYyBmb2NhbFBvaW50WSA9IDE7XG5cbiAgLyoqXG4gICAqIFJpZ2h0IG5vdyB0aGUgbW9kdWxlIGlzIGhlYXZpbHkgY291cGxlZCB3aXRoIHRoZSBpbWFnZSBkZWxpdmVyeVxuICAgKiBzZXJ2aWNlIGltZ2l4IGFuZCBkZXBlbmRzIG9uIHRoZSBvcmlnaW5hbCBmaWxlcyBiZWluZyBzdG9yZWRcbiAgICogaW5zaWRlIEFFTS4gWW91IGNhbiBwYXNzIGluIGFueSBodHRwczovL2Nkbi5pbWcuc2JiLmNoIGltZ1xuICAgKiBzcmMgYWRkcmVzcyB5b3UgZmluZCBvbiBzYmIuY2ggdG8gcGxheSBhcm91bmQgd2l0aCBpdC4gSnVzdFxuICAgKiBzdHJpcCB0aGUgdXJsIHBhcmFtZXRlcnMgYW5kIHBhc3RlIGluIHRoZSBwbGFpbiBmaWxlIGFkZHJlc3MuXG4gICAqIElmIHlvdSB3YW50IHRvIGtub3cgaG93IHRvIGJlc3Qgd29yayB3aXRoIHRoaXMgbW9kdWxlIHdpdGhcbiAgICogaW1hZ2VzIGNvbWluZyBmcm9tIGEgZGlmZmVyZW50IHNvdXJjZSwgcGxlYXNlIGNvbnRhY3QgdGhlXG4gICAqIExZTkUgQ29yZSBUZWFtLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaW1hZ2Utc3JjJyB9KSBwdWJsaWMgaW1hZ2VTcmM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbXBvcnRhbmNlIGF0dHJpYnV0ZSBpcyBmYWlybHkgbmV3IGF0dHJpYnV0ZSB3aGljaCBzaG91bGRcbiAgICogaGVscCB0aGUgYnJvd3NlciBkZWNpZGUgd2hpY2ggcmVzb3VyY2VzIGl0IHNob3VsZCBwcmlvcml0aXNlXG4gICAqIGR1cmluZyBwYWdlIGxvYWQuIFdlIHdpbGwgc2V0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYmFzZWQgb24gdGhlXG4gICAqIHZhbHVlLCB3ZSByZWNlaXZlIGluIHRoZSBsb2FkaW5nIGF0dHJpYnV0ZS4gJ2VhZ2VyJywgd2hpY2ggd2UgdXNlXG4gICAqIGZvciB0aGUgbGFyZ2VzdCBpbWFnZSB3aXRoaW4gdGhlIGluaXRpYWwgdmlld3BvcnQsIHdpbGwgc2V0IHRoZVxuICAgKiBhdHRyaWJ1dGUgdmFsdWUgdG8gJ2hpZ2gnLiAnbGF6eScsIHdoaWNoIHdlIHVzZSBmb3IgaW1hZ2VzIGJlbG93XG4gICAqIHRoZSBmb2xkLCB3aWxsIHNldCB0aGUgYXR0cmlidXRlIHZhbHVlIHRvICdsb3cnLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGltcG9ydGFuY2U6ICdhdXRvJyB8ICdoaWdoJyB8ICdsb3cnID0gJ2hpZ2gnO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBzdXBwb3J0IG9mIG5hdGl2ZSBpbWFnZSBsYXp5IGxvYWRpbmcsIHdlIGNhbiBub3dcbiAgICogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBsb2FkIHRoZSBpbWFnZSBpbW1lZGlhdGVseSBvciBvbmx5XG4gICAqIG9uY2UgaXQgaXMgY2xvc2UgdG8gdGhlIHZpc2libGUgdmlld3BvcnQuIFRoZSB2YWx1ZSBlYWdlciBpc1xuICAgKiBiZXN0IHVzZWQgZm9yIGltYWdlcyB3aXRoaW4gdGhlIGluaXRpYWwgdmlld3BvcnQuIFdlIHdhbnQgdG9cbiAgICogbG9hZCB0aGVzZSBpbWFnZXMgYXMgZmFzdCBhcyBwb3NzaWJsZSB0byBpbXByb3ZlIHRoZSBDb3JlIFdlYlxuICAgKiBWaXRhbHMgdmFsdWVzLiBsYXp5IG9uIHRoZSBvdGhlciBoYW5kIHdvcmtzIGJlc3QgZm9yIGltYWdlc1xuICAgKiB3aGljaCBhcmUgZnVydGhlciBkb3duIHRoZSBwYWdlIG9yIGludmlzaWJsZSBkdXJpbmcgdGhlIGxvYWRpbmdcbiAgICogb2YgdGhlIGluaXRpYWwgdmlld3BvcnQuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgbG9hZGluZzogJ2VhZ2VyJyB8ICdsYXp5JyA9ICdlYWdlcic7XG5cbiAgLyoqXG4gICAqIFdpdGggcGVyZm9ybWFuY2UubWFyayB5b3UgY2FuIGxvZyBhIHRpbWVzdGFtcCBhc3NvY2lhdGVkIHdpdGhcbiAgICogdGhlIG5hbWUgeW91IGRlZmluZSBpbiBwZXJmb3JtYW5jZU1hcmsgd2hlbiBhIGNlcnRhaW4gZXZlbnQgaXNcbiAgICogaGFwcGVuaW5nLiBJbiBvdXIgY2FzZSB3ZSB3aWxsIGxvZyB0aGUgcGVyZm9ybWFuY2UubWFyayBpbnRvXG4gICAqIHRoZSBQZXJmb3JtYW5jZUVudHJ5IEFQSSBvbmNlIHRoZSBpbWFnZSBpcyBmdWxseSBsb2FkZWQuXG4gICAqIFBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdG9vbHMgbGlrZSBTcGVlZEN1cnZlIG9yIExpZ2h0aG91c2UgYXJlXG4gICAqIHRoZW4gYWJsZSB0byBncmFiIHRoZXNlIGVudHJpZXMgZnJvbSB0aGUgUGVyZm9ybWFuY2VFbnRyeSBBUElcbiAgICogYW5kIGdpdmUgdXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhbmQgaW5zaWdodHMgYWJvdXQgb3VyIHBhZ2VcbiAgICogbG9hZGluZyBiZWhhdmlvdXIuIFdlIGFyZSB0aGVuIGFsc28gYWJsZSB0byBtb25pdG9yIHRoZXNlXG4gICAqIHZhbHVlcyBvdmVyIGEgbG9uZyBwZXJpb2QgdG8gc2VlIGlmIG91ciBwZXJmb3JtYW5jZVxuICAgKiBpbmNyZWFzZXMgb3IgZGVjcmVhc2VzIG92ZXIgdGltZS4gQmVzdCB0byB1c2UgbG93ZXJjYXNlIHN0cmluZ3NcbiAgICogaGVyZSwgc2VwYXJhdGUgd29yZHMgd2l0aCB1bmRlcnNjb3JlcyBvciBkYXNoZXMuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwZXJmb3JtYW5jZS1tYXJrJyB9KSBwdWJsaWMgcGVyZm9ybWFuY2VNYXJrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBwaWN0dXJlU2l6ZXNDb25maWcgb2JqZWN0LCB5b3UgY2FuIHBhc3MgaW4gaW5mb3JtYXRpb25cbiAgICogaW50byBpbWFnZSBhYm91dCB3aGF0IGtpbmQgb2Ygc291cmNlIGVsZW1lbnRzIHNob3VsZCBnZXRcbiAgICogcmVuZGVyZWQuIG1lZGlhUXVlcmllcyBhY2NlcHRzIG11bHRpcGxlIE1lZGlhIFF1ZXJ5IGVudHJpZXNcbiAgICogd2hpY2ggY2FuIGdldCBjb21iaW5lZCBieSBkZWZpbmluZyBhIGNvbmRpdGlvbk9wZXJhdG9yLlxuICAgKiBUeXBlIGlzOiBzdHJpbmdpZmllZCBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZy1PYmplY3RcbiAgICogQW4gZXhhbXBsZSBjb3VsZCBsb29rIGxpa2UgdGhpczpcbiAgICoge1xuICAgKiAgICBcImJyZWFrcG9pbnRzXCI6IFtcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI2NzVcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjEyMDBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNTQ5XCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCI5NzZcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtc21hbGwtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTgwXCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCIzMjBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1heC13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4XCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogXCJhbmRcIlxuICAgKiAgICAgICAgICB9LFxuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwib3JpZW50YXRpb25cIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiBmYWxzZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJsYW5kc2NhcGVcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfVxuICAgKiAgICBdXG4gICAqICB9XG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwaWN0dXJlLXNpemVzLWNvbmZpZycgfSkgcHVibGljIHBpY3R1cmVTaXplc0NvbmZpZz86IHN0cmluZztcblxuICAvKipcbiAgICogQm9yZGVyIHJhZGl1cyBvZiB0aGUgaW1hZ2UuIENob29zZSBiZXR3ZWVuIGEgZGVmYXVsdCByYWRpdXMsIG5vIHJhZGl1cyBhbmQgYSBjb21wbGV0ZWx5IHJvdW5kIGltYWdlLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYm9yZGVyLXJhZGl1cycsIHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGJvcmRlclJhZGl1czpcbiAgICB8ICdkZWZhdWx0J1xuICAgIHwgJ25vbmUnXG4gICAgfCAncm91bmQnID0gJ2RlZmF1bHQnO1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gYXNwZWN0IHJhdGlvXG4gICAqIGRlZmF1bHQgaXMgJzE2LTknICgxNi85KVxuICAgKiBvdGhlciB2YWx1ZXM6ICdmcmVlJywgJzEtMScsICcxLTInLCAnMi0xJywgJzItMycsICczLTInLCAnMy00JywgJzQtMycsICc0LTUnLCAnNS00JywgJzktMTYnXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhc3BlY3QtcmF0aW8nLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhc3BlY3RSYXRpbzpcbiAgICB8ICdmcmVlJ1xuICAgIHwgJzEtMSdcbiAgICB8ICcxLTInXG4gICAgfCAnMi0xJ1xuICAgIHwgJzItMydcbiAgICB8ICczLTInXG4gICAgfCAnMy00J1xuICAgIHwgJzQtMydcbiAgICB8ICc0LTUnXG4gICAgfCAnNS00J1xuICAgIHwgJzktMTYnXG4gICAgfCAnMTYtOScgPSAnMTYtOSc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGltYWdlIGlzIGZpbmlzaGVkIGxvYWRpbmcgb3IgZmFpbGVkIHRvIGxvYWQuICovXG4gIHB1YmxpYyBnZXQgY29tcGxldGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3Rvcj8uPEhUTUxJbWFnZUVsZW1lbnQ+KCcuc2JiLWltYWdlX19pbWcnKT8uY29tcGxldGUgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIG5lc3RlZCBpbiBhbiBgPHNiYi10ZWFzZXItaGVybz5gIGVsZW1lbnQgb24gaW4gYW4gYDxzYmItdGVhc2VyLXBhaWQ+YCBlbGVtZW50LlxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtdGVhc2VyJyxcbiAgICAgICEhaG9zdENvbnRleHQoJ3NiYi10ZWFzZXItaGVybycsIHRoaXMpIHx8ICEhdGhpcy5jbG9zZXN0KCdzYmItdGVhc2VyLXBhaWQnKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuX2NhcHRpb25FbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbGlua3NJbkNhcHRpb24gPSB0aGlzLl9jYXB0aW9uRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxMaW5rRWxlbWVudD4oJ2EnKTtcblxuICAgIGlmICghdGhpcy5fbGlua3NJbkNhcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hZGRGb2N1c0FiaWxpdHlUb0xpbmtzSW5DYXB0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlbHkgbG9hZGVkLlxuICAgIGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7XG4gICAgaWYgKHRoaXMuY29tcGxldGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xvZ1BlcmZvcm1hbmNlTWFya3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGVyZm9ybWFuY2VNYXJrKSB7XG4gICAgICBwZXJmb3JtYW5jZS5jbGVhck1hcmtzKHRoaXMucGVyZm9ybWFuY2VNYXJrKTtcbiAgICAgIHBlcmZvcm1hbmNlLm1hcmsodGhpcy5wZXJmb3JtYW5jZU1hcmspO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX21hdGNoTWVkaWFRdWVyeURlc2lnblRva2VuKGJyZWFrcG9pbnRTaXplTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IGJyZWFrcG9pbnRNYXBbYnJlYWtwb2ludFNpemVOYW1lXTtcbiAgICByZXR1cm4gdmFsdWUgPyBgJHt2YWx1ZX1yZW1gIDogJyc7XG4gIH1cblxuICBwcml2YXRlIF9hZGRGb2N1c0FiaWxpdHlUb0xpbmtzSW5DYXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpbmtzSW5DYXB0aW9uPy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICBsaW5rLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVJbWFnZVVybChiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsIGxxdWlwID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICghYmFzZVVybCB8fCBiYXNlVXJsID09PSAnJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIENyZWF0aW5nIGFuIFVSTCB3aXRob3V0IGEgc2NoZW1hIHdpbGwgZmFpbCwgYnV0IGlzIGEgdmFsaWQgaW5wdXQgZm9yIGJhc2VVcmwuXG4gICAgLy8gZS5nLiBpbWFnZS1zcmMgY2FuIGJlIGh0dHBzOi8vZXhhbXBsZS5jb20vbXktaW1hZ2UucG5nIG9yIC9teS1pbWFnZS5wbmdcbiAgICBjb25zdCBpc0Z1bGx5UXVhbGlmaWVkVXJsID0gISFiYXNlVXJsLm1hdGNoKC9eXFx3KzpcXC9cXC8vKTtcbiAgICBjb25zdCBpbWFnZVVybE9iaiA9IGlzRnVsbHlRdWFsaWZpZWRVcmwgPyBuZXcgVVJMKGJhc2VVcmwpIDogbmV3IFVSTChgaHR0cDovL25vb3AvJHtiYXNlVXJsfWApO1xuXG4gICAgaWYgKGxxdWlwKSB7XG4gICAgICAvLyBibHVyIGFuZCBzaXplOiA/Ymx1cj0xMDAmdz0xMDAmaD01NlxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnYmx1cicsICcxMDAnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ3cnLCAnMTAwJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdoJywgJzU2Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENETiBJbmZvcm1hdGlvbjogaHR0cHM6Ly9kb2NzLmltZ2l4LmNvbS9hcGlzL3JlbmRlcmluZ1xuICAgICAgLy8gcGFyYW0uYXV0bzogP2F1dG89Zm9ybWF0LGNvbXByZXNzLGNzPXRpbnlzcmdiXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdhdXRvJywgJ2Zvcm1hdCxjb21wcmVzcyxjcz10aW55c3JnYicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1c3RvbUZvY2FsUG9pbnQpIHtcbiAgICAgIC8vIGNyb3A6IGAmZml0PWNyb3AmY3JvcD1mb2NhbHBvaW50JmZwLXg9JHt0aGlzLmZvY2FsUG9pbnRYfSZmcC15PSR7dGhpcy5mb2NhbFBvaW50WX0mZnAtej0xYCxcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZpdCcsICdjcm9wJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdjcm9wJywgJ2ZvY2FscG9pbnQnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXgnLCB0aGlzLmZvY2FsUG9pbnRYLnRvU3RyaW5nKDEwKSk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC15JywgdGhpcy5mb2NhbFBvaW50WS50b1N0cmluZygxMCkpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteicsICcxJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9jYWxQb2ludERlYnVnKSB7XG4gICAgICAvLyBmb2NhbFBvaW50RGVidWc6ICcmZnAtZGVidWc9dHJ1ZSdcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLWRlYnVnJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIFwibm9vcFwiIGhvc3QsIHdlIGRvbid0IHJldHVybiB0aGUgaG9zdCBhbmQgbXVzdCByZW1vdmUgdGhlXG4gICAgLy8gc3RhcnRpbmcgYC9gIG9mIHRoZSBwYXRobmFtZS5cbiAgICByZXR1cm4gaXNGdWxseVF1YWxpZmllZFVybFxuICAgICAgPyBpbWFnZVVybE9iai5ocmVmXG4gICAgICA6IGltYWdlVXJsT2JqLnBhdGhuYW1lLnN1YnN0cmluZygxKSArIGltYWdlVXJsT2JqLnNlYXJjaDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVQaWN0dXJlU2l6ZUNvbmZpZ3MoKTogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W10ge1xuICAgIGxldCBwaWN0dXJlU2l6ZXNDb25maWc7XG5cbiAgICBpZiAodGhpcy5waWN0dXJlU2l6ZXNDb25maWcpIHtcbiAgICAgIHBpY3R1cmVTaXplc0NvbmZpZyA9IHRoaXMucGljdHVyZVNpemVzQ29uZmlnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWZhdWx0IGNvbmZpZ1xuICAgICAgcGljdHVyZVNpemVzQ29uZmlnID0gYHtcbiAgICAgICAgXCJicmVha3BvaW50c1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDY3NSxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1sYXJnZS1taW5cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogNTQ5LFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDk3NlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtc21hbGwtbWluXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDE4MCxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiAzMjBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtYXgtd2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LW1pY3JvLW1heFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbWFnZUhlbHBlckdldEJyZWFrcG9pbnRzKHBpY3R1cmVTaXplc0NvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKFxuICAgIG1lZGlhUXVlcmllczogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5W10sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IG1lZGlhUXVlcnkgPSAnJztcblxuICAgIG1lZGlhUXVlcmllcy5mb3JFYWNoKChtcSkgPT4ge1xuICAgICAgY29uc3QgbXFDb25kaXRpb24gPSBtcS5jb25kaXRpb25GZWF0dXJlO1xuICAgICAgbGV0IG1xVmFsdWU7XG5cbiAgICAgIGlmIChtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUubHluZURlc2lnblRva2VuKSB7XG4gICAgICAgIG1xVmFsdWUgPSB0aGlzLl9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXFWYWx1ZSA9IG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXFDb21iaW5lciA9IG1xLmNvbmRpdGlvbk9wZXJhdG9yID8gYCAke21xLmNvbmRpdGlvbk9wZXJhdG9yfSBgIDogJyc7XG5cbiAgICAgIG1lZGlhUXVlcnkgKz0gYCgke21xQ29uZGl0aW9ufTogJHttcVZhbHVlfSkke21xQ29tYmluZXJ9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZWRpYVF1ZXJ5O1xuICB9XG5cbiAgQGV2ZW50T3B0aW9ucyhldmVudExpc3RlbmVyT3B0aW9ucylcbiAgcHJpdmF0ZSBfaW1hZ2VMb2FkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9nUGVyZm9ybWFuY2VNYXJrcygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2xvYWQnKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBsZXQgeyBjYXB0aW9uIH0gPSB0aGlzO1xuICAgIGxldCBzY2hlbWFEYXRhID0gJyc7XG5cbiAgICBjb25zdCBpbWFnZVVybExRSVAgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgdHJ1ZSk7XG4gICAgY29uc3QgaW1hZ2VVcmxXaXRoUGFyYW1zID0gdGhpcy5fcHJlcGFyZUltYWdlVXJsKHRoaXMuaW1hZ2VTcmMsIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLmxvYWRpbmcgPT09ICdsYXp5Jykge1xuICAgICAgdGhpcy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICB0aGlzLmltcG9ydGFuY2UgPSAnbG93JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb3B5cmlnaHQpIHtcbiAgICAgIGNhcHRpb24gPSBgJHt0aGlzLmNhcHRpb259IMKpJHt0aGlzLmNvcHlyaWdodH1gO1xuICAgICAgc2NoZW1hRGF0YSA9IGB7XG4gICAgICAgIFwiQGNvbnRleHRcIjogXCJodHRwczovL3NjaGVtYS5vcmdcIixcbiAgICAgICAgXCJAdHlwZVwiOiBcIlBob3RvZ3JhcGhcIixcbiAgICAgICAgXCJpbWFnZVwiOiBcIiR7dGhpcy5pbWFnZVNyY31cIixcbiAgICAgICAgXCJjb3B5cmlnaHRIb2xkZXJcIjoge1xuICAgICAgICAgIFwiQHR5cGVcIjogXCIke3RoaXMuY29weXJpZ2h0SG9sZGVyfVwiLFxuICAgICAgICAgIFwibmFtZVwiOiBcIiR7dGhpcy5jb3B5cmlnaHR9XCJcbiAgICAgICAgfVxuICAgICAgfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcGljdHVyZVNpemVDb25maWdzID0gdGhpcy5fcHJlcGFyZVBpY3R1cmVTaXplQ29uZmlncygpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFsdCBhdHRyaWJ1dGUgc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50IGZvciB0aGUgaW1nIGVsZW1lbnQuXG4gICAgICogSWYgaXQgaGFzIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgdmFsdWUsIGl0IGlzIHNpbXBseSBpZ25vcmVkXG4gICAgICogYnkgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4gSWYgd2UgbGVhdmUgaXQgb3V0IGNvbXBsZXRlbHksXG4gICAgICogdGhleSBtaWdodCB0cnkgdG8gaW50ZXJwcmV0IHRoZSBpbWcgZWxlbWVudC5cbiAgICAgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxmaWd1cmUgY2xhc3M9XCJzYmItaW1hZ2VfX2ZpZ3VyZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWltYWdlX193cmFwcGVyXCI+XG4gICAgICAgICAgJHshdGhpcy5za2lwTHFpcFxuICAgICAgICAgICAgPyBodG1sYDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19ibHVycmVkXCJcbiAgICAgICAgICAgICAgICBzcmM9JHtpbWFnZVVybExRSVB9XG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NjJcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9JHt0aGlzLmxvYWRpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgLz5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgIDwhLS0gcmVuZGVyIHBpY3R1cmUgZWxlbWVudCBzb3VyY2VzIC0tPlxuICAgICAgICAgICAgJHtwaWN0dXJlU2l6ZUNvbmZpZ3MubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBjb25maWcuaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICBjb25zdCBpbWFnZVdpZHRoID0gY29uZmlnLmltYWdlLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fY3JlYXRlTWVkaWFRdWVyeVN0cmluZyhjb25maWcubWVkaWFRdWVyaWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBodG1sYCA8c291cmNlXG4gICAgICAgICAgICAgICAgICBtZWRpYT0ke2Ake21lZGlhUXVlcnl9YH1cbiAgICAgICAgICAgICAgICAgIHNpemVzPSR7YCR7aW1hZ2VXaWR0aH1weGB9XG4gICAgICAgICAgICAgICAgICBzcmNzZXQ9JHtcbiAgICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aH0maD0ke2ltYWdlSGVpZ2h0fSZxPSR7dGhpcy5fY29uZmlnLm5vblJldGluYVF1YWxpdHl9ICR7aW1hZ2VXaWR0aH13LCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aCAqIDJ9Jmg9JHtpbWFnZUhlaWdodCAqIDJ9JnE9JHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25maWcucmV0aW5hUXVhbGl0eVxuICAgICAgICAgICAgICAgICAgICB9ICR7aW1hZ2VXaWR0aCAqIDJ9d2BcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+PC9zb3VyY2U+YCxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBhbHQ9JHt0aGlzLmFsdCB8fCAnJ31cbiAgICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLl9pbWFnZUxvYWRlZH1cbiAgICAgICAgICAgICAgQGVycm9yPSR7KCkgPT4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZXJyb3InKSl9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19pbWdcIlxuICAgICAgICAgICAgICBzcmM9JHt0aGlzLmltYWdlU3JjIX1cbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgLmZldGNoUHJpb3JpdHk9JHt0aGlzLmltcG9ydGFuY2UgPz8gbm90aGluZ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgJHtjYXB0aW9uXG4gICAgICAgICAgPyBodG1sYDxmaWdjYXB0aW9uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19jYXB0aW9uXCJcbiAgICAgICAgICAgICAgLmlubmVySFRNTD0ke2NhcHRpb259XG4gICAgICAgICAgICAgICR7cmVmKChlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcHRpb25FbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPjwvZmlnY2FwdGlvbj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3NjaGVtYURhdGFcbiAgICAgICAgICA/IGh0bWxgPHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb24vbGQranNvblwiIC5pbm5lckhUTUw9JHtzY2hlbWFEYXRhfT48L3NjcmlwdD5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9maWd1cmU+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWltYWdlJzogU2JiSW1hZ2VFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7QUFzQk8sTUFBTSx1QkFBdUI7QUFDN0IsTUFBTSx1QkFBdUI7QUFDN0IsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSx5QkFB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QUFwRSxTQUFTLEVBQUUsV0FBVyxzQkFBc0IsTUFBTSxTQUFTO0FBQUEsR0ExRGpELGdCQTBEMEQsV0FBQSxvQkFBQSxDQUFBO0FBU2xELGdCQUFBO0FBQUEsRUFBbEIsU0FBUztBQUFBLEdBbkVDLGdCQW1FUSxXQUFBLFlBQUEsQ0FBQTtBQU1pRCxnQkFBQTtBQUFBLEVBQW5FLFNBQVMsRUFBRSxXQUFXLHFCQUFxQixNQUFNLFNBQVM7QUFBQSxHQXpFaEQsZ0JBeUV5RCxXQUFBLG1CQUFBLENBQUE7QUFLTCxnQkFBQTtBQUFBLEVBQTlELFNBQVMsRUFBRSxXQUFXLGlCQUFpQixNQUFNLFFBQVE7QUFBQSxHQTlFM0MsZ0JBOEVvRCxXQUFBLGVBQUEsQ0FBQTtBQUtBLGdCQUFBO0FBQUEsRUFBOUQsU0FBUyxFQUFFLFdBQVcsaUJBQWlCLE1BQU0sUUFBUTtBQUFBLEdBbkYzQyxnQkFtRm9ELFdBQUEsZUFBQSxDQUFBO0FBWWxCLGdCQUFBO0FBQUEsRUFBNUMsU0FBUyxFQUFFLFdBQVcsYUFBYTtBQUFBLEdBL0Z6QixnQkErRmtDLFdBQUEsWUFBQSxDQUFBO0FBVzFCLGdCQUFBO0FBQUEsRUFBbEIsU0FBUztBQUFBLEdBMUdDLGdCQTBHUSxXQUFBLGNBQUEsQ0FBQTtBQVlBLGdCQUFBO0FBQUEsRUFBbEIsU0FBUztBQUFBLEdBdEhDLGdCQXNIUSxXQUFBLFdBQUEsQ0FBQTtBQWVpQyxnQkFBQTtBQUFBLEVBQW5ELFNBQVMsRUFBRSxXQUFXLG9CQUFvQjtBQUFBLEdBckloQyxnQkFxSXlDLFdBQUEsbUJBQUEsQ0FBQTtBQXNFSSxnQkFBQTtBQUFBLEVBQXZELFNBQVMsRUFBRSxXQUFXLHdCQUF3QjtBQUFBLEdBM01wQyxnQkEyTTZDLFdBQUEsc0JBQUEsQ0FBQTtBQUtRLGdCQUFBO0FBQUEsRUFBL0QsU0FBUyxFQUFFLFdBQVcsaUJBQWlCLFNBQVMsTUFBTTtBQUFBLEdBaE41QyxnQkFnTnFELFdBQUEsZ0JBQUEsQ0FBQTtBQVd6RCxnQkFBQTtBQUFBLEVBRE4sU0FBUyxFQUFFLFdBQVcsZ0JBQWdCLFNBQVMsTUFBTTtBQUFBLEdBMU4zQyxnQkEyTkosV0FBQSxlQUFBLENBQUE7QUEwTUMsZ0JBQUE7QUFBQSxFQURQLGFBQWEsb0JBQW9CO0FBQUEsR0FwYXZCLGdCQXFhSCxXQUFBLGdCQUFBLENBQUE7QUFyYUcsa0JBQU4sZ0JBQUE7QUFBQSxFQUROLGNBQWMsV0FBVztBQUFBLEdBQ2IsZUFBQTsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
2
  import { SbbTitleLevel } from '../title.js';
3
-
4
3
  export type JourneyHeaderSize = 's' | 'm' | 'l';
5
4
  declare const SbbJourneyHeaderElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbNegativeMixinType> & typeof LitElement;
6
5
  /**
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
2
-
3
2
  /**
4
3
  * The `sbb-lead-container` can be used for product pages to display a lead image and following content.
5
4
  *
@@ -88,13 +88,13 @@ const style = css`/**
88
88
  }
89
89
 
90
90
  .sbb-lead-container-content-wrapper {
91
+ background-color: var(--sbb-lead-container-background-color);
91
92
  display: grid;
92
93
  gap: var(--sbb-grid-base-gutter-responsive);
93
94
  grid-template-columns: repeat(var(--sbb-grid-base-columns), 1fr);
94
95
  padding-inline: var(--sbb-layout-base-offset-responsive);
95
96
  margin-inline: auto;
96
97
  width: 100%;
97
- background-color: var(--sbb-lead-container-background-color);
98
98
  }
99
99
  @media (min-width: calc(90rem)) {
100
100
  .sbb-lead-container-content-wrapper {
@@ -1,5 +1,4 @@
1
1
  import { SbbLinkBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbBlockLinkElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbBlockLinkCommonElementMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & typeof SbbLinkBaseElement;
4
3
  /**
5
4
  * It displays a link enhanced with the SBB Design.
@@ -1,5 +1,4 @@
1
1
  import { SbbButtonBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbBlockLinkButtonElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbBlockLinkCommonElementMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & typeof SbbButtonBaseElement;
4
3
  /**
5
4
  * It displays a link enhanced with the SBB Design, which will behave as a button.
@@ -1,5 +1,4 @@
1
1
  import { SbbActionBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbBlockLinkStaticElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbBlockLinkCommonElementMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & typeof SbbActionBaseElement;
4
3
  /**
5
4
  * It displays a static link enhanced with the SBB Design.
@@ -2,7 +2,6 @@ import { SbbActionBaseElement } from '../../core/base-elements.js';
2
2
  import { SbbIconPlacement } from '../../core/interfaces.js';
3
3
  import { AbstractConstructor } from '../../core/mixins.js';
4
4
  import { SbbLinkCommonElementMixinType } from './link-common.js';
5
-
6
5
  export declare class SbbBlockLinkCommonElementMixinType extends SbbLinkCommonElementMixinType {
7
6
  iconName?: string;
8
7
  iconPlacement?: SbbIconPlacement;
@@ -1,7 +1,6 @@
1
1
  import { SbbActionBaseElement } from '../../core/base-elements.js';
2
2
  import { AbstractConstructor } from '../../core/mixins.js';
3
3
  import { SbbLinkCommonElementMixinType } from './link-common.js';
4
-
5
4
  export declare class SbbInlineLinkCommonElementMixinType extends SbbLinkCommonElementMixinType {
6
5
  }
7
6
  export declare const SbbInlineLinkCommonElementMixin: <T extends AbstractConstructor<SbbActionBaseElement>>(superClass: T) => AbstractConstructor<SbbInlineLinkCommonElementMixinType> & T;
@@ -1,6 +1,5 @@
1
1
  import { SbbActionBaseElement } from '../../core/base-elements.js';
2
2
  import { SbbNegativeMixinType, AbstractConstructor } from '../../core/mixins.js';
3
-
4
3
  export type SbbLinkSize = 'xs' | 's' | 'm';
5
4
  export declare class SbbLinkCommonElementMixinType extends SbbNegativeMixinType {
6
5
  size?: SbbLinkSize;
@@ -46,6 +46,13 @@ const style = css`/**
46
46
  color: var(--sbb-link-color-normal);
47
47
  text-decoration: var(--sbb-link-text-decoration, underline);
48
48
  user-select: none;
49
+ }
50
+ @media (forced-colors: active) {
51
+ .sbb-action-base {
52
+ text-decoration: underline;
53
+ }
54
+ }
55
+ .sbb-action-base {
49
56
  display: flex;
50
57
  align-items: center;
51
58
  word-break: break-word;
@@ -54,11 +61,6 @@ const style = css`/**
54
61
  padding: var(--sbb-link-padding, 0);
55
62
  outline: none;
56
63
  }
57
- @media (forced-colors: active) {
58
- .sbb-action-base {
59
- text-decoration: underline;
60
- }
61
- }
62
64
  :host([disabled]) .sbb-action-base {
63
65
  pointer-events: none;
64
66
  cursor: default;
@@ -76,7 +78,7 @@ const style = css`/**
76
78
  @media (any-hover: hover) {
77
79
  :host(:hover:not([disabled])) .sbb-action-base {
78
80
  color: var(--sbb-link-color-hover);
79
- text-decoration: underline;
81
+ text-decoration: var(--sbb-link-hover-text-decoration, underline);
80
82
  }
81
83
  }
82
84
  :host(:is(:active, [data-active]):not([disabled])) .sbb-action-base {
@@ -283,4 +285,4 @@ export {
283
285
  SbbInlineLinkCommonElementMixin,
284
286
  SbbLinkCommonElementMixin
285
287
  };
286
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbGluay9jb21tb24vbGluay1jb21tb24udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbGluay9jb21tb24vYmxvY2stbGluay1jb21tb24udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbGluay9jb21tb24vaW5saW5lLWxpbmstY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMsIHNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQge1xuICBTYmJOZWdhdGl2ZU1peGluLFxuICB0eXBlIFNiYk5lZ2F0aXZlTWl4aW5UeXBlLFxuICB0eXBlIEFic3RyYWN0Q29uc3RydWN0b3IsXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbGluay5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJMaW5rU2l6ZSA9ICd4cycgfCAncycgfCAnbSc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlIGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpblR5cGUge1xuICBwdWJsaWMgc2l6ZT86IFNiYkxpbmtTaXplO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJBY3Rpb25CYXNlRWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgQGhvc3RBdHRyaWJ1dGVzKHsgJ2RhdGEtc2JiLWxpbmsnOiAnJyB9KVxuICBAc2xvdFN0YXRlKClcbiAgYWJzdHJhY3QgY2xhc3MgU2JiTGlua0NvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAgIC8qKlxuICAgICAqIFRleHQgc2l6ZSwgdGhlIGxpbmsgc2hvdWxkIGdldCBpbiB0aGUgbm9uLWJ1dHRvbiB2YXJpYXRpb24uXG4gICAgICogV2l0aCBpbmxpbmUgdmFyaWFudCwgdGhlIHRleHQgc2l6ZSBhZGFwdHMgdG8gd2hlcmUgaXQgaXMgdXNlZC5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBzaXplOiBTYmJMaW5rU2l6ZSA9ICdzJztcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkxpbmtDb21tb25FbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJJY29uUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcblxuaW1wb3J0IHsgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbiwgdHlwZSBTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSB9IGZyb20gJy4vbGluay1jb21tb24uanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L29yZGVyXG5pbXBvcnQgYmxvY2tTdHlsZSBmcm9tICcuL2Jsb2NrLWxpbmsuc2Nzcz9saXQmaW5saW5lJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2xpbmsuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiQmxvY2tMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlIHtcbiAgcHVibGljIGljb25OYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgaWNvblBsYWNlbWVudD86IFNiYkljb25QbGFjZW1lbnQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJCbG9ja0xpbmtDb21tb25FbGVtZW50TWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiQWN0aW9uQmFzZUVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiQmxvY2tMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiQmxvY2tMaW5rQ29tbW9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbihTYmJJY29uTmFtZU1peGluKHN1cGVyQ2xhc3MpKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJCbG9ja0xpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlPlxuICB7XG4gICAgcHVibGljIHN0YXRpYyBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3N0eWxlLCBibG9ja1N0eWxlXTtcblxuICAgIC8qKiBNb3ZlcyB0aGUgaWNvbiB0byB0aGUgZW5kIG9mIHRoZSBjb21wb25lbnQgaWYgc2V0IHRvIHRydWUuICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaWNvbi1wbGFjZW1lbnQnLCByZWZsZWN0OiB0cnVlIH0pXG4gICAgcHVibGljIGljb25QbGFjZW1lbnQ/OiBTYmJJY29uUGxhY2VtZW50ID0gJ3N0YXJ0JztcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItbGlua19faWNvblwiPiAke3N1cGVyLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkJsb2NrTGlua0NvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkJsb2NrTGlua0NvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkFjdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcblxuaW1wb3J0IHsgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbiwgdHlwZSBTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSB9IGZyb20gJy4vbGluay1jb21tb24uanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L29yZGVyXG5pbXBvcnQgaW5saW5lU3R5bGUgZnJvbSAnLi9pbmxpbmUtbGluay5zY3NzP2xpdCZpbmxpbmUnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vbGluay5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJJbmxpbmVMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlIHt9XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJJbmxpbmVMaW5rQ29tbW9uRWxlbWVudE1peGluID0gPFxuICBUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJBY3Rpb25CYXNlRWxlbWVudD4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJJbmxpbmVMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiSW5saW5lTGlua0NvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiSW5saW5lTGlua0NvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbc3R5bGUsIGlubGluZVN0eWxlXTtcbiAgfVxuICByZXR1cm4gU2JiSW5saW5lTGlua0NvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYklubGluZUxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOlsiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJhLE1BQUEsNEJBQTRCLENBQ3ZDLGVBQzJEO0FBRzNELE1BQWUsdUJBQWYsY0FDVSxpQkFBaUIsVUFBVSxFQUVyQztBQUFBLElBSEEsY0FBQTtBQUFBLFlBQUEsR0FBQSxTQUFBO0FBVStCLFdBQU8sT0FBb0I7QUFBQSxJQUFBO0FBQUEsSUFFckMsaUJBQWlDO0FBQzNDLGFBQUE7QUFBQSxJQUNUO0FBQUEsRUFBQTtBQWRhLHVCQUlDLFNBQXlCO0FBTUhBLG9CQUFBO0FBQUEsSUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEVBQUEsR0FWZCxxQkFVdUIsV0FBQSxRQUFBLENBQUE7QUFWdEMseUJBQUFBLGtCQUFBO0FBQUEsSUFGQyxlQUFlLEVBQUUsaUJBQWlCLElBQUk7QUFBQSxJQUN0QyxVQUFVO0FBQUEsRUFDSSxHQUFBLG9CQUFBO0FBZ0JSLFNBQUE7QUFDVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QmEsTUFBQSxpQ0FBaUMsQ0FDNUMsZUFDZ0U7QUFDaEUsUUFBZSw2QkFBZixNQUFlLG1DQUNMLDBCQUEwQixpQkFBaUIsVUFBVSxDQUFDLEVBRWhFO0FBQUEsSUFIQSxjQUFBO0FBQUEsWUFBQSxHQUFBLFNBQUE7QUFRRSxXQUFPLGdCQUFtQztBQUFBLElBQUE7QUFBQSxJQUV2QixpQkFBaUM7QUFDM0MsYUFBQTtBQUFBLHdDQUMyQixNQUFNLGdCQUFnQjtBQUFBO0FBQUE7QUFBQSxJQUcxRDtBQUFBLEVBQ0Y7QUFaZ0IsNkJBQUEsU0FBeUIsQ0FBQyxPQUFPLFVBQVU7QUFKM0QsTUFBZSw0QkFBZjtBQVFTLGtCQUFBO0FBQUEsSUFETixTQUFTLEVBQUUsV0FBVyxrQkFBa0IsU0FBUyxNQUFNO0FBQUEsRUFBQSxHQVAzQywwQkFRTixXQUFBLGVBQUE7QUFTRixTQUFBO0FBRVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QmEsTUFBQSxrQ0FBa0MsQ0FHN0MsZUFDaUU7QUFDakUsUUFBZSw4QkFBZixNQUFlLG9DQUNMLDBCQUEwQixVQUFVLEVBRTlDO0FBQUEsRUFFQTtBQURnQiw4QkFBQSxTQUF5QixDQUFDLE9BQU8sV0FBVztBQUo1RCxNQUFlLDZCQUFmO0FBTU8sU0FBQTtBQUVUOyJ9
288
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbGluay9jb21tb24vbGluay1jb21tb24udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbGluay9jb21tb24vYmxvY2stbGluay1jb21tb24udHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbGluay9jb21tb24vaW5saW5lLWxpbmstY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMsIHNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQge1xuICBTYmJOZWdhdGl2ZU1peGluLFxuICB0eXBlIFNiYk5lZ2F0aXZlTWl4aW5UeXBlLFxuICB0eXBlIEFic3RyYWN0Q29uc3RydWN0b3IsXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbGluay5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJMaW5rU2l6ZSA9ICd4cycgfCAncycgfCAnbSc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlIGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpblR5cGUge1xuICBwdWJsaWMgc2l6ZT86IFNiYkxpbmtTaXplO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJBY3Rpb25CYXNlRWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgQGhvc3RBdHRyaWJ1dGVzKHsgJ2RhdGEtc2JiLWxpbmsnOiAnJyB9KVxuICBAc2xvdFN0YXRlKClcbiAgYWJzdHJhY3QgY2xhc3MgU2JiTGlua0NvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAgIC8qKlxuICAgICAqIFRleHQgc2l6ZSwgdGhlIGxpbmsgc2hvdWxkIGdldCBpbiB0aGUgbm9uLWJ1dHRvbiB2YXJpYXRpb24uXG4gICAgICogV2l0aCBpbmxpbmUgdmFyaWFudCwgdGhlIHRleHQgc2l6ZSBhZGFwdHMgdG8gd2hlcmUgaXQgaXMgdXNlZC5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBzaXplOiBTYmJMaW5rU2l6ZSA9ICdzJztcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkxpbmtDb21tb25FbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJJY29uUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcblxuaW1wb3J0IHsgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbiwgdHlwZSBTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSB9IGZyb20gJy4vbGluay1jb21tb24uanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L29yZGVyXG5pbXBvcnQgYmxvY2tTdHlsZSBmcm9tICcuL2Jsb2NrLWxpbmsuc2Nzcz9saXQmaW5saW5lJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2xpbmsuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiQmxvY2tMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlIHtcbiAgcHVibGljIGljb25OYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgaWNvblBsYWNlbWVudD86IFNiYkljb25QbGFjZW1lbnQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJCbG9ja0xpbmtDb21tb25FbGVtZW50TWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiQWN0aW9uQmFzZUVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiQmxvY2tMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiQmxvY2tMaW5rQ29tbW9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbihTYmJJY29uTmFtZU1peGluKHN1cGVyQ2xhc3MpKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJCbG9ja0xpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlPlxuICB7XG4gICAgcHVibGljIHN0YXRpYyBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3N0eWxlLCBibG9ja1N0eWxlXTtcblxuICAgIC8qKiBNb3ZlcyB0aGUgaWNvbiB0byB0aGUgZW5kIG9mIHRoZSBjb21wb25lbnQgaWYgc2V0IHRvIHRydWUuICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaWNvbi1wbGFjZW1lbnQnLCByZWZsZWN0OiB0cnVlIH0pXG4gICAgcHVibGljIGljb25QbGFjZW1lbnQ/OiBTYmJJY29uUGxhY2VtZW50ID0gJ3N0YXJ0JztcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItbGlua19faWNvblwiPiAke3N1cGVyLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkJsb2NrTGlua0NvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkJsb2NrTGlua0NvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkFjdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcblxuaW1wb3J0IHsgU2JiTGlua0NvbW1vbkVsZW1lbnRNaXhpbiwgdHlwZSBTYmJMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSB9IGZyb20gJy4vbGluay1jb21tb24uanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L29yZGVyXG5pbXBvcnQgaW5saW5lU3R5bGUgZnJvbSAnLi9pbmxpbmUtbGluay5zY3NzP2xpdCZpbmxpbmUnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vbGluay5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJJbmxpbmVMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlIHt9XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJJbmxpbmVMaW5rQ29tbW9uRWxlbWVudE1peGluID0gPFxuICBUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJBY3Rpb25CYXNlRWxlbWVudD4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJJbmxpbmVMaW5rQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiSW5saW5lTGlua0NvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkxpbmtDb21tb25FbGVtZW50TWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiSW5saW5lTGlua0NvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbc3R5bGUsIGlubGluZVN0eWxlXTtcbiAgfVxuICByZXR1cm4gU2JiSW5saW5lTGlua0NvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYklubGluZUxpbmtDb21tb25FbGVtZW50TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOlsiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQmEsTUFBQSw0QkFBNEIsQ0FDdkMsZUFDMkQ7QUFHM0QsTUFBZSx1QkFBZixjQUNVLGlCQUFpQixVQUFVLEVBRXJDO0FBQUEsSUFIQSxjQUFBO0FBQUEsWUFBQSxHQUFBLFNBQUE7QUFVK0IsV0FBTyxPQUFvQjtBQUFBLElBQUE7QUFBQSxJQUVyQyxpQkFBaUM7QUFDM0MsYUFBQTtBQUFBLElBQ1Q7QUFBQSxFQUFBO0FBZGEsdUJBSUMsU0FBeUI7QUFNSEEsb0JBQUE7QUFBQSxJQUFuQyxTQUFTLEVBQUUsU0FBUyxNQUFNO0FBQUEsRUFBQSxHQVZkLHFCQVV1QixXQUFBLFFBQUEsQ0FBQTtBQVZ0Qyx5QkFBQUEsa0JBQUE7QUFBQSxJQUZDLGVBQWUsRUFBRSxpQkFBaUIsSUFBSTtBQUFBLElBQ3RDLFVBQVU7QUFBQSxFQUNJLEdBQUEsb0JBQUE7QUFnQlIsU0FBQTtBQUNUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCYSxNQUFBLGlDQUFpQyxDQUM1QyxlQUNnRTtBQUNoRSxRQUFlLDZCQUFmLE1BQWUsbUNBQ0wsMEJBQTBCLGlCQUFpQixVQUFVLENBQUMsRUFFaEU7QUFBQSxJQUhBLGNBQUE7QUFBQSxZQUFBLEdBQUEsU0FBQTtBQVFFLFdBQU8sZ0JBQW1DO0FBQUEsSUFBQTtBQUFBLElBRXZCLGlCQUFpQztBQUMzQyxhQUFBO0FBQUEsd0NBQzJCLE1BQU0sZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLElBRzFEO0FBQUEsRUFDRjtBQVpnQiw2QkFBQSxTQUF5QixDQUFDLE9BQU8sVUFBVTtBQUozRCxNQUFlLDRCQUFmO0FBUVMsa0JBQUE7QUFBQSxJQUROLFNBQVMsRUFBRSxXQUFXLGtCQUFrQixTQUFTLE1BQU07QUFBQSxFQUFBLEdBUDNDLDBCQVFOLFdBQUEsZUFBQTtBQVNGLFNBQUE7QUFFVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdCYSxNQUFBLGtDQUFrQyxDQUc3QyxlQUNpRTtBQUNqRSxRQUFlLDhCQUFmLE1BQWUsb0NBQ0wsMEJBQTBCLFVBQVUsRUFFOUM7QUFBQSxFQUVBO0FBRGdCLDhCQUFBLFNBQXlCLENBQUMsT0FBTyxXQUFXO0FBSjVELE1BQWUsNkJBQWY7QUFNTyxTQUFBO0FBRVQ7In0=
@@ -1,5 +1,4 @@
1
1
  import { SbbLinkBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbLinkElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbInlineLinkCommonElementMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & typeof SbbLinkBaseElement;
4
3
  /**
5
4
  * It displays a link enhanced with the SBB Design.
@@ -1,5 +1,4 @@
1
1
  import { SbbButtonBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbLinkButtonElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbInlineLinkCommonElementMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & typeof SbbButtonBaseElement;
4
3
  /**
5
4
  * It displays a link enhanced with the SBB Design, which will behave as a button.
@@ -1,5 +1,4 @@
1
1
  import { SbbActionBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbLinkStaticElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbInlineLinkCommonElementMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & typeof SbbActionBaseElement;
4
3
  /**
5
4
  * It displays a static link enhanced with the SBB Design.
@@ -0,0 +1,27 @@
1
+ import { PropertyValues, TemplateResult, LitElement } from 'lit';
2
+ import { WithListChildren } from '../../core/mixins.js';
3
+ import { SbbBlockLinkButtonElement, SbbBlockLinkElement, SbbBlockLinkStaticElement, SbbLinkSize } from '../../link.js';
4
+ import { SbbTitleLevel } from '../../title.js';
5
+ declare const SbbLinkListBaseElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNamedSlotListMixinType<SbbBlockLinkElement | SbbBlockLinkButtonElement | SbbBlockLinkStaticElement>> & typeof LitElement;
6
+ /**
7
+ * It displays a list of `sbb-block-link`.
8
+ *
9
+ * @slot - Use the unnamed slot to add one or more `sbb-block-link`.
10
+ * @slot title - Use this slot to provide a title.
11
+ */
12
+ export declare class SbbLinkListBaseElement extends SbbLinkListBaseElement_base {
13
+ protected readonly listChildLocalNames: string[];
14
+ /** The title text we want to show before the list. */
15
+ titleContent?: string;
16
+ /** The semantic level of the title, e.g. 2 = h2. */
17
+ titleLevel: SbbTitleLevel;
18
+ /**
19
+ * Text size of the nested sbb-block-link instances.
20
+ * This will overwrite the size attribute of nested sbb-block-link instances.
21
+ */
22
+ size: SbbLinkSize;
23
+ protected willUpdate(changedProperties: PropertyValues<WithListChildren<this>>): void;
24
+ protected render(): TemplateResult;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=link-list-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-list-base.d.ts","sourceRoot":"","sources":["../../../../../src/elements/link-list/common/link-list-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAIhD,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,gBAAgB,CAAC;;AAExB;;;;;GAKG;AACH,qBACa,sBAAuB,SAAQ,2BAK3C;IACC,mBAA4B,mBAAmB,WAI7C;IAEF,sDAAsD;IACU,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtF,oDAAoD;IACL,UAAU,EAAE,aAAa,CAAO;IAE/E;;;OAGG;IACiC,IAAI,EAAE,WAAW,CAAO;cAEzC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;cAe3E,MAAM,IAAI,cAAc;CAgB5C"}
@@ -0,0 +1,2 @@
1
+ export * from './common/link-list-base.js';
2
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/elements/link-list/common.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC"}