@dereekb/dbx-web 9.25.16 → 10.0.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 (743) hide show
  1. package/_index.scss +2 -1
  2. package/calendar/esm2022/lib/calendar.base.component.mjs +57 -0
  3. package/{esm2020/calendar → calendar/esm2022}/lib/calendar.component.mjs +5 -5
  4. package/calendar/{esm2020 → esm2022}/lib/calendar.module.mjs +38 -38
  5. package/calendar/{esm2020 → esm2022}/lib/calendar.store.mjs +4 -4
  6. package/calendar/{fesm2020 → fesm2022}/dereekb-dbx-web-calendar.mjs +49 -49
  7. package/calendar/fesm2022/dereekb-dbx-web-calendar.mjs.map +1 -0
  8. package/calendar/lib/calendar.base.component.d.ts +2 -2
  9. package/calendar/lib/calendar.component.d.ts +1 -1
  10. package/calendar/lib/calendar.module.d.ts +1 -1
  11. package/calendar/package.json +10 -25
  12. package/esm2022/calendar/lib/calendar.base.component.mjs +57 -0
  13. package/{calendar/esm2020 → esm2022/calendar}/lib/calendar.component.mjs +5 -5
  14. package/{esm2020 → esm2022}/calendar/lib/calendar.module.mjs +38 -38
  15. package/{esm2020 → esm2022}/calendar/lib/calendar.store.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/action/action.confirm.directive.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/action/action.module.mjs +5 -5
  18. package/{esm2020 → esm2022}/lib/action/key.trigger.directive.mjs +4 -4
  19. package/esm2022/lib/action/snackbar/action.snackbar.component.mjs +96 -0
  20. package/esm2022/lib/action/snackbar/action.snackbar.directive.mjs +64 -0
  21. package/{esm2020 → esm2022}/lib/action/snackbar/action.snackbar.module.mjs +5 -5
  22. package/esm2022/lib/action/snackbar/action.snackbar.service.mjs +82 -0
  23. package/{esm2020 → esm2022}/lib/action/transition/action.transition.module.mjs +5 -5
  24. package/{esm2020 → esm2022}/lib/action/transition/transition.safety.dialog.component.mjs +6 -6
  25. package/{esm2020 → esm2022}/lib/action/transition/transition.safety.directive.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/button/button.component.mjs +6 -6
  27. package/{esm2020 → esm2022}/lib/button/button.module.mjs +5 -5
  28. package/{esm2020 → esm2022}/lib/button/button.spacer.component.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/button/icon/icon.button.component.mjs +7 -7
  30. package/{esm2020 → esm2022}/lib/button/icon/icon.button.module.mjs +13 -13
  31. package/esm2022/lib/button/progress/bar.button.component.mjs +23 -0
  32. package/esm2022/lib/button/progress/base.progress.button.directive.mjs +115 -0
  33. package/{esm2020 → esm2022}/lib/button/progress/button.progress.config.mjs +1 -1
  34. package/{esm2020 → esm2022}/lib/button/progress/button.progress.module.mjs +5 -5
  35. package/esm2022/lib/button/progress/spinner.button.component.mjs +59 -0
  36. package/{esm2020 → esm2022}/lib/dbx-web.module.mjs +5 -5
  37. package/{esm2020 → esm2022}/lib/error/default.error.widget.component.mjs +6 -6
  38. package/{esm2020 → esm2022}/lib/error/error.action.directive.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/error/error.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/error/error.details.component.mjs +6 -6
  41. package/{esm2020 → esm2022}/lib/error/error.loading.directive.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/error/error.module.mjs +21 -21
  43. package/{esm2020 → esm2022}/lib/error/error.popover.component.mjs +6 -6
  44. package/{esm2020 → esm2022}/lib/error/error.widget.component.mjs +6 -6
  45. package/esm2022/lib/error/error.widget.directive.mjs +23 -0
  46. package/{esm2020 → esm2022}/lib/error/error.widget.service.mjs +4 -4
  47. package/{esm2020 → esm2022}/lib/extension/model/model.module.mjs +15 -15
  48. package/{esm2020 → esm2022}/lib/extension/model/model.state.service.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/extension/model/model.tracker.service.mjs +4 -4
  50. package/esm2022/lib/extension/model/model.tracker.view.storage.mjs +69 -0
  51. package/esm2022/lib/extension/model/model.types.service.mjs +67 -0
  52. package/{esm2020 → esm2022}/lib/extension/model/state/effects/tracker.effects.mjs +4 -4
  53. package/esm2022/lib/extension/structure/structure.body.directive.mjs +28 -0
  54. package/{esm2020 → esm2022}/lib/extension/structure/structure.module.mjs +9 -9
  55. package/esm2022/lib/extension/structure/structure.structure.directive.mjs +23 -0
  56. package/{esm2020 → esm2022}/lib/extension/widget/widget.component.mjs +6 -6
  57. package/{esm2020 → esm2022}/lib/extension/widget/widget.directive.mjs +4 -4
  58. package/esm2022/lib/extension/widget/widget.list.component.mjs +67 -0
  59. package/{esm2020 → esm2022}/lib/extension/widget/widget.module.mjs +13 -13
  60. package/{esm2020 → esm2022}/lib/extension/widget/widget.service.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/interaction/dialog/abstract.dialog.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/interaction/dialog/dialog.action.directive.mjs +7 -7
  63. package/esm2022/lib/interaction/dialog/dialog.content.close.component.mjs +41 -0
  64. package/{esm2020 → esm2022}/lib/interaction/dialog/dialog.content.component.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/interaction/dialog/dialog.content.footer.component.mjs +6 -6
  66. package/{esm2020 → esm2022}/lib/interaction/dialog/dialog.module.mjs +5 -5
  67. package/{esm2020 → esm2022}/lib/interaction/filter/filter.module.mjs +28 -28
  68. package/{esm2020 → esm2022}/lib/interaction/filter/filter.partial.list.component.mjs +6 -6
  69. package/{esm2020 → esm2022}/lib/interaction/filter/filter.partial.menu.component.mjs +5 -5
  70. package/{esm2020 → esm2022}/lib/interaction/filter/filter.partial.mjs +10 -10
  71. package/{esm2020 → esm2022}/lib/interaction/filter/filter.popover.button.component.mjs +6 -6
  72. package/{esm2020 → esm2022}/lib/interaction/filter/filter.popover.button.directive.mjs +4 -4
  73. package/esm2022/lib/interaction/filter/filter.popover.component.mjs +125 -0
  74. package/{esm2020 → esm2022}/lib/interaction/filter/filter.preset.list.component.mjs +6 -6
  75. package/{esm2020 → esm2022}/lib/interaction/filter/filter.preset.menu.component.mjs +5 -5
  76. package/{esm2020 → esm2022}/lib/interaction/filter/filter.preset.mjs +10 -10
  77. package/{esm2020 → esm2022}/lib/interaction/filter/filter.wrapper.component.mjs +5 -5
  78. package/{esm2020 → esm2022}/lib/interaction/interaction.module.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/interaction/popover/abstract.popover.directive.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/interaction/popover/abstract.popover.ref.directive.mjs +7 -7
  81. package/{esm2020 → esm2022}/lib/interaction/popover/popover.action.directive.mjs +7 -7
  82. package/{esm2020 → esm2022}/lib/interaction/popover/popover.close.component.mjs +6 -6
  83. package/{esm2020 → esm2022}/lib/interaction/popover/popover.component.mjs +14 -14
  84. package/{esm2020 → esm2022}/lib/interaction/popover/popover.content.component.mjs +6 -6
  85. package/{esm2020 → esm2022}/lib/interaction/popover/popover.content.module.mjs +5 -5
  86. package/{esm2020 → esm2022}/lib/interaction/popover/popover.controls.directive.mjs +4 -4
  87. package/{esm2020 → esm2022}/lib/interaction/popover/popover.coordinator.component.mjs +6 -6
  88. package/{esm2020 → esm2022}/lib/interaction/popover/popover.coordinator.service.mjs +4 -4
  89. package/{esm2020 → esm2022}/lib/interaction/popover/popover.header.component.mjs +6 -6
  90. package/{esm2020 → esm2022}/lib/interaction/popover/popover.module.mjs +5 -5
  91. package/esm2022/lib/interaction/popover/popover.scroll.content.component.mjs +51 -0
  92. package/{esm2020 → esm2022}/lib/interaction/popover/popover.service.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/interaction/popup/abstract.popup.directive.mjs +4 -4
  94. package/{esm2020 → esm2022}/lib/interaction/popup/popup.component.mjs +14 -14
  95. package/{esm2020 → esm2022}/lib/interaction/popup/popup.content.component.mjs +6 -6
  96. package/{esm2020 → esm2022}/lib/interaction/popup/popup.controls.buttons.component.mjs +6 -6
  97. package/{esm2020 → esm2022}/lib/interaction/popup/popup.controls.component.mjs +6 -6
  98. package/{esm2020 → esm2022}/lib/interaction/popup/popup.coordinator.component.mjs +6 -6
  99. package/{esm2020 → esm2022}/lib/interaction/popup/popup.coordinator.service.mjs +4 -4
  100. package/{esm2020 → esm2022}/lib/interaction/popup/popup.module.mjs +5 -5
  101. package/{esm2020 → esm2022}/lib/interaction/popup/popup.service.mjs +4 -4
  102. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.box.component.mjs +6 -6
  103. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.button.confirm.directive.mjs +4 -4
  104. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.component.mjs +6 -6
  105. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.confirm.component.mjs +4 -4
  106. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.confirm.dialog.component.mjs +6 -6
  107. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.confirm.directive.mjs +7 -7
  108. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.module.mjs +5 -5
  109. package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.page.component.mjs +6 -6
  110. package/{esm2020 → esm2022}/lib/keypress/keydown.listener.directive.mjs +4 -4
  111. package/{esm2020 → esm2022}/lib/keypress/keypress.module.mjs +5 -5
  112. package/{esm2020 → esm2022}/lib/layout/bar/bar.directive.mjs +4 -4
  113. package/{esm2020 → esm2022}/lib/layout/bar/bar.header.component.mjs +6 -6
  114. package/{esm2020 → esm2022}/lib/layout/bar/bar.layout.module.mjs +5 -5
  115. package/{esm2020 → esm2022}/lib/layout/bar/pagebar.component.mjs +4 -4
  116. package/{esm2020 → esm2022}/lib/layout/block/block.layout.module.mjs +5 -5
  117. package/{esm2020 → esm2022}/lib/layout/block/two.block.component.mjs +6 -6
  118. package/{esm2020 → esm2022}/lib/layout/card/card.box.component.mjs +6 -6
  119. package/{esm2020 → esm2022}/lib/layout/card/card.box.container.component.mjs +6 -6
  120. package/{esm2020 → esm2022}/lib/layout/card/card.box.layout.module.mjs +5 -5
  121. package/{esm2020 → esm2022}/lib/layout/column/column.layout.module.mjs +5 -5
  122. package/{esm2020 → esm2022}/lib/layout/column/one/one.column.component.mjs +6 -6
  123. package/{esm2020 → esm2022}/lib/layout/column/one/one.column.module.mjs +5 -5
  124. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.back.directive.mjs +4 -4
  125. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.component.mjs +4 -4
  126. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.context.directive.mjs +4 -4
  127. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.full.left.directive.mjs +8 -8
  128. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.head.component.mjs +6 -6
  129. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.module.mjs +5 -5
  130. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.right.component.mjs +4 -4
  131. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.sref.directive.mjs +4 -4
  132. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.sref.showright.directive.mjs +4 -4
  133. package/{esm2020 → esm2022}/lib/layout/column/two/two.column.store.mjs +4 -4
  134. package/{esm2020 → esm2022}/lib/layout/compact/compact.directive.mjs +4 -4
  135. package/{esm2020 → esm2022}/lib/layout/compact/compact.layout.module.mjs +5 -5
  136. package/{esm2020 → esm2022}/lib/layout/compact/compact.store.mjs +4 -4
  137. package/{esm2020 → esm2022}/lib/layout/content/content.border.directive.mjs +4 -4
  138. package/esm2022/lib/layout/content/content.box.directive.mjs +29 -0
  139. package/esm2022/lib/layout/content/content.container.directive.mjs +31 -0
  140. package/{esm2020 → esm2022}/lib/layout/content/content.directive.mjs +4 -4
  141. package/{esm2020 → esm2022}/lib/layout/content/content.elevate.directive.mjs +4 -4
  142. package/{esm2020 → esm2022}/lib/layout/content/content.layout.module.mjs +21 -21
  143. package/{esm2020 → esm2022}/lib/layout/content/content.page.directive.mjs +4 -4
  144. package/{esm2020 → esm2022}/lib/layout/content/content.pit.directive.mjs +4 -4
  145. package/{esm2020 → esm2022}/lib/layout/flag/flag.component.mjs +6 -6
  146. package/{esm2020 → esm2022}/lib/layout/flag/flag.layout.module.mjs +5 -5
  147. package/{esm2020 → esm2022}/lib/layout/flag/flag.prompt.component.mjs +6 -6
  148. package/{esm2020 → esm2022}/lib/layout/flex/flex.group.directive.mjs +7 -7
  149. package/{esm2020 → esm2022}/lib/layout/flex/flex.layout.module.mjs +5 -5
  150. package/{esm2020 → esm2022}/lib/layout/flex/flex.size.directive.mjs +4 -4
  151. package/{esm2020 → esm2022}/lib/layout/item/item.icon.component.mjs +6 -6
  152. package/{esm2020 → esm2022}/lib/layout/item/item.layout.module.mjs +5 -5
  153. package/{esm2020 → esm2022}/lib/layout/layout.module.mjs +5 -5
  154. package/esm2022/lib/layout/list/list.component.mjs +253 -0
  155. package/{esm2020 → esm2022}/lib/layout/list/list.content.empty.component.mjs +6 -6
  156. package/{esm2020 → esm2022}/lib/layout/list/list.directive.mjs +7 -7
  157. package/{esm2020 → esm2022}/lib/layout/list/list.grid.view.component.mjs +15 -15
  158. package/{esm2020 → esm2022}/lib/layout/list/list.grid.view.directive.mjs +4 -4
  159. package/{esm2020 → esm2022}/lib/layout/list/list.layout.module.mjs +33 -33
  160. package/{esm2020 → esm2022}/lib/layout/list/list.view.directive.mjs +4 -4
  161. package/{esm2020 → esm2022}/lib/layout/list/list.view.selection.directive.mjs +4 -4
  162. package/{esm2020 → esm2022}/lib/layout/list/list.view.value.component.mjs +13 -13
  163. package/{esm2020 → esm2022}/lib/layout/list/list.view.value.directive.mjs +4 -4
  164. package/esm2022/lib/layout/list/list.view.value.item.directive.mjs +20 -0
  165. package/{esm2020 → esm2022}/lib/layout/list/list.view.value.modifier.directive.mjs +7 -7
  166. package/{esm2020 → esm2022}/lib/layout/list/list.view.value.modifier.ripple.directive.mjs +4 -4
  167. package/{esm2020 → esm2022}/lib/layout/list/list.view.value.modifier.selection.directive.mjs +4 -4
  168. package/{esm2020 → esm2022}/lib/layout/list/list.view.value.selection.component.mjs +13 -13
  169. package/{esm2020 → esm2022}/lib/layout/section/section.component.mjs +6 -6
  170. package/{esm2020 → esm2022}/lib/layout/section/section.header.component.mjs +6 -6
  171. package/{esm2020 → esm2022}/lib/layout/section/section.intro.component.mjs +6 -6
  172. package/{esm2020 → esm2022}/lib/layout/section/section.layout.module.mjs +5 -5
  173. package/{esm2020 → esm2022}/lib/layout/section/section.page.component.mjs +6 -6
  174. package/{esm2020 → esm2022}/lib/layout/section/subsection.component.mjs +6 -6
  175. package/{esm2020 → esm2022}/lib/layout/step/step.component.mjs +4 -4
  176. package/{esm2020 → esm2022}/lib/layout/step/step.layout.module.mjs +5 -5
  177. package/{esm2020 → esm2022}/lib/layout/style/spacer.directive.mjs +4 -4
  178. package/{esm2020 → esm2022}/lib/layout/style/style.body.directive.mjs +4 -4
  179. package/{esm2020 → esm2022}/lib/layout/style/style.color.directive.mjs +4 -4
  180. package/{esm2020 → esm2022}/lib/layout/style/style.directive.mjs +4 -4
  181. package/{esm2020 → esm2022}/lib/layout/style/style.layout.module.mjs +5 -5
  182. package/{esm2020 → esm2022}/lib/layout/style/style.service.mjs +4 -4
  183. package/{esm2020 → esm2022}/lib/layout/style/style.set.directive.mjs +4 -4
  184. package/{esm2020 → esm2022}/lib/layout/text/address.component.mjs +6 -6
  185. package/{esm2020 → esm2022}/lib/layout/text/detail.block.component.mjs +6 -6
  186. package/{esm2020 → esm2022}/lib/layout/text/detail.block.header.component.mjs +6 -6
  187. package/{esm2020 → esm2022}/lib/layout/text/form.description.component.mjs +6 -6
  188. package/{esm2020 → esm2022}/lib/layout/text/hint.component.mjs +6 -6
  189. package/{esm2020 → esm2022}/lib/layout/text/icon.spacer.component.mjs +4 -4
  190. package/{esm2020 → esm2022}/lib/layout/text/label.block.component.mjs +6 -6
  191. package/{esm2020 → esm2022}/lib/layout/text/label.component.mjs +6 -6
  192. package/{esm2020 → esm2022}/lib/layout/text/linkify.component.mjs +6 -6
  193. package/{esm2020 → esm2022}/lib/layout/text/note.component.mjs +6 -6
  194. package/{esm2020 → esm2022}/lib/layout/text/notice.component.mjs +6 -6
  195. package/{esm2020 → esm2022}/lib/layout/text/ok.component.mjs +6 -6
  196. package/{esm2020 → esm2022}/lib/layout/text/success.component.mjs +6 -6
  197. package/{esm2020 → esm2022}/lib/layout/text/text.chip.directive.mjs +4 -4
  198. package/esm2022/lib/layout/text/text.chips.component.mjs +36 -0
  199. package/{esm2020 → esm2022}/lib/layout/text/text.module.mjs +5 -5
  200. package/{esm2020 → esm2022}/lib/layout/text/warn.component.mjs +6 -6
  201. package/{esm2020 → esm2022}/lib/loading/basic-loading.component.mjs +4 -4
  202. package/{esm2020 → esm2022}/lib/loading/loading-progress.component.mjs +6 -6
  203. package/{esm2020 → esm2022}/lib/loading/loading.action.directive.mjs +4 -4
  204. package/{esm2020 → esm2022}/lib/loading/loading.component.mjs +6 -6
  205. package/{esm2020 → esm2022}/lib/loading/loading.module.mjs +5 -5
  206. package/esm2022/lib/router/layout/anchor/anchor.component.mjs +66 -0
  207. package/esm2022/lib/router/layout/anchor/anchor.content.component.mjs +49 -0
  208. package/{esm2020 → esm2022}/lib/router/layout/anchor/anchor.icon.component.mjs +6 -6
  209. package/{esm2020 → esm2022}/lib/router/layout/anchor/anchor.link.component.mjs +6 -6
  210. package/{esm2020 → esm2022}/lib/router/layout/anchor/anchor.module.mjs +5 -5
  211. package/{esm2020 → esm2022}/lib/router/layout/anchor/anchor.segue.directive.mjs +4 -4
  212. package/esm2022/lib/router/layout/anchorlist/anchorlist.component.mjs +37 -0
  213. package/{esm2020 → esm2022}/lib/router/layout/anchorlist/anchorlist.module.mjs +5 -5
  214. package/{esm2020 → esm2022}/lib/router/layout/layout.module.mjs +5 -5
  215. package/{esm2020 → esm2022}/lib/router/layout/list/list.module.mjs +5 -5
  216. package/{esm2020 → esm2022}/lib/router/layout/list/router.list.directive.mjs +4 -4
  217. package/esm2022/lib/router/layout/navbar/navbar.component.mjs +134 -0
  218. package/esm2022/lib/router/layout/navbar/navbar.module.mjs +53 -0
  219. package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.button.component.mjs +6 -6
  220. package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.component.mjs +4 -4
  221. package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.ifdisplaymode.directive.mjs +4 -4
  222. package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.module.mjs +5 -5
  223. package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.page.component.mjs +6 -6
  224. package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.pagebar.component.mjs +6 -6
  225. package/{esm2020 → esm2022}/lib/router/provider/ngrouter/anchor.component.mjs +4 -4
  226. package/{esm2020 → esm2022}/lib/router/provider/ngrouter/angular.router.module.mjs +5 -5
  227. package/{esm2020 → esm2022}/lib/router/provider/uirouter/anchor.component.mjs +4 -4
  228. package/{esm2020 → esm2022}/lib/router/provider/uirouter/uirouter.router.module.mjs +5 -5
  229. package/{esm2020 → esm2022}/lib/screen/screen.module.mjs +5 -5
  230. package/{esm2020 → esm2022}/lib/screen/screen.service.mjs +4 -4
  231. package/esm2022/mapbox/lib/index.mjs +21 -0
  232. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.change.service.mjs +4 -4
  233. package/{esm2020 → esm2022}/mapbox/lib/mapbox.injection.component.mjs +6 -6
  234. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.injection.store.mjs +4 -4
  235. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.injection.store.provide.mjs +7 -7
  236. package/esm2022/mapbox/lib/mapbox.layout.component.mjs +184 -0
  237. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.layout.drawer.component.mjs +4 -4
  238. package/{esm2020 → esm2022}/mapbox/lib/mapbox.layout.resize.sync.directive.mjs +4 -4
  239. package/esm2022/mapbox/lib/mapbox.marker.component.mjs +139 -0
  240. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.markers.component.mjs +6 -6
  241. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.menu.component.mjs +7 -7
  242. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.module.mjs +45 -45
  243. package/{esm2020 → esm2022}/mapbox/lib/mapbox.service.mjs +4 -4
  244. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.store.map.directive.mjs +4 -4
  245. package/{esm2020 → esm2022}/mapbox/lib/mapbox.store.mjs +5 -5
  246. package/{mapbox/esm2020 → esm2022/mapbox}/lib/mapbox.store.provide.mjs +7 -7
  247. package/esm2022/mapbox/lib/mapbox.util.mjs +15 -0
  248. package/{esm2020 → esm2022}/table/lib/date/date.table.column.header.component.mjs +6 -6
  249. package/esm2022/table/lib/date/daterange.table.cell.input.component.mjs +167 -0
  250. package/{table/esm2020 → esm2022/table}/lib/date/table.date.module.mjs +31 -31
  251. package/{table/esm2020 → esm2022/table}/lib/table.cell.action.component.mjs +6 -6
  252. package/{esm2020 → esm2022}/table/lib/table.cell.input.component.mjs +6 -6
  253. package/{esm2020 → esm2022}/table/lib/table.cell.summaryend.component.mjs +6 -6
  254. package/{esm2020 → esm2022}/table/lib/table.cell.summarystart.component.mjs +6 -6
  255. package/{table/esm2020 → esm2022/table}/lib/table.column.directive.mjs +4 -4
  256. package/{esm2020 → esm2022}/table/lib/table.column.footer.component.mjs +6 -6
  257. package/{esm2020 → esm2022}/table/lib/table.column.header.component.mjs +6 -6
  258. package/{table/esm2020 → esm2022/table}/lib/table.component.mjs +4 -4
  259. package/{table/esm2020 → esm2022/table}/lib/table.directive.mjs +4 -4
  260. package/{table/esm2020 → esm2022/table}/lib/table.item.action.component.mjs +6 -6
  261. package/{table/esm2020 → esm2022/table}/lib/table.item.cell.component.mjs +6 -6
  262. package/{esm2020 → esm2022}/table/lib/table.item.directive.mjs +4 -4
  263. package/{table/esm2020 → esm2022/table}/lib/table.item.header.component.mjs +6 -6
  264. package/{esm2020 → esm2022}/table/lib/table.module.mjs +27 -27
  265. package/{table/esm2020 → esm2022/table}/lib/table.store.mjs +4 -4
  266. package/{fesm2020 → fesm2022}/dereekb-dbx-web-calendar.mjs +49 -49
  267. package/fesm2022/dereekb-dbx-web-calendar.mjs.map +1 -0
  268. package/{mapbox/fesm2020 → fesm2022}/dereekb-dbx-web-mapbox.mjs +109 -141
  269. package/fesm2022/dereekb-dbx-web-mapbox.mjs.map +1 -0
  270. package/{fesm2020 → fesm2022}/dereekb-dbx-web-table.mjs +138 -137
  271. package/fesm2022/dereekb-dbx-web-table.mjs.map +1 -0
  272. package/{fesm2020 → fesm2022}/dereekb-dbx-web.mjs +1208 -1175
  273. package/fesm2022/dereekb-dbx-web.mjs.map +1 -0
  274. package/lib/action/_action.scss +2 -2
  275. package/lib/action/action.confirm.directive.d.ts +1 -1
  276. package/lib/action/key.trigger.directive.d.ts +1 -1
  277. package/lib/action/snackbar/_snackbar.scss +3 -2
  278. package/lib/action/snackbar/action.snackbar.component.d.ts +1 -1
  279. package/lib/action/snackbar/action.snackbar.d.ts +2 -2
  280. package/lib/action/snackbar/action.snackbar.directive.d.ts +1 -1
  281. package/lib/action/snackbar/action.snackbar.generator.d.ts +2 -2
  282. package/lib/action/transition/transition.safety.dialog.component.d.ts +1 -1
  283. package/lib/action/transition/transition.safety.directive.d.ts +2 -2
  284. package/lib/button/_button.scss +22 -27
  285. package/lib/button/button.component.d.ts +1 -1
  286. package/lib/button/button.spacer.component.d.ts +1 -1
  287. package/lib/button/icon/icon.button.component.d.ts +1 -1
  288. package/lib/button/progress/bar.button.component.d.ts +2 -1
  289. package/lib/button/progress/bar.button.component.scss +20 -12
  290. package/lib/button/progress/base.progress.button.directive.d.ts +3 -2
  291. package/lib/button/progress/button.progress.config.d.ts +1 -5
  292. package/lib/button/progress/shared.button.component.scss +17 -0
  293. package/lib/button/progress/spinner.button.component.d.ts +2 -1
  294. package/lib/button/progress/spinner.button.component.scss +21 -1
  295. package/lib/error/_error.scss +3 -2
  296. package/lib/error/default.error.widget.component.d.ts +1 -1
  297. package/lib/error/error.action.directive.d.ts +1 -1
  298. package/lib/error/error.component.d.ts +1 -1
  299. package/lib/error/error.details.component.d.ts +1 -1
  300. package/lib/error/error.loading.directive.d.ts +1 -1
  301. package/lib/error/error.popover.component.d.ts +1 -1
  302. package/lib/error/error.widget.component.d.ts +1 -1
  303. package/lib/error/error.widget.directive.d.ts +1 -1
  304. package/lib/extension/_extension.scss +15 -10
  305. package/lib/extension/calendar/_calendar.scss +3 -2
  306. package/lib/extension/model/model.tracker.d.ts +1 -1
  307. package/lib/extension/model/model.tracker.view.storage.d.ts +0 -4
  308. package/lib/extension/model/model.types.d.ts +2 -2
  309. package/lib/extension/model/state/reducers/index.d.ts +1 -1
  310. package/lib/extension/model/state/state.d.ts +1 -1
  311. package/lib/extension/structure/structure.body.directive.d.ts +1 -1
  312. package/lib/extension/structure/structure.structure.directive.d.ts +1 -1
  313. package/lib/extension/table/_table.scss +3 -2
  314. package/lib/extension/widget/widget.component.d.ts +1 -1
  315. package/lib/extension/widget/widget.d.ts +3 -3
  316. package/lib/extension/widget/widget.directive.d.ts +1 -1
  317. package/lib/extension/widget/widget.list.component.d.ts +4 -4
  318. package/lib/interaction/_interaction.scss +7 -7
  319. package/lib/interaction/dialog/_dialog.scss +26 -9
  320. package/lib/interaction/dialog/abstract.dialog.directive.d.ts +1 -1
  321. package/lib/interaction/dialog/dialog.action.directive.d.ts +2 -2
  322. package/lib/interaction/dialog/dialog.content.close.component.d.ts +2 -1
  323. package/lib/interaction/dialog/dialog.content.component.d.ts +2 -2
  324. package/lib/interaction/dialog/dialog.content.d.ts +1 -1
  325. package/lib/interaction/dialog/dialog.content.footer.component.d.ts +1 -1
  326. package/lib/interaction/filter/_filter.scss +3 -2
  327. package/lib/interaction/filter/filter.module.d.ts +1 -1
  328. package/lib/interaction/filter/filter.partial.d.ts +1 -1
  329. package/lib/interaction/filter/filter.partial.list.component.d.ts +1 -1
  330. package/lib/interaction/filter/filter.partial.menu.component.d.ts +2 -2
  331. package/lib/interaction/filter/filter.popover.button.component.d.ts +1 -1
  332. package/lib/interaction/filter/filter.popover.button.directive.d.ts +4 -4
  333. package/lib/interaction/filter/filter.popover.component.d.ts +1 -1
  334. package/lib/interaction/filter/filter.preset.d.ts +3 -3
  335. package/lib/interaction/filter/filter.preset.list.component.d.ts +1 -1
  336. package/lib/interaction/filter/filter.preset.menu.component.d.ts +2 -2
  337. package/lib/interaction/filter/filter.wrapper.component.d.ts +1 -1
  338. package/lib/interaction/popover/_popover.scss +3 -2
  339. package/lib/interaction/popover/abstract.popover.directive.d.ts +1 -1
  340. package/lib/interaction/popover/abstract.popover.ref.directive.d.ts +2 -2
  341. package/lib/interaction/popover/popover.action.directive.d.ts +2 -2
  342. package/lib/interaction/popover/popover.close.component.d.ts +1 -1
  343. package/lib/interaction/popover/popover.component.d.ts +1 -1
  344. package/lib/interaction/popover/popover.content.component.d.ts +1 -1
  345. package/lib/interaction/popover/popover.controls.directive.d.ts +1 -1
  346. package/lib/interaction/popover/popover.coordinator.component.d.ts +1 -1
  347. package/lib/interaction/popover/popover.d.ts +1 -1
  348. package/lib/interaction/popover/popover.header.component.d.ts +1 -1
  349. package/lib/interaction/popover/popover.scroll.content.component.d.ts +1 -1
  350. package/lib/interaction/popover/popover.service.d.ts +1 -1
  351. package/lib/interaction/popup/_popup.scss +7 -2
  352. package/lib/interaction/popup/abstract.popup.directive.d.ts +1 -1
  353. package/lib/interaction/popup/popup.component.d.ts +1 -1
  354. package/lib/interaction/popup/popup.content.component.d.ts +1 -1
  355. package/lib/interaction/popup/popup.controls.buttons.component.d.ts +1 -1
  356. package/lib/interaction/popup/popup.controls.component.d.ts +1 -1
  357. package/lib/interaction/popup/popup.coordinator.component.d.ts +1 -1
  358. package/lib/interaction/popup/popup.d.ts +1 -1
  359. package/lib/interaction/popup/popup.position.strategy.d.ts +1 -1
  360. package/lib/interaction/prompt/_prompt.scss +3 -2
  361. package/lib/interaction/prompt/prompt.box.component.d.ts +1 -1
  362. package/lib/interaction/prompt/prompt.button.confirm.directive.d.ts +1 -1
  363. package/lib/interaction/prompt/prompt.component.d.ts +1 -1
  364. package/lib/interaction/prompt/prompt.confirm.component.d.ts +1 -1
  365. package/lib/interaction/prompt/prompt.confirm.dialog.component.d.ts +1 -1
  366. package/lib/interaction/prompt/prompt.confirm.directive.d.ts +2 -2
  367. package/lib/interaction/prompt/prompt.page.component.d.ts +1 -1
  368. package/lib/interaction/style/_style.scss +3 -2
  369. package/lib/keypress/keydown.listener.directive.d.ts +1 -1
  370. package/lib/layout/_layout.scss +14 -14
  371. package/lib/layout/bar/_bar.scss +5 -2
  372. package/lib/layout/bar/bar.d.ts +1 -1
  373. package/lib/layout/bar/bar.directive.d.ts +1 -1
  374. package/lib/layout/bar/bar.header.component.d.ts +1 -1
  375. package/lib/layout/bar/pagebar.component.d.ts +1 -1
  376. package/lib/layout/block/_block.scss +3 -2
  377. package/lib/layout/block/two.block.component.d.ts +1 -1
  378. package/lib/layout/card/_card.scss +3 -2
  379. package/lib/layout/card/card.box.component.d.ts +1 -1
  380. package/lib/layout/card/card.box.container.component.d.ts +1 -1
  381. package/lib/layout/column/_column.scss +4 -3
  382. package/lib/layout/column/one/one.column.component.d.ts +1 -1
  383. package/lib/layout/column/two/two.column.back.directive.d.ts +1 -1
  384. package/lib/layout/column/two/two.column.component.d.ts +1 -1
  385. package/lib/layout/column/two/two.column.context.directive.d.ts +1 -1
  386. package/lib/layout/column/two/two.column.full.left.directive.d.ts +1 -1
  387. package/lib/layout/column/two/two.column.head.component.d.ts +1 -1
  388. package/lib/layout/column/two/two.column.right.component.d.ts +1 -1
  389. package/lib/layout/column/two/two.column.sref.directive.d.ts +1 -1
  390. package/lib/layout/column/two/two.column.sref.showright.directive.d.ts +1 -1
  391. package/lib/layout/compact/compact.d.ts +1 -1
  392. package/lib/layout/compact/compact.directive.d.ts +1 -1
  393. package/lib/layout/content/_content.scss +3 -2
  394. package/lib/layout/content/content.border.directive.d.ts +1 -1
  395. package/lib/layout/content/content.box.directive.d.ts +1 -5
  396. package/lib/layout/content/content.container.directive.d.ts +3 -3
  397. package/lib/layout/content/content.directive.d.ts +1 -1
  398. package/lib/layout/content/content.elevate.directive.d.ts +1 -1
  399. package/lib/layout/content/content.page.directive.d.ts +1 -1
  400. package/lib/layout/content/content.pit.directive.d.ts +1 -1
  401. package/lib/layout/flag/_flag.scss +3 -2
  402. package/lib/layout/flag/flag.component.d.ts +1 -1
  403. package/lib/layout/flag/flag.prompt.component.d.ts +1 -1
  404. package/lib/layout/flex/_flex.scss +3 -2
  405. package/lib/layout/flex/flex.d.ts +1 -1
  406. package/lib/layout/flex/flex.group.directive.d.ts +1 -1
  407. package/lib/layout/flex/flex.size.directive.d.ts +1 -1
  408. package/lib/layout/item/_item.scss +3 -2
  409. package/lib/layout/item/item.icon.component.d.ts +1 -1
  410. package/lib/layout/list/_list.scss +22 -13
  411. package/lib/layout/list/list.component.d.ts +4 -4
  412. package/lib/layout/list/list.content.empty.component.d.ts +1 -1
  413. package/lib/layout/list/list.directive.d.ts +4 -4
  414. package/lib/layout/list/list.grid.view.component.d.ts +3 -3
  415. package/lib/layout/list/list.grid.view.directive.d.ts +1 -1
  416. package/lib/layout/list/list.layout.module.d.ts +1 -1
  417. package/lib/layout/list/list.view.d.ts +1 -1
  418. package/lib/layout/list/list.view.directive.d.ts +1 -1
  419. package/lib/layout/list/list.view.selection.directive.d.ts +1 -1
  420. package/lib/layout/list/list.view.value.component.d.ts +2 -2
  421. package/lib/layout/list/list.view.value.d.ts +3 -3
  422. package/lib/layout/list/list.view.value.directive.d.ts +1 -1
  423. package/lib/layout/list/list.view.value.item.directive.d.ts +1 -1
  424. package/lib/layout/list/list.view.value.modifier.d.ts +1 -1
  425. package/lib/layout/list/list.view.value.modifier.directive.d.ts +2 -2
  426. package/lib/layout/list/list.view.value.modifier.ripple.directive.d.ts +2 -6
  427. package/lib/layout/list/list.view.value.modifier.selection.directive.d.ts +1 -1
  428. package/lib/layout/list/list.view.value.selection.component.d.ts +2 -2
  429. package/lib/layout/section/_section.scss +3 -2
  430. package/lib/layout/section/section.component.d.ts +1 -1
  431. package/lib/layout/section/section.d.ts +1 -1
  432. package/lib/layout/section/section.header.component.d.ts +1 -1
  433. package/lib/layout/section/section.intro.component.d.ts +1 -1
  434. package/lib/layout/section/section.page.component.d.ts +2 -2
  435. package/lib/layout/section/subsection.component.d.ts +1 -1
  436. package/lib/layout/step/_step.scss +3 -2
  437. package/lib/layout/step/step.component.d.ts +1 -1
  438. package/lib/layout/style/_style.scss +3 -2
  439. package/lib/layout/style/spacer.directive.d.ts +1 -1
  440. package/lib/layout/style/style.body.directive.d.ts +1 -1
  441. package/lib/layout/style/style.color.directive.d.ts +1 -1
  442. package/lib/layout/style/style.d.ts +1 -1
  443. package/lib/layout/style/style.directive.d.ts +1 -1
  444. package/lib/layout/style/style.set.directive.d.ts +1 -1
  445. package/lib/layout/text/_text.scss +10 -2
  446. package/lib/layout/text/address.component.d.ts +1 -1
  447. package/lib/layout/text/detail.block.component.d.ts +1 -1
  448. package/lib/layout/text/detail.block.header.component.d.ts +1 -1
  449. package/lib/layout/text/form.description.component.d.ts +1 -1
  450. package/lib/layout/text/hint.component.d.ts +1 -1
  451. package/lib/layout/text/icon.spacer.component.d.ts +1 -1
  452. package/lib/layout/text/label.block.component.d.ts +1 -1
  453. package/lib/layout/text/label.component.d.ts +1 -1
  454. package/lib/layout/text/linkify.component.d.ts +1 -1
  455. package/lib/layout/text/note.component.d.ts +1 -1
  456. package/lib/layout/text/notice.component.d.ts +1 -1
  457. package/lib/layout/text/ok.component.d.ts +1 -1
  458. package/lib/layout/text/success.component.d.ts +1 -1
  459. package/lib/layout/text/text.chip.directive.d.ts +1 -1
  460. package/lib/layout/text/text.chips.component.d.ts +4 -2
  461. package/lib/layout/text/warn.component.d.ts +1 -1
  462. package/lib/loading/_loading.scss +3 -2
  463. package/lib/loading/basic-loading.component.d.ts +1 -1
  464. package/lib/loading/loading-progress.component.d.ts +1 -1
  465. package/lib/loading/loading.action.directive.d.ts +1 -1
  466. package/lib/loading/loading.component.d.ts +1 -1
  467. package/lib/router/_router.scss +5 -5
  468. package/lib/router/layout/anchor/_anchor.scss +3 -2
  469. package/lib/router/layout/anchor/anchor.component.d.ts +1 -1
  470. package/lib/router/layout/anchor/anchor.content.component.d.ts +1 -1
  471. package/lib/router/layout/anchor/anchor.icon.component.d.ts +1 -1
  472. package/lib/router/layout/anchor/anchor.link.component.d.ts +1 -1
  473. package/lib/router/layout/anchor/anchor.segue.directive.d.ts +2 -2
  474. package/lib/router/layout/anchorlist/_anchorlist.scss +42 -27
  475. package/lib/router/layout/anchorlist/anchorlist.component.d.ts +1 -1
  476. package/lib/router/layout/list/router.list.directive.d.ts +2 -2
  477. package/lib/router/layout/navbar/_navbar.scss +3 -2
  478. package/lib/router/layout/navbar/navbar.component.d.ts +6 -5
  479. package/lib/router/layout/navbar/navbar.module.d.ts +3 -2
  480. package/lib/router/layout/sidenav/_sidenav.scss +28 -25
  481. package/lib/router/layout/sidenav/sidenav.button.component.d.ts +1 -1
  482. package/lib/router/layout/sidenav/sidenav.component.d.ts +1 -1
  483. package/lib/router/layout/sidenav/sidenav.ifdisplaymode.directive.d.ts +1 -1
  484. package/lib/router/layout/sidenav/sidenav.page.component.d.ts +1 -1
  485. package/lib/router/layout/sidenav/sidenav.pagebar.component.d.ts +1 -1
  486. package/lib/router/provider/ngrouter/anchor.component.d.ts +1 -1
  487. package/lib/router/provider/uirouter/anchor.component.d.ts +1 -1
  488. package/lib/screen/screen.d.ts +2 -2
  489. package/lib/style/_all-typography.scss +9 -2
  490. package/lib/style/_core.scss +1 -2
  491. package/lib/style/_theming.scss +1 -1
  492. package/mapbox/esm2022/lib/index.mjs +21 -0
  493. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.change.service.mjs +4 -4
  494. package/mapbox/{esm2020 → esm2022}/lib/mapbox.injection.component.mjs +6 -6
  495. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.injection.store.mjs +4 -4
  496. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.injection.store.provide.mjs +7 -7
  497. package/mapbox/esm2022/lib/mapbox.layout.component.mjs +184 -0
  498. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.layout.drawer.component.mjs +4 -4
  499. package/mapbox/{esm2020 → esm2022}/lib/mapbox.layout.resize.sync.directive.mjs +4 -4
  500. package/mapbox/esm2022/lib/mapbox.marker.component.mjs +139 -0
  501. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.markers.component.mjs +6 -6
  502. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.menu.component.mjs +7 -7
  503. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.module.mjs +45 -45
  504. package/mapbox/{esm2020 → esm2022}/lib/mapbox.service.mjs +4 -4
  505. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.store.map.directive.mjs +4 -4
  506. package/mapbox/{esm2020 → esm2022}/lib/mapbox.store.mjs +5 -5
  507. package/{esm2020/mapbox → mapbox/esm2022}/lib/mapbox.store.provide.mjs +7 -7
  508. package/mapbox/esm2022/lib/mapbox.util.mjs +15 -0
  509. package/{fesm2020 → mapbox/fesm2022}/dereekb-dbx-web-mapbox.mjs +109 -141
  510. package/mapbox/fesm2022/dereekb-dbx-web-mapbox.mjs.map +1 -0
  511. package/mapbox/lib/index.d.ts +0 -1
  512. package/mapbox/lib/mapbox.d.ts +7 -7
  513. package/mapbox/lib/mapbox.injection.component.d.ts +1 -1
  514. package/mapbox/lib/mapbox.injection.store.d.ts +1 -1
  515. package/mapbox/lib/mapbox.injection.store.provide.d.ts +1 -1
  516. package/mapbox/lib/mapbox.layout.component.d.ts +3 -7
  517. package/mapbox/lib/mapbox.layout.drawer.component.d.ts +2 -2
  518. package/mapbox/lib/mapbox.layout.resize.sync.directive.d.ts +1 -1
  519. package/mapbox/lib/mapbox.marker.component.d.ts +2 -2
  520. package/mapbox/lib/mapbox.marker.d.ts +4 -4
  521. package/mapbox/lib/mapbox.markers.component.d.ts +1 -1
  522. package/mapbox/lib/mapbox.menu.component.d.ts +1 -1
  523. package/mapbox/lib/mapbox.rxjs.d.ts +1 -1
  524. package/mapbox/lib/mapbox.store.d.ts +5 -5
  525. package/mapbox/lib/mapbox.store.map.directive.d.ts +1 -1
  526. package/mapbox/lib/mapbox.store.provide.d.ts +1 -1
  527. package/mapbox/lib/mapbox.util.d.ts +1 -1
  528. package/mapbox/package.json +10 -25
  529. package/package.json +37 -40
  530. package/table/{esm2020 → esm2022}/lib/date/date.table.column.header.component.mjs +6 -6
  531. package/table/esm2022/lib/date/daterange.table.cell.input.component.mjs +167 -0
  532. package/{esm2020/table → table/esm2022}/lib/date/table.date.module.mjs +31 -31
  533. package/{esm2020/table → table/esm2022}/lib/table.cell.action.component.mjs +6 -6
  534. package/table/{esm2020 → esm2022}/lib/table.cell.input.component.mjs +6 -6
  535. package/table/{esm2020 → esm2022}/lib/table.cell.summaryend.component.mjs +6 -6
  536. package/table/{esm2020 → esm2022}/lib/table.cell.summarystart.component.mjs +6 -6
  537. package/{esm2020/table → table/esm2022}/lib/table.column.directive.mjs +4 -4
  538. package/table/{esm2020 → esm2022}/lib/table.column.footer.component.mjs +6 -6
  539. package/table/{esm2020 → esm2022}/lib/table.column.header.component.mjs +6 -6
  540. package/{esm2020/table → table/esm2022}/lib/table.component.mjs +4 -4
  541. package/{esm2020/table → table/esm2022}/lib/table.directive.mjs +4 -4
  542. package/{esm2020/table → table/esm2022}/lib/table.item.action.component.mjs +6 -6
  543. package/{esm2020/table → table/esm2022}/lib/table.item.cell.component.mjs +6 -6
  544. package/table/{esm2020 → esm2022}/lib/table.item.directive.mjs +4 -4
  545. package/{esm2020/table → table/esm2022}/lib/table.item.header.component.mjs +6 -6
  546. package/table/{esm2020 → esm2022}/lib/table.module.mjs +27 -27
  547. package/{esm2020/table → table/esm2022}/lib/table.store.mjs +4 -4
  548. package/table/{fesm2020 → fesm2022}/dereekb-dbx-web-table.mjs +138 -137
  549. package/table/fesm2022/dereekb-dbx-web-table.mjs.map +1 -0
  550. package/table/lib/date/date.table.column.header.component.d.ts +1 -1
  551. package/table/lib/date/daterange.table.cell.input.component.d.ts +5 -1
  552. package/table/lib/table.cell.action.component.d.ts +2 -2
  553. package/table/lib/table.cell.input.component.d.ts +2 -2
  554. package/table/lib/table.cell.summaryend.component.d.ts +2 -2
  555. package/table/lib/table.cell.summarystart.component.d.ts +2 -2
  556. package/table/lib/table.column.directive.d.ts +1 -1
  557. package/table/lib/table.column.footer.component.d.ts +2 -2
  558. package/table/lib/table.column.header.component.d.ts +2 -2
  559. package/table/lib/table.component.d.ts +1 -1
  560. package/table/lib/table.directive.d.ts +1 -1
  561. package/table/lib/table.item.action.component.d.ts +2 -2
  562. package/table/lib/table.item.cell.component.d.ts +2 -2
  563. package/table/lib/table.item.directive.d.ts +1 -1
  564. package/table/lib/table.item.header.component.d.ts +2 -2
  565. package/table/package.json +10 -24
  566. package/calendar/esm2020/lib/calendar.base.component.mjs +0 -57
  567. package/calendar/fesm2015/dereekb-dbx-web-calendar.mjs +0 -391
  568. package/calendar/fesm2015/dereekb-dbx-web-calendar.mjs.map +0 -1
  569. package/calendar/fesm2020/dereekb-dbx-web-calendar.mjs.map +0 -1
  570. package/esm2020/calendar/lib/calendar.base.component.mjs +0 -57
  571. package/esm2020/lib/action/snackbar/action.snackbar.component.mjs +0 -96
  572. package/esm2020/lib/action/snackbar/action.snackbar.directive.mjs +0 -64
  573. package/esm2020/lib/action/snackbar/action.snackbar.service.mjs +0 -82
  574. package/esm2020/lib/button/progress/bar.button.component.mjs +0 -16
  575. package/esm2020/lib/button/progress/base.progress.button.directive.mjs +0 -97
  576. package/esm2020/lib/button/progress/spinner.button.component.mjs +0 -43
  577. package/esm2020/lib/error/error.widget.directive.mjs +0 -23
  578. package/esm2020/lib/extension/model/model.tracker.view.storage.mjs +0 -76
  579. package/esm2020/lib/extension/model/model.types.service.mjs +0 -67
  580. package/esm2020/lib/extension/structure/structure.body.directive.mjs +0 -28
  581. package/esm2020/lib/extension/structure/structure.structure.directive.mjs +0 -23
  582. package/esm2020/lib/extension/widget/widget.list.component.mjs +0 -66
  583. package/esm2020/lib/interaction/dialog/dialog.content.close.component.mjs +0 -37
  584. package/esm2020/lib/interaction/filter/filter.popover.component.mjs +0 -125
  585. package/esm2020/lib/interaction/popover/popover.scroll.content.component.mjs +0 -51
  586. package/esm2020/lib/layout/content/content.box.directive.mjs +0 -36
  587. package/esm2020/lib/layout/content/content.container.directive.mjs +0 -31
  588. package/esm2020/lib/layout/list/list.component.mjs +0 -253
  589. package/esm2020/lib/layout/list/list.view.value.item.directive.mjs +0 -20
  590. package/esm2020/lib/layout/text/text.chips.component.mjs +0 -34
  591. package/esm2020/lib/router/layout/anchor/anchor.component.mjs +0 -66
  592. package/esm2020/lib/router/layout/anchor/anchor.content.component.mjs +0 -49
  593. package/esm2020/lib/router/layout/anchorlist/anchorlist.component.mjs +0 -38
  594. package/esm2020/lib/router/layout/navbar/navbar.component.mjs +0 -133
  595. package/esm2020/lib/router/layout/navbar/navbar.module.mjs +0 -49
  596. package/esm2020/mapbox/lib/index.mjs +0 -22
  597. package/esm2020/mapbox/lib/mapbox.cdref.service.mjs +0 -30
  598. package/esm2020/mapbox/lib/mapbox.layout.component.mjs +0 -189
  599. package/esm2020/mapbox/lib/mapbox.marker.component.mjs +0 -139
  600. package/esm2020/mapbox/lib/mapbox.util.mjs +0 -15
  601. package/esm2020/table/lib/date/daterange.table.cell.input.component.mjs +0 -166
  602. package/fesm2015/dereekb-dbx-web-calendar.mjs +0 -391
  603. package/fesm2015/dereekb-dbx-web-calendar.mjs.map +0 -1
  604. package/fesm2015/dereekb-dbx-web-mapbox.mjs +0 -1551
  605. package/fesm2015/dereekb-dbx-web-mapbox.mjs.map +0 -1
  606. package/fesm2015/dereekb-dbx-web-table.mjs +0 -745
  607. package/fesm2015/dereekb-dbx-web-table.mjs.map +0 -1
  608. package/fesm2015/dereekb-dbx-web.mjs +0 -9117
  609. package/fesm2015/dereekb-dbx-web.mjs.map +0 -1
  610. package/fesm2020/dereekb-dbx-web-calendar.mjs.map +0 -1
  611. package/fesm2020/dereekb-dbx-web-mapbox.mjs.map +0 -1
  612. package/fesm2020/dereekb-dbx-web-table.mjs.map +0 -1
  613. package/fesm2020/dereekb-dbx-web.mjs.map +0 -1
  614. package/mapbox/esm2020/lib/index.mjs +0 -22
  615. package/mapbox/esm2020/lib/mapbox.cdref.service.mjs +0 -30
  616. package/mapbox/esm2020/lib/mapbox.layout.component.mjs +0 -189
  617. package/mapbox/esm2020/lib/mapbox.marker.component.mjs +0 -139
  618. package/mapbox/esm2020/lib/mapbox.util.mjs +0 -15
  619. package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs +0 -1551
  620. package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs.map +0 -1
  621. package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs.map +0 -1
  622. package/mapbox/lib/mapbox.cdref.service.d.ts +0 -15
  623. package/table/esm2020/lib/date/daterange.table.cell.input.component.mjs +0 -166
  624. package/table/fesm2015/dereekb-dbx-web-table.mjs +0 -745
  625. package/table/fesm2015/dereekb-dbx-web-table.mjs.map +0 -1
  626. package/table/fesm2020/dereekb-dbx-web-table.mjs.map +0 -1
  627. /package/calendar/{esm2020 → esm2022}/dereekb-dbx-web-calendar.mjs +0 -0
  628. /package/calendar/{esm2020 → esm2022}/index.mjs +0 -0
  629. /package/calendar/{esm2020 → esm2022}/lib/calendar.mjs +0 -0
  630. /package/calendar/{esm2020 → esm2022}/lib/index.mjs +0 -0
  631. /package/{esm2020 → esm2022}/calendar/dereekb-dbx-web-calendar.mjs +0 -0
  632. /package/{esm2020 → esm2022}/calendar/index.mjs +0 -0
  633. /package/{esm2020 → esm2022}/calendar/lib/calendar.mjs +0 -0
  634. /package/{esm2020 → esm2022}/calendar/lib/index.mjs +0 -0
  635. /package/{esm2020 → esm2022}/dereekb-dbx-web.mjs +0 -0
  636. /package/{esm2020 → esm2022}/index.mjs +0 -0
  637. /package/{esm2020 → esm2022}/lib/action/index.mjs +0 -0
  638. /package/{esm2020 → esm2022}/lib/action/snackbar/action.snackbar.default.mjs +0 -0
  639. /package/{esm2020 → esm2022}/lib/action/snackbar/action.snackbar.generator.mjs +0 -0
  640. /package/{esm2020 → esm2022}/lib/action/snackbar/action.snackbar.mjs +0 -0
  641. /package/{esm2020 → esm2022}/lib/action/snackbar/index.mjs +0 -0
  642. /package/{esm2020 → esm2022}/lib/action/transition/index.mjs +0 -0
  643. /package/{esm2020 → esm2022}/lib/button/icon/index.mjs +0 -0
  644. /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
  645. /package/{esm2020 → esm2022}/lib/button/progress/index.mjs +0 -0
  646. /package/{esm2020 → esm2022}/lib/error/error.api.mjs +0 -0
  647. /package/{esm2020 → esm2022}/lib/error/index.mjs +0 -0
  648. /package/{esm2020 → esm2022}/lib/error/state.mjs +0 -0
  649. /package/{esm2020 → esm2022}/lib/extension/index.mjs +0 -0
  650. /package/{esm2020 → esm2022}/lib/extension/model/index.mjs +0 -0
  651. /package/{esm2020 → esm2022}/lib/extension/model/model.tracker.mjs +0 -0
  652. /package/{esm2020 → esm2022}/lib/extension/model/model.types.mjs +0 -0
  653. /package/{esm2020 → esm2022}/lib/extension/model/state/actions/actions.mjs +0 -0
  654. /package/{esm2020 → esm2022}/lib/extension/model/state/actions/index.mjs +0 -0
  655. /package/{esm2020 → esm2022}/lib/extension/model/state/actions/model.actions.mjs +0 -0
  656. /package/{esm2020 → esm2022}/lib/extension/model/state/index.mjs +0 -0
  657. /package/{esm2020 → esm2022}/lib/extension/model/state/reducers/index.mjs +0 -0
  658. /package/{esm2020 → esm2022}/lib/extension/model/state/reducers/model.module.config.mjs +0 -0
  659. /package/{esm2020 → esm2022}/lib/extension/model/state/state.mjs +0 -0
  660. /package/{esm2020 → esm2022}/lib/extension/structure/index.mjs +0 -0
  661. /package/{esm2020 → esm2022}/lib/extension/widget/index.mjs +0 -0
  662. /package/{esm2020 → esm2022}/lib/extension/widget/widget.mjs +0 -0
  663. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  664. /package/{esm2020 → esm2022}/lib/interaction/dialog/dialog.content.mjs +0 -0
  665. /package/{esm2020 → esm2022}/lib/interaction/dialog/index.mjs +0 -0
  666. /package/{esm2020 → esm2022}/lib/interaction/filter/filter.menu.mjs +0 -0
  667. /package/{esm2020 → esm2022}/lib/interaction/filter/index.mjs +0 -0
  668. /package/{esm2020 → esm2022}/lib/interaction/index.mjs +0 -0
  669. /package/{esm2020 → esm2022}/lib/interaction/popover/index.mjs +0 -0
  670. /package/{esm2020 → esm2022}/lib/interaction/popover/popover.mjs +0 -0
  671. /package/{esm2020 → esm2022}/lib/interaction/popover/popover.position.strategy.mjs +0 -0
  672. /package/{esm2020 → esm2022}/lib/interaction/popup/index.mjs +0 -0
  673. /package/{esm2020 → esm2022}/lib/interaction/popup/popup.mjs +0 -0
  674. /package/{esm2020 → esm2022}/lib/interaction/popup/popup.position.strategy.mjs +0 -0
  675. /package/{esm2020 → esm2022}/lib/interaction/prompt/index.mjs +0 -0
  676. /package/{esm2020 → esm2022}/lib/interaction/prompt/prompt.confirm.mjs +0 -0
  677. /package/{esm2020 → esm2022}/lib/keypress/index.mjs +0 -0
  678. /package/{esm2020 → esm2022}/lib/layout/bar/bar.mjs +0 -0
  679. /package/{esm2020 → esm2022}/lib/layout/bar/index.mjs +0 -0
  680. /package/{esm2020 → esm2022}/lib/layout/block/index.mjs +0 -0
  681. /package/{esm2020 → esm2022}/lib/layout/card/index.mjs +0 -0
  682. /package/{esm2020 → esm2022}/lib/layout/column/index.mjs +0 -0
  683. /package/{esm2020 → esm2022}/lib/layout/column/one/index.mjs +0 -0
  684. /package/{esm2020 → esm2022}/lib/layout/column/two/index.mjs +0 -0
  685. /package/{esm2020 → esm2022}/lib/layout/compact/compact.mjs +0 -0
  686. /package/{esm2020 → esm2022}/lib/layout/compact/index.mjs +0 -0
  687. /package/{esm2020 → esm2022}/lib/layout/content/index.mjs +0 -0
  688. /package/{esm2020 → esm2022}/lib/layout/flag/index.mjs +0 -0
  689. /package/{esm2020 → esm2022}/lib/layout/flex/flex.mjs +0 -0
  690. /package/{esm2020 → esm2022}/lib/layout/flex/index.mjs +0 -0
  691. /package/{esm2020 → esm2022}/lib/layout/index.mjs +0 -0
  692. /package/{esm2020 → esm2022}/lib/layout/item/index.mjs +0 -0
  693. /package/{esm2020 → esm2022}/lib/layout/list/index.mjs +0 -0
  694. /package/{esm2020 → esm2022}/lib/layout/list/list.track.mjs +0 -0
  695. /package/{esm2020 → esm2022}/lib/layout/list/list.view.mjs +0 -0
  696. /package/{esm2020 → esm2022}/lib/layout/list/list.view.value.mjs +0 -0
  697. /package/{esm2020 → esm2022}/lib/layout/list/list.view.value.modifier.mjs +0 -0
  698. /package/{esm2020 → esm2022}/lib/layout/list/list.wrapper.mjs +0 -0
  699. /package/{esm2020 → esm2022}/lib/layout/section/index.mjs +0 -0
  700. /package/{esm2020 → esm2022}/lib/layout/section/section.mjs +0 -0
  701. /package/{esm2020 → esm2022}/lib/layout/step/index.mjs +0 -0
  702. /package/{esm2020 → esm2022}/lib/layout/style/index.mjs +0 -0
  703. /package/{esm2020 → esm2022}/lib/layout/style/style.mjs +0 -0
  704. /package/{esm2020 → esm2022}/lib/layout/text/index.mjs +0 -0
  705. /package/{esm2020 → esm2022}/lib/loading/index.mjs +0 -0
  706. /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
  707. /package/{esm2020 → esm2022}/lib/router/layout/anchor/index.mjs +0 -0
  708. /package/{esm2020 → esm2022}/lib/router/layout/anchorlist/index.mjs +0 -0
  709. /package/{esm2020 → esm2022}/lib/router/layout/index.mjs +0 -0
  710. /package/{esm2020 → esm2022}/lib/router/layout/list/index.mjs +0 -0
  711. /package/{esm2020 → esm2022}/lib/router/layout/navbar/index.mjs +0 -0
  712. /package/{esm2020 → esm2022}/lib/router/layout/sidenav/index.mjs +0 -0
  713. /package/{esm2020 → esm2022}/lib/router/layout/sidenav/sidenav.mjs +0 -0
  714. /package/{esm2020 → esm2022}/lib/router/provider/index.mjs +0 -0
  715. /package/{esm2020 → esm2022}/lib/router/provider/ngrouter/index.mjs +0 -0
  716. /package/{esm2020 → esm2022}/lib/router/provider/router.provider.config.mjs +0 -0
  717. /package/{esm2020 → esm2022}/lib/router/provider/uirouter/index.mjs +0 -0
  718. /package/{esm2020 → esm2022}/lib/screen/index.mjs +0 -0
  719. /package/{esm2020 → esm2022}/lib/screen/screen.mjs +0 -0
  720. /package/{esm2020 → esm2022}/lib/util/cdk.mjs +0 -0
  721. /package/{esm2020 → esm2022}/lib/util/index.mjs +0 -0
  722. /package/{esm2020 → esm2022}/mapbox/dereekb-dbx-web-mapbox.mjs +0 -0
  723. /package/{esm2020 → esm2022}/mapbox/index.mjs +0 -0
  724. /package/{esm2020 → esm2022}/mapbox/lib/mapbox.marker.mjs +0 -0
  725. /package/{esm2020 → esm2022}/mapbox/lib/mapbox.mjs +0 -0
  726. /package/{esm2020 → esm2022}/mapbox/lib/mapbox.rxjs.mjs +0 -0
  727. /package/{esm2020 → esm2022}/mapbox/lib/options.mjs +0 -0
  728. /package/{esm2020 → esm2022}/table/dereekb-dbx-web-table.mjs +0 -0
  729. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  730. /package/{esm2020 → esm2022}/table/lib/date/index.mjs +0 -0
  731. /package/{esm2020 → esm2022}/table/lib/index.mjs +0 -0
  732. /package/{esm2020 → esm2022}/table/lib/table.mjs +0 -0
  733. /package/mapbox/{esm2020 → esm2022}/dereekb-dbx-web-mapbox.mjs +0 -0
  734. /package/mapbox/{esm2020 → esm2022}/index.mjs +0 -0
  735. /package/mapbox/{esm2020 → esm2022}/lib/mapbox.marker.mjs +0 -0
  736. /package/mapbox/{esm2020 → esm2022}/lib/mapbox.mjs +0 -0
  737. /package/mapbox/{esm2020 → esm2022}/lib/mapbox.rxjs.mjs +0 -0
  738. /package/mapbox/{esm2020 → esm2022}/lib/options.mjs +0 -0
  739. /package/table/{esm2020 → esm2022}/dereekb-dbx-web-table.mjs +0 -0
  740. /package/table/{esm2020 → esm2022}/index.mjs +0 -0
  741. /package/table/{esm2020 → esm2022}/lib/date/index.mjs +0 -0
  742. /package/table/{esm2020 → esm2022}/lib/index.mjs +0 -0
  743. /package/table/{esm2020 → esm2022}/lib/table.mjs +0 -0
@@ -477,7 +477,7 @@ export class DbxMapboxMapStore extends ComponentStore {
477
477
  }))));
478
478
  }
479
479
  calculateNextCenterOffsetWithScreenMarginChange(sizing) {
480
- // TODO: Consider calculating this using the viewport() function from @mapbox/geo-viewport
480
+ // TODO: Consider calculating this using the viewport() function from @placemarkio/geo-viewport
481
481
  return this.atNextIdle().pipe(switchMap(() => this.bound$.pipe(first(), map((bounds) => {
482
482
  const diff = diffLatLngBoundPoints(bounds, true);
483
483
  const center = latLngBoundCenterPoint(bounds);
@@ -517,13 +517,13 @@ export class DbxMapboxMapStore extends ComponentStore {
517
517
  const resizeFn = vectorMinimumSizeResizeFunction(minVector);
518
518
  return this.mapCanvasSize$.pipe(map((x) => resizeFn(x)), distinctUntilChanged(isSameVector), map((mapCanvasSize) => mapboxViewportBoundFunction({ mapCanvasSize })), shareReplay(1));
519
519
  }
520
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStore, deps: [{ token: DbxMapboxService }], target: i0.ɵɵFactoryTarget.Injectable }); }
521
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStore }); }
520
522
  }
521
- DbxMapboxMapStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStore, deps: [{ token: DbxMapboxService }], target: i0.ɵɵFactoryTarget.Injectable });
522
- DbxMapboxMapStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStore });
523
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStore, decorators: [{
523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStore, decorators: [{
524
524
  type: Injectable
525
525
  }], ctorParameters: function () { return [{ type: i1.DbxMapboxService, decorators: [{
526
526
  type: Inject,
527
527
  args: [DbxMapboxService]
528
528
  }] }]; } });
529
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9tYXBib3gvc3JjL2xpYi9tYXBib3guc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBRWpCLDJCQUEyQixFQUUzQixtQkFBbUIsRUFHbkIsbUJBQW1CLEVBR25CLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQiwrQkFBK0IsRUFDL0IsWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBb0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdOLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSwyQkFBMkIsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFtRSwyQkFBMkIsRUFBRSxNQUFN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LENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUN0RSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNKLENBQUM7OytHQWpwQlUsaUJBQWlCLGtCQUtSLGdCQUFnQjttSEFMekIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQU1JLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xlYW51cCwgZmlsdGVyTWF5YmUsIG9uVHJ1ZVRvRmFsc2UsIHRhcExvZyB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGlzU2FtZUxhdExuZ0JvdW5kLFxuICBpc1NhbWVMYXRMbmdQb2ludCxcbiAgSXNXaXRoaW5MYXRMbmdCb3VuZEZ1bmN0aW9uLFxuICBpc1dpdGhpbkxhdExuZ0JvdW5kRnVuY3Rpb24sXG4gIExhdExuZ0JvdW5kLFxuICBsYXRMbmdCb3VuZEZ1bmN0aW9uLFxuICBMYXRMbmdQb2ludElucHV0LFxuICBMYXRMbmdQb2ludCxcbiAgbGF0TG5nUG9pbnRGdW5jdGlvbixcbiAgTWF5YmUsXG4gIE92ZXJsYXBzTGF0TG5nQm91bmRGdW5jdGlvbixcbiAgb3ZlcmxhcHNMYXRMbmdCb3VuZEZ1bmN0aW9uLFxuICBkaWZmTGF0TG5nQm91bmRQb2ludHMsXG4gIGxhdExuZ0JvdW5kQ2VudGVyUG9pbnQsXG4gIGFkZExhdExuZ1BvaW50cyxcbiAgaXNEZWZhdWx0TGF0TG5nUG9pbnQsXG4gIHN3TW9zdExhdExuZ1BvaW50LFxuICBuZU1vc3RMYXRMbmdQb2ludCxcbiAgbGF0TG5nQm91bmRXcmFwc01hcCxcbiAgVmVjdG9yLFxuICB2ZWN0b3JzQXJlRXF1YWwsXG4gIGZpbHRlclVuZGVmaW5lZFZhbHVlcyxcbiAgbGF0TG5nQm91bmRGcm9tSW5wdXQsXG4gIHZlY3Rvck1pbmltdW1TaXplUmVzaXplRnVuY3Rpb24sXG4gIGlzU2FtZVZlY3RvcixcbiAgWm9vbUxldmVsXG59IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnO1xuaW1wb3J0IHsgTWFwU2VydmljZSB9IGZyb20gJ25neC1tYXBib3gtZ2wnO1xuaW1wb3J0IHsgZGVmYXVsdElmRW1wdHksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwLCBORVZFUiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgc3RhcnRXaXRoLCBpbnRlcnZhbCwgZmlyc3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBPcGVyYXRvckZ1bmN0aW9uLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIE1hcGJveEdsIGZyb20gJ21hcGJveC1nbCc7XG5pbXBvcnQgeyBEYnhNYXBib3hDbGlja0V2ZW50LCBLbm93bk1hcGJveFN0eWxlLCBNYXBib3hCZWFyaW5nLCBNYXBib3hFYXNlVG8sIE1hcGJveEZpdEJvdW5kcywgTWFwYm94Rml0UG9zaXRpb25zLCBNYXBib3hGbHlUbywgTWFwYm94SnVtcFRvLCBNYXBib3hSZXNldE5vcnRoLCBNYXBib3hSZXNldE5vcnRoUGl0Y2gsIE1hcGJveFJvdGF0ZVRvLCBNYXBib3hTbmFwVG9Ob3J0aCwgTWFwYm94U3R5bGVDb25maWcsIE1hcGJveFpvb21MZXZlbCwgTWFwYm94Wm9vbUxldmVsUmFuZ2UgfSBmcm9tICcuL21hcGJveCc7XG5pbXBvcnQgeyBEYnhNYXBib3hTZXJ2aWNlIH0gZnJvbSAnLi9tYXBib3guc2VydmljZSc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBtYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24sIE1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbiB9IGZyb20gJy4vbWFwYm94LnV0aWwnO1xuaW1wb3J0IHsgRmlsdGVyTWFwYm94Qm91bmRDb25maWcsIEZpbHRlck1hcGJveEJvdW5kUmVhZEl0ZW1WYWx1ZUZ1bmN0aW9uLCBmaWx0ZXJCeU1hcGJveFZpZXdwb3J0Qm91bmQgfSBmcm9tICcuL21hcGJveC5yeGpzJztcblxuZXhwb3J0IHR5cGUgTWFwYm94TWFwTGlmZWN5Y2xlU3RhdGUgPSAnaW5pdCcgfCAnbG9hZCcgfCAncmVuZGVyJyB8ICdpZGxlJztcbmV4cG9ydCB0eXBlIE1hcGJveE1hcE1vdmVTdGF0ZSA9ICdpbml0JyB8ICdpZGxlJyB8ICdtb3ZpbmcnO1xuZXhwb3J0IHR5cGUgTWFwYm94TWFwWm9vbVN0YXRlID0gJ2luaXQnIHwgJ2lkbGUnIHwgJ3pvb21pbmcnO1xuZXhwb3J0IHR5cGUgTWFwYm94TWFwUm90YXRlU3RhdGUgPSAnaW5pdCcgfCAnaWRsZScgfCAncm90YXRpbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ01hcGJveExpc3RlbmVyUGFpciB7XG4gIHR5cGU6IHN0cmluZztcbiAgbGlzdGVuZXI6IChldjogTWFwYm94R2wuRXZlbnREYXRhKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVkTWFwYm94TGlzdGVuZXJQYWlyPFQgZXh0ZW5kcyBrZXlvZiBNYXBib3hHbC5NYXBFdmVudFR5cGU+IHtcbiAgdHlwZTogVDtcbiAgbGlzdGVuZXI6IChldjogTWFwYm94R2wuTWFwRXZlbnRUeXBlW1RdICYgTWFwYm94R2wuRXZlbnREYXRhKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieE1hcGJveE1hcmdpbkNhbGN1bGF0aW9uU2l6aW5nIHtcbiAgbGVmdE1hcmdpbjogbnVtYmVyO1xuICByaWdodE1hcmdpbjogbnVtYmVyO1xuICBmdWxsV2lkdGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4TWFwYm94U3RvcmVCb3VuZFJlZnJlc2hUeXBlID0gJ2Fsd2F5cycgfCAnd2hlbl9ub3RfcmVuZGVyaW5nJyB8ICdvbmx5X2FmdGVyX3JlbmRlcl9maW5pc2hlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4TWFwYm94U3RvcmVCb3VuZFJlZnJlc2hTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBNYXggYm91bmQgcmVmcmVzaCBpbnRlcnZhbC5cbiAgICovXG4gIHRocm90dGxlOiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB3YWl0IHRvIHVwZGF0ZSB0aGUgYm91bmQgdW50aWwgYWZ0ZXIgaXQgaGFzIGZpbmlzaGVkIHJlbmRlcmluZy5cbiAgICovXG4gIHJlZnJlc2hUeXBlOiBEYnhNYXBib3hTdG9yZUJvdW5kUmVmcmVzaFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4TWFwYm94U3RvcmVTdGF0ZSB7XG4gIC8qKlxuICAgKiBDdXJyZW50IE1hcFNlcnZpY2UgYmVpbmcgdXRpbGl6ZWQuXG4gICAqL1xuICBtYXBTZXJ2aWNlPzogTWF5YmU8TWFwU2VydmljZT47XG4gIGxpZmVjeWNsZVN0YXRlOiBNYXBib3hNYXBMaWZlY3ljbGVTdGF0ZTtcbiAgbW92ZVN0YXRlOiBNYXBib3hNYXBNb3ZlU3RhdGU7XG4gIHpvb21TdGF0ZTogTWFwYm94TWFwWm9vbVN0YXRlO1xuICByb3RhdGVTdGF0ZTogTWFwYm94TWFwUm90YXRlU3RhdGU7XG4gIC8qKlxuICAgKiBWaXN1YWwgY29udGFpbmVyIHNpemUgb2YgdGhlIG1hcC5cbiAgICovXG4gIG1hcENhbnZhc1NpemU/OiBNYXliZTxWZWN0b3I+O1xuICAvKipcbiAgICogTGF0ZXN0IGNsaWNrIGV2ZW50XG4gICAqL1xuICBjbGlja0V2ZW50PzogTWF5YmU8RGJ4TWFwYm94Q2xpY2tFdmVudD47XG4gIC8qKlxuICAgKiBMYXRlc3QgZG91YmxlLWNsaWNrIGV2ZW50XG4gICAqL1xuICBkb3VibGVDbGlja0V2ZW50PzogTWF5YmU8RGJ4TWFwYm94Q2xpY2tFdmVudD47XG4gIC8qKlxuICAgKiBMYXRlc3QgY29udGV4dG1lbnUgZXZlbnQuXG4gICAqL1xuICByaWdodENsaWNrRXZlbnQ/OiBNYXliZTxEYnhNYXBib3hDbGlja0V2ZW50PjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHJldGFpbiBjb250ZW50IGJldHdlZW4gcmVzZXRzLlxuICAgKlxuICAgKiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZXRhaW5Db250ZW50OiBib29sZWFuO1xuICAvKipcbiAgICogQ3VzdG9tIGNvbnRlbnQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGNvbnRlbnQ/OiBNYXliZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc8dW5rbm93bj4+O1xuICAvKipcbiAgICogTGF0ZXN0IGVycm9yXG4gICAqL1xuICBlcnJvcj86IE1heWJlPEVycm9yPjtcbiAgLyoqXG4gICAqIE1hcCBtYXJnaW4vb2Zmc2V0XG4gICAqL1xuICBtYXJnaW4/OiBNYXliZTxEYnhNYXBib3hNYXJnaW5DYWxjdWxhdGlvblNpemluZz47XG4gIC8qKlxuICAgKiBNaW5pbXVtIHZlY3RvciBzaXplIHRvIHVzZSBmb3IgdGhlIHZpZXdwb3J0Qm91bmRGdW5jdGlvbiQuIElmIG5vdCBkZWZpbmVkIHRoZXJlIGlzIG5vIG1pbmltdW0uXG4gICAqL1xuICBtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZT86IE1heWJlPFBhcnRpYWw8VmVjdG9yPj47XG4gIC8qKlxuICAgKiBCb3VuZCByZWZyZXNoIHNldHRpbmdzXG4gICAqL1xuICBib3VuZFJlZnJlc2hTZXR0aW5nczogRGJ4TWFwYm94U3RvcmVCb3VuZFJlZnJlc2hTZXR0aW5ncztcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgdmlydHVhbCBib3VuZCAodnMgcmF3IGJvdW5kKSBmb3IgYWxsIGJvdW5kLXJlbGF0ZWQgb2JzZXJ2YWJsZXMuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICB1c2VWaXJ0dWFsQm91bmQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogU3RvcmUgdXNlZCBmb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbi5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieE1hcGJveE1hcFN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8RGJ4TWFwYm94U3RvcmVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNhZmVMYXRMbmdQb2ludCA9IGxhdExuZ1BvaW50RnVuY3Rpb24oeyB3cmFwOiB0cnVlIH0pO1xuICBwcml2YXRlIGxhdExuZ1BvaW50ID0gbGF0TG5nUG9pbnRGdW5jdGlvbih7IHdyYXA6IGZhbHNlLCB2YWxpZGF0ZTogZmFsc2UgfSk7XG4gIHByaXZhdGUgbGF0TG5nQm91bmQgPSBsYXRMbmdCb3VuZEZ1bmN0aW9uKHsgcG9pbnRGdW5jdGlvbjogdGhpcy5sYXRMbmdQb2ludCB9KTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERieE1hcGJveFNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgZGJ4TWFwYm94U2VydmljZTogRGJ4TWFwYm94U2VydmljZSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGxpZmVjeWNsZVN0YXRlOiAnaW5pdCcsXG4gICAgICBtb3ZlU3RhdGU6ICdpbml0JyxcbiAgICAgIHpvb21TdGF0ZTogJ2luaXQnLFxuICAgICAgcm90YXRlU3RhdGU6ICdpbml0JyxcbiAgICAgIHJldGFpbkNvbnRlbnQ6IHRydWUsXG4gICAgICB1c2VWaXJ0dWFsQm91bmQ6IHRydWUsXG4gICAgICBib3VuZFJlZnJlc2hTZXR0aW5nczoge1xuICAgICAgICB0aHJvdHRsZTogMzAwLFxuICAgICAgICByZWZyZXNoVHlwZTogJ2Fsd2F5cydcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIE1BUks6IEVmZmVjdHNcbiAgcmVhZG9ubHkgc2V0TWFwU2VydmljZSA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxNYXBTZXJ2aWNlPj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoc2VydmljZTogTWF5YmU8TWFwU2VydmljZT4pID0+IHtcbiAgICAgICAgdGhpcy5fc2V0TWFwU2VydmljZShzZXJ2aWNlKTtcblxuICAgICAgICBpZiAoIXNlcnZpY2UpIHtcbiAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHNlcnZpY2UubWFwTG9hZGVkJC5waXBlKFxuICAgICAgICAgICAgZGVmYXVsdElmRW1wdHkodW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX3NldExpZmVjeWNsZVN0YXRlKCdpZGxlJyk7XG4gICAgICAgICAgICAgIHRoaXMuX3NldE1vdmVTdGF0ZSgnaWRsZScpO1xuICAgICAgICAgICAgICB0aGlzLl9zZXRab29tU3RhdGUoJ2lkbGUnKTtcbiAgICAgICAgICAgICAgdGhpcy5fc2V0Um90YXRlU3RhdGUoJ2lkbGUnKTtcblxuICAgICAgICAgICAgICBjb25zdCBtYXAgPSBzZXJ2aWNlLm1hcEluc3RhbmNlO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyUGFpcnM6IFN0cmluZ01hcGJveExpc3RlbmVyUGFpcltdID0gW107XG5cbiAgICAgICAgICAgICAgZnVuY3Rpb24gYWRkTGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIE1hcGJveEdsLk1hcEV2ZW50VHlwZT4odHlwZTogVCwgbGlzdGVuZXI6IChldjogTWFwYm94R2wuTWFwRXZlbnRUeXBlW1RdICYgTWFwYm94R2wuRXZlbnREYXRhKSA9PiB2b2lkKSB7XG4gICAgICAgICAgICAgICAgbWFwLm9uKHR5cGUsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lclBhaXJzLnB1c2goeyB0eXBlLCBsaXN0ZW5lciB9IGFzIFN0cmluZ01hcGJveExpc3RlbmVyUGFpcik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignaWRsZScsICgpID0+IHRoaXMuX3NldExpZmVjeWNsZVN0YXRlKCdpZGxlJykpO1xuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcigncmVuZGVyJywgKCkgPT4gdGhpcy5fc2V0TGlmZWN5Y2xlU3RhdGUoJ3JlbmRlcicpKTtcbiAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ2Vycm9yJywgKHgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRFcnJvcih4LmVycm9yKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ21vdmVzdGFydCcsICgpID0+IHRoaXMuX3NldE1vdmVTdGF0ZSgnbW92aW5nJykpO1xuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignbW92ZWVuZCcsICgpID0+IHRoaXMuX3NldE1vdmVTdGF0ZSgnaWRsZScpKTtcblxuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignem9vbXN0YXJ0JywgKCkgPT4gdGhpcy5fc2V0Wm9vbVN0YXRlKCd6b29taW5nJykpO1xuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignem9vbWVuZCcsICgpID0+IHRoaXMuX3NldFpvb21TdGF0ZSgnaWRsZScpKTtcblxuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcigncm90YXRlc3RhcnQnLCAoKSA9PiB0aGlzLl9zZXRSb3RhdGVTdGF0ZSgncm90YXRpbmcnKSk7XG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdyb3RhdGVlbmQnLCAoKSA9PiB0aGlzLl9zZXRSb3RhdGVTdGF0ZSgnaWRsZScpKTtcblxuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignY2xpY2snLCAoeCkgPT4gdGhpcy5fc2V0Q2xpY2tFdmVudCh4KSk7XG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdkYmxjbGljaycsICh4KSA9PiB0aGlzLl9zZXREb3VibGVDbGlja0V2ZW50KHgpKTtcbiAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKHgpID0+IHRoaXMuX3NldFJpZ2h0Q2xpY2tFdmVudCh4KSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgcmVmcmVzaEZvclJlc2l6ZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNsaWVudFdpZHRoOiB4LCBjbGllbnRIZWlnaHQ6IHkgfSA9IG1hcC5nZXRDYW52YXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRNYXBDYW52YXNTaXplKHsgeCwgeSB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcigncmVzaXplJywgcmVmcmVzaEZvclJlc2l6ZSk7XG4gICAgICAgICAgICAgIHJlZnJlc2hGb3JSZXNpemUoKTtcblxuICAgICAgICAgICAgICBjb25zdCBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2VydmljZSxcbiAgICAgICAgICAgICAgICBsaXN0ZW5lclBhaXJzLFxuICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBjbGVhbnVwKCh7IHNlcnZpY2UsIGxpc3RlbmVyUGFpcnMsIHN1YnMgfSkgPT4ge1xuICAgICAgICBjb25zdCBtYXAgPSBzZXJ2aWNlLm1hcEluc3RhbmNlO1xuXG4gICAgICAgIGlmIChtYXApIHtcbiAgICAgICAgICBsaXN0ZW5lclBhaXJzLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIG1hcC5vZmYoeC50eXBlLCB4Lmxpc3RlbmVyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldFN0eWxlID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveFN0eWxlQ29uZmlnIHwgS25vd25NYXBib3hTdHlsZSB8IHN0cmluZz4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoc3R5bGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgICAgdGFwKChtYXApID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIG1hcC5zZXRTdHlsZShzdHlsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXAuc2V0U3R5bGUoc3R5bGUuc3R5bGUsIHN0eWxlLm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldENlbnRlciA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludElucHV0PikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjZW50ZXI6IExhdExuZ1BvaW50SW5wdXQpID0+IHtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSB0aGlzLnNhZmVMYXRMbmdQb2ludChjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnNldENlbnRlcihjZW50ZXJQb2ludCkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0Wm9vbSA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXBib3hab29tTGV2ZWw+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHpvb206IE1hcGJveFpvb21MZXZlbCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnNldFpvb20oem9vbSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0Wm9vbVJhbmdlID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPFBhcnRpYWw8TWFwYm94Wm9vbUxldmVsUmFuZ2U+PikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh6b29tUmFuZ2U6IFBhcnRpYWw8TWFwYm94Wm9vbUxldmVsUmFuZ2U+KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICAgIHRhcCgobWFwKSA9PiB7XG4gICAgICAgICAgICBtYXAuc2V0TWluWm9vbSh6b29tUmFuZ2UubWluIHx8IG51bGwpO1xuICAgICAgICAgICAgbWFwLnNldE1heFpvb20oem9vbVJhbmdlLm1heCB8fCBudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRNaW5ab29tID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveFpvb21MZXZlbD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoem9vbTogTWFwYm94Wm9vbUxldmVsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuc2V0TWluWm9vbSh6b29tKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRNYXhab29tID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveFpvb21MZXZlbD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoem9vbTogTWFwYm94Wm9vbUxldmVsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuc2V0TWF4Wm9vbSh6b29tKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRLZXlib2FyZERpc2FibGVkID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPGJvb2xlYW4+IHwgdm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+IHwgdm9pZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgICB0YXAoKG1hcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBtYXAua2V5Ym9hcmQuZW5hYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXAua2V5Ym9hcmQuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldERyYWdSb3RhdGVEaXNhYmxlZCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxib29sZWFuPiB8IHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGRpc2FibGVkOiBNYXliZTxib29sZWFuPiB8IHZvaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgICAgdGFwKChtYXApID0+IHtcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgbWFwLmRyYWdSb3RhdGUuZW5hYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXAuZHJhZ1JvdGF0ZS5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0RHJhZ1BhbkRpc2FibGVkID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPGJvb2xlYW4+IHwgdm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+IHwgdm9pZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgICB0YXAoKG1hcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBtYXAuZHJhZ1Bhbi5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hcC5kcmFnUGFuLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRab29tRGlzYWJsZWQgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8Ym9vbGVhbj4gfCB2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChkaXNhYmxlZDogTWF5YmU8Ym9vbGVhbj4gfCB2b2lkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICAgIHRhcCgobWFwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG1hcC5zY3JvbGxab29tLmVuYWJsZSgpO1xuICAgICAgICAgICAgICBtYXAuZG91YmxlQ2xpY2tab29tLmVuYWJsZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWFwLnNjcm9sbFpvb20uZGlzYWJsZSgpO1xuICAgICAgICAgICAgICBtYXAuZG91YmxlQ2xpY2tab29tLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRQaXRjaCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxudW1iZXI+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHBpdGNoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuc2V0UGl0Y2gocGl0Y2gpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldE1pblBpdGNoID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPG51bWJlcj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocGl0Y2g6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnNldE1pblBpdGNoKHBpdGNoKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRNYXhQaXRjaCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxudW1iZXI+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHBpdGNoOiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5zZXRNYXhQaXRjaChwaXRjaCkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0QmVhcmluZyA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxudW1iZXI+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGJlYXJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5zZXRCZWFyaW5nKGJlYXJpbmcpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJvdGF0ZVRvID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveEJlYXJpbmcgfCBNYXBib3hSb3RhdGVUbz4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocm90YXRlSW5wdXQ6IE1hcGJveEJlYXJpbmcgfCBNYXBib3hSb3RhdGVUbykgPT4ge1xuICAgICAgICBjb25zdCByb3RhdGU6IE1hcGJveFJvdGF0ZVRvID0gdHlwZW9mIHJvdGF0ZUlucHV0ID09PSAnbnVtYmVyJyA/IHsgYmVhcmluZzogcm90YXRlSW5wdXQgfSA6IHJvdGF0ZUlucHV0O1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnJvdGF0ZVRvKHJvdGF0ZS5iZWFyaW5nLCByb3RhdGUub3B0aW9ucywgcm90YXRlPy5ldmVudERhdGEpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJlc2V0Tm9ydGggPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8TWFwYm94UmVzZXROb3J0aD4gfCB2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNldDogTWF5YmU8TWFwYm94UmVzZXROb3J0aD4gfCB2b2lkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAucmVzZXROb3J0aChyZXNldD8ub3B0aW9ucywgcmVzZXQ/LmV2ZW50RGF0YSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmVzZXROb3J0aFBpdGNoID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPE1hcGJveFJlc2V0Tm9ydGhQaXRjaD4gfCB2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNldDogTWF5YmU8TWFwYm94UmVzZXROb3J0aFBpdGNoPiB8IHZvaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5yZXNldE5vcnRoUGl0Y2gocmVzZXQ/Lm9wdGlvbnMsIHJlc2V0Py5ldmVudERhdGEpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNuYXBUb05vcnRoID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPE1hcGJveFNuYXBUb05vcnRoPiB8IHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHNuYXA6IE1heWJlPE1hcGJveFNuYXBUb05vcnRoPiB8IHZvaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5zbmFwVG9Ob3J0aChzbmFwPy5vcHRpb25zLCBzbmFwPy5ldmVudERhdGEpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZpdFBvc2l0aW9ucyA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXBib3hGaXRQb3NpdGlvbnM+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgICAgY29uc3QgYm91bmRGcm9tSW5wdXQgPSBsYXRMbmdCb3VuZEZyb21JbnB1dCh4LnBvc2l0aW9ucyk7XG5cbiAgICAgICAgaWYgKGJvdW5kRnJvbUlucHV0KSB7XG4gICAgICAgICAgY29uc3QgYm91bmQgPSB0aGlzLmxhdExuZ0JvdW5kKGJvdW5kRnJvbUlucHV0KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLmZpdEJvdW5kcyhuZXcgTWFwYm94R2wuTG5nTGF0Qm91bmRzKGJvdW5kLnN3LCBib3VuZC5uZSksIHgub3B0aW9ucywgeC5ldmVudERhdGEpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZpdEJvdW5kcyA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXBib3hGaXRCb3VuZHM+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgICAgY29uc3QgYm91bmQgPSB0aGlzLmxhdExuZ0JvdW5kKHguYm91bmRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5maXRCb3VuZHMobmV3IE1hcGJveEdsLkxuZ0xhdEJvdW5kcyhib3VuZC5zdywgYm91bmQubmUpLCB4Lm9wdGlvbnMsIHguZXZlbnREYXRhKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBqdW1wVG8gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94SnVtcFRvPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0Q2VudGVyID0geC5jZW50ZXIgPz8geC50bz8uY2VudGVyO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBpbnB1dENlbnRlciA/IHRoaXMuc2FmZUxhdExuZ1BvaW50KGlucHV0Q2VudGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5qdW1wVG8oZmlsdGVyVW5kZWZpbmVkVmFsdWVzKHsgLi4ueC50bywgY2VudGVyIH0pLCB4LmV2ZW50RGF0YSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZWFzZVRvID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveEVhc2VUbz4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dENlbnRlciA9IHguY2VudGVyID8/IHgudG8/LmNlbnRlcjtcbiAgICAgICAgY29uc3QgY2VudGVyID0gaW5wdXRDZW50ZXIgPyB0aGlzLnNhZmVMYXRMbmdQb2ludChpbnB1dENlbnRlcikgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuZWFzZVRvKGZpbHRlclVuZGVmaW5lZFZhbHVlcyh7IC4uLngudG8sIGNlbnRlciB9KSwgeC5ldmVudERhdGEpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZseVRvID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveEZseVRvPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0Q2VudGVyID0geC5jZW50ZXIgPz8geC50bz8uY2VudGVyO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBpbnB1dENlbnRlciA/IHRoaXMuc2FmZUxhdExuZ1BvaW50KGlucHV0Q2VudGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5mbHlUbyhmaWx0ZXJVbmRlZmluZWRWYWx1ZXMoeyAuLi54LnRvLCBjZW50ZXIgfSksIHguZXZlbnREYXRhKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSByZXNldFBpdGNoQW5kQmVhcmluZyA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTx2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgICAgdGFwKChtYXApID0+IHtcbiAgICAgICAgICAgIG1hcC5zZXRQaXRjaCgwKTtcbiAgICAgICAgICAgIG1hcC5zZXRCZWFyaW5nKDApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIC8vIE1BUks6IEFjY2Vzc29yc1xuICBnZXQgdGltZXJSZWZyZXNoUGVyaW9kKCkge1xuICAgIHJldHVybiB0aGlzLmRieE1hcGJveFNlcnZpY2UubWFwYm94TWFwU3RvcmVUaW1lclJlZnJlc2hQZXJpb2Q7XG4gIH1cblxuICBtb3ZpbmdUaW1lcihwZXJpb2QgPSB0aGlzLnRpbWVyUmVmcmVzaFBlcmlvZCkge1xuICAgIHJldHVybiB0aGlzLm1vdmVTdGF0ZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAoeCA9PT0gJ21vdmluZycpIHtcbiAgICAgICAgICByZXR1cm4gaW50ZXJ2YWwocGVyaW9kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoMCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgbGlmZWN5Y2xlUmVuZGVyVGltZXIocGVyaW9kID0gdGhpcy50aW1lclJlZnJlc2hQZXJpb2QpIHtcbiAgICByZXR1cm4gdGhpcy5saWZlY3ljbGVTdGF0ZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAoeCA9PT0gJ3JlbmRlcicpIHtcbiAgICAgICAgICByZXR1cm4gaW50ZXJ2YWwocGVyaW9kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoMCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgYXROZXh0SWRsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tb3ZlU3RhdGUkLnBpcGUoXG4gICAgICBtYXAoKHgpID0+IHggPT09ICdpZGxlJyksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZU5leHRDZW50ZXJXaXRoT2Zmc2V0KGlucHV0T2Zmc2V0OiBMYXRMbmdQb2ludElucHV0KTogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4ge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMubGF0TG5nUG9pbnQoaW5wdXRPZmZzZXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuYXROZXh0SWRsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5jZW50ZXIkLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICBtYXAoKGNlbnRlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Q2VudGVyID0ge1xuICAgICAgICAgICAgICBsYXQ6IG9mZnNldC5sYXQgKyBjZW50ZXIubGF0LFxuICAgICAgICAgICAgICBsbmc6IG9mZnNldC5sbmcgKyBjZW50ZXIubG5nXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIG5ld0NlbnRlcjtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZU5leHRDZW50ZXJPZmZzZXRXaXRoU2NyZWVuTWFyZ2luQ2hhbmdlKHNpemluZzogRGJ4TWFwYm94TWFyZ2luQ2FsY3VsYXRpb25TaXppbmcpOiBPYnNlcnZhYmxlPExhdExuZ1BvaW50PiB7XG4gICAgLy8gVE9ETzogQ29uc2lkZXIgY2FsY3VsYXRpbmcgdGhpcyB1c2luZyB0aGUgdmlld3BvcnQoKSBmdW5jdGlvbiBmcm9tIEBtYXBib3gvZ2VvLXZpZXdwb3J0XG4gICAgcmV0dXJuIHRoaXMuYXROZXh0SWRsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5ib3VuZCQucGlwZShcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIG1hcCgoYm91bmRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gZGlmZkxhdExuZ0JvdW5kUG9pbnRzKGJvdW5kcywgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBsYXRMbmdCb3VuZENlbnRlclBvaW50KGJvdW5kcyk7XG5cbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFdpZHRoID0gc2l6aW5nLmxlZnRNYXJnaW4gKyBzaXppbmcucmlnaHRNYXJnaW47IC8vIDMwMCArIDBcbiAgICAgICAgICAgIGNvbnN0IG5ld1dpZHRoID0gc2l6aW5nLmZ1bGxXaWR0aCAtIG9mZnNldFdpZHRoOyAvLyAxMDAwIC0gMzAwIC0gMFxuICAgICAgICAgICAgY29uc3QgbmV3V2lkdGhSYXRpbyA9IG5ld1dpZHRoIC8gc2l6aW5nLmZ1bGxXaWR0aDsgLy8gNzAwIC8gMTAwMFxuICAgICAgICAgICAgY29uc3QgbmV3Q2VudGVyTG9uZ2l0dWRlV2lkdGggPSBkaWZmLmxuZyAqIG5ld1dpZHRoUmF0aW87IC8vIDcwJSBvZmZzZXRcblxuICAgICAgICAgICAgY29uc3QgZWZmZWN0aXZlT2Zmc2V0OiBMYXRMbmdQb2ludCA9IHtcbiAgICAgICAgICAgICAgbGF0OiAwLFxuICAgICAgICAgICAgICBsbmc6IG5ld0NlbnRlckxvbmdpdHVkZVdpZHRoIC8gMlxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgbmV3Q2VudGVyID0gYWRkTGF0TG5nUG9pbnRzKGJvdW5kcy5zdywgZWZmZWN0aXZlT2Zmc2V0KTtcbiAgICAgICAgICAgIG5ld0NlbnRlci5sYXQgPSBjZW50ZXIubGF0OyAvLyByZXRhaW4gY2VudGVyIHBvc2l0aW9uXG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHsgc2l6aW5nLCBib3VuZHMsIGVmZmVjdGl2ZU9mZnNldCwgbmV3V2lkdGgsIG9mZnNldFdpZHRoLCBkaWZmLCBjZW50ZXIsIG5ld0NlbnRlciB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ld0NlbnRlcjtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGZpbHRlckJ5Vmlld3BvcnRCb3VuZDxUPihpbnB1dDogRmlsdGVyTWFwYm94Qm91bmRSZWFkSXRlbVZhbHVlRnVuY3Rpb248VD4gfCBPbWl0PEZpbHRlck1hcGJveEJvdW5kQ29uZmlnPFQ+LCAnYm91bmRGdW5jdGlvbk9icycgfCAnYm91bmREZWNpc2lvbk9icyc+KTogT3BlcmF0b3JGdW5jdGlvbjxUW10sIFRbXT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpbnB1dCA9PT0gJ2Z1bmN0aW9uJyA/IHsgcmVhZFZhbHVlOiBpbnB1dCB9IDogaW5wdXQ7XG5cbiAgICByZXR1cm4gZmlsdGVyQnlNYXBib3hWaWV3cG9ydEJvdW5kKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGJvdW5kRnVuY3Rpb25PYnM6IHRoaXMudmlld3BvcnRCb3VuZEZ1bmN0aW9uJCxcbiAgICAgIGJvdW5kRGVjaXNpb25PYnM6IHRoaXMub3ZlcmxhcHNCb3VuZEZ1bmN0aW9uJFxuICAgIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgY3VycmVudE1hcFNlcnZpY2UkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubWFwU2VydmljZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1hcFNlcnZpY2UkID0gdGhpcy5jdXJyZW50TWFwU2VydmljZSQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50TWFwSW5zdGFuY2UkOiBPYnNlcnZhYmxlPE1heWJlPE1hcGJveEdsLk1hcD4+ID0gdGhpcy5jdXJyZW50TWFwU2VydmljZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGN1cnJlbnRNYXBTZXJ2aWNlOiBNYXliZTxNYXBTZXJ2aWNlPikgPT4ge1xuICAgICAgaWYgKGN1cnJlbnRNYXBTZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50TWFwU2VydmljZS5tYXBMb2FkZWQkLnBpcGUoXG4gICAgICAgICAgZGVmYXVsdElmRW1wdHkodW5kZWZpbmVkKSxcbiAgICAgICAgICBtYXAoKCkgPT4gY3VycmVudE1hcFNlcnZpY2UubWFwSW5zdGFuY2UpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbWFwSW5zdGFuY2UkID0gdGhpcy5jdXJyZW50TWFwSW5zdGFuY2UkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgYm91bmRSZWZyZXNoU2V0dGluZ3MkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguYm91bmRSZWZyZXNoU2V0dGluZ3MpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbW92ZVN0YXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1vdmVTdGF0ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGxpZmVjeWNsZVN0YXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmxpZmVjeWNsZVN0YXRlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgem9vbVN0YXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lnpvb21TdGF0ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHJvdGF0ZVN0YXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnJvdGF0ZVN0YXRlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQgPSB0aGlzLmN1cnJlbnRNYXBJbnN0YW5jZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgIGlmICgheCkge1xuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMubW92ZVN0YXRlJC5waXBlKG1hcCgoeCkgPT4geCA9PT0gJ2lkbGUnKSksIHRoaXMubGlmZWN5Y2xlU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4ID09PSAnaWRsZScpKV0pLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChbbSwgbF0pID0+IG0gJiYgbCksXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHdoZW5Jbml0aWFsaXplZCQgPSB0aGlzLmlzSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgZmlsdGVyKCh4KSA9PiB0cnVlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzUmVuZGVyaW5nJCA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5saWZlY3ljbGVTdGF0ZSQucGlwZShcbiAgICAgICAgbWFwKCh4KSA9PiB4ID09PSAncmVuZGVyJyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzTW92aW5nJCA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5tb3ZlU3RhdGUkLnBpcGUoXG4gICAgICAgIG1hcCgoeCkgPT4geCA9PT0gJ21vdmluZycpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSBpc1pvb21pbmckID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLnpvb21TdGF0ZSQucGlwZShcbiAgICAgICAgbWFwKCh4KSA9PiB4ID09PSAnem9vbWluZycpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSBpc1JvdGF0aW5nJCA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5yb3RhdGVTdGF0ZSQucGlwZShcbiAgICAgICAgbWFwKCh4KSA9PiB4ID09PSAncm90YXRpbmcnKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbW92aW5nVGltZXIgPSB0aGlzLm1vdmluZ1RpbWVyKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmluZ1RpbWVyID0gdGhpcy5saWZlY3ljbGVSZW5kZXJUaW1lcigpO1xuXG4gIHJlYWRvbmx5IGNlbnRlck5vdyQ6IE9ic2VydmFibGU8TGF0TG5nUG9pbnQ+ID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHgpID0+IHRoaXMuX21vdmluZ1RpbWVyLnBpcGUobWFwKCgpID0+IHRoaXMubGF0TG5nUG9pbnQoeC5nZXRDZW50ZXIoKSkpKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNlbnRlciQ6IE9ic2VydmFibGU8TGF0TG5nUG9pbnQ+ID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmlzTW92aW5nJC5waXBlKFxuICAgICAgICBvblRydWVUb0ZhbHNlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jZW50ZXJOb3ckLnBpcGUoZmlyc3QoKSkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxMYXRMbmdQb2ludD4oaXNTYW1lTGF0TG5nUG9pbnQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVWZWN0b3IpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudE1hcENhbnZhc1NpemUkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubWFwQ2FudmFzU2l6ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8TWF5YmU8VmVjdG9yPj4oaXNTYW1lVmVjdG9yKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFwIGNhbnZhcyBzaXplIHdpdGggY29uc2lkZXJhdGlvbiB0byB0aGUgdmlydHVhbCB2aWV3cG9ydCBzaXplLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFwQ2FudmFzU2l6ZSQgPSB0aGlzLmN1cnJlbnRNYXBDYW52YXNTaXplJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIG1pbmltdW1NYXBDYW52YXNTaXplKG1pblZlY3RvcjogUGFydGlhbDxWZWN0b3I+KTogT2JzZXJ2YWJsZTxWZWN0b3I+IHtcbiAgICBjb25zdCByZXNpemVGbiA9IHZlY3Rvck1pbmltdW1TaXplUmVzaXplRnVuY3Rpb24obWluVmVjdG9yKTtcbiAgICByZXR1cm4gdGhpcy5tYXBDYW52YXNTaXplJC5waXBlKFxuICAgICAgbWFwKCh4KSA9PiByZXNpemVGbih4KSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxWZWN0b3I+KGlzU2FtZVZlY3RvciksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1hcCBjYW52YXMgc2l6ZSB3aXRoIGNvbnNpZGVyYXRpb24gdG8gdGhlIHZpcnR1YWwgdmlld3BvcnQgc2l6ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZpcnR1YWxNYXBDYW52YXNTaXplJCA9IHRoaXMubWluaW11bVZpcnR1YWxWaWV3cG9ydFNpemUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSkgPT4ge1xuICAgICAgaWYgKG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbmltdW1NYXBDYW52YXNTaXplKG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcENhbnZhc1NpemUkO1xuICAgICAgfVxuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPFZlY3Rvcj4oaXNTYW1lVmVjdG9yKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHJhd1ZpZXdwb3J0Qm91bmRGdW5jdGlvbiQ6IE9ic2VydmFibGU8TWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uPiA9IHRoaXMubWFwQ2FudmFzU2l6ZSQucGlwZShcbiAgICBtYXAoKG1hcENhbnZhc1NpemUpID0+IG1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbih7IG1hcENhbnZhc1NpemUgfSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24gb2JzZXJ2YWJsZSB0aGF0IHJldHVybnMgdGhlIG1pbmltdW0gdmlld3BvcnQgc2l6ZS5cbiAgICpcbiAgICogQHBhcmFtIG1pblZlY3RvclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdmlld3BvcnRCb3VuZEZ1bmN0aW9uV2l0aE1pbmltdW1TaXplKG1pblZlY3RvcjogUGFydGlhbDxWZWN0b3I+KTogT2JzZXJ2YWJsZTxNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24+IHtcbiAgICBjb25zdCByZXNpemVGbiA9IHZlY3Rvck1pbmltdW1TaXplUmVzaXplRnVuY3Rpb24obWluVmVjdG9yKTtcbiAgICByZXR1cm4gdGhpcy5tYXBDYW52YXNTaXplJC5waXBlKFxuICAgICAgbWFwKCh4KSA9PiByZXNpemVGbih4KSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxWZWN0b3I+KGlzU2FtZVZlY3RvciksXG4gICAgICBtYXAoKG1hcENhbnZhc1NpemUpID0+IG1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbih7IG1hcENhbnZhc1NpemUgfSkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgcmVhZG9ubHkgdmlld3BvcnRCb3VuZEZ1bmN0aW9uJDogT2JzZXJ2YWJsZTxNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24+ID0gdGhpcy5taW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplKSA9PiB7XG4gICAgICBpZiAobWluaW11bVZpcnR1YWxWaWV3cG9ydFNpemUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRCb3VuZEZ1bmN0aW9uV2l0aE1pbmltdW1TaXplKG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd1ZpZXdwb3J0Qm91bmRGdW5jdGlvbiQ7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB2aXJ0dWFsQm91bmQkOiBPYnNlcnZhYmxlPExhdExuZ0JvdW5kPiA9IHRoaXMudmlld3BvcnRCb3VuZEZ1bmN0aW9uJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoZm4pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmJvdW5kUmVmcmVzaFNldHRpbmdzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyB0aHJvdHRsZTogdGhyb3R0bGVNcywgcmVmcmVzaFR5cGUgfSA9IHNldHRpbmdzO1xuXG4gICAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxbTGF0TG5nUG9pbnQsIFpvb21MZXZlbF0+O1xuXG4gICAgICAgICAgc3dpdGNoIChyZWZyZXNoVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYWx3YXlzJzpcbiAgICAgICAgICAgICAgb2JzID0gY29tYmluZUxhdGVzdChbdGhpcy5jZW50ZXJOb3ckLCB0aGlzLnpvb21Ob3ckXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2hlbl9ub3RfcmVuZGVyaW5nJzpcbiAgICAgICAgICAgIGNhc2UgJ29ubHlfYWZ0ZXJfcmVuZGVyX2ZpbmlzaGVzJzpcbiAgICAgICAgICAgICAgb2JzID0gdGhpcy5ib3VuZCQucGlwZShzd2l0Y2hNYXAoKCkgPT4gY29tYmluZUxhdGVzdChbdGhpcy5jZW50ZXJOb3ckLCB0aGlzLnpvb21Ob3ckXSkpKTsgLy8gcmVmcmVzaCB3aGVuZXZlciB0aGUgYm91bmQgcmVmcmVzaGVzXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnMucGlwZShcbiAgICAgICAgICAgIHRocm90dGxlVGltZSh0aHJvdHRsZU1zLCB1bmRlZmluZWQsIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICAgICAgICBtYXAoKFtjZW50ZXIsIHpvb21dKSA9PlxuICAgICAgICAgICAgICBmbih7XG4gICAgICAgICAgICAgICAgY2VudGVyLFxuICAgICAgICAgICAgICAgIHpvb21cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVMYXRMbmdCb3VuZCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtYXJnaW4kID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubWFyZ2luKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYSAhPSBudWxsICYmIGIgIT0gbnVsbCAmJiBhLmZ1bGxXaWR0aCA9PT0gYi5mdWxsV2lkdGggJiYgYS5sZWZ0TWFyZ2luID09PSBiLmxlZnRNYXJnaW4gJiYgYS5yaWdodE1hcmdpbiA9PT0gYi5yaWdodE1hcmdpbiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSByZXZlcnNlTWFyZ2luJCA9IHRoaXMubWFyZ2luJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgaWYgKHgpIHtcbiAgICAgICAgcmV0dXJuIHsgbGVmdE1hcmdpbjogLXgubGVmdE1hcmdpbiwgcmlnaHRNYXJnaW46IC14LnJpZ2h0TWFyZ2luLCBmdWxsV2lkdGg6IHguZnVsbFdpZHRoIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGNlbnRlckdpdmVuTWFyZ2luJDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4gPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZU1hcmdpbiQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNlbnRlciQucGlwZShzd2l0Y2hNYXAoKF8pID0+IHRoaXMuY2FsY3VsYXRlTmV4dENlbnRlck9mZnNldFdpdGhTY3JlZW5NYXJnaW5DaGFuZ2UoeCkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNNb3ZpbmckLnBpcGUoXG4gICAgICAgICAgICAgIGZpbHRlcigoeCkgPT4gIXgpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jZW50ZXIkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcmF3Qm91bmROb3ckOiBPYnNlcnZhYmxlPExhdExuZ0JvdW5kPiA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMuX3JlbmRlcmluZ1RpbWVyLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBib3VuZCA9IHguZ2V0Qm91bmRzKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJvdW5kU3cgPSBib3VuZC5nZXRTb3V0aFdlc3QoKTtcbiAgICAgICAgICAgICAgY29uc3QgYm91bmROZSA9IGJvdW5kLmdldE5vcnRoRWFzdCgpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHN3ID0gaXNEZWZhdWx0TGF0TG5nUG9pbnQoYm91bmRTdykgPyBzd01vc3RMYXRMbmdQb2ludCgpIDogeyBsYXQ6IGJvdW5kU3cubGF0LCBsbmc6IGJvdW5kU3cubG5nIH07XG4gICAgICAgICAgICAgIGNvbnN0IG5lID0gaXNEZWZhdWx0TGF0TG5nUG9pbnQoYm91bmROZSkgPyBuZU1vc3RMYXRMbmdQb2ludCgpIDogeyBsYXQ6IGJvdW5kTmUubGF0LCBsbmc6IGJvdW5kTmUubG5nIH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGF0TG5nQm91bmQoc3csIG5lKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVMYXRMbmdCb3VuZCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSByYXdCb3VuZCQ6IE9ic2VydmFibGU8TGF0TG5nQm91bmQ+ID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmJvdW5kUmVmcmVzaFNldHRpbmdzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyB0aHJvdHRsZTogdGhyb3R0bGVNcywgcmVmcmVzaFR5cGUgfSA9IHNldHRpbmdzO1xuXG4gICAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxMYXRMbmdCb3VuZD47XG5cbiAgICAgICAgICBzd2l0Y2ggKHJlZnJlc2hUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhbHdheXMnOlxuICAgICAgICAgICAgICBvYnMgPSB0aGlzLnJhd0JvdW5kTm93JDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3aGVuX25vdF9yZW5kZXJpbmcnOlxuICAgICAgICAgICAgICBvYnMgPSB0aGlzLmlzUmVuZGVyaW5nJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4gKHggPyBFTVBUWSA6IHRoaXMucmF3Qm91bmROb3ckKSkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29ubHlfYWZ0ZXJfcmVuZGVyX2ZpbmlzaGVzJzpcbiAgICAgICAgICAgICAgb2JzID0gdGhpcy5pc1JlbmRlcmluZyQucGlwZShcbiAgICAgICAgICAgICAgICBvblRydWVUb0ZhbHNlKCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLnJhd0JvdW5kTm93JC5waXBlKGZpcnN0KCkpKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb2JzLnBpcGUodGhyb3R0bGVUaW1lKHRocm90dGxlTXMsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZUxhdExuZ0JvdW5kKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHVzZVZpcnR1YWxCb3VuZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC51c2VWaXJ0dWFsQm91bmQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBib3VuZCQ6IE9ic2VydmFibGU8TGF0TG5nQm91bmQ+ID0gdGhpcy51c2VWaXJ0dWFsQm91bmQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh1c2VWaXJ0dWFsQm91bmQpID0+IHtcbiAgICAgIGlmICh1c2VWaXJ0dWFsQm91bmQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydHVhbEJvdW5kJDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd0JvdW5kJDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGJvdW5kU2l6aW5nJDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4gPSB0aGlzLmJvdW5kJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gZGlmZkxhdExuZ0JvdW5kUG9pbnRzKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGJvdW5kV3JhcHNBcm91bmRXb3JsZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmJvdW5kJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gbGF0TG5nQm91bmRXcmFwc01hcCh4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzV2l0aGluQm91bmRGdW5jdGlvbiQ6IE9ic2VydmFibGU8SXNXaXRoaW5MYXRMbmdCb3VuZEZ1bmN0aW9uPiA9IHRoaXMuYm91bmQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBpc1dpdGhpbkxhdExuZ0JvdW5kRnVuY3Rpb24oeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgb3ZlcmxhcHNCb3VuZEZ1bmN0aW9uJDogT2JzZXJ2YWJsZTxPdmVybGFwc0xhdExuZ0JvdW5kRnVuY3Rpb24+ID0gdGhpcy52aXJ0dWFsQm91bmQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBvdmVybGFwc0xhdExuZ0JvdW5kRnVuY3Rpb24oeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgem9vbU5vdyQ6IE9ic2VydmFibGU8TWFwYm94Wm9vbUxldmVsPiA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLl9yZW5kZXJpbmdUaW1lci5waXBlKG1hcCgoKSA9PiB4LmdldFpvb20oKSBhcyBNYXBib3hab29tTGV2ZWwpKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb20kOiBPYnNlcnZhYmxlPE1hcGJveFpvb21MZXZlbD4gPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaXNab29taW5nJC5waXBlKFxuICAgICAgICBvblRydWVUb0ZhbHNlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy56b29tTm93JC5waXBlKGZpcnN0KCkpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBwaXRjaE5vdyQgPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5fbW92aW5nVGltZXIucGlwZShtYXAoKCkgPT4geC5nZXRQaXRjaCgpKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSBwaXRjaCQgPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSb3RhdGluZyQucGlwZShcbiAgICAgICAgb25UcnVlVG9GYWxzZSgpLFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucGl0Y2hOb3ckLnBpcGUoZmlyc3QoKSkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGJlYXJpbmdOb3ckID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHgpID0+IHRoaXMuX21vdmluZ1RpbWVyLnBpcGUobWFwKCgpID0+IHguZ2V0QmVhcmluZygpKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSBiZWFyaW5nJCA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5pc1JvdGF0aW5nJC5waXBlKFxuICAgICAgICBvblRydWVUb0ZhbHNlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iZWFyaW5nTm93JC5waXBlKGZpcnN0KCkpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBjb250ZW50JCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmNvbnRlbnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBoYXNDb250ZW50JCA9IHRoaXMuY29udGVudCQucGlwZShtYXAoQm9vbGVhbikpO1xuXG4gIHJlYWRvbmx5IGNsaWNrRXZlbnQkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguY2xpY2tFdmVudCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvdWJsZUNsaWNrRXZlbnQkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZG91YmxlQ2xpY2tFdmVudCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHJpZ2h0Q2xpY2tFdmVudCQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5yaWdodENsaWNrRXZlbnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIHJlYWRvbmx5IHNldE1hcmdpbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1hcmdpbjogTWF5YmU8RGJ4TWFwYm94TWFyZ2luQ2FsY3VsYXRpb25TaXppbmc+KSA9PiAoeyAuLi5zdGF0ZSwgbWFyZ2luOiBtYXJnaW4gJiYgKG1hcmdpbi5yaWdodE1hcmdpbiAhPT0gMCB8fCBtYXJnaW4ubGVmdE1hcmdpbiAhPT0gMCkgPyBtYXJnaW4gOiB1bmRlZmluZWQgfSkpO1xuICByZWFkb25seSBzZXRNaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplOiBNYXliZTxQYXJ0aWFsPFZlY3Rvcj4+KSA9PiAoeyAuLi5zdGF0ZSwgbWluaW11bVZpcnR1YWxWaWV3cG9ydFNpemUgfSkpO1xuICByZWFkb25seSBzZXRVc2VWaXJ0dWFsQm91bmQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCB1c2VWaXJ0dWFsQm91bmQ6IGJvb2xlYW4pID0+ICh7IC4uLnN0YXRlLCB1c2VWaXJ0dWFsQm91bmQgfSkpO1xuICByZWFkb25seSBzZXRCb3VuZFJlZnJlc2hTZXR0aW5ncyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGJvdW5kUmVmcmVzaFNldHRpbmdzOiBQYXJ0aWFsPERieE1hcGJveFN0b3JlQm91bmRSZWZyZXNoU2V0dGluZ3M+KSA9PiAoeyAuLi5zdGF0ZSwgYm91bmRSZWZyZXNoU2V0dGluZ3M6IHsgLi4uc3RhdGUuYm91bmRSZWZyZXNoU2V0dGluZ3MsIC4uLmJvdW5kUmVmcmVzaFNldHRpbmdzIH0gfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NldE1hcFNlcnZpY2UgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtYXBTZXJ2aWNlOiBNYXliZTxNYXBTZXJ2aWNlPikgPT4gKHsgbWFwU2VydmljZSwgbW92ZVN0YXRlOiAnaW5pdCcsIGxpZmVjeWNsZVN0YXRlOiAnaW5pdCcsIHpvb21TdGF0ZTogJ2luaXQnLCByb3RhdGVTdGF0ZTogJ2luaXQnLCByZXRhaW5Db250ZW50OiBzdGF0ZS5yZXRhaW5Db250ZW50LCBjb250ZW50OiBzdGF0ZS5yZXRhaW5Db250ZW50ID8gc3RhdGUuY29udGVudCA6IHVuZGVmaW5lZCwgdXNlVmlydHVhbEJvdW5kOiBzdGF0ZS51c2VWaXJ0dWFsQm91bmQsIGJvdW5kUmVmcmVzaFNldHRpbmdzOiBzdGF0ZS5ib3VuZFJlZnJlc2hTZXR0aW5ncyB9KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NldExpZmVjeWNsZVN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgbGlmZWN5Y2xlU3RhdGU6IE1hcGJveE1hcExpZmVjeWNsZVN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgbGlmZWN5Y2xlU3RhdGUgfSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRNb3ZlU3RhdGUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtb3ZlU3RhdGU6IE1hcGJveE1hcE1vdmVTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIG1vdmVTdGF0ZSB9KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NldFpvb21TdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHpvb21TdGF0ZTogTWFwYm94TWFwWm9vbVN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgem9vbVN0YXRlIH0pKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0Um90YXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByb3RhdGVTdGF0ZTogTWFwYm94TWFwUm90YXRlU3RhdGUpID0+ICh7IC4uLnN0YXRlLCByb3RhdGVTdGF0ZSB9KSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0TWFwQ2FudmFzU2l6ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1hcENhbnZhc1NpemU6IFZlY3RvcikgPT4gKHsgLi4uc3RhdGUsIG1hcENhbnZhc1NpemUgfSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRDbGlja0V2ZW50ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgY2xpY2tFdmVudDogRGJ4TWFwYm94Q2xpY2tFdmVudCkgPT4gKHsgLi4uc3RhdGUsIGNsaWNrRXZlbnQgfSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXREb3VibGVDbGlja0V2ZW50ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZG91YmxlQ2xpY2tFdmVudDogRGJ4TWFwYm94Q2xpY2tFdmVudCkgPT4gKHsgLi4uc3RhdGUsIGRvdWJsZUNsaWNrRXZlbnQgfSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRSaWdodENsaWNrRXZlbnQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByaWdodENsaWNrRXZlbnQ6IERieE1hcGJveENsaWNrRXZlbnQpID0+ICh7IC4uLnN0YXRlLCByaWdodENsaWNrRXZlbnQgfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NldEVycm9yID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZXJyb3I6IEVycm9yKSA9PiAoeyAuLi5zdGF0ZSwgZXJyb3IgfSkpO1xuXG4gIHJlYWRvbmx5IGNsZWFyQ29udGVudCA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjb250ZW50OiB1bmRlZmluZWQgfSkpO1xuICByZWFkb25seSBzZXRDb250ZW50ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgY29udGVudDogTWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPHVua25vd24+PikgPT4gKHsgLi4uc3RhdGUsIGNvbnRlbnQgfSkpO1xufVxuIl19
529
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9tYXBib3gvc3JjL2xpYi9tYXBib3guc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBRWpCLDJCQUEyQixFQUUzQixtQkFBbUIsRUFHbkIsbUJBQW1CLEVBR25CLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFFbkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQiwrQkFBK0IsRUFDL0IsWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBb0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdOLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSwyQkFBMkIsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFtRSwyQkFBMkIsRUFBRSxNQUFN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LENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUN0RSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNKLENBQUM7K0dBanBCVSxpQkFBaUIsa0JBS1IsZ0JBQWdCO21IQUx6QixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQU1JLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xlYW51cCwgZmlsdGVyTWF5YmUsIG9uVHJ1ZVRvRmFsc2UgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBpc1NhbWVMYXRMbmdCb3VuZCxcbiAgaXNTYW1lTGF0TG5nUG9pbnQsXG4gIElzV2l0aGluTGF0TG5nQm91bmRGdW5jdGlvbixcbiAgaXNXaXRoaW5MYXRMbmdCb3VuZEZ1bmN0aW9uLFxuICBMYXRMbmdCb3VuZCxcbiAgbGF0TG5nQm91bmRGdW5jdGlvbixcbiAgTGF0TG5nUG9pbnRJbnB1dCxcbiAgTGF0TG5nUG9pbnQsXG4gIGxhdExuZ1BvaW50RnVuY3Rpb24sXG4gIE1heWJlLFxuICBPdmVybGFwc0xhdExuZ0JvdW5kRnVuY3Rpb24sXG4gIG92ZXJsYXBzTGF0TG5nQm91bmRGdW5jdGlvbixcbiAgZGlmZkxhdExuZ0JvdW5kUG9pbnRzLFxuICBsYXRMbmdCb3VuZENlbnRlclBvaW50LFxuICBhZGRMYXRMbmdQb2ludHMsXG4gIGlzRGVmYXVsdExhdExuZ1BvaW50LFxuICBzd01vc3RMYXRMbmdQb2ludCxcbiAgbmVNb3N0TGF0TG5nUG9pbnQsXG4gIGxhdExuZ0JvdW5kV3JhcHNNYXAsXG4gIFZlY3RvcixcbiAgZmlsdGVyVW5kZWZpbmVkVmFsdWVzLFxuICBsYXRMbmdCb3VuZEZyb21JbnB1dCxcbiAgdmVjdG9yTWluaW11bVNpemVSZXNpemVGdW5jdGlvbixcbiAgaXNTYW1lVmVjdG9yLFxuICBab29tTGV2ZWxcbn0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnbmd4LW1hcGJveC1nbCc7XG5pbXBvcnQgeyBkZWZhdWx0SWZFbXB0eSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAsIE5FVkVSLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCBzdGFydFdpdGgsIGludGVydmFsLCBmaXJzdCwgY29tYmluZUxhdGVzdCwgRU1QVFksIE9wZXJhdG9yRnVuY3Rpb24sIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgTWFwYm94R2wgZnJvbSAnbWFwYm94LWdsJztcbmltcG9ydCB7IERieE1hcGJveENsaWNrRXZlbnQsIEtub3duTWFwYm94U3R5bGUsIE1hcGJveEJlYXJpbmcsIE1hcGJveEVhc2VUbywgTWFwYm94Rml0Qm91bmRzLCBNYXBib3hGaXRQb3NpdGlvbnMsIE1hcGJveEZseVRvLCBNYXBib3hKdW1wVG8sIE1hcGJveFJlc2V0Tm9ydGgsIE1hcGJveFJlc2V0Tm9ydGhQaXRjaCwgTWFwYm94Um90YXRlVG8sIE1hcGJveFNuYXBUb05vcnRoLCBNYXBib3hTdHlsZUNvbmZpZywgTWFwYm94Wm9vbUxldmVsLCBNYXBib3hab29tTGV2ZWxSYW5nZSB9IGZyb20gJy4vbWFwYm94JztcbmltcG9ydCB7IERieE1hcGJveFNlcnZpY2UgfSBmcm9tICcuL21hcGJveC5zZXJ2aWNlJztcbmltcG9ydCB7IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IG1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbiwgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uIH0gZnJvbSAnLi9tYXBib3gudXRpbCc7XG5pbXBvcnQgeyBGaWx0ZXJNYXBib3hCb3VuZENvbmZpZywgRmlsdGVyTWFwYm94Qm91bmRSZWFkSXRlbVZhbHVlRnVuY3Rpb24sIGZpbHRlckJ5TWFwYm94Vmlld3BvcnRCb3VuZCB9IGZyb20gJy4vbWFwYm94LnJ4anMnO1xuXG5leHBvcnQgdHlwZSBNYXBib3hNYXBMaWZlY3ljbGVTdGF0ZSA9ICdpbml0JyB8ICdsb2FkJyB8ICdyZW5kZXInIHwgJ2lkbGUnO1xuZXhwb3J0IHR5cGUgTWFwYm94TWFwTW92ZVN0YXRlID0gJ2luaXQnIHwgJ2lkbGUnIHwgJ21vdmluZyc7XG5leHBvcnQgdHlwZSBNYXBib3hNYXBab29tU3RhdGUgPSAnaW5pdCcgfCAnaWRsZScgfCAnem9vbWluZyc7XG5leHBvcnQgdHlwZSBNYXBib3hNYXBSb3RhdGVTdGF0ZSA9ICdpbml0JyB8ICdpZGxlJyB8ICdyb3RhdGluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTWFwYm94TGlzdGVuZXJQYWlyIHtcbiAgdHlwZTogc3RyaW5nO1xuICBsaXN0ZW5lcjogKGV2OiBNYXBib3hHbC5FdmVudERhdGEpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWRNYXBib3hMaXN0ZW5lclBhaXI8VCBleHRlbmRzIGtleW9mIE1hcGJveEdsLk1hcEV2ZW50VHlwZT4ge1xuICB0eXBlOiBUO1xuICBsaXN0ZW5lcjogKGV2OiBNYXBib3hHbC5NYXBFdmVudFR5cGVbVF0gJiBNYXBib3hHbC5FdmVudERhdGEpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4TWFwYm94TWFyZ2luQ2FsY3VsYXRpb25TaXppbmcge1xuICBsZWZ0TWFyZ2luOiBudW1iZXI7XG4gIHJpZ2h0TWFyZ2luOiBudW1iZXI7XG4gIGZ1bGxXaWR0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBEYnhNYXBib3hTdG9yZUJvdW5kUmVmcmVzaFR5cGUgPSAnYWx3YXlzJyB8ICd3aGVuX25vdF9yZW5kZXJpbmcnIHwgJ29ubHlfYWZ0ZXJfcmVuZGVyX2ZpbmlzaGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhNYXBib3hTdG9yZUJvdW5kUmVmcmVzaFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIE1heCBib3VuZCByZWZyZXNoIGludGVydmFsLlxuICAgKi9cbiAgdGhyb3R0bGU6IG51bWJlcjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHdhaXQgdG8gdXBkYXRlIHRoZSBib3VuZCB1bnRpbCBhZnRlciBpdCBoYXMgZmluaXNoZWQgcmVuZGVyaW5nLlxuICAgKi9cbiAgcmVmcmVzaFR5cGU6IERieE1hcGJveFN0b3JlQm91bmRSZWZyZXNoVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhNYXBib3hTdG9yZVN0YXRlIHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgTWFwU2VydmljZSBiZWluZyB1dGlsaXplZC5cbiAgICovXG4gIG1hcFNlcnZpY2U/OiBNYXliZTxNYXBTZXJ2aWNlPjtcbiAgbGlmZWN5Y2xlU3RhdGU6IE1hcGJveE1hcExpZmVjeWNsZVN0YXRlO1xuICBtb3ZlU3RhdGU6IE1hcGJveE1hcE1vdmVTdGF0ZTtcbiAgem9vbVN0YXRlOiBNYXBib3hNYXBab29tU3RhdGU7XG4gIHJvdGF0ZVN0YXRlOiBNYXBib3hNYXBSb3RhdGVTdGF0ZTtcbiAgLyoqXG4gICAqIFZpc3VhbCBjb250YWluZXIgc2l6ZSBvZiB0aGUgbWFwLlxuICAgKi9cbiAgbWFwQ2FudmFzU2l6ZT86IE1heWJlPFZlY3Rvcj47XG4gIC8qKlxuICAgKiBMYXRlc3QgY2xpY2sgZXZlbnRcbiAgICovXG4gIGNsaWNrRXZlbnQ/OiBNYXliZTxEYnhNYXBib3hDbGlja0V2ZW50PjtcbiAgLyoqXG4gICAqIExhdGVzdCBkb3VibGUtY2xpY2sgZXZlbnRcbiAgICovXG4gIGRvdWJsZUNsaWNrRXZlbnQ/OiBNYXliZTxEYnhNYXBib3hDbGlja0V2ZW50PjtcbiAgLyoqXG4gICAqIExhdGVzdCBjb250ZXh0bWVudSBldmVudC5cbiAgICovXG4gIHJpZ2h0Q2xpY2tFdmVudD86IE1heWJlPERieE1hcGJveENsaWNrRXZlbnQ+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcmV0YWluIGNvbnRlbnQgYmV0d2VlbiByZXNldHMuXG4gICAqXG4gICAqIFRydWUgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJldGFpbkNvbnRlbnQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gY29udGVudCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29udGVudD86IE1heWJlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzx1bmtub3duPj47XG4gIC8qKlxuICAgKiBMYXRlc3QgZXJyb3JcbiAgICovXG4gIGVycm9yPzogTWF5YmU8RXJyb3I+O1xuICAvKipcbiAgICogTWFwIG1hcmdpbi9vZmZzZXRcbiAgICovXG4gIG1hcmdpbj86IE1heWJlPERieE1hcGJveE1hcmdpbkNhbGN1bGF0aW9uU2l6aW5nPjtcbiAgLyoqXG4gICAqIE1pbmltdW0gdmVjdG9yIHNpemUgdG8gdXNlIGZvciB0aGUgdmlld3BvcnRCb3VuZEZ1bmN0aW9uJC4gSWYgbm90IGRlZmluZWQgdGhlcmUgaXMgbm8gbWluaW11bS5cbiAgICovXG4gIG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplPzogTWF5YmU8UGFydGlhbDxWZWN0b3I+PjtcbiAgLyoqXG4gICAqIEJvdW5kIHJlZnJlc2ggc2V0dGluZ3NcbiAgICovXG4gIGJvdW5kUmVmcmVzaFNldHRpbmdzOiBEYnhNYXBib3hTdG9yZUJvdW5kUmVmcmVzaFNldHRpbmdzO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gdXNlIHRoZSB2aXJ0dWFsIGJvdW5kICh2cyByYXcgYm91bmQpIGZvciBhbGwgYm91bmQtcmVsYXRlZCBvYnNlcnZhYmxlcy5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHVzZVZpcnR1YWxCb3VuZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTdG9yZSB1c2VkIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TWFwU3RvcmUgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxEYnhNYXBib3hTdG9yZVN0YXRlPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc2FmZUxhdExuZ1BvaW50ID0gbGF0TG5nUG9pbnRGdW5jdGlvbih7IHdyYXA6IHRydWUgfSk7XG4gIHByaXZhdGUgbGF0TG5nUG9pbnQgPSBsYXRMbmdQb2ludEZ1bmN0aW9uKHsgd3JhcDogZmFsc2UsIHZhbGlkYXRlOiBmYWxzZSB9KTtcbiAgcHJpdmF0ZSBsYXRMbmdCb3VuZCA9IGxhdExuZ0JvdW5kRnVuY3Rpb24oeyBwb2ludEZ1bmN0aW9uOiB0aGlzLmxhdExuZ1BvaW50IH0pO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRGJ4TWFwYm94U2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkYnhNYXBib3hTZXJ2aWNlOiBEYnhNYXBib3hTZXJ2aWNlKSB7XG4gICAgc3VwZXIoe1xuICAgICAgbGlmZWN5Y2xlU3RhdGU6ICdpbml0JyxcbiAgICAgIG1vdmVTdGF0ZTogJ2luaXQnLFxuICAgICAgem9vbVN0YXRlOiAnaW5pdCcsXG4gICAgICByb3RhdGVTdGF0ZTogJ2luaXQnLFxuICAgICAgcmV0YWluQ29udGVudDogdHJ1ZSxcbiAgICAgIHVzZVZpcnR1YWxCb3VuZDogdHJ1ZSxcbiAgICAgIGJvdW5kUmVmcmVzaFNldHRpbmdzOiB7XG4gICAgICAgIHRocm90dGxlOiAzMDAsXG4gICAgICAgIHJlZnJlc2hUeXBlOiAnYWx3YXlzJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gTUFSSzogRWZmZWN0c1xuICByZWFkb25seSBzZXRNYXBTZXJ2aWNlID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPE1hcFNlcnZpY2U+PikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChzZXJ2aWNlOiBNYXliZTxNYXBTZXJ2aWNlPikgPT4ge1xuICAgICAgICB0aGlzLl9zZXRNYXBTZXJ2aWNlKHNlcnZpY2UpO1xuXG4gICAgICAgIGlmICghc2VydmljZSkge1xuICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gc2VydmljZS5tYXBMb2FkZWQkLnBpcGUoXG4gICAgICAgICAgICBkZWZhdWx0SWZFbXB0eSh1bmRlZmluZWQpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fc2V0TGlmZWN5Y2xlU3RhdGUoJ2lkbGUnKTtcbiAgICAgICAgICAgICAgdGhpcy5fc2V0TW92ZVN0YXRlKCdpZGxlJyk7XG4gICAgICAgICAgICAgIHRoaXMuX3NldFpvb21TdGF0ZSgnaWRsZScpO1xuICAgICAgICAgICAgICB0aGlzLl9zZXRSb3RhdGVTdGF0ZSgnaWRsZScpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IG1hcCA9IHNlcnZpY2UubWFwSW5zdGFuY2U7XG5cbiAgICAgICAgICAgICAgY29uc3QgbGlzdGVuZXJQYWlyczogU3RyaW5nTWFwYm94TGlzdGVuZXJQYWlyW10gPSBbXTtcblxuICAgICAgICAgICAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgTWFwYm94R2wuTWFwRXZlbnRUeXBlPih0eXBlOiBULCBsaXN0ZW5lcjogKGV2OiBNYXBib3hHbC5NYXBFdmVudFR5cGVbVF0gJiBNYXBib3hHbC5FdmVudERhdGEpID0+IHZvaWQpIHtcbiAgICAgICAgICAgICAgICBtYXAub24odHlwZSwgbGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyUGFpcnMucHVzaCh7IHR5cGUsIGxpc3RlbmVyIH0gYXMgU3RyaW5nTWFwYm94TGlzdGVuZXJQYWlyKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdpZGxlJywgKCkgPT4gdGhpcy5fc2V0TGlmZWN5Y2xlU3RhdGUoJ2lkbGUnKSk7XG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdyZW5kZXInLCAoKSA9PiB0aGlzLl9zZXRMaWZlY3ljbGVTdGF0ZSgncmVuZGVyJykpO1xuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignZXJyb3InLCAoeCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEVycm9yKHguZXJyb3IpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignbW92ZXN0YXJ0JywgKCkgPT4gdGhpcy5fc2V0TW92ZVN0YXRlKCdtb3ZpbmcnKSk7XG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdtb3ZlZW5kJywgKCkgPT4gdGhpcy5fc2V0TW92ZVN0YXRlKCdpZGxlJykpO1xuXG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCd6b29tc3RhcnQnLCAoKSA9PiB0aGlzLl9zZXRab29tU3RhdGUoJ3pvb21pbmcnKSk7XG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCd6b29tZW5kJywgKCkgPT4gdGhpcy5fc2V0Wm9vbVN0YXRlKCdpZGxlJykpO1xuXG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdyb3RhdGVzdGFydCcsICgpID0+IHRoaXMuX3NldFJvdGF0ZVN0YXRlKCdyb3RhdGluZycpKTtcbiAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ3JvdGF0ZWVuZCcsICgpID0+IHRoaXMuX3NldFJvdGF0ZVN0YXRlKCdpZGxlJykpO1xuXG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdjbGljaycsICh4KSA9PiB0aGlzLl9zZXRDbGlja0V2ZW50KHgpKTtcbiAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ2RibGNsaWNrJywgKHgpID0+IHRoaXMuX3NldERvdWJsZUNsaWNrRXZlbnQoeCkpO1xuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignY29udGV4dG1lbnUnLCAoeCkgPT4gdGhpcy5fc2V0UmlnaHRDbGlja0V2ZW50KHgpKTtcblxuICAgICAgICAgICAgICBjb25zdCByZWZyZXNoRm9yUmVzaXplID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGg6IHgsIGNsaWVudEhlaWdodDogeSB9ID0gbWFwLmdldENhbnZhcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldE1hcENhbnZhc1NpemUoeyB4LCB5IH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdyZXNpemUnLCByZWZyZXNoRm9yUmVzaXplKTtcbiAgICAgICAgICAgICAgcmVmcmVzaEZvclJlc2l6ZSgpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGxpc3RlbmVyUGFpcnMsXG4gICAgICAgICAgICAgICAgc3Vic1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNsZWFudXAoKHsgc2VydmljZSwgbGlzdGVuZXJQYWlycywgc3VicyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcCA9IHNlcnZpY2UubWFwSW5zdGFuY2U7XG5cbiAgICAgICAgaWYgKG1hcCkge1xuICAgICAgICAgIGxpc3RlbmVyUGFpcnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgbWFwLm9mZih4LnR5cGUsIHgubGlzdGVuZXIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0U3R5bGUgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94U3R5bGVDb25maWcgfCBLbm93bk1hcGJveFN0eWxlIHwgc3RyaW5nPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChzdHlsZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgICB0YXAoKG1hcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgbWFwLnNldFN0eWxlKHN0eWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hcC5zZXRTdHlsZShzdHlsZS5zdHlsZSwgc3R5bGUub3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0Q2VudGVyID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPExhdExuZ1BvaW50SW5wdXQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNlbnRlcjogTGF0TG5nUG9pbnRJbnB1dCkgPT4ge1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IHRoaXMuc2FmZUxhdExuZ1BvaW50KGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuc2V0Q2VudGVyKGNlbnRlclBvaW50KSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRab29tID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveFpvb21MZXZlbD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoem9vbTogTWFwYm94Wm9vbUxldmVsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuc2V0Wm9vbSh6b29tKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRab29tUmFuZ2UgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8UGFydGlhbDxNYXBib3hab29tTGV2ZWxSYW5nZT4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHpvb21SYW5nZTogUGFydGlhbDxNYXBib3hab29tTGV2ZWxSYW5nZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgICAgdGFwKChtYXApID0+IHtcbiAgICAgICAgICAgIG1hcC5zZXRNaW5ab29tKHpvb21SYW5nZS5taW4gfHwgbnVsbCk7XG4gICAgICAgICAgICBtYXAuc2V0TWF4Wm9vbSh6b29tUmFuZ2UubWF4IHx8IG51bGwpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldE1pblpvb20gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94Wm9vbUxldmVsPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh6b29tOiBNYXBib3hab29tTGV2ZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5zZXRNaW5ab29tKHpvb20pKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldE1heFpvb20gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94Wm9vbUxldmVsPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh6b29tOiBNYXBib3hab29tTGV2ZWwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5zZXRNYXhab29tKHpvb20pKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldEtleWJvYXJkRGlzYWJsZWQgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8Ym9vbGVhbj4gfCB2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChkaXNhYmxlZDogTWF5YmU8Ym9vbGVhbj4gfCB2b2lkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICAgIHRhcCgobWFwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG1hcC5rZXlib2FyZC5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hcC5rZXlib2FyZC5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0RHJhZ1JvdGF0ZURpc2FibGVkID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPGJvb2xlYW4+IHwgdm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+IHwgdm9pZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgICB0YXAoKG1hcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBtYXAuZHJhZ1JvdGF0ZS5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hcC5kcmFnUm90YXRlLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXREcmFnUGFuRGlzYWJsZWQgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8Ym9vbGVhbj4gfCB2b2lkPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChkaXNhYmxlZDogTWF5YmU8Ym9vbGVhbj4gfCB2b2lkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICAgIHRhcCgobWFwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIG1hcC5kcmFnUGFuLmVuYWJsZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWFwLmRyYWdQYW4uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldFpvb21EaXNhYmxlZCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxib29sZWFuPiB8IHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGRpc2FibGVkOiBNYXliZTxib29sZWFuPiB8IHZvaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgICAgdGFwKChtYXApID0+IHtcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgbWFwLnNjcm9sbFpvb20uZW5hYmxlKCk7XG4gICAgICAgICAgICAgIG1hcC5kb3VibGVDbGlja1pvb20uZW5hYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtYXAuc2Nyb2xsWm9vbS5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgIG1hcC5kb3VibGVDbGlja1pvb20uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldFBpdGNoID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPG51bWJlcj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocGl0Y2gpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5zZXRQaXRjaChwaXRjaCkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0TWluUGl0Y2ggPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8bnVtYmVyPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChwaXRjaDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuc2V0TWluUGl0Y2gocGl0Y2gpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldE1heFBpdGNoID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPG51bWJlcj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocGl0Y2g6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnNldE1heFBpdGNoKHBpdGNoKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBzZXRCZWFyaW5nID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPG51bWJlcj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoYmVhcmluZykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnNldEJlYXJpbmcoYmVhcmluZykpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcm90YXRlVG8gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94QmVhcmluZyB8IE1hcGJveFJvdGF0ZVRvPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyb3RhdGVJbnB1dDogTWFwYm94QmVhcmluZyB8IE1hcGJveFJvdGF0ZVRvKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdGF0ZTogTWFwYm94Um90YXRlVG8gPSB0eXBlb2Ygcm90YXRlSW5wdXQgPT09ICdudW1iZXInID8geyBiZWFyaW5nOiByb3RhdGVJbnB1dCB9IDogcm90YXRlSW5wdXQ7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAucm90YXRlVG8ocm90YXRlLmJlYXJpbmcsIHJvdGF0ZS5vcHRpb25zLCByb3RhdGU/LmV2ZW50RGF0YSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmVzZXROb3J0aCA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxNYXBib3hSZXNldE5vcnRoPiB8IHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlc2V0OiBNYXliZTxNYXBib3hSZXNldE5vcnRoPiB8IHZvaWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5yZXNldE5vcnRoKHJlc2V0Py5vcHRpb25zLCByZXNldD8uZXZlbnREYXRhKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSByZXNldE5vcnRoUGl0Y2ggPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8TWFwYm94UmVzZXROb3J0aFBpdGNoPiB8IHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlc2V0OiBNYXliZTxNYXBib3hSZXNldE5vcnRoUGl0Y2g+IHwgdm9pZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnJlc2V0Tm9ydGhQaXRjaChyZXNldD8ub3B0aW9ucywgcmVzZXQ/LmV2ZW50RGF0YSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc25hcFRvTm9ydGggPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8TWFwYm94U25hcFRvTm9ydGg+IHwgdm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoc25hcDogTWF5YmU8TWFwYm94U25hcFRvTm9ydGg+IHwgdm9pZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLnNuYXBUb05vcnRoKHNuYXA/Lm9wdGlvbnMsIHNuYXA/LmV2ZW50RGF0YSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZml0UG9zaXRpb25zID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveEZpdFBvc2l0aW9ucz4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICBjb25zdCBib3VuZEZyb21JbnB1dCA9IGxhdExuZ0JvdW5kRnJvbUlucHV0KHgucG9zaXRpb25zKTtcblxuICAgICAgICBpZiAoYm91bmRGcm9tSW5wdXQpIHtcbiAgICAgICAgICBjb25zdCBib3VuZCA9IHRoaXMubGF0TG5nQm91bmQoYm91bmRGcm9tSW5wdXQpO1xuICAgICAgICAgIHJldHVybiB0aGlzLm1hcEluc3RhbmNlJC5waXBlKHRhcCgobWFwKSA9PiBtYXAuZml0Qm91bmRzKG5ldyBNYXBib3hHbC5MbmdMYXRCb3VuZHMoYm91bmQuc3csIGJvdW5kLm5lKSwgeC5vcHRpb25zLCB4LmV2ZW50RGF0YSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZml0Qm91bmRzID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1hcGJveEZpdEJvdW5kcz4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICBjb25zdCBib3VuZCA9IHRoaXMubGF0TG5nQm91bmQoeC5ib3VuZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLmZpdEJvdW5kcyhuZXcgTWFwYm94R2wuTG5nTGF0Qm91bmRzKGJvdW5kLnN3LCBib3VuZC5uZSksIHgub3B0aW9ucywgeC5ldmVudERhdGEpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGp1bXBUbyA9IHRoaXMuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXBib3hKdW1wVG8+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRDZW50ZXIgPSB4LmNlbnRlciA/PyB4LnRvPy5jZW50ZXI7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IGlucHV0Q2VudGVyID8gdGhpcy5zYWZlTGF0TG5nUG9pbnQoaW5wdXRDZW50ZXIpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLmp1bXBUbyhmaWx0ZXJVbmRlZmluZWRWYWx1ZXMoeyAuLi54LnRvLCBjZW50ZXIgfSksIHguZXZlbnREYXRhKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBlYXNlVG8gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94RWFzZVRvPikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0Q2VudGVyID0geC5jZW50ZXIgPz8geC50bz8uY2VudGVyO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBpbnB1dENlbnRlciA/IHRoaXMuc2FmZUxhdExuZ1BvaW50KGlucHV0Q2VudGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUodGFwKChtYXApID0+IG1hcC5lYXNlVG8oZmlsdGVyVW5kZWZpbmVkVmFsdWVzKHsgLi4ueC50bywgY2VudGVyIH0pLCB4LmV2ZW50RGF0YSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZmx5VG8gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWFwYm94Rmx5VG8+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRDZW50ZXIgPSB4LmNlbnRlciA/PyB4LnRvPy5jZW50ZXI7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IGlucHV0Q2VudGVyID8gdGhpcy5zYWZlTGF0TG5nUG9pbnQoaW5wdXRDZW50ZXIpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZSh0YXAoKG1hcCkgPT4gbWFwLmZseVRvKGZpbHRlclVuZGVmaW5lZFZhbHVlcyh7IC4uLngudG8sIGNlbnRlciB9KSwgeC5ldmVudERhdGEpKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJlc2V0UGl0Y2hBbmRCZWFyaW5nID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgICB0YXAoKG1hcCkgPT4ge1xuICAgICAgICAgICAgbWFwLnNldFBpdGNoKDApO1xuICAgICAgICAgICAgbWFwLnNldEJlYXJpbmcoMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gTUFSSzogQWNjZXNzb3JzXG4gIGdldCB0aW1lclJlZnJlc2hQZXJpb2QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGJ4TWFwYm94U2VydmljZS5tYXBib3hNYXBTdG9yZVRpbWVyUmVmcmVzaFBlcmlvZDtcbiAgfVxuXG4gIG1vdmluZ1RpbWVyKHBlcmlvZCA9IHRoaXMudGltZXJSZWZyZXNoUGVyaW9kKSB7XG4gICAgcmV0dXJuIHRoaXMubW92ZVN0YXRlJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICh4ID09PSAnbW92aW5nJykge1xuICAgICAgICAgIHJldHVybiBpbnRlcnZhbChwZXJpb2QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBvZigwKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBsaWZlY3ljbGVSZW5kZXJUaW1lcihwZXJpb2QgPSB0aGlzLnRpbWVyUmVmcmVzaFBlcmlvZCkge1xuICAgIHJldHVybiB0aGlzLmxpZmVjeWNsZVN0YXRlJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICh4ID09PSAncmVuZGVyJykge1xuICAgICAgICAgIHJldHVybiBpbnRlcnZhbChwZXJpb2QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBvZigwKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBhdE5leHRJZGxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1vdmVTdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoeCkgPT4geCA9PT0gJ2lkbGUnKSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlTmV4dENlbnRlcldpdGhPZmZzZXQoaW5wdXRPZmZzZXQ6IExhdExuZ1BvaW50SW5wdXQpOiBPYnNlcnZhYmxlPExhdExuZ1BvaW50PiB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5sYXRMbmdQb2ludChpbnB1dE9mZnNldCk7XG5cbiAgICByZXR1cm4gdGhpcy5hdE5leHRJZGxlKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICB0aGlzLmNlbnRlciQucGlwZShcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIG1hcCgoY2VudGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdDZW50ZXIgPSB7XG4gICAgICAgICAgICAgIGxhdDogb2Zmc2V0LmxhdCArIGNlbnRlci5sYXQsXG4gICAgICAgICAgICAgIGxuZzogb2Zmc2V0LmxuZyArIGNlbnRlci5sbmdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gbmV3Q2VudGVyO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlTmV4dENlbnRlck9mZnNldFdpdGhTY3JlZW5NYXJnaW5DaGFuZ2Uoc2l6aW5nOiBEYnhNYXBib3hNYXJnaW5DYWxjdWxhdGlvblNpemluZyk6IE9ic2VydmFibGU8TGF0TG5nUG9pbnQ+IHtcbiAgICAvLyBUT0RPOiBDb25zaWRlciBjYWxjdWxhdGluZyB0aGlzIHVzaW5nIHRoZSB2aWV3cG9ydCgpIGZ1bmN0aW9uIGZyb20gQHBsYWNlbWFya2lvL2dlby12aWV3cG9ydFxuICAgIHJldHVybiB0aGlzLmF0TmV4dElkbGUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIHRoaXMuYm91bmQkLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICBtYXAoKGJvdW5kcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlmZiA9IGRpZmZMYXRMbmdCb3VuZFBvaW50cyhib3VuZHMsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gbGF0TG5nQm91bmRDZW50ZXJQb2ludChib3VuZHMpO1xuXG4gICAgICAgICAgICBjb25zdCBvZmZzZXRXaWR0aCA9IHNpemluZy5sZWZ0TWFyZ2luICsgc2l6aW5nLnJpZ2h0TWFyZ2luOyAvLyAzMDAgKyAwXG4gICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHNpemluZy5mdWxsV2lkdGggLSBvZmZzZXRXaWR0aDsgLy8gMTAwMCAtIDMwMCAtIDBcbiAgICAgICAgICAgIGNvbnN0IG5ld1dpZHRoUmF0aW8gPSBuZXdXaWR0aCAvIHNpemluZy5mdWxsV2lkdGg7IC8vIDcwMCAvIDEwMDBcbiAgICAgICAgICAgIGNvbnN0IG5ld0NlbnRlckxvbmdpdHVkZVdpZHRoID0gZGlmZi5sbmcgKiBuZXdXaWR0aFJhdGlvOyAvLyA3MCUgb2Zmc2V0XG5cbiAgICAgICAgICAgIGNvbnN0IGVmZmVjdGl2ZU9mZnNldDogTGF0TG5nUG9pbnQgPSB7XG4gICAgICAgICAgICAgIGxhdDogMCxcbiAgICAgICAgICAgICAgbG5nOiBuZXdDZW50ZXJMb25naXR1ZGVXaWR0aCAvIDJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0NlbnRlciA9IGFkZExhdExuZ1BvaW50cyhib3VuZHMuc3csIGVmZmVjdGl2ZU9mZnNldCk7XG4gICAgICAgICAgICBuZXdDZW50ZXIubGF0ID0gY2VudGVyLmxhdDsgLy8gcmV0YWluIGNlbnRlciBwb3NpdGlvblxuXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh7IHNpemluZywgYm91bmRzLCBlZmZlY3RpdmVPZmZzZXQsIG5ld1dpZHRoLCBvZmZzZXRXaWR0aCwgZGlmZiwgY2VudGVyLCBuZXdDZW50ZXIgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdDZW50ZXI7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBmaWx0ZXJCeVZpZXdwb3J0Qm91bmQ8VD4oaW5wdXQ6IEZpbHRlck1hcGJveEJvdW5kUmVhZEl0ZW1WYWx1ZUZ1bmN0aW9uPFQ+IHwgT21pdDxGaWx0ZXJNYXBib3hCb3VuZENvbmZpZzxUPiwgJ2JvdW5kRnVuY3Rpb25PYnMnIHwgJ2JvdW5kRGVjaXNpb25PYnMnPik6IE9wZXJhdG9yRnVuY3Rpb248VFtdLCBUW10+IHtcbiAgICBjb25zdCBjb25maWcgPSB0eXBlb2YgaW5wdXQgPT09ICdmdW5jdGlvbicgPyB7IHJlYWRWYWx1ZTogaW5wdXQgfSA6IGlucHV0O1xuXG4gICAgcmV0dXJuIGZpbHRlckJ5TWFwYm94Vmlld3BvcnRCb3VuZCh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBib3VuZEZ1bmN0aW9uT2JzOiB0aGlzLnZpZXdwb3J0Qm91bmRGdW5jdGlvbiQsXG4gICAgICBib3VuZERlY2lzaW9uT2JzOiB0aGlzLm92ZXJsYXBzQm91bmRGdW5jdGlvbiRcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IGN1cnJlbnRNYXBTZXJ2aWNlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcFNlcnZpY2UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtYXBTZXJ2aWNlJCA9IHRoaXMuY3VycmVudE1hcFNlcnZpY2UkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudE1hcEluc3RhbmNlJDogT2JzZXJ2YWJsZTxNYXliZTxNYXBib3hHbC5NYXA+PiA9IHRoaXMuY3VycmVudE1hcFNlcnZpY2UkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjdXJyZW50TWFwU2VydmljZTogTWF5YmU8TWFwU2VydmljZT4pID0+IHtcbiAgICAgIGlmIChjdXJyZW50TWFwU2VydmljZSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE1hcFNlcnZpY2UubWFwTG9hZGVkJC5waXBlKFxuICAgICAgICAgIGRlZmF1bHRJZkVtcHR5KHVuZGVmaW5lZCksXG4gICAgICAgICAgbWFwKCgpID0+IGN1cnJlbnRNYXBTZXJ2aWNlLm1hcEluc3RhbmNlKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1hcEluc3RhbmNlJCA9IHRoaXMuY3VycmVudE1hcEluc3RhbmNlJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGJvdW5kUmVmcmVzaFNldHRpbmdzJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmJvdW5kUmVmcmVzaFNldHRpbmdzKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1vdmVTdGF0ZSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5tb3ZlU3RhdGUpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBsaWZlY3ljbGVTdGF0ZSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5saWZlY3ljbGVTdGF0ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb21TdGF0ZSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC56b29tU3RhdGUpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSByb3RhdGVTdGF0ZSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5yb3RhdGVTdGF0ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWQkID0gdGhpcy5jdXJyZW50TWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICBpZiAoIXgpIHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vdmVTdGF0ZSQucGlwZShtYXAoKHgpID0+IHggPT09ICdpZGxlJykpLCB0aGlzLmxpZmVjeWNsZVN0YXRlJC5waXBlKG1hcCgoeCkgPT4geCA9PT0gJ2lkbGUnKSldKS5waXBlKFxuICAgICAgICAgIGZpbHRlcigoW20sIGxdKSA9PiBtICYmIGwpLFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB3aGVuSW5pdGlhbGl6ZWQkID0gdGhpcy5pc0luaXRpYWxpemVkJC5waXBlKFxuICAgIGZpbHRlcigoeCkgPT4gdHJ1ZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc1JlbmRlcmluZyQgPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMubGlmZWN5Y2xlU3RhdGUkLnBpcGUoXG4gICAgICAgIG1hcCgoeCkgPT4geCA9PT0gJ3JlbmRlcicpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSBpc01vdmluZyQgPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMubW92ZVN0YXRlJC5waXBlKFxuICAgICAgICBtYXAoKHgpID0+IHggPT09ICdtb3ZpbmcnKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNab29taW5nJCA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy56b29tU3RhdGUkLnBpcGUoXG4gICAgICAgIG1hcCgoeCkgPT4geCA9PT0gJ3pvb21pbmcnKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNSb3RhdGluZyQgPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMucm90YXRlU3RhdGUkLnBpcGUoXG4gICAgICAgIG1hcCgoeCkgPT4geCA9PT0gJ3JvdGF0aW5nJyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vdmluZ1RpbWVyID0gdGhpcy5tb3ZpbmdUaW1lcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJpbmdUaW1lciA9IHRoaXMubGlmZWN5Y2xlUmVuZGVyVGltZXIoKTtcblxuICByZWFkb25seSBjZW50ZXJOb3ckOiBPYnNlcnZhYmxlPExhdExuZ1BvaW50PiA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLl9tb3ZpbmdUaW1lci5waXBlKG1hcCgoKSA9PiB0aGlzLmxhdExuZ1BvaW50KHguZ2V0Q2VudGVyKCkpKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjZW50ZXIkOiBPYnNlcnZhYmxlPExhdExuZ1BvaW50PiA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5pc01vdmluZyQucGlwZShcbiAgICAgICAgb25UcnVlVG9GYWxzZSgpLFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2VudGVyTm93JC5waXBlKGZpcnN0KCkpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8TGF0TG5nUG9pbnQ+KGlzU2FtZUxhdExuZ1BvaW50KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5taW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lVmVjdG9yKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRNYXBDYW52YXNTaXplJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcENhbnZhc1NpemUpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPFZlY3Rvcj4+KGlzU2FtZVZlY3RvciksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogVGhlIG1hcCBjYW52YXMgc2l6ZSB3aXRoIGNvbnNpZGVyYXRpb24gdG8gdGhlIHZpcnR1YWwgdmlld3BvcnQgc2l6ZS5cbiAgICovXG4gIHJlYWRvbmx5IG1hcENhbnZhc1NpemUkID0gdGhpcy5jdXJyZW50TWFwQ2FudmFzU2l6ZSQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBtaW5pbXVtTWFwQ2FudmFzU2l6ZShtaW5WZWN0b3I6IFBhcnRpYWw8VmVjdG9yPik6IE9ic2VydmFibGU8VmVjdG9yPiB7XG4gICAgY29uc3QgcmVzaXplRm4gPSB2ZWN0b3JNaW5pbXVtU2l6ZVJlc2l6ZUZ1bmN0aW9uKG1pblZlY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMubWFwQ2FudmFzU2l6ZSQucGlwZShcbiAgICAgIG1hcCgoeCkgPT4gcmVzaXplRm4oeCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8VmVjdG9yPihpc1NhbWVWZWN0b3IpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtYXAgY2FudmFzIHNpemUgd2l0aCBjb25zaWRlcmF0aW9uIHRvIHRoZSB2aXJ0dWFsIHZpZXdwb3J0IHNpemUuXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsTWFwQ2FudmFzU2l6ZSQgPSB0aGlzLm1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplJC5waXBlKFxuICAgIHN3aXRjaE1hcCgobWluaW11bVZpcnR1YWxWaWV3cG9ydFNpemUpID0+IHtcbiAgICAgIGlmIChtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW5pbXVtTWFwQ2FudmFzU2l6ZShtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBDYW52YXNTaXplJDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxWZWN0b3I+KGlzU2FtZVZlY3RvciksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSByYXdWaWV3cG9ydEJvdW5kRnVuY3Rpb24kOiBPYnNlcnZhYmxlPE1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbj4gPSB0aGlzLm1hcENhbnZhc1NpemUkLnBpcGUoXG4gICAgbWFwKChtYXBDYW52YXNTaXplKSA9PiBtYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24oeyBtYXBDYW52YXNTaXplIH0pKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uIG9ic2VydmFibGUgdGhhdCByZXR1cm5zIHRoZSBtaW5pbXVtIHZpZXdwb3J0IHNpemUuXG4gICAqXG4gICAqIEBwYXJhbSBtaW5WZWN0b3JcbiAgICogQHJldHVybnNcbiAgICovXG4gIHZpZXdwb3J0Qm91bmRGdW5jdGlvbldpdGhNaW5pbXVtU2l6ZShtaW5WZWN0b3I6IFBhcnRpYWw8VmVjdG9yPik6IE9ic2VydmFibGU8TWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uPiB7XG4gICAgY29uc3QgcmVzaXplRm4gPSB2ZWN0b3JNaW5pbXVtU2l6ZVJlc2l6ZUZ1bmN0aW9uKG1pblZlY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMubWFwQ2FudmFzU2l6ZSQucGlwZShcbiAgICAgIG1hcCgoeCkgPT4gcmVzaXplRm4oeCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQ8VmVjdG9yPihpc1NhbWVWZWN0b3IpLFxuICAgICAgbWFwKChtYXBDYW52YXNTaXplKSA9PiBtYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24oeyBtYXBDYW52YXNTaXplIH0pKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHZpZXdwb3J0Qm91bmRGdW5jdGlvbiQ6IE9ic2VydmFibGU8TWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uPiA9IHRoaXMubWluaW11bVZpcnR1YWxWaWV3cG9ydFNpemUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSkgPT4ge1xuICAgICAgaWYgKG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0Qm91bmRGdW5jdGlvbldpdGhNaW5pbXVtU2l6ZShtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdWaWV3cG9ydEJvdW5kRnVuY3Rpb24kO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmlydHVhbEJvdW5kJDogT2JzZXJ2YWJsZTxMYXRMbmdCb3VuZD4gPSB0aGlzLnZpZXdwb3J0Qm91bmRGdW5jdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGZuKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ib3VuZFJlZnJlc2hTZXR0aW5ncyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgdGhyb3R0bGU6IHRocm90dGxlTXMsIHJlZnJlc2hUeXBlIH0gPSBzZXR0aW5ncztcblxuICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8W0xhdExuZ1BvaW50LCBab29tTGV2ZWxdPjtcblxuICAgICAgICAgIHN3aXRjaCAocmVmcmVzaFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Fsd2F5cyc6XG4gICAgICAgICAgICAgIG9icyA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY2VudGVyTm93JCwgdGhpcy56b29tTm93JF0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3doZW5fbm90X3JlbmRlcmluZyc6XG4gICAgICAgICAgICBjYXNlICdvbmx5X2FmdGVyX3JlbmRlcl9maW5pc2hlcyc6XG4gICAgICAgICAgICAgIG9icyA9IHRoaXMuYm91bmQkLnBpcGUoc3dpdGNoTWFwKCgpID0+IGNvbWJpbmVMYXRlc3QoW3RoaXMuY2VudGVyTm93JCwgdGhpcy56b29tTm93JF0pKSk7IC8vIHJlZnJlc2ggd2hlbmV2ZXIgdGhlIGJvdW5kIHJlZnJlc2hlc1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb2JzLnBpcGUoXG4gICAgICAgICAgICB0aHJvdHRsZVRpbWUodGhyb3R0bGVNcywgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgICAgICAgICAgbWFwKChbY2VudGVyLCB6b29tXSkgPT5cbiAgICAgICAgICAgICAgZm4oe1xuICAgICAgICAgICAgICAgIGNlbnRlcixcbiAgICAgICAgICAgICAgICB6b29tXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lTGF0TG5nQm91bmQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbWFyZ2luJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcmdpbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEgIT0gbnVsbCAmJiBiICE9IG51bGwgJiYgYS5mdWxsV2lkdGggPT09IGIuZnVsbFdpZHRoICYmIGEubGVmdE1hcmdpbiA9PT0gYi5sZWZ0TWFyZ2luICYmIGEucmlnaHRNYXJnaW4gPT09IGIucmlnaHRNYXJnaW4pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcmV2ZXJzZU1hcmdpbiQgPSB0aGlzLm1hcmdpbiQucGlwZShcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIHJldHVybiB7IGxlZnRNYXJnaW46IC14LmxlZnRNYXJnaW4sIHJpZ2h0TWFyZ2luOiAteC5yaWdodE1hcmdpbiwgZnVsbFdpZHRoOiB4LmZ1bGxXaWR0aCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBjZW50ZXJHaXZlbk1hcmdpbiQ6IE9ic2VydmFibGU8TGF0TG5nUG9pbnQ+ID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2VNYXJnaW4kLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICAgIGlmICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jZW50ZXIkLnBpcGUoc3dpdGNoTWFwKChfKSA9PiB0aGlzLmNhbGN1bGF0ZU5leHRDZW50ZXJPZmZzZXRXaXRoU2NyZWVuTWFyZ2luQ2hhbmdlKHgpKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTW92aW5nJC5waXBlKFxuICAgICAgICAgICAgICBmaWx0ZXIoKHgpID0+ICF4KSxcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2VudGVyJClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHJhd0JvdW5kTm93JDogT2JzZXJ2YWJsZTxMYXRMbmdCb3VuZD4gPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLl9yZW5kZXJpbmdUaW1lci5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYm91bmQgPSB4LmdldEJvdW5kcygpO1xuICAgICAgICAgICAgICBjb25zdCBib3VuZFN3ID0gYm91bmQuZ2V0U291dGhXZXN0KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJvdW5kTmUgPSBib3VuZC5nZXROb3J0aEVhc3QoKTtcblxuICAgICAgICAgICAgICBjb25zdCBzdyA9IGlzRGVmYXVsdExhdExuZ1BvaW50KGJvdW5kU3cpID8gc3dNb3N0TGF0TG5nUG9pbnQoKSA6IHsgbGF0OiBib3VuZFN3LmxhdCwgbG5nOiBib3VuZFN3LmxuZyB9O1xuICAgICAgICAgICAgICBjb25zdCBuZSA9IGlzRGVmYXVsdExhdExuZ1BvaW50KGJvdW5kTmUpID8gbmVNb3N0TGF0TG5nUG9pbnQoKSA6IHsgbGF0OiBib3VuZE5lLmxhdCwgbG5nOiBib3VuZE5lLmxuZyB9O1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmxhdExuZ0JvdW5kKHN3LCBuZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lTGF0TG5nQm91bmQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcmF3Qm91bmQkOiBPYnNlcnZhYmxlPExhdExuZ0JvdW5kPiA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ib3VuZFJlZnJlc2hTZXR0aW5ncyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgdGhyb3R0bGU6IHRocm90dGxlTXMsIHJlZnJlc2hUeXBlIH0gPSBzZXR0aW5ncztcblxuICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8TGF0TG5nQm91bmQ+O1xuXG4gICAgICAgICAgc3dpdGNoIChyZWZyZXNoVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYWx3YXlzJzpcbiAgICAgICAgICAgICAgb2JzID0gdGhpcy5yYXdCb3VuZE5vdyQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2hlbl9ub3RfcmVuZGVyaW5nJzpcbiAgICAgICAgICAgICAgb2JzID0gdGhpcy5pc1JlbmRlcmluZyQucGlwZShzd2l0Y2hNYXAoKHgpID0+ICh4ID8gRU1QVFkgOiB0aGlzLnJhd0JvdW5kTm93JCkpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvbmx5X2FmdGVyX3JlbmRlcl9maW5pc2hlcyc6XG4gICAgICAgICAgICAgIG9icyA9IHRoaXMuaXNSZW5kZXJpbmckLnBpcGUoXG4gICAgICAgICAgICAgICAgb25UcnVlVG9GYWxzZSgpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5yYXdCb3VuZE5vdyQucGlwZShmaXJzdCgpKSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9icy5waXBlKHRocm90dGxlVGltZSh0aHJvdHRsZU1zLCB1bmRlZmluZWQsIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVMYXRMbmdCb3VuZCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB1c2VWaXJ0dWFsQm91bmQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudXNlVmlydHVhbEJvdW5kKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYm91bmQkOiBPYnNlcnZhYmxlPExhdExuZ0JvdW5kPiA9IHRoaXMudXNlVmlydHVhbEJvdW5kJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodXNlVmlydHVhbEJvdW5kKSA9PiB7XG4gICAgICBpZiAodXNlVmlydHVhbEJvdW5kKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxCb3VuZCQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdCb3VuZCQ7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBib3VuZFNpemluZyQ6IE9ic2VydmFibGU8TGF0TG5nUG9pbnQ+ID0gdGhpcy5ib3VuZCQucGlwZShcbiAgICBtYXAoKHgpID0+IGRpZmZMYXRMbmdCb3VuZFBvaW50cyh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBib3VuZFdyYXBzQXJvdW5kV29ybGQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5ib3VuZCQucGlwZShcbiAgICBtYXAoKHgpID0+IGxhdExuZ0JvdW5kV3JhcHNNYXAoeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc1dpdGhpbkJvdW5kRnVuY3Rpb24kOiBPYnNlcnZhYmxlPElzV2l0aGluTGF0TG5nQm91bmRGdW5jdGlvbj4gPSB0aGlzLmJvdW5kJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gaXNXaXRoaW5MYXRMbmdCb3VuZEZ1bmN0aW9uKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG92ZXJsYXBzQm91bmRGdW5jdGlvbiQ6IE9ic2VydmFibGU8T3ZlcmxhcHNMYXRMbmdCb3VuZEZ1bmN0aW9uPiA9IHRoaXMudmlydHVhbEJvdW5kJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gb3ZlcmxhcHNMYXRMbmdCb3VuZEZ1bmN0aW9uKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb21Ob3ckOiBPYnNlcnZhYmxlPE1hcGJveFpvb21MZXZlbD4gPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMubWFwSW5zdGFuY2UkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5fcmVuZGVyaW5nVGltZXIucGlwZShtYXAoKCkgPT4geC5nZXRab29tKCkgYXMgTWFwYm94Wm9vbUxldmVsKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSB6b29tJDogT2JzZXJ2YWJsZTxNYXBib3hab29tTGV2ZWw+ID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmlzWm9vbWluZyQucGlwZShcbiAgICAgICAgb25UcnVlVG9GYWxzZSgpLFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuem9vbU5vdyQucGlwZShmaXJzdCgpKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgcGl0Y2hOb3ckID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLm1hcEluc3RhbmNlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHgpID0+IHRoaXMuX21vdmluZ1RpbWVyLnBpcGUobWFwKCgpID0+IHguZ2V0UGl0Y2goKSkpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgcGl0Y2gkID0gdGhpcy53aGVuSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmlzUm90YXRpbmckLnBpcGUoXG4gICAgICAgIG9uVHJ1ZVRvRmFsc2UoKSxcbiAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBpdGNoTm93JC5waXBlKGZpcnN0KCkpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBiZWFyaW5nTm93JCA9IHRoaXMud2hlbkluaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5tYXBJbnN0YW5jZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLl9tb3ZpbmdUaW1lci5waXBlKG1hcCgoKSA9PiB4LmdldEJlYXJpbmcoKSkpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgYmVhcmluZyQgPSB0aGlzLndoZW5Jbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSb3RhdGluZyQucGlwZShcbiAgICAgICAgb25UcnVlVG9GYWxzZSgpLFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYmVhcmluZ05vdyQucGlwZShmaXJzdCgpKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgY29udGVudCQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5jb250ZW50KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzQ29udGVudCQgPSB0aGlzLmNvbnRlbnQkLnBpcGUobWFwKEJvb2xlYW4pKTtcblxuICByZWFkb25seSBjbGlja0V2ZW50JCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmNsaWNrRXZlbnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb3VibGVDbGlja0V2ZW50JCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmRvdWJsZUNsaWNrRXZlbnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSByaWdodENsaWNrRXZlbnQkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgucmlnaHRDbGlja0V2ZW50KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLy8gTUFSSzogU3RhdGUgQ2hhbmdlc1xuICByZWFkb25seSBzZXRNYXJnaW4gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtYXJnaW46IE1heWJlPERieE1hcGJveE1hcmdpbkNhbGN1bGF0aW9uU2l6aW5nPikgPT4gKHsgLi4uc3RhdGUsIG1hcmdpbjogbWFyZ2luICYmIChtYXJnaW4ucmlnaHRNYXJnaW4gIT09IDAgfHwgbWFyZ2luLmxlZnRNYXJnaW4gIT09IDApID8gbWFyZ2luIDogdW5kZWZpbmVkIH0pKTtcbiAgcmVhZG9ubHkgc2V0TWluaW11bVZpcnR1YWxWaWV3cG9ydFNpemUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtaW5pbXVtVmlydHVhbFZpZXdwb3J0U2l6ZTogTWF5YmU8UGFydGlhbDxWZWN0b3I+PikgPT4gKHsgLi4uc3RhdGUsIG1pbmltdW1WaXJ0dWFsVmlld3BvcnRTaXplIH0pKTtcbiAgcmVhZG9ubHkgc2V0VXNlVmlydHVhbEJvdW5kID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgdXNlVmlydHVhbEJvdW5kOiBib29sZWFuKSA9PiAoeyAuLi5zdGF0ZSwgdXNlVmlydHVhbEJvdW5kIH0pKTtcbiAgcmVhZG9ubHkgc2V0Qm91bmRSZWZyZXNoU2V0dGluZ3MgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBib3VuZFJlZnJlc2hTZXR0aW5nczogUGFydGlhbDxEYnhNYXBib3hTdG9yZUJvdW5kUmVmcmVzaFNldHRpbmdzPikgPT4gKHsgLi4uc3RhdGUsIGJvdW5kUmVmcmVzaFNldHRpbmdzOiB7IC4uLnN0YXRlLmJvdW5kUmVmcmVzaFNldHRpbmdzLCAuLi5ib3VuZFJlZnJlc2hTZXR0aW5ncyB9IH0pKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRNYXBTZXJ2aWNlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgbWFwU2VydmljZTogTWF5YmU8TWFwU2VydmljZT4pID0+ICh7IG1hcFNlcnZpY2UsIG1vdmVTdGF0ZTogJ2luaXQnLCBsaWZlY3ljbGVTdGF0ZTogJ2luaXQnLCB6b29tU3RhdGU6ICdpbml0Jywgcm90YXRlU3RhdGU6ICdpbml0JywgcmV0YWluQ29udGVudDogc3RhdGUucmV0YWluQ29udGVudCwgY29udGVudDogc3RhdGUucmV0YWluQ29udGVudCA/IHN0YXRlLmNvbnRlbnQgOiB1bmRlZmluZWQsIHVzZVZpcnR1YWxCb3VuZDogc3RhdGUudXNlVmlydHVhbEJvdW5kLCBib3VuZFJlZnJlc2hTZXR0aW5nczogc3RhdGUuYm91bmRSZWZyZXNoU2V0dGluZ3MgfSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRMaWZlY3ljbGVTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGxpZmVjeWNsZVN0YXRlOiBNYXBib3hNYXBMaWZlY3ljbGVTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGxpZmVjeWNsZVN0YXRlIH0pKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0TW92ZVN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgbW92ZVN0YXRlOiBNYXBib3hNYXBNb3ZlU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBtb3ZlU3RhdGUgfSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRab29tU3RhdGUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCB6b29tU3RhdGU6IE1hcGJveE1hcFpvb21TdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIHpvb21TdGF0ZSB9KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NldFJvdGF0ZVN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcm90YXRlU3RhdGU6IE1hcGJveE1hcFJvdGF0ZVN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgcm90YXRlU3RhdGUgfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NldE1hcENhbnZhc1NpemUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtYXBDYW52YXNTaXplOiBWZWN0b3IpID0+ICh7IC4uLnN0YXRlLCBtYXBDYW52YXNTaXplIH0pKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0Q2xpY2tFdmVudCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGNsaWNrRXZlbnQ6IERieE1hcGJveENsaWNrRXZlbnQpID0+ICh7IC4uLnN0YXRlLCBjbGlja0V2ZW50IH0pKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0RG91YmxlQ2xpY2tFdmVudCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRvdWJsZUNsaWNrRXZlbnQ6IERieE1hcGJveENsaWNrRXZlbnQpID0+ICh7IC4uLnN0YXRlLCBkb3VibGVDbGlja0V2ZW50IH0pKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0UmlnaHRDbGlja0V2ZW50ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmlnaHRDbGlja0V2ZW50OiBEYnhNYXBib3hDbGlja0V2ZW50KSA9PiAoeyAuLi5zdGF0ZSwgcmlnaHRDbGlja0V2ZW50IH0pKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZXRFcnJvciA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGVycm9yOiBFcnJvcikgPT4gKHsgLi4uc3RhdGUsIGVycm9yIH0pKTtcblxuICByZWFkb25seSBjbGVhckNvbnRlbnQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgY29udGVudDogdW5kZWZpbmVkIH0pKTtcbiAgcmVhZG9ubHkgc2V0Q29udGVudCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGNvbnRlbnQ6IE1heWJlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzx1bmtub3duPj4pID0+ICh7IC4uLnN0YXRlLCBjb250ZW50IH0pKTtcbn1cbiJdfQ==
@@ -9,19 +9,19 @@ export class DbxMapboxMapStoreProviderBlock {
9
9
  constructor(dbxMapboxMapStore) {
10
10
  this.dbxMapboxMapStore = dbxMapboxMapStore;
11
11
  }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStoreProviderBlock, deps: [{ token: i1.DbxMapboxMapStore, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStoreProviderBlock }); }
12
14
  }
13
- DbxMapboxMapStoreProviderBlock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStoreProviderBlock, deps: [{ token: i1.DbxMapboxMapStore, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
14
- DbxMapboxMapStoreProviderBlock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStoreProviderBlock });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStoreProviderBlock, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStoreProviderBlock, decorators: [{
16
16
  type: Injectable
17
17
  }], ctorParameters: function () { return [{ type: i1.DbxMapboxMapStore, decorators: [{
18
18
  type: SkipSelf
19
19
  }] }]; } });
20
20
  export class DbxMapboxMapStoreInjectionBlockDirective {
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStoreInjectionBlockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
22
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DbxMapboxMapStoreInjectionBlockDirective, selector: "[dbxMapboxStoreParentBlocker]", providers: [DbxMapboxMapStoreProviderBlock], ngImport: i0 }); }
21
23
  }
22
- DbxMapboxMapStoreInjectionBlockDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStoreInjectionBlockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
- DbxMapboxMapStoreInjectionBlockDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DbxMapboxMapStoreInjectionBlockDirective, selector: "[dbxMapboxStoreParentBlocker]", providers: [DbxMapboxMapStoreProviderBlock], ngImport: i0 });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMapStoreInjectionBlockDirective, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxMapboxMapStoreInjectionBlockDirective, decorators: [{
25
25
  type: Directive,
26
26
  args: [{
27
27
  selector: '[dbxMapboxStoreParentBlocker]',
@@ -49,4 +49,4 @@ export function provideMapboxStoreIfParentIsUnavailable() {
49
49
  deps: [Injector, [new Optional(), DbxMapboxMapStoreProviderBlock], [new Optional(), new SkipSelf(), DbxMapboxMapStore]]
50
50
  };
51
51
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LnN0b3JlLnByb3ZpZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL21hcGJveC5zdG9yZS5wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQVksUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFbkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDLFlBQWlDLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQzs7NEhBRDlELDhCQUE4QjtnSUFBOUIsOEJBQThCOzRGQUE5Qiw4QkFBOEI7a0JBRDFDLFVBQVU7OzBCQUVJLFFBQVE7O0FBT3ZCLE1BQU0sT0FBTyx3Q0FBd0M7O3NJQUF4Qyx3Q0FBd0M7MEhBQXhDLHdDQUF3Qyx3REFGeEMsQ0FBQyw4QkFBOEIsQ0FBQzs0RkFFaEMsd0NBQXdDO2tCQUpwRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO2lCQUM1Qzs7QUFHRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsdUNBQXVDO0lBQ3JELE9BQU87UUFDTCxPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLGNBQXdCLEVBQUUsK0JBQWdFLEVBQUUsaUJBQXFDLEVBQUUsRUFBRTtZQUNoSixJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsSUFBSSwrQkFBK0IsSUFBSSxJQUFJLElBQUksK0JBQStCLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsRUFBRTtnQkFDbkssd0NBQXdDO2dCQUN4QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDckQ7WUFFRCxPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztLQUN4SCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsLCBQcm92aWRlciwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieE1hcGJveE1hcFN0b3JlIH0gZnJvbSAnLi9tYXBib3guc3RvcmUnO1xuXG4vKipcbiAqIFRva2VuIHVzZWQgYnkgcHJvdmlkZU1hcGJveFN0b3JlSWZEb2VzTm90RXhpc3QoKSB0byBwcmV2ZW50IGluamVjdGluZyBhIHBhcmVudCBEYnhNYXBib3hNYXBTdG9yZSBpbnRvIHRoZSBjaGlsZCB2aWV3LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TWFwU3RvcmVQcm92aWRlckJsb2NrIHtcbiAgY29uc3RydWN0b3IoQFNraXBTZWxmKCkgcmVhZG9ubHkgZGJ4TWFwYm94TWFwU3RvcmU6IERieE1hcGJveE1hcFN0b3JlKSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4TWFwYm94U3RvcmVQYXJlbnRCbG9ja2VyXScsXG4gIHByb3ZpZGVyczogW0RieE1hcGJveE1hcFN0b3JlUHJvdmlkZXJCbG9ja11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TWFwU3RvcmVJbmplY3Rpb25CbG9ja0RpcmVjdGl2ZSB7fVxuXG4vKipcbiAqIENyZWF0ZXMgYSBQcm92aWRlciB0aGF0IGluaXRpYWxpemVzIGEgbmV3IERieE1hcGJveE1hcFN0b3JlIGlmIGEgcGFyZW50IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIElmIGEgRGJ4TWFwYm94TWFwU3RvcmVJbmplY3Rpb25CbG9jayBpcyBhdmFpbGFibGUgaW4gdGhlIGNvbnRleHQsIGFuZCByZWZlcmVuY2VzIHRoZSBzYW1lIGRieE1hcGJveE1hcFN0b3JlIHRoYXQgaXMgYXR0ZW1wdGluZyB0byBiZSBpbmplY3RlZCwgYSBuZXcgRGJ4TWFwYm94TWFwU3RvcmUgaXMgY3JlYXRlZC5cbiAqXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU1hcGJveFN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlKCk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBEYnhNYXBib3hNYXBTdG9yZSxcbiAgICB1c2VGYWN0b3J5OiAocGFyZW50SW5qZWN0b3I6IEluamVjdG9yLCBkYnhNYXBib3hNYXBTdG9yZUluamVjdGlvbkJsb2NrPzogRGJ4TWFwYm94TWFwU3RvcmVQcm92aWRlckJsb2NrLCBkYnhNYXBib3hNYXBTdG9yZT86IERieE1hcGJveE1hcFN0b3JlKSA9PiB7XG4gICAgICBpZiAoIWRieE1hcGJveE1hcFN0b3JlIHx8IChkYnhNYXBib3hNYXBTdG9yZSAmJiBkYnhNYXBib3hNYXBTdG9yZUluamVjdGlvbkJsb2NrICE9IG51bGwgJiYgZGJ4TWFwYm94TWFwU3RvcmVJbmplY3Rpb25CbG9jay5kYnhNYXBib3hNYXBTdG9yZSA9PT0gZGJ4TWFwYm94TWFwU3RvcmUpKSB7XG4gICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBkYnhNYXBib3hNYXBTdG9yZSB0byB1c2VcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoeyBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERieE1hcGJveE1hcFN0b3JlIH1dLCBwYXJlbnQ6IHBhcmVudEluamVjdG9yIH0pO1xuICAgICAgICBkYnhNYXBib3hNYXBTdG9yZSA9IGluamVjdG9yLmdldChEYnhNYXBib3hNYXBTdG9yZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYnhNYXBib3hNYXBTdG9yZTtcbiAgICB9LFxuICAgIGRlcHM6IFtJbmplY3RvciwgW25ldyBPcHRpb25hbCgpLCBEYnhNYXBib3hNYXBTdG9yZVByb3ZpZGVyQmxvY2tdLCBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBEYnhNYXBib3hNYXBTdG9yZV1dXG4gIH07XG59XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LnN0b3JlLnByb3ZpZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL21hcGJveC5zdG9yZS5wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQVksUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFbkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDLFlBQWlDLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQzsrR0FEOUQsOEJBQThCO21IQUE5Qiw4QkFBOEI7OzRGQUE5Qiw4QkFBOEI7a0JBRDFDLFVBQVU7OzBCQUVJLFFBQVE7O0FBT3ZCLE1BQU0sT0FBTyx3Q0FBd0M7K0dBQXhDLHdDQUF3QzttR0FBeEMsd0NBQXdDLHdEQUZ4QyxDQUFDLDhCQUE4QixDQUFDOzs0RkFFaEMsd0NBQXdDO2tCQUpwRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO2lCQUM1Qzs7QUFHRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsdUNBQXVDO0lBQ3JELE9BQU87UUFDTCxPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLGNBQXdCLEVBQUUsK0JBQWdFLEVBQUUsaUJBQXFDLEVBQUUsRUFBRTtZQUNoSixJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsSUFBSSwrQkFBK0IsSUFBSSxJQUFJLElBQUksK0JBQStCLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsRUFBRTtnQkFDbkssd0NBQXdDO2dCQUN4QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDckQ7WUFFRCxPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztLQUN4SCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsLCBQcm92aWRlciwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieE1hcGJveE1hcFN0b3JlIH0gZnJvbSAnLi9tYXBib3guc3RvcmUnO1xuXG4vKipcbiAqIFRva2VuIHVzZWQgYnkgcHJvdmlkZU1hcGJveFN0b3JlSWZEb2VzTm90RXhpc3QoKSB0byBwcmV2ZW50IGluamVjdGluZyBhIHBhcmVudCBEYnhNYXBib3hNYXBTdG9yZSBpbnRvIHRoZSBjaGlsZCB2aWV3LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TWFwU3RvcmVQcm92aWRlckJsb2NrIHtcbiAgY29uc3RydWN0b3IoQFNraXBTZWxmKCkgcmVhZG9ubHkgZGJ4TWFwYm94TWFwU3RvcmU6IERieE1hcGJveE1hcFN0b3JlKSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4TWFwYm94U3RvcmVQYXJlbnRCbG9ja2VyXScsXG4gIHByb3ZpZGVyczogW0RieE1hcGJveE1hcFN0b3JlUHJvdmlkZXJCbG9ja11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TWFwU3RvcmVJbmplY3Rpb25CbG9ja0RpcmVjdGl2ZSB7fVxuXG4vKipcbiAqIENyZWF0ZXMgYSBQcm92aWRlciB0aGF0IGluaXRpYWxpemVzIGEgbmV3IERieE1hcGJveE1hcFN0b3JlIGlmIGEgcGFyZW50IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIElmIGEgRGJ4TWFwYm94TWFwU3RvcmVJbmplY3Rpb25CbG9jayBpcyBhdmFpbGFibGUgaW4gdGhlIGNvbnRleHQsIGFuZCByZWZlcmVuY2VzIHRoZSBzYW1lIGRieE1hcGJveE1hcFN0b3JlIHRoYXQgaXMgYXR0ZW1wdGluZyB0byBiZSBpbmplY3RlZCwgYSBuZXcgRGJ4TWFwYm94TWFwU3RvcmUgaXMgY3JlYXRlZC5cbiAqXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU1hcGJveFN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlKCk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBEYnhNYXBib3hNYXBTdG9yZSxcbiAgICB1c2VGYWN0b3J5OiAocGFyZW50SW5qZWN0b3I6IEluamVjdG9yLCBkYnhNYXBib3hNYXBTdG9yZUluamVjdGlvbkJsb2NrPzogRGJ4TWFwYm94TWFwU3RvcmVQcm92aWRlckJsb2NrLCBkYnhNYXBib3hNYXBTdG9yZT86IERieE1hcGJveE1hcFN0b3JlKSA9PiB7XG4gICAgICBpZiAoIWRieE1hcGJveE1hcFN0b3JlIHx8IChkYnhNYXBib3hNYXBTdG9yZSAmJiBkYnhNYXBib3hNYXBTdG9yZUluamVjdGlvbkJsb2NrICE9IG51bGwgJiYgZGJ4TWFwYm94TWFwU3RvcmVJbmplY3Rpb25CbG9jay5kYnhNYXBib3hNYXBTdG9yZSA9PT0gZGJ4TWFwYm94TWFwU3RvcmUpKSB7XG4gICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBkYnhNYXBib3hNYXBTdG9yZSB0byB1c2VcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoeyBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERieE1hcGJveE1hcFN0b3JlIH1dLCBwYXJlbnQ6IHBhcmVudEluamVjdG9yIH0pO1xuICAgICAgICBkYnhNYXBib3hNYXBTdG9yZSA9IGluamVjdG9yLmdldChEYnhNYXBib3hNYXBTdG9yZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYnhNYXBib3hNYXBTdG9yZTtcbiAgICB9LFxuICAgIGRlcHM6IFtJbmplY3RvciwgW25ldyBPcHRpb25hbCgpLCBEYnhNYXBib3hNYXBTdG9yZVByb3ZpZGVyQmxvY2tdLCBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBEYnhNYXBib3hNYXBTdG9yZV1dXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { bounds } from '@placemarkio/geo-viewport';
2
+ export function mapboxViewportBoundFunction(config) {
3
+ const { mapCanvasSize, tileSize = 512 } = config;
4
+ const dimensions = [mapCanvasSize.x, mapCanvasSize.y];
5
+ return ({ center, zoom }) => {
6
+ const boundingBox = bounds([center.lng, center.lat], zoom, dimensions, tileSize);
7
+ const [swLng, swLat, neLng, neLat] = boundingBox;
8
+ const result = {
9
+ sw: { lat: swLat, lng: swLng },
10
+ ne: { lat: neLat, lng: neLng }
11
+ };
12
+ return result;
13
+ };
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL21hcGJveC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQThCbkQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQXlDO0lBQ25GLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNqRCxNQUFNLFVBQVUsR0FBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUMxQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxXQUFXLENBQUM7UUFFakQsTUFBTSxNQUFNLEdBQUc7WUFDYixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDOUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1NBQy9CLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGF0TG5nQm91bmQsIExhdExuZ1BvaW50LCBWZWN0b3IsIFZlY3RvclR1cGxlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBib3VuZHMgfSBmcm9tICdAcGxhY2VtYXJraW8vZ2VvLXZpZXdwb3J0JztcbmltcG9ydCB7IE1hcGJveFRpbGVTaXplLCBNYXBib3hab29tTGV2ZWwgfSBmcm9tICcuL21hcGJveCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uQ29uZmlnIHtcbiAgcmVhZG9ubHkgbWFwQ2FudmFzU2l6ZTogVmVjdG9yO1xuICAvKipcbiAgICogTWFwYm94IHRpbGVzaXplIGJlaW5nIHVzZWQuIERlZmF1bHRzIHRvIDUxMng1MTIuXG4gICAqL1xuICByZWFkb25seSB0aWxlU2l6ZT86IE1hcGJveFRpbGVTaXplO1xufVxuXG4vKipcbiAqIElucHV0IGZvciBNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uSW5wdXQge1xuICAvKipcbiAgICogQ2VudGVyIG9mIHRoZSB2aWV3cG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgY2VudGVyOiBMYXRMbmdQb2ludDtcbiAgLyoqXG4gICAqIFpvb20gbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IHpvb206IE1hcGJveFpvb21MZXZlbDtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNhbGN1bGF0ZSB0aGUgYm91bmRzIG9mIGEgdmlldy9vYmplY3QgZ2l2ZW4gdGhlIGlucHV0IE1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbklucHV0LlxuICovXG5leHBvcnQgdHlwZSBNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24gPSAoaW5wdXQ6IE1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbklucHV0KSA9PiBMYXRMbmdCb3VuZDtcblxuZXhwb3J0IGZ1bmN0aW9uIG1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbihjb25maWc6IE1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbkNvbmZpZyk6IE1hcGJveFZpZXdwb3J0Qm91bmRGdW5jdGlvbiB7XG4gIGNvbnN0IHsgbWFwQ2FudmFzU2l6ZSwgdGlsZVNpemUgPSA1MTIgfSA9IGNvbmZpZztcbiAgY29uc3QgZGltZW5zaW9uczogVmVjdG9yVHVwbGUgPSBbbWFwQ2FudmFzU2l6ZS54LCBtYXBDYW52YXNTaXplLnldO1xuICByZXR1cm4gKHsgY2VudGVyLCB6b29tIH0pID0+IHtcbiAgICBjb25zdCBib3VuZGluZ0JveCA9IGJvdW5kcyhbY2VudGVyLmxuZywgY2VudGVyLmxhdF0sIHpvb20sIGRpbWVuc2lvbnMsIHRpbGVTaXplKTtcbiAgICBjb25zdCBbc3dMbmcsIHN3TGF0LCBuZUxuZywgbmVMYXRdID0gYm91bmRpbmdCb3g7XG5cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBzdzogeyBsYXQ6IHN3TGF0LCBsbmc6IHN3TG5nIH0sXG4gICAgICBuZTogeyBsYXQ6IG5lTGF0LCBsbmc6IG5lTG5nIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cbiJdfQ==
@@ -15,15 +15,15 @@ export class DbxTableDateHeaderComponent {
15
15
  set date(date) {
16
16
  this._date = date;
17
17
  }
18
- }
19
- DbxTableDateHeaderComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- DbxTableDateHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxTableDateHeaderComponent, selector: "ng-component", ngImport: i0, template: `
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxTableDateHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxTableDateHeaderComponent, selector: "ng-component", ngImport: i0, template: `
21
20
  <div *ngIf="date" class="dbx-table-date-column-header">
22
21
  <span class="dbx-table-date-column-header-left">{{ date | date: left }}</span>
23
22
  <span>{{ date | date: right }}</span>
24
23
  </div>
25
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateHeaderComponent, decorators: [{
24
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxTableDateHeaderComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{
29
29
  template: `
@@ -46,4 +46,4 @@ export function dbxTableDateHeaderInjectionFactory() {
46
46
  return config;
47
47
  };
48
48
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS50YWJsZS5jb2x1bW4uaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi9kYXRlL2RhdGUudGFibGUuY29sdW1uLmhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBS25FOztHQUVHO0FBVUgsTUFBTSxPQUFPLDJCQUEyQjtJQU10QztRQUxBLFNBQUksR0FBRyxHQUFHLENBQUM7UUFDWCxVQUFLLEdBQUcsT0FBTyxDQUFDO0lBSUQsQ0FBQztJQUVoQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQWlCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7O3lIQWRVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLG9EQVI1Qjs7Ozs7R0FLVDs0RkFHVSwyQkFBMkI7a0JBVHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7QUFrQkQsTUFBTSxVQUFVLGtDQUFrQztJQUNoRCxPQUFPLENBQUMsTUFBNEIsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sTUFBTSxHQUE2RDtZQUN2RSxjQUFjLEVBQUUsMkJBQTJCO1lBQzNDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZ0ZhY3RvcnkgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW4gfSBmcm9tICcuLi90YWJsZSc7XG5cbi8qKlxuICogQSB0YWJsZSBoZWFkZXIgY29tcG9uZW50IHVzZWQgZm9yIHJlbmRlcmluZyBkYXRlIHZhbHVlcyBvbiB0aGUgaGVhZGVyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICpuZ0lmPVwiZGF0ZVwiIGNsYXNzPVwiZGJ4LXRhYmxlLWRhdGUtY29sdW1uLWhlYWRlclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkYngtdGFibGUtZGF0ZS1jb2x1bW4taGVhZGVyLWxlZnRcIj57eyBkYXRlIHwgZGF0ZTogbGVmdCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7IGRhdGUgfCBkYXRlOiByaWdodCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50IHtcbiAgbGVmdCA9ICdFJztcbiAgcmlnaHQgPSAnTU1NIGQnO1xuXG4gIHByaXZhdGUgX2RhdGU6IE1heWJlPERhdGU+O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIHNldCBkYXRlKGRhdGU6IE1heWJlPERhdGU+KSB7XG4gICAgdGhpcy5fZGF0ZSA9IGRhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieFRhYmxlRGF0ZUhlYWRlckluamVjdGlvbkZhY3RvcnkoKTogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnRmFjdG9yeTxEYnhUYWJsZUNvbHVtbjxEYXRlPiwgRGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50PiB7XG4gIHJldHVybiAoY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxEYXRlPikgPT4ge1xuICAgIGNvbnN0IGNvbmZpZzogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPERieFRhYmxlRGF0ZUhlYWRlckNvbXBvbmVudD4gPSB7XG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50LFxuICAgICAgaW5pdDogKHgpID0+IHtcbiAgICAgICAgeC5kYXRlID0gY29sdW1uLm1ldGE7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH07XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS50YWJsZS5jb2x1bW4uaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi9kYXRlL2RhdGUudGFibGUuY29sdW1uLmhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBS25FOztHQUVHO0FBVUgsTUFBTSxPQUFPLDJCQUEyQjtJQU10QztRQUxBLFNBQUksR0FBRyxHQUFHLENBQUM7UUFDWCxVQUFLLEdBQUcsT0FBTyxDQUFDO0lBSUQsQ0FBQztJQUVoQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQWlCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7K0dBZFUsMkJBQTJCO21HQUEzQiwyQkFBMkIsb0RBUjVCOzs7OztHQUtUOzs0RkFHVSwyQkFBMkI7a0JBVHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7QUFrQkQsTUFBTSxVQUFVLGtDQUFrQztJQUNoRCxPQUFPLENBQUMsTUFBNEIsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sTUFBTSxHQUE2RDtZQUN2RSxjQUFjLEVBQUUsMkJBQTJCO1lBQzNDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZ0ZhY3RvcnkgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW4gfSBmcm9tICcuLi90YWJsZSc7XG5cbi8qKlxuICogQSB0YWJsZSBoZWFkZXIgY29tcG9uZW50IHVzZWQgZm9yIHJlbmRlcmluZyBkYXRlIHZhbHVlcyBvbiB0aGUgaGVhZGVyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICpuZ0lmPVwiZGF0ZVwiIGNsYXNzPVwiZGJ4LXRhYmxlLWRhdGUtY29sdW1uLWhlYWRlclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkYngtdGFibGUtZGF0ZS1jb2x1bW4taGVhZGVyLWxlZnRcIj57eyBkYXRlIHwgZGF0ZTogbGVmdCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7IGRhdGUgfCBkYXRlOiByaWdodCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50IHtcbiAgbGVmdCA9ICdFJztcbiAgcmlnaHQgPSAnTU1NIGQnO1xuXG4gIHByaXZhdGUgX2RhdGU6IE1heWJlPERhdGU+O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIHNldCBkYXRlKGRhdGU6IE1heWJlPERhdGU+KSB7XG4gICAgdGhpcy5fZGF0ZSA9IGRhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieFRhYmxlRGF0ZUhlYWRlckluamVjdGlvbkZhY3RvcnkoKTogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnRmFjdG9yeTxEYnhUYWJsZUNvbHVtbjxEYXRlPiwgRGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50PiB7XG4gIHJldHVybiAoY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxEYXRlPikgPT4ge1xuICAgIGNvbnN0IGNvbmZpZzogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPERieFRhYmxlRGF0ZUhlYWRlckNvbXBvbmVudD4gPSB7XG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50LFxuICAgICAgaW5pdDogKHgpID0+IHtcbiAgICAgICAgeC5kYXRlID0gY29sdW1uLm1ldGE7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH07XG59XG4iXX0=