@sbb-esta/lyne-elements 1.6.0 → 1.8.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 (609) 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 +5 -3
  45. package/calendar/calendar.d.ts.map +1 -1
  46. package/calendar.js +73 -66
  47. package/card/card/card.d.ts +0 -1
  48. package/card/card-badge/card-badge.d.ts +0 -1
  49. package/card/card-button/card-button.d.ts +0 -1
  50. package/card/card-link/card-link.d.ts +0 -1
  51. package/card/card.js +1 -1
  52. package/card/common/card-action-common.d.ts +0 -1
  53. package/checkbox/checkbox/checkbox.d.ts +0 -1
  54. package/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  55. package/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  56. package/checkbox/common/checkbox-common.d.ts +0 -1
  57. package/chip/chip.d.ts +0 -1
  58. package/chip.js +1 -1
  59. package/clock/clock.d.ts +0 -1
  60. package/clock/clock.d.ts.map +1 -1
  61. package/container/container/container.d.ts +1 -1
  62. package/container/container/container.d.ts.map +1 -1
  63. package/container/container.js +21 -16
  64. package/container/sticky-bar/sticky-bar.d.ts +0 -1
  65. package/container/sticky-bar.js +5 -5
  66. package/core/a11y/focus-visible-within-controller.d.ts +0 -1
  67. package/core/base-elements/action-base-element.d.ts +0 -1
  68. package/core/base-elements/button-base-element.d.ts +0 -1
  69. package/core/base-elements/link-base-element.d.ts +0 -1
  70. package/core/base-elements/open-close-base-element.d.ts +10 -1
  71. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  72. package/core/base-elements.js +4 -0
  73. package/core/config/config.d.ts +0 -1
  74. package/core/controllers/connected-abort-controller.d.ts +0 -1
  75. package/core/controllers/inert-controller.d.ts +18 -0
  76. package/core/controllers/inert-controller.d.ts.map +1 -0
  77. package/core/controllers/language-controller.d.ts +0 -1
  78. package/core/controllers/slot-state-controller.d.ts +0 -1
  79. package/core/controllers.d.ts +1 -0
  80. package/core/controllers.d.ts.map +1 -1
  81. package/core/controllers.js +67 -23
  82. package/core/datetime/native-date-adapter.d.ts +0 -1
  83. package/core/decorators/host-attributes.d.ts +0 -1
  84. package/core/decorators/slot-state.d.ts +0 -1
  85. package/core/dom/ssr.d.ts +0 -1
  86. package/core/eventing/form-element-handlers.d.ts +0 -1
  87. package/core/i18n/i18n.d.ts +0 -1
  88. package/core/i18n.js +1 -1
  89. package/core/images.d.ts.map +1 -1
  90. package/core/mixins/disabled-mixin.d.ts +0 -1
  91. package/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  92. package/core/mixins/form-associated-mixin.d.ts +0 -1
  93. package/core/mixins/hydration-mixin.d.ts +0 -1
  94. package/core/mixins/named-slot-list-mixin.d.ts +7 -2
  95. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  96. package/core/mixins/negative-mixin.d.ts +0 -1
  97. package/core/mixins/panel-mixin.d.ts +0 -1
  98. package/core/mixins/required-mixin.d.ts +0 -1
  99. package/core/mixins/update-scheduler-mixin.d.ts +0 -1
  100. package/core/mixins.js +100 -88
  101. package/core/overlay/overlay.d.ts +0 -14
  102. package/core/overlay/overlay.d.ts.map +1 -1
  103. package/core/overlay.js +36 -86
  104. package/core/styles/core.scss +21 -19
  105. package/core/styles/mixins/link.scss +9 -6
  106. package/core/styles/mixins/lists.scss +5 -5
  107. package/core/styles/mixins/pearl-chain-bullet.scss +14 -9
  108. package/core/styles/mixins/table.scss +19 -17
  109. package/core/testing/mocha-extensions.d.ts +0 -1
  110. package/core/testing/wait-for-image-ready.d.ts +0 -1
  111. package/core/testing/wait-for-render.d.ts +0 -1
  112. package/core.css +10 -8
  113. package/custom-elements.json +3533 -1027
  114. package/datepicker/common/datepicker-button.d.ts +0 -1
  115. package/datepicker/datepicker/datepicker.d.ts +0 -1
  116. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  117. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  118. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +4 -1
  119. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  120. package/datepicker/datepicker-toggle.js +51 -41
  121. package/development/accordion/accordion.d.ts +0 -1
  122. package/development/action-group/action-group.d.ts +0 -1
  123. package/development/alert/alert/alert.d.ts +0 -1
  124. package/development/alert/alert-group/alert-group.d.ts +0 -1
  125. package/development/alert/alert.js +1 -1
  126. package/development/autocomplete/autocomplete-base-element.d.ts +0 -1
  127. package/development/autocomplete/autocomplete.d.ts +0 -1
  128. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  129. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  130. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  131. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  132. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  133. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  134. package/development/autocomplete.js +7 -5
  135. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  136. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  137. package/development/breadcrumb/breadcrumb-group.js +4 -4
  138. package/development/breadcrumb/breadcrumb.js +8 -6
  139. package/development/button/button/button.d.ts +0 -1
  140. package/development/button/button-link/button-link.d.ts +0 -1
  141. package/development/button/button-static/button-static.d.ts +0 -1
  142. package/development/button/common/button-common.d.ts +0 -1
  143. package/development/button/mini-button/mini-button-base-element.d.ts +0 -1
  144. package/development/button/mini-button/mini-button.d.ts +0 -1
  145. package/development/button/mini-button-group/index.d.ts +2 -0
  146. package/development/button/mini-button-group/index.d.ts.map +1 -0
  147. package/development/button/mini-button-group/mini-button-group.d.ts +28 -0
  148. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  149. package/development/button/mini-button-group.d.ts +2 -0
  150. package/development/button/mini-button-group.d.ts.map +1 -0
  151. package/development/button/mini-button-group.js +142 -0
  152. package/development/button/secondary-button/secondary-button.d.ts +0 -1
  153. package/development/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  154. package/development/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  155. package/development/button/tertiary-button/tertiary-button.d.ts +0 -1
  156. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  157. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  158. package/development/button/transparent-button/transparent-button.d.ts +0 -1
  159. package/development/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  160. package/development/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  161. package/development/button.d.ts +1 -0
  162. package/development/button.d.ts.map +1 -1
  163. package/development/button.js +2 -1
  164. package/development/calendar/calendar.d.ts +5 -3
  165. package/development/calendar/calendar.d.ts.map +1 -1
  166. package/development/calendar.js +38 -22
  167. package/development/card/card/card.d.ts +0 -1
  168. package/development/card/card-badge/card-badge.d.ts +0 -1
  169. package/development/card/card-button/card-button.d.ts +0 -1
  170. package/development/card/card-link/card-link.d.ts +0 -1
  171. package/development/card/card.js +3 -3
  172. package/development/card/common/card-action-common.d.ts +0 -1
  173. package/development/checkbox/checkbox/checkbox.d.ts +0 -1
  174. package/development/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  175. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  176. package/development/checkbox/common/checkbox-common.d.ts +0 -1
  177. package/development/chip/chip.d.ts +0 -1
  178. package/development/chip.js +4 -2
  179. package/development/clock/clock.d.ts +0 -1
  180. package/development/clock/clock.d.ts.map +1 -1
  181. package/development/clock.js +1 -1
  182. package/development/container/container/container.d.ts +1 -1
  183. package/development/container/container/container.d.ts.map +1 -1
  184. package/development/container/container.js +44 -4
  185. package/development/container/sticky-bar/sticky-bar.d.ts +0 -1
  186. package/development/container/sticky-bar.js +1 -4
  187. package/development/core/a11y/focus-visible-within-controller.d.ts +0 -1
  188. package/development/core/base-elements/action-base-element.d.ts +0 -1
  189. package/development/core/base-elements/button-base-element.d.ts +0 -1
  190. package/development/core/base-elements/link-base-element.d.ts +0 -1
  191. package/development/core/base-elements/open-close-base-element.d.ts +10 -1
  192. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  193. package/development/core/base-elements.js +5 -1
  194. package/development/core/config/config.d.ts +0 -1
  195. package/development/core/controllers/connected-abort-controller.d.ts +0 -1
  196. package/development/core/controllers/inert-controller.d.ts +18 -0
  197. package/development/core/controllers/inert-controller.d.ts.map +1 -0
  198. package/development/core/controllers/language-controller.d.ts +0 -1
  199. package/development/core/controllers/slot-state-controller.d.ts +0 -1
  200. package/development/core/controllers.d.ts +1 -0
  201. package/development/core/controllers.d.ts.map +1 -1
  202. package/development/core/controllers.js +90 -1
  203. package/development/core/datetime/native-date-adapter.d.ts +0 -1
  204. package/development/core/decorators/host-attributes.d.ts +0 -1
  205. package/development/core/decorators/slot-state.d.ts +0 -1
  206. package/development/core/dom/ssr.d.ts +0 -1
  207. package/development/core/eventing/form-element-handlers.d.ts +0 -1
  208. package/development/core/i18n/i18n.d.ts +0 -1
  209. package/development/core/i18n.js +2 -2
  210. package/development/core/images.d.ts.map +1 -1
  211. package/development/core/mixins/disabled-mixin.d.ts +0 -1
  212. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  213. package/development/core/mixins/form-associated-mixin.d.ts +0 -1
  214. package/development/core/mixins/hydration-mixin.d.ts +0 -1
  215. package/development/core/mixins/named-slot-list-mixin.d.ts +7 -2
  216. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  217. package/development/core/mixins/negative-mixin.d.ts +0 -1
  218. package/development/core/mixins/panel-mixin.d.ts +0 -1
  219. package/development/core/mixins/required-mixin.d.ts +0 -1
  220. package/development/core/mixins/update-scheduler-mixin.d.ts +0 -1
  221. package/development/core/mixins.js +24 -12
  222. package/development/core/overlay/overlay.d.ts +0 -14
  223. package/development/core/overlay/overlay.d.ts.map +1 -1
  224. package/development/core/overlay.js +1 -87
  225. package/development/core/testing/mocha-extensions.d.ts +0 -1
  226. package/development/core/testing/wait-for-image-ready.d.ts +0 -1
  227. package/development/core/testing/wait-for-render.d.ts +0 -1
  228. package/development/datepicker/common/datepicker-button.d.ts +0 -1
  229. package/development/datepicker/datepicker/datepicker.d.ts +0 -1
  230. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  231. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  232. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +4 -1
  233. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  234. package/development/datepicker/datepicker-toggle.js +20 -3
  235. package/development/dialog/dialog/dialog.d.ts +0 -1
  236. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  237. package/development/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  238. package/development/dialog/dialog-content/dialog-content.d.ts +0 -1
  239. package/development/dialog/dialog-content.js +8 -6
  240. package/development/dialog/dialog-title/dialog-title.d.ts +0 -1
  241. package/development/dialog/dialog.js +9 -6
  242. package/development/divider/divider.d.ts +0 -1
  243. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  244. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  245. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  246. package/development/expansion-panel/expansion-panel-header.js +1 -1
  247. package/development/file-selector/file-selector.d.ts +0 -1
  248. package/development/flip-card/flip-card/flip-card.d.ts +22 -7
  249. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  250. package/development/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  251. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  252. package/development/flip-card/flip-card-details.js +28 -9
  253. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  254. package/development/flip-card/flip-card-summary.js +8 -1
  255. package/development/flip-card/flip-card.js +132 -32
  256. package/development/footer/footer.d.ts +0 -1
  257. package/development/footer.js +1 -1
  258. package/development/form-error/form-error.d.ts +0 -1
  259. package/development/form-error.js +4 -4
  260. package/development/form-field/form-field/form-field.d.ts +1 -2
  261. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  262. package/development/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  263. package/development/form-field/form-field.js +74 -29
  264. package/development/header/common/header-action-common.d.ts +0 -1
  265. package/development/header/common.js +2 -2
  266. package/development/header/header/header.d.ts +0 -1
  267. package/development/header/header-button/header-button.d.ts +0 -1
  268. package/development/header/header-link/header-link.d.ts +0 -1
  269. package/development/header/header.js +2 -2
  270. package/development/icon/icon-base.d.ts +0 -1
  271. package/development/icon/icon-name-mixin.d.ts +0 -1
  272. package/development/icon/icon.d.ts +0 -1
  273. package/development/image/image.d.ts +0 -1
  274. package/development/image.js +2 -2
  275. package/development/journey-header/journey-header.d.ts +0 -1
  276. package/development/lead-container/lead-container.d.ts +0 -1
  277. package/development/lead-container.js +6 -2
  278. package/development/link/block-link/block-link.d.ts +0 -1
  279. package/development/link/block-link-button/block-link-button.d.ts +0 -1
  280. package/development/link/block-link-static/block-link-static.d.ts +0 -1
  281. package/development/link/common/block-link-common.d.ts +0 -1
  282. package/development/link/common/inline-link-common.d.ts +0 -1
  283. package/development/link/common/link-common.d.ts +0 -1
  284. package/development/link/common.js +9 -7
  285. package/development/link/link/link.d.ts +0 -1
  286. package/development/link/link-button/link-button.d.ts +0 -1
  287. package/development/link/link-static/link-static.d.ts +0 -1
  288. package/development/link-list/common/link-list-base.d.ts +27 -0
  289. package/development/link-list/common/link-list-base.d.ts.map +1 -0
  290. package/development/link-list/common.d.ts +2 -0
  291. package/development/link-list/common.d.ts.map +1 -0
  292. package/development/link-list/common.js +113 -0
  293. package/development/link-list/link-list/link-list.d.ts +22 -0
  294. package/development/link-list/link-list/link-list.d.ts.map +1 -0
  295. package/development/link-list/link-list-anchor/index.d.ts +2 -0
  296. package/development/link-list/link-list-anchor/index.d.ts.map +1 -0
  297. package/development/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  298. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  299. package/development/link-list/link-list-anchor.d.ts +2 -0
  300. package/development/link-list/link-list-anchor.d.ts.map +1 -0
  301. package/development/link-list/link-list-anchor.js +91 -0
  302. package/development/link-list/link-list.d.ts +1 -38
  303. package/development/link-list/link-list.d.ts.map +1 -1
  304. package/development/link-list/link-list.js +194 -0
  305. package/development/link-list.d.ts +2 -0
  306. package/development/link-list.d.ts.map +1 -1
  307. package/development/link-list.js +4 -260
  308. package/development/loading-indicator/loading-indicator.d.ts +0 -1
  309. package/development/logo/logo.d.ts +0 -1
  310. package/development/logo.js +2 -2
  311. package/development/map-container/map-container.d.ts +0 -1
  312. package/development/map-container.js +13 -11
  313. package/development/menu/common/menu-action-common.d.ts +0 -1
  314. package/development/menu/menu/menu.d.ts +1 -1
  315. package/development/menu/menu/menu.d.ts.map +1 -1
  316. package/development/menu/menu-button/menu-button.d.ts +0 -1
  317. package/development/menu/menu-link/menu-link.d.ts +0 -1
  318. package/development/menu/menu.js +13 -14
  319. package/development/message/message.d.ts +0 -1
  320. package/development/navigation/common/navigation-action-common.d.ts +0 -1
  321. package/development/navigation/navigation/navigation.d.ts +1 -1
  322. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  323. package/development/navigation/navigation-button/navigation-button.d.ts +0 -1
  324. package/development/navigation/navigation-link/navigation-link.d.ts +0 -1
  325. package/development/navigation/navigation-list/navigation-list.d.ts +0 -1
  326. package/development/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  327. package/development/navigation/navigation-section/navigation-section.d.ts +0 -1
  328. package/development/navigation/navigation-section.js +7 -5
  329. package/development/navigation/navigation.js +18 -19
  330. package/development/notification/notification.d.ts +0 -1
  331. package/development/option/optgroup/optgroup-base-element.d.ts +0 -1
  332. package/development/option/optgroup/optgroup.d.ts +0 -1
  333. package/development/option/option/option-base-element.d.ts +0 -1
  334. package/development/option/option/option.d.ts +0 -1
  335. package/development/overlay/overlay-base-element.d.ts +2 -2
  336. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  337. package/development/overlay/overlay.d.ts +0 -1
  338. package/development/overlay/overlay.d.ts.map +1 -1
  339. package/development/overlay.js +13 -13
  340. package/development/popover/popover/popover.d.ts +0 -1
  341. package/development/popover/popover/popover.d.ts.map +1 -1
  342. package/development/popover/popover-trigger/popover-trigger.d.ts +0 -1
  343. package/development/popover/popover-trigger.js +3 -3
  344. package/development/popover/popover.js +6 -4
  345. package/development/radio-button/common/radio-button-common.d.ts +0 -1
  346. package/development/radio-button/common.js +6 -6
  347. package/development/radio-button/radio-button/radio-button.d.ts +0 -1
  348. package/development/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  349. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  350. package/development/screen-reader-only/screen-reader-only.d.ts +0 -1
  351. package/development/select/select.d.ts +0 -1
  352. package/development/select.js +7 -5
  353. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  354. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  355. package/development/selection-expansion-panel.js +6 -2
  356. package/development/signet/signet.d.ts +0 -1
  357. package/development/signet.js +1 -1
  358. package/development/skiplink-list/skiplink-list.d.ts +0 -1
  359. package/development/slider/slider.d.ts +0 -1
  360. package/development/slider.js +4 -4
  361. package/development/status/status.d.ts +0 -1
  362. package/development/stepper/step/step.d.ts +0 -1
  363. package/development/stepper/step-label/step-label.d.ts +0 -1
  364. package/development/stepper/stepper/stepper.d.ts +0 -1
  365. package/development/table/table-wrapper/table-wrapper.d.ts +0 -1
  366. package/development/tabs/tab/tab.d.ts +0 -1
  367. package/development/tabs/tab-group/tab-group.d.ts +0 -1
  368. package/development/tabs/tab-label/tab-label.d.ts +0 -1
  369. package/development/tabs/tab-label.js +10 -10
  370. package/development/tag/tag/tag.d.ts +0 -1
  371. package/development/tag/tag-group/tag-group.d.ts +0 -1
  372. package/development/tag/tag.js +3 -3
  373. package/development/teaser/teaser.d.ts +0 -1
  374. package/development/teaser-hero/teaser-hero.d.ts +27 -0
  375. package/development/teaser-hero/teaser-hero.d.ts.map +1 -0
  376. package/development/teaser-hero.d.ts +2 -0
  377. package/development/teaser-hero.d.ts.map +1 -0
  378. package/development/teaser-hero.js +207 -0
  379. package/development/teaser-product/common/teaser-product-common.d.ts +7 -0
  380. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  381. package/development/teaser-product/common.d.ts +2 -0
  382. package/development/teaser-product/common.d.ts.map +1 -0
  383. package/development/teaser-product/common.js +219 -0
  384. package/development/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  385. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  386. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  387. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  388. package/development/teaser-product/teaser-product-static.d.ts +2 -0
  389. package/development/teaser-product/teaser-product-static.d.ts.map +1 -0
  390. package/development/teaser-product/teaser-product-static.js +25 -0
  391. package/development/teaser-product/teaser-product.d.ts +2 -0
  392. package/development/teaser-product/teaser-product.d.ts.map +1 -0
  393. package/development/teaser-product/teaser-product.js +80 -0
  394. package/development/teaser-product.d.ts +4 -0
  395. package/development/teaser-product.d.ts.map +1 -0
  396. package/development/teaser-product.js +4 -0
  397. package/development/time-input/time-input.d.ts +0 -1
  398. package/development/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  399. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  400. package/development/timetable-occupancy.js +1 -1
  401. package/development/title/title-base.d.ts +0 -1
  402. package/development/title/title.d.ts +0 -1
  403. package/development/toast/toast.d.ts +0 -1
  404. package/development/toggle/toggle/toggle.d.ts +2 -2
  405. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  406. package/development/toggle/toggle-option/toggle-option.d.ts +0 -1
  407. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  408. package/development/toggle/toggle-option.js +3 -2
  409. package/development/toggle/toggle.js +8 -8
  410. package/development/toggle-check/toggle-check.d.ts +0 -1
  411. package/development/train/train/train.d.ts +0 -1
  412. package/development/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  413. package/development/train/train-blocked-passage.js +1 -1
  414. package/development/train/train-formation/train-formation.d.ts +0 -1
  415. package/development/train/train-formation.js +9 -7
  416. package/development/train/train-wagon/train-wagon.d.ts +0 -1
  417. package/development/train/train-wagon.js +1 -1
  418. package/development/train/train.js +1 -1
  419. package/development/visual-checkbox/visual-checkbox.d.ts +0 -1
  420. package/development/visual-checkbox.js +1 -1
  421. package/dialog/dialog/dialog.d.ts +0 -1
  422. package/dialog/dialog/dialog.d.ts.map +1 -1
  423. package/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  424. package/dialog/dialog-content/dialog-content.d.ts +0 -1
  425. package/dialog/dialog-content.js +1 -1
  426. package/dialog/dialog-title/dialog-title.d.ts +0 -1
  427. package/dialog/dialog.js +11 -12
  428. package/divider/divider.d.ts +0 -1
  429. package/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  430. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  431. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  432. package/expansion-panel/expansion-panel-header.js +1 -1
  433. package/file-selector/file-selector.d.ts +0 -1
  434. package/flip-card/flip-card/flip-card.d.ts +22 -7
  435. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  436. package/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  437. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  438. package/flip-card/flip-card-details.js +19 -17
  439. package/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  440. package/flip-card/flip-card-summary.js +13 -13
  441. package/flip-card/flip-card.js +68 -35
  442. package/footer/footer.d.ts +0 -1
  443. package/footer.js +1 -1
  444. package/form-error/form-error.d.ts +0 -1
  445. package/form-error.js +1 -1
  446. package/form-field/form-field/form-field.d.ts +1 -2
  447. package/form-field/form-field/form-field.d.ts.map +1 -1
  448. package/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  449. package/form-field/form-field.js +22 -22
  450. package/header/common/header-action-common.d.ts +0 -1
  451. package/header/common.js +1 -1
  452. package/header/header/header.d.ts +0 -1
  453. package/header/header-button/header-button.d.ts +0 -1
  454. package/header/header-link/header-link.d.ts +0 -1
  455. package/header/header.js +1 -1
  456. package/icon/icon-base.d.ts +0 -1
  457. package/icon/icon-name-mixin.d.ts +0 -1
  458. package/icon/icon.d.ts +0 -1
  459. package/image/image.d.ts +0 -1
  460. package/image.js +25 -25
  461. package/index.d.ts +11 -1
  462. package/index.js +11 -1
  463. package/journey-header/journey-header.d.ts +0 -1
  464. package/lead-container/lead-container.d.ts +0 -1
  465. package/lead-container.js +1 -1
  466. package/link/block-link/block-link.d.ts +0 -1
  467. package/link/block-link-button/block-link-button.d.ts +0 -1
  468. package/link/block-link-static/block-link-static.d.ts +0 -1
  469. package/link/common/block-link-common.d.ts +0 -1
  470. package/link/common/inline-link-common.d.ts +0 -1
  471. package/link/common/link-common.d.ts +0 -1
  472. package/link/common.js +6 -6
  473. package/link/link/link.d.ts +0 -1
  474. package/link/link-button/link-button.d.ts +0 -1
  475. package/link/link-static/link-static.d.ts +0 -1
  476. package/link-list/common/link-list-base.d.ts +27 -0
  477. package/link-list/common/link-list-base.d.ts.map +1 -0
  478. package/link-list/common.d.ts +2 -0
  479. package/link-list/common.d.ts.map +1 -0
  480. package/link-list/common.js +59 -0
  481. package/link-list/link-list/link-list.d.ts +22 -0
  482. package/link-list/link-list/link-list.d.ts.map +1 -0
  483. package/link-list/link-list-anchor/index.d.ts +2 -0
  484. package/link-list/link-list-anchor/index.d.ts.map +1 -0
  485. package/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  486. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  487. package/link-list/link-list-anchor.d.ts +2 -0
  488. package/link-list/link-list-anchor.d.ts.map +1 -0
  489. package/link-list/link-list-anchor.js +18 -0
  490. package/link-list/link-list.d.ts +1 -38
  491. package/link-list/link-list.d.ts.map +1 -1
  492. package/link-list/link-list.js +27 -0
  493. package/link-list.d.ts +2 -0
  494. package/link-list.d.ts.map +1 -1
  495. package/link-list.js +3 -66
  496. package/loading-indicator/loading-indicator.d.ts +0 -1
  497. package/logo/logo.d.ts +0 -1
  498. package/logo.js +1 -1
  499. package/map-container/map-container.d.ts +0 -1
  500. package/map-container.js +1 -1
  501. package/menu/common/menu-action-common.d.ts +0 -1
  502. package/menu/menu/menu.d.ts +1 -1
  503. package/menu/menu/menu.d.ts.map +1 -1
  504. package/menu/menu-button/menu-button.d.ts +0 -1
  505. package/menu/menu-link/menu-link.d.ts +0 -1
  506. package/menu/menu.js +30 -30
  507. package/message/message.d.ts +0 -1
  508. package/navigation/common/navigation-action-common.d.ts +0 -1
  509. package/navigation/navigation/navigation.d.ts +1 -1
  510. package/navigation/navigation/navigation.d.ts.map +1 -1
  511. package/navigation/navigation-button/navigation-button.d.ts +0 -1
  512. package/navigation/navigation-link/navigation-link.d.ts +0 -1
  513. package/navigation/navigation-list/navigation-list.d.ts +0 -1
  514. package/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  515. package/navigation/navigation-section/navigation-section.d.ts +0 -1
  516. package/navigation/navigation-section.js +1 -1
  517. package/navigation/navigation.js +37 -37
  518. package/notification/notification.d.ts +0 -1
  519. package/option/optgroup/optgroup-base-element.d.ts +0 -1
  520. package/option/optgroup/optgroup.d.ts +0 -1
  521. package/option/option/option-base-element.d.ts +0 -1
  522. package/option/option/option.d.ts +0 -1
  523. package/overlay/overlay-base-element.d.ts +2 -2
  524. package/overlay/overlay-base-element.d.ts.map +1 -1
  525. package/overlay/overlay.d.ts +0 -1
  526. package/overlay/overlay.d.ts.map +1 -1
  527. package/overlay.js +44 -45
  528. package/package.json +46 -1
  529. package/popover/popover/popover.d.ts +0 -1
  530. package/popover/popover/popover.d.ts.map +1 -1
  531. package/popover/popover-trigger/popover-trigger.d.ts +0 -1
  532. package/popover/popover-trigger.js +1 -1
  533. package/popover/popover.js +2 -2
  534. package/radio-button/common/radio-button-common.d.ts +0 -1
  535. package/radio-button/common.js +1 -1
  536. package/radio-button/radio-button/radio-button.d.ts +0 -1
  537. package/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  538. package/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  539. package/screen-reader-only/screen-reader-only.d.ts +0 -1
  540. package/select/select.d.ts +0 -1
  541. package/select.js +1 -1
  542. package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  543. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  544. package/signet/signet.d.ts +0 -1
  545. package/signet.js +1 -1
  546. package/skiplink-list/skiplink-list.d.ts +0 -1
  547. package/slider/slider.d.ts +0 -1
  548. package/slider.js +1 -1
  549. package/standard-theme.css +19 -13
  550. package/status/status.d.ts +0 -1
  551. package/stepper/step/step.d.ts +0 -1
  552. package/stepper/step-label/step-label.d.ts +0 -1
  553. package/stepper/stepper/stepper.d.ts +0 -1
  554. package/table/table-wrapper/table-wrapper.d.ts +0 -1
  555. package/tabs/tab/tab.d.ts +0 -1
  556. package/tabs/tab-group/tab-group.d.ts +0 -1
  557. package/tabs/tab-label/tab-label.d.ts +0 -1
  558. package/tabs/tab-label.js +1 -1
  559. package/tag/tag/tag.d.ts +0 -1
  560. package/tag/tag-group/tag-group.d.ts +0 -1
  561. package/tag/tag.js +1 -1
  562. package/teaser/teaser.d.ts +0 -1
  563. package/teaser-hero/teaser-hero.d.ts +27 -0
  564. package/teaser-hero/teaser-hero.d.ts.map +1 -0
  565. package/teaser-hero.d.ts +2 -0
  566. package/teaser-hero.d.ts.map +1 -0
  567. package/teaser-hero.js +58 -0
  568. package/teaser-product/common/teaser-product-common.d.ts +7 -0
  569. package/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  570. package/teaser-product/common.d.ts +2 -0
  571. package/teaser-product/common.d.ts.map +1 -0
  572. package/teaser-product/common.js +38 -0
  573. package/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  574. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  575. package/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  576. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  577. package/teaser-product/teaser-product-static.d.ts +2 -0
  578. package/teaser-product/teaser-product-static.d.ts.map +1 -0
  579. package/teaser-product/teaser-product-static.js +19 -0
  580. package/teaser-product/teaser-product.d.ts +2 -0
  581. package/teaser-product/teaser-product.d.ts.map +1 -0
  582. package/teaser-product/teaser-product.js +21 -0
  583. package/teaser-product.d.ts +4 -0
  584. package/teaser-product.d.ts.map +1 -0
  585. package/teaser-product.js +3 -0
  586. package/time-input/time-input.d.ts +0 -1
  587. package/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  588. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  589. package/timetable-occupancy.js +1 -1
  590. package/title/title-base.d.ts +0 -1
  591. package/title/title.d.ts +0 -1
  592. package/toast/toast.d.ts +0 -1
  593. package/toggle/toggle/toggle.d.ts +2 -2
  594. package/toggle/toggle/toggle.d.ts.map +1 -1
  595. package/toggle/toggle-option/toggle-option.d.ts +0 -1
  596. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  597. package/toggle/toggle-option.js +8 -8
  598. package/toggle/toggle.js +21 -22
  599. package/toggle-check/toggle-check.d.ts +0 -1
  600. package/train/train/train.d.ts +0 -1
  601. package/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  602. package/train/train-blocked-passage.js +1 -1
  603. package/train/train-formation/train-formation.d.ts +0 -1
  604. package/train/train-formation.js +1 -1
  605. package/train/train-wagon/train-wagon.d.ts +0 -1
  606. package/train/train-wagon.js +1 -1
  607. package/train/train.js +1 -1
  608. package/visual-checkbox/visual-checkbox.d.ts +0 -1
  609. package/visual-checkbox.js +1 -1
@@ -3,10 +3,10 @@ import { property, customElement } from "lit/decorators.js";
3
3
  import { ref } from "lit/directives/ref.js";
4
4
  import { SbbFocusHandler, isArrowKeyPressed, interactivityChecker, getNextElementIndex, setModalityOnNextFocus, IS_FOCUSABLE_QUERY } from "../core/a11y.js";
5
5
  import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
6
- import { SbbConnectedAbortController } from "../core/controllers.js";
6
+ import { SbbConnectedAbortController, SbbInertController } from "../core/controllers.js";
7
7
  import { SbbScrollHandler, isBreakpoint, findReferencedElement } from "../core/dom.js";
8
8
  import { SbbNamedSlotListMixin } from "../core/mixins.js";
9
- import { isEventOnElement, applyInertMechanism, removeInertMechanism, removeAriaOverlayTriggerAttributes, setAriaOverlayTriggerAttributes, getElementPosition } from "../core/overlay.js";
9
+ import { isEventOnElement, removeAriaOverlayTriggerAttributes, setAriaOverlayTriggerAttributes, getElementPosition } from "../core/overlay.js";
10
10
  const style = css`/**
11
11
  * Better font rendering (on OS X)
12
12
  * http://maximilianhoffmann.com/posts/better-font-rendering-on-osx
@@ -34,6 +34,7 @@ const style = css`/**
34
34
  }
35
35
 
36
36
  :host {
37
+ display: contents;
37
38
  --sbb-menu-position-x: 0;
38
39
  --sbb-menu-position-y: 0;
39
40
  --sbb-menu-animation-duration: var(
@@ -51,7 +52,6 @@ const style = css`/**
51
52
  --sbb-menu-border-radius: var(--sbb-border-radius-4x);
52
53
  --sbb-menu-visibility: hidden;
53
54
  --sbb-menu-backdrop-color: transparent;
54
- display: contents;
55
55
  }
56
56
  @supports (height: 100dvh) {
57
57
  :host {
@@ -173,10 +173,6 @@ const style = css`/**
173
173
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
174
174
  /* Scrollbar itself */
175
175
  /* Hide button (top and bottom of the scrollbar) */
176
- max-height: var(--sbb-menu-max-height);
177
- padding-block: var(--sbb-spacing-fixed-1x);
178
- overflow: auto;
179
- outline: none;
180
176
  }
181
177
  .sbb-menu__content::-webkit-scrollbar {
182
178
  width: var(--sbb-scrollbar-width);
@@ -205,6 +201,12 @@ const style = css`/**
205
201
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
206
202
  }
207
203
  }
204
+ .sbb-menu__content {
205
+ max-height: var(--sbb-menu-max-height);
206
+ padding-block: var(--sbb-spacing-fixed-1x);
207
+ overflow: auto;
208
+ outline: none;
209
+ }
208
210
  .sbb-menu__content::after {
209
211
  content: "";
210
212
  display: block;
@@ -282,6 +284,7 @@ let SbbMenuElement = class extends SbbNamedSlotListMixin(SbbOpenCloseBaseElement
282
284
  this._abort = new SbbConnectedAbortController(this);
283
285
  this._focusHandler = new SbbFocusHandler();
284
286
  this._scrollHandler = new SbbScrollHandler();
287
+ this._inertController = new SbbInertController(this);
285
288
  this._pointerDownListener = (event) => {
286
289
  this._isPointerDownEventOnMenu = isEventOnElement(this._menu, event);
287
290
  };
@@ -386,9 +389,6 @@ let SbbMenuElement = class extends SbbNamedSlotListMixin(SbbOpenCloseBaseElement
386
389
  capture: true
387
390
  });
388
391
  this._configure(this.trigger);
389
- if (this.state === "opened") {
390
- applyInertMechanism(this);
391
- }
392
392
  }
393
393
  disconnectedCallback() {
394
394
  var _a, _b;
@@ -396,7 +396,6 @@ let SbbMenuElement = class extends SbbNamedSlotListMixin(SbbOpenCloseBaseElement
396
396
  (_a = this._menuController) == null ? void 0 : _a.abort();
397
397
  (_b = this._windowEventsController) == null ? void 0 : _b.abort();
398
398
  this._focusHandler.disconnect();
399
- removeInertMechanism();
400
399
  this._scrollHandler.enableScroll();
401
400
  }
402
401
  _checkListCase(event) {
@@ -467,14 +466,14 @@ let SbbMenuElement = class extends SbbNamedSlotListMixin(SbbOpenCloseBaseElement
467
466
  if (event.animationName === "open" && this.state === "opening") {
468
467
  this.state = "opened";
469
468
  this.didOpen.emit();
470
- applyInertMechanism(this);
469
+ this._inertController.activate();
471
470
  this._setMenuFocus();
472
471
  this._focusHandler.trap(this);
473
472
  this._attachWindowEvents();
474
473
  } else if (event.animationName === "close" && this.state === "closing") {
475
474
  this.state = "closed";
476
475
  (_b = (_a = this._menu) == null ? void 0 : _a.firstElementChild) == null ? void 0 : _b.scrollTo(0, 0);
477
- removeInertMechanism();
476
+ this._inertController.deactivate();
478
477
  setModalityOnNextFocus(this._triggerElement);
479
478
  (_c = this._triggerElement) == null ? void 0 : _c.focus({
480
479
  // When inside the sbb-header, we prevent the scroll to avoid the snapping to the top of the page
@@ -541,4 +540,4 @@ SbbMenuElement = __decorateClass([
541
540
  export {
542
541
  SbbMenuElement
543
542
  };
544
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL21lbnUvbWVudS9tZW51LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQge1xuICBnZXROZXh0RWxlbWVudEluZGV4LFxuICBpbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgSVNfRk9DVVNBQkxFX1FVRVJZLFxuICBpc0Fycm93S2V5UHJlc3NlZCxcbiAgU2JiRm9jdXNIYW5kbGVyLFxuICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzLFxufSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQsIGlzQnJlYWtwb2ludCwgU2JiU2Nyb2xsSGFuZGxlciB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IFNiYk5hbWVkU2xvdExpc3RNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7XG4gIGFwcGx5SW5lcnRNZWNoYW5pc20sXG4gIGdldEVsZW1lbnRQb3NpdGlvbixcbiAgaXNFdmVudE9uRWxlbWVudCxcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyxcbiAgcmVtb3ZlSW5lcnRNZWNoYW5pc20sXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk1lbnVCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbWVudS1idXR0b24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJNZW51TGlua0VsZW1lbnQgfSBmcm9tICcuLi9tZW51LWxpbmsuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9tZW51LnNjc3M/bGl0JmlubGluZSc7XG5cbmNvbnN0IE1FTlVfT0ZGU0VUID0gODtcbmNvbnN0IElOVEVSQUNUSVZFX0VMRU1FTlRTID0gW1xuICAnQScsXG4gICdCVVRUT04nLFxuICAnU0JCLUJVVFRPTicsXG4gICdTQkItQlVUVE9OLUxJTksnLFxuICAnU0JCLUxJTksnLFxuICAnU0JCLUJMT0NLLUxJTksnLFxuICAnU0JCLUxJTkstQlVUVE9OJyxcbiAgJ1NCQi1CTE9DSy1MSU5LLUJVVFRPTicsXG5dO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGNvbnRleHR1YWwgbWVudSB3aXRoIG9uZSBvciBtb3JlIGFjdGlvbiBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItbWVudS1idXR0b25gL2BzYmItbWVudS1saW5rYCBvciBvdGhlciBlbGVtZW50cyB0byB0aGUgbWVudS5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbWVudWAgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1tZW51YCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1tZW51YCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1tZW51YCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItbWVudS16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItbWVudScpXG5leHBvcnQgY2xhc3MgU2JiTWVudUVsZW1lbnQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW48XG4gIFNiYk1lbnVCdXR0b25FbGVtZW50IHwgU2JiTWVudUxpbmtFbGVtZW50LFxuICB0eXBlb2YgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnRcbj4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzID0gWydzYmItbWVudS1idXR0b24nLCAnc2JiLW1lbnUtbGluayddO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbWVudSBvdmVybGF5LlxuICAgKiBBY2NlcHRzIGJvdGggYSBzdHJpbmcgKGlkIG9mIGFuIGVsZW1lbnQpIG9yIGFuIEhUTUwgZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl90cmlnZ2VyO1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcih0aGlzLl90cmlnZ2VyLCBvbGRWYWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBpbm5lciBsaXN0LlxuICAgKiBVc2VkIG9ubHkgaWYgdGhlIG1lbnUgYXV0b21hdGljYWxseSByZW5kZXJzIHRoZSBhY3Rpb25zIGluc2lkZSBhcyBhIGxpc3QuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsaXN0LWFjY2Vzc2liaWxpdHktbGFiZWwnIH0pIHB1YmxpYyBsaXN0QWNjZXNzaWJpbGl0eUxhYmVsPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgX21lbnUhOiBIVE1MRGl2RWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9tZW51Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfd2luZG93RXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9mb2N1c0hhbmRsZXIgPSBuZXcgU2JiRm9jdXNIYW5kbGVyKCk7XG4gIHByaXZhdGUgX3Njcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgbWVudSBvbiB0cmlnZ2VyIGNsaWNrLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJyB8fCAhdGhpcy5fbWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy53aWxsT3Blbi5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMuX3NldE1lbnVQb3NpdGlvbigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuXG4gICAgLy8gU3RhcnRpbmcgZnJvbSBicmVha3BvaW50IG1lZGl1bSwgZGlzYWJsZSBzY3JvbGxcbiAgICBpZiAoIWlzQnJlYWtwb2ludCgnbWVkaXVtJykpIHtcbiAgICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1lbnUuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy53aWxsQ2xvc2UuZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjbGljayBhbmQgY2hlY2tzIGlmIGl0cyB0YXJnZXQgaXMgYSBzYmItbWVudS1idXR0b24vc2JiLW1lbnUtbGluay5cbiAgICovXG4gIHByaXZhdGUgX29uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0YXJnZXQ/LmxvY2FsTmFtZSA9PT0gJ3NiYi1tZW51LWJ1dHRvbicgfHwgdGFyZ2V0Py5sb2NhbE5hbWUgPT09ICdzYmItbWVudS1saW5rJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCFpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgZW5hYmxlZEFjdGlvbnM6IEVsZW1lbnRbXSA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw8U2JiTWVudUJ1dHRvbkVsZW1lbnQgfCBTYmJNZW51TGlua0VsZW1lbnQ+KFxuICAgICAgICAnc2JiLW1lbnUtYnV0dG9uLCBzYmItbWVudS1saW5rJyxcbiAgICAgICksXG4gICAgKS5maWx0ZXIoXG4gICAgICAoZWw6IFNiYk1lbnVCdXR0b25FbGVtZW50IHwgU2JiTWVudUxpbmtFbGVtZW50KSA9PlxuICAgICAgICAhZWwuZGlzYWJsZWQgJiYgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNWaXNpYmxlKGVsKSxcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudCA9IGVuYWJsZWRBY3Rpb25zLmZpbmRJbmRleCgoZTogRWxlbWVudCkgPT4gZSA9PT0gZXZ0LnRhcmdldCk7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRBY3Rpb25zLmxlbmd0aCk7XG5cbiAgICAoZW5hYmxlZEFjdGlvbnNbbmV4dEluZGV4XSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgfVxuXG4gIC8vIENsb3NlcyB0aGUgbWVudSBvbiBcIkVzY1wiIGtleSBwcmVzc2VkIGFuZCB0cmFwcyBmb2N1cyB3aXRoaW4gdGhlIG1lbnUuXG4gIHByaXZhdGUgYXN5bmMgX29uS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmVzIHRyaWdnZXIgY2xpY2sgbGlzdGVuZXIgb24gdHJpZ2dlciBjaGFuZ2UuXG4gIHByaXZhdGUgX3JlbW92ZVRyaWdnZXJDbGlja0xpc3RlbmVyKFxuICAgIG5ld1ZhbHVlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4gICAgb2xkVmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSkge1xuICAgICAgdGhpcy5fbWVudUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fY29uZmlndXJlKHRoaXMudHJpZ2dlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gdGhpcy5fb25DbGljayhlKSwgeyBzaWduYWwgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSksIHsgc2lnbmFsIH0pO1xuICAgIC8vIER1ZSB0byB0aGUgZmFjdCB0aGF0IG1lbnUgY2FuIGJvdGggYmUgYSBsaXN0IGFuZCBqdXN0IGEgY29udGFpbmVyLCB3ZSBuZWVkIHRvIGNoZWNrIGl0c1xuICAgIC8vIHN0YXRlIGJlZm9yZSB0aGUgU2JiTmFtZWRTbG90TGlzdE1peGluIGhhbmRsZXMgdGhlIHNsb3RjaGFuZ2UgZXZlbnQsIGluIG9yZGVyIHRvIGF2b2lkXG4gICAgLy8gaXQgaW50ZXJwcmV0aW5nIHRoZSBub24gbGlzdCBjYXNlIGFzIGEgbGlzdC5cbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCAoZSkgPT4gdGhpcy5fY2hlY2tMaXN0Q2FzZShlKSwge1xuICAgICAgc2lnbmFsLFxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICAvLyBWYWxpZGF0ZSB0cmlnZ2VyIGVsZW1lbnQgYW5kIGF0dGFjaCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLl9jb25maWd1cmUodGhpcy50cmlnZ2VyKTtcblxuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgYXBwbHlJbmVydE1lY2hhbmlzbSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9tZW51Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG4gICAgcmVtb3ZlSW5lcnRNZWNoYW5pc20oKTtcbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tMaXN0Q2FzZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBJZiBhbGwgY2hpbGRyZW4gYXJlIHNiYi1tZW51LWJ1dHRvbi9tZW51LWxpbmsgaW5zdGFuY2VzLCB3ZSByZW5kZXIgdGhlbSBhcyBhIGxpc3QuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jaGlsZHJlbj8ubGVuZ3RoICYmXG4gICAgICBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4gPz8gW10pLmV2ZXJ5KFxuICAgICAgICAoYykgPT4gYy5sb2NhbE5hbWUgPT09ICdzYmItbWVudS1idXR0b24nIHx8IGMubG9jYWxOYW1lID09PSAnc2JiLW1lbnUtbGluaycsXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMubGlzdENoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdGhpcy5saXN0Q2hpbGRyZW4uZm9yRWFjaCgoYykgPT4gYy5yZW1vdmVBdHRyaWJ1dGUoJ3Nsb3QnKSk7XG4gICAgICB0aGlzLmxpc3RDaGlsZHJlbiA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmUodHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG5cbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0cmlnZ2VyKTtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gdGhpcy5pZCB8fCBgc2JiLW1lbnUtJHtuZXh0SWQrK31gO1xuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQsICdtZW51JywgdGhpcy5pZCwgdGhpcy5zdGF0ZSk7XG4gICAgdGhpcy5fbWVudUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fbWVudUNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9tZW51Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRNZW51UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3NldE1lbnVQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgbWVudSBvbiBiYWNrZHJvcCBjbGlja1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIsIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xvc2UgbWVudSBhdCBhbnkgY2xpY2sgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCBpbnNpZGUgdGhlIDxzYmItbWVudT4gdGhhdCBidWJibGVzIHRvIHRoZSBjb250YWluZXIuXG4gIHByaXZhdGUgX2Nsb3NlT25JbnRlcmFjdGl2ZUVsZW1lbnRDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKElOVEVSQUNUSVZFX0VMRU1FTlRTLmluY2x1ZGVzKHRhcmdldC5ub2RlTmFtZSkgJiYgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9tZW51LCBldmVudCk7XG4gIH07XG5cbiAgLy8gQ2xvc2UgbWVudSBvbiBiYWNrZHJvcCBjbGljay5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ICYmICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX21lbnUsIGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICAvLyBTZXQgbWVudSBwb3NpdGlvbiAoeCwgeSkgdG8gJzAnIG9uY2UgdGhlIG1lbnUgaXMgY2xvc2VkIGFuZCB0aGUgdHJhbnNpdGlvbiBlbmRlZCB0byBwcmV2ZW50IHRoZVxuICAvLyB2aWV3cG9ydCBmcm9tIG92ZXJmbG93aW5nLiBBbmQgc2V0IHRoZSBmb2N1cyB0byB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgb25jZSB0aGUgbWVudSBpcyBvcGVuLlxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uTWVudUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgICAgdGhpcy5kaWRPcGVuLmVtaXQoKTtcbiAgICAgIGFwcGx5SW5lcnRNZWNoYW5pc20odGhpcyk7XG4gICAgICB0aGlzLl9zZXRNZW51Rm9jdXMoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci50cmFwKHRoaXMpO1xuICAgICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgICAgdGhpcy5fbWVudT8uZmlyc3RFbGVtZW50Q2hpbGQ/LnNjcm9sbFRvKDAsIDApO1xuICAgICAgcmVtb3ZlSW5lcnRNZWNoYW5pc20oKTtcbiAgICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgICAgLy8gTWFudWFsbHkgZm9jdXMgbGFzdCBmb2N1c2VkIGVsZW1lbnRcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5mb2N1cyh7XG4gICAgICAgIC8vIFdoZW4gaW5zaWRlIHRoZSBzYmItaGVhZGVyLCB3ZSBwcmV2ZW50IHRoZSBzY3JvbGwgdG8gYXZvaWQgdGhlIHNuYXBwaW5nIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2VcbiAgICAgICAgcHJldmVudFNjcm9sbDpcbiAgICAgICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5sb2NhbE5hbWUgPT09ICdzYmItaGVhZGVyLWJ1dHRvbicgfHxcbiAgICAgICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5sb2NhbE5hbWUgPT09ICdzYmItaGVhZGVyLWxpbmsnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmRpZENsb3NlLmVtaXQoKTtcbiAgICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl9mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgICAvLyBTdGFydGluZyBmcm9tIGJyZWFrcG9pbnQgbWVkaXVtLCBlbmFibGUgc2Nyb2xsXG4gICAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByaXZhdGUgX3NldE1lbnVGb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IHRoaXMucXVlcnlTZWxlY3RvcihJU19GT0NVU0FCTEVfUVVFUlkpIGFzIEhUTUxFbGVtZW50O1xuICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGUpO1xuICAgIGZpcnN0Rm9jdXNhYmxlLmZvY3VzKCk7XG4gIH1cblxuICAvLyBTZXQgbWVudSBwb3NpdGlvbiBhbmQgbWF4IGhlaWdodCBpZiB0aGUgYnJlYWtwb2ludCBpcyBtZWRpdW0tdWx0cmEuXG4gIHByaXZhdGUgX3NldE1lbnVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAvLyBTdGFydGluZyBmcm9tIGJyZWFrcG9pbnQgbWVkaXVtXG4gICAgaWYgKFxuICAgICAgIWlzQnJlYWtwb2ludCgnbWVkaXVtJykgfHxcbiAgICAgICF0aGlzLl9tZW51IHx8XG4gICAgICAhdGhpcy5fdHJpZ2dlckVsZW1lbnQgfHxcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJ1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lbnVQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbihcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1tZW51X19jb250ZW50JykhLFxuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItbWVudV9fY29udGFpbmVyJykhLFxuICAgICAge1xuICAgICAgICB2ZXJ0aWNhbE9mZnNldDogTUVOVV9PRkZTRVQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1tZW51LXBvc2l0aW9uLXgnLCBgJHttZW51UG9zaXRpb24ubGVmdH1weGApO1xuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW1lbnUtcG9zaXRpb24teScsIGAke21lbnVQb3NpdGlvbi50b3B9cHhgKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1tZW51LW1heC1oZWlnaHQnLCBtZW51UG9zaXRpb24ubWF4SGVpZ2h0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIC8vIFRPRE86IEhhbmRsZSBjYXNlIHdpdGggb3RoZXIgZWxlbWVudHMgdGhhbiBzYmItbWVudS1idXR0b24vc2JiLW1lbnUtbGluay5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItbWVudV9fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7KGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gdGhpcy5fb25NZW51QW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgICAgICBjbGFzcz1cInNiYi1tZW51XCJcbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fbWVudSA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBAY2xpY2s9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9jbG9zZU9uSW50ZXJhY3RpdmVFbGVtZW50Q2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItbWVudV9fY29udGVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgJHt0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgICAgPyB0aGlzLnJlbmRlckxpc3QoeyBjbGFzczogJ3NiYi1tZW51LWxpc3QnLCBhcmlhTGFiZWw6IHRoaXMubGlzdEFjY2Vzc2liaWxpdHlMYWJlbCB9KVxuICAgICAgICAgICAgICA6IGh0bWxgPHNsb3Q+PC9zbG90PmB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW1lbnUnOiBTYmJNZW51RWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsTUFBTSxjQUFjO0FBQ3BCLE1BQU0sdUJBQXVCO0FBQUEsRUFDM0I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFFQSxJQUFJLFNBQVM7QUFlTixJQUFNLGlCQUFOLGNBQTZCLHNCQUdsQyx1QkFBdUIsRUFBRTtBQUFBLEVBSHBCLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQUt1QixTQUFBLHNCQUFzQixDQUFDLG1CQUFtQixlQUFlO0FBZXJGLFNBQVEsV0FBd0M7QUFT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
543
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL21lbnUvbWVudS9tZW51LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQge1xuICBnZXROZXh0RWxlbWVudEluZGV4LFxuICBpbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgSVNfRk9DVVNBQkxFX1FVRVJZLFxuICBpc0Fycm93S2V5UHJlc3NlZCxcbiAgU2JiRm9jdXNIYW5kbGVyLFxuICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzLFxufSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyLCBTYmJJbmVydENvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZpbmRSZWZlcmVuY2VkRWxlbWVudCwgaXNCcmVha3BvaW50LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiTmFtZWRTbG90TGlzdE1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHtcbiAgZ2V0RWxlbWVudFBvc2l0aW9uLFxuICBpc0V2ZW50T25FbGVtZW50LFxuICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzLFxuICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzLFxufSBmcm9tICcuLi8uLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJNZW51QnV0dG9uRWxlbWVudCB9IGZyb20gJy4uL21lbnUtYnV0dG9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiTWVudUxpbmtFbGVtZW50IH0gZnJvbSAnLi4vbWVudS1saW5rLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbWVudS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5jb25zdCBNRU5VX09GRlNFVCA9IDg7XG5jb25zdCBJTlRFUkFDVElWRV9FTEVNRU5UUyA9IFtcbiAgJ0EnLFxuICAnQlVUVE9OJyxcbiAgJ1NCQi1CVVRUT04nLFxuICAnU0JCLUJVVFRPTi1MSU5LJyxcbiAgJ1NCQi1MSU5LJyxcbiAgJ1NCQi1CTE9DSy1MSU5LJyxcbiAgJ1NCQi1MSU5LLUJVVFRPTicsXG4gICdTQkItQkxPQ0stTElOSy1CVVRUT04nLFxuXTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBjb250ZXh0dWFsIG1lbnUgd2l0aCBvbmUgb3IgbW9yZSBhY3Rpb24gZWxlbWVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLW1lbnUtYnV0dG9uYC9gc2JiLW1lbnUtbGlua2Agb3Igb3RoZXIgZWxlbWVudHMgdG8gdGhlIG1lbnUuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW1lbnVgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbWVudWAgaXMgb3BlbmVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbWVudWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbWVudWAgaXMgY2xvc2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW1lbnUtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLW1lbnUnKVxuZXhwb3J0IGNsYXNzIFNiYk1lbnVFbGVtZW50IGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluPFxuICBTYmJNZW51QnV0dG9uRWxlbWVudCB8IFNiYk1lbnVMaW5rRWxlbWVudCxcbiAgdHlwZW9mIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50XG4+KFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFsnc2JiLW1lbnUtYnV0dG9uJywgJ3NiYi1tZW51LWxpbmsnXTtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIG1lbnUgb3ZlcmxheS5cbiAgICogQWNjZXB0cyBib3RoIGEgc3RyaW5nIChpZCBvZiBhbiBlbGVtZW50KSBvciBhbiBIVE1MIGVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHRyaWdnZXIodmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fdHJpZ2dlcjtcbiAgICB0aGlzLl90cmlnZ2VyID0gdmFsdWU7XG4gICAgdGhpcy5fcmVtb3ZlVHJpZ2dlckNsaWNrTGlzdGVuZXIodGhpcy5fdHJpZ2dlciwgb2xkVmFsdWUpO1xuICB9XG4gIHB1YmxpYyBnZXQgdHJpZ2dlcigpOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyO1xuICB9XG4gIHByaXZhdGUgX3RyaWdnZXI6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgaW5uZXIgbGlzdC5cbiAgICogVXNlZCBvbmx5IGlmIHRoZSBtZW51IGF1dG9tYXRpY2FsbHkgcmVuZGVycyB0aGUgYWN0aW9ucyBpbnNpZGUgYXMgYSBsaXN0LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbGlzdC1hY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KSBwdWJsaWMgbGlzdEFjY2Vzc2liaWxpdHlMYWJlbD86IHN0cmluZztcblxuICBwcml2YXRlIF9tZW51ITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbWVudUNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfZm9jdXNIYW5kbGVyID0gbmV3IFNiYkZvY3VzSGFuZGxlcigpO1xuICBwcml2YXRlIF9zY3JvbGxIYW5kbGVyID0gbmV3IFNiYlNjcm9sbEhhbmRsZXIoKTtcbiAgcHJpdmF0ZSBfaW5lcnRDb250cm9sbGVyID0gbmV3IFNiYkluZXJ0Q29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogT3BlbnMgdGhlIG1lbnUgb24gdHJpZ2dlciBjbGljay5cbiAgICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2luZycgfHwgIXRoaXMuX21lbnUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRNZW51UG9zaXRpb24oKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcblxuICAgIC8vIFN0YXJ0aW5nIGZyb20gYnJlYWtwb2ludCBtZWRpdW0sIGRpc2FibGUgc2Nyb2xsXG4gICAgaWYgKCFpc0JyZWFrcG9pbnQoJ21lZGl1bScpKSB7XG4gICAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtZW51LlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud2lsbENsb3NlLmVtaXQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2xpY2sgYW5kIGNoZWNrcyBpZiBpdHMgdGFyZ2V0IGlzIGEgc2JiLW1lbnUtYnV0dG9uL3NiYi1tZW51LWxpbmsuXG4gICAqL1xuICBwcml2YXRlIF9vbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGFyZ2V0Py5sb2NhbE5hbWUgPT09ICdzYmItbWVudS1idXR0b24nIHx8IHRhcmdldD8ubG9jYWxOYW1lID09PSAnc2JiLW1lbnUtbGluaycpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVuYWJsZWRBY3Rpb25zOiBFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPFNiYk1lbnVCdXR0b25FbGVtZW50IHwgU2JiTWVudUxpbmtFbGVtZW50PihcbiAgICAgICAgJ3NiYi1tZW51LWJ1dHRvbiwgc2JiLW1lbnUtbGluaycsXG4gICAgICApLFxuICAgICkuZmlsdGVyKFxuICAgICAgKGVsOiBTYmJNZW51QnV0dG9uRWxlbWVudCB8IFNiYk1lbnVMaW5rRWxlbWVudCkgPT5cbiAgICAgICAgIWVsLmRpc2FibGVkICYmIGludGVyYWN0aXZpdHlDaGVja2VyLmlzVmlzaWJsZShlbCksXG4gICAgKTtcblxuICAgIGNvbnN0IGN1cnJlbnQgPSBlbmFibGVkQWN0aW9ucy5maW5kSW5kZXgoKGU6IEVsZW1lbnQpID0+IGUgPT09IGV2dC50YXJnZXQpO1xuICAgIGNvbnN0IG5leHRJbmRleCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkQWN0aW9ucy5sZW5ndGgpO1xuXG4gICAgKGVuYWJsZWRBY3Rpb25zW25leHRJbmRleF0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gIH1cblxuICAvLyBDbG9zZXMgdGhlIG1lbnUgb24gXCJFc2NcIiBrZXkgcHJlc3NlZCBhbmQgdHJhcHMgZm9jdXMgd2l0aGluIHRoZSBtZW51LlxuICBwcml2YXRlIGFzeW5jIF9vbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLlxuICBwcml2YXRlIF9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcihcbiAgICBuZXdWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgIG9sZFZhbHVlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX21lbnVDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZSh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuX2Fib3J0LnNpZ25hbDtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHRoaXMuX29uQ2xpY2soZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpLCB7IHNpZ25hbCB9KTtcbiAgICAvLyBEdWUgdG8gdGhlIGZhY3QgdGhhdCBtZW51IGNhbiBib3RoIGJlIGEgbGlzdCBhbmQganVzdCBhIGNvbnRhaW5lciwgd2UgbmVlZCB0byBjaGVjayBpdHNcbiAgICAvLyBzdGF0ZSBiZWZvcmUgdGhlIFNiYk5hbWVkU2xvdExpc3RNaXhpbiBoYW5kbGVzIHRoZSBzbG90Y2hhbmdlIGV2ZW50LCBpbiBvcmRlciB0byBhdm9pZFxuICAgIC8vIGl0IGludGVycHJldGluZyB0aGUgbm9uIGxpc3QgY2FzZSBhcyBhIGxpc3QuXG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgKGUpID0+IHRoaXMuX2NoZWNrTGlzdENhc2UoZSksIHtcbiAgICAgIHNpZ25hbCxcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgLy8gVmFsaWRhdGUgdHJpZ2dlciBlbGVtZW50IGFuZCBhdHRhY2ggZXZlbnQgbGlzdGVuZXJzXG4gICAgdGhpcy5fY29uZmlndXJlKHRoaXMudHJpZ2dlcik7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9tZW51Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrTGlzdENhc2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gSWYgYWxsIGNoaWxkcmVuIGFyZSBzYmItbWVudS1idXR0b24vbWVudS1saW5rIGluc3RhbmNlcywgd2UgcmVuZGVyIHRoZW0gYXMgYSBsaXN0LlxuICAgIGlmIChcbiAgICAgIHRoaXMuY2hpbGRyZW4/Lmxlbmd0aCAmJlxuICAgICAgQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuID8/IFtdKS5ldmVyeShcbiAgICAgICAgKGMpID0+IGMubG9jYWxOYW1lID09PSAnc2JiLW1lbnUtYnV0dG9uJyB8fCBjLmxvY2FsTmFtZSA9PT0gJ3NiYi1tZW51LWxpbmsnLFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuLmZvckVhY2goKGMpID0+IGMucmVtb3ZlQXR0cmlidXRlKCdzbG90JykpO1xuICAgICAgdGhpcy5saXN0Q2hpbGRyZW4gPSBbXTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHJpZ2dlciBpcyB2YWxpZCBhbmQgYXR0YWNoIGNsaWNrIGV2ZW50IGxpc3RlbmVycy5cbiAgcHJpdmF0ZSBfY29uZmlndXJlKHRyaWdnZXI6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuXG4gICAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBmaW5kUmVmZXJlbmNlZEVsZW1lbnQodHJpZ2dlcik7XG5cbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgYHNiYi1tZW51LSR7bmV4dElkKyt9YDtcbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnbWVudScsIHRoaXMuaWQsIHRoaXMuc3RhdGUpO1xuICAgIHRoaXMuX21lbnVDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX21lbnVDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbWVudUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoV2luZG93RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fc2V0TWVudVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRNZW51UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX29uS2V5ZG93bkV2ZW50KGV2ZW50KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljaywge1xuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENsb3NlIG1lbnUgYXQgYW55IGNsaWNrIG9uIGFuIGludGVyYWN0aXZlIGVsZW1lbnQgaW5zaWRlIHRoZSA8c2JiLW1lbnU+IHRoYXQgYnViYmxlcyB0byB0aGUgY29udGFpbmVyLlxuICBwcml2YXRlIF9jbG9zZU9uSW50ZXJhY3RpdmVFbGVtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChJTlRFUkFDVElWRV9FTEVNRU5UUy5pbmNsdWRlcyh0YXJnZXQubm9kZU5hbWUpICYmICF0YXJnZXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG1lbnUuXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSA9IGlzRXZlbnRPbkVsZW1lbnQodGhpcy5fbWVudSwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIENsb3NlIG1lbnUgb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSAmJiAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9tZW51LCBldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gU2V0IG1lbnUgcG9zaXRpb24gKHgsIHkpIHRvICcwJyBvbmNlIHRoZSBtZW51IGlzIGNsb3NlZCBhbmQgdGhlIHRyYW5zaXRpb24gZW5kZWQgdG8gcHJldmVudCB0aGVcbiAgLy8gdmlld3BvcnQgZnJvbSBvdmVyZmxvd2luZy4gQW5kIHNldCB0aGUgZm9jdXMgdG8gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IG9uY2UgdGhlIG1lbnUgaXMgb3Blbi5cbiAgLy8gSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcml2YXRlIF9vbk1lbnVBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuX3NldE1lbnVGb2N1cygpO1xuICAgICAgdGhpcy5fZm9jdXNIYW5kbGVyLnRyYXAodGhpcyk7XG4gICAgICB0aGlzLl9hdHRhY2hXaW5kb3dFdmVudHMoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICB0aGlzLl9tZW51Py5maXJzdEVsZW1lbnRDaGlsZD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuZGVhY3RpdmF0ZSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmZvY3VzKHtcbiAgICAgICAgLy8gV2hlbiBpbnNpZGUgdGhlIHNiYi1oZWFkZXIsIHdlIHByZXZlbnQgdGhlIHNjcm9sbCB0byBhdm9pZCB0aGUgc25hcHBpbmcgdG8gdGhlIHRvcCBvZiB0aGUgcGFnZVxuICAgICAgICBwcmV2ZW50U2Nyb2xsOlxuICAgICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmxvY2FsTmFtZSA9PT0gJ3NiYi1oZWFkZXItYnV0dG9uJyB8fFxuICAgICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmxvY2FsTmFtZSA9PT0gJ3NiYi1oZWFkZXItbGluaycsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCgpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG5cbiAgICAgIC8vIFN0YXJ0aW5nIGZyb20gYnJlYWtwb2ludCBtZWRpdW0sIGVuYWJsZSBzY3JvbGxcbiAgICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgcHJpdmF0ZSBfc2V0TWVudUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gdGhpcy5xdWVyeVNlbGVjdG9yKElTX0ZPQ1VTQUJMRV9RVUVSWSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhmaXJzdEZvY3VzYWJsZSk7XG4gICAgZmlyc3RGb2N1c2FibGUuZm9jdXMoKTtcbiAgfVxuXG4gIC8vIFNldCBtZW51IHBvc2l0aW9uIGFuZCBtYXggaGVpZ2h0IGlmIHRoZSBicmVha3BvaW50IGlzIG1lZGl1bS11bHRyYS5cbiAgcHJpdmF0ZSBfc2V0TWVudVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIC8vIFN0YXJ0aW5nIGZyb20gYnJlYWtwb2ludCBtZWRpdW1cbiAgICBpZiAoXG4gICAgICAhaXNCcmVha3BvaW50KCdtZWRpdW0nKSB8fFxuICAgICAgIXRoaXMuX21lbnUgfHxcbiAgICAgICF0aGlzLl90cmlnZ2VyRWxlbWVudCB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWVudVBvc2l0aW9uID0gZ2V0RWxlbWVudFBvc2l0aW9uKFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW1lbnVfX2NvbnRlbnQnKSEsXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCxcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1tZW51X19jb250YWluZXInKSEsXG4gICAgICB7XG4gICAgICAgIHZlcnRpY2FsT2Zmc2V0OiBNRU5VX09GRlNFVCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW1lbnUtcG9zaXRpb24teCcsIGAke21lbnVQb3NpdGlvbi5sZWZ0fXB4YCk7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItbWVudS1wb3NpdGlvbi15JywgYCR7bWVudVBvc2l0aW9uLnRvcH1weGApO1xuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW1lbnUtbWF4LWhlaWdodCcsIG1lbnVQb3NpdGlvbi5tYXhIZWlnaHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gVE9ETzogSGFuZGxlIGNhc2Ugd2l0aCBvdGhlciBlbGVtZW50cyB0aGFuIHNiYi1tZW51LWJ1dHRvbi9zYmItbWVudS1saW5rLlxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1tZW51X19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHsoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSA9PiB0aGlzLl9vbk1lbnVBbmltYXRpb25FbmQoZXZlbnQpfVxuICAgICAgICAgIGNsYXNzPVwic2JiLW1lbnVcIlxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl9tZW51ID0gZWwgYXMgSFRNTERpdkVsZW1lbnQpKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuX2Nsb3NlT25JbnRlcmFjdGl2ZUVsZW1lbnRDbGljayhldmVudCl9XG4gICAgICAgICAgICBjbGFzcz1cInNiYi1tZW51X19jb250ZW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAke3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aFxuICAgICAgICAgICAgICA/IHRoaXMucmVuZGVyTGlzdCh7IGNsYXNzOiAnc2JiLW1lbnUtbGlzdCcsIGFyaWFMYWJlbDogdGhpcy5saXN0QWNjZXNzaWJpbGl0eUxhYmVsIH0pXG4gICAgICAgICAgICAgIDogaHRtbGA8c2xvdD48L3Nsb3Q+YH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItbWVudSc6IFNiYk1lbnVFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJBLE1BQU0sY0FBYztBQUNwQixNQUFNLHVCQUF1QjtBQUFBLEVBQzNCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBRUEsSUFBSSxTQUFTO0FBZU4sSUFBTSxpQkFBTixjQUE2QixzQkFHbEMsdUJBQXVCLEVBQUU7QUFBQSxFQUhwQixjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFLdUIsU0FBQSxzQkFBc0IsQ0FBQyxtQkFBbUIsZUFBZTtBQWVyRixTQUFRLFdBQXdDO0FBU2hELFNBQVEsa0JBQXNDO0FBQzlDLFNBQVEsNEJBQXFDO0FBR3JDLFNBQUEsU0FBUyxJQUFJLDRC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
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
2
  import { SbbTitleLevel } from '../title.js';
3
-
4
3
  /**
5
4
  * It displays a complex message combining a title, an image, an action and some content.
6
5
  *
@@ -2,7 +2,6 @@ import { SbbActionBaseElement } from '../../core/base-elements.js';
2
2
  import { AbstractConstructor } from '../../core/mixins.js';
3
3
  import { SbbNavigationMarkerElement } from '../navigation-marker.js';
4
4
  import { SbbNavigationSectionElement } from '../navigation-section.js';
5
-
6
5
  export type SbbNavigationActionSize = 's' | 'm' | 'l';
7
6
  export declare class SbbNavigationActionCommonElementMixinType {
8
7
  size?: SbbNavigationActionSize;
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult } from 'lit';
2
2
  import { SbbOpenCloseBaseElement } from '../../core/base-elements.js';
3
-
4
3
  declare const SbbNavigationElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbUpdateSchedulerMixinType> & typeof SbbOpenCloseBaseElement;
5
4
  /**
6
5
  * It displays a navigation menu, wrapping one or more `sbb-navigation-*` components.
@@ -39,6 +38,7 @@ export declare class SbbNavigationElement extends SbbNavigationElement_base {
39
38
  private _windowEventsController;
40
39
  private _abort;
41
40
  private _language;
41
+ private _inertController;
42
42
  private _focusHandler;
43
43
  private _scrollHandler;
44
44
  private _isPointerDownEventOnNavigation;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../../src/elements/navigation/navigation/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAmBtE,OAAO,oCAAoC,CAAC;;AAW5C;;;;;;;;;;;GAWG;AACH,qBAIa,oBAAqB,SAAQ,yBAAgD;IACxF,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;OAEG;IAC0D,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd;;OAEG;IACM,OAAO,CAAC,wBAAwB,CAA4B;IAErE,IAAW,uBAAuB,IAAI,WAAW,GAAG,IAAI,CAEvD;IAED,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,yBAAyB,CAAe;IAChD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,+BAA+B,CAAkB;IACzD,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,yBAAyB,CAAgE;IAEjG;;OAEG;IACI,IAAI,IAAI,IAAI;IAkBnB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACI,KAAK,IAAI,IAAI;IAcpB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB,CAEtB;IAIF,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAGF,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,mBAAmB;IAkBX,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;cAWzB,MAAM,IAAI,cAAc;CAqC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,oBAAoB,CAAC;KACxC;CACF"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../../src/elements/navigation/navigation/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAqBtE,OAAO,oCAAoC,CAAC;;AAW5C;;;;;;;;;;;GAWG;AACH,qBAIa,oBAAqB,SAAQ,yBAAgD;IACxF,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,IACW,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,EAIpD;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAEhD;IACD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;OAEG;IAC0D,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd;;OAEG;IACM,OAAO,CAAC,wBAAwB,CAA4B;IAErE,IAAW,uBAAuB,IAAI,WAAW,GAAG,IAAI,CAEvD;IAED,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,yBAAyB,CAAe;IAChD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,+BAA+B,CAAkB;IACzD,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,yBAAyB,CAAgE;IAEjG;;OAEG;IACI,IAAI,IAAI,IAAI;IAkBnB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACI,KAAK,IAAI,IAAI;IAcpB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB,CAEtB;IAIF,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAI3B;IAGF,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,mBAAmB;IAkBX,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;cAUzB,MAAM,IAAI,cAAc;CAqC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,oBAAoB,CAAC;KACxC;CACF"}
@@ -1,5 +1,4 @@
1
1
  import { SbbButtonBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbNavigationButtonElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbNavigationActionCommonElementMixinType> & typeof SbbButtonBaseElement;
4
3
  /**
5
4
  * It displays a button element that can be used in the `sbb-navigation` component.
@@ -1,5 +1,4 @@
1
1
  import { SbbLinkBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbNavigationLinkElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbNavigationActionCommonElementMixinType> & typeof SbbLinkBaseElement;
4
3
  /**
5
4
  * It displays a link element that can be used in the `sbb-navigation` component.
@@ -2,7 +2,6 @@ import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit'
2
2
  import { WithListChildren } from '../../core/mixins.js';
3
3
  import { SbbNavigationButtonElement } from '../navigation-button.js';
4
4
  import { SbbNavigationLinkElement } from '../navigation-link.js';
5
-
6
5
  declare const SbbNavigationListElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNamedSlotListMixinType<SbbNavigationLinkElement | SbbNavigationButtonElement>> & typeof LitElement;
7
6
  /**
8
7
  * It can be used as a container for one or more `sbb-navigation-button`/`sbb-navigation-link` within a `sbb-navigation-section`.
@@ -2,7 +2,6 @@ import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit'
2
2
  import { WithListChildren } from '../../core/mixins.js';
3
3
  import { SbbNavigationButtonElement } from '../navigation-button.js';
4
4
  import { SbbNavigationLinkElement } from '../navigation-link.js';
5
-
6
5
  declare const SbbNavigationMarkerElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNamedSlotListMixinType<SbbNavigationLinkElement | SbbNavigationButtonElement>> & typeof LitElement;
7
6
  /**
8
7
  * It can be used as a container for one or more `sbb-navigation-button`/`sbb-navigation-link` within a `sbb-navigation`.
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
2
-
3
2
  declare const SbbNavigationSectionElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbUpdateSchedulerMixinType> & typeof LitElement;
4
3
  /**
5
4
  * It can be used as a container for `sbb-navigation-list` within a `sbb-navigation`.
@@ -169,10 +169,6 @@ const style = css`/**
169
169
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
170
170
  /* Scrollbar itself */
171
171
  /* Hide button (top and bottom of the scrollbar) */
172
- height: 100%;
173
- padding-block: var(--sbb-navigation-section-padding-block);
174
- outline: none;
175
- overflow-y: auto;
176
172
  }
177
173
  .sbb-navigation-section__wrapper::-webkit-scrollbar {
178
174
  width: var(--sbb-scrollbar-width);
@@ -201,6 +197,12 @@ const style = css`/**
201
197
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
202
198
  }
203
199
  }
200
+ .sbb-navigation-section__wrapper {
201
+ height: 100%;
202
+ padding-block: var(--sbb-navigation-section-padding-block);
203
+ outline: none;
204
+ overflow-y: auto;
205
+ }
204
206
  :host(:is([data-state=opening], [data-state=closing])) .sbb-navigation-section__wrapper {
205
207
  --sbb-scrollbar-color: transparent;
206
208
  scrollbar-color: transparent transparent;
@@ -602,4 +604,4 @@ SbbNavigationSectionElement = __decorateClass([
602
604
  export {
603
605
  SbbNavigationSectionElement
604
606
  };
605
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZWN0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLXNlY3Rpb24vbmF2aWdhdGlvbi1zZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQge1xuICBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQsXG4gIGdldEZvY3VzYWJsZUVsZW1lbnRzLFxuICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzLFxufSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcywgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRSZWZlcmVuY2VkRWxlbWVudCwgaXNCcmVha3BvaW50LCBzZXRPclJlbW92ZUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IGkxOG5Hb0JhY2sgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcGVuZWRDbG9zZWRTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgeyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7XG4gIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1idXR0b24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLWxpbmsuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uRWxlbWVudCB9IGZyb20gJy4uL25hdmlnYXRpb24uanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLXNlY3Rpb24uc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9idXR0b24vdHJhbnNwYXJlbnQtYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vLi4vZGl2aWRlci5qcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBgc2JiLW5hdmlnYXRpb24tbGlzdGAgd2l0aGluIGEgYHNiYi1uYXZpZ2F0aW9uYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IGludG8gdGhlIGBzYmItbmF2aWdhdGlvbi1zZWN0aW9uYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb24nKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ25hdmlnYXRpb24tc2VjdGlvbicsXG59KVxuQHNsb3RTdGF0ZSgpXG5leHBvcnQgY2xhc3MgU2JiTmF2aWdhdGlvblNlY3Rpb25FbGVtZW50IGV4dGVuZHMgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogVGhlIGxhYmVsIHRvIGJlIHNob3duIGJlZm9yZSB0aGUgYWN0aW9uIGxpc3QuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd0aXRsZS1jb250ZW50JywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgdGl0bGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbmF2aWdhdGlvbiBzZWN0aW9uLlxuICAgKiBBY2NlcHRzIGJvdGggYSBzdHJpbmcgKGlkIG9mIGFuIGVsZW1lbnQpIG9yIGFuIEhUTUwgZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl90cmlnZ2VyO1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcih0aGlzLl90cmlnZ2VyLCBvbGRWYWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBuYXYgZWxlbWVudCBhbmQgaXMgcmVhZCBhcyBhIHRpdGxlIG9mIHRoZSBuYXZpZ2F0aW9uLXNlY3Rpb24uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgYmFjayBidXR0b24gZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktYmFjay1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlCYWNrTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHN0YXRlIG9mIHRoZSBuYXZpZ2F0aW9uIHNlY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIHNldCBfc3RhdGUoc3RhdGU6IFNiYk9wZW5lZENsb3NlZFN0YXRlKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCBzdGF0ZSk7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcywgJ2FyaWEtaGlkZGVuJywgdGhpcy5fc3RhdGUgIT09ICdvcGVuZWQnID8gJ3RydWUnIDogbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3N0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uPzogU2JiTmF2aWdhdGlvbkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvblNlY3Rpb24hOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvblNlY3Rpb25Db250YWluZXJFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogT3BlbnMgdGhlIG5hdmlnYXRpb24gc2VjdGlvbiBvbiB0cmlnZ2VyIGNsaWNrLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlICE9PSAnY2xvc2VkJyB8fCAhdGhpcy5fbmF2aWdhdGlvblNlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVOYXZpZ2F0aW9uQWN0aW9uKCk7XG4gICAgdGhpcy5fY2xvc2VQcmV2aW91c05hdmlnYXRpb25TZWN0aW9uKCk7XG4gICAgdGhpcy5fc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgIHRoaXMuaW5lcnQgPSB0cnVlO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QWN0aXZlTmF2aWdhdGlvbkFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8ubWFya2VyPy5zZWxlY3QodGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VQcmV2aW91c05hdmlnYXRpb25TZWN0aW9uKCk6IHZvaWQge1xuICAgICh0aGlzLl9maXJzdExldmVsTmF2aWdhdGlvbj8uYWN0aXZlTmF2aWdhdGlvblNlY3Rpb24gYXMgU2JiTmF2aWdhdGlvblNlY3Rpb25FbGVtZW50KT8uY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG5hdmlnYXRpb24gc2VjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgIHRoaXMuaW5lcnQgPSB0cnVlO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgfVxuXG4gIC8vIFJlbW92ZXMgdHJpZ2dlciBjbGljayBsaXN0ZW5lciBvbiB0cmlnZ2VyIGNoYW5nZS5cbiAgcHJpdmF0ZSBfcmVtb3ZlVHJpZ2dlckNsaWNrTGlzdGVuZXIoXG4gICAgbmV3VmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgICBvbGRWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fY29uZmlndXJlKHRoaXMudHJpZ2dlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHRyaWdnZXIgaXMgdmFsaWQgYW5kIGF0dGFjaCBjbGljayBldmVudCBsaXN0ZW5lcnMuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSh0cmlnZ2VyOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50KTtcblxuICAgIGlmICghdHJpZ2dlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZmluZFJlZmVyZW5jZWRFbGVtZW50KHRyaWdnZXIpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQsICdtZW51JywgdGhpcy5pZCwgdGhpcy5fc3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25TZWN0aW9uQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuY29ubmVjdGVkU2VjdGlvbiA9IHRoaXM7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5faGFuZGxlTmF2aWdhdGlvblNlY3Rpb25Gb2N1cyhldmVudCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5hdmlnYXRpb25JbmVydCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIChcbiAgICAgIHRoaXMuX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uIS5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1uYXZpZ2F0aW9uX19jb250ZW50JyxcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRcbiAgICApLmluZXJ0ID0gdGhpcy5faXNaZXJvVG9MYXJnZUJyZWFrcG9pbnQoKSAmJiB0aGlzLl9zdGF0ZSAhPT0gJ2Nsb3NlZCc7XG4gIH1cblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5fc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5fc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuaW5lcnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2F0dGFjaFdpbmRvd0V2ZW50cygpO1xuICAgICAgdGhpcy5fc2V0TmF2aWdhdGlvbkluZXJ0KCk7XG4gICAgICB0aGlzLl9zZXROYXZpZ2F0aW9uU2VjdGlvbkZvY3VzKCk7XG4gICAgICB0aGlzLl9jaGVja0FjdGl2ZUFjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250YWluZXJFbGVtZW50LnNjcm9sbFRvKDAsIDApO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX3Jlc2V0TGlzdHMoKTtcbiAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25JbmVydCgpO1xuICAgICAgaWYgKHRoaXMuX2lzWmVyb1RvTGFyZ2VCcmVha3BvaW50KCkgJiYgdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0TGlzdHMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNlY3Rpb24tYWN0aW9uXVtkYXRhLWFjdGlvbi1hY3RpdmVdJyksXG4gICAgKSBhcyAoU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQgfCBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQpW107XG4gICAgYWN0aXZlQWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiBhY3Rpb24ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWFjdGlvbi1hY3RpdmUnKSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgbmF2aWdhdGlvbiBzZWN0aW9uIG9uIGFjdGlvbiBjbGljayBvciBzYmItbmF2aWdhdGlvbi1zZWN0aW9uLWNsb3NlIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlTmF2aWdhdGlvblNlY3Rpb25DbG9zZSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBjbGljayB3YXMgdHJpZ2dlcmVkIG9uIGFuIGVsZW1lbnQgdGhhdCBzaG91bGQgY2xvc2UgdGhlIHNlY3Rpb24uXG4gIHByaXZhdGUgX2hhbmRsZU5hdmlnYXRpb25TZWN0aW9uQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgY29tcG9zZWRQYXRoRWxlbWVudHMgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlbCkgPT4gZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpO1xuICAgIGlmIChjb21wb3NlZFBhdGhFbGVtZW50cy5zb21lKChlbCkgPT4gdGhpcy5faXNDbG9zZUVsZW1lbnQoZWwgYXMgSFRNTEVsZW1lbnQpKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9pc0Nsb3NlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnQScgfHxcbiAgICAgICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiZcbiAgICAgICAgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItbmF2aWdhdGlvbi1jbG9zZScpIHx8XG4gICAgICAgICAgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tY2xvc2UnKSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb1RvTGFyZ2VCcmVha3BvaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0JyZWFrcG9pbnQoJ3plcm8nLCAnbGFyZ2UnKTtcbiAgfVxuXG4gIC8vIENsb3NlcyB0aGUgbmF2aWdhdGlvbiBvbiBcIkVzY1wiIGtleSBwcmVzc2VkLlxuICBwcml2YXRlIF9vbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ29wZW5lZCcgJiYgZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByaXZhdGUgX3NldE5hdmlnYXRpb25TZWN0aW9uRm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbGVtZW50ID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgW3RoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignI3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tYmFjay1idXR0b24nKV1cbiAgICAgICAgLmNvbmNhdChBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pKVxuICAgICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KSxcbiAgICApO1xuICAgIGlmIChmaXJzdEZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGVFbGVtZW50KTtcbiAgICAgIGZpcnN0Rm9jdXNhYmxlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlQWN0aW9uKCk6IHZvaWQge1xuICAgIChcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspLnNiYi1hY3RpdmUnLFxuICAgICAgKSBhcyBIVE1MRWxlbWVudFxuICAgICk/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1hY3Rpb24tYWN0aXZlJywgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOYXZpZ2F0aW9uU2VjdGlvbkZvY3VzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicgfHwgdGhpcy5faXNaZXJvVG9MYXJnZUJyZWFrcG9pbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIER5bmFtaWNhbGx5IGdldCBmaXJzdCBhbmQgbGFzdCBmb2N1c2FibGUgZWxlbWVudCwgYXMgdGhpcyBtaWdodCBoYXZlIGNoYW5nZWQgc2luY2Ugb3BlbmluZyBvdmVybGF5XG4gICAgY29uc3QgbmF2aWdhdGlvbkNoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuY2xvc2VzdCgnc2JiLW5hdmlnYXRpb24nKSEuc2hhZG93Um9vdCEuY2hpbGRyZW4sXG4gICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IG5hdmlnYXRpb25Gb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKG5hdmlnYXRpb25DaGlsZHJlbiwge1xuICAgICAgZmlsdGVyOiAoZWwpID0+IGVsLm5vZGVOYW1lICE9PSAnU0JCLU5BVklHQVRJT04tU0VDVElPTicsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWN0aW9uQ2hpbGRyZW46IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdCEuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgY29uc3Qgc2VjdGlvbkZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoc2VjdGlvbkNoaWxkcmVuKTtcblxuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gc2VjdGlvbkZvY3VzYWJsZUVsZW1lbnRzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxhc3RGb2N1c2FibGUgPSBzZWN0aW9uRm9jdXNhYmxlRWxlbWVudHNbXG4gICAgICBzZWN0aW9uRm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMVxuICAgIF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGV2ZW50LnNoaWZ0S2V5XG4gICAgICA/IHRoaXMuX3RyaWdnZXJFbGVtZW50XG4gICAgICA6IG5hdmlnYXRpb25Gb2N1c2FibGVFbGVtZW50c1tuYXZpZ2F0aW9uRm9jdXNhYmxlRWxlbWVudHMuaW5kZXhPZih0aGlzLl90cmlnZ2VyRWxlbWVudCEpICsgMV07XG4gICAgY29uc3QgcGl2b3QgPSBldmVudC5zaGlmdEtleSA/IGZpcnN0Rm9jdXNhYmxlIDogbGFzdEZvY3VzYWJsZTtcblxuICAgIGlmIChcbiAgICAgICEhZWxlbWVudFRvRm9jdXMgJiZcbiAgICAgICgoZmlyc3RGb2N1c2FibGUuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudCB8IFNoYWRvd1Jvb3QpLmFjdGl2ZUVsZW1lbnQgPT09IHBpdm90IHx8XG4gICAgICAgIChsYXN0Rm9jdXNhYmxlLmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5hY3RpdmVFbGVtZW50ID09PSBwaXZvdClcbiAgICApIHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItbmF2aWdhdGlvbi1zZWN0aW9uLSR7bmV4dElkKyt9YDtcbiAgICB0aGlzLl9zdGF0ZSB8fD0gJ2Nsb3NlZCc7XG4gICAgLy8gVmFsaWRhdGUgdHJpZ2dlciBlbGVtZW50IGFuZCBhdHRhY2ggZXZlbnQgbGlzdGVuZXJzXG4gICAgdGhpcy5fY29uZmlndXJlKHRoaXMudHJpZ2dlcik7XG4gICAgdGhpcy5fZmlyc3RMZXZlbE5hdmlnYXRpb24gPSB0aGlzLl90cmlnZ2VyRWxlbWVudD8uY2xvc2VzdD8uKCdzYmItbmF2aWdhdGlvbicpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX19jb250YWluZXJcIlxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250YWluZXJFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgPG5hdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHsoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSA9PiB0aGlzLl9vbkFuaW1hdGlvbkVuZChldmVudCl9XG4gICAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9JHshdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgPyAndGl0bGUnIDogbm90aGluZ31cbiAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgPyB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCA6IG5vdGhpbmd9XG4gICAgICAgICAgJHtyZWYoXG4gICAgICAgICAgICAobmF2aWdhdGlvblNlY3Rpb25SZWY/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAodGhpcy5fbmF2aWdhdGlvblNlY3Rpb24gPSBuYXZpZ2F0aW9uU2VjdGlvblJlZiBhcyBIVE1MRWxlbWVudCksXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX193cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvbl9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBCYWNrIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICA8c2JiLXRyYW5zcGFyZW50LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWQ9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uLWJhY2stYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvbl9fYmFja1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5QmFja0xhYmVsIHx8IGkxOG5Hb0JhY2tbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICAgICAgICBuZWdhdGl2ZVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1jbG9zZVxuICAgICAgICAgICAgICAgID48L3NiYi10cmFuc3BhcmVudC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX3RpdGxlXCIgaWQ9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+JHt0aGlzLnRpdGxlQ29udGVudH08L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW5hdmlnYXRpb24tc2VjdGlvbic6IFNiYk5hdmlnYXRpb25TZWN0aW9uRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLElBQUksU0FBUztBQVlOLElBQU0sOEJBQU4sY0FBMEMsd0JBQXdCLFVBQVUsRUFBRTtBQUFBLEVBQTlFLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQXFCTCxTQUFRLFdBQXdDO0FBeUJoRCxTQUFRLHdCQUFzRDtBQUc5RCxTQUFRLGtCQUFxRDtBQUdyRCxTQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQXFJMUMsU0FBQSxnQ0FBZ0MsQ0FBQyxVQUF1QjtBQUN4RCxZQUFBLHVCQUF1QixNQUMxQixlQUNBLE9BQU8sQ0FBQyxP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
607
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZWN0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLXNlY3Rpb24vbmF2aWdhdGlvbi1zZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQge1xuICBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQsXG4gIGdldEZvY3VzYWJsZUVsZW1lbnRzLFxuICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzLFxufSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcywgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRSZWZlcmVuY2VkRWxlbWVudCwgaXNCcmVha3BvaW50LCBzZXRPclJlbW92ZUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IGkxOG5Hb0JhY2sgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcGVuZWRDbG9zZWRTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgeyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7XG4gIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1idXR0b24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLWxpbmsuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uRWxlbWVudCB9IGZyb20gJy4uL25hdmlnYXRpb24uanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLXNlY3Rpb24uc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9idXR0b24vdHJhbnNwYXJlbnQtYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vLi4vZGl2aWRlci5qcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBgc2JiLW5hdmlnYXRpb24tbGlzdGAgd2l0aGluIGEgYHNiYi1uYXZpZ2F0aW9uYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IGludG8gdGhlIGBzYmItbmF2aWdhdGlvbi1zZWN0aW9uYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb24nKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ25hdmlnYXRpb24tc2VjdGlvbicsXG59KVxuQHNsb3RTdGF0ZSgpXG5leHBvcnQgY2xhc3MgU2JiTmF2aWdhdGlvblNlY3Rpb25FbGVtZW50IGV4dGVuZHMgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogVGhlIGxhYmVsIHRvIGJlIHNob3duIGJlZm9yZSB0aGUgYWN0aW9uIGxpc3QuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd0aXRsZS1jb250ZW50JywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgdGl0bGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbmF2aWdhdGlvbiBzZWN0aW9uLlxuICAgKiBBY2NlcHRzIGJvdGggYSBzdHJpbmcgKGlkIG9mIGFuIGVsZW1lbnQpIG9yIGFuIEhUTUwgZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl90cmlnZ2VyO1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcih0aGlzLl90cmlnZ2VyLCBvbGRWYWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBuYXYgZWxlbWVudCBhbmQgaXMgcmVhZCBhcyBhIHRpdGxlIG9mIHRoZSBuYXZpZ2F0aW9uLXNlY3Rpb24uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgYmFjayBidXR0b24gZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktYmFjay1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlCYWNrTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHN0YXRlIG9mIHRoZSBuYXZpZ2F0aW9uIHNlY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIHNldCBfc3RhdGUoc3RhdGU6IFNiYk9wZW5lZENsb3NlZFN0YXRlKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCBzdGF0ZSk7XG4gICAgc2V0T3JSZW1vdmVBdHRyaWJ1dGUodGhpcywgJ2FyaWEtaGlkZGVuJywgdGhpcy5fc3RhdGUgIT09ICdvcGVuZWQnID8gJ3RydWUnIDogbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3N0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uPzogU2JiTmF2aWdhdGlvbkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvblNlY3Rpb24hOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvblNlY3Rpb25Db250YWluZXJFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogT3BlbnMgdGhlIG5hdmlnYXRpb24gc2VjdGlvbiBvbiB0cmlnZ2VyIGNsaWNrLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlICE9PSAnY2xvc2VkJyB8fCAhdGhpcy5fbmF2aWdhdGlvblNlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVOYXZpZ2F0aW9uQWN0aW9uKCk7XG4gICAgdGhpcy5fY2xvc2VQcmV2aW91c05hdmlnYXRpb25TZWN0aW9uKCk7XG4gICAgdGhpcy5fc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgIHRoaXMuaW5lcnQgPSB0cnVlO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QWN0aXZlTmF2aWdhdGlvbkFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8ubWFya2VyPy5zZWxlY3QodGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VQcmV2aW91c05hdmlnYXRpb25TZWN0aW9uKCk6IHZvaWQge1xuICAgICh0aGlzLl9maXJzdExldmVsTmF2aWdhdGlvbj8uYWN0aXZlTmF2aWdhdGlvblNlY3Rpb24gYXMgU2JiTmF2aWdhdGlvblNlY3Rpb25FbGVtZW50KT8uY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG5hdmlnYXRpb24gc2VjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgIHRoaXMuaW5lcnQgPSB0cnVlO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgfVxuXG4gIC8vIFJlbW92ZXMgdHJpZ2dlciBjbGljayBsaXN0ZW5lciBvbiB0cmlnZ2VyIGNoYW5nZS5cbiAgcHJpdmF0ZSBfcmVtb3ZlVHJpZ2dlckNsaWNrTGlzdGVuZXIoXG4gICAgbmV3VmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgICBvbGRWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fY29uZmlndXJlKHRoaXMudHJpZ2dlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHRyaWdnZXIgaXMgdmFsaWQgYW5kIGF0dGFjaCBjbGljayBldmVudCBsaXN0ZW5lcnMuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSh0cmlnZ2VyOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50KTtcblxuICAgIGlmICghdHJpZ2dlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZmluZFJlZmVyZW5jZWRFbGVtZW50KHRyaWdnZXIpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXModGhpcy5fdHJpZ2dlckVsZW1lbnQsICdtZW51JywgdGhpcy5pZCwgdGhpcy5fc3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25TZWN0aW9uQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuY29ubmVjdGVkU2VjdGlvbiA9IHRoaXM7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9uYXZpZ2F0aW9uU2VjdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5faGFuZGxlTmF2aWdhdGlvblNlY3Rpb25Gb2N1cyhldmVudCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5hdmlnYXRpb25JbmVydCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIChcbiAgICAgIHRoaXMuX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uIS5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1uYXZpZ2F0aW9uX19jb250ZW50JyxcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRcbiAgICApLmluZXJ0ID0gdGhpcy5faXNaZXJvVG9MYXJnZUJyZWFrcG9pbnQoKSAmJiB0aGlzLl9zdGF0ZSAhPT0gJ2Nsb3NlZCc7XG4gIH1cblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5fc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5fc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuaW5lcnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2F0dGFjaFdpbmRvd0V2ZW50cygpO1xuICAgICAgdGhpcy5fc2V0TmF2aWdhdGlvbkluZXJ0KCk7XG4gICAgICB0aGlzLl9zZXROYXZpZ2F0aW9uU2VjdGlvbkZvY3VzKCk7XG4gICAgICB0aGlzLl9jaGVja0FjdGl2ZUFjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250YWluZXJFbGVtZW50LnNjcm9sbFRvKDAsIDApO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX3Jlc2V0TGlzdHMoKTtcbiAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25JbmVydCgpO1xuICAgICAgaWYgKHRoaXMuX2lzWmVyb1RvTGFyZ2VCcmVha3BvaW50KCkgJiYgdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0TGlzdHMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNlY3Rpb24tYWN0aW9uXVtkYXRhLWFjdGlvbi1hY3RpdmVdJyksXG4gICAgKSBhcyAoU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQgfCBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQpW107XG4gICAgYWN0aXZlQWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiBhY3Rpb24ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWFjdGlvbi1hY3RpdmUnKSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgbmF2aWdhdGlvbiBzZWN0aW9uIG9uIGFjdGlvbiBjbGljayBvciBzYmItbmF2aWdhdGlvbi1zZWN0aW9uLWNsb3NlIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlTmF2aWdhdGlvblNlY3Rpb25DbG9zZSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBjbGljayB3YXMgdHJpZ2dlcmVkIG9uIGFuIGVsZW1lbnQgdGhhdCBzaG91bGQgY2xvc2UgdGhlIHNlY3Rpb24uXG4gIHByaXZhdGUgX2hhbmRsZU5hdmlnYXRpb25TZWN0aW9uQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgY29tcG9zZWRQYXRoRWxlbWVudHMgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlbCkgPT4gZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpO1xuICAgIGlmIChjb21wb3NlZFBhdGhFbGVtZW50cy5zb21lKChlbCkgPT4gdGhpcy5faXNDbG9zZUVsZW1lbnQoZWwgYXMgSFRNTEVsZW1lbnQpKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9pc0Nsb3NlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnQScgfHxcbiAgICAgICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiZcbiAgICAgICAgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItbmF2aWdhdGlvbi1jbG9zZScpIHx8XG4gICAgICAgICAgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tY2xvc2UnKSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb1RvTGFyZ2VCcmVha3BvaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0JyZWFrcG9pbnQoJ3plcm8nLCAnbGFyZ2UnKTtcbiAgfVxuXG4gIC8vIENsb3NlcyB0aGUgbmF2aWdhdGlvbiBvbiBcIkVzY1wiIGtleSBwcmVzc2VkLlxuICBwcml2YXRlIF9vbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ29wZW5lZCcgJiYgZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByaXZhdGUgX3NldE5hdmlnYXRpb25TZWN0aW9uRm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbGVtZW50ID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgW3RoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignI3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tYmFjay1idXR0b24nKV1cbiAgICAgICAgLmNvbmNhdChBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pKVxuICAgICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KSxcbiAgICApO1xuICAgIGlmIChmaXJzdEZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGVFbGVtZW50KTtcbiAgICAgIGZpcnN0Rm9jdXNhYmxlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlQWN0aW9uKCk6IHZvaWQge1xuICAgIChcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspLnNiYi1hY3RpdmUnLFxuICAgICAgKSBhcyBIVE1MRWxlbWVudFxuICAgICk/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1hY3Rpb24tYWN0aXZlJywgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOYXZpZ2F0aW9uU2VjdGlvbkZvY3VzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicgfHwgdGhpcy5faXNaZXJvVG9MYXJnZUJyZWFrcG9pbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIER5bmFtaWNhbGx5IGdldCBmaXJzdCBhbmQgbGFzdCBmb2N1c2FibGUgZWxlbWVudCwgYXMgdGhpcyBtaWdodCBoYXZlIGNoYW5nZWQgc2luY2Ugb3BlbmluZyBvdmVybGF5XG4gICAgY29uc3QgbmF2aWdhdGlvbkNoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuY2xvc2VzdCgnc2JiLW5hdmlnYXRpb24nKSEuc2hhZG93Um9vdCEuY2hpbGRyZW4sXG4gICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IG5hdmlnYXRpb25Gb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKG5hdmlnYXRpb25DaGlsZHJlbiwge1xuICAgICAgZmlsdGVyOiAoZWwpID0+IGVsLm5vZGVOYW1lICE9PSAnU0JCLU5BVklHQVRJT04tU0VDVElPTicsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWN0aW9uQ2hpbGRyZW46IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdCEuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgY29uc3Qgc2VjdGlvbkZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoc2VjdGlvbkNoaWxkcmVuKTtcblxuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gc2VjdGlvbkZvY3VzYWJsZUVsZW1lbnRzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxhc3RGb2N1c2FibGUgPSBzZWN0aW9uRm9jdXNhYmxlRWxlbWVudHNbXG4gICAgICBzZWN0aW9uRm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMVxuICAgIF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGV2ZW50LnNoaWZ0S2V5XG4gICAgICA/IHRoaXMuX3RyaWdnZXJFbGVtZW50XG4gICAgICA6IG5hdmlnYXRpb25Gb2N1c2FibGVFbGVtZW50c1tuYXZpZ2F0aW9uRm9jdXNhYmxlRWxlbWVudHMuaW5kZXhPZih0aGlzLl90cmlnZ2VyRWxlbWVudCEpICsgMV07XG4gICAgY29uc3QgcGl2b3QgPSBldmVudC5zaGlmdEtleSA/IGZpcnN0Rm9jdXNhYmxlIDogbGFzdEZvY3VzYWJsZTtcblxuICAgIGlmIChcbiAgICAgICEhZWxlbWVudFRvRm9jdXMgJiZcbiAgICAgICgoZmlyc3RGb2N1c2FibGUuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudCB8IFNoYWRvd1Jvb3QpLmFjdGl2ZUVsZW1lbnQgPT09IHBpdm90IHx8XG4gICAgICAgIChsYXN0Rm9jdXNhYmxlLmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5hY3RpdmVFbGVtZW50ID09PSBwaXZvdClcbiAgICApIHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItbmF2aWdhdGlvbi1zZWN0aW9uLSR7bmV4dElkKyt9YDtcbiAgICB0aGlzLl9zdGF0ZSB8fD0gJ2Nsb3NlZCc7XG4gICAgLy8gVmFsaWRhdGUgdHJpZ2dlciBlbGVtZW50IGFuZCBhdHRhY2ggZXZlbnQgbGlzdGVuZXJzXG4gICAgdGhpcy5fY29uZmlndXJlKHRoaXMudHJpZ2dlcik7XG4gICAgdGhpcy5fZmlyc3RMZXZlbE5hdmlnYXRpb24gPSB0aGlzLl90cmlnZ2VyRWxlbWVudD8uY2xvc2VzdD8uKCdzYmItbmF2aWdhdGlvbicpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX19jb250YWluZXJcIlxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fbmF2aWdhdGlvblNlY3Rpb25Db250YWluZXJFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgPG5hdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHsoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSA9PiB0aGlzLl9vbkFuaW1hdGlvbkVuZChldmVudCl9XG4gICAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9JHshdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgPyAndGl0bGUnIDogbm90aGluZ31cbiAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgPyB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCA6IG5vdGhpbmd9XG4gICAgICAgICAgJHtyZWYoXG4gICAgICAgICAgICAobmF2aWdhdGlvblNlY3Rpb25SZWY/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAodGhpcy5fbmF2aWdhdGlvblNlY3Rpb24gPSBuYXZpZ2F0aW9uU2VjdGlvblJlZiBhcyBIVE1MRWxlbWVudCksXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX193cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvbl9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBCYWNrIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICA8c2JiLXRyYW5zcGFyZW50LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWQ9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uLWJhY2stYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvbl9fYmFja1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5QmFja0xhYmVsIHx8IGkxOG5Hb0JhY2tbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICAgICAgICBuZWdhdGl2ZVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1jbG9zZVxuICAgICAgICAgICAgICAgID48L3NiYi10cmFuc3BhcmVudC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX3RpdGxlXCIgaWQ9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+JHt0aGlzLnRpdGxlQ29udGVudH08L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW5hdmlnYXRpb24tc2VjdGlvbic6IFNiYk5hdmlnYXRpb25TZWN0aW9uRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QkEsSUFBSSxTQUFTO0FBWU4sSUFBTSw4QkFBTixjQUEwQyx3QkFBd0IsVUFBVSxFQUFFO0FBQUEsRUFBOUUsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBcUJMLFNBQVEsV0FBd0M7QUF5QmhELFNBQVEsd0JBQXNEO0FBRzlELFNBQVEsa0JBQXFEO0FBR3JELFNBQUEsWUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBcUkxQyxTQUFBLGdDQUFnQyxDQUFDLFVBQXVCO0FBQ3hELFlBQUEsdUJBQXVCLE1BQzFCLGVBQ0EsT0FBTyxDQUFD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