@sbb-esta/lyne-elements 2.3.0 → 2.5.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 (428) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +1 -0
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  3. package/autocomplete/autocomplete.d.ts.map +1 -1
  4. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid.js +0 -1
  6. package/autocomplete.js +28 -28
  7. package/button/common/button-common.d.ts +1 -2
  8. package/button/common/button-common.d.ts.map +1 -1
  9. package/button/common.js +4 -4
  10. package/calendar/calendar.d.ts +55 -11
  11. package/calendar/calendar.d.ts.map +1 -1
  12. package/calendar.js +374 -224
  13. package/card/common/card-action-common.d.ts.map +1 -1
  14. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  15. package/checkbox/checkbox-group.js +1 -1
  16. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  17. package/clock/clock.d.ts +8 -0
  18. package/clock/clock.d.ts.map +1 -1
  19. package/clock.js +40 -31
  20. package/core/a11y/focus.d.ts.map +1 -1
  21. package/core/base-elements.js +36 -36
  22. package/core/controllers/escapable-overlay-controller.d.ts +11 -0
  23. package/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
  24. package/core/controllers/inert-controller.d.ts +3 -3
  25. package/core/controllers/inert-controller.d.ts.map +1 -1
  26. package/core/controllers.d.ts +1 -0
  27. package/core/controllers.d.ts.map +1 -1
  28. package/core/controllers.js +79 -52
  29. package/core/datetime/date-adapter.d.ts +4 -2
  30. package/core/datetime/date-adapter.d.ts.map +1 -1
  31. package/core/datetime/native-date-adapter.d.ts +1 -1
  32. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  33. package/core/datetime.js +51 -43
  34. package/core/decorators/date-converter.d.ts +8 -0
  35. package/core/decorators/date-converter.d.ts.map +1 -0
  36. package/core/decorators/date-only-type.d.ts +8 -0
  37. package/core/decorators/date-only-type.d.ts.map +1 -0
  38. package/core/decorators/force-type.d.ts +1 -1
  39. package/core/decorators/force-type.d.ts.map +1 -1
  40. package/core/decorators/get-override.d.ts.map +1 -1
  41. package/core/decorators/handle-distinct-change.d.ts.map +1 -1
  42. package/core/decorators/host-attributes.d.ts.map +1 -1
  43. package/core/decorators/slot-state.d.ts.map +1 -1
  44. package/core/decorators.d.ts +2 -0
  45. package/core/decorators.d.ts.map +1 -1
  46. package/core/decorators.js +61 -41
  47. package/core/dom/input-element.d.ts +1 -1
  48. package/core/dom/input-element.d.ts.map +1 -1
  49. package/core/dom.js +5 -5
  50. package/core/eventing/throttle.d.ts.map +1 -1
  51. package/core/i18n/i18n.d.ts +5 -0
  52. package/core/i18n/i18n.d.ts.map +1 -1
  53. package/core/i18n.js +138 -108
  54. package/core/mixins/animation-complete-mixin.d.ts +13 -0
  55. package/core/mixins/animation-complete-mixin.d.ts.map +1 -0
  56. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  57. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  58. package/core/mixins/form-associated-input-mixin.d.ts +25 -0
  59. package/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
  60. package/core/mixins/form-associated-mixin.d.ts +13 -0
  61. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  62. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  63. package/core/mixins/hydration-mixin.d.ts.map +1 -1
  64. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  65. package/core/mixins/negative-mixin.d.ts.map +1 -1
  66. package/core/mixins/panel-mixin.d.ts.map +1 -1
  67. package/core/mixins/required-mixin.d.ts.map +1 -1
  68. package/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  69. package/core/mixins.d.ts +2 -0
  70. package/core/mixins.d.ts.map +1 -1
  71. package/core/mixins.js +566 -341
  72. package/core/styles/core.scss +84 -1
  73. package/core/styles/mixins/link.scss +14 -0
  74. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +3 -0
  75. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +4 -1
  76. package/core/testing/mocha-extensions.d.ts.map +1 -1
  77. package/core/testing/wait-for-render.d.ts.map +1 -1
  78. package/core.css +53 -3
  79. package/custom-elements.json +37278 -30220
  80. package/date-input/date-input.d.ts +75 -0
  81. package/date-input/date-input.d.ts.map +1 -0
  82. package/date-input.d.ts +2 -0
  83. package/date-input.d.ts.map +1 -0
  84. package/date-input.js +155 -0
  85. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  86. package/datepicker/common.js +49 -45
  87. package/datepicker/datepicker/datepicker.d.ts +16 -6
  88. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  89. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  90. package/datepicker/datepicker-toggle.js +41 -38
  91. package/datepicker/datepicker.js +95 -77
  92. package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
  93. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  94. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  95. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  96. package/development/autocomplete-grid/autocomplete-grid.js +1 -2
  97. package/development/autocomplete.js +9 -4
  98. package/development/button/common/button-common.d.ts +1 -2
  99. package/development/button/common/button-common.d.ts.map +1 -1
  100. package/development/button/common.js +26 -24
  101. package/development/calendar/calendar.d.ts +55 -11
  102. package/development/calendar/calendar.d.ts.map +1 -1
  103. package/development/calendar.js +301 -87
  104. package/development/card/common/card-action-common.d.ts.map +1 -1
  105. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  106. package/development/checkbox/checkbox-group.js +2 -2
  107. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  108. package/development/clock/clock.d.ts +8 -0
  109. package/development/clock/clock.d.ts.map +1 -1
  110. package/development/clock.js +20 -2
  111. package/development/core/a11y/focus.d.ts.map +1 -1
  112. package/development/core/a11y.js +1 -1
  113. package/development/core/base-elements.js +6 -6
  114. package/development/core/controllers/escapable-overlay-controller.d.ts +11 -0
  115. package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
  116. package/development/core/controllers/inert-controller.d.ts +3 -3
  117. package/development/core/controllers/inert-controller.d.ts.map +1 -1
  118. package/development/core/controllers.d.ts +1 -0
  119. package/development/core/controllers.d.ts.map +1 -1
  120. package/development/core/controllers.js +41 -7
  121. package/development/core/datetime/date-adapter.d.ts +4 -2
  122. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  123. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  124. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  125. package/development/core/datetime.js +14 -2
  126. package/development/core/decorators/date-converter.d.ts +8 -0
  127. package/development/core/decorators/date-converter.d.ts.map +1 -0
  128. package/development/core/decorators/date-only-type.d.ts +8 -0
  129. package/development/core/decorators/date-only-type.d.ts.map +1 -0
  130. package/development/core/decorators/force-type.d.ts +1 -1
  131. package/development/core/decorators/force-type.d.ts.map +1 -1
  132. package/development/core/decorators/get-override.d.ts.map +1 -1
  133. package/development/core/decorators/handle-distinct-change.d.ts.map +1 -1
  134. package/development/core/decorators/host-attributes.d.ts.map +1 -1
  135. package/development/core/decorators/slot-state.d.ts.map +1 -1
  136. package/development/core/decorators.d.ts +2 -0
  137. package/development/core/decorators.d.ts.map +1 -1
  138. package/development/core/decorators.js +27 -6
  139. package/development/core/dom/input-element.d.ts +1 -1
  140. package/development/core/dom/input-element.d.ts.map +1 -1
  141. package/development/core/dom.js +3 -3
  142. package/development/core/eventing/throttle.d.ts.map +1 -1
  143. package/development/core/i18n/i18n.d.ts +5 -0
  144. package/development/core/i18n/i18n.d.ts.map +1 -1
  145. package/development/core/i18n.js +36 -1
  146. package/development/core/mixins/animation-complete-mixin.d.ts +13 -0
  147. package/development/core/mixins/animation-complete-mixin.d.ts.map +1 -0
  148. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  149. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  150. package/development/core/mixins/form-associated-input-mixin.d.ts +25 -0
  151. package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
  152. package/development/core/mixins/form-associated-mixin.d.ts +13 -0
  153. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  154. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  155. package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
  156. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  157. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  158. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  159. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  160. package/development/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  161. package/development/core/mixins.d.ts +2 -0
  162. package/development/core/mixins.d.ts.map +1 -1
  163. package/development/core/mixins.js +428 -88
  164. package/development/core/testing/mocha-extensions.d.ts.map +1 -1
  165. package/development/core/testing/wait-for-render.d.ts.map +1 -1
  166. package/development/date-input/date-input.d.ts +75 -0
  167. package/development/date-input/date-input.d.ts.map +1 -0
  168. package/development/date-input.d.ts +2 -0
  169. package/development/date-input.d.ts.map +1 -0
  170. package/development/date-input.js +267 -0
  171. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  172. package/development/datepicker/common.js +11 -2
  173. package/development/datepicker/datepicker/datepicker.d.ts +16 -6
  174. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  175. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  176. package/development/datepicker/datepicker-toggle.js +12 -3
  177. package/development/datepicker/datepicker.js +66 -39
  178. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  179. package/development/dialog/dialog-title/dialog-title.d.ts +3 -1
  180. package/development/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  181. package/development/dialog/dialog-title.js +7 -2
  182. package/development/dialog/dialog.js +3 -1
  183. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  184. package/development/expansion-panel/expansion-panel.js +2 -2
  185. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  186. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  187. package/development/flip-card/flip-card-details.js +5 -3
  188. package/development/form-field/form-field/form-field.d.ts +1 -1
  189. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  190. package/development/form-field/form-field.js +19 -13
  191. package/development/header/common/header-action-common.d.ts.map +1 -1
  192. package/development/header/common.js +2 -2
  193. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  194. package/development/icon/icon-request.d.ts.map +1 -1
  195. package/development/icon/icon-validate.d.ts.map +1 -1
  196. package/development/link/common/block-link-common.d.ts.map +1 -1
  197. package/development/link/common/inline-link-common.d.ts.map +1 -1
  198. package/development/link/common/link-common.d.ts.map +1 -1
  199. package/development/link/common.js +13 -1
  200. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  201. package/development/menu/menu/menu.d.ts +1 -1
  202. package/development/menu/menu/menu.d.ts.map +1 -1
  203. package/development/menu/menu.js +8 -15
  204. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  205. package/development/navigation/navigation/navigation.d.ts +1 -3
  206. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  207. package/development/navigation/navigation.js +11 -21
  208. package/development/overlay/overlay-base-element.d.ts +2 -2
  209. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  210. package/development/overlay/overlay.d.ts.map +1 -1
  211. package/development/overlay.js +9 -13
  212. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  213. package/development/popover/popover/popover.d.ts +1 -1
  214. package/development/popover/popover/popover.d.ts.map +1 -1
  215. package/development/popover/popover.js +5 -15
  216. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  217. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  218. package/development/radio-button/radio-button-group.js +2 -2
  219. package/development/sbb-tokens-CSAKTXUi.js +1 -1
  220. package/development/select/select.d.ts +3 -1
  221. package/development/select/select.d.ts.map +1 -1
  222. package/development/select.js +12 -8
  223. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  224. package/development/selection-expansion-panel.js +2 -2
  225. package/development/sidebar/common.d.ts +1 -0
  226. package/development/sidebar/common.d.ts.map +1 -0
  227. package/development/sidebar/common.js +114 -0
  228. package/development/sidebar/icon-sidebar/icon-sidebar.d.ts +23 -0
  229. package/development/sidebar/icon-sidebar/icon-sidebar.d.ts.map +1 -0
  230. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.d.ts +19 -0
  231. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.d.ts.map +1 -0
  232. package/development/sidebar/icon-sidebar-button.d.ts +2 -0
  233. package/development/sidebar/icon-sidebar-button.d.ts.map +1 -0
  234. package/development/sidebar/icon-sidebar-button.js +28 -0
  235. package/development/sidebar/icon-sidebar-container/icon-sidebar-container.d.ts +23 -0
  236. package/development/sidebar/icon-sidebar-container/icon-sidebar-container.d.ts.map +1 -0
  237. package/development/sidebar/icon-sidebar-container.d.ts +2 -0
  238. package/development/sidebar/icon-sidebar-container.d.ts.map +1 -0
  239. package/development/sidebar/icon-sidebar-container.js +45 -0
  240. package/development/sidebar/icon-sidebar-content/icon-sidebar-content.d.ts +17 -0
  241. package/development/sidebar/icon-sidebar-content/icon-sidebar-content.d.ts.map +1 -0
  242. package/development/sidebar/icon-sidebar-content.d.ts +2 -0
  243. package/development/sidebar/icon-sidebar-content.d.ts.map +1 -0
  244. package/development/sidebar/icon-sidebar-content.js +34 -0
  245. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.d.ts +19 -0
  246. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.d.ts.map +1 -0
  247. package/development/sidebar/icon-sidebar-link.d.ts +2 -0
  248. package/development/sidebar/icon-sidebar-link.d.ts.map +1 -0
  249. package/development/sidebar/icon-sidebar-link.js +28 -0
  250. package/development/sidebar/icon-sidebar.d.ts +2 -0
  251. package/development/sidebar/icon-sidebar.d.ts.map +1 -0
  252. package/development/sidebar/icon-sidebar.js +85 -0
  253. package/development/sidebar/sidebar/sidebar.d.ts +76 -0
  254. package/development/sidebar/sidebar/sidebar.d.ts.map +1 -0
  255. package/development/sidebar/sidebar-close-button/sidebar-close-button.d.ts +22 -0
  256. package/development/sidebar/sidebar-close-button/sidebar-close-button.d.ts.map +1 -0
  257. package/development/sidebar/sidebar-close-button.d.ts +2 -0
  258. package/development/sidebar/sidebar-close-button.d.ts.map +1 -0
  259. package/development/sidebar/sidebar-close-button.js +55 -0
  260. package/development/sidebar/sidebar-container/sidebar-container.d.ts +34 -0
  261. package/development/sidebar/sidebar-container/sidebar-container.d.ts.map +1 -0
  262. package/development/sidebar/sidebar-container.d.ts +2 -0
  263. package/development/sidebar/sidebar-container.d.ts.map +1 -0
  264. package/development/sidebar/sidebar-container.js +153 -0
  265. package/development/sidebar/sidebar-content/sidebar-content.d.ts +18 -0
  266. package/development/sidebar/sidebar-content/sidebar-content.d.ts.map +1 -0
  267. package/development/sidebar/sidebar-content.d.ts +2 -0
  268. package/development/sidebar/sidebar-content.d.ts.map +1 -0
  269. package/development/sidebar/sidebar-content.js +37 -0
  270. package/development/sidebar/sidebar-title/sidebar-title.d.ts +17 -0
  271. package/development/sidebar/sidebar-title/sidebar-title.d.ts.map +1 -0
  272. package/development/sidebar/sidebar-title.d.ts +2 -0
  273. package/development/sidebar/sidebar-title.d.ts.map +1 -0
  274. package/development/sidebar/sidebar-title.js +63 -0
  275. package/development/sidebar/sidebar.d.ts +2 -0
  276. package/development/sidebar/sidebar.d.ts.map +1 -0
  277. package/development/sidebar/sidebar.js +523 -0
  278. package/development/sidebar.d.ts +12 -0
  279. package/development/sidebar.d.ts.map +1 -0
  280. package/development/sidebar.js +12 -0
  281. package/development/stepper/step/step.d.ts +0 -2
  282. package/development/stepper/step/step.d.ts.map +1 -1
  283. package/development/stepper/step.js +19 -23
  284. package/development/stepper/stepper/stepper.d.ts +11 -0
  285. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  286. package/development/stepper/stepper.js +30 -3
  287. package/development/tag/tag/tag.d.ts +11 -0
  288. package/development/tag/tag/tag.d.ts.map +1 -1
  289. package/development/tag/tag-group/tag-group.d.ts +1 -1
  290. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  291. package/development/tag/tag-group.js +9 -3
  292. package/development/tag/tag.js +37 -10
  293. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  294. package/development/time-input/time-input.d.ts +3 -2
  295. package/development/time-input/time-input.d.ts.map +1 -1
  296. package/development/time-input.js +19 -10
  297. package/development/title/title-base.d.ts +2 -4
  298. package/development/title/title-base.d.ts.map +1 -1
  299. package/development/title/title.d.ts +3 -1
  300. package/development/title/title.d.ts.map +1 -1
  301. package/development/title.js +8 -8
  302. package/dialog/dialog/dialog.d.ts.map +1 -1
  303. package/dialog/dialog-title/dialog-title.d.ts +3 -1
  304. package/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  305. package/dialog/dialog-title.js +16 -15
  306. package/dialog/dialog.js +2 -2
  307. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  308. package/expansion-panel/expansion-panel.js +1 -1
  309. package/file-selector/common/file-selector-common.d.ts.map +1 -1
  310. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  311. package/flip-card/flip-card-details.js +14 -13
  312. package/form-field/form-field/form-field.d.ts +1 -1
  313. package/form-field/form-field/form-field.d.ts.map +1 -1
  314. package/form-field/form-field.js +30 -24
  315. package/header/common/header-action-common.d.ts.map +1 -1
  316. package/header/common.js +6 -6
  317. package/icon/icon-name-mixin.d.ts.map +1 -1
  318. package/icon/icon-request.d.ts.map +1 -1
  319. package/icon/icon-validate.d.ts.map +1 -1
  320. package/index.d.ts +22 -0
  321. package/index.js +22 -0
  322. package/link/common/block-link-common.d.ts.map +1 -1
  323. package/link/common/inline-link-common.d.ts.map +1 -1
  324. package/link/common/link-common.d.ts.map +1 -1
  325. package/link/common.js +12 -12
  326. package/menu/common/menu-action-common.d.ts.map +1 -1
  327. package/menu/menu/menu.d.ts +1 -1
  328. package/menu/menu/menu.d.ts.map +1 -1
  329. package/menu/menu.js +26 -35
  330. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  331. package/navigation/navigation/navigation.d.ts +1 -3
  332. package/navigation/navigation/navigation.d.ts.map +1 -1
  333. package/navigation/navigation.js +47 -56
  334. package/overlay/overlay-base-element.d.ts +2 -2
  335. package/overlay/overlay-base-element.d.ts.map +1 -1
  336. package/overlay/overlay.d.ts.map +1 -1
  337. package/overlay.js +58 -64
  338. package/package.json +66 -1
  339. package/paginator/common/paginator-common.d.ts.map +1 -1
  340. package/popover/popover/popover.d.ts +1 -1
  341. package/popover/popover/popover.d.ts.map +1 -1
  342. package/popover/popover.js +101 -110
  343. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  344. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  345. package/radio-button/radio-button-group.js +1 -1
  346. package/select/select.d.ts +3 -1
  347. package/select/select.d.ts.map +1 -1
  348. package/select.js +39 -37
  349. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  350. package/selection-expansion-panel.js +1 -1
  351. package/sidebar/common.d.ts +1 -0
  352. package/sidebar/common.d.ts.map +1 -0
  353. package/sidebar/common.js +7 -0
  354. package/sidebar/icon-sidebar/icon-sidebar.d.ts +23 -0
  355. package/sidebar/icon-sidebar/icon-sidebar.d.ts.map +1 -0
  356. package/sidebar/icon-sidebar-button/icon-sidebar-button.d.ts +19 -0
  357. package/sidebar/icon-sidebar-button/icon-sidebar-button.d.ts.map +1 -0
  358. package/sidebar/icon-sidebar-button.d.ts +2 -0
  359. package/sidebar/icon-sidebar-button.d.ts.map +1 -0
  360. package/sidebar/icon-sidebar-button.js +20 -0
  361. package/sidebar/icon-sidebar-container/icon-sidebar-container.d.ts +23 -0
  362. package/sidebar/icon-sidebar-container/icon-sidebar-container.d.ts.map +1 -0
  363. package/sidebar/icon-sidebar-container.d.ts +2 -0
  364. package/sidebar/icon-sidebar-container.d.ts.map +1 -0
  365. package/sidebar/icon-sidebar-container.js +35 -0
  366. package/sidebar/icon-sidebar-content/icon-sidebar-content.d.ts +17 -0
  367. package/sidebar/icon-sidebar-content/icon-sidebar-content.d.ts.map +1 -0
  368. package/sidebar/icon-sidebar-content.d.ts +2 -0
  369. package/sidebar/icon-sidebar-content.d.ts.map +1 -0
  370. package/sidebar/icon-sidebar-content.js +23 -0
  371. package/sidebar/icon-sidebar-link/icon-sidebar-link.d.ts +19 -0
  372. package/sidebar/icon-sidebar-link/icon-sidebar-link.d.ts.map +1 -0
  373. package/sidebar/icon-sidebar-link.d.ts +2 -0
  374. package/sidebar/icon-sidebar-link.d.ts.map +1 -0
  375. package/sidebar/icon-sidebar-link.js +20 -0
  376. package/sidebar/icon-sidebar.d.ts +2 -0
  377. package/sidebar/icon-sidebar.d.ts.map +1 -0
  378. package/sidebar/icon-sidebar.js +47 -0
  379. package/sidebar/sidebar/sidebar.d.ts +76 -0
  380. package/sidebar/sidebar/sidebar.d.ts.map +1 -0
  381. package/sidebar/sidebar-close-button/sidebar-close-button.d.ts +22 -0
  382. package/sidebar/sidebar-close-button/sidebar-close-button.d.ts.map +1 -0
  383. package/sidebar/sidebar-close-button.d.ts +2 -0
  384. package/sidebar/sidebar-close-button.d.ts.map +1 -0
  385. package/sidebar/sidebar-close-button.js +29 -0
  386. package/sidebar/sidebar-container/sidebar-container.d.ts +34 -0
  387. package/sidebar/sidebar-container/sidebar-container.d.ts.map +1 -0
  388. package/sidebar/sidebar-container.d.ts +2 -0
  389. package/sidebar/sidebar-container.d.ts.map +1 -0
  390. package/sidebar/sidebar-container.js +78 -0
  391. package/sidebar/sidebar-content/sidebar-content.d.ts +18 -0
  392. package/sidebar/sidebar-content/sidebar-content.d.ts.map +1 -0
  393. package/sidebar/sidebar-content.d.ts +2 -0
  394. package/sidebar/sidebar-content.d.ts.map +1 -0
  395. package/sidebar/sidebar-content.js +23 -0
  396. package/sidebar/sidebar-title/sidebar-title.d.ts +17 -0
  397. package/sidebar/sidebar-title/sidebar-title.d.ts.map +1 -0
  398. package/sidebar/sidebar-title.d.ts +2 -0
  399. package/sidebar/sidebar-title.d.ts.map +1 -0
  400. package/sidebar/sidebar-title.js +37 -0
  401. package/sidebar/sidebar.d.ts +2 -0
  402. package/sidebar/sidebar.d.ts.map +1 -0
  403. package/sidebar/sidebar.js +214 -0
  404. package/sidebar.d.ts +12 -0
  405. package/sidebar.d.ts.map +1 -0
  406. package/sidebar.js +11 -0
  407. package/standard-theme.css +53 -3
  408. package/stepper/step/step.d.ts +0 -2
  409. package/stepper/step/step.d.ts.map +1 -1
  410. package/stepper/step.js +23 -35
  411. package/stepper/stepper/stepper.d.ts +11 -0
  412. package/stepper/stepper/stepper.d.ts.map +1 -1
  413. package/stepper/stepper.js +59 -41
  414. package/tag/tag/tag.d.ts +11 -0
  415. package/tag/tag/tag.d.ts.map +1 -1
  416. package/tag/tag-group/tag-group.d.ts +1 -1
  417. package/tag/tag-group/tag-group.d.ts.map +1 -1
  418. package/tag/tag-group.js +32 -29
  419. package/tag/tag.js +60 -41
  420. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  421. package/time-input/time-input.d.ts +3 -2
  422. package/time-input/time-input.d.ts.map +1 -1
  423. package/time-input.js +44 -36
  424. package/title/title-base.d.ts +2 -4
  425. package/title/title-base.d.ts.map +1 -1
  426. package/title/title.d.ts +3 -1
  427. package/title/title.d.ts.map +1 -1
  428. package/title.js +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"card-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/card/common/card-action-common.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAKhE,OAAO,6BAA6B,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,mCAAmC;IACtD,SAAgB,MAAM,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzC;AAGD,eAAO,MAAM,+BAA+B,GAC1C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,cAEvC,CAAC,KACZ,mBAAmB,CAAC,mCAAmC,CAAC,GAAG,CAqF7D,CAAC"}
1
+ {"version":3,"file":"card-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/card/common/card-action-common.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAKhE,OAAO,6BAA6B,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,mCAAmC;IACtD,SAAgB,MAAM,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzC;AAGD,eAAO,MAAM,+BAA+B,GAC1C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,EAEnD,YAAY,CAAC,KACZ,mBAAmB,CAAC,mCAAmC,CAAC,GAAG,CAqF7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/checkbox-group/checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAMvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;;AAIpD;;;;;GAKG;AACH,qBAGM,uBAAwB,SAAQ,4BAA4B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,8CAA8C;IAC9C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA4B,IAAI,EAAE,eAAe,CAAyB;IAE1E,yDAAyD;IACzD,SACgB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAEhE,qFAAqF;IACrF,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,2CAA2C;IAC3C,IAAW,UAAU,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,EAAE,CAMxE;;IAOe,iBAAiB,IAAI,IAAI;cAQtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAc5E,OAAO,CAAC,cAAc;cA0BH,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,oBAAoB,EAAE,uBAAuB,CAAC;KAC/C;CACF"}
1
+ {"version":3,"file":"checkbox-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/checkbox-group/checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;;AAIpD;;;;;GAKG;AACH,qBAGM,uBAAwB,SAAQ,4BAA4B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,8CAA8C;IAC9C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA4B,IAAI,EAAE,eAAe,CAAyB;IAE1E,yDAAyD;IACzD,SACgB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAEhE,qFAAqF;IACrF,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,2CAA2C;IAC3C,IAAW,UAAU,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,EAAE,CAMxE;;IAOe,iBAAiB,IAAI,IAAI;cAKtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAc5E,OAAO,CAAC,cAAc;cA0BH,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,oBAAoB,EAAE,uBAAuB,CAAC;KAC/C;CACF"}
@@ -218,7 +218,7 @@ let SbbCheckboxGroupElement = (() => {
218
218
  connectedCallback() {
219
219
  var _a2;
220
220
  super.connectedCallback();
221
- this.toggleAttribute("data-has-panel", !!((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-selection-expansion-panel, sbb-checkbox-panel")));
221
+ this.toggleAttribute("data-has-panel", !!((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-checkbox-panel")));
222
222
  }
223
223
  willUpdate(changedProperties) {
224
224
  super.willUpdate(changedProperties);
@@ -291,4 +291,4 @@ let SbbCheckboxGroupElement = (() => {
291
291
  export {
292
292
  SbbCheckboxGroupElement
293
293
  };
294
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGVja2JveC9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaW50ZXJhY3Rpdml0eUNoZWNrZXIsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiSG9yaXpvbnRhbEZyb20sIFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50IH0gZnJvbSAnLi4vY2hlY2tib3gtcGFuZWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJDaGVja2JveEVsZW1lbnQgfSBmcm9tICcuLi9jaGVja2JveC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94U2l6ZSB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoZWNrYm94LWdyb3VwLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItY2hlY2tib3hgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2hlY2tib3hgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqIEBzbG90IGVycm9yIC0gU2xvdCB1c2VkIHRvIHJlbmRlciBhIGBzYmItZm9ybS1lcnJvcmAgaW5zaWRlIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoZWNrYm94LWdyb3VwJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiQ2hlY2tib3hHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGlzIHJlcXVpcmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgbSwgcyBvciB4cy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3hzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBzaXplOiBTYmJDaGVja2JveFNpemUgPSBpc0xlYW4oKSA/ICd4cycgOiAnbSc7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3VyIG9mIGBvcmllbnRhdGlvbmAgcHJvcGVydHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvcml6b250YWwtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGhvcml6b250YWxGcm9tOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBJbmRpY2F0ZXMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBjaGVja2JveGVzIGluc2lkZSB0aGUgYDxzYmItY2hlY2tib3gtZ3JvdXA+YC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKiBMaXN0IG9mIGNvbnRhaW5lZCBjaGVja2JveCBlbGVtZW50cy4gKi9cbiAgcHVibGljIGdldCBjaGVja2JveGVzKCk6IChTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudClbXSB7XG4gICAgcmV0dXJuIDwoU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpW10+KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWNoZWNrYm94LCBzYmItY2hlY2tib3gtcGFuZWwnKSA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAoZWwpID0+IGVsLmNsb3Nlc3QoJ3NiYi1jaGVja2JveC1ncm91cCcpID09PSB0aGlzLFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtaGFzLXBhbmVsJyxcbiAgICAgICEhdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1zZWxlY3Rpb24tZXhwYW5zaW9uLXBhbmVsLCBzYmItY2hlY2tib3gtcGFuZWwnKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlPy4oJ2Rpc2FibGVkJykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlPy4oJ3JlcXVpcmVkJykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuY2hlY2tib3hlcy5mb3JFYWNoKChjKSA9PiBjLnJlcXVlc3RVcGRhdGU/Lignc2l6ZScpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRDaGVja2JveGVzOiAoU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpW10gPVxuICAgICAgdGhpcy5jaGVja2JveGVzLmZpbHRlcihcbiAgICAgICAgKGNoZWNrYm94OiBTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudCkgPT5cbiAgICAgICAgICAhY2hlY2tib3guZGlzYWJsZWQgJiYgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNWaXNpYmxlKGNoZWNrYm94IGFzIEhUTUxFbGVtZW50KSxcbiAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZENoZWNrYm94ZXMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmXG4gICAgICAgIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzICYmXG4gICAgICAgIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50IS5sb2NhbE5hbWUgIT09ICdzYmItc2VsZWN0aW9uLWV4cGFuc2lvbi1wYW5lbCcpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRDaGVja2JveGVzLmZpbmRJbmRleChcbiAgICAgICAgKGU6IFNiYkNoZWNrYm94RWxlbWVudCB8IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50KSA9PiBlID09PSBldnQudGFyZ2V0LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRDaGVja2JveGVzLmxlbmd0aCk7XG4gICAgICBlbmFibGVkQ2hlY2tib3hlc1tuZXh0SW5kZXhdPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jaGVja2JveC1ncm91cFwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2hlY2tib3gtZ3JvdXBfX2Vycm9yXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJlcnJvclwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGVja2JveC1ncm91cCc6IFNiYkNoZWNrYm94R3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3Qk0sMkJBQXVCLE1BQUE7O0FBRjVCLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLG9CQUFvQixHQUNsQyxXQUFXOzs7O29CQUMwQixpQkFBaUIsVUFBVTs7Ozs7Ozs7Ozs7OztBQUFuQyxFQUFBLG1CQUFRLFlBQTRCO0FBQUEsSUErQmhFLGNBQUE7OztBQXpCQSxxREFBQSxrQkFBQSxNQUFBLHdCQUFvQyxLQUFLO0FBTTdCLGtEQUF3QyxrQkFBQSxNQUFBLDJCQUFBLEdBQUEsa0JBQUEsTUFBQSxvQkFBQSxXQUFXLE9BQU8sR0FBRztBQUl6RSw0REFBQSxrQkFBQSxNQUFBLHVCQUFBLEdBQUEsa0JBQUEsTUFBQSw4QkFBMkQsSUFBSTtBQUkvRCx5REFBQSxrQkFBQSxNQUFBLGlDQUFBLEdBQUEsa0JBQUEsTUFBQSwyQkFBOEMsWUFBWTs7QUFheEQsT0FBQUEsTUFBQSxLQUFLLHFCQUFMLGdCQUFBQSxJQUFBLFdBQXdCLFdBQVcsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDO0FBQUEsSUFBQztBQUFBO0FBQUEsSUEzQmxFLElBQWdCLFdBQTBCO0FBQUEsYUFBQSxtQkFBQTtB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
294
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGVja2JveC9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaW50ZXJhY3Rpdml0eUNoZWNrZXIsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiSG9yaXpvbnRhbEZyb20sIFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50IH0gZnJvbSAnLi4vY2hlY2tib3gtcGFuZWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJDaGVja2JveEVsZW1lbnQgfSBmcm9tICcuLi9jaGVja2JveC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94U2l6ZSB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoZWNrYm94LWdyb3VwLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItY2hlY2tib3hgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2hlY2tib3hgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqIEBzbG90IGVycm9yIC0gU2xvdCB1c2VkIHRvIHJlbmRlciBhIGBzYmItZm9ybS1lcnJvcmAgaW5zaWRlIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoZWNrYm94LWdyb3VwJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiQ2hlY2tib3hHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGlzIHJlcXVpcmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgbSwgcyBvciB4cy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3hzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBzaXplOiBTYmJDaGVja2JveFNpemUgPSBpc0xlYW4oKSA/ICd4cycgOiAnbSc7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3VyIG9mIGBvcmllbnRhdGlvbmAgcHJvcGVydHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvcml6b250YWwtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGhvcml6b250YWxGcm9tOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBJbmRpY2F0ZXMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBjaGVja2JveGVzIGluc2lkZSB0aGUgYDxzYmItY2hlY2tib3gtZ3JvdXA+YC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKiBMaXN0IG9mIGNvbnRhaW5lZCBjaGVja2JveCBlbGVtZW50cy4gKi9cbiAgcHVibGljIGdldCBjaGVja2JveGVzKCk6IChTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudClbXSB7XG4gICAgcmV0dXJuIDwoU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpW10+KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWNoZWNrYm94LCBzYmItY2hlY2tib3gtcGFuZWwnKSA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAoZWwpID0+IGVsLmNsb3Nlc3QoJ3NiYi1jaGVja2JveC1ncm91cCcpID09PSB0aGlzLFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhhcy1wYW5lbCcsICEhdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1jaGVja2JveC1wYW5lbCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgdGhpcy5jaGVja2JveGVzLmZvckVhY2goKGMpID0+IGMucmVxdWVzdFVwZGF0ZT8uKCdkaXNhYmxlZCcpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncmVxdWlyZWQnKSkge1xuICAgICAgdGhpcy5jaGVja2JveGVzLmZvckVhY2goKGMpID0+IGMucmVxdWVzdFVwZGF0ZT8uKCdyZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2l6ZScpKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlPy4oJ3NpemUnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkQ2hlY2tib3hlczogKFNiYkNoZWNrYm94RWxlbWVudCB8IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50KVtdID1cbiAgICAgIHRoaXMuY2hlY2tib3hlcy5maWx0ZXIoXG4gICAgICAgIChjaGVja2JveDogU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpID0+XG4gICAgICAgICAgIWNoZWNrYm94LmRpc2FibGVkICYmIGludGVyYWN0aXZpdHlDaGVja2VyLmlzVmlzaWJsZShjaGVja2JveCBhcyBIVE1MRWxlbWVudCksXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRDaGVja2JveGVzIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJlxuICAgICAgICAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcyAmJlxuICAgICAgICAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCEubG9jYWxOYW1lICE9PSAnc2JiLXNlbGVjdGlvbi1leHBhbnNpb24tcGFuZWwnKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkQ2hlY2tib3hlcy5maW5kSW5kZXgoXG4gICAgICAgIChlOiBTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudCkgPT4gZSA9PT0gZXZ0LnRhcmdldCxcbiAgICAgICk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkQ2hlY2tib3hlcy5sZW5ndGgpO1xuICAgICAgZW5hYmxlZENoZWNrYm94ZXNbbmV4dEluZGV4XT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2hlY2tib3gtZ3JvdXBcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWNoZWNrYm94LWdyb3VwX19lcnJvclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2hlY2tib3gtZ3JvdXAnOiBTYmJDaGVja2JveEdyb3VwRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0JNLDJCQUF1QixNQUFBOztBQUY1QixNQUFBLG1CQUFBLENBQUEsY0FBYyxvQkFBb0IsR0FDbEMsV0FBVzs7OztvQkFDMEIsaUJBQWlCLFVBQVU7Ozs7Ozs7Ozs7Ozs7QUFBbkMsRUFBQSxtQkFBUSxZQUE0QjtBQUFBLElBK0JoRSxjQUFBOzs7QUF6QkEscURBQUEsa0JBQUEsTUFBQSx3QkFBb0MsS0FBSztBQU03QixrREFBd0Msa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsb0JBQUEsV0FBVyxPQUFPLEdBQUc7QUFJekUsNERBQUEsa0JBQUEsTUFBQSx1QkFBQSxHQUFBLGtCQUFBLE1BQUEsOEJBQTJELElBQUk7QUFJL0QseURBQUEsa0JBQUEsTUFBQSxpQ0FBQSxHQUFBLGtCQUFBLE1BQUEsMkJBQThDLFlBQVk7O0FBYXhELE9BQUFBLE1BQUEsS0FBSyxxQkFBTCxnQkFBQUEsSUFBQSxXQUF3QixXQUFXLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQztBQUFBLElBQUM7QUFBQTtBQUFBLElBM0JsRSxJQUFnQixXQUEwQjtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBMUMsSUFBZ0IsU0FBMEIsT0FBQTtBQUFBLHlCQUFBLDRCQUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/common/checkbox-common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAItD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAEzB,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,iCACnB,SAAQ,kCACR,YAAW,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAEvE,SAAgB,aAAa,EAAE,OAAO,CAAC;IAEvC,IAAW,KAAK,IAAI,uBAAuB,GAAG,IAAI,CAAC;CACpD;AAGD,eAAO,MAAM,6BAA6B,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cACjE,CAAC,KACZ,WAAW,CAAC,iCAAiC,CAAC,GAAG,CA+CnD,CAAC"}
1
+ {"version":3,"file":"checkbox-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/common/checkbox-common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAItD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAEzB,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,iCACnB,SAAQ,kCACR,YAAW,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAEvE,SAAgB,aAAa,EAAE,OAAO,CAAC;IAEvC,IAAW,KAAK,IAAI,uBAAuB,GAAG,IAAI,CAAC;CACpD;AAGD,eAAO,MAAM,6BAA6B,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAC7E,YAAY,CAAC,KACZ,WAAW,CAAC,iCAAiC,CAAC,GAAG,CA+CnD,CAAC"}
@@ -10,6 +10,8 @@ export declare class SbbClockElement extends LitElement {
10
10
  * @param value HH:MM:ss
11
11
  */
12
12
  accessor now: SbbTime | null;
13
+ /** Whether the clock is ticking or not */
14
+ private _state;
13
15
  /** Reference to the hour hand. */
14
16
  private _clockHandHours;
15
17
  /** Reference to the minute hand. */
@@ -24,10 +26,12 @@ export declare class SbbClockElement extends LitElement {
24
26
  private _seconds;
25
27
  /** Move the minutes hand every minute. */
26
28
  private _handMovement?;
29
+ private _resetIntervalId?;
27
30
  /** Callback function for hours hand. */
28
31
  private _moveHoursHandFn;
29
32
  /** Callback function for minutes hand. */
30
33
  private _moveMinutesHandFn;
34
+ connectedCallback(): void;
31
35
  protected willUpdate(changedProperties: PropertyValues<this>): void;
32
36
  protected firstUpdated(changedProperties: PropertyValues<this>): Promise<void>;
33
37
  disconnectedCallback(): void;
@@ -37,6 +41,10 @@ export declare class SbbClockElement extends LitElement {
37
41
  private _startClock;
38
42
  /** Stops the clock by removing all the animations. */
39
43
  private _stopClock;
44
+ /**
45
+ * As a fallback measure to prevent de-sync, reset the clock to the system time.
46
+ */
47
+ private _resetClock;
40
48
  /** Set the starting position for the three hands on the clock face. */
41
49
  private _setHandsStartingPosition;
42
50
  /** Given the current date, calculates the hh/mm/ss values and the hh/mm/ss left to the next midnight. */
@@ -1 +1 @@
1
- {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../../src/elements/clock/clock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAE,MAAM,KAAK,CAAC;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA2CrD;;GAEG;AACH,qBAEM,eAAgB,SAAQ,UAAU;IACtC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,SAA4B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAQ;IAEvD,kCAAkC;IAClC,OAAO,CAAC,eAAe,CAAe;IAEtC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAU;IAExB,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAiC;IAEvD,wCAAwC;IACxC,OAAO,CAAC,gBAAgB,CAAqC;IAE7D,0CAA0C;IAC1C,OAAO,CAAC,kBAAkB,CAAuC;cAE9C,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQnD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7E,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,2BAA2B,CAMjC;YAEY,sBAAsB;IAUpC,6FAA6F;YAC/E,WAAW;IAsBzB,sDAAsD;YACxC,UAAU;IAcxB,uEAAuE;IACvE,OAAO,CAAC,yBAAyB;IA4CjC,yGAAyG;IACzG,OAAO,CAAC,kBAAkB;IAW1B,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAOvB,6CAA6C;IAC7C,OAAO,CAAC,cAAc;IAYtB,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,sBAAsB;IAK9B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,6BAA6B;cAOlB,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,WAAW,EAAE,eAAe,CAAC;KAC9B;CACF"}
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../../src/elements/clock/clock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAE,MAAM,KAAK,CAAC;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA8CrD;;GAEG;AACH,qBAEM,eAAgB,SAAQ,UAAU;IACtC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,SAA4B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAQ;IAEvD,0CAA0C;IAC1C,OAAO,CAAC,MAAM,CAAkC;IAEhD,kCAAkC;IAClC,OAAO,CAAC,eAAe,CAAe;IAEtC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAe;IAExC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAU;IAExB,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAU;IAE1B,0CAA0C;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAiC;IAEvD,OAAO,CAAC,gBAAgB,CAAC,CAAiC;IAE1D,wCAAwC;IACxC,OAAO,CAAC,gBAAgB,CAAqC;IAE7D,0CAA0C;IAC1C,OAAO,CAAC,kBAAkB,CAAuC;IAEjD,iBAAiB,IAAI,IAAI;cAMtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQnD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7E,oBAAoB,IAAI,IAAI;IAM5C,OAAO,CAAC,2BAA2B,CAMjC;YAEY,sBAAsB;IAUpC,6FAA6F;YAC/E,WAAW;IAuBzB,sDAAsD;YACxC,UAAU;IAexB;;OAEG;YACW,WAAW;IAQzB,uEAAuE;IACvE,OAAO,CAAC,yBAAyB;IA4CjC,yGAAyG;IACzG,OAAO,CAAC,kBAAkB;IAW1B,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAOvB,6CAA6C;IAC7C,OAAO,CAAC,cAAc;IAYtB,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,sBAAsB;IAK9B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,6BAA6B;cAOlB,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,WAAW,EAAE,eAAe,CAAC;KAC9B;CACF"}
@@ -137,6 +137,7 @@ const MINUTES_ANGLE = 6;
137
137
  const SBB_SECONDS_ANGLE = 360 / 58.5;
138
138
  const SECONDS_IN_A_MINUTE = 60;
139
139
  const SECONDS_IN_AN_HOUR = 3600;
140
+ const RESET_INTERVAL = SECONDS_IN_AN_HOUR / 2;
140
141
  const ADD_EVENT_LISTENER_OPTIONS = {
141
142
  once: true,
142
143
  passive: true
@@ -156,7 +157,7 @@ let SbbClockElement = (() => {
156
157
  super(...arguments);
157
158
  __privateAdd(this, _now_accessor_storage);
158
159
  __privateSet(this, _now_accessor_storage, __runInitializers(this, _now_initializers, null));
159
- this._clockHandHours = __runInitializers(this, _now_extraInitializers);
160
+ this._state = (__runInitializers(this, _now_extraInitializers), "paused");
160
161
  this._moveHoursHandFn = () => this._moveHoursHand();
161
162
  this._moveMinutesHandFn = () => this._moveMinutesHand();
162
163
  this._handlePageVisibilityChange = async () => {
@@ -177,6 +178,10 @@ let SbbClockElement = (() => {
177
178
  set now(value) {
178
179
  __privateSet(this, _now_accessor_storage, value);
179
180
  }
181
+ connectedCallback() {
182
+ super.connectedCallback();
183
+ this._resetIntervalId = setInterval(() => this._resetClock(), RESET_INTERVAL * 1e3);
184
+ }
180
185
  willUpdate(changedProperties) {
181
186
  super.willUpdate(changedProperties);
182
187
  if (!isServer && changedProperties.has("now")) {
@@ -193,6 +198,7 @@ let SbbClockElement = (() => {
193
198
  disconnectedCallback() {
194
199
  super.disconnectedCallback();
195
200
  this._removeEventListeners();
201
+ clearInterval(this._resetIntervalId);
196
202
  }
197
203
  async _startOrConfigureClock() {
198
204
  if (this.now) {
@@ -212,6 +218,7 @@ let SbbClockElement = (() => {
212
218
  var _a3;
213
219
  this._setHandsStartingPosition();
214
220
  (_a3 = this.style) == null ? void 0 : _a3.setProperty("--sbb-clock-animation-play-state", "running");
221
+ this._state = "running";
215
222
  resolve();
216
223
  }, INITIAL_TIMEOUT_DURATION));
217
224
  }
@@ -225,6 +232,17 @@ let SbbClockElement = (() => {
225
232
  (_b = this._clockHandSeconds) == null ? void 0 : _b.removeEventListener("animationend", this._moveMinutesHandFn);
226
233
  (_c = this._clockHandMinutes) == null ? void 0 : _c.classList.add("sbb-clock__hand-minutes--no-transition");
227
234
  (_d = this.style) == null ? void 0 : _d.setProperty("--sbb-clock-animation-play-state", "paused");
235
+ this._state = "paused";
236
+ }
237
+ /**
238
+ * As a fallback measure to prevent de-sync, reset the clock to the system time.
239
+ */
240
+ async _resetClock() {
241
+ if (this._state !== "running") {
242
+ return;
243
+ }
244
+ await this._stopClock();
245
+ await this._startClock();
228
246
  }
229
247
  /** Set the starting position for the three hands on the clock face. */
230
248
  _setHandsStartingPosition() {
@@ -366,4 +384,4 @@ let SbbClockElement = (() => {
366
384
  export {
367
385
  SbbClockElement
368
386
  };
369
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3JhdyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svY2xvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxnIGNsYXNzPVxcXCJmYWNlXFxcIj48Y2lyY2xlIGZpbGw9XFxcIiNGRkZcXFwiIGN4PVxcXCI1Mi41XFxcIiBjeT1cXFwiNTIuNVxcXCIgcj1cXFwiNTIuNVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43NSA0aDMuNXYxMmgtMy41ek01MC43NSA4OWgzLjV2MTJoLTMuNXpNNzUuMjMzIDkuNjIzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTMyLjczNCA4My4yMzNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNOTMuNjI4IDI2LjczMmwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMjAuMDE3IDY5LjIzNGwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMTAxIDUwLjc1djMuNUg4OXYtMy41ek0xNiA1MC43NXYzLjVINHYtMy41ek05NS4zNzkgNzUuMjMybC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNMjEuNzY2IDMyLjczNGwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTc4LjI2NyA5My42M2wtMy4wMyAxLjc1LTYtMTAuMzkzIDMuMDMtMS43NXpNMzUuNzY2IDIwLjAxNWwtMy4wMyAxLjc1LTYtMTAuMzkyIDMuMDMtMS43NXpcXFwiLz48Zz48cGF0aCBkPVxcXCJNNTYuODczIDQuMTlsMS4zOTIuMTQ3LS4zNjYgMy40OC0xLjM5Mi0uMTQ1ek00Ny4xMDEgOTcuMTc3bDEuMzkzLjE0Ni0uMzY2IDMuNDgxLTEuMzkyLS4xNDZ6TTYxLjg5NiA0LjkxNGwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjl6TTQyLjQ1OCA5Ni4zNjZsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5MXpNNjYuODI1IDYuMTU3bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzR6TTM3LjkzMSA5NS4wODVsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzM3pNNzEuNTg0IDcuOTA2bDEuMjguNTY5LTEuNDI0IDMuMTk3LTEuMjgtLjU3ek0zMy41NiA5My4zMmwxLjI3OC41NjktMS40MjMgMy4xOTctMS4yOC0uNTd6TTgwLjQ0IDEyLjg1MmwxLjEzMy44MjMtMi4wNTggMi44MzEtMS4xMzItLjgyM3pNMjUuNDgxIDg4LjQ5NGwxLjEzMy44MjItMi4wNTcgMi44MzItMS4xMzMtLjgyM3pNODQuNDMgMTUuOTg2bDEuMDQuOTM3LTIuMzQyIDIuNi0xLjA0LS45MzZ6TTIxLjg3IDg1LjQ2OWwxLjA0LjkzNi0yLjM0MSAyLjYwMS0xLjA0LS45Mzd6TTg4LjA3MiAxOS41MjJsLjkzNyAxLjA0LTIuNiAyLjM0My0uOTM3LTEuMDR6TTE4LjU5MyA4Mi4wODhsLjkzNyAxLjA0LTIuNjAxIDIuMzQyLS45MzctMS4wNHpNOTEuMzI4IDIzLjQyNWwuODIzIDEuMTMzLTIuODMyIDIuMDU3LS44MjMtMS4xMzJ6TTE1LjY4NCA3OC4zODVsLjgyMyAxLjEzMi0yLjgzMiAyLjA1OC0uODIyLTEuMTMzek05Ni41MiAzMi4xMjhsLjU3IDEuMjc5LTMuMTk4IDEuNDIzLS41Ny0xLjI3OHpNMTEuMTA5IDcwLjE2MWwuNTY5IDEuMjc5LTMuMTk3IDEuNDIzLS41Ny0xLjI3OXpNOTguNDA3IDM2Ljg1bC40MzMgMS4zMzItMy4zMyAxLjA4MS0uNDMyLTEuMzMxek05LjQ4MyA2NS43NGwuNDMyIDEuMzMtMy4zMjkgMS4wODItLjQzMi0xLjMzMXpNOTkuNzk1IDQxLjcyNmwuMjkxIDEuMzctMy40MjMuNzI3LS4yOS0xLjM3ek04LjM0IDYxLjE3bC4yOTIgMS4zNy0zLjQyNC43MjgtLjI5LTEuMzd6TTEwMC42NiA0Ni43M2wuMTQ2IDEuMzkzLTMuNDguMzY2LS4xNDctMS4zOTJ6TTcuNjc0IDU2LjUwNmwuMTQ2IDEuMzkyLTMuNDguMzY2LS4xNDctMS4zOTJ6TTEwMC44MTEgNTYuODczbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTcuODIxIDQ3LjEwMWwtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek0xMDAuMDkgNjEuODk1bC0uMjkxIDEuMzY5LTMuNDI0LS43MjguMjkxLTEuMzY5ek04LjYzMSA0Mi40NmwtLjI5MSAxLjM3LTMuNDIzLS43MjguMjktMS4zN3pNOTguODQgNjYuODI3bC0uNDMyIDEuMzMxLTMuMzI5LTEuMDgxLjQzMy0xLjMzMnpNOS45MTggMzcuOTNsLS40MzMgMS4zMzEtMy4zMjktMS4wODIuNDMzLTEuMzMxek05Ny4wOTggNzEuNTg1bC0uNTY5IDEuMjgtMy4xOTctMS40MjQuNTctMS4yOHpNMTEuNjc3IDMzLjU1OGwtLjU3IDEuMjgtMy4xOTctMS40MjQuNTctMS4yNzl6TTkyLjE0OSA4MC40MzlsLS44MjMgMS4xMzMtMi44MzItMi4wNTguODIzLTEuMTMyek0xNi41MDYgMjUuNDgybC0uODIzIDEuMTMzLTIuODMxLTIuMDU3LjgyMy0xLjEzM3pNODkuMDE3IDg0LjQzMWwtLjkzNyAxLjA0LTIuNi0yLjM0MS45MzYtMS4wNHpNMTkuNTI4IDIxLjg2OWwtLjkzNiAxLjA0LTIuNjAxLTIuMzQyLjkzNi0xLjA0ek04NS40OCA4OC4wNzZsLTEuMDQxLjkzNi0yLjM0Mi0yLjYgMS4wNC0uOTM3ek0yMi45MSAxOC41OWwtMS4wNC45MzctMi4zNDEtMi42MDEgMS4wNC0uOTM3ek04MS41NzQgOTEuMzI4bC0xLjEzMy44MjMtMi4wNTctMi44MzEgMS4xMzItLjgyM3pNMjYuNjE3IDE1LjY4NGwtMS4xMzMuODIzLTIuMDU3LTIuODMyIDEuMTMyLS44MjN6TTcyLjg3MyA5Ni41MjRsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc4LS41N3pNMzQuODM4IDExLjEwNWwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzktLjU3ek02OC4xNTEgOTguNDA1bC0xLjMzMS40MzItMS4wODItMy4zMjkgMS4zMzItLjQzMnpNMzkuMjU5IDkuNDg1bC0xLjMzMi40MzMtMS4wODEtMy4zMyAxLjMzMS0uNDMyek02My4yNzIgOTkuNzk5bC0xLjM2OS4yOS0uNzI4LTMuNDIyIDEuMzctLjI5MXpNNDMuODMgOC4zMzdsLTEuMzY5LjI5MS0uNzI3LTMuNDIzIDEuMzctLjI5MXpNNTguMjcgMTAwLjY2MmwtMS4zOTMuMTQ2LS4zNjYtMy40OCAxLjM5My0uMTQ3ek00OC40OTQgNy42NzJsLTEuMzkyLjE0Ny0uMzY2LTMuNDgxIDEuMzkyLS4xNDd6XFxcIi8+PC9nPjwvZz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBpZD1cXFwibW9kX2Nsb2NrX3N2Z19ob3Vyc1xcXCIgZD1cXFwiTTU1LjcgNjQuNWgtNi40bC42LTQ0aDUuMnpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTUuMSw2NC41aC01LjJsMC44LTU4aDMuNkw1NS4xLDY0LjV6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU3LjgsMjEuM2MwLTIuOS0yLjQtNS4yLTUuMi01LjJzLTUuMywyLjMtNS4zLDUuMmMwLDIuNywyLDQuOCw0LjUsNS4yVjY5aDEuNVYyNi41QzU1LjgsMjYuMiw1Ny44LDI0LDU3LjgsMjEuM3pcXFwiLz48L3N2Zz5cXG5cIiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiVGltZSB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCBjbG9ja0ZhY2VTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVIb3Vyc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfaG91cnMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVNaW51dGVzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlU2Vjb25kc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3JztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2Nsb2NrLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKiBOdW1iZXIgb2YgaG91cnMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFID0gMTI7XG5cbi8qKiBOdW1iZXIgb2YgbWludXRlcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgPSA2MDtcblxuLyoqIFRpbWVvdXQgZm9yIHRoZSBjbG9jayBzdGFydC4gKi9cbmNvbnN0IElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiA9IDUwO1xuXG4vKiogQW5nbGUgaW4gYSBzaW5nbGUgcm90YXRpb24uICovXG5jb25zdCBGVUxMX0FOR0xFID0gMzYwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgaG91cnM6IDM2MC8xMiwgbWVhbnMgYSBmdWxsIHJvdGF0aW9uIC8gbnVtYmVyIG9mIGhvdXJzIGluIGEgcm90YXRpb24uICovXG5jb25zdCBIT1VSU19BTkdMRSA9IDMwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgbWludXRlczogMzYwLzYwLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgbWludXRlcyBpbiBvbmUgaG91ci4gKi9cbmNvbnN0IE1JTlVURVNfQU5HTEUgPSA2O1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc2Vjb25kcyBmb3IgU0JCIGNsb2NrIGN1c3RvbSBiZWhhdmlvci4gKi9cbmNvbnN0IFNCQl9TRUNPTkRTX0FOR0xFID0gMzYwIC8gNTguNTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIGluIGEgbWludXRlLiAqL1xuY29uc3QgU0VDT05EU19JTl9BX01JTlVURSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gaG91ci4gKi9cbmNvbnN0IFNFQ09ORFNfSU5fQU5fSE9VUiA9IDM2MDA7XG5cbmNvbnN0IEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgb25jZTogdHJ1ZSxcbiAgcGFzc2l2ZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gYW5hbG9nIGNsb2NrIHdpdGggdGhlIGNsYXNzaWMgU0JCIGZhY2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jbG9jaycpXG5jbGFzcyBTYmJDbG9ja0VsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIERlZmluZSBhIHNwZWNpZmljIHRpbWUgd2hpY2ggdGhlIGNsb2NrIHNob3VsZCBzaG93IHN0YXRpY2FsbHkuXG4gICAqIEBwYXJhbSB2YWx1ZSBISDpNTTpzc1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIG5vdzogU2JiVGltZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGhvdXIgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kSG91cnMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBtaW51dGUgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kTWludXRlcyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlY29uZCBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRTZWNvbmRzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIEhvdXJzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9ob3VycyE6IG51bWJlcjtcblxuICAvKiogTWludXRlcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfbWludXRlcyE6IG51bWJlcjtcblxuICAvKiogU2Vjb25kcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfc2Vjb25kcyE6IG51bWJlcjtcblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIGV2ZXJ5IG1pbnV0ZS4gKi9cbiAgcHJpdmF0ZSBfaGFuZE1vdmVtZW50PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpKSB7XG4gICAgICB0aGlzLl9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5ub3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgICB0aGlzLl9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk7XG4gICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGNsb2NrIGJ5IGRlZmluaW5nIHRoZSBoYW5kcyBzdGFydGluZyBwb3NpdGlvbiB0aGVuIHN0YXJ0aW5nIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdGFydENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlSG91cnNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBTdG9wcyB0aGUgY2xvY2sgYnkgcmVtb3ZpbmcgYWxsIHRoZSBhbmltYXRpb25zLiAqL1xuICBwcml2YXRlIGFzeW5jIF9zdG9wQ2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9oYW5kTW92ZW1lbnQpO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZUhvdXJzSGFuZEZuKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWFuaW1hdGlvbi1wbGF5LXN0YXRlJywgJ3BhdXNlZCcpO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSB0aHJlZSBoYW5kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbiAgcHJpdmF0ZSBfc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2lnbkN1cnJlbnRUaW1lKCk7XG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX3NlY29uZHM7XG4gICAgY29uc3QgcmVtYWluaW5nTWludXRlcyA9IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX21pbnV0ZXM7XG4gICAgY29uc3QgcmVtYWluaW5nSG91cnMgPSBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFIC0gdGhpcy5faG91cnM7XG5cbiAgICBsZXQgaG91cnNBbmltYXRpb25EdXJhdGlvbiA9IDA7XG4gICAgbGV0IGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAwO1xuXG4gICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9IHJlbWFpbmluZ1NlY29uZHM7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nTWludXRlcyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz1cbiAgICAgICAgKHJlbWFpbmluZ01pbnV0ZXMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQV9NSU5VVEU7XG4gICAgICBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVtYWluaW5nSG91cnMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdIb3VycyAtIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMpICogU0VDT05EU19JTl9BTl9IT1VSO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicsIGAke2hvdXJzQW5pbWF0aW9uRHVyYXRpb259c2ApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyxcbiAgICAgIGAke01hdGguY2VpbCh0aGlzLl9zZWNvbmRzICogU0JCX1NFQ09ORFNfQU5HTEUpfWRlZ2AsXG4gICAgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtyZW1haW5pbmdTZWNvbmRzfXNgKTtcblxuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWluaXRpYWxpemVkJywgdHJ1ZSk7XG4gIH1cblxuICAvKiogR2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZSwgY2FsY3VsYXRlcyB0aGUgaGgvbW0vc3MgdmFsdWVzIGFuZCB0aGUgaGgvbW0vc3MgbGVmdCB0byB0aGUgbmV4dCBtaWRuaWdodC4gKi9cbiAgcHJpdmF0ZSBfYXNzaWduQ3VycmVudFRpbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMubm93ID8gbnVsbCA6IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IGRhdGVcbiAgICAgID8gW2RhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpXVxuICAgICAgOiB0aGlzLm5vdyEuc3BsaXQoJzonKS5tYXAoKHApID0+ICtwKTtcblxuICAgIHRoaXMuX2hvdXJzID0gaG91cnMgJSAxMjtcbiAgICB0aGlzLl9taW51dGVzID0gbWludXRlcztcbiAgICB0aGlzLl9zZWNvbmRzID0gc2Vjb25kcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9zZXRNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgYHJvdGF0ZVooJHtNYXRoLmNlaWwodGhpcy5fbWludXRlcyAqIE1JTlVURVNfQU5HTEUpfWRlZylgLFxuICAgICk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgaG91cnMgaGFuZCB0byB0aGUgbmV4dCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgbGV0IGhvdXJzQW5nbGUgPSBNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKTtcblxuICAgIGlmIChob3Vyc0FuZ2xlID49IEZVTExfQU5HTEUpIHtcbiAgICAgIGhvdXJzQW5nbGUgLT0gRlVMTF9BTkdMRTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uc3R5bGUuc2V0UHJvcGVydHkoJ3RyYW5zZm9ybScsIGByb3RhdGVaKCR7aG91cnNBbmdsZX1kZWcpYCk7XG4gIH1cblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuXG4gICAgdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCk7XG5cbiAgICB0aGlzLl9oYW5kTW92ZW1lbnQgPSBzZXRJbnRlcnZhbChcbiAgICAgICgpID0+IHRoaXMuX2FkZE1pbnV0ZXNBbmRTZXRIYW5kcygpLFxuICAgICAgVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFICogMTAwMCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkTWludXRlc0FuZFNldEhhbmRzKCk6IHZvaWQge1xuICAgIHRoaXMuX21pbnV0ZXMrKztcbiAgICB0aGlzLl9zZXRNaW51dGVzSGFuZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92aW5nIGFuaW1hdGlvbiBieSBvdmVycmlkaW5nIHdpdGggZW1wdHkgc3RyaW5nLFxuICAgKiB0aGVuIHRyaWdnZXJpbmcgYSByZWZsb3cgYW5kIHJlIGFkZCBvcmlnaW5hbCBhbmltYXRpb24gYnkgcmVtb3Zpbmcgb3ZlcnJpZGUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZXNldFNlY29uZHNIYW5kQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2xvY2tIYW5kU2Vjb25kcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzLnN0eWxlLmFuaW1hdGlvbiA9ICcnO1xuICAgIC8vIEhhY2sgdG8gdHJpZ2dlciByZWZsb3dcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMub2Zmc2V0SGVpZ2h0O1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jbG9ja1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1jbG9ja19fZmFjZVwiIC5pbm5lckhUTUw9JHtjbG9ja0ZhY2VTVkd9Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1ob3Vyc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlSG91cnNTVkd9XG4gICAgICAgICAgJHtyZWYoKGU/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRIb3VycyA9IGUgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMgc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb25cIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZU1pbnV0ZXNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1zZWNvbmRzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVTZWNvbmRzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2xvY2snOiBTYmJDbG9ja0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxNQUFl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
387
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3JhdyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svY2xvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxnIGNsYXNzPVxcXCJmYWNlXFxcIj48Y2lyY2xlIGZpbGw9XFxcIiNGRkZcXFwiIGN4PVxcXCI1Mi41XFxcIiBjeT1cXFwiNTIuNVxcXCIgcj1cXFwiNTIuNVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43NSA0aDMuNXYxMmgtMy41ek01MC43NSA4OWgzLjV2MTJoLTMuNXpNNzUuMjMzIDkuNjIzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTMyLjczNCA4My4yMzNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNOTMuNjI4IDI2LjczMmwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMjAuMDE3IDY5LjIzNGwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMTAxIDUwLjc1djMuNUg4OXYtMy41ek0xNiA1MC43NXYzLjVINHYtMy41ek05NS4zNzkgNzUuMjMybC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNMjEuNzY2IDMyLjczNGwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTc4LjI2NyA5My42M2wtMy4wMyAxLjc1LTYtMTAuMzkzIDMuMDMtMS43NXpNMzUuNzY2IDIwLjAxNWwtMy4wMyAxLjc1LTYtMTAuMzkyIDMuMDMtMS43NXpcXFwiLz48Zz48cGF0aCBkPVxcXCJNNTYuODczIDQuMTlsMS4zOTIuMTQ3LS4zNjYgMy40OC0xLjM5Mi0uMTQ1ek00Ny4xMDEgOTcuMTc3bDEuMzkzLjE0Ni0uMzY2IDMuNDgxLTEuMzkyLS4xNDZ6TTYxLjg5NiA0LjkxNGwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjl6TTQyLjQ1OCA5Ni4zNjZsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5MXpNNjYuODI1IDYuMTU3bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzR6TTM3LjkzMSA5NS4wODVsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzM3pNNzEuNTg0IDcuOTA2bDEuMjguNTY5LTEuNDI0IDMuMTk3LTEuMjgtLjU3ek0zMy41NiA5My4zMmwxLjI3OC41NjktMS40MjMgMy4xOTctMS4yOC0uNTd6TTgwLjQ0IDEyLjg1MmwxLjEzMy44MjMtMi4wNTggMi44MzEtMS4xMzItLjgyM3pNMjUuNDgxIDg4LjQ5NGwxLjEzMy44MjItMi4wNTcgMi44MzItMS4xMzMtLjgyM3pNODQuNDMgMTUuOTg2bDEuMDQuOTM3LTIuMzQyIDIuNi0xLjA0LS45MzZ6TTIxLjg3IDg1LjQ2OWwxLjA0LjkzNi0yLjM0MSAyLjYwMS0xLjA0LS45Mzd6TTg4LjA3MiAxOS41MjJsLjkzNyAxLjA0LTIuNiAyLjM0My0uOTM3LTEuMDR6TTE4LjU5MyA4Mi4wODhsLjkzNyAxLjA0LTIuNjAxIDIuMzQyLS45MzctMS4wNHpNOTEuMzI4IDIzLjQyNWwuODIzIDEuMTMzLTIuODMyIDIuMDU3LS44MjMtMS4xMzJ6TTE1LjY4NCA3OC4zODVsLjgyMyAxLjEzMi0yLjgzMiAyLjA1OC0uODIyLTEuMTMzek05Ni41MiAzMi4xMjhsLjU3IDEuMjc5LTMuMTk4IDEuNDIzLS41Ny0xLjI3OHpNMTEuMTA5IDcwLjE2MWwuNTY5IDEuMjc5LTMuMTk3IDEuNDIzLS41Ny0xLjI3OXpNOTguNDA3IDM2Ljg1bC40MzMgMS4zMzItMy4zMyAxLjA4MS0uNDMyLTEuMzMxek05LjQ4MyA2NS43NGwuNDMyIDEuMzMtMy4zMjkgMS4wODItLjQzMi0xLjMzMXpNOTkuNzk1IDQxLjcyNmwuMjkxIDEuMzctMy40MjMuNzI3LS4yOS0xLjM3ek04LjM0IDYxLjE3bC4yOTIgMS4zNy0zLjQyNC43MjgtLjI5LTEuMzd6TTEwMC42NiA0Ni43M2wuMTQ2IDEuMzkzLTMuNDguMzY2LS4xNDctMS4zOTJ6TTcuNjc0IDU2LjUwNmwuMTQ2IDEuMzkyLTMuNDguMzY2LS4xNDctMS4zOTJ6TTEwMC44MTEgNTYuODczbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTcuODIxIDQ3LjEwMWwtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek0xMDAuMDkgNjEuODk1bC0uMjkxIDEuMzY5LTMuNDI0LS43MjguMjkxLTEuMzY5ek04LjYzMSA0Mi40NmwtLjI5MSAxLjM3LTMuNDIzLS43MjguMjktMS4zN3pNOTguODQgNjYuODI3bC0uNDMyIDEuMzMxLTMuMzI5LTEuMDgxLjQzMy0xLjMzMnpNOS45MTggMzcuOTNsLS40MzMgMS4zMzEtMy4zMjktMS4wODIuNDMzLTEuMzMxek05Ny4wOTggNzEuNTg1bC0uNTY5IDEuMjgtMy4xOTctMS40MjQuNTctMS4yOHpNMTEuNjc3IDMzLjU1OGwtLjU3IDEuMjgtMy4xOTctMS40MjQuNTctMS4yNzl6TTkyLjE0OSA4MC40MzlsLS44MjMgMS4xMzMtMi44MzItMi4wNTguODIzLTEuMTMyek0xNi41MDYgMjUuNDgybC0uODIzIDEuMTMzLTIuODMxLTIuMDU3LjgyMy0xLjEzM3pNODkuMDE3IDg0LjQzMWwtLjkzNyAxLjA0LTIuNi0yLjM0MS45MzYtMS4wNHpNMTkuNTI4IDIxLjg2OWwtLjkzNiAxLjA0LTIuNjAxLTIuMzQyLjkzNi0xLjA0ek04NS40OCA4OC4wNzZsLTEuMDQxLjkzNi0yLjM0Mi0yLjYgMS4wNC0uOTM3ek0yMi45MSAxOC41OWwtMS4wNC45MzctMi4zNDEtMi42MDEgMS4wNC0uOTM3ek04MS41NzQgOTEuMzI4bC0xLjEzMy44MjMtMi4wNTctMi44MzEgMS4xMzItLjgyM3pNMjYuNjE3IDE1LjY4NGwtMS4xMzMuODIzLTIuMDU3LTIuODMyIDEuMTMyLS44MjN6TTcyLjg3MyA5Ni41MjRsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc4LS41N3pNMzQuODM4IDExLjEwNWwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzktLjU3ek02OC4xNTEgOTguNDA1bC0xLjMzMS40MzItMS4wODItMy4zMjkgMS4zMzItLjQzMnpNMzkuMjU5IDkuNDg1bC0xLjMzMi40MzMtMS4wODEtMy4zMyAxLjMzMS0uNDMyek02My4yNzIgOTkuNzk5bC0xLjM2OS4yOS0uNzI4LTMuNDIyIDEuMzctLjI5MXpNNDMuODMgOC4zMzdsLTEuMzY5LjI5MS0uNzI3LTMuNDIzIDEuMzctLjI5MXpNNTguMjcgMTAwLjY2MmwtMS4zOTMuMTQ2LS4zNjYtMy40OCAxLjM5My0uMTQ3ek00OC40OTQgNy42NzJsLTEuMzkyLjE0Ny0uMzY2LTMuNDgxIDEuMzkyLS4xNDd6XFxcIi8+PC9nPjwvZz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBpZD1cXFwibW9kX2Nsb2NrX3N2Z19ob3Vyc1xcXCIgZD1cXFwiTTU1LjcgNjQuNWgtNi40bC42LTQ0aDUuMnpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTUuMSw2NC41aC01LjJsMC44LTU4aDMuNkw1NS4xLDY0LjV6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU3LjgsMjEuM2MwLTIuOS0yLjQtNS4yLTUuMi01LjJzLTUuMywyLjMtNS4zLDUuMmMwLDIuNywyLDQuOCw0LjUsNS4yVjY5aDEuNVYyNi41QzU1LjgsMjYuMiw1Ny44LDI0LDU3LjgsMjEuM3pcXFwiLz48L3N2Zz5cXG5cIiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiVGltZSB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCBjbG9ja0ZhY2VTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVIb3Vyc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfaG91cnMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVNaW51dGVzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlU2Vjb25kc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3JztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2Nsb2NrLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKiBOdW1iZXIgb2YgaG91cnMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFID0gMTI7XG5cbi8qKiBOdW1iZXIgb2YgbWludXRlcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgPSA2MDtcblxuLyoqIFRpbWVvdXQgZm9yIHRoZSBjbG9jayBzdGFydC4gKi9cbmNvbnN0IElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiA9IDUwO1xuXG4vKiogQW5nbGUgaW4gYSBzaW5nbGUgcm90YXRpb24uICovXG5jb25zdCBGVUxMX0FOR0xFID0gMzYwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgaG91cnM6IDM2MC8xMiwgbWVhbnMgYSBmdWxsIHJvdGF0aW9uIC8gbnVtYmVyIG9mIGhvdXJzIGluIGEgcm90YXRpb24uICovXG5jb25zdCBIT1VSU19BTkdMRSA9IDMwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgbWludXRlczogMzYwLzYwLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgbWludXRlcyBpbiBvbmUgaG91ci4gKi9cbmNvbnN0IE1JTlVURVNfQU5HTEUgPSA2O1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc2Vjb25kcyBmb3IgU0JCIGNsb2NrIGN1c3RvbSBiZWhhdmlvci4gKi9cbmNvbnN0IFNCQl9TRUNPTkRTX0FOR0xFID0gMzYwIC8gNTguNTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIGluIGEgbWludXRlLiAqL1xuY29uc3QgU0VDT05EU19JTl9BX01JTlVURSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gaG91ci4gKi9cbmNvbnN0IFNFQ09ORFNfSU5fQU5fSE9VUiA9IDM2MDA7XG5cbi8qKiBBcyBhIGZhbGxiYWNrIG1lYXN1cmUsIHJlc2V0IHRoZSBjbG9jayBldmVyeSBoYWxmIGFuIGhvdXIgKi9cbmNvbnN0IFJFU0VUX0lOVEVSVkFMID0gU0VDT05EU19JTl9BTl9IT1VSIC8gMjtcblxuY29uc3QgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBhbmFsb2cgY2xvY2sgd2l0aCB0aGUgY2xhc3NpYyBTQkIgZmFjZS5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNsb2NrJylcbmNsYXNzIFNiYkNsb2NrRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogRGVmaW5lIGEgc3BlY2lmaWMgdGltZSB3aGljaCB0aGUgY2xvY2sgc2hvdWxkIHNob3cgc3RhdGljYWxseS5cbiAgICogQHBhcmFtIHZhbHVlIEhIOk1NOnNzXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3Igbm93OiBTYmJUaW1lIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNsb2NrIGlzIHRpY2tpbmcgb3Igbm90ICovXG4gIHByaXZhdGUgX3N0YXRlOiAncnVubmluZycgfCAncGF1c2VkJyA9ICdwYXVzZWQnO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGhvdXIgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kSG91cnMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBtaW51dGUgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kTWludXRlcyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlY29uZCBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRTZWNvbmRzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIEhvdXJzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9ob3VycyE6IG51bWJlcjtcblxuICAvKiogTWludXRlcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfbWludXRlcyE6IG51bWJlcjtcblxuICAvKiogU2Vjb25kcyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfc2Vjb25kcyE6IG51bWJlcjtcblxuICAvKiogTW92ZSB0aGUgbWludXRlcyBoYW5kIGV2ZXJ5IG1pbnV0ZS4gKi9cbiAgcHJpdmF0ZSBfaGFuZE1vdmVtZW50PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIHByaXZhdGUgX3Jlc2V0SW50ZXJ2YWxJZD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGhvdXJzIGhhbmQuICovXG4gIHByaXZhdGUgX21vdmVIb3Vyc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVIb3Vyc0hhbmQoKTtcblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIG1pbnV0ZXMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZU1pbnV0ZXNIYW5kRm4gPSAoKTogdm9pZCA9PiB0aGlzLl9tb3ZlTWludXRlc0hhbmQoKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIHRoaXMuX3Jlc2V0SW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHRoaXMuX3Jlc2V0Q2xvY2soKSwgUkVTRVRfSU5URVJWQUwgKiAxMDAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpKSB7XG4gICAgICB0aGlzLl9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9yZXNldEludGVydmFsSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgaWYgKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0b3BDbG9jaygpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMubm93KSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdGFydENsb2NrKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgYXN5bmMgX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5ub3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0b3BDbG9jaygpO1xuICAgICAgdGhpcy5fcmVzZXRTZWNvbmRzSGFuZEFuaW1hdGlvbigpO1xuICAgICAgdGhpcy5fc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH1cblxuICAvKiogU3RhcnRzIHRoZSBjbG9jayBieSBkZWZpbmluZyB0aGUgaGFuZHMgc3RhcnRpbmcgcG9zaXRpb24gdGhlbiBzdGFydGluZyB0aGUgYW5pbWF0aW9ucy4gKi9cbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnRDbG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdhbmltYXRpb25lbmQnLFxuICAgICAgdGhpcy5fbW92ZUhvdXJzSGFuZEZuLFxuICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlMsXG4gICAgKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2FuaW1hdGlvbmVuZCcsXG4gICAgICB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbixcbiAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TLFxuICAgICk7XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stYW5pbWF0aW9uLXBsYXktc3RhdGUnLCAncnVubmluZycpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9ICdydW5uaW5nJztcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSwgSU5JVElBTF9USU1FT1VUX0RVUkFUSU9OKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIFN0b3BzIHRoZSBjbG9jayBieSByZW1vdmluZyBhbGwgdGhlIGFuaW1hdGlvbnMuICovXG4gIHByaXZhdGUgYXN5bmMgX3N0b3BDbG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2hhbmRNb3ZlbWVudCk7XG5cbiAgICB0aGlzLl9yZW1vdmVTZWNvbmRzQW5pbWF0aW9uU3R5bGVzKCk7XG4gICAgdGhpcy5fcmVtb3ZlSG91cnNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlSG91cnNIYW5kRm4pO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcblxuICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1taW51dGVzLS1uby10cmFuc2l0aW9uJyk7XG5cbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stYW5pbWF0aW9uLXBsYXktc3RhdGUnLCAncGF1c2VkJyk7XG4gICAgdGhpcy5fc3RhdGUgPSAncGF1c2VkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcyBhIGZhbGxiYWNrIG1lYXN1cmUgdG8gcHJldmVudCBkZS1zeW5jLCByZXNldCB0aGUgY2xvY2sgdG8gdGhlIHN5c3RlbSB0aW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfcmVzZXRDbG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGUgIT09ICdydW5uaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLl9zdG9wQ2xvY2soKTtcbiAgICBhd2FpdCB0aGlzLl9zdGFydENsb2NrKCk7XG4gIH1cblxuICAvKiogU2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIHRocmVlIGhhbmRzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuICBwcml2YXRlIF9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzaWduQ3VycmVudFRpbWUoKTtcbiAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFIC0gdGhpcy5fc2Vjb25kcztcbiAgICBjb25zdCByZW1haW5pbmdNaW51dGVzID0gVE9UQUxfTUlOVVRFU19PTl9DTE9DS19GQUNFIC0gdGhpcy5fbWludXRlcztcbiAgICBjb25zdCByZW1haW5pbmdIb3VycyA9IFRPVEFMX0hPVVJTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9ob3VycztcblxuICAgIGxldCBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uID0gMDtcbiAgICBsZXQgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDA7XG5cbiAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz0gcmVtYWluaW5nU2Vjb25kcztcbiAgICAgIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAxO1xuICAgIH1cblxuICAgIGlmIChyZW1haW5pbmdNaW51dGVzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPVxuICAgICAgICAocmVtYWluaW5nTWludXRlcyAtIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMpICogU0VDT05EU19JTl9BX01JTlVURTtcbiAgICAgIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAxO1xuICAgIH1cblxuICAgIGlmIChyZW1haW5pbmdIb3VycyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz1cbiAgICAgICAgKHJlbWFpbmluZ0hvdXJzIC0gaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcykgKiBTRUNPTkRTX0lOX0FOX0hPVVI7XG4gICAgfVxuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyxcbiAgICAgIGAke01hdGguY2VpbCh0aGlzLl9ob3VycyAqIEhPVVJTX0FOR0xFICsgdGhpcy5fbWludXRlcyAvIDIpfWRlZ2AsXG4gICAgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLWR1cmF0aW9uJywgYCR7aG91cnNBbmltYXRpb25EdXJhdGlvbn1zYCk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tc3RhcnQtYW5nbGUnLFxuICAgICAgYCR7TWF0aC5jZWlsKHRoaXMuX3NlY29uZHMgKiBTQkJfU0VDT05EU19BTkdMRSl9ZGVnYCxcbiAgICApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1kdXJhdGlvbicsIGAke3JlbWFpbmluZ1NlY29uZHN9c2ApO1xuXG4gICAgdGhpcy5fc2V0TWludXRlc0hhbmQoKTtcblxuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1zZWNvbmRzLS1pbml0aWFsLW1pbnV0ZScpO1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbGl6ZWQnLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBHaXZlbiB0aGUgY3VycmVudCBkYXRlLCBjYWxjdWxhdGVzIHRoZSBoaC9tbS9zcyB2YWx1ZXMgYW5kIHRoZSBoaC9tbS9zcyBsZWZ0IHRvIHRoZSBuZXh0IG1pZG5pZ2h0LiAqL1xuICBwcml2YXRlIF9hc3NpZ25DdXJyZW50VGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5ub3cgPyBudWxsIDogbmV3IERhdGUoKTtcbiAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gZGF0ZVxuICAgICAgPyBbZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCldXG4gICAgICA6IHRoaXMubm93IS5zcGxpdCgnOicpLm1hcCgocCkgPT4gK3ApO1xuXG4gICAgdGhpcy5faG91cnMgPSBob3VycyAlIDEyO1xuICAgIHRoaXMuX21pbnV0ZXMgPSBtaW51dGVzO1xuICAgIHRoaXMuX3NlY29uZHMgPSBzZWNvbmRzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSBtaW51dGVzIGhhbmQuICovXG4gIHByaXZhdGUgX3NldE1pbnV0ZXNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXM/LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICBgcm90YXRlWigke01hdGguY2VpbCh0aGlzLl9taW51dGVzICogTUlOVVRFU19BTkdMRSl9ZGVnKWAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBob3VycyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlSG91cnNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICBsZXQgaG91cnNBbmdsZSA9IE1hdGguY2VpbCh0aGlzLl9ob3VycyAqIEhPVVJTX0FOR0xFICsgdGhpcy5fbWludXRlcyAvIDIpO1xuXG4gICAgaWYgKGhvdXJzQW5nbGUgPj0gRlVMTF9BTkdMRSkge1xuICAgICAgaG91cnNBbmdsZSAtPSBGVUxMX0FOR0xFO1xuICAgIH1cblxuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5zdHlsZS5zZXRQcm9wZXJ0eSgndHJhbnNmb3JtJywgYHJvdGF0ZVooJHtob3Vyc0FuZ2xlfWRlZylgKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgdG8gdGhlIG5leHQgdmFsdWUuICovXG4gIHByaXZhdGUgX21vdmVNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9yZW1vdmVTZWNvbmRzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKTtcblxuICAgIHRoaXMuX2hhbmRNb3ZlbWVudCA9IHNldEludGVydmFsKFxuICAgICAgKCkgPT4gdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCksXG4gICAgICBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgKiAxMDAwLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKTogdm9pZCB7XG4gICAgdGhpcy5fbWludXRlcysrO1xuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZpbmcgYW5pbWF0aW9uIGJ5IG92ZXJyaWRpbmcgd2l0aCBlbXB0eSBzdHJpbmcsXG4gICAqIHRoZW4gdHJpZ2dlcmluZyBhIHJlZmxvdyBhbmQgcmUgYWRkIG9yaWdpbmFsIGFuaW1hdGlvbiBieSByZW1vdmluZyBvdmVycmlkZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3Jlc2V0U2Vjb25kc0hhbmRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jbG9ja0hhbmRTZWNvbmRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUuYW5pbWF0aW9uID0gJyc7XG4gICAgLy8gSGFjayB0byB0cmlnZ2VyIHJlZmxvd1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcy5vZmZzZXRIZWlnaHQ7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYW5pbWF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBkb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuX2hhbmRsZVBhZ2VWaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZUhvdXJzSGFuZEZuKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9oYW5kTW92ZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlSG91cnNBbmltYXRpb25TdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmNsYXNzTGlzdC5yZW1vdmUoJ3NiYi1jbG9ja19faGFuZC1ob3Vycy0taW5pdGlhbC1ob3VyJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVTZWNvbmRzQW5pbWF0aW9uU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmNsYXNzTGlzdC5yZW1vdmUoJ3NiYi1jbG9ja19faGFuZC1zZWNvbmRzLS1pbml0aWFsLW1pbnV0ZScpO1xuICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXM/LmNsYXNzTGlzdC5yZW1vdmUoJ3NiYi1jbG9ja19faGFuZC1taW51dGVzLS1uby10cmFuc2l0aW9uJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tc3RhcnQtYW5nbGUnKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWNsb2NrXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWNsb2NrX19mYWNlXCIgLmlubmVySFRNTD0ke2Nsb2NrRmFjZVNWR30+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLWhvdXJzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVIb3Vyc1NWR31cbiAgICAgICAgICAke3JlZigoZT86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzID0gZSBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzYmItY2xvY2tfX2hhbmQtbWludXRlcyBzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvblwiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlTWludXRlc1NWR31cbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzID0gZWwgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLXNlY29uZHNcIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZVNlY29uZHNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jbG9jayc6IFNiYkNsb2NrRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE1BQWUsZUFBQTtBQ0FmLE1BQWUsc0JBQUE7QUNBZixNQUFlLHdCQUFBO0FDQWYsTUFBZSx3QkFBQTs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/focus.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,QAWnB,CAAC;AAGb,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,UAAU,CAAC,EAAE;IACX,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GACA,WAAW,EAAE,CAuCf;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,GACpC,WAAW,GAAG,IAAI,CAMpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAyB;IAE5C;;;;;OAKG;IACI,IAAI,CACT,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;QACtC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;KAC3C,GACA,IAAI;IA4CA,UAAU,IAAI,IAAI;CAI1B"}
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/focus.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,QAWnB,CAAC;AAGb,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,UAAU,CAAC,EAAE;IACX,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GACA,WAAW,EAAE,CAuCf;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,GACpC,WAAW,GAAG,IAAI,CAMpB;AAGD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAyB;IAE5C;;;;;OAKG;IACI,IAAI,CACT,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;QACtC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC;KAC3C,GACA,IAAI;IA4CA,UAAU,IAAI,IAAI;CAI1B"}
@@ -269,4 +269,4 @@ export {
269
269
  sbbInputModalityDetector,
270
270
  setModalityOnNextFocus
271
271
  };
272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9hcnJvdy1uYXZpZ2F0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9mYWtlLWV2ZW50LWRldGVjdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ZvY3VzLXZpc2libGUtd2l0aGluLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ludGVyYWN0aXZpdHktY2hlY2tlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvZm9jdXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIFByZXZBbmROZXh0S2V5cyB7XG4gIHByZXZLZXk6IHN0cmluZztcbiAgbmV4dEtleTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBnZXRQcmV2QW5kTmV4dEtleXMoKTogUHJldkFuZE5leHRLZXlzIHtcbiAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tYXRjaGVzKCc6ZGlyKHJ0bCknKSkge1xuICAgIHJldHVybiB7IHByZXZLZXk6ICdBcnJvd1JpZ2h0JywgbmV4dEtleTogJ0Fycm93TGVmdCcgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBwcmV2S2V5OiAnQXJyb3dMZWZ0JywgbmV4dEtleTogJ0Fycm93UmlnaHQnIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUga2V5IHByZXNzZWQgaXMgYW1vbmcgdGhvc2UgYWxsb3dlZCBmb3IgbmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fycm93S2V5UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gWydBcnJvd1JpZ2h0JywgJ0Fycm93TGVmdCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50LmtleSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGtleSBwcmVzc2VkIHNob3VsZCBtb3ZlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXh0IGVsZW1lbnQuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcmV2aW91c0Fycm93S2V5UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSBnZXRQcmV2QW5kTmV4dEtleXMoKS5wcmV2S2V5O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBrZXkgcHJlc3NlZCBzaG91bGQgbW92ZSB0aGUgbmF2aWdhdGlvbiB0byB0aGUgbmV4dCBlbGVtZW50LlxuICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudCB0byBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmV4dEFycm93S2V5UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyB8fCBldmVudC5rZXkgPT09IGdldFByZXZBbmROZXh0S2V5cygpLm5leHRLZXk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGtleSBwcmVzc2VkIGlzIGFtb25nIHRob3NlIGFsbG93ZWQgZm9yIG5hdmlnYXRpb24uXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd0tleU9yUGFnZUtleXNQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0Fycm93S2V5UHJlc3NlZChldmVudCkgfHwgWydQYWdlVXAnLCAnUGFnZURvd24nLCAnSG9tZScsICdFbmQnXS5pbmNsdWRlcyhldmVudC5rZXkpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgaW5kZXggb2YgdGhlIG5leHQgZWxlbWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gb2Zmc2V0LlxuICogQHBhcmFtIGN1cnJlbnRJbmRleCBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSBtYXhJbmRleCBUaGUgbWF4aW11bSBwZXJtaXR0ZWQgdmFsdWUgKGUuZy4gYXJyYXkgc2l6ZSkuXG4gKiBAcGFyYW0gb2Zmc2V0IFRoZSBhbW91bnQgdG8gbW92ZSBieS5cbiAqL1xuZnVuY3Rpb24gY2FsY05leHRJbmRleEluUmFuZ2UoY3VycmVudEluZGV4OiBudW1iZXIsIG1heEluZGV4OiBudW1iZXIsIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIChjdXJyZW50SW5kZXggKyBvZmZzZXQgKyBtYXhJbmRleCkgJSBtYXhJbmRleDtcbn1cblxuZnVuY3Rpb24gZ2V0TGFzdEluZGV4KHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBzaXplIC0gMTtcbn1cblxuY29uc3QgZmlyc3RJbmRleCA9IDA7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gbW92ZSB0bywgYmFzZWQgb24gdGhlIGtleWJvYXJkIGlucHV0LCB0aGUgY3VycmVudCBlbGVtZW50IGluIHRoZSBsaXN0IGFuZCB0aGUgbGlzdCBzaXplLlxuICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudCB0byBjaGVjay5cbiAqIEBwYXJhbSBjdXJyZW50IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGluIHRoZSBsaXN0LlxuICogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgdGhlIGxpc3QuXG4gKiBAcmV0dXJucyBpZiBpdCBpcyBhICdwcmV2aW91cycgZXZlbnQsIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBwcmV2aW91cyBlbGVtZW50LFxuICogb3IgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9uZSBpZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIHRoZSBmaXJzdCBpbiB0aGUgbGlzdDtcbiAqIGlmIGl0IGlzIGEgJ25leHQnIGV2ZW50LCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBlbGVtZW50LFxuICogb3IgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvbmUsIGlmIHRoZSBjdXJyZW50IGlzIHRoZSBsYXN0IGluIHRoZSBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudDogS2V5Ym9hcmRFdmVudCwgY3VycmVudDogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCB7IHByZXZLZXksIG5leHRLZXkgfSA9IGdldFByZXZBbmROZXh0S2V5cygpO1xuXG4gIGlmIChldmVudC5rZXkgPT09IHByZXZLZXkgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICByZXR1cm4gY3VycmVudCA8IGZpcnN0SW5kZXggPyBnZXRMYXN0SW5kZXgoc2l6ZSkgOiBjYWxjTmV4dEluZGV4SW5SYW5nZShjdXJyZW50LCBzaXplLCAtMSk7XG4gIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBuZXh0S2V5IHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICByZXR1cm4gY3VycmVudCA+PSBzaXplID8gZmlyc3RJbmRleCA6IGNhbGNOZXh0SW5kZXhJblJhbmdlKGN1cnJlbnQsIHNpemUsIDEpO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufVxuIiwiLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9jZGsvYTExeS9mYWtlLWV2ZW50LWRldGVjdGlvbi50c1xuXG4vKiogR2V0cyB3aGV0aGVyIGFuIGV2ZW50IGNvdWxkIGJlIGEgZmFrZWQgYG1vdXNlZG93bmAgZXZlbnQgZGlzcGF0Y2hlZCBieSBhIHNjcmVlbiByZWFkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAvLyBTb21lIHNjcmVlbiByZWFkZXJzIHdpbGwgZGlzcGF0Y2ggYSBmYWtlIGBtb3VzZWRvd25gIGV2ZW50IHdoZW4gcHJlc3NpbmcgZW50ZXIgb3Igc3BhY2Ugb25cbiAgLy8gYSBjbGlja2FibGUgZWxlbWVudC4gV2UgY2FuIGRpc3Rpbmd1aXNoIHRoZXNlIGV2ZW50cyB3aGVuIGBldmVudC5idXR0b25zYCBpcyB6ZXJvLCBvclxuICAvLyBgZXZlbnQuZGV0YWlsYCBpcyB6ZXJvIGRlcGVuZGluZyBvbiB0aGUgYnJvd3NlcjpcbiAgLy8gLSBgZXZlbnQuYnV0dG9uc2Agd29ya3Mgb24gRmlyZWZveCwgYnV0IGZhaWxzIG9uIENocm9tZS5cbiAgLy8gLSBgZGV0YWlsYCB3b3JrcyBvbiBDaHJvbWUsIGJ1dCBmYWlscyBvbiBGaXJlZm94LlxuICByZXR1cm4gZXZlbnQuYnV0dG9ucyA9PT0gMCB8fCBldmVudC5kZXRhaWwgPT09IDA7XG59XG5cbi8qKiBHZXRzIHdoZXRoZXIgYW4gZXZlbnQgY291bGQgYmUgYSBmYWtlZCBgdG91Y2hzdGFydGAgZXZlbnQgZGlzcGF0Y2hlZCBieSBhIHNjcmVlbiByZWFkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGYWtlVG91Y2hzdGFydEZyb21TY3JlZW5SZWFkZXIoZXZlbnQ6IFRvdWNoRXZlbnQpOiBib29sZWFuIHtcbiAgY29uc3QgdG91Y2g6IFRvdWNoIHwgdW5kZWZpbmVkID1cbiAgICAoZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzWzBdKSB8fCAoZXZlbnQuY2hhbmdlZFRvdWNoZXMgJiYgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pO1xuXG4gIC8vIEEgZmFrZSBgdG91Y2hzdGFydGAgY2FuIGJlIGRpc3Rpbmd1aXNoZWQgZnJvbSBhIHJlYWwgb25lIGJ5IGxvb2tpbmcgYXQgdGhlIGBpZGVudGlmaWVyYFxuICAvLyB3aGljaCBpcyB0eXBpY2FsbHkgPj0gMCBvbiBhIHJlYWwgZGV2aWNlIHZlcnN1cyAtMSBmcm9tIGEgc2NyZWVuIHJlYWRlci4gSnVzdCB0byBiZSBzYWZlLFxuICAvLyB3ZSBjYW4gYWxzbyBsb29rIGF0IGByYWRpdXNYYCBhbmQgYHJhZGl1c1lgLiBUaGlzIGJlaGF2aW9yIHdhcyBvYnNlcnZlZCBhZ2FpbnN0IGEgV2luZG93cyAxMFxuICAvLyBkZXZpY2Ugd2l0aCBhIHRvdWNoIHNjcmVlbiBydW5uaW5nIE5WREEgdjIwMjAuNCBhbmQgRmlyZWZveCA4NSBvciBDaHJvbWUgODguXG4gIHJldHVybiAoXG4gICAgISF0b3VjaCAmJlxuICAgIHRvdWNoLmlkZW50aWZpZXIgPT09IC0xICYmXG4gICAgKHRvdWNoLnJhZGl1c1ggPT0gbnVsbCB8fCB0b3VjaC5yYWRpdXNYID09PSAxKSAmJlxuICAgICh0b3VjaC5yYWRpdXNZID09IG51bGwgfHwgdG91Y2gucmFkaXVzWSA9PT0gMSlcbiAgKTtcbn1cbiIsIi8vIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL2Nkay9hMTF5L2lucHV0LW1vZGFsaXR5L2lucHV0LW1vZGFsaXR5LWRldGVjdG9yLnRzXG5cbmltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgZ2V0RXZlbnRUYXJnZXQgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB7XG4gIGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIsXG4gIGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyLFxufSBmcm9tICcuL2Zha2UtZXZlbnQtZGV0ZWN0aW9uLmpzJztcblxuZXhwb3J0IHR5cGUgU2JiSW5wdXRNb2RhbGl0eSA9ICd0b3VjaCcgfCAnbW91c2UnIHwgJ2tleWJvYXJkJyB8ICdwcm9ncmFtJyB8IG51bGw7XG5cbi8qKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3Igb2YgdGhlIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci4gKi9cbmludGVyZmFjZSBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zIHtcbiAgLyoqIEtleXMgdG8gaWdub3JlIHdoZW4gZGV0ZWN0aW5nIGtleWJvYXJkIGlucHV0IG1vZGFsaXR5LiAqL1xuICBpZ25vcmVLZXlzPzogbnVtYmVyW107XG59XG5cbmNvbnN0IFNISUZUID0gMTY7XG5jb25zdCBDT05UUk9MID0gMTc7XG5jb25zdCBBTFQgPSAxODtcbmNvbnN0IE1FVEEgPSA5MTsgLy8gV0lOX0tFWV9MRUZUXG5jb25zdCBNQUNfTUVUQSA9IDIyNDtcblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IuXG4gKlxuICogTW9kaWZpZXIga2V5cyBhcmUgaWdub3JlZCBieSBkZWZhdWx0IChpLmUuIHdoZW4gcHJlc3NlZCB3b24ndCBjYXVzZSB0aGUgc2VydmljZSB0byBkZXRlY3RcbiAqIGtleWJvYXJkIGlucHV0IG1vZGFsaXR5KSBmb3IgdHdvIHJlYXNvbnM6XG4gKlxuICogMS4gTW9kaWZpZXIga2V5cyBhcmUgY29tbW9ubHkgdXNlZCB3aXRoIG1vdXNlIHRvIHBlcmZvcm0gYWN0aW9ucyBzdWNoIGFzICdyaWdodCBjbGljaycgb3IgJ29wZW5cbiAqICAgIGluIG5ldyB0YWInLCBhbmQgYXJlIHRodXMgbGVzcyByZXByZXNlbnRhdGl2ZSBvZiBhY3R1YWwga2V5Ym9hcmQgaW50ZXJhY3Rpb24uXG4gKiAyLiBWb2ljZU92ZXIgdHJpZ2dlcnMgc29tZSBrZXlib2FyZCBldmVudHMgd2hlbiBsaW5lYXJseSBuYXZpZ2F0aW5nIHdpdGggQ29udHJvbCArIE9wdGlvbiAoYnV0XG4gKiAgICBjb25mdXNpbmdseSBub3Qgd2l0aCBDYXBzIExvY2spLiBUaHVzLCB0byBoYXZlIHBhcml0eSB3aXRoIG90aGVyIHNjcmVlbiByZWFkZXJzLCB3ZSBpZ25vcmVcbiAqICAgIHRoZXNlIGtleXMgc28sIGFzIHRvIG5vdCB1cGRhdGUgdGhlIGlucHV0IG1vZGFsaXR5LlxuICpcbiAqIE5vdGUgdGhhdCB3ZSBkbyBub3QgYnkgZGVmYXVsdCBpZ25vcmUgdGhlIHJpZ2h0IE1ldGEga2V5IG9uIFNhZmFyaSBiZWNhdXNlIGl0IGhhcyB0aGUgc2FtZSBrZXlcbiAqIGNvZGUgYXMgdGhlIENvbnRleHRNZW51IGtleSBvbiBvdGhlciBicm93c2Vycy4gV2hlbiB3ZSBzd2l0Y2ggdG8gdXNpbmcgZXZlbnQua2V5LCB3ZSBjYW5cbiAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3by5cbiAqL1xuY29uc3QgaW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9uczogU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyA9IHtcbiAgaWdub3JlS2V5czogW0FMVCwgQ09OVFJPTCwgTUFDX01FVEEsIE1FVEEsIFNISUZUXSxcbn07XG5cbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBwYXNzIGFmdGVyIGEgdG91Y2hzdGFydCBldmVudCBpbiBvcmRlciBmb3IgYSBzdWJzZXF1ZW50IG1vdXNlZG93blxuICogZXZlbnQgdG8gYmUgYXR0cmlidXRlZCBhcyBtb3VzZSBhbmQgbm90IHRvdWNoLlxuICpcbiAqIFRocm91Z2ggdHJpYWwgYW5kIGVycm9yIGl0IHdhcyBmb3VuZCB0aGF0IGEgdmFsdWUgb2YgYXJvdW5kIDY1MG1zIHNlZW1zIGFwcHJvcHJpYXRlLlxuICovXG5jb25zdCB0b3VjaEJ1ZmZlck1zID0gNjUwO1xuXG4vKipcbiAqIEV2ZW50IGxpc3RlbmVyIG9wdGlvbnMgdGhhdCBlbmFibGUgY2FwdHVyaW5nIGFuZCBhbHNvIG1hcmsgdGhlIGxpc3RlbmVyIGFzIHBhc3NpdmUgaWYgdGhlIGJyb3dzZXJcbiAqIHN1cHBvcnRzIGl0LlxuICovXG5jb25zdCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBwYXNzaXZlOiB0cnVlLFxuICBjYXB0dXJlOiB0cnVlLFxufTtcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgZGV0ZWN0cyB0aGUgdXNlcidzIGlucHV0IG1vZGFsaXR5LlxuICpcbiAqIFRoaXMgc2VydmljZSBkb2VzIG5vdCB1cGRhdGUgdGhlIGlucHV0IG1vZGFsaXR5IHdoZW4gYSB1c2VyIG5hdmlnYXRlcyB3aXRoIGEgc2NyZWVuIHJlYWRlclxuICogKGUuZy4gbGluZWFyIG5hdmlnYXRpb24gd2l0aCBWb2ljZU92ZXIsIG9iamVjdCBuYXZpZ2F0aW9uIC8gYnJvd3NlIG1vZGUgd2l0aCBOVkRBLCB2aXJ0dWFsIFBDXG4gKiBjdXJzb3IgbW9kZSB3aXRoIEpBV1MpLiBUaGlzIGlzIGluIHBhcnQgZHVlIHRvIHRlY2huaWNhbCBsaW1pdGF0aW9ucyAoaS5lLiBrZXlib2FyZCBldmVudHMgZG8gbm90XG4gKiBmaXJlIGFzIGV4cGVjdGVkIGluIHRoZXNlIG1vZGVzKSBidXQgaXMgYWxzbyBhcmd1YWJseSB0aGUgY29ycmVjdCBiZWhhdmlvci4gTmF2aWdhdGluZyB3aXRoIGFcbiAqIHNjcmVlbiByZWFkZXIgaXMgYWtpbiB0byB2aXN1YWxseSBzY2FubmluZyBhIHBhZ2UsIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIGFjdHVhbCB1c2VyXG4gKiBpbnB1dCBpbnRlcmFjdGlvbi5cbiAqXG4gKiBXaGVuIGEgdXNlciBpcyBub3QgbmF2aWdhdGluZyBidXQgKmludGVyYWN0aW5nKiB3aXRoIGEgc2NyZWVuIHJlYWRlciwgdGhpcyBzZXJ2aWNlIGF0dGVtcHRzIHRvXG4gKiB1cGRhdGUgdGhlIGlucHV0IG1vZGFsaXR5IHRvIGtleWJvYXJkLCBidXQgaW4gZ2VuZXJhbCB0aGlzIHNlcnZpY2UncyBiZWhhdmlvciBpcyBsYXJnZWx5XG4gKiB1bmRlZmluZWQuXG4gKi9cbmNsYXNzIFNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB7XG4gIC8qKiBUaGUgbW9zdCByZWNlbnRseSBkZXRlY3RlZCBpbnB1dCBtb2RhbGl0eS4gKi9cbiAgcHVibGljIGdldCBtb3N0UmVjZW50TW9kYWxpdHkoKTogU2JiSW5wdXRNb2RhbGl0eSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1vc3QgcmVjZW50IG1vZGFsaXR5IG11c3QgYmUgaW5pdGlhbGlzZWQgd2l0aCB0aGUgdmFsdWUgJ21vdXNlJyB0byBjb3ZlciB0aGUgY2FzZSB3aGVyZSBhbiBhY3Rpb24gaXNcbiAgICogcGVyZm9ybWVkIGJ1dCBubyBtb3VzZSBvciBrZXlib2FyZCBldmVudCBoYXMgeWV0IG9jY3VycmVkIG9uIHRoZSBwYWdlIChlLmcuIGBzYmItcG9wb3ZlcmAgd2l0aCBob3ZlciB0cmlnZ2VyKS5cbiAgICovXG4gIHByaXZhdGUgX21vc3RSZWNlbnRNb2RhbGl0eTogU2JiSW5wdXRNb2RhbGl0eSB8IG51bGwgPSAnbW91c2UnO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnRseSBkZXRlY3RlZCBpbnB1dCBtb2RhbGl0eSBldmVudCB0YXJnZXQuIElzIG51bGwgaWYgbm8gaW5wdXQgbW9kYWxpdHkgaGFzIGJlZW5cbiAgICogZGV0ZWN0ZWQgb3IgaWYgdGhlIGFzc29jaWF0ZWQgZXZlbnQgdGFyZ2V0IGlzIG51bGwgZm9yIHNvbWUgdW5rbm93biByZWFzb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1vc3RSZWNlbnRUYXJnZXQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbW9zdFJlY2VudFRhcmdldDtcbiAgfVxuICBwcml2YXRlIF9tb3N0UmVjZW50VGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPcHRpb25zIGZvciB0aGlzIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyA9IHtcbiAgICAuLi5pbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zLFxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZXN0YW1wIG9mIHRoZSBsYXN0IHRvdWNoIGlucHV0IG1vZGFsaXR5LiBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG1vdXNlZG93biBldmVudHNcbiAgICogc2hvdWxkIGJlIGF0dHJpYnV0ZWQgdG8gbW91c2Ugb3IgdG91Y2guXG4gICAqL1xuICBwcml2YXRlIF9sYXN0VG91Y2hNcyA9IDA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleWRvd24sIG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5fb25Nb3VzZWRvd24sIG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuX29uVG91Y2hzdGFydCwgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICdtb3VzZSc7XG4gICAgdGhpcy5fbW9zdFJlY2VudFRhcmdldCA9IG51bGw7XG4gICAgdGhpcy5fbGFzdFRvdWNoTXMgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMga2V5ZG93biBldmVudHMuIE11c3QgYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdCBnZXRzXG4gICAqIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25LZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gSWYgdGhpcyBpcyBvbmUgb2YgdGhlIGtleXMgd2Ugc2hvdWxkIGlnbm9yZSwgdGhlbiBpZ25vcmUgaXQgYW5kIGRvbid0IHVwZGF0ZSB0aGUgaW5wdXRcbiAgICAvLyBtb2RhbGl0eSB0byBrZXlib2FyZC5cbiAgICBpZiAodGhpcy5fb3B0aW9ucz8uaWdub3JlS2V5cz8uc29tZSgoa2V5Q29kZSkgPT4ga2V5Q29kZSA9PT0gZXZlbnQua2V5Q29kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSAna2V5Ym9hcmQnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2Vkb3duIGV2ZW50cy4gTXVzdCBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0XG4gICAqIGdldHMgYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9vbk1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgIC8vIFRvdWNoZXMgdHJpZ2dlciBib3RoIHRvdWNoIGFuZCBtb3VzZSBldmVudHMsIHNvIHdlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBtb3VzZSBldmVudHNcbiAgICAvLyB0aGF0IHdlcmUgdHJpZ2dlcmVkIHZpYSBtb3VzZSB2cyB0b3VjaC4gVG8gZG8gc28sIGNoZWNrIGlmIHRoZSBtb3VzZSBldmVudCBvY2N1cnMgY2xvc2VseVxuICAgIC8vIGFmdGVyIHRoZSBwcmV2aW91cyB0b3VjaCBldmVudC5cbiAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMuX2xhc3RUb3VjaE1zIDwgdG91Y2hCdWZmZXJNcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZha2UgbW91c2Vkb3duIGV2ZW50cyBhcmUgZmlyZWQgYnkgc29tZSBzY3JlZW4gcmVhZGVycyB3aGVuIGNvbnRyb2xzIGFyZSBhY3RpdmF0ZWQgYnkgdGhlXG4gICAgLy8gc2NyZWVuIHJlYWRlci4gQXR0cmlidXRlIHRoZW0gdG8ga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuXG4gICAgdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5ID0gaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldmVudCkgPyAna2V5Ym9hcmQnIDogJ21vdXNlJztcbiAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRvdWNoc3RhcnQgZXZlbnRzLiBNdXN0IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0IHdoZW4gaXRcbiAgICogZ2V0cyBib3VuZC5cbiAgICovXG4gIHByaXZhdGUgX29uVG91Y2hzdGFydCA9IChldmVudDogVG91Y2hFdmVudCk6IHZvaWQgPT4ge1xuICAgIC8vIFNhbWUgc2NlbmFyaW8gYXMgbWVudGlvbmVkIGluIF9vbk1vdXNlZG93biwgYnV0IG9uIHRvdWNoIHNjcmVlbiBkZXZpY2VzLCBmYWtlIHRvdWNoc3RhcnRcbiAgICAvLyBldmVudHMgYXJlIGZpcmVkLiBBZ2FpbiwgYXR0cmlidXRlIHRvIGtleWJvYXJkIGlucHV0IG1vZGFsaXR5LlxuICAgIGlmIChpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcihldmVudCkpIHtcbiAgICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICdrZXlib2FyZCc7XG4gICAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB0aW1lc3RhbXAgb2YgdGhpcyB0b3VjaCBldmVudCwgYXMgaXQncyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbW91c2UgZXZlbnRzXG4gICAgLy8gdHJpZ2dlcmVkIHZpYSBtb3VzZSB2cyB0b3VjaC5cbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSAndG91Y2gnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgPSBuZXcgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yKCk7XG5cbi8vIFNldCB0aGUgaW5wdXQgbW9kYWxpdHkgaW4gb3JkZXIgdG8gYXZvaWQgc2hvd2luZyB0aGUgb3V0bGluZSBpbiBTYWZhcmkuXG5leHBvcnQgZnVuY3Rpb24gc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGlmICghZWxlbWVudFRvRm9jdXMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtb3N0UmVjZW50TW9kYWxpdHkgPSBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5O1xuXG4gIC8vIFNldCBmb2N1cyBvcmlnaW4gdG8gZWxlbWVudCB3aGljaCBzaG91bGQgcmVjZWl2ZSBmb2N1c1xuICBpZiAoIShlbGVtZW50VG9Gb2N1cyAmJiBtb3N0UmVjZW50TW9kYWxpdHkgIT09IG51bGwpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnRUb0ZvY3VzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgJ2ZvY3VzJyxcbiAgICAoKSA9PiB7XG4gICAgICBlbGVtZW50VG9Gb2N1cy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9jdXMtb3JpZ2luJywgbW9zdFJlY2VudE1vZGFsaXR5KTtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdibHVyJyxcbiAgICAgICAgKCkgPT4gZWxlbWVudFRvRm9jdXMucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWZvY3VzLW9yaWdpbicpLFxuICAgICAgICB7XG4gICAgICAgICAgb25jZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB7IG9uY2U6IHRydWUgfSxcbiAgKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhY3RpdmVDb250cm9sbGVyLCBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi9pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci5qcyc7XG5cbi8vIERldGVybWluZSB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBhIHZpc2libGUgZm9jdXMgd2l0aGluLlxuZXhwb3J0IGNsYXNzIFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXNpbkhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5faG9zdC50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1oYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4nLFxuICAgICAgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSA9PT0gJ2tleWJvYXJkJyxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgX2ZvY3Vzb3V0SGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9ob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1oYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4nKTtcbiAgfTtcblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCB0aGlzLl9mb2N1c2luSGFuZGxlcik7XG4gICAgdGhpcy5faG9zdC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHRoaXMuX2ZvY3Vzb3V0SGFuZGxlcik7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCB0aGlzLl9mb2N1c2luSGFuZGxlcik7XG4gICAgdGhpcy5faG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHRoaXMuX2ZvY3Vzb3V0SGFuZGxlcik7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBoYXNHZW9tZXRyeShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAvLyBVc2UgbG9naWMgZnJvbSBqUXVlcnkgdG8gY2hlY2sgZm9yIGFuIGludmlzaWJsZSBlbGVtZW50LlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9oaWRkZW5WaXNpYmxlU2VsZWN0b3JzLmpzI0wxMlxuICByZXR1cm4gISEoXG4gICAgZWxlbWVudC5vZmZzZXRXaWR0aCB8fFxuICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8XG4gICAgKHR5cGVvZiBlbGVtZW50LmdldENsaWVudFJlY3RzID09PSAnZnVuY3Rpb24nICYmIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW50ZXJhY3Rpdml0eUNoZWNrZXIge1xuICBpc1Zpc2libGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgSW50ZXJhY3Rpdml0eUNoZWNrZXIgaW1wbGVtZW50cyBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyB2aXNpYmxlIGZvciB0aGUgcHVycG9zZXMgb2YgaW50ZXJhY3Rpdml0eS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGNhcHR1cmUgc3RhdGVzIGxpa2UgYGRpc3BsYXk6IG5vbmVgIGFuZCBgdmlzaWJpbGl0eTogaGlkZGVuYCwgYnV0IG5vdCB0aGluZ3MgbGlrZVxuICAgKiBiZWluZyBjbGlwcGVkIGJ5IGFuIGBvdmVyZmxvdzogaGlkZGVuYCBwYXJlbnQgb3IgYmVpbmcgb3V0c2lkZSB0aGUgdmlld3BvcnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBpc1Zpc2libGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzR2VvbWV0cnkoZWxlbWVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS52aXNpYmlsaXR5ID09PSAndmlzaWJsZSc7XG4gIH1cbn1cblxuY2xhc3MgSW50ZXJhY3Rpdml0eUNoZWNrZXJNb2NrIGltcGxlbWVudHMgSW50ZXJmYWNlSW50ZXJhY3Rpdml0eUNoZWNrZXIge1xuICBwdWJsaWMgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8vIEZvciB1bml0IHRlc3RzIHdlIG5lZWQgdG8gcHJldGVuZCB0aGF0IGFuIGVsZW1lbnQgaXMgYWx3YXlzIHZpc2libGUuXG4vLyBUaGlzIGNhbiBiZSBkb25lIGJ5IGNoZWNraW5nIGlmIHZpc2liaWxpdHkgcHJvcGVydHkgaXMgc2V0IHRvIGVtcHR5LlxuZXhwb3J0IGNvbnN0IGludGVyYWN0aXZpdHlDaGVja2VyOiBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciA9XG4gIHR5cGVvZiBnZXRDb21wdXRlZFN0eWxlID09PSAndW5kZWZpbmVkJyB8fFxuICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkudmlzaWJpbGl0eSA9PT0gJydcbiAgICA/IG5ldyBJbnRlcmFjdGl2aXR5Q2hlY2tlck1vY2soKVxuICAgIDogbmV3IEludGVyYWN0aXZpdHlDaGVja2VyKCk7XG4iLCJpbXBvcnQgeyBpbnRlcmFjdGl2aXR5Q2hlY2tlciB9IGZyb20gJy4vaW50ZXJhY3Rpdml0eS1jaGVja2VyLmpzJztcblxuZXhwb3J0IGNvbnN0IElTX0ZPQ1VTQUJMRV9RVUVSWSA9IFtcbiAgJ2J1dHRvbicsXG4gICdbaHJlZl0nLFxuICAnaW5wdXQnLFxuICAnc2VsZWN0JyxcbiAgJ3RleHRhcmVhJyxcbiAgJ2RldGFpbHMnLFxuICAnc3VtbWFyeScsXG4gICdbdGFiaW5kZXhdJyxcbl1cbiAgLm1hcCgoc2VsZWN0b3IpID0+IGAke3NlbGVjdG9yfTpub3QoW2Rpc2FibGVkXSw6ZGlzYWJsZWQsW3RhYmluZGV4PVwiLTFcIl0sW2luZXJ0XSlgKVxuICAuam9pbignLCcpO1xuXG4vLyBOb3RlOiB0aGUgdXNlIG9mIHRoaXMgZnVuY3Rpb24gZm9yIG1vcmUgY29tcGxleCBzY2VuYXJpb3MgKHdpdGggbWFueSBuZXN0ZWQgZWxlbWVudHMpIG1heSBiZSBleHBlbnNpdmUuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoXG4gIGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLFxuICBwcm9wZXJ0aWVzPzoge1xuICAgIGZpbHRlcj86IChlbDogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgZmluZEZpcnN0Rm9jdXNhYmxlPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlSW52aXNpYmxlRWxlbWVudHM/OiBib29sZWFuO1xuICB9LFxuKTogSFRNTEVsZW1lbnRbXSB7XG4gIGNvbnN0IGZvY3VzYWJsZUVscyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG5cbiAgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlcyhlbGVtZW50czogSFRNTEVsZW1lbnRbXSwgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcihlbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbC5ub2RlTmFtZSA9PT0gJ1NMT1QnKSB7XG4gICAgICAgIGdldEZvY3VzYWJsZXMoXG4gICAgICAgICAgQXJyYXkuZnJvbSgoZWwgYXMgSFRNTFNsb3RFbGVtZW50KS5hc3NpZ25lZEVsZW1lbnRzKCkpIGFzIEhUTUxFbGVtZW50W10sXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBlbC5tYXRjaGVzKElTX0ZPQ1VTQUJMRV9RVUVSWSkgJiZcbiAgICAgICAgKHByb3BlcnRpZXM/LmluY2x1ZGVJbnZpc2libGVFbGVtZW50cyA/PyBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1Zpc2libGUoZWwpKVxuICAgICAgKSB7XG4gICAgICAgIGZvY3VzYWJsZUVscy5hZGQoZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydGllcz8uZmluZEZpcnN0Rm9jdXNhYmxlICYmIGZvY3VzYWJsZUVscy5zaXplID4gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLmNoaWxkcmVuLmxlbmd0aCB8fCBlbC5zaGFkb3dSb290Py5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKGVsLmNoaWxkcmVuKS5sZW5ndGhcbiAgICAgICAgICA/IChBcnJheS5mcm9tKGVsLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdKVxuICAgICAgICAgIDogKEFycmF5LmZyb20oZWwuc2hhZG93Um9vdCEuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W10pO1xuICAgICAgICBnZXRGb2N1c2FibGVzKGNoaWxkcmVuLCBmaWx0ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXRGb2N1c2FibGVzKGVsZW1lbnRzLCBwcm9wZXJ0aWVzPy5maWx0ZXIpO1xuXG4gIHJldHVybiBbLi4uZm9jdXNhYmxlRWxzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudChcbiAgZWxlbWVudHM6IEhUTUxFbGVtZW50W10sXG4gIGZpbHRlcj86IChlbDogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW4sXG4pOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKGVsZW1lbnRzLCB7XG4gICAgZmlsdGVyLFxuICAgIGZpbmRGaXJzdEZvY3VzYWJsZTogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiBmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggPyBmb2N1c2FibGVFbGVtZW50c1swXSA6IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBTYmJGb2N1c0hhbmRsZXIge1xuICBwcml2YXRlIF9jb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gZWxlbWVudCBpbiB3aGljaCB0aGUgZm9jdXMgc2hvdWxkIGJlIHRyYXBwZWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0gb3B0aW9ucy5maWx0ZXIgZmlsdGVyIGZ1bmN0aW9uIHdoaWNoIGlzIGFwcGxpZWQgZHVyaW5nIHNlYXJjaGluZyBmb3IgZm9jdXNhYmxlIGVsZW1lbnQuIElmIGFuIGVsZW1lbnQgaXMgZmlsdGVyZWQsIGFsc28gY2hpbGQgZWxlbWVudHMgYXJlIGZpbHRlcmVkLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5wb3N0RmlsdGVyIGZpbHRlciBmdW5jdGlvbiB3aGljaCBpcyBhcHBsaWVkIGFmdGVyIGNvbGxlY3RpbmcgZm9jdXNhYmxlIGVsZW1lbnRzLlxuICAgKi9cbiAgcHVibGljIHRyYXAoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGZpbHRlcj86IChlbDogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgICBwb3N0RmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICB9LFxuICApOiB2b2lkIHtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEeW5hbWljYWxseSBnZXQgZmlyc3QgYW5kIGxhc3QgZm9jdXNhYmxlIGVsZW1lbnQsIGFzIHRoaXMgbWlnaHQgaGF2ZSBjaGFuZ2VkIHNpbmNlIG9wZW5pbmcgb3ZlcmxheVxuICAgICAgICBjb25zdCBlbGVtZW50Q2hpbGRyZW46IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgIGVsZW1lbnQuc2hhZG93Um9vdCEuY2hpbGRyZW4gfHwgW10sXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlRWxlbWVudHMgPSBnZXRGb2N1c2FibGVFbGVtZW50cyhlbGVtZW50Q2hpbGRyZW4sIHtcbiAgICAgICAgICBmaWx0ZXI6IG9wdGlvbnM/LmZpbHRlcixcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRm9jdXNhYmxlRWxlbWVudHMgPSBmb2N1c2FibGVFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgb3B0aW9ucz8ucG9zdEZpbHRlciA/PyAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50c1swXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZSA9IGZpbHRlcmVkRm9jdXNhYmxlRWxlbWVudHNbXG4gICAgICAgICAgZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxXG4gICAgICAgIF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgW3Bpdm90LCBuZXh0XSA9IGV2ZW50LnNoaWZ0S2V5XG4gICAgICAgICAgPyBbZmlyc3RGb2N1c2FibGUsIGxhc3RGb2N1c2FibGVdXG4gICAgICAgICAgOiBbbGFzdEZvY3VzYWJsZSwgZmlyc3RGb2N1c2FibGVdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZmlyc3RGb2N1c2FibGUuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudCB8IFNoYWRvd1Jvb3QpLmFjdGl2ZUVsZW1lbnQgPT09IHBpdm90IHx8XG4gICAgICAgICAgKGxhc3RGb2N1c2FibGUuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudCB8IFNoYWRvd1Jvb3QpLmFjdGl2ZUVsZW1lbnQgPT09IHBpdm90XG4gICAgICAgICkge1xuICAgICAgICAgIG5leHQuZm9jdXMoKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2NvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0aGlzLl9jb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZWxlbWVudHMiXSwibWFwcGluZ3MiOiI7O0FBS0EsU0FBUyxxQkFBa0I7QUFDekIsTUFBSSxTQUFTLGdCQUFnQixRQUFRLFdBQVcsR0FBRztBQUNqRCxXQUFPLEVBQUUsU0FBUyxjQUFjLFNBQVMsWUFBVztBQUFBLEVBQUEsT0FDL0M7QUFDTCxXQUFPLEVBQUUsU0FBUyxhQUFhLFNBQVMsYUFBWTtBQUFBLEVBQUE7QUFFeEQ7QUFNTSxTQUFVLGtCQUFrQixPQUFvQjtBQUM3QyxTQUFBLENBQUMsY0FBYyxhQUFhLFdBQVcsV0FBVyxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQy9FO0FBTU0sU0FBVSwwQkFBMEIsT0FBb0I7QUFDNUQsU0FBTyxNQUFNLFFBQVEsYUFBYSxNQUFNLFFBQVEscUJBQXFCO0FBQ3ZFO0FBTU0sU0FBVSxzQkFBc0IsT0FBb0I7QUFDeEQsU0FBTyxNQUFNLFFBQVEsZUFBZSxNQUFNLFFBQVEscUJBQXFCO0FBQ3pFO0FBTU0sU0FBVSw0QkFBNEIsT0FBb0I7QUFDdkQsU0FBQSxrQkFBa0IsS0FBSyxLQUFLLENBQUMsVUFBVSxZQUFZLFFBQVEsS0FBSyxFQUFFLFNBQVMsTUFBTSxHQUFHO0FBQzdGO0FBUUEsU0FBUyxxQkFBcUIsY0FBc0IsVUFBa0IsUUFBYztBQUMxRSxVQUFBLGVBQWUsU0FBUyxZQUFZO0FBQzlDO0FBRUEsU0FBUyxhQUFhLE1BQVk7QUFDaEMsU0FBTyxPQUFPO0FBQ2hCO0FBRUEsTUFBTSxhQUFhO0FBWUgsU0FBQSxvQkFBb0IsT0FBc0IsU0FBaUIsTUFBWTtBQUNyRixRQUFNLEVBQUUsU0FBUyxZQUFZO0FBRTdCLE1BQUksTUFBTSxRQUFRLFdBQVcsTUFBTSxRQUFRLFdBQVc7QUFDN0MsV0FBQSxVQUFVLGFBQWEsYUFBYSxJQUFJLElBQUkscUJBQXFCLFNBQVMsTUFBTSxFQUFFO0FBQUEsRUFBQSxXQUNo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
272
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTExeS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9hcnJvdy1uYXZpZ2F0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9mYWtlLWV2ZW50LWRldGVjdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ZvY3VzLXZpc2libGUtd2l0aGluLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ludGVyYWN0aXZpdHktY2hlY2tlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2ExMXkvZm9jdXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIFByZXZBbmROZXh0S2V5cyB7XG4gIHByZXZLZXk6IHN0cmluZztcbiAgbmV4dEtleTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBnZXRQcmV2QW5kTmV4dEtleXMoKTogUHJldkFuZE5leHRLZXlzIHtcbiAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tYXRjaGVzKCc6ZGlyKHJ0bCknKSkge1xuICAgIHJldHVybiB7IHByZXZLZXk6ICdBcnJvd1JpZ2h0JywgbmV4dEtleTogJ0Fycm93TGVmdCcgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBwcmV2S2V5OiAnQXJyb3dMZWZ0JywgbmV4dEtleTogJ0Fycm93UmlnaHQnIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUga2V5IHByZXNzZWQgaXMgYW1vbmcgdGhvc2UgYWxsb3dlZCBmb3IgbmF2aWdhdGlvbi5cbiAqIEBwYXJhbSBldmVudCBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fycm93S2V5UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gWydBcnJvd1JpZ2h0JywgJ0Fycm93TGVmdCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50LmtleSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGtleSBwcmVzc2VkIHNob3VsZCBtb3ZlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXh0IGVsZW1lbnQuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcmV2aW91c0Fycm93S2V5UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSBnZXRQcmV2QW5kTmV4dEtleXMoKS5wcmV2S2V5O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBrZXkgcHJlc3NlZCBzaG91bGQgbW92ZSB0aGUgbmF2aWdhdGlvbiB0byB0aGUgbmV4dCBlbGVtZW50LlxuICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudCB0byBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmV4dEFycm93S2V5UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyB8fCBldmVudC5rZXkgPT09IGdldFByZXZBbmROZXh0S2V5cygpLm5leHRLZXk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGtleSBwcmVzc2VkIGlzIGFtb25nIHRob3NlIGFsbG93ZWQgZm9yIG5hdmlnYXRpb24uXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50IHRvIGNoZWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd0tleU9yUGFnZUtleXNQcmVzc2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0Fycm93S2V5UHJlc3NlZChldmVudCkgfHwgWydQYWdlVXAnLCAnUGFnZURvd24nLCAnSG9tZScsICdFbmQnXS5pbmNsdWRlcyhldmVudC5rZXkpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgaW5kZXggb2YgdGhlIG5leHQgZWxlbWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gb2Zmc2V0LlxuICogQHBhcmFtIGN1cnJlbnRJbmRleCBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSBtYXhJbmRleCBUaGUgbWF4aW11bSBwZXJtaXR0ZWQgdmFsdWUgKGUuZy4gYXJyYXkgc2l6ZSkuXG4gKiBAcGFyYW0gb2Zmc2V0IFRoZSBhbW91bnQgdG8gbW92ZSBieS5cbiAqL1xuZnVuY3Rpb24gY2FsY05leHRJbmRleEluUmFuZ2UoY3VycmVudEluZGV4OiBudW1iZXIsIG1heEluZGV4OiBudW1iZXIsIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIChjdXJyZW50SW5kZXggKyBvZmZzZXQgKyBtYXhJbmRleCkgJSBtYXhJbmRleDtcbn1cblxuZnVuY3Rpb24gZ2V0TGFzdEluZGV4KHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBzaXplIC0gMTtcbn1cblxuY29uc3QgZmlyc3RJbmRleCA9IDA7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gbW92ZSB0bywgYmFzZWQgb24gdGhlIGtleWJvYXJkIGlucHV0LCB0aGUgY3VycmVudCBlbGVtZW50IGluIHRoZSBsaXN0IGFuZCB0aGUgbGlzdCBzaXplLlxuICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudCB0byBjaGVjay5cbiAqIEBwYXJhbSBjdXJyZW50IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGluIHRoZSBsaXN0LlxuICogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgdGhlIGxpc3QuXG4gKiBAcmV0dXJucyBpZiBpdCBpcyBhICdwcmV2aW91cycgZXZlbnQsIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBwcmV2aW91cyBlbGVtZW50LFxuICogb3IgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9uZSBpZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIHRoZSBmaXJzdCBpbiB0aGUgbGlzdDtcbiAqIGlmIGl0IGlzIGEgJ25leHQnIGV2ZW50LCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBlbGVtZW50LFxuICogb3IgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvbmUsIGlmIHRoZSBjdXJyZW50IGlzIHRoZSBsYXN0IGluIHRoZSBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudDogS2V5Ym9hcmRFdmVudCwgY3VycmVudDogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCB7IHByZXZLZXksIG5leHRLZXkgfSA9IGdldFByZXZBbmROZXh0S2V5cygpO1xuXG4gIGlmIChldmVudC5rZXkgPT09IHByZXZLZXkgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICByZXR1cm4gY3VycmVudCA8IGZpcnN0SW5kZXggPyBnZXRMYXN0SW5kZXgoc2l6ZSkgOiBjYWxjTmV4dEluZGV4SW5SYW5nZShjdXJyZW50LCBzaXplLCAtMSk7XG4gIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBuZXh0S2V5IHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICByZXR1cm4gY3VycmVudCA+PSBzaXplID8gZmlyc3RJbmRleCA6IGNhbGNOZXh0SW5kZXhJblJhbmdlKGN1cnJlbnQsIHNpemUsIDEpO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufVxuIiwiLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9jZGsvYTExeS9mYWtlLWV2ZW50LWRldGVjdGlvbi50c1xuXG4vKiogR2V0cyB3aGV0aGVyIGFuIGV2ZW50IGNvdWxkIGJlIGEgZmFrZWQgYG1vdXNlZG93bmAgZXZlbnQgZGlzcGF0Y2hlZCBieSBhIHNjcmVlbiByZWFkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAvLyBTb21lIHNjcmVlbiByZWFkZXJzIHdpbGwgZGlzcGF0Y2ggYSBmYWtlIGBtb3VzZWRvd25gIGV2ZW50IHdoZW4gcHJlc3NpbmcgZW50ZXIgb3Igc3BhY2Ugb25cbiAgLy8gYSBjbGlja2FibGUgZWxlbWVudC4gV2UgY2FuIGRpc3Rpbmd1aXNoIHRoZXNlIGV2ZW50cyB3aGVuIGBldmVudC5idXR0b25zYCBpcyB6ZXJvLCBvclxuICAvLyBgZXZlbnQuZGV0YWlsYCBpcyB6ZXJvIGRlcGVuZGluZyBvbiB0aGUgYnJvd3NlcjpcbiAgLy8gLSBgZXZlbnQuYnV0dG9uc2Agd29ya3Mgb24gRmlyZWZveCwgYnV0IGZhaWxzIG9uIENocm9tZS5cbiAgLy8gLSBgZGV0YWlsYCB3b3JrcyBvbiBDaHJvbWUsIGJ1dCBmYWlscyBvbiBGaXJlZm94LlxuICByZXR1cm4gZXZlbnQuYnV0dG9ucyA9PT0gMCB8fCBldmVudC5kZXRhaWwgPT09IDA7XG59XG5cbi8qKiBHZXRzIHdoZXRoZXIgYW4gZXZlbnQgY291bGQgYmUgYSBmYWtlZCBgdG91Y2hzdGFydGAgZXZlbnQgZGlzcGF0Y2hlZCBieSBhIHNjcmVlbiByZWFkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGYWtlVG91Y2hzdGFydEZyb21TY3JlZW5SZWFkZXIoZXZlbnQ6IFRvdWNoRXZlbnQpOiBib29sZWFuIHtcbiAgY29uc3QgdG91Y2g6IFRvdWNoIHwgdW5kZWZpbmVkID1cbiAgICAoZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzWzBdKSB8fCAoZXZlbnQuY2hhbmdlZFRvdWNoZXMgJiYgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pO1xuXG4gIC8vIEEgZmFrZSBgdG91Y2hzdGFydGAgY2FuIGJlIGRpc3Rpbmd1aXNoZWQgZnJvbSBhIHJlYWwgb25lIGJ5IGxvb2tpbmcgYXQgdGhlIGBpZGVudGlmaWVyYFxuICAvLyB3aGljaCBpcyB0eXBpY2FsbHkgPj0gMCBvbiBhIHJlYWwgZGV2aWNlIHZlcnN1cyAtMSBmcm9tIGEgc2NyZWVuIHJlYWRlci4gSnVzdCB0byBiZSBzYWZlLFxuICAvLyB3ZSBjYW4gYWxzbyBsb29rIGF0IGByYWRpdXNYYCBhbmQgYHJhZGl1c1lgLiBUaGlzIGJlaGF2aW9yIHdhcyBvYnNlcnZlZCBhZ2FpbnN0IGEgV2luZG93cyAxMFxuICAvLyBkZXZpY2Ugd2l0aCBhIHRvdWNoIHNjcmVlbiBydW5uaW5nIE5WREEgdjIwMjAuNCBhbmQgRmlyZWZveCA4NSBvciBDaHJvbWUgODguXG4gIHJldHVybiAoXG4gICAgISF0b3VjaCAmJlxuICAgIHRvdWNoLmlkZW50aWZpZXIgPT09IC0xICYmXG4gICAgKHRvdWNoLnJhZGl1c1ggPT0gbnVsbCB8fCB0b3VjaC5yYWRpdXNYID09PSAxKSAmJlxuICAgICh0b3VjaC5yYWRpdXNZID09IG51bGwgfHwgdG91Y2gucmFkaXVzWSA9PT0gMSlcbiAgKTtcbn1cbiIsIi8vIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL2Nkay9hMTF5L2lucHV0LW1vZGFsaXR5L2lucHV0LW1vZGFsaXR5LWRldGVjdG9yLnRzXG5cbmltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgZ2V0RXZlbnRUYXJnZXQgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5cbmltcG9ydCB7XG4gIGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIsXG4gIGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyLFxufSBmcm9tICcuL2Zha2UtZXZlbnQtZGV0ZWN0aW9uLmpzJztcblxuZXhwb3J0IHR5cGUgU2JiSW5wdXRNb2RhbGl0eSA9ICd0b3VjaCcgfCAnbW91c2UnIHwgJ2tleWJvYXJkJyB8ICdwcm9ncmFtJyB8IG51bGw7XG5cbi8qKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3Igb2YgdGhlIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci4gKi9cbmludGVyZmFjZSBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zIHtcbiAgLyoqIEtleXMgdG8gaWdub3JlIHdoZW4gZGV0ZWN0aW5nIGtleWJvYXJkIGlucHV0IG1vZGFsaXR5LiAqL1xuICBpZ25vcmVLZXlzPzogbnVtYmVyW107XG59XG5cbmNvbnN0IFNISUZUID0gMTY7XG5jb25zdCBDT05UUk9MID0gMTc7XG5jb25zdCBBTFQgPSAxODtcbmNvbnN0IE1FVEEgPSA5MTsgLy8gV0lOX0tFWV9MRUZUXG5jb25zdCBNQUNfTUVUQSA9IDIyNDtcblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IuXG4gKlxuICogTW9kaWZpZXIga2V5cyBhcmUgaWdub3JlZCBieSBkZWZhdWx0IChpLmUuIHdoZW4gcHJlc3NlZCB3b24ndCBjYXVzZSB0aGUgc2VydmljZSB0byBkZXRlY3RcbiAqIGtleWJvYXJkIGlucHV0IG1vZGFsaXR5KSBmb3IgdHdvIHJlYXNvbnM6XG4gKlxuICogMS4gTW9kaWZpZXIga2V5cyBhcmUgY29tbW9ubHkgdXNlZCB3aXRoIG1vdXNlIHRvIHBlcmZvcm0gYWN0aW9ucyBzdWNoIGFzICdyaWdodCBjbGljaycgb3IgJ29wZW5cbiAqICAgIGluIG5ldyB0YWInLCBhbmQgYXJlIHRodXMgbGVzcyByZXByZXNlbnRhdGl2ZSBvZiBhY3R1YWwga2V5Ym9hcmQgaW50ZXJhY3Rpb24uXG4gKiAyLiBWb2ljZU92ZXIgdHJpZ2dlcnMgc29tZSBrZXlib2FyZCBldmVudHMgd2hlbiBsaW5lYXJseSBuYXZpZ2F0aW5nIHdpdGggQ29udHJvbCArIE9wdGlvbiAoYnV0XG4gKiAgICBjb25mdXNpbmdseSBub3Qgd2l0aCBDYXBzIExvY2spLiBUaHVzLCB0byBoYXZlIHBhcml0eSB3aXRoIG90aGVyIHNjcmVlbiByZWFkZXJzLCB3ZSBpZ25vcmVcbiAqICAgIHRoZXNlIGtleXMgc28sIGFzIHRvIG5vdCB1cGRhdGUgdGhlIGlucHV0IG1vZGFsaXR5LlxuICpcbiAqIE5vdGUgdGhhdCB3ZSBkbyBub3QgYnkgZGVmYXVsdCBpZ25vcmUgdGhlIHJpZ2h0IE1ldGEga2V5IG9uIFNhZmFyaSBiZWNhdXNlIGl0IGhhcyB0aGUgc2FtZSBrZXlcbiAqIGNvZGUgYXMgdGhlIENvbnRleHRNZW51IGtleSBvbiBvdGhlciBicm93c2Vycy4gV2hlbiB3ZSBzd2l0Y2ggdG8gdXNpbmcgZXZlbnQua2V5LCB3ZSBjYW5cbiAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3by5cbiAqL1xuY29uc3QgaW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9uczogU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyA9IHtcbiAgaWdub3JlS2V5czogW0FMVCwgQ09OVFJPTCwgTUFDX01FVEEsIE1FVEEsIFNISUZUXSxcbn07XG5cbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBwYXNzIGFmdGVyIGEgdG91Y2hzdGFydCBldmVudCBpbiBvcmRlciBmb3IgYSBzdWJzZXF1ZW50IG1vdXNlZG93blxuICogZXZlbnQgdG8gYmUgYXR0cmlidXRlZCBhcyBtb3VzZSBhbmQgbm90IHRvdWNoLlxuICpcbiAqIFRocm91Z2ggdHJpYWwgYW5kIGVycm9yIGl0IHdhcyBmb3VuZCB0aGF0IGEgdmFsdWUgb2YgYXJvdW5kIDY1MG1zIHNlZW1zIGFwcHJvcHJpYXRlLlxuICovXG5jb25zdCB0b3VjaEJ1ZmZlck1zID0gNjUwO1xuXG4vKipcbiAqIEV2ZW50IGxpc3RlbmVyIG9wdGlvbnMgdGhhdCBlbmFibGUgY2FwdHVyaW5nIGFuZCBhbHNvIG1hcmsgdGhlIGxpc3RlbmVyIGFzIHBhc3NpdmUgaWYgdGhlIGJyb3dzZXJcbiAqIHN1cHBvcnRzIGl0LlxuICovXG5jb25zdCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBwYXNzaXZlOiB0cnVlLFxuICBjYXB0dXJlOiB0cnVlLFxufTtcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgZGV0ZWN0cyB0aGUgdXNlcidzIGlucHV0IG1vZGFsaXR5LlxuICpcbiAqIFRoaXMgc2VydmljZSBkb2VzIG5vdCB1cGRhdGUgdGhlIGlucHV0IG1vZGFsaXR5IHdoZW4gYSB1c2VyIG5hdmlnYXRlcyB3aXRoIGEgc2NyZWVuIHJlYWRlclxuICogKGUuZy4gbGluZWFyIG5hdmlnYXRpb24gd2l0aCBWb2ljZU92ZXIsIG9iamVjdCBuYXZpZ2F0aW9uIC8gYnJvd3NlIG1vZGUgd2l0aCBOVkRBLCB2aXJ0dWFsIFBDXG4gKiBjdXJzb3IgbW9kZSB3aXRoIEpBV1MpLiBUaGlzIGlzIGluIHBhcnQgZHVlIHRvIHRlY2huaWNhbCBsaW1pdGF0aW9ucyAoaS5lLiBrZXlib2FyZCBldmVudHMgZG8gbm90XG4gKiBmaXJlIGFzIGV4cGVjdGVkIGluIHRoZXNlIG1vZGVzKSBidXQgaXMgYWxzbyBhcmd1YWJseSB0aGUgY29ycmVjdCBiZWhhdmlvci4gTmF2aWdhdGluZyB3aXRoIGFcbiAqIHNjcmVlbiByZWFkZXIgaXMgYWtpbiB0byB2aXN1YWxseSBzY2FubmluZyBhIHBhZ2UsIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIGFjdHVhbCB1c2VyXG4gKiBpbnB1dCBpbnRlcmFjdGlvbi5cbiAqXG4gKiBXaGVuIGEgdXNlciBpcyBub3QgbmF2aWdhdGluZyBidXQgKmludGVyYWN0aW5nKiB3aXRoIGEgc2NyZWVuIHJlYWRlciwgdGhpcyBzZXJ2aWNlIGF0dGVtcHRzIHRvXG4gKiB1cGRhdGUgdGhlIGlucHV0IG1vZGFsaXR5IHRvIGtleWJvYXJkLCBidXQgaW4gZ2VuZXJhbCB0aGlzIHNlcnZpY2UncyBiZWhhdmlvciBpcyBsYXJnZWx5XG4gKiB1bmRlZmluZWQuXG4gKi9cbmNsYXNzIFNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB7XG4gIC8qKiBUaGUgbW9zdCByZWNlbnRseSBkZXRlY3RlZCBpbnB1dCBtb2RhbGl0eS4gKi9cbiAgcHVibGljIGdldCBtb3N0UmVjZW50TW9kYWxpdHkoKTogU2JiSW5wdXRNb2RhbGl0eSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1vc3QgcmVjZW50IG1vZGFsaXR5IG11c3QgYmUgaW5pdGlhbGlzZWQgd2l0aCB0aGUgdmFsdWUgJ21vdXNlJyB0byBjb3ZlciB0aGUgY2FzZSB3aGVyZSBhbiBhY3Rpb24gaXNcbiAgICogcGVyZm9ybWVkIGJ1dCBubyBtb3VzZSBvciBrZXlib2FyZCBldmVudCBoYXMgeWV0IG9jY3VycmVkIG9uIHRoZSBwYWdlIChlLmcuIGBzYmItcG9wb3ZlcmAgd2l0aCBob3ZlciB0cmlnZ2VyKS5cbiAgICovXG4gIHByaXZhdGUgX21vc3RSZWNlbnRNb2RhbGl0eTogU2JiSW5wdXRNb2RhbGl0eSB8IG51bGwgPSAnbW91c2UnO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnRseSBkZXRlY3RlZCBpbnB1dCBtb2RhbGl0eSBldmVudCB0YXJnZXQuIElzIG51bGwgaWYgbm8gaW5wdXQgbW9kYWxpdHkgaGFzIGJlZW5cbiAgICogZGV0ZWN0ZWQgb3IgaWYgdGhlIGFzc29jaWF0ZWQgZXZlbnQgdGFyZ2V0IGlzIG51bGwgZm9yIHNvbWUgdW5rbm93biByZWFzb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1vc3RSZWNlbnRUYXJnZXQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbW9zdFJlY2VudFRhcmdldDtcbiAgfVxuICBwcml2YXRlIF9tb3N0UmVjZW50VGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBPcHRpb25zIGZvciB0aGlzIFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyA9IHtcbiAgICAuLi5pbnB1dE1vZGFsaXR5RGV0ZWN0b3JPcHRpb25zLFxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZXN0YW1wIG9mIHRoZSBsYXN0IHRvdWNoIGlucHV0IG1vZGFsaXR5LiBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG1vdXNlZG93biBldmVudHNcbiAgICogc2hvdWxkIGJlIGF0dHJpYnV0ZWQgdG8gbW91c2Ugb3IgdG91Y2guXG4gICAqL1xuICBwcml2YXRlIF9sYXN0VG91Y2hNcyA9IDA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9vbktleWRvd24sIG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5fb25Nb3VzZWRvd24sIG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuX29uVG91Y2hzdGFydCwgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICdtb3VzZSc7XG4gICAgdGhpcy5fbW9zdFJlY2VudFRhcmdldCA9IG51bGw7XG4gICAgdGhpcy5fbGFzdFRvdWNoTXMgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMga2V5ZG93biBldmVudHMuIE11c3QgYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdCBnZXRzXG4gICAqIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25LZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gSWYgdGhpcyBpcyBvbmUgb2YgdGhlIGtleXMgd2Ugc2hvdWxkIGlnbm9yZSwgdGhlbiBpZ25vcmUgaXQgYW5kIGRvbid0IHVwZGF0ZSB0aGUgaW5wdXRcbiAgICAvLyBtb2RhbGl0eSB0byBrZXlib2FyZC5cbiAgICBpZiAodGhpcy5fb3B0aW9ucz8uaWdub3JlS2V5cz8uc29tZSgoa2V5Q29kZSkgPT4ga2V5Q29kZSA9PT0gZXZlbnQua2V5Q29kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSAna2V5Ym9hcmQnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2Vkb3duIGV2ZW50cy4gTXVzdCBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0XG4gICAqIGdldHMgYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9vbk1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgIC8vIFRvdWNoZXMgdHJpZ2dlciBib3RoIHRvdWNoIGFuZCBtb3VzZSBldmVudHMsIHNvIHdlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBtb3VzZSBldmVudHNcbiAgICAvLyB0aGF0IHdlcmUgdHJpZ2dlcmVkIHZpYSBtb3VzZSB2cyB0b3VjaC4gVG8gZG8gc28sIGNoZWNrIGlmIHRoZSBtb3VzZSBldmVudCBvY2N1cnMgY2xvc2VseVxuICAgIC8vIGFmdGVyIHRoZSBwcmV2aW91cyB0b3VjaCBldmVudC5cbiAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMuX2xhc3RUb3VjaE1zIDwgdG91Y2hCdWZmZXJNcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZha2UgbW91c2Vkb3duIGV2ZW50cyBhcmUgZmlyZWQgYnkgc29tZSBzY3JlZW4gcmVhZGVycyB3aGVuIGNvbnRyb2xzIGFyZSBhY3RpdmF0ZWQgYnkgdGhlXG4gICAgLy8gc2NyZWVuIHJlYWRlci4gQXR0cmlidXRlIHRoZW0gdG8ga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuXG4gICAgdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5ID0gaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldmVudCkgPyAna2V5Ym9hcmQnIDogJ21vdXNlJztcbiAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRvdWNoc3RhcnQgZXZlbnRzLiBNdXN0IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0IHdoZW4gaXRcbiAgICogZ2V0cyBib3VuZC5cbiAgICovXG4gIHByaXZhdGUgX29uVG91Y2hzdGFydCA9IChldmVudDogVG91Y2hFdmVudCk6IHZvaWQgPT4ge1xuICAgIC8vIFNhbWUgc2NlbmFyaW8gYXMgbWVudGlvbmVkIGluIF9vbk1vdXNlZG93biwgYnV0IG9uIHRvdWNoIHNjcmVlbiBkZXZpY2VzLCBmYWtlIHRvdWNoc3RhcnRcbiAgICAvLyBldmVudHMgYXJlIGZpcmVkLiBBZ2FpbiwgYXR0cmlidXRlIHRvIGtleWJvYXJkIGlucHV0IG1vZGFsaXR5LlxuICAgIGlmIChpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcihldmVudCkpIHtcbiAgICAgIHRoaXMuX21vc3RSZWNlbnRNb2RhbGl0eSA9ICdrZXlib2FyZCc7XG4gICAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB0aW1lc3RhbXAgb2YgdGhpcyB0b3VjaCBldmVudCwgYXMgaXQncyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbW91c2UgZXZlbnRzXG4gICAgLy8gdHJpZ2dlcmVkIHZpYSBtb3VzZSB2cyB0b3VjaC5cbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSAndG91Y2gnO1xuICAgIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgPSBuZXcgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yKCk7XG5cbi8vIFNldCB0aGUgaW5wdXQgbW9kYWxpdHkgaW4gb3JkZXIgdG8gYXZvaWQgc2hvd2luZyB0aGUgb3V0bGluZSBpbiBTYWZhcmkuXG5leHBvcnQgZnVuY3Rpb24gc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGlmICghZWxlbWVudFRvRm9jdXMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtb3N0UmVjZW50TW9kYWxpdHkgPSBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5O1xuXG4gIC8vIFNldCBmb2N1cyBvcmlnaW4gdG8gZWxlbWVudCB3aGljaCBzaG91bGQgcmVjZWl2ZSBmb2N1c1xuICBpZiAoIShlbGVtZW50VG9Gb2N1cyAmJiBtb3N0UmVjZW50TW9kYWxpdHkgIT09IG51bGwpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnRUb0ZvY3VzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgJ2ZvY3VzJyxcbiAgICAoKSA9PiB7XG4gICAgICBlbGVtZW50VG9Gb2N1cy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9jdXMtb3JpZ2luJywgbW9zdFJlY2VudE1vZGFsaXR5KTtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdibHVyJyxcbiAgICAgICAgKCkgPT4gZWxlbWVudFRvRm9jdXMucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWZvY3VzLW9yaWdpbicpLFxuICAgICAgICB7XG4gICAgICAgICAgb25jZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB7IG9uY2U6IHRydWUgfSxcbiAgKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhY3RpdmVDb250cm9sbGVyLCBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi9pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci5qcyc7XG5cbi8vIERldGVybWluZSB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBhIHZpc2libGUgZm9jdXMgd2l0aGluLlxuZXhwb3J0IGNsYXNzIFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXNpbkhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5faG9zdC50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1oYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4nLFxuICAgICAgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSA9PT0gJ2tleWJvYXJkJyxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgX2ZvY3Vzb3V0SGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9ob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1oYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4nKTtcbiAgfTtcblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCB0aGlzLl9mb2N1c2luSGFuZGxlcik7XG4gICAgdGhpcy5faG9zdC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHRoaXMuX2ZvY3Vzb3V0SGFuZGxlcik7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCB0aGlzLl9mb2N1c2luSGFuZGxlcik7XG4gICAgdGhpcy5faG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHRoaXMuX2ZvY3Vzb3V0SGFuZGxlcik7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBoYXNHZW9tZXRyeShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAvLyBVc2UgbG9naWMgZnJvbSBqUXVlcnkgdG8gY2hlY2sgZm9yIGFuIGludmlzaWJsZSBlbGVtZW50LlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9oaWRkZW5WaXNpYmxlU2VsZWN0b3JzLmpzI0wxMlxuICByZXR1cm4gISEoXG4gICAgZWxlbWVudC5vZmZzZXRXaWR0aCB8fFxuICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8XG4gICAgKHR5cGVvZiBlbGVtZW50LmdldENsaWVudFJlY3RzID09PSAnZnVuY3Rpb24nICYmIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW50ZXJhY3Rpdml0eUNoZWNrZXIge1xuICBpc1Zpc2libGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgSW50ZXJhY3Rpdml0eUNoZWNrZXIgaW1wbGVtZW50cyBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciB7XG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyB2aXNpYmxlIGZvciB0aGUgcHVycG9zZXMgb2YgaW50ZXJhY3Rpdml0eS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGNhcHR1cmUgc3RhdGVzIGxpa2UgYGRpc3BsYXk6IG5vbmVgIGFuZCBgdmlzaWJpbGl0eTogaGlkZGVuYCwgYnV0IG5vdCB0aGluZ3MgbGlrZVxuICAgKiBiZWluZyBjbGlwcGVkIGJ5IGFuIGBvdmVyZmxvdzogaGlkZGVuYCBwYXJlbnQgb3IgYmVpbmcgb3V0c2lkZSB0aGUgdmlld3BvcnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZS5cbiAgICovXG4gIHB1YmxpYyBpc1Zpc2libGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzR2VvbWV0cnkoZWxlbWVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS52aXNpYmlsaXR5ID09PSAndmlzaWJsZSc7XG4gIH1cbn1cblxuY2xhc3MgSW50ZXJhY3Rpdml0eUNoZWNrZXJNb2NrIGltcGxlbWVudHMgSW50ZXJmYWNlSW50ZXJhY3Rpdml0eUNoZWNrZXIge1xuICBwdWJsaWMgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8vIEZvciB1bml0IHRlc3RzIHdlIG5lZWQgdG8gcHJldGVuZCB0aGF0IGFuIGVsZW1lbnQgaXMgYWx3YXlzIHZpc2libGUuXG4vLyBUaGlzIGNhbiBiZSBkb25lIGJ5IGNoZWNraW5nIGlmIHZpc2liaWxpdHkgcHJvcGVydHkgaXMgc2V0IHRvIGVtcHR5LlxuZXhwb3J0IGNvbnN0IGludGVyYWN0aXZpdHlDaGVja2VyOiBJbnRlcmZhY2VJbnRlcmFjdGl2aXR5Q2hlY2tlciA9XG4gIHR5cGVvZiBnZXRDb21wdXRlZFN0eWxlID09PSAndW5kZWZpbmVkJyB8fFxuICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkudmlzaWJpbGl0eSA9PT0gJydcbiAgICA/IG5ldyBJbnRlcmFjdGl2aXR5Q2hlY2tlck1vY2soKVxuICAgIDogbmV3IEludGVyYWN0aXZpdHlDaGVja2VyKCk7XG4iLCJpbXBvcnQgeyBpbnRlcmFjdGl2aXR5Q2hlY2tlciB9IGZyb20gJy4vaW50ZXJhY3Rpdml0eS1jaGVja2VyLmpzJztcblxuZXhwb3J0IGNvbnN0IElTX0ZPQ1VTQUJMRV9RVUVSWSA9IFtcbiAgJ2J1dHRvbicsXG4gICdbaHJlZl0nLFxuICAnaW5wdXQnLFxuICAnc2VsZWN0JyxcbiAgJ3RleHRhcmVhJyxcbiAgJ2RldGFpbHMnLFxuICAnc3VtbWFyeScsXG4gICdbdGFiaW5kZXhdJyxcbl1cbiAgLm1hcCgoc2VsZWN0b3IpID0+IGAke3NlbGVjdG9yfTpub3QoW2Rpc2FibGVkXSw6ZGlzYWJsZWQsW3RhYmluZGV4PVwiLTFcIl0sW2luZXJ0XSlgKVxuICAuam9pbignLCcpO1xuXG4vLyBOb3RlOiB0aGUgdXNlIG9mIHRoaXMgZnVuY3Rpb24gZm9yIG1vcmUgY29tcGxleCBzY2VuYXJpb3MgKHdpdGggbWFueSBuZXN0ZWQgZWxlbWVudHMpIG1heSBiZSBleHBlbnNpdmUuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoXG4gIGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLFxuICBwcm9wZXJ0aWVzPzoge1xuICAgIGZpbHRlcj86IChlbDogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgZmluZEZpcnN0Rm9jdXNhYmxlPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlSW52aXNpYmxlRWxlbWVudHM/OiBib29sZWFuO1xuICB9LFxuKTogSFRNTEVsZW1lbnRbXSB7XG4gIGNvbnN0IGZvY3VzYWJsZUVscyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG5cbiAgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlcyhlbGVtZW50czogSFRNTEVsZW1lbnRbXSwgZmlsdGVyPzogKGVsOiBIVE1MRWxlbWVudCkgPT4gYm9vbGVhbik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcihlbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbC5ub2RlTmFtZSA9PT0gJ1NMT1QnKSB7XG4gICAgICAgIGdldEZvY3VzYWJsZXMoXG4gICAgICAgICAgQXJyYXkuZnJvbSgoZWwgYXMgSFRNTFNsb3RFbGVtZW50KS5hc3NpZ25lZEVsZW1lbnRzKCkpIGFzIEhUTUxFbGVtZW50W10sXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBlbC5tYXRjaGVzKElTX0ZPQ1VTQUJMRV9RVUVSWSkgJiZcbiAgICAgICAgKHByb3BlcnRpZXM/LmluY2x1ZGVJbnZpc2libGVFbGVtZW50cyA/PyBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1Zpc2libGUoZWwpKVxuICAgICAgKSB7XG4gICAgICAgIGZvY3VzYWJsZUVscy5hZGQoZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydGllcz8uZmluZEZpcnN0Rm9jdXNhYmxlICYmIGZvY3VzYWJsZUVscy5zaXplID4gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLmNoaWxkcmVuLmxlbmd0aCB8fCBlbC5zaGFkb3dSb290Py5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKGVsLmNoaWxkcmVuKS5sZW5ndGhcbiAgICAgICAgICA/IChBcnJheS5mcm9tKGVsLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdKVxuICAgICAgICAgIDogKEFycmF5LmZyb20oZWwuc2hhZG93Um9vdCEuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W10pO1xuICAgICAgICBnZXRGb2N1c2FibGVzKGNoaWxkcmVuLCBmaWx0ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXRGb2N1c2FibGVzKGVsZW1lbnRzLCBwcm9wZXJ0aWVzPy5maWx0ZXIpO1xuXG4gIHJldHVybiBbLi4uZm9jdXNhYmxlRWxzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudChcbiAgZWxlbWVudHM6IEhUTUxFbGVtZW50W10sXG4gIGZpbHRlcj86IChlbDogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW4sXG4pOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKGVsZW1lbnRzLCB7XG4gICAgZmlsdGVyLFxuICAgIGZpbmRGaXJzdEZvY3VzYWJsZTogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiBmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggPyBmb2N1c2FibGVFbGVtZW50c1swXSA6IG51bGw7XG59XG5cbi8vIFRPRE86IENvbnZlcnQgdG8gQ29udHJvbGxlciBhbmQgaGFuZGxlIGRpc2Nvbm5lY3RlZENhbGxiYWNrIGhlcmUgd2l0aCBob3N0RGlzY29ubmVjdGVkKCkuXG5leHBvcnQgY2xhc3MgU2JiRm9jdXNIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAvKipcbiAgICogQHBhcmFtIGVsZW1lbnQgaW4gd2hpY2ggdGhlIGZvY3VzIHNob3VsZCBiZSB0cmFwcGVkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIG9wdGlvbnMuZmlsdGVyIGZpbHRlciBmdW5jdGlvbiB3aGljaCBpcyBhcHBsaWVkIGR1cmluZyBzZWFyY2hpbmcgZm9yIGZvY3VzYWJsZSBlbGVtZW50LiBJZiBhbiBlbGVtZW50IGlzIGZpbHRlcmVkLCBhbHNvIGNoaWxkIGVsZW1lbnRzIGFyZSBmaWx0ZXJlZC5cbiAgICogQHBhcmFtIG9wdGlvbnMucG9zdEZpbHRlciBmaWx0ZXIgZnVuY3Rpb24gd2hpY2ggaXMgYXBwbGllZCBhZnRlciBjb2xsZWN0aW5nIGZvY3VzYWJsZSBlbGVtZW50cy5cbiAgICovXG4gIHB1YmxpYyB0cmFwKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBmaWx0ZXI/OiAoZWw6IEhUTUxFbGVtZW50KSA9PiBib29sZWFuO1xuICAgICAgcG9zdEZpbHRlcj86IChlbDogSFRNTEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgfSxcbiAgKTogdm9pZCB7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdUYWInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHluYW1pY2FsbHkgZ2V0IGZpcnN0IGFuZCBsYXN0IGZvY3VzYWJsZSBlbGVtZW50LCBhcyB0aGlzIG1pZ2h0IGhhdmUgY2hhbmdlZCBzaW5jZSBvcGVuaW5nIG92ZXJsYXlcbiAgICAgICAgY29uc3QgZWxlbWVudENoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICBlbGVtZW50LnNoYWRvd1Jvb3QhLmNoaWxkcmVuIHx8IFtdLFxuICAgICAgICApIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMoZWxlbWVudENoaWxkcmVuLCB7XG4gICAgICAgICAgZmlsdGVyOiBvcHRpb25zPy5maWx0ZXIsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzID0gZm9jdXNhYmxlRWxlbWVudHMuZmlsdGVyKFxuICAgICAgICAgIG9wdGlvbnM/LnBvc3RGaWx0ZXIgPz8gKCgpID0+IHRydWUpLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghZmlsdGVyZWRGb2N1c2FibGVFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IGZpbHRlcmVkRm9jdXNhYmxlRWxlbWVudHNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGUgPSBmaWx0ZXJlZEZvY3VzYWJsZUVsZW1lbnRzW1xuICAgICAgICAgIGZpbHRlcmVkRm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IFtwaXZvdCwgbmV4dF0gPSBldmVudC5zaGlmdEtleVxuICAgICAgICAgID8gW2ZpcnN0Rm9jdXNhYmxlLCBsYXN0Rm9jdXNhYmxlXVxuICAgICAgICAgIDogW2xhc3RGb2N1c2FibGUsIGZpcnN0Rm9jdXNhYmxlXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZpcnN0Rm9jdXNhYmxlLmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5hY3RpdmVFbGVtZW50ID09PSBwaXZvdCB8fFxuICAgICAgICAgIChsYXN0Rm9jdXNhYmxlLmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5hY3RpdmVFbGVtZW50ID09PSBwaXZvdFxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0LmZvY3VzKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9jb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250cm9sbGVyLmFib3J0KCk7XG4gICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImVsZW1lbnRzIl0sIm1hcHBpbmdzIjoiOztBQUtBLFNBQVMscUJBQWtCO0FBQ3pCLE1BQUksU0FBUyxnQkFBZ0IsUUFBUSxXQUFXLEdBQUc7QUFDakQsV0FBTyxFQUFFLFNBQVMsY0FBYyxTQUFTLFlBQVc7QUFBQSxFQUFBLE9BQy9DO0FBQ0wsV0FBTyxFQUFFLFNBQVMsYUFBYSxTQUFTLGFBQVk7QUFBQSxFQUFBO0FBRXhEO0FBTU0sU0FBVSxrQkFBa0IsT0FBb0I7QUFDN0MsU0FBQSxDQUFDLGNBQWMsYUFBYSxXQUFXLFdBQVcsRUFBRSxTQUFTLE1BQU0sR0FBRztBQUMvRTtBQU1NLFNBQVUsMEJBQTBCLE9BQW9CO0FBQzVELFNBQU8sTUFBTSxRQUFRLGFBQWEsTUFBTSxRQUFRLHFCQUFxQjtBQUN2RTtBQU1NLFNBQVUsc0JBQXNCLE9BQW9CO0FBQ3hELFNBQU8sTUFBTSxRQUFRLGVBQWUsTUFBTSxRQUFRLHFCQUFxQjtBQUN6RTtBQU1NLFNBQVUsNEJBQTRCLE9BQW9CO0FBQ3ZELFNBQUEsa0JBQWtCLEtBQUssS0FBSyxDQUFDLFVBQVUsWUFBWSxRQUFRLEtBQUssRUFBRSxTQUFTLE1BQU0sR0FBRztBQUM3RjtBQVFBLFNBQVMscUJBQXFCLGNBQXNCLFVBQWtCLFFBQWM7QUFDMUUsVUFBQSxlQUFlLFNBQVMsWUFBWTtBQUM5QztBQUVBLFNBQVMsYUFBYSxNQUFZO0FBQ2hDLFNBQU8sT0FBTztBQUNoQjtBQUVBLE1BQU0sYUFBYTtBQVlILFNBQUEsb0JBQW9CLE9BQXNCLFNBQWlCLE1BQVk7QUFDckYsUUFBTSxFQUFFLFNBQVMsWUFBWTtBQUU3QixNQUFJLE1BQU0sUUFBUSxXQUFXLE1BQU0sUUFBUSxXQUFXO0FBQzdDLFdBQUEsVUFBVSxhQUFhLGFBQWEsSUFBSSxJQUFJLHFCQUFxQixTQUFTLE1BQU0sRUFBRTtBQUFBLEVBQUEsV0FDaEYsTUFBTSxRQUFRLFdBQVcsTUFBTSxRQUFRLGFBQWE7QUFDN0QsV0FBTyxXQUFXLE9BQU8sYUFBYSxxQkFBcUIsU0FBUyxNQUFNLENBQUM7QUFBQSxFQUFBO0FBRXRFLFNBQUE7QUFDVDtBQzdFTSxTQUFVLGdDQUFnQyxPQUFpQjtBQU0vRCxTQUFPLE1BQU0sWUFBWSxLQUFLLE1BQU0sV0FBVztBQUNqRDtBQUdNLFNBQVUsaUNBQWlDLE9BQWlCO0FBQzFELFFBQUEsUUFDSCxNQUFNLFdBQVcsTUFBTSxRQUFRLENBQUMsS0FBTyxNQUFNLGtCQUFrQixNQUFNLGVBQWUsQ0FBQztBQU14RixTQUNFLENBQUMsQ0FBQyxTQUNGLE1BQU0sZUFBZSxPQUNwQixNQUFNLFdBQVcsUUFBUSxNQUFNLFlBQVksT0FDM0MsTUFBTSxXQUFXLFFBQVEsTUFBTSxZQUFZO0FBRWhEO0FDUkEsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sTUFBTTtBQUNaLE1BQU0sT0FBTztBQUNiLE1BQU0sV0FBVztBQWtCakIsTUFBTSwrQkFBZ0U7QUFBQSxFQUNwRSxZQUFZLENBQUMsS0FBSyxTQUFTLFVBQVUsTUFBTSxLQUFLOztBQVNsRCxNQUFNLGdCQUFnQjtBQU10QixNQUFNLCtCQUErQjtBQUFBLEVBQ25DLFNBQVM7QUFBQSxFQUNULFNBQVM7O0FBaUJYLE1BQU0seUJBQXdCO0FBQUE7QUFBQSxFQUU1QixJQUFXLHFCQUFrQjtBQUMzQixXQUFPLEtBQUs7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWFkLElBQVcsbUJBQWdCO0FBQ3pCLFdBQU8sS0FBSztBQUFBLEVBQUE7QUFBQSxFQWVkLGNBQUE7QUF0QlEsU0FBbUIsc0JBQTRCO0FBUy9DLFNBQWlCLG9CQUF1QjtBQUcvQixTQUFBLFdBQTRDO0FBQUEsTUFDM0QsR0FBRztBQUFBO0FBT0csU0FBWSxlQUFHO0FBb0JmLFNBQUEsYUFBYSxDQUFDLFVBQThCOztBQUc5QyxXQUFBLGdCQUFLLGFBQUwsbUJBQWUsZUFBZixtQkFBMkIsS0FBSyxDQUFDLFlBQVksWUFBWSxNQUFNLFVBQVU7QUFDM0U7QUFBQSxNQUFBO0FBR0YsV0FBSyxzQkFBc0I7QUFDdEIsV0FBQSxvQkFBb0IsZUFBZSxLQUFLO0FBQUEsSUFDL0M7QUFNUSxTQUFBLGVBQWUsQ0FBQyxVQUEyQjtBQUlqRCxVQUFJLEtBQUssSUFBQSxJQUFRLEtBQUssZUFBZSxlQUFlO0FBQ2xEO0FBQUEsTUFBQTtBQUtGLFdBQUssc0JBQXNCLGdDQUFnQyxLQUFLLElBQUksYUFBYTtBQUM1RSxXQUFBLG9CQUFvQixlQUFlLEtBQUs7QUFBQSxJQUMvQztBQU1RLFNBQUEsZ0JBQWdCLENBQUMsVUFBMkI7QUFHOUMsVUFBQSxpQ0FBaUMsS0FBSyxHQUFHO0FBQzNDLGFBQUssc0JBQXNCO0FBQ3RCLGFBQUEsb0JBQW9CLGVBQWUsS0FBSztBQUM3QztBQUFBLE1BQUE7QUFLRyxXQUFBLGVBQWUsS0FBSztBQUV6QixXQUFLLHNCQUFzQjtBQUN0QixXQUFBLG9CQUFvQixlQUFlLEtBQUs7QUFBQSxJQUMvQztBQWpFRSxRQUFJLENBQUMsVUFBVTtBQUNiLGVBQVMsaUJBQWlCLFdBQVcsS0FBSyxZQUFZLDRCQUE0QjtBQUNsRixlQUFTLGlCQUFpQixhQUFhLEtBQUssY0FBYyw0QkFBNEI7QUFDdEYsZUFBUyxpQkFBaUIsY0FBYyxLQUFLLGVBQWUsNEJBQTRCO0FBQUEsSUFBQTtBQUFBLEVBQzFGO0FBQUEsRUFHSyxRQUFLO0FBQ1YsU0FBSyxzQkFBc0I7QUFDM0IsU0FBSyxvQkFBb0I7QUFDekIsU0FBSyxlQUFlO0FBQUEsRUFBQTtBQXdEdkI7QUFFWSxNQUFBLDJCQUEyQixJQUFJO0FBR3RDLFNBQVUsdUJBQXVCLGdCQUE4QztBQUNuRixNQUFJLENBQUMsZ0JBQWdCO0FBQ25CO0FBQUEsRUFBQTtBQUdGLFFBQU0scUJBQXFCLHlCQUF5QjtBQUdoRCxNQUFBLEVBQUUsa0JBQWtCLHVCQUF1QixPQUFPO0FBQ3BEO0FBQUEsRUFBQTtBQUVhLGlCQUFBLGlCQUNiLFNBQ0EsTUFBSztBQUNZLG1CQUFBLGFBQWEscUJBQXFCLGtCQUFrQjtBQUNuRSxtQkFBZSxpQkFDYixRQUNBLE1BQU0sZUFBZSxnQkFBZ0IsbUJBQW1CLEdBQ3hEO0FBQUEsTUFDRSxNQUFNO0FBQUEsSUFBQSxDQUNQO0FBQUEsRUFBQSxHQUdMLEVBQUUsTUFBTSxNQUFNO0FBRWxCO01DeE1hLGdDQUErQjtBQUFBLEVBQzFDLFlBQTJCLE9BQTJDO0FBQTNDLFNBQUssUUFBTDtBQUluQixTQUFlLGtCQUFHLE1BQVc7QUFDbkMsV0FBSyxNQUFNLGdCQUNULGlDQUNBLHlCQUF5Qix1QkFBdUIsVUFBVTtBQUFBLElBRTlEO0FBRVEsU0FBZ0IsbUJBQUcsTUFBVztBQUMvQixXQUFBLE1BQU0sZ0JBQWdCLCtCQUErQjtBQUFBLElBQzVEO0FBWk8sU0FBQSxNQUFNLGNBQWMsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQWN4QixnQkFBYTtBQUNsQixTQUFLLE1BQU0saUJBQWlCLFdBQVcsS0FBSyxlQUFlO0FBQzNELFNBQUssTUFBTSxpQkFBaUIsWUFBWSxLQUFLLGdCQUFnQjtBQUFBLEVBQUE7QUFBQSxFQUd4RCxtQkFBZ0I7QUFDckIsU0FBSyxNQUFNLG9CQUFvQixXQUFXLEtBQUssZUFBZTtBQUM5RCxTQUFLLE1BQU0sb0JBQW9CLFlBQVksS0FBSyxnQkFBZ0I7QUFBQSxFQUFBO0FBRW5FO0FDOUJLLFNBQVUsWUFBWSxTQUFvQjtBQUc5QyxTQUFPLENBQUMsRUFDTixRQUFRLGVBQ1IsUUFBUSxnQkFDUCxPQUFPLFFBQVEsbUJBQW1CLGNBQWMsUUFBUSxlQUFBLEVBQWlCO0FBRTlFO01BTWEscUJBQW9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU3hCLFVBQVUsU0FBb0I7QUFDbkMsV0FBTyxZQUFZLE9BQU8sS0FBSyxpQkFBaUIsT0FBTyxFQUFFLGVBQWU7QUFBQSxFQUFBO0FBRTNFO0FBRUQsTUFBTSx5QkFBd0I7QUFBQSxFQUNyQixZQUFTO0FBQ1AsV0FBQTtBQUFBLEVBQUE7QUFFVjtBQUlNLE1BQU0sdUJBQ1gsT0FBTyxxQkFBcUIsZUFDNUIsaUJBQWlCLFNBQVMsZUFBZSxFQUFFLGVBQWUsS0FDdEQsSUFBSSx5QkFBMEIsSUFDOUIsSUFBSSxxQkFBb0I7QUN0Q3ZCLE1BQU0scUJBQXFCO0FBQUEsRUFDaEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0QsRUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsb0RBQW9ELEVBQ2pGLEtBQUssR0FBRztBQUdLLFNBQUEscUJBQ2QsVUFDQSxZQUlDO0FBRUssUUFBQSxtQ0FBbUI7QUFFaEIsV0FBQSxjQUFjQSxXQUF5QixRQUFxQzs7QUFDbkYsZUFBVyxNQUFNQSxXQUFVO0FBQ3pCLFVBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHO0FBQ3pCO0FBQUEsTUFBQTtBQUdFLFVBQUEsR0FBRyxhQUFhLFFBQVE7QUFDMUIsc0JBQ0UsTUFBTSxLQUFNLEdBQXVCLGlCQUFrQixDQUFBLEdBQ3JELE1BQU07QUFFUjtBQUFBLE1BQUE7QUFJQSxVQUFBLEdBQUcsUUFBUSxrQkFBa0IsT0FDNUIseUNBQVksNkJBQTRCLHFCQUFxQixVQUFVLEVBQUUsSUFDMUU7QUFDQSxxQkFBYSxJQUFJLEVBQUU7QUFBQSxNQUFBO0FBR3JCLFdBQUkseUNBQVksdUJBQXNCLGFBQWEsT0FBTyxHQUFHO0FBQzNEO0FBQUEsTUFBQTtBQUdGLFVBQUksR0FBRyxTQUFTLFlBQVUsUUFBRyxlQUFILG1CQUFlLFNBQVMsU0FBUTtBQUN4RCxjQUFNLFdBQVcsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLFNBQ3BDLE1BQU0sS0FBSyxHQUFHLFFBQVEsSUFDdEIsTUFBTSxLQUFLLEdBQUcsV0FBWSxRQUFRO0FBQ3ZDLHNCQUFjLFVBQVUsTUFBTTtBQUFBLE1BQUE7QUFBQSxJQUNoQztBQUFBLEVBQ0Y7QUFFWSxnQkFBQSxVQUFVLHlDQUFZLE1BQU07QUFFbkMsU0FBQSxDQUFDLEdBQUcsWUFBWTtBQUN6QjtBQUVnQixTQUFBLHlCQUNkLFVBQ0EsUUFBcUM7QUFFL0IsUUFBQSxvQkFBb0IscUJBQXFCLFVBQVU7QUFBQSxJQUN2RDtBQUFBLElBQ0Esb0JBQW9CO0FBQUEsRUFBQSxDQUNyQjtBQUNELFNBQU8sa0JBQWtCLFNBQVMsa0JBQWtCLENBQUMsSUFBSTtBQUMzRDtNQUdhLGdCQUFlO0FBQUEsRUFBNUIsY0FBQTtBQUNVLFNBQUEsY0FBYyxJQUFJLGdCQUFlO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWxDLEtBQ0wsU0FDQSxTQUdDO0FBRU8sWUFBQSxpQkFDTixXQUNBLENBQUMsVUFBUztBQUNKLFVBQUEsTUFBTSxRQUFRLE9BQU87QUFDdkI7QUFBQSxNQUFBO0FBSUYsWUFBTSxrQkFBaUMsTUFBTSxLQUMzQyxRQUFRLFdBQVksWUFBWSxFQUFFO0FBRTlCLFlBQUEsb0JBQW9CLHFCQUFxQixpQkFBaUI7QUFBQSxRQUM5RCxRQUFRLG1DQUFTO0FBQUEsTUFBQSxDQUNsQjtBQUNELFlBQU0sNEJBQTRCLGtCQUFrQixRQUNsRCxtQ0FBUyxnQkFBZSxNQUFNLEtBQUs7QUFHakMsVUFBQSxDQUFDLDBCQUEwQixRQUFRO0FBQ3JDO0FBQUEsTUFBQTtBQUdJLFlBQUEsaUJBQWlCLDBCQUEwQixDQUFDO0FBQ2xELFlBQU0sZ0JBQWdCLDBCQUNwQiwwQkFBMEIsU0FBUyxDQUFDO0FBR3RDLFlBQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxNQUFNLFdBQ3hCLENBQUMsZ0JBQWdCLGFBQWEsSUFDOUIsQ0FBQyxlQUFlLGNBQWM7QUFHL0IsVUFBQSxlQUFlLFlBQXdDLEVBQUEsa0JBQWtCLFNBQ3pFLGNBQWMsWUFBQSxFQUF3QyxrQkFBa0IsT0FDekU7QUFDQSxhQUFLLE1BQUs7QUFDVixjQUFNLGVBQWM7QUFBQSxNQUFBO0FBQUEsT0FHeEIsRUFBRSxRQUFRLEtBQUssWUFBWSxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBSWhDLGFBQVU7QUFDZixTQUFLLFlBQVk7QUFDWixTQUFBLGNBQWMsSUFBSTs7QUFFMUI7In0=