@kepler.gl/components 3.3.0-alpha.0 → 3.3.0-alpha.2

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 (299) hide show
  1. package/dist/annotations/annotation-node.d.ts +11 -0
  2. package/dist/annotations/annotation-node.js +145 -0
  3. package/dist/annotations/annotation-overlay.d.ts +16 -0
  4. package/dist/annotations/annotation-overlay.js +166 -0
  5. package/dist/annotations/annotation-panel.d.ts +24 -0
  6. package/dist/annotations/annotation-panel.js +362 -0
  7. package/dist/annotations/annotation-text.d.ts +16 -0
  8. package/dist/annotations/annotation-text.js +150 -0
  9. package/dist/annotations/annotation-utils.d.ts +39 -0
  10. package/dist/annotations/annotation-utils.js +156 -0
  11. package/dist/annotations/index.d.ts +7 -0
  12. package/dist/annotations/index.js +53 -0
  13. package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
  14. package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
  15. package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
  16. package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
  17. package/dist/annotations/lexical-editor/index.d.ts +7 -0
  18. package/dist/annotations/lexical-editor/index.js +78 -0
  19. package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
  20. package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
  21. package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
  22. package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
  23. package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
  24. package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
  25. package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
  26. package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
  27. package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
  28. package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
  29. package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
  30. package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
  31. package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
  32. package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
  33. package/dist/bottom-widget.d.ts +1 -1
  34. package/dist/bottom-widget.js +12 -6
  35. package/dist/common/action-panel.js +1 -1
  36. package/dist/common/animation-control/animation-control.d.ts +1 -0
  37. package/dist/common/animation-control/animation-control.js +3 -1
  38. package/dist/common/animation-control/animation-controller.js +8 -6
  39. package/dist/common/animation-control/export-video-control.d.ts +9 -0
  40. package/dist/common/animation-control/export-video-control.js +43 -0
  41. package/dist/common/animation-control/playback-controls.d.ts +4 -2
  42. package/dist/common/animation-control/playback-controls.js +7 -4
  43. package/dist/common/checkbox.d.ts +5 -21
  44. package/dist/common/checkbox.js +58 -70
  45. package/dist/common/color-legend.d.ts +1 -1
  46. package/dist/common/color-legend.js +3 -3
  47. package/dist/common/data-table/canvas.d.ts +1 -1
  48. package/dist/common/data-table/index.d.ts +2 -2
  49. package/dist/common/data-table/index.js +3 -3
  50. package/dist/common/dnd-layer-items.d.ts +4 -0
  51. package/dist/common/dnd-layer-items.js +6 -2
  52. package/dist/common/error-boundary.d.ts +1 -1
  53. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  54. package/dist/common/file-uploader/file-upload.js +4 -4
  55. package/dist/common/flex-container.d.ts +15 -7
  56. package/dist/common/histogram-plot.js +102 -53
  57. package/dist/common/icon-button.d.ts +53 -6
  58. package/dist/common/icons/3d-models/airplane.d.ts +14 -0
  59. package/dist/common/icons/3d-models/airplane.js +104 -0
  60. package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
  61. package/dist/common/icons/3d-models/bicycle.js +426 -0
  62. package/dist/common/icons/3d-models/boeing.d.ts +14 -0
  63. package/dist/common/icons/3d-models/boeing.js +119 -0
  64. package/dist/common/icons/3d-models/car.d.ts +14 -0
  65. package/dist/common/icons/3d-models/car.js +110 -0
  66. package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
  67. package/dist/common/icons/3d-models/cargoship.js +246 -0
  68. package/dist/common/icons/3d-models/evtol.d.ts +14 -0
  69. package/dist/common/icons/3d-models/evtol.js +134 -0
  70. package/dist/common/icons/3d-models/glider.d.ts +14 -0
  71. package/dist/common/icons/3d-models/glider.js +62 -0
  72. package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
  73. package/dist/common/icons/3d-models/helicopter.js +110 -0
  74. package/dist/common/icons/3d-models/scooter.d.ts +14 -0
  75. package/dist/common/icons/3d-models/scooter.js +159 -0
  76. package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
  77. package/dist/common/icons/3d-models/semitruck.js +177 -0
  78. package/dist/common/icons/3d-models/truck.d.ts +14 -0
  79. package/dist/common/icons/3d-models/truck.js +122 -0
  80. package/dist/common/icons/anchor_window.d.ts +1 -8
  81. package/dist/common/icons/anchor_window.js +17 -10
  82. package/dist/common/icons/annotation-text.d.ts +9 -0
  83. package/dist/common/icons/annotation-text.js +56 -0
  84. package/dist/common/icons/arrow-down-full.d.ts +2 -1
  85. package/dist/common/icons/arrow-down-full.js +1 -1
  86. package/dist/common/icons/folder.d.ts +10 -0
  87. package/dist/common/icons/folder.js +51 -0
  88. package/dist/common/icons/index.d.ts +2 -0
  89. package/dist/common/icons/index.js +15 -1
  90. package/dist/common/icons/timeline-marker.d.ts +2 -1
  91. package/dist/common/icons/timeline-marker.js +1 -1
  92. package/dist/common/item-selector/chickleted-input.d.ts +1 -1
  93. package/dist/common/item-selector/chickleted-input.js +5 -5
  94. package/dist/common/item-selector/dropdown-list.d.ts +1 -1
  95. package/dist/common/item-selector/dropdown-list.js +1 -1
  96. package/dist/common/item-selector/dropdown-select.d.ts +13 -7
  97. package/dist/common/item-selector/item-selector.d.ts +1 -1
  98. package/dist/common/item-selector/item-selector.js +1 -1
  99. package/dist/common/item-selector/typeahead.d.ts +4 -4
  100. package/dist/common/item-selector/typeahead.js +1 -3
  101. package/dist/common/layout-splitter.d.ts +45 -0
  102. package/dist/common/layout-splitter.js +231 -0
  103. package/dist/common/line-chart.d.ts +10 -3
  104. package/dist/common/line-chart.js +219 -52
  105. package/dist/common/modal.d.ts +11 -5
  106. package/dist/common/modal.js +1 -1
  107. package/dist/common/portaled.d.ts +17 -17
  108. package/dist/common/range-plot.js +4 -2
  109. package/dist/common/range-slider.d.ts +2 -0
  110. package/dist/common/range-slider.js +108 -45
  111. package/dist/common/slider/mouse-event.d.ts +1 -1
  112. package/dist/common/slider/mouse-event.js +1 -2
  113. package/dist/common/slider/slider-bar-handle.d.ts +1 -1
  114. package/dist/common/slider/slider-bar-handle.js +1 -1
  115. package/dist/common/slider/slider-handle.d.ts +3 -3
  116. package/dist/common/slider/slider-handle.js +1 -1
  117. package/dist/common/slider/slider.d.ts +8 -4
  118. package/dist/common/slider/slider.js +78 -35
  119. package/dist/common/styled-components.d.ts +628 -178
  120. package/dist/common/styled-components.js +2 -2
  121. package/dist/common/time-range-slider-time-title.d.ts +1 -1
  122. package/dist/common/time-range-slider-time-title.js +5 -5
  123. package/dist/common/time-range-slider.d.ts +2 -1
  124. package/dist/common/time-range-slider.js +19 -7
  125. package/dist/common/timeline-helpers.d.ts +3 -0
  126. package/dist/common/timeline-helpers.js +57 -0
  127. package/dist/common/timeline-slider.js +21 -12
  128. package/dist/common/toolbar-item.js +5 -5
  129. package/dist/common/toolbar.d.ts +1 -1
  130. package/dist/common/toolbar.js +4 -4
  131. package/dist/common/vertical-toolbar.d.ts +13 -3
  132. package/dist/container.d.ts +3 -2
  133. package/dist/container.js +2 -2
  134. package/dist/context.d.ts +1 -1
  135. package/dist/context.js +1 -1
  136. package/dist/dnd-context.d.ts +4 -3
  137. package/dist/dnd-context.js +64 -9
  138. package/dist/effects/compact-color-picker.d.ts +1 -1
  139. package/dist/effects/effect-configurator.d.ts +5 -6
  140. package/dist/effects/effect-configurator.js +213 -52
  141. package/dist/effects/effect-manager.js +3 -3
  142. package/dist/effects/effect-panel-header.js +34 -17
  143. package/dist/effects/effect-panel.d.ts +4 -4
  144. package/dist/effects/effect-panel.js +61 -86
  145. package/dist/effects/effect-time-configurator.js +10 -10
  146. package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
  147. package/dist/effects/effect-type-dropdown-list.js +1 -1
  148. package/dist/effects/effect-type-list-item.d.ts +2 -1
  149. package/dist/effects/effect-type-list-item.js +23 -7
  150. package/dist/effects/effect-type-selector.d.ts +1 -0
  151. package/dist/effects/effect-type-selector.js +2 -2
  152. package/dist/effects/surface-fog-section.d.ts +14 -0
  153. package/dist/effects/surface-fog-section.js +263 -0
  154. package/dist/filters/components.d.ts +7 -5
  155. package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
  156. package/dist/filters/index.d.ts +1 -0
  157. package/dist/filters/index.js +8 -1
  158. package/dist/filters/polygon-filter.js +2 -2
  159. package/dist/filters/time-range-filter.js +3 -1
  160. package/dist/filters/time-widget-settings.d.ts +14 -0
  161. package/dist/filters/time-widget-settings.js +312 -0
  162. package/dist/filters/time-widget-top.d.ts +2 -3
  163. package/dist/filters/time-widget-top.js +32 -39
  164. package/dist/filters/time-widget.d.ts +3 -2
  165. package/dist/filters/time-widget.js +285 -9
  166. package/dist/filters/types.d.ts +3 -3
  167. package/dist/filters/types.js +1 -1
  168. package/dist/geocoder/geocoder.d.ts +4 -1
  169. package/dist/geocoder/geocoder.js +61 -14
  170. package/dist/geocoder-panel.d.ts +3 -2
  171. package/dist/geocoder-panel.js +11 -8
  172. package/dist/hooks/use-dnd-layers.d.ts +4 -3
  173. package/dist/hooks/use-dnd-layers.js +103 -42
  174. package/dist/index.d.ts +17 -2
  175. package/dist/index.js +161 -9
  176. package/dist/injector.d.ts +1 -1
  177. package/dist/kepler-gl.d.ts +179 -27
  178. package/dist/kepler-gl.js +91 -12
  179. package/dist/loading-indicator.d.ts +3 -1
  180. package/dist/loading-indicator.js +6 -3
  181. package/dist/map/annotations/annotation-control.d.ts +16 -0
  182. package/dist/map/annotations/annotation-control.js +56 -0
  183. package/dist/map/layer-hover-info.d.ts +7 -3
  184. package/dist/map/layer-hover-info.js +124 -55
  185. package/dist/map/locale-panel.d.ts +1 -1
  186. package/dist/map/locale-panel.js +2 -2
  187. package/dist/map/map-control-panel.js +3 -2
  188. package/dist/map/map-control-toolbar.d.ts +33 -8
  189. package/dist/map/map-control.d.ts +14 -4
  190. package/dist/map/map-control.js +18 -8
  191. package/dist/map/map-draw-panel.d.ts +1 -1
  192. package/dist/map/map-draw-panel.js +7 -4
  193. package/dist/map/map-legend-panel.d.ts +11 -2
  194. package/dist/map/map-legend-panel.js +25 -8
  195. package/dist/map/map-legend.d.ts +20 -3
  196. package/dist/map/map-legend.js +145 -31
  197. package/dist/map/map-navigation-control.d.ts +13 -0
  198. package/dist/map/map-navigation-control.js +143 -0
  199. package/dist/map/map-popover.js +2 -2
  200. package/dist/map/split-map-button.d.ts +6 -1
  201. package/dist/map/split-map-button.js +113 -19
  202. package/dist/map-container.d.ts +13 -3
  203. package/dist/map-container.js +269 -59
  204. package/dist/map-view-state-context.d.ts +1 -0
  205. package/dist/map-view-state-context.js +1 -1
  206. package/dist/maps-layout.d.ts +3 -0
  207. package/dist/maps-layout.js +86 -26
  208. package/dist/modal-container.d.ts +3 -2
  209. package/dist/modal-container.js +28 -6
  210. package/dist/modals/add-map-style-modal.js +173 -200
  211. package/dist/modals/cloud-tile.d.ts +1 -2
  212. package/dist/modals/data-table-modal.d.ts +1 -1
  213. package/dist/modals/data-table-modal.js +146 -194
  214. package/dist/modals/export-data-modal.js +117 -139
  215. package/dist/modals/export-map-modal/components.d.ts +9 -5
  216. package/dist/modals/export-video-modal.d.ts +28 -0
  217. package/dist/modals/export-video-modal.js +371 -0
  218. package/dist/modals/export-video-modal.spec.d.ts +1 -0
  219. package/dist/modals/export-video-modal.spec.js +686 -0
  220. package/dist/modals/fog-height-animation.d.ts +8 -0
  221. package/dist/modals/fog-height-animation.js +97 -0
  222. package/dist/modals/hubble-utils.d.ts +41 -0
  223. package/dist/modals/hubble-utils.js +294 -0
  224. package/dist/modals/hubble-utils.spec.d.ts +1 -0
  225. package/dist/modals/hubble-utils.spec.js +397 -0
  226. package/dist/modals/modal-dialog.d.ts +1 -1
  227. package/dist/modals/share-map-modal.d.ts +2 -4
  228. package/dist/modals/swipe-composite-utils.d.ts +10 -0
  229. package/dist/modals/swipe-composite-utils.js +108 -0
  230. package/dist/modals/swipe-export-settings.d.ts +24 -0
  231. package/dist/modals/swipe-export-settings.js +370 -0
  232. package/dist/modals/swipe-export-video-container.d.ts +122 -0
  233. package/dist/modals/swipe-export-video-container.js +630 -0
  234. package/dist/modals/swipe-export-video-preview.d.ts +68 -0
  235. package/dist/modals/swipe-export-video-preview.js +339 -0
  236. package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
  237. package/dist/modals/tilesets-modals/load-tileset.js +21 -10
  238. package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
  239. package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
  240. package/dist/modals/tilesets-modals/tileset-raster-form.js +90 -11
  241. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +3 -2
  242. package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
  243. package/dist/modals/tilesets-modals/tileset-wms-form.js +4 -3
  244. package/dist/notification-panel/notification-item.d.ts +1 -53
  245. package/dist/notification-panel/notification-item.js +47 -75
  246. package/dist/notification-panel.d.ts +1 -1
  247. package/dist/notification-panel.js +20 -42
  248. package/dist/plot-container.js +7 -6
  249. package/dist/side-panel/add-by-dataset-button.js +3 -3
  250. package/dist/side-panel/common/dataset-info.js +2 -2
  251. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
  252. package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
  253. package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
  254. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
  255. package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
  256. package/dist/side-panel/layer-manager.d.ts +5 -4
  257. package/dist/side-panel/layer-manager.js +26 -6
  258. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
  259. package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
  260. package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
  261. package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
  262. package/dist/side-panel/layer-panel/custom-palette.js +5 -5
  263. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
  264. package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
  265. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
  266. package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
  267. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
  268. package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
  269. package/dist/side-panel/layer-panel/layer-configurator.js +450 -76
  270. package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
  271. package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
  272. package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
  273. package/dist/side-panel/layer-panel/layer-list.js +197 -40
  274. package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
  275. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
  276. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
  277. package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
  278. package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
  279. package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
  280. package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
  281. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
  282. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
  283. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
  284. package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
  285. package/dist/side-panel/panel-header.d.ts +1 -0
  286. package/dist/side-panel/panel-header.js +9 -2
  287. package/dist/side-panel/panel-tab.d.ts +2 -4
  288. package/dist/side-panel/panel-tab.js +4 -4
  289. package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
  290. package/dist/side-panel/side-bar.d.ts +1 -6
  291. package/dist/side-panel.d.ts +1 -1
  292. package/dist/side-panel.js +5 -1
  293. package/dist/types.d.ts +2 -2
  294. package/dist/types.js +1 -1
  295. package/package.json +53 -48
  296. package/dist/map/layer-selector-panel.d.ts +0 -21
  297. package/dist/map/layer-selector-panel.js +0 -85
  298. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
  299. package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
@@ -77,26 +77,26 @@ declare class Portaled extends Component<PortaledProps, PortaledState> {
77
77
  componentDidUpdate(prevProps: PortaledProps): void;
78
78
  componentDidCatch(): void;
79
79
  componentWillUnmount(): void;
80
- element: React.RefObject<HTMLDivElement>;
81
- child: React.RefObject<HTMLDivElement>;
80
+ element: React.RefObject<HTMLDivElement | null>;
81
+ child: React.RefObject<HTMLDivElement | null>;
82
82
  handleScroll: () => void;
83
83
  render(): JSX.Element;
84
84
  }
85
- declare const _default: React.ForwardRefExoticComponent<Pick<import("styled-components").ExecutionProps, "as" | "forwardedAs"> & {
86
- theme?: import("styled-components").DefaultTheme | undefined;
85
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<{
86
+ right?: number;
87
+ left?: number;
88
+ top?: number;
89
+ component?: React.ElementType<any>;
90
+ onClose?: (event: React.MouseEvent<Element, globalThis.MouseEvent> | React.KeyboardEvent<Element>) => void;
91
+ topOffset?: number;
92
+ leftOffset?: number;
93
+ rightOffset?: number;
94
+ overlayZIndex?: number;
95
+ isOpened?: boolean;
96
+ modalProps?: Partial<ReactModal.Props>;
97
+ modalStyle?: Partial<typeof defaultModalStyle>;
98
+ theme?: any;
87
99
  } & {
88
100
  children?: React.ReactNode | undefined;
89
- onClose?: ((event: React.MouseEvent<Element, globalThis.MouseEvent> | React.KeyboardEvent<Element>) => void) | undefined;
90
- top?: number | undefined;
91
- right?: number | undefined;
92
- left?: number | undefined;
93
- component?: React.ElementType<any> | undefined;
94
- topOffset?: number | undefined;
95
- leftOffset?: number | undefined;
96
- rightOffset?: number | undefined;
97
- overlayZIndex?: number | undefined;
98
- isOpened?: boolean | undefined;
99
- modalProps?: Partial<ReactModal.Props> | undefined;
100
- modalStyle?: Partial<typeof defaultModalStyle> | undefined;
101
- } & React.RefAttributes<typeof Portaled>> & {};
101
+ } & React.RefAttributes<Portaled>, keyof import("styled-components").ExecutionProps> & import("styled-components").ExecutionProps, "ref"> & React.RefAttributes<any>> & import("styled-components/dist/utils/hoist").NonReactStatics<typeof Portaled>;
102
102
  export default _default;
@@ -128,7 +128,9 @@ function RangePlotFactory(RangeBrush, HistogramPlot, LineChartPlot) {
128
128
  onBrush: onBrush
129
129
  }, chartProps);
130
130
  return isLineChart(plotType) && lineChart ? /*#__PURE__*/_react["default"].createElement(LineChartPlot, (0, _extends2["default"])({
131
- lineChart: lineChart
131
+ lineChart: lineChart,
132
+ range: range,
133
+ yAxisAutoRange: plotType.yAxisAutoRange
132
134
  }, commonProps)) : /*#__PURE__*/_react["default"].createElement(HistogramPlot, (0, _extends2["default"])({
133
135
  histogramsByGroup: bins,
134
136
  colorsByGroup: groupColors,
@@ -213,4 +215,4 @@ function RangePlotFactory(RangeBrush, HistogramPlot, LineChartPlot) {
213
215
  };
214
216
  return (0, _styledComponents.withTheme)(WithPlotLoading);
215
217
  }
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yYW5nZUJydXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oaXN0b2dyYW1QbG90IiwiX2xpbmVDaGFydCIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfbG9hZGluZ1NwaW5uZXIiLCJfc3R5bGVzIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZFJhbmdlUGxvdCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInNsaWRlckJhckhlaWdodCIsIlJhbmdlUGxvdEZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VCcnVzaEZhY3RvcnkiLCJIaXN0b2dyYW1QbG90RmFjdG9yeSIsIkxpbmVDaGFydEZhY3RvcnkiLCJpc0hpc3RvZ3JhbVBsb3QiLCJwbG90VHlwZSIsInR5cGUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwiaXNMaW5lQ2hhcnQiLCJsaW5lQ2hhcnQiLCJoYXNIaXN0b2dyYW0iLCJiaW5zIiwiaGFzTGluZUNoYXJ0IiwiTE9BRElOR19TUElOTkVSX0NPTlRBSU5FUl9TVFlMRSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ3aWR0aCIsIlJhbmdlQnJ1c2giLCJIaXN0b2dyYW1QbG90IiwiTGluZUNoYXJ0UGxvdCIsIlJhbmdlUGxvdCIsIl9yZWYiLCJvbkJydXNoIiwicmFuZ2UiLCJ2YWx1ZSIsImlzRW5sYXJnZWQiLCJpc1JhbmdlZCIsImNoYXJ0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZ3JvdXBDb2xvcnMiLCJ1c2VNZW1vIiwiZGF0YUlkcyIsImNvbG9yc0J5RGF0YUlkIiwicmVkdWNlIiwiYWNjIiwiZGF0YUlkIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiYnJ1c2hpbmciLCJzZXRCcnVzaGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaG92ZXJlZERQIiwib25Nb3VzZU1vdmUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVuYWJsZUNoYXJ0SG92ZXIiLCJzZXRFbmFibGVDaGFydEhvdmVyIiwiaGVpZ2h0IiwiaGFzTW9iaWxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicmFuZ2VQbG90SExhcmdlUGFsbSIsInJhbmdlUGxvdEhMYXJnZSIsInJhbmdlUGxvdEgiLCJvbkJydXNoU3RhcnQiLCJ1c2VDYWxsYmFjayIsIm9uQnJ1c2hFbmQiLCJvbk1vdXNlb3ZlckhhbmRsZSIsIm9uTW91c2VvdXRIYW5kbGUiLCJicnVzaENvbXBvbmVudCIsImlzVGVzdCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJjb21tb25Qcm9wcyIsIm1hcmdpbiIsInJhbmdlUGxvdE1hcmdpbkxhcmdlIiwicmFuZ2VQbG90TWFyZ2luIiwiaGlzdG9ncmFtc0J5R3JvdXAiLCJjb2xvcnNCeUdyb3VwIiwiUmFuZ2VQbG90V2l0aFRoZW1lIiwid2l0aFRoZW1lIiwiV2l0aFBsb3RMb2FkaW5nIiwiX3JlZjIiLCJzZXRGaWx0ZXJQbG90Iiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiaXNDaGFuZ2luZ1JlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJyYW5nZVBsb3RTdHlsZSIsImNvbmNhdCIsInJhbmdlUGxvdENvbnRhaW5lckhMYXJnZVBhbG0iLCJyYW5nZVBsb3RDb250YWluZXJITGFyZ2UiLCJyYW5nZVBsb3RDb250YWluZXJIIiwic3R5bGUiLCJjbGFzc05hbWUiLCJib3JkZXJDb2xvciIsInNpemUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3JhbmdlLXBsb3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIENTU1Byb3BlcnRpZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZUJydXNoRmFjdG9yeSwge09uQnJ1c2gsIFJhbmdlQnJ1c2hQcm9wc30gZnJvbSAnLi9yYW5nZS1icnVzaCc7XG5pbXBvcnQgSGlzdG9ncmFtUGxvdEZhY3RvcnkgZnJvbSAnLi9oaXN0b2dyYW0tcGxvdCc7XG5pbXBvcnQgTGluZUNoYXJ0RmFjdG9yeSwge0hvdmVyRFB9IGZyb20gJy4vbGluZS1jaGFydCc7XG5pbXBvcnQge2hhc01vYmlsZVdpZHRoLCBpc1Rlc3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtQTE9UX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnLi9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHticmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge0xpbmVDaGFydCBhcyBMaW5lQ2hhcnRUeXBlLCBGaWx0ZXIsIEJpbnN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmNvbnN0IFN0eWxlZFJhbmdlUGxvdCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVyQmFySGVpZ2h0fXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5pbnRlcmZhY2UgUmFuZ2VQbG90UHJvcHMge1xuICBvbkJydXNoOiBPbkJydXNoO1xuICByYW5nZTogbnVtYmVyW107XG4gIHZhbHVlOiBudW1iZXJbXTtcbiAgd2lkdGg6IG51bWJlcjtcbiAgcGxvdFR5cGU6IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIGxpbmVDaGFydD86IExpbmVDaGFydFR5cGU7XG4gIGJpbnM/OiBCaW5zO1xuXG4gIGlzRW5sYXJnZWQ/OiBib29sZWFuO1xuICBpc1JhbmdlZD86IGJvb2xlYW47XG4gIHRoZW1lOiBhbnk7XG4gIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgcGxheWJhY2tDb250cm9sV2lkdGg/OiBudW1iZXI7XG5cbiAgYW5pbWF0aW9uV2luZG93Pzogc3RyaW5nO1xuICBmaWx0ZXI/OiBGaWx0ZXI7XG4gIGRhdGFzZXRzPzogRGF0YXNldHM7XG5cbiAgaW52ZXJ0VHJlbmRDb2xvcj86IGJvb2xlYW47XG5cbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG59XG5cbnR5cGUgV2l0aFBsb3RMb2FkaW5nUHJvcHMgPSBSYW5nZVBsb3RQcm9wcyAmXG4gIFBhcnRpYWw8UmFuZ2VCcnVzaFByb3BzPiAmIHtcbiAgICBzZXRGaWx0ZXJQbG90OiBhbnk7XG4gIH07XG5cblJhbmdlUGxvdEZhY3RvcnkuZGVwcyA9IFtSYW5nZUJydXNoRmFjdG9yeSwgSGlzdG9ncmFtUGxvdEZhY3RvcnksIExpbmVDaGFydEZhY3RvcnldO1xuXG5jb25zdCBpc0hpc3RvZ3JhbVBsb3QgPSBwbG90VHlwZSA9PiBwbG90VHlwZT8udHlwZSA9PT0gUExPVF9UWVBFUy5oaXN0b2dyYW07XG5jb25zdCBpc0xpbmVDaGFydCA9IHBsb3RUeXBlID0+IHBsb3RUeXBlPy50eXBlID09PSBQTE9UX1RZUEVTLmxpbmVDaGFydDtcbmNvbnN0IGhhc0hpc3RvZ3JhbSA9IChwbG90VHlwZSwgYmlucykgPT4gaXNIaXN0b2dyYW1QbG90KHBsb3RUeXBlKSAmJiBiaW5zO1xuY29uc3QgaGFzTGluZUNoYXJ0ID0gKHBsb3RUeXBlLCBsaW5lQ2hhcnQpID0+IGlzTGluZUNoYXJ0KHBsb3RUeXBlKSAmJiBsaW5lQ2hhcnQ7XG5cbmNvbnN0IExPQURJTkdfU1BJTk5FUl9DT05UQUlORVJfU1RZTEUgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgd2lkdGg6ICcxMDAlJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmFuZ2VQbG90RmFjdG9yeShcbiAgUmFuZ2VCcnVzaDogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VCcnVzaEZhY3Rvcnk+LFxuICBIaXN0b2dyYW1QbG90OiBSZXR1cm5UeXBlPHR5cGVvZiBIaXN0b2dyYW1QbG90RmFjdG9yeT4sXG4gIExpbmVDaGFydFBsb3Q6IFJldHVyblR5cGU8dHlwZW9mIExpbmVDaGFydEZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgUmFuZ2VQbG90ID0gKHtcbiAgICBiaW5zLFxuICAgIG9uQnJ1c2gsXG4gICAgcmFuZ2UsXG4gICAgdmFsdWUsXG4gICAgd2lkdGgsXG4gICAgcGxvdFR5cGUsXG4gICAgbGluZUNoYXJ0LFxuICAgIGlzRW5sYXJnZWQsXG4gICAgaXNSYW5nZWQsXG4gICAgdGhlbWUsXG4gICAgLi4uY2hhcnRQcm9wc1xuICB9OiBSYW5nZVBsb3RQcm9wcyAmIFBhcnRpYWw8UmFuZ2VCcnVzaFByb3BzPikgPT4ge1xuICAgIGNvbnN0IGdyb3VwQ29sb3JzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhSWRzID0gYmlucyA/IE9iamVjdC5rZXlzKGJpbnMpIDogW107XG4gICAgICByZXR1cm4gcGxvdFR5cGUuY29sb3JzQnlEYXRhSWRcbiAgICAgICAgPyBkYXRhSWRzLnJlZHVjZSgoYWNjLCBkYXRhSWQpID0+IHtcbiAgICAgICAgICAgIGFjY1tkYXRhSWRdID0gcGxvdFR5cGUuY29sb3JzQnlEYXRhSWRbZGF0YUlkXTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCBbYmlucywgcGxvdFR5cGUuY29sb3JzQnlEYXRhSWRdKTtcblxuICAgIGNvbnN0IFticnVzaGluZywgc2V0QnJ1c2hpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtob3ZlcmVkRFAsIG9uTW91c2VNb3ZlXSA9IHVzZVN0YXRlPEhvdmVyRFAgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbZW5hYmxlQ2hhcnRIb3Zlciwgc2V0RW5hYmxlQ2hhcnRIb3Zlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaGVpZ2h0ID0gaXNFbmxhcmdlZFxuICAgICAgPyBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKVxuICAgICAgICA/IHRoZW1lLnJhbmdlUGxvdEhMYXJnZVBhbG1cbiAgICAgICAgOiB0aGVtZS5yYW5nZVBsb3RITGFyZ2VcbiAgICAgIDogdGhlbWUucmFuZ2VQbG90SDtcblxuICAgIGNvbnN0IG9uQnJ1c2hTdGFydCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldEJydXNoaW5nKHRydWUpO1xuICAgICAgb25Nb3VzZU1vdmUobnVsbCk7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKGZhbHNlKTtcbiAgICB9LCBbc2V0QnJ1c2hpbmcsIG9uTW91c2VNb3ZlLCBzZXRFbmFibGVDaGFydEhvdmVyXSk7XG5cbiAgICBjb25zdCBvbkJydXNoRW5kID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0QnJ1c2hpbmcoZmFsc2UpO1xuICAgICAgc2V0RW5hYmxlQ2hhcnRIb3Zlcih0cnVlKTtcbiAgICB9LCBbc2V0QnJ1c2hpbmcsIHNldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIGNvbnN0IG9uTW91c2VvdmVySGFuZGxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25Nb3VzZU1vdmUobnVsbCk7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKGZhbHNlKTtcbiAgICB9LCBbb25Nb3VzZU1vdmUsIHNldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIGNvbnN0IG9uTW91c2VvdXRIYW5kbGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKHRydWUpO1xuICAgIH0sIFtzZXRFbmFibGVDaGFydEhvdmVyXSk7XG5cbiAgICAvLyBKc0RvbSBoYXZlIGxpbWl0ZWQgc3VwcG9ydCBmb3IgU1ZHLCBkMyB3aWxsIGZhaWxcbiAgICBjb25zdCBicnVzaENvbXBvbmVudCA9IGlzVGVzdCgpID8gbnVsbCA6IChcbiAgICAgIDxSYW5nZUJydXNoXG4gICAgICAgIG9uQnJ1c2g9e29uQnJ1c2h9XG4gICAgICAgIG9uQnJ1c2hTdGFydD17b25CcnVzaFN0YXJ0fVxuICAgICAgICBvbkJydXNoRW5kPXtvbkJydXNoRW5kfVxuICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICBvbk1vdXNlb3ZlckhhbmRsZT17b25Nb3VzZW92ZXJIYW5kbGV9XG4gICAgICAgIG9uTW91c2VvdXRIYW5kbGU9e29uTW91c2VvdXRIYW5kbGV9XG4gICAgICAgIHsuLi5jaGFydFByb3BzfVxuICAgICAgLz5cbiAgICApO1xuXG4gICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICB3aWR0aCxcbiAgICAgIHZhbHVlLFxuICAgICAgaGVpZ2h0LFxuICAgICAgbWFyZ2luOiBpc0VubGFyZ2VkID8gdGhlbWUucmFuZ2VQbG90TWFyZ2luTGFyZ2UgOiB0aGVtZS5yYW5nZVBsb3RNYXJnaW4sXG4gICAgICBicnVzaENvbXBvbmVudCxcbiAgICAgIGJydXNoaW5nLFxuICAgICAgaXNFbmxhcmdlZCxcbiAgICAgIGVuYWJsZUNoYXJ0SG92ZXIsXG4gICAgICBvbk1vdXNlTW92ZSxcbiAgICAgIGhvdmVyZWREUCxcbiAgICAgIGlzUmFuZ2VkLFxuICAgICAgb25CcnVzaCxcbiAgICAgIC4uLmNoYXJ0UHJvcHNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGlzTGluZUNoYXJ0KHBsb3RUeXBlKSAmJiBsaW5lQ2hhcnQgPyAoXG4gICAgICA8TGluZUNoYXJ0UGxvdCBsaW5lQ2hhcnQ9e2xpbmVDaGFydH0gey4uLmNvbW1vblByb3BzfSAvPlxuICAgICkgOiAoXG4gICAgICA8SGlzdG9ncmFtUGxvdFxuICAgICAgICBoaXN0b2dyYW1zQnlHcm91cD17Ymluc31cbiAgICAgICAgY29sb3JzQnlHcm91cD17Z3JvdXBDb2xvcnN9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgey4uLmNvbW1vblByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IFJhbmdlUGxvdFdpdGhUaGVtZSA9IHdpdGhUaGVtZShSYW5nZVBsb3QpIGFzIFJlYWN0LkZDPFxuICAgIFJhbmdlUGxvdFByb3BzICYgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+XG4gID47XG5cbiAgLy8gYSBjb250YWluZXIgdG8gcmVuZGVyIHNwaW5uZXIgb3IgbWVzc2FnZSB3aGVuIHRoZSBkYXRhIGlzIHRvbyBiaWdcbiAgLy8gdG8gZ2VuZXJhdGUgYSBwbG90XG4gIGNvbnN0IFdpdGhQbG90TG9hZGluZyA9ICh7XG4gICAgbGluZUNoYXJ0LFxuICAgIHBsb3RUeXBlLFxuICAgIGJpbnMsXG4gICAgc2V0RmlsdGVyUGxvdCxcbiAgICBpc0VubGFyZ2VkLFxuICAgIHRoZW1lLFxuICAgIC4uLm90aGVyUHJvcHNcbiAgfTogV2l0aFBsb3RMb2FkaW5nUHJvcHMpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlzQ2hhbmdpbmdSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NoYW5naW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGhhc0hpc3RvZ3JhbShwbG90VHlwZSwgYmlucykpIHtcbiAgICAgICAgICAvLyBCaW5zIGFyZSBsb2FkZWRcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwbG90VHlwZSB8fCAoaXNIaXN0b2dyYW1QbG90KHBsb3RUeXBlKSAmJiAhYmlucykpIHtcbiAgICAgICAgICAvLyBsb2FkIGhpc3RvZ3JhbVxuICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICBzZXRGaWx0ZXJQbG90KHtwbG90VHlwZToge3R5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtfX0pO1xuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbYmlucywgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDaGFuZ2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmIChoYXNMaW5lQ2hhcnQocGxvdFR5cGUsIGxpbmVDaGFydCkpIHtcbiAgICAgICAgICAvLyBMaW5lIGNoYXJ0IGlzIGxvYWRlZFxuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmICFsaW5lQ2hhcnQpIHtcbiAgICAgICAgICAvLyBsb2FkIGxpbmUgY2hhcnRcbiAgICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgc2V0RmlsdGVyUGxvdCh7cGxvdFR5cGU6IHt0eXBlOiBQTE9UX1RZUEVTLmxpbmVDaGFydH19KTtcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW2xpbmVDaGFydCwgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIGNvbnN0IHJhbmdlUGxvdFN0eWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGhlaWdodDogYCR7XG4gICAgICAgICAgaXNFbmxhcmdlZFxuICAgICAgICAgICAgPyBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKVxuICAgICAgICAgICAgICA/IHRoZW1lLnJhbmdlUGxvdENvbnRhaW5lckhMYXJnZVBhbG1cbiAgICAgICAgICAgICAgOiB0aGVtZS5yYW5nZVBsb3RDb250YWluZXJITGFyZ2VcbiAgICAgICAgICAgIDogdGhlbWUucmFuZ2VQbG90Q29udGFpbmVySFxuICAgICAgICB9cHhgXG4gICAgICB9KSxcbiAgICAgIFtpc0VubGFyZ2VkLCB0aGVtZV1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRSYW5nZVBsb3Qgc3R5bGU9e3JhbmdlUGxvdFN0eWxlfSBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3Bsb3RcIj5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8ZGl2IHN0eWxlPXtMT0FESU5HX1NQSU5ORVJfQ09OVEFJTkVSX1NUWUxFfT5cbiAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBib3JkZXJDb2xvcj1cInRyYW5zcGFyZW50XCIgc2l6ZT17NDB9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFJhbmdlUGxvdFdpdGhUaGVtZVxuICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICBiaW5zPXtiaW5zfVxuICAgICAgICAgICAgcGxvdFR5cGU9e3Bsb3RUeXBlfVxuICAgICAgICAgICAgaXNFbmxhcmdlZD17aXNFbmxhcmdlZH1cbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFJhbmdlUGxvdD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoV2l0aFBsb3RMb2FkaW5nKSBhcyBSZWFjdC5GQzxPbWl0PFdpdGhQbG90TG9hZGluZ1Byb3BzLCAndGhlbWUnPj47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FB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
218
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yYW5nZUJydXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oaXN0b2dyYW1QbG90IiwiX2xpbmVDaGFydCIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfbG9hZGluZ1NwaW5uZXIiLCJfc3R5bGVzIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZFJhbmdlUGxvdCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInNsaWRlckJhckhlaWdodCIsIlJhbmdlUGxvdEZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VCcnVzaEZhY3RvcnkiLCJIaXN0b2dyYW1QbG90RmFjdG9yeSIsIkxpbmVDaGFydEZhY3RvcnkiLCJpc0hpc3RvZ3JhbVBsb3QiLCJwbG90VHlwZSIsInR5cGUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwiaXNMaW5lQ2hhcnQiLCJsaW5lQ2hhcnQiLCJoYXNIaXN0b2dyYW0iLCJiaW5zIiwiaGFzTGluZUNoYXJ0IiwiTE9BRElOR19TUElOTkVSX0NPTlRBSU5FUl9TVFlMRSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ3aWR0aCIsIlJhbmdlQnJ1c2giLCJIaXN0b2dyYW1QbG90IiwiTGluZUNoYXJ0UGxvdCIsIlJhbmdlUGxvdCIsIl9yZWYiLCJvbkJydXNoIiwicmFuZ2UiLCJ2YWx1ZSIsImlzRW5sYXJnZWQiLCJpc1JhbmdlZCIsImNoYXJ0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZ3JvdXBDb2xvcnMiLCJ1c2VNZW1vIiwiZGF0YUlkcyIsImNvbG9yc0J5RGF0YUlkIiwicmVkdWNlIiwiYWNjIiwiZGF0YUlkIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiYnJ1c2hpbmciLCJzZXRCcnVzaGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaG92ZXJlZERQIiwib25Nb3VzZU1vdmUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVuYWJsZUNoYXJ0SG92ZXIiLCJzZXRFbmFibGVDaGFydEhvdmVyIiwiaGVpZ2h0IiwiaGFzTW9iaWxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicmFuZ2VQbG90SExhcmdlUGFsbSIsInJhbmdlUGxvdEhMYXJnZSIsInJhbmdlUGxvdEgiLCJvbkJydXNoU3RhcnQiLCJ1c2VDYWxsYmFjayIsIm9uQnJ1c2hFbmQiLCJvbk1vdXNlb3ZlckhhbmRsZSIsIm9uTW91c2VvdXRIYW5kbGUiLCJicnVzaENvbXBvbmVudCIsImlzVGVzdCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJjb21tb25Qcm9wcyIsIm1hcmdpbiIsInJhbmdlUGxvdE1hcmdpbkxhcmdlIiwicmFuZ2VQbG90TWFyZ2luIiwieUF4aXNBdXRvUmFuZ2UiLCJoaXN0b2dyYW1zQnlHcm91cCIsImNvbG9yc0J5R3JvdXAiLCJSYW5nZVBsb3RXaXRoVGhlbWUiLCJ3aXRoVGhlbWUiLCJXaXRoUGxvdExvYWRpbmciLCJfcmVmMiIsInNldEZpbHRlclBsb3QiLCJvdGhlclByb3BzIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJpc0NoYW5naW5nUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudCIsInJhbmdlUGxvdFN0eWxlIiwiY29uY2F0IiwicmFuZ2VQbG90Q29udGFpbmVySExhcmdlUGFsbSIsInJhbmdlUGxvdENvbnRhaW5lckhMYXJnZSIsInJhbmdlUGxvdENvbnRhaW5lckgiLCJzdHlsZSIsImNsYXNzTmFtZSIsImJvcmRlckNvbG9yIiwic2l6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vcmFuZ2UtcGxvdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgQ1NTUHJvcGVydGllc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFJhbmdlQnJ1c2hGYWN0b3J5LCB7T25CcnVzaCwgUmFuZ2VCcnVzaFByb3BzfSBmcm9tICcuL3JhbmdlLWJydXNoJztcbmltcG9ydCBIaXN0b2dyYW1QbG90RmFjdG9yeSBmcm9tICcuL2hpc3RvZ3JhbS1wbG90JztcbmltcG9ydCBMaW5lQ2hhcnRGYWN0b3J5LCB7SG92ZXJEUH0gZnJvbSAnLi9saW5lLWNoYXJ0JztcbmltcG9ydCB7aGFzTW9iaWxlV2lkdGgsIGlzVGVzdH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1BMT1RfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICcuL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQge2JyZWFrUG9pbnRWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7TGluZUNoYXJ0IGFzIExpbmVDaGFydFR5cGUsIEZpbHRlciwgQmluc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0RhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcblxuY29uc3QgU3R5bGVkUmFuZ2VQbG90ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJCYXJIZWlnaHR9cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmludGVyZmFjZSBSYW5nZVBsb3RQcm9wcyB7XG4gIG9uQnJ1c2g6IE9uQnJ1c2g7XG4gIHJhbmdlOiBudW1iZXJbXTtcbiAgdmFsdWU6IG51bWJlcltdO1xuICB3aWR0aDogbnVtYmVyO1xuICBwbG90VHlwZToge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgbGluZUNoYXJ0PzogTGluZUNoYXJ0VHlwZTtcbiAgYmlucz86IEJpbnM7XG5cbiAgaXNFbmxhcmdlZD86IGJvb2xlYW47XG4gIGlzUmFuZ2VkPzogYm9vbGVhbjtcbiAgdGhlbWU6IGFueTtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsO1xuICBwbGF5YmFja0NvbnRyb2xXaWR0aD86IG51bWJlcjtcblxuICBhbmltYXRpb25XaW5kb3c/OiBzdHJpbmc7XG4gIGZpbHRlcj86IEZpbHRlcjtcbiAgZGF0YXNldHM/OiBEYXRhc2V0cztcblxuICBpbnZlcnRUcmVuZENvbG9yPzogYm9vbGVhbjtcblxuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbn1cblxudHlwZSBXaXRoUGxvdExvYWRpbmdQcm9wcyA9IFJhbmdlUGxvdFByb3BzICZcbiAgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+ICYge1xuICAgIHNldEZpbHRlclBsb3Q6IGFueTtcbiAgfTtcblxuUmFuZ2VQbG90RmFjdG9yeS5kZXBzID0gW1JhbmdlQnJ1c2hGYWN0b3J5LCBIaXN0b2dyYW1QbG90RmFjdG9yeSwgTGluZUNoYXJ0RmFjdG9yeV07XG5cbmNvbnN0IGlzSGlzdG9ncmFtUGxvdCA9IHBsb3RUeXBlID0+IHBsb3RUeXBlPy50eXBlID09PSBQTE9UX1RZUEVTLmhpc3RvZ3JhbTtcbmNvbnN0IGlzTGluZUNoYXJ0ID0gcGxvdFR5cGUgPT4gcGxvdFR5cGU/LnR5cGUgPT09IFBMT1RfVFlQRVMubGluZUNoYXJ0O1xuY29uc3QgaGFzSGlzdG9ncmFtID0gKHBsb3RUeXBlLCBiaW5zKSA9PiBpc0hpc3RvZ3JhbVBsb3QocGxvdFR5cGUpICYmIGJpbnM7XG5jb25zdCBoYXNMaW5lQ2hhcnQgPSAocGxvdFR5cGUsIGxpbmVDaGFydCkgPT4gaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmIGxpbmVDaGFydDtcblxuY29uc3QgTE9BRElOR19TUElOTkVSX0NPTlRBSU5FUl9TVFlMRSA9IHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB3aWR0aDogJzEwMCUnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVBsb3RGYWN0b3J5KFxuICBSYW5nZUJydXNoOiBSZXR1cm5UeXBlPHR5cGVvZiBSYW5nZUJydXNoRmFjdG9yeT4sXG4gIEhpc3RvZ3JhbVBsb3Q6IFJldHVyblR5cGU8dHlwZW9mIEhpc3RvZ3JhbVBsb3RGYWN0b3J5PixcbiAgTGluZUNoYXJ0UGxvdDogUmV0dXJuVHlwZTx0eXBlb2YgTGluZUNoYXJ0RmFjdG9yeT5cbikge1xuICBjb25zdCBSYW5nZVBsb3QgPSAoe1xuICAgIGJpbnMsXG4gICAgb25CcnVzaCxcbiAgICByYW5nZSxcbiAgICB2YWx1ZSxcbiAgICB3aWR0aCxcbiAgICBwbG90VHlwZSxcbiAgICBsaW5lQ2hhcnQsXG4gICAgaXNFbmxhcmdlZCxcbiAgICBpc1JhbmdlZCxcbiAgICB0aGVtZSxcbiAgICAuLi5jaGFydFByb3BzXG4gIH06IFJhbmdlUGxvdFByb3BzICYgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+KSA9PiB7XG4gICAgY29uc3QgZ3JvdXBDb2xvcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGFJZHMgPSBiaW5zID8gT2JqZWN0LmtleXMoYmlucykgOiBbXTtcbiAgICAgIHJldHVybiBwbG90VHlwZS5jb2xvcnNCeURhdGFJZFxuICAgICAgICA/IGRhdGFJZHMucmVkdWNlKChhY2MsIGRhdGFJZCkgPT4ge1xuICAgICAgICAgICAgYWNjW2RhdGFJZF0gPSBwbG90VHlwZS5jb2xvcnNCeURhdGFJZFtkYXRhSWRdO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSlcbiAgICAgICAgOiBudWxsO1xuICAgIH0sIFtiaW5zLCBwbG90VHlwZS5jb2xvcnNCeURhdGFJZF0pO1xuXG4gICAgY29uc3QgW2JydXNoaW5nLCBzZXRCcnVzaGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2hvdmVyZWREUCwgb25Nb3VzZU1vdmVdID0gdXNlU3RhdGU8SG92ZXJEUCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFtlbmFibGVDaGFydEhvdmVyLCBzZXRFbmFibGVDaGFydEhvdmVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBoZWlnaHQgPSBpc0VubGFyZ2VkXG4gICAgICA/IGhhc01vYmlsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXMpXG4gICAgICAgID8gdGhlbWUucmFuZ2VQbG90SExhcmdlUGFsbVxuICAgICAgICA6IHRoZW1lLnJhbmdlUGxvdEhMYXJnZVxuICAgICAgOiB0aGVtZS5yYW5nZVBsb3RIO1xuXG4gICAgY29uc3Qgb25CcnVzaFN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0QnJ1c2hpbmcodHJ1ZSk7XG4gICAgICBvbk1vdXNlTW92ZShudWxsKTtcbiAgICAgIHNldEVuYWJsZUNoYXJ0SG92ZXIoZmFsc2UpO1xuICAgIH0sIFtzZXRCcnVzaGluZywgb25Nb3VzZU1vdmUsIHNldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIGNvbnN0IG9uQnJ1c2hFbmQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRCcnVzaGluZyhmYWxzZSk7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKHRydWUpO1xuICAgIH0sIFtzZXRCcnVzaGluZywgc2V0RW5hYmxlQ2hhcnRIb3Zlcl0pO1xuXG4gICAgY29uc3Qgb25Nb3VzZW92ZXJIYW5kbGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvbk1vdXNlTW92ZShudWxsKTtcbiAgICAgIHNldEVuYWJsZUNoYXJ0SG92ZXIoZmFsc2UpO1xuICAgIH0sIFtvbk1vdXNlTW92ZSwgc2V0RW5hYmxlQ2hhcnRIb3Zlcl0pO1xuXG4gICAgY29uc3Qgb25Nb3VzZW91dEhhbmRsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldEVuYWJsZUNoYXJ0SG92ZXIodHJ1ZSk7XG4gICAgfSwgW3NldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIC8vIEpzRG9tIGhhdmUgbGltaXRlZCBzdXBwb3J0IGZvciBTVkcsIGQzIHdpbGwgZmFpbFxuICAgIGNvbnN0IGJydXNoQ29tcG9uZW50ID0gaXNUZXN0KCkgPyBudWxsIDogKFxuICAgICAgPFJhbmdlQnJ1c2hcbiAgICAgICAgb25CcnVzaD17b25CcnVzaH1cbiAgICAgICAgb25CcnVzaFN0YXJ0PXtvbkJydXNoU3RhcnR9XG4gICAgICAgIG9uQnJ1c2hFbmQ9e29uQnJ1c2hFbmR9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgIG9uTW91c2VvdmVySGFuZGxlPXtvbk1vdXNlb3ZlckhhbmRsZX1cbiAgICAgICAgb25Nb3VzZW91dEhhbmRsZT17b25Nb3VzZW91dEhhbmRsZX1cbiAgICAgICAgey4uLmNoYXJ0UHJvcHN9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBjb25zdCBjb21tb25Qcm9wcyA9IHtcbiAgICAgIHdpZHRoLFxuICAgICAgdmFsdWUsXG4gICAgICBoZWlnaHQsXG4gICAgICBtYXJnaW46IGlzRW5sYXJnZWQgPyB0aGVtZS5yYW5nZVBsb3RNYXJnaW5MYXJnZSA6IHRoZW1lLnJhbmdlUGxvdE1hcmdpbixcbiAgICAgIGJydXNoQ29tcG9uZW50LFxuICAgICAgYnJ1c2hpbmcsXG4gICAgICBpc0VubGFyZ2VkLFxuICAgICAgZW5hYmxlQ2hhcnRIb3ZlcixcbiAgICAgIG9uTW91c2VNb3ZlLFxuICAgICAgaG92ZXJlZERQLFxuICAgICAgaXNSYW5nZWQsXG4gICAgICBvbkJydXNoLFxuICAgICAgLi4uY2hhcnRQcm9wc1xuICAgIH07XG5cbiAgICByZXR1cm4gaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmIGxpbmVDaGFydCA/IChcbiAgICAgIDxMaW5lQ2hhcnRQbG90IGxpbmVDaGFydD17bGluZUNoYXJ0fSByYW5nZT17cmFuZ2V9IHlBeGlzQXV0b1JhbmdlPXtwbG90VHlwZS55QXhpc0F1dG9SYW5nZX0gey4uLmNvbW1vblByb3BzfSAvPlxuICAgICkgOiAoXG4gICAgICA8SGlzdG9ncmFtUGxvdFxuICAgICAgICBoaXN0b2dyYW1zQnlHcm91cD17Ymluc31cbiAgICAgICAgY29sb3JzQnlHcm91cD17Z3JvdXBDb2xvcnN9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgey4uLmNvbW1vblByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IFJhbmdlUGxvdFdpdGhUaGVtZSA9IHdpdGhUaGVtZShSYW5nZVBsb3QpIGFzIFJlYWN0LkZDPFxuICAgIFJhbmdlUGxvdFByb3BzICYgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+XG4gID47XG5cbiAgLy8gYSBjb250YWluZXIgdG8gcmVuZGVyIHNwaW5uZXIgb3IgbWVzc2FnZSB3aGVuIHRoZSBkYXRhIGlzIHRvbyBiaWdcbiAgLy8gdG8gZ2VuZXJhdGUgYSBwbG90XG4gIGNvbnN0IFdpdGhQbG90TG9hZGluZyA9ICh7XG4gICAgbGluZUNoYXJ0LFxuICAgIHBsb3RUeXBlLFxuICAgIGJpbnMsXG4gICAgc2V0RmlsdGVyUGxvdCxcbiAgICBpc0VubGFyZ2VkLFxuICAgIHRoZW1lLFxuICAgIC4uLm90aGVyUHJvcHNcbiAgfTogV2l0aFBsb3RMb2FkaW5nUHJvcHMpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlzQ2hhbmdpbmdSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NoYW5naW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGhhc0hpc3RvZ3JhbShwbG90VHlwZSwgYmlucykpIHtcbiAgICAgICAgICAvLyBCaW5zIGFyZSBsb2FkZWRcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwbG90VHlwZSB8fCAoaXNIaXN0b2dyYW1QbG90KHBsb3RUeXBlKSAmJiAhYmlucykpIHtcbiAgICAgICAgICAvLyBsb2FkIGhpc3RvZ3JhbVxuICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICBzZXRGaWx0ZXJQbG90KHtwbG90VHlwZToge3R5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtfX0pO1xuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbYmlucywgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDaGFuZ2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmIChoYXNMaW5lQ2hhcnQocGxvdFR5cGUsIGxpbmVDaGFydCkpIHtcbiAgICAgICAgICAvLyBMaW5lIGNoYXJ0IGlzIGxvYWRlZFxuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmICFsaW5lQ2hhcnQpIHtcbiAgICAgICAgICAvLyBsb2FkIGxpbmUgY2hhcnRcbiAgICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgc2V0RmlsdGVyUGxvdCh7cGxvdFR5cGU6IHt0eXBlOiBQTE9UX1RZUEVTLmxpbmVDaGFydH19KTtcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW2xpbmVDaGFydCwgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIGNvbnN0IHJhbmdlUGxvdFN0eWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGhlaWdodDogYCR7XG4gICAgICAgICAgaXNFbmxhcmdlZFxuICAgICAgICAgICAgPyBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKVxuICAgICAgICAgICAgICA/IHRoZW1lLnJhbmdlUGxvdENvbnRhaW5lckhMYXJnZVBhbG1cbiAgICAgICAgICAgICAgOiB0aGVtZS5yYW5nZVBsb3RDb250YWluZXJITGFyZ2VcbiAgICAgICAgICAgIDogdGhlbWUucmFuZ2VQbG90Q29udGFpbmVySFxuICAgICAgICB9cHhgXG4gICAgICB9KSxcbiAgICAgIFtpc0VubGFyZ2VkLCB0aGVtZV1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRSYW5nZVBsb3Qgc3R5bGU9e3JhbmdlUGxvdFN0eWxlfSBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3Bsb3RcIj5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8ZGl2IHN0eWxlPXtMT0FESU5HX1NQSU5ORVJfQ09OVEFJTkVSX1NUWUxFfT5cbiAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBib3JkZXJDb2xvcj1cInRyYW5zcGFyZW50XCIgc2l6ZT17NDB9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFJhbmdlUGxvdFdpdGhUaGVtZVxuICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICBiaW5zPXtiaW5zfVxuICAgICAgICAgICAgcGxvdFR5cGU9e3Bsb3RUeXBlfVxuICAgICAgICAgICAgaXNFbmxhcmdlZD17aXNFbmxhcmdlZH1cbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFJhbmdlUGxvdD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoV2l0aFBsb3RMb2FkaW5nKSBhcyBSZWFjdC5GQzxPbWl0PFdpdGhQbG90TG9hZGluZ1Byb3BzLCAndGhlbWUnPj47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBRixz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
@@ -1,6 +1,7 @@
1
1
  import { ComponentType, ElementType } from 'react';
2
2
  import RangePlotFactory from './range-plot';
3
3
  import RangeSliderSubAnimationPanelFactory from '../common/range-slider-timeline-panel';
4
+ import type { SliderScaleConfig } from '@kepler.gl/utils';
4
5
  import { LineChart, Filter, Bins } from '@kepler.gl/types';
5
6
  import { Datasets } from '@kepler.gl/table';
6
7
  import { ActionHandler, setFilterPlot } from '@kepler.gl/actions';
@@ -34,6 +35,7 @@ interface RangeSliderProps {
34
35
  filter?: Filter;
35
36
  datasets?: Datasets;
36
37
  invertTrendColor?: boolean;
38
+ scaleConfig?: SliderScaleConfig | null;
37
39
  }
38
40
  declare function RangeSliderFactory(RangePlot: ReturnType<typeof RangePlotFactory>, RangeSliderSubAnimationPanel: ReturnType<typeof RangeSliderSubAnimationPanelFactory>): ComponentType<RangeSliderProps>;
39
41
  declare namespace RangeSliderFactory {
@@ -14,7 +14,6 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
16
16
  var _react = _interopRequireWildcard(require("react"));
17
- var _reactLifecyclesCompat = require("react-lifecycles-compat");
18
17
  var _reselect = require("reselect");
19
18
  var _styledComponents = _interopRequireDefault(require("styled-components"));
20
19
  var _rangePlot = _interopRequireDefault(require("./range-plot"));
@@ -82,33 +81,91 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
82
81
  (0, _defineProperty2["default"])(_this, "filterValueSelector", (0, _reselect.createSelector)(_this.value0Selector, _this.value1Selector, function (value0, value1) {
83
82
  return [value0, value1];
84
83
  }));
85
- (0, _defineProperty2["default"])(_this, "_roundValToStep", function (val) {
84
+ (0, _defineProperty2["default"])(_this, "_isTimeFilter", function () {
85
+ return typeof _this.props.timeFormat === 'string';
86
+ });
87
+ (0, _defineProperty2["default"])(_this, "_getDisplayRangeInfo", function () {
86
88
  var _this$props = _this.props,
87
89
  range = _this$props.range,
88
- step = _this$props.step;
90
+ bins = _this$props.bins,
91
+ isRanged = _this$props.isRanged;
92
+ if (!range) {
93
+ return {
94
+ displayRange: range,
95
+ binStep: 0
96
+ };
97
+ }
98
+ if (!bins || !isRanged) {
99
+ return {
100
+ displayRange: range,
101
+ binStep: 0
102
+ };
103
+ }
104
+ var groupKeys = Object.keys(bins).filter(function (k) {
105
+ var _bins$k;
106
+ return ((_bins$k = bins[k]) === null || _bins$k === void 0 ? void 0 : _bins$k.length) > 0;
107
+ });
108
+ if (groupKeys.length === 0) {
109
+ return {
110
+ displayRange: range,
111
+ binStep: 0
112
+ };
113
+ }
114
+ var group = bins[groupKeys[0]];
115
+ var idx = group.length > 1 ? 1 : 0;
116
+ var binStep = group[idx].x1 - group[idx].x0;
117
+ if (binStep <= 0) {
118
+ return {
119
+ displayRange: range,
120
+ binStep: 0
121
+ };
122
+ }
123
+ if (_this._isTimeFilter()) {
124
+ var _displayRange = [range[0] - binStep, range[1] + binStep];
125
+ return {
126
+ displayRange: _displayRange,
127
+ binStep: binStep
128
+ };
129
+ }
130
+
131
+ // Non-time range filters: pad by half a bin so edge bars aren't clipped
132
+ var pad = binStep / 2;
133
+ var displayRange = [range[0] - pad, range[1] + pad];
134
+ return {
135
+ displayRange: displayRange,
136
+ binStep: pad
137
+ };
138
+ });
139
+ (0, _defineProperty2["default"])(_this, "_getDisplayRange", function () {
140
+ return _this._getDisplayRangeInfo().displayRange;
141
+ });
142
+ (0, _defineProperty2["default"])(_this, "_roundValToStep", function (val) {
143
+ var _this$props2 = _this.props,
144
+ range = _this$props2.range,
145
+ step = _this$props2.step;
89
146
  if (!range || !step) return;
90
147
  return (0, _utils.roundValToStep)(range[0], step, val);
91
148
  });
92
149
  (0, _defineProperty2["default"])(_this, "_setRangeVal1", function (val) {
93
- var _this$props2 = _this.props,
94
- value0 = _this$props2.value0,
95
- range = _this$props2.range,
96
- _this$props2$onChange = _this$props2.onChange,
97
- onChange = _this$props2$onChange === void 0 ? noop : _this$props2$onChange;
98
- if (!range) return;
150
+ var _this$props3 = _this.props,
151
+ value0 = _this$props3.value0,
152
+ _this$props3$onChange = _this$props3.onChange,
153
+ onChange = _this$props3$onChange === void 0 ? noop : _this$props3$onChange;
154
+ var dr = _this._getDisplayRange();
155
+ if (!dr) return;
99
156
  var val1 = Number(val);
100
- onChange([value0, (0, _utils.clamp)([value0, range[1]], _this._roundValToStep(val1))]);
157
+ onChange([value0, (0, _utils.clamp)([value0, dr[1]], _this._roundValToStep(val1))]);
101
158
  return true;
102
159
  });
103
160
  (0, _defineProperty2["default"])(_this, "_setRangeVal0", function (val) {
104
- var _this$props3 = _this.props,
105
- value1 = _this$props3.value1,
106
- range = _this$props3.range,
107
- _this$props3$onChange = _this$props3.onChange,
108
- onChange = _this$props3$onChange === void 0 ? noop : _this$props3$onChange;
109
- if (!range) return;
161
+ var _this$props4 = _this.props,
162
+ value1 = _this$props4.value1,
163
+ _this$props4$onChange = _this$props4.onChange,
164
+ onChange = _this$props4$onChange === void 0 ? noop : _this$props4$onChange;
165
+ var dr = _this._getDisplayRange();
166
+ if (!dr) return;
110
167
  var val0 = Number(val);
111
- onChange([(0, _utils.clamp)([range[0], value1], _this._roundValToStep(val0)), value1]);
168
+ onChange([(0, _utils.clamp)([dr[0], value1], _this._roundValToStep(val0)), value1]);
112
169
  return true;
113
170
  });
114
171
  (0, _defineProperty2["default"])(_this, "_resize", function () {
@@ -178,30 +235,36 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
178
235
  }, {
179
236
  key: "render",
180
237
  value: function render() {
181
- var _this$props4 = this.props,
182
- isRanged = _this$props4.isRanged,
183
- showInput = _this$props4.showInput,
184
- bins = _this$props4.bins,
185
- lineChart = _this$props4.lineChart,
186
- plotType = _this$props4.plotType,
187
- invertTrendColor = _this$props4.invertTrendColor,
188
- range = _this$props4.range,
189
- _this$props4$onChange = _this$props4.onChange,
190
- onChange = _this$props4$onChange === void 0 ? noop : _this$props4$onChange,
191
- sliderHandleWidth = _this$props4.sliderHandleWidth,
192
- step = _this$props4.step,
193
- timezone = _this$props4.timezone,
194
- timeFormat = _this$props4.timeFormat,
195
- playbackControlWidth = _this$props4.playbackControlWidth,
196
- setFilterPlot = _this$props4.setFilterPlot,
197
- animationWindow = _this$props4.animationWindow,
198
- subAnimations = _this$props4.subAnimations,
199
- filter = _this$props4.filter,
200
- datasets = _this$props4.datasets;
238
+ var _this$props5 = this.props,
239
+ isRanged = _this$props5.isRanged,
240
+ showInput = _this$props5.showInput,
241
+ bins = _this$props5.bins,
242
+ lineChart = _this$props5.lineChart,
243
+ plotType = _this$props5.plotType,
244
+ invertTrendColor = _this$props5.invertTrendColor,
245
+ range = _this$props5.range,
246
+ _this$props5$onChange = _this$props5.onChange,
247
+ onChange = _this$props5$onChange === void 0 ? noop : _this$props5$onChange,
248
+ sliderHandleWidth = _this$props5.sliderHandleWidth,
249
+ step = _this$props5.step,
250
+ timezone = _this$props5.timezone,
251
+ timeFormat = _this$props5.timeFormat,
252
+ playbackControlWidth = _this$props5.playbackControlWidth,
253
+ setFilterPlot = _this$props5.setFilterPlot,
254
+ animationWindow = _this$props5.animationWindow,
255
+ subAnimations = _this$props5.subAnimations,
256
+ filter = _this$props5.filter,
257
+ datasets = _this$props5.datasets,
258
+ scaleConfig = _this$props5.scaleConfig;
201
259
  var width = this.state.width;
202
260
  var plotWidth = Math.max(width - Number(sliderHandleWidth), 0);
203
261
  var hasPlot = plotType === null || plotType === void 0 ? void 0 : plotType.type;
204
- var value = this.props.plotValue || this.filterValueSelector(this.props);
262
+ var _this$_getDisplayRang = this._getDisplayRangeInfo(),
263
+ displayRange = _this$_getDisplayRang.displayRange;
264
+ var rawValue = this.props.plotValue || this.filterValueSelector(this.props);
265
+ var value = displayRange && Array.isArray(rawValue) ? rawValue.map(function (v) {
266
+ return (0, _utils.clamp)([displayRange[0], displayRange[1]], v);
267
+ }) : rawValue;
205
268
  var scaledValue = subAnimations !== null && subAnimations !== void 0 && subAnimations.length && range ? (0, _utils.scaleSourceDomainToDestination)(value, range) : [0, 0];
206
269
  var commonPadding = "".concat(Number(sliderHandleWidth) / 2, "px");
207
270
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -224,7 +287,7 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
224
287
  animationWindow: animationWindow,
225
288
  filter: filter,
226
289
  datasets: datasets,
227
- range: range,
290
+ range: displayRange || range,
228
291
  value: value,
229
292
  width: plotWidth,
230
293
  isRanged: isRanged,
@@ -251,13 +314,13 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
251
314
  }, /*#__PURE__*/_react["default"].createElement(this.props.xAxis, {
252
315
  width: plotWidth,
253
316
  timezone: timezone,
254
- domain: range,
317
+ domain: displayRange,
255
318
  isEnlarged: this.props.isEnlarged
256
319
  })) : null, /*#__PURE__*/_react["default"].createElement(_slider["default"], {
257
320
  marks: this.props.marks,
258
321
  isRanged: isRanged,
259
- minValue: range[0],
260
- maxValue: range[1],
322
+ minValue: (displayRange || range)[0],
323
+ maxValue: (displayRange || range)[1],
261
324
  value0: this.props.value0,
262
325
  value1: this.props.value1,
263
326
  step: step,
@@ -267,7 +330,8 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
267
330
  onSliderBarChange: function onSliderBarChange(val0, val1) {
268
331
  onChange([val0, val1]);
269
332
  },
270
- enableBarDrag: true
333
+ enableBarDrag: true,
334
+ scaleConfig: scaleConfig
271
335
  }), !isRanged && showInput ? this._renderInput('value1') : null), isRanged && showInput ? /*#__PURE__*/_react["default"].createElement(RangeInputWrapper, {
272
336
  className: "range-slider__input-group"
273
337
  }, this._renderInput('value0'), this._renderInput('value1')) : null));
@@ -303,7 +367,6 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
303
367
  inputSize: 'small',
304
368
  onChange: noop
305
369
  });
306
- (0, _reactLifecyclesCompat.polyfill)(RangeSlider);
307
370
  return RangeSlider;
308
371
  }
309
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RMaWZlY3ljbGVzQ29tcGF0IiwiX3Jlc2VsZWN0IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JhbmdlUGxvdCIsIl9zbGlkZXIiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfcmFuZ2VTbGlkZXJUaW1lbGluZVBhbmVsIiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm5vb3AiLCJTbGlkZXJJbnB1dCIsInN0eWxlZCIsIklucHV0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwic2xpZGVySW5wdXRXaWR0aCIsIiRmbHVzaCIsIiRpbnB1dFNpemUiLCJzbGlkZXJJbnB1dEZvbnRTaXplIiwic2xpZGVySW5wdXRQYWRkaW5nIiwiU2xpZGVyV3JhcHBlciIsImRpdiIsIiRpc1JhbmdlZCIsIiRzaG93SW5wdXQiLCJSYW5nZUlucHV0V3JhcHBlciIsIlJBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRSIsIm1hcmdpbkxlZnQiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VQbG90RmFjdG9yeSIsIlJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWxGYWN0b3J5IiwiUmFuZ2VQbG90IiwiUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbCIsIlJhbmdlU2xpZGVyIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwidmFsdWUwIiwidmFsdWUxIiwicHJldlZhbHVlMCIsInByZXZWYWx1ZTEiLCJ3aWR0aCIsImVsZW1lbnQiLCJzbGlkZXJDb250YWluZXIiLCJfcmVzaXplIiwiY3JlYXRlUmVmIiwiY3JlYXRlU2VsZWN0b3IiLCJ2YWx1ZTBTZWxlY3RvciIsInZhbHVlMVNlbGVjdG9yIiwidmFsIiwiX3RoaXMkcHJvcHMiLCJyYW5nZSIsInN0ZXAiLCJyb3VuZFZhbFRvU3RlcCIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzMiRvbkNoYW5nZSIsIm9uQ2hhbmdlIiwidmFsMSIsIk51bWJlciIsImNsYW1wIiwiX3JvdW5kVmFsVG9TdGVwIiwiX3RoaXMkcHJvcHMzIiwiX3RoaXMkcHJvcHMzJG9uQ2hhbmdlIiwidmFsMCIsIm9mZnNldFdpZHRoIiwic3RhdGUiLCJzZXRTdGF0ZSIsImtleSIsInRhcmdldCIsInZhbHVlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJjb21wb25lbnREaWRNb3VudCIsIkVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsIl9yZW5kZXJJbnB1dCIsIl90aGlzMiIsInNldFJhbmdlIiwiX3NldFJhbmdlVmFsMCIsIl9zZXRSYW5nZVZhbDEiLCJyZWYiLCJpbnB1dFZhbHVlMCIsImlucHV0VmFsdWUxIiwidXBkYXRlIiwiX29uQ2hhbmdlSW5wdXQiLCJiaW5kIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInR5cGUiLCJpZCIsIm9uS2V5UHJlc3MiLCJjdXJyZW50IiwiYmx1ciIsIm9uQmx1ciIsImlucHV0U2l6ZSIsInNlY29uZGFyeSIsImlucHV0VGhlbWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczQiLCJpc1JhbmdlZCIsInNob3dJbnB1dCIsImJpbnMiLCJsaW5lQ2hhcnQiLCJwbG90VHlwZSIsImludmVydFRyZW5kQ29sb3IiLCJfdGhpcyRwcm9wczQkb25DaGFuZ2UiLCJzbGlkZXJIYW5kbGVXaWR0aCIsInRpbWV6b25lIiwidGltZUZvcm1hdCIsInBsYXliYWNrQ29udHJvbFdpZHRoIiwic2V0RmlsdGVyUGxvdCIsImFuaW1hdGlvbldpbmRvdyIsInN1YkFuaW1hdGlvbnMiLCJkYXRhc2V0cyIsInBsb3RXaWR0aCIsIk1hdGgiLCJtYXgiLCJoYXNQbG90IiwicGxvdFZhbHVlIiwiZmlsdGVyVmFsdWVTZWxlY3RvciIsInNjYWxlZFZhbHVlIiwic2NhbGVTb3VyY2VEb21haW5Ub0Rlc3RpbmF0aW9uIiwiY29tbW9uUGFkZGluZyIsInN0eWxlIiwicGFkZGluZyIsInNldFNsaWRlckNvbnRhaW5lciIsImlzQXJyYXkiLCJldmVyeSIsImlzRmluaXRlIiwiRnJhZ21lbnQiLCJpc0VubGFyZ2VkIiwib25CcnVzaCIsIm1hcmtzIiwicGFkZGluZ0xlZnQiLCJ4QXhpcyIsImhlaWdodCIsImRvbWFpbiIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJvblNsaWRlcjBDaGFuZ2UiLCJvblNsaWRlcjFDaGFuZ2UiLCJvblNsaWRlckJhckNoYW5nZSIsImVuYWJsZUJhckRyYWciLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJpc05hTiIsIkNvbXBvbmVudCIsInBvbHlmaWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9yYW5nZS1zbGlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgQ29tcG9uZW50VHlwZSwgY3JlYXRlUmVmLCBFbGVtZW50VHlwZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtwb2x5ZmlsbH0gZnJvbSAncmVhY3QtbGlmZWN5Y2xlcy1jb21wYXQnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmFuZ2VQbG90RmFjdG9yeSBmcm9tICcuL3JhbmdlLXBsb3QnO1xuaW1wb3J0IFNsaWRlciBmcm9tICcuL3NsaWRlci9zbGlkZXInO1xuaW1wb3J0IHtJbnB1dH0gZnJvbSAnLi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3RvcnkgZnJvbSAnLi4vY29tbW9uL3JhbmdlLXNsaWRlci10aW1lbGluZS1wYW5lbCc7XG5pbXBvcnQge1xuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgcm91bmRWYWxUb1N0ZXAsXG4gIGNsYW1wLFxuICBzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb25cbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0xpbmVDaGFydCwgRmlsdGVyLCBCaW5zfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyLCBzZXRGaWx0ZXJQbG90fSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbnRlcmZhY2UgU2xpZGVySW5wdXRQcm9wcyB7XG4gICRmbHVzaD86IGJvb2xlYW47XG4gICRpbnB1dFNpemU/OiBzdHJpbmc7XG59XG5jb25zdCBub29wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuY29uc3QgU2xpZGVySW5wdXQgPSBzdHlsZWQoSW5wdXQpPFNsaWRlcklucHV0UHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFdpZHRofXB4O1xuICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiAocHJvcHMuJGZsdXNoID8gMCA6IHByb3BzLiRpbnB1dFNpemUgPT09ICd0aW55JyA/IDEyIDogMTgpfXB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRGb250U2l6ZX07IC8vIDEwcHggLy8gMTJweDtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFBhZGRpbmd9OyAvLyA0cHggNnB4OyAvLyA2cHggMTJweDtcbmA7XG5cbmludGVyZmFjZSBTbGlkZXJXcmFwcGVyUHJvcHMge1xuICAkaXNSYW5nZWQ/OiBib29sZWFuO1xuICAkc2hvd0lucHV0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXY8U2xpZGVyV3JhcHBlclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAoIXByb3BzLiRpc1JhbmdlZCAmJiBwcm9wcy4kc2hvd0lucHV0ID8gJ2NlbnRlcicgOiAnZmxleC1zdGFydCcpfTtcbmA7XG5cbmNvbnN0IFJhbmdlSW5wdXRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuaW50ZXJmYWNlIFJhbmdlU2xpZGVyUHJvcHMge1xuICByYW5nZT86IG51bWJlcltdO1xuICB2YWx1ZTA6IG51bWJlcjtcbiAgdmFsdWUxOiBudW1iZXI7XG4gIG9uQ2hhbmdlPzogKHZhbDogbnVtYmVyW10sIGU/OiBFdmVudCB8IG51bGwpID0+IHZvaWQ7IC8vIFRPRE9cbiAgc2V0RmlsdGVyUGxvdD86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHNldEZpbHRlclBsb3Q+O1xuICBiaW5zPzogQmlucztcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICBpc0VubGFyZ2VkPzogYm9vbGVhbjtcbiAgc2hvd0lucHV0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgaW5wdXRTaXplPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBzbGlkZXJIYW5kbGVXaWR0aD86IG51bWJlcjtcbiAgeEF4aXM/OiBFbGVtZW50VHlwZTtcbiAgc3ViQW5pbWF0aW9ucz86IGFueVtdO1xuICB0aW1lbGluZUxhYmVsPzogc3RyaW5nO1xuXG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgcGxheWJhY2tDb250cm9sV2lkdGg/OiBudW1iZXI7XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFya3M/OiBudW1iZXJbXTtcbiAgcGxvdFR5cGU/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICBwbG90VmFsdWU/OiBudW1iZXJbXTtcblxuICBhbmltYXRpb25XaW5kb3c/OiBzdHJpbmc7XG4gIGZpbHRlcj86IEZpbHRlcjtcbiAgZGF0YXNldHM/OiBEYXRhc2V0cztcblxuICBpbnZlcnRUcmVuZENvbG9yPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUkFOR0VfU0xJREVSX1RJTUVMSU5FX1BBTkVMX1NUWUxFID0ge21hcmdpbkxlZnQ6ICctMzJweCd9O1xuXG5SYW5nZVNsaWRlckZhY3RvcnkuZGVwcyA9IFtSYW5nZVBsb3RGYWN0b3J5LCBSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsRmFjdG9yeV07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJhbmdlU2xpZGVyRmFjdG9yeShcbiAgUmFuZ2VQbG90OiBSZXR1cm5UeXBlPHR5cGVvZiBSYW5nZVBsb3RGYWN0b3J5PixcbiAgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3Rvcnk+XG4pOiBDb21wb25lbnRUeXBlPFJhbmdlU2xpZGVyUHJvcHM+IHtcbiAgY2xhc3MgUmFuZ2VTbGlkZXIgZXh0ZW5kcyBDb21wb25lbnQ8UmFuZ2VTbGlkZXJQcm9wcz4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBpc0VubGFyZ2VkOiBmYWxzZSxcbiAgICAgIGlzUmFuZ2VkOiB0cnVlLFxuICAgICAgc2hvd0lucHV0OiB0cnVlLFxuICAgICAgc2xpZGVySGFuZGxlV2lkdGg6IDEyLFxuICAgICAgaW5wdXRUaGVtZTogJycsXG4gICAgICBpbnB1dFNpemU6ICdzbWFsbCcsXG4gICAgICBvbkNoYW5nZTogbm9vcFxuICAgIH07XG5cbiAgICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzLCBzdGF0ZSkge1xuICAgICAgbGV0IHVwZGF0ZToge3ZhbHVlMT86IGFueTsgcHJldlZhbHVlMT86IGFueTsgdmFsdWUwPzogYW55OyBwcmV2VmFsdWUwPzogYW55fSB8IG51bGwgPSBudWxsO1xuICAgICAgY29uc3Qge3ZhbHVlMCwgdmFsdWUxfSA9IHByb3BzO1xuICAgICAgaWYgKHByb3BzLnZhbHVlMCAhPT0gc3RhdGUucHJldlZhbHVlMCAmJiAhaXNOYU4odmFsdWUwKSkge1xuICAgICAgICB1cGRhdGUgPSB7Li4uKHVwZGF0ZSB8fCB7fSksIHZhbHVlMCwgcHJldlZhbHVlMDogdmFsdWUwfTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy52YWx1ZTEgIT09IHN0YXRlLnByZXZWYWx1ZTEgJiYgIWlzTmFOKHZhbHVlMSkpIHtcbiAgICAgICAgdXBkYXRlID0gey4uLih1cGRhdGUgfHwge30pLCB2YWx1ZTEsIHByZXZWYWx1ZTE6IHZhbHVlMX07XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlO1xuICAgIH1cblxuICAgIHN0YXRlID0ge1xuICAgICAgdmFsdWUwOiAwLFxuICAgICAgdmFsdWUxOiAxLFxuICAgICAgcHJldlZhbHVlMDogMCxcbiAgICAgIHByZXZWYWx1ZTE6IDEsXG4gICAgICB3aWR0aDogMjg4XG4gICAgfTtcblxuICAgIHNsaWRlckNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnNsaWRlckNvbnRhaW5lciwgdGhpcy5fcmVzaXplLCAxMDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuc2xpZGVyQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTbGlkZXJDb250YWluZXI6IFJlYWN0LkxlZ2FjeVJlZjxIVE1MRGl2RWxlbWVudD4gPSBlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyID0gZWxlbWVudDtcbiAgICAgIHRoaXMuX3Jlc2l6ZSgpO1xuICAgIH07XG4gICAgaW5wdXRWYWx1ZTAgPSBjcmVhdGVSZWY8SFRNTElucHV0RWxlbWVudD4oKTtcbiAgICBpbnB1dFZhbHVlMSA9IGNyZWF0ZVJlZjxIVE1MSW5wdXRFbGVtZW50PigpO1xuICAgIHZhbHVlMFNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWUwO1xuICAgIHZhbHVlMVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWUxO1xuICAgIGZpbHRlclZhbHVlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMudmFsdWUwU2VsZWN0b3IsXG4gICAgICB0aGlzLnZhbHVlMVNlbGVjdG9yLFxuICAgICAgKHZhbHVlMCwgdmFsdWUxKSA9PiBbdmFsdWUwLCB2YWx1ZTFdXG4gICAgKTtcblxuICAgIF9yb3VuZFZhbFRvU3RlcCA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7cmFuZ2UsIHN0ZXB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghcmFuZ2UgfHwgIXN0ZXApIHJldHVybjtcbiAgICAgIHJldHVybiByb3VuZFZhbFRvU3RlcChyYW5nZVswXSwgc3RlcCwgdmFsKTtcbiAgICB9O1xuXG4gICAgX3NldFJhbmdlVmFsMSA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWUwLCByYW5nZSwgb25DaGFuZ2UgPSBub29wfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAoIXJhbmdlKSByZXR1cm47XG4gICAgICBjb25zdCB2YWwxID0gTnVtYmVyKHZhbCk7XG4gICAgICBvbkNoYW5nZShbdmFsdWUwLCBjbGFtcChbdmFsdWUwLCByYW5nZVsxXV0sIHRoaXMuX3JvdW5kVmFsVG9TdGVwKHZhbDEpKV0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIF9zZXRSYW5nZVZhbDAgPSB2YWwgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlMSwgcmFuZ2UsIG9uQ2hhbmdlID0gbm9vcH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuO1xuICAgICAgY29uc3QgdmFsMCA9IE51bWJlcih2YWwpO1xuICAgICAgb25DaGFuZ2UoW2NsYW1wKFtyYW5nZVswXSwgdmFsdWUxXSwgdGhpcy5fcm91bmRWYWxUb1N0ZXAodmFsMCkpLCB2YWx1ZTFdKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBfcmVzaXplID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5zbGlkZXJDb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5zdGF0ZS53aWR0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uQ2hhbmdlSW5wdXQgPSAoa2V5LCBlKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtba2V5XTogZS50YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX3JlbmRlcklucHV0KGtleSkge1xuICAgICAgY29uc3Qgc2V0UmFuZ2UgPSBrZXkgPT09ICd2YWx1ZTAnID8gdGhpcy5fc2V0UmFuZ2VWYWwwIDogdGhpcy5fc2V0UmFuZ2VWYWwxO1xuICAgICAgY29uc3QgcmVmID0ga2V5ID09PSAndmFsdWUwJyA/IHRoaXMuaW5wdXRWYWx1ZTAgOiB0aGlzLmlucHV0VmFsdWUxO1xuICAgICAgY29uc3QgdXBkYXRlID0gZSA9PiB7XG4gICAgICAgIGlmICghc2V0UmFuZ2UoZS50YXJnZXQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7W2tleV06IHRoaXMuc3RhdGVba2V5XX0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlSW5wdXQuYmluZCh0aGlzLCBrZXkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2xpZGVySW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBpZD17YHNsaWRlci1pbnB1dC0ke2tleX1gfVxuICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlW2tleV19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZShlKTtcbiAgICAgICAgICAgICAgKHJlZi5jdXJyZW50IGFzIGFueSkuYmx1cigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25CbHVyPXt1cGRhdGV9XG4gICAgICAgICAgJGZsdXNoPXtrZXkgPT09ICd2YWx1ZTAnfVxuICAgICAgICAgICRpbnB1dFNpemU9e3RoaXMucHJvcHMuaW5wdXRTaXplfVxuICAgICAgICAgIHNlY29uZGFyeT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlzUmFuZ2VkLFxuICAgICAgICBzaG93SW5wdXQsXG4gICAgICAgIGJpbnMsXG4gICAgICAgIGxpbmVDaGFydCxcbiAgICAgICAgcGxvdFR5cGUsXG4gICAgICAgIGludmVydFRyZW5kQ29sb3IsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBvbkNoYW5nZSA9IG5vb3AsXG4gICAgICAgIHNsaWRlckhhbmRsZVdpZHRoLFxuICAgICAgICBzdGVwLFxuICAgICAgICB0aW1lem9uZSxcbiAgICAgICAgdGltZUZvcm1hdCxcbiAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGgsXG4gICAgICAgIHNldEZpbHRlclBsb3QsXG4gICAgICAgIGFuaW1hdGlvbldpbmRvdyxcbiAgICAgICAgc3ViQW5pbWF0aW9uczogc3ViQW5pbWF0aW9ucyxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IHt3aWR0aH0gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgcGxvdFdpZHRoID0gTWF0aC5tYXgod2lkdGggLSBOdW1iZXIoc2xpZGVySGFuZGxlV2lkdGgpLCAwKTtcbiAgICAgIGNvbnN0IGhhc1Bsb3QgPSBwbG90VHlwZT8udHlwZTtcblxuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLnBsb3RWYWx1ZSB8fCB0aGlzLmZpbHRlclZhbHVlU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBzY2FsZWRWYWx1ZSA9XG4gICAgICAgIHN1YkFuaW1hdGlvbnM/Lmxlbmd0aCAmJiByYW5nZVxuICAgICAgICAgID8gc2NhbGVTb3VyY2VEb21haW5Ub0Rlc3RpbmF0aW9uKHZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl0sIHJhbmdlIGFzIFtudW1iZXIsIG51bWJlcl0pXG4gICAgICAgICAgOiBbMCwgMF07XG4gICAgICBjb25zdCBjb21tb25QYWRkaW5nID0gYCR7TnVtYmVyKHNsaWRlckhhbmRsZVdpZHRoKSAvIDJ9cHhgO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImtnLXJhbmdlLXNsaWRlclwiXG4gICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnLCBwYWRkaW5nOiBgMCAke2NvbW1vblBhZGRpbmd9YH19XG4gICAgICAgICAgcmVmPXt0aGlzLnNldFNsaWRlckNvbnRhaW5lcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtBcnJheS5pc0FycmF5KHJhbmdlKSAmJiByYW5nZS5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtoYXNQbG90ID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZVBsb3RcbiAgICAgICAgICAgICAgICAgIGJpbnM9e2JpbnN9XG4gICAgICAgICAgICAgICAgICBsaW5lQ2hhcnQ9e2xpbmVDaGFydH1cbiAgICAgICAgICAgICAgICAgIHBsb3RUeXBlPXtwbG90VHlwZX1cbiAgICAgICAgICAgICAgICAgIGludmVydFRyZW5kQ29sb3I9e2ludmVydFRyZW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgICBpc0VubGFyZ2VkPXt0aGlzLnByb3BzLmlzRW5sYXJnZWR9XG4gICAgICAgICAgICAgICAgICBvbkJydXNoPXsodmFsMCwgdmFsMSkgPT4gb25DaGFuZ2UoW3ZhbDAsIHZhbDFdKX1cbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uV2luZG93PXthbmltYXRpb25XaW5kb3d9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXtwbG90V2lkdGh9XG4gICAgICAgICAgICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdD17dGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIHBsYXliYWNrQ29udHJvbFdpZHRoPXtwbGF5YmFja0NvbnRyb2xXaWR0aH1cbiAgICAgICAgICAgICAgICAgIHNldEZpbHRlclBsb3Q9e3NldEZpbHRlclBsb3R9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e3BhZGRpbmdMZWZ0OiBjb21tb25QYWRkaW5nfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3N1YkFuaW1hdGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbFxuICAgICAgICAgICAgICAgICAgc3ViQW5pbWF0aW9ucz17c3ViQW5pbWF0aW9uc31cbiAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbHVlPXtzY2FsZWRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtSQU5HRV9TTElERVJfVElNRUxJTkVfUEFORUxfU1RZTEV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTbGlkZXJXcmFwcGVyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwia2ctcmFuZ2Utc2xpZGVyX19zbGlkZXJcIlxuICAgICAgICAgICAgICAgICRpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgJHNob3dJbnB1dD17c2hvd0lucHV0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMueEF4aXMgPyAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7aGVpZ2h0OiAnMzBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMueEF4aXNcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17cGxvdFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgICAgICAgICAgICAgICBkb21haW49e3JhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIGlzRW5sYXJnZWQ9e3RoaXMucHJvcHMuaXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxTbGlkZXJcbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICAgICAgICAgICAgbWluVmFsdWU9e3JhbmdlWzBdfVxuICAgICAgICAgICAgICAgICAgbWF4VmFsdWU9e3JhbmdlWzFdfVxuICAgICAgICAgICAgICAgICAgdmFsdWUwPXt0aGlzLnByb3BzLnZhbHVlMH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlMT17dGhpcy5wcm9wcy52YWx1ZTF9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgICAgICAgICAgb25TbGlkZXIwQ2hhbmdlPXt0aGlzLl9zZXRSYW5nZVZhbDB9XG4gICAgICAgICAgICAgICAgICBvblNsaWRlcjFDaGFuZ2U9e3RoaXMuX3NldFJhbmdlVmFsMX1cbiAgICAgICAgICAgICAgICAgIG9uU2xpZGVyQmFyQ2hhbmdlPXsodmFsMCwgdmFsMSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShbdmFsMCwgdmFsMV0pO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGVuYWJsZUJhckRyYWdcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHshaXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gdGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMScpIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICB7aXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZUlucHV0V3JhcHBlciBjbGFzc05hbWU9XCJyYW5nZS1zbGlkZXJfX2lucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMCcpfVxuICAgICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlcklucHV0KCd2YWx1ZTEnKX1cbiAgICAgICAgICAgICAgICA8L1JhbmdlSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwb2x5ZmlsbChSYW5nZVNsaWRlcik7XG5cbiAgcmV0dXJuIFJhbmdlU2xpZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxzQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSx5QkFBQSxHQUFBSixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBTTBCLElBQUFVLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFqQjFCO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWYsd0JBQUFlLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEs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LFNBQVMsZ0JBQ3BCL0osTUFBQSxZQUFBaUosYUFBQSxDQUFDckUsaUJBQWlCO1VBQUNzRSxTQUFTLEVBQUM7UUFBMkIsR0FDckQsSUFBSSxDQUFDWixZQUFZLENBQUMsUUFBUSxDQUFDLEVBQzNCLElBQUksQ0FBQ0EsWUFBWSxDQUFDLFFBQVEsQ0FDVixDQUFDLEdBQ2xCLElBQ0osQ0FFRCxDQUFDO01BRVY7SUFBQztNQUFBVixHQUFBO01BQUFFLEtBQUEsRUF4T0QsU0FBTzRFLHdCQUF3QkEsQ0FBQ3pJLEtBQUssRUFBRXlELEtBQUssRUFBRTtRQUM1QyxJQUFJb0IsTUFBK0UsR0FBRyxJQUFJO1FBQzFGLElBQU9oRCxNQUFNLEdBQVk3QixLQUFLLENBQXZCNkIsTUFBTTtVQUFFQyxNQUFNLEdBQUk5QixLQUFLLENBQWY4QixNQUFNO1FBQ3JCLElBQUk5QixLQUFLLENBQUM2QixNQUFNLEtBQUs0QixLQUFLLENBQUMxQixVQUFVLElBQUksQ0FBQzJHLEtBQUssQ0FBQzdHLE1BQU0sQ0FBQyxFQUFFO1VBQ3ZEZ0QsTUFBTSxHQUFBbkcsYUFBQSxDQUFBQSxhQUFBLEtBQVFtRyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQUdoRCxNQUFNLEVBQU5BLE1BQU07WUFBRUUsVUFBVSxFQUFFRjtVQUFNLEVBQUM7UUFDMUQ7UUFDQSxJQUFJN0IsS0FBSyxDQUFDOEIsTUFBTSxLQUFLMkIsS0FBSyxDQUFDekIsVUFBVSxJQUFJLENBQUMwRyxLQUFLLENBQUM1RyxNQUFNLENBQUMsRUFBRTtVQUN2RCtDLE1BQU0sR0FBQW5HLGFBQUEsQ0FBQUEsYUFBQSxLQUFRbUcsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUFHL0MsTUFBTSxFQUFOQSxNQUFNO1lBQUVFLFVBQVUsRUFBRUY7VUFBTSxFQUFDO1FBQzFEO1FBQ0EsT0FBTytDLE1BQU07TUFDZjtJQUFDO0VBQUEsRUFyQnVCOEQsZ0JBQVM7RUFBQSxJQUFBN0osZ0JBQUEsYUFBN0JzQyxXQUFXLGtCQUNPO0lBQ3BCd0csVUFBVSxFQUFFLEtBQUs7SUFDakIvQixRQUFRLEVBQUUsSUFBSTtJQUNkQyxTQUFTLEVBQUUsSUFBSTtJQUNmTSxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCVixVQUFVLEVBQUUsRUFBRTtJQUNkRixTQUFTLEVBQUUsT0FBTztJQUNsQnhDLFFBQVEsRUFBRXJEO0VBQ1osQ0FBQztFQTZPSCxJQUFBaUosK0JBQVEsRUFBQ3hILFdBQVcsQ0FBQztFQUVyQixPQUFPQSxXQUFXO0FBQ3BCIiwiaWdub3JlTGlzdCI6W119
372
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVzZWxlY3QiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmFuZ2VQbG90IiwiX3NsaWRlciIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9yYW5nZVNsaWRlclRpbWVsaW5lUGFuZWwiLCJfdXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwibm9vcCIsIlNsaWRlcklucHV0Iiwic3R5bGVkIiwiSW5wdXQiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJzbGlkZXJJbnB1dFdpZHRoIiwiJGZsdXNoIiwiJGlucHV0U2l6ZSIsInNsaWRlcklucHV0Rm9udFNpemUiLCJzbGlkZXJJbnB1dFBhZGRpbmciLCJTbGlkZXJXcmFwcGVyIiwiZGl2IiwiJGlzUmFuZ2VkIiwiJHNob3dJbnB1dCIsIlJhbmdlSW5wdXRXcmFwcGVyIiwiUkFOR0VfU0xJREVSX1RJTUVMSU5FX1BBTkVMX1NUWUxFIiwibWFyZ2luTGVmdCIsIlJhbmdlU2xpZGVyRmFjdG9yeSIsImRlcHMiLCJSYW5nZVBsb3RGYWN0b3J5IiwiUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3RvcnkiLCJSYW5nZVBsb3QiLCJSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsIiwiUmFuZ2VTbGlkZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJ2YWx1ZTAiLCJ2YWx1ZTEiLCJwcmV2VmFsdWUwIiwicHJldlZhbHVlMSIsIndpZHRoIiwiZWxlbWVudCIsInNsaWRlckNvbnRhaW5lciIsIl9yZXNpemUiLCJjcmVhdGVSZWYiLCJjcmVhdGVTZWxlY3RvciIsInZhbHVlMFNlbGVjdG9yIiwidmFsdWUxU2VsZWN0b3IiLCJ0aW1lRm9ybWF0IiwiX3RoaXMkcHJvcHMiLCJyYW5nZSIsImJpbnMiLCJpc1JhbmdlZCIsImRpc3BsYXlSYW5nZSIsImJpblN0ZXAiLCJncm91cEtleXMiLCJrIiwiX2JpbnMkayIsImdyb3VwIiwiaWR4IiwieDEiLCJ4MCIsIl9pc1RpbWVGaWx0ZXIiLCJwYWQiLCJfZ2V0RGlzcGxheVJhbmdlSW5mbyIsInZhbCIsIl90aGlzJHByb3BzMiIsInN0ZXAiLCJyb3VuZFZhbFRvU3RlcCIsIl90aGlzJHByb3BzMyIsIl90aGlzJHByb3BzMyRvbkNoYW5nZSIsIm9uQ2hhbmdlIiwiZHIiLCJfZ2V0RGlzcGxheVJhbmdlIiwidmFsMSIsIk51bWJlciIsImNsYW1wIiwiX3JvdW5kVmFsVG9TdGVwIiwiX3RoaXMkcHJvcHM0IiwiX3RoaXMkcHJvcHM0JG9uQ2hhbmdlIiwidmFsMCIsIm9mZnNldFdpZHRoIiwic3RhdGUiLCJzZXRTdGF0ZSIsImtleSIsInRhcmdldCIsInZhbHVlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJjb21wb25lbnREaWRNb3VudCIsIkVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsIl9yZW5kZXJJbnB1dCIsIl90aGlzMiIsInNldFJhbmdlIiwiX3NldFJhbmdlVmFsMCIsIl9zZXRSYW5nZVZhbDEiLCJyZWYiLCJpbnB1dFZhbHVlMCIsImlucHV0VmFsdWUxIiwidXBkYXRlIiwiX29uQ2hhbmdlSW5wdXQiLCJiaW5kIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInR5cGUiLCJpZCIsIm9uS2V5UHJlc3MiLCJjdXJyZW50IiwiYmx1ciIsIm9uQmx1ciIsImlucHV0U2l6ZSIsInNlY29uZGFyeSIsImlucHV0VGhlbWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczUiLCJzaG93SW5wdXQiLCJsaW5lQ2hhcnQiLCJwbG90VHlwZSIsImludmVydFRyZW5kQ29sb3IiLCJfdGhpcyRwcm9wczUkb25DaGFuZ2UiLCJzbGlkZXJIYW5kbGVXaWR0aCIsInRpbWV6b25lIiwicGxheWJhY2tDb250cm9sV2lkdGgiLCJzZXRGaWx0ZXJQbG90IiwiYW5pbWF0aW9uV2luZG93Iiwic3ViQW5pbWF0aW9ucyIsImRhdGFzZXRzIiwic2NhbGVDb25maWciLCJwbG90V2lkdGgiLCJNYXRoIiwibWF4IiwiaGFzUGxvdCIsIl90aGlzJF9nZXREaXNwbGF5UmFuZyIsInJhd1ZhbHVlIiwicGxvdFZhbHVlIiwiZmlsdGVyVmFsdWVTZWxlY3RvciIsImlzQXJyYXkiLCJtYXAiLCJ2Iiwic2NhbGVkVmFsdWUiLCJzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb24iLCJjb21tb25QYWRkaW5nIiwic3R5bGUiLCJwYWRkaW5nIiwic2V0U2xpZGVyQ29udGFpbmVyIiwiZXZlcnkiLCJpc0Zpbml0ZSIsIkZyYWdtZW50IiwiaXNFbmxhcmdlZCIsIm9uQnJ1c2giLCJtYXJrcyIsInBhZGRpbmdMZWZ0IiwieEF4aXMiLCJoZWlnaHQiLCJkb21haW4iLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwib25TbGlkZXIwQ2hhbmdlIiwib25TbGlkZXIxQ2hhbmdlIiwib25TbGlkZXJCYXJDaGFuZ2UiLCJlbmFibGVCYXJEcmFnIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiaXNOYU4iLCJDb21wb25lbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3JhbmdlLXNsaWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBDb21wb25lbnRUeXBlLCBjcmVhdGVSZWYsIEVsZW1lbnRUeXBlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZVBsb3RGYWN0b3J5IGZyb20gJy4vcmFuZ2UtcGxvdCc7XG5pbXBvcnQgU2xpZGVyIGZyb20gJy4vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQge0lucHV0fSBmcm9tICcuL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsRmFjdG9yeSBmcm9tICcuLi9jb21tb24vcmFuZ2Utc2xpZGVyLXRpbWVsaW5lLXBhbmVsJztcbmltcG9ydCB7XG4gIG9ic2VydmVEaW1lbnNpb25zLFxuICB1bm9ic2VydmVEaW1lbnNpb25zLFxuICByb3VuZFZhbFRvU3RlcCxcbiAgY2xhbXAsXG4gIHNjYWxlU291cmNlRG9tYWluVG9EZXN0aW5hdGlvblxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB0eXBlIHtTbGlkZXJTY2FsZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0xpbmVDaGFydCwgRmlsdGVyLCBCaW5zfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyLCBzZXRGaWx0ZXJQbG90fSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbnRlcmZhY2UgU2xpZGVySW5wdXRQcm9wcyB7XG4gICRmbHVzaD86IGJvb2xlYW47XG4gICRpbnB1dFNpemU/OiBzdHJpbmc7XG59XG5jb25zdCBub29wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuY29uc3QgU2xpZGVySW5wdXQgPSBzdHlsZWQoSW5wdXQpPFNsaWRlcklucHV0UHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFdpZHRofXB4O1xuICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiAocHJvcHMuJGZsdXNoID8gMCA6IHByb3BzLiRpbnB1dFNpemUgPT09ICd0aW55JyA/IDEyIDogMTgpfXB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRGb250U2l6ZX07IC8vIDEwcHggLy8gMTJweDtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFBhZGRpbmd9OyAvLyA0cHggNnB4OyAvLyA2cHggMTJweDtcbmA7XG5cbmludGVyZmFjZSBTbGlkZXJXcmFwcGVyUHJvcHMge1xuICAkaXNSYW5nZWQ/OiBib29sZWFuO1xuICAkc2hvd0lucHV0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXY8U2xpZGVyV3JhcHBlclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAoIXByb3BzLiRpc1JhbmdlZCAmJiBwcm9wcy4kc2hvd0lucHV0ID8gJ2NlbnRlcicgOiAnZmxleC1zdGFydCcpfTtcbmA7XG5cbmNvbnN0IFJhbmdlSW5wdXRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuaW50ZXJmYWNlIFJhbmdlU2xpZGVyUHJvcHMge1xuICByYW5nZT86IG51bWJlcltdO1xuICB2YWx1ZTA6IG51bWJlcjtcbiAgdmFsdWUxOiBudW1iZXI7XG4gIG9uQ2hhbmdlPzogKHZhbDogbnVtYmVyW10sIGU/OiBFdmVudCB8IG51bGwpID0+IHZvaWQ7IC8vIFRPRE9cbiAgc2V0RmlsdGVyUGxvdD86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHNldEZpbHRlclBsb3Q+O1xuICBiaW5zPzogQmlucztcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICBpc0VubGFyZ2VkPzogYm9vbGVhbjtcbiAgc2hvd0lucHV0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgaW5wdXRTaXplPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBzbGlkZXJIYW5kbGVXaWR0aD86IG51bWJlcjtcbiAgeEF4aXM/OiBFbGVtZW50VHlwZTtcbiAgc3ViQW5pbWF0aW9ucz86IGFueVtdO1xuICB0aW1lbGluZUxhYmVsPzogc3RyaW5nO1xuXG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgcGxheWJhY2tDb250cm9sV2lkdGg/OiBudW1iZXI7XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFya3M/OiBudW1iZXJbXTtcbiAgcGxvdFR5cGU/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICBwbG90VmFsdWU/OiBudW1iZXJbXTtcblxuICBhbmltYXRpb25XaW5kb3c/OiBzdHJpbmc7XG4gIGZpbHRlcj86IEZpbHRlcjtcbiAgZGF0YXNldHM/OiBEYXRhc2V0cztcblxuICBpbnZlcnRUcmVuZENvbG9yPzogYm9vbGVhbjtcbiAgc2NhbGVDb25maWc/OiBTbGlkZXJTY2FsZUNvbmZpZyB8IG51bGw7XG59XG5cbmNvbnN0IFJBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRSA9IHttYXJnaW5MZWZ0OiAnLTMycHgnfTtcblxuUmFuZ2VTbGlkZXJGYWN0b3J5LmRlcHMgPSBbUmFuZ2VQbG90RmFjdG9yeSwgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVNsaWRlckZhY3RvcnkoXG4gIFJhbmdlUGxvdDogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VQbG90RmFjdG9yeT4sXG4gIFJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWxGYWN0b3J5PlxuKTogQ29tcG9uZW50VHlwZTxSYW5nZVNsaWRlclByb3BzPiB7XG4gIGNsYXNzIFJhbmdlU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50PFJhbmdlU2xpZGVyUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgaXNFbmxhcmdlZDogZmFsc2UsXG4gICAgICBpc1JhbmdlZDogdHJ1ZSxcbiAgICAgIHNob3dJbnB1dDogdHJ1ZSxcbiAgICAgIHNsaWRlckhhbmRsZVdpZHRoOiAxMixcbiAgICAgIGlucHV0VGhlbWU6ICcnLFxuICAgICAgaW5wdXRTaXplOiAnc21hbGwnLFxuICAgICAgb25DaGFuZ2U6IG5vb3BcbiAgICB9O1xuXG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIGxldCB1cGRhdGU6IHt2YWx1ZTE/OiBhbnk7IHByZXZWYWx1ZTE/OiBhbnk7IHZhbHVlMD86IGFueTsgcHJldlZhbHVlMD86IGFueX0gfCBudWxsID0gbnVsbDtcbiAgICAgIGNvbnN0IHt2YWx1ZTAsIHZhbHVlMX0gPSBwcm9wcztcbiAgICAgIGlmIChwcm9wcy52YWx1ZTAgIT09IHN0YXRlLnByZXZWYWx1ZTAgJiYgIWlzTmFOKHZhbHVlMCkpIHtcbiAgICAgICAgdXBkYXRlID0gey4uLih1cGRhdGUgfHwge30pLCB2YWx1ZTAsIHByZXZWYWx1ZTA6IHZhbHVlMH07XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMudmFsdWUxICE9PSBzdGF0ZS5wcmV2VmFsdWUxICYmICFpc05hTih2YWx1ZTEpKSB7XG4gICAgICAgIHVwZGF0ZSA9IHsuLi4odXBkYXRlIHx8IHt9KSwgdmFsdWUxLCBwcmV2VmFsdWUxOiB2YWx1ZTF9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZTtcbiAgICB9XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIHZhbHVlMDogMCxcbiAgICAgIHZhbHVlMTogMSxcbiAgICAgIHByZXZWYWx1ZTA6IDAsXG4gICAgICBwcmV2VmFsdWUxOiAxLFxuICAgICAgd2lkdGg6IDI4OFxuICAgIH07XG5cbiAgICBzbGlkZXJDb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnNsaWRlckNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5zbGlkZXJDb250YWluZXIsIHRoaXMuX3Jlc2l6ZSwgMTAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnNsaWRlckNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnNsaWRlckNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2xpZGVyQ29udGFpbmVyOiBSZWFjdC5MZWdhY3lSZWY8SFRNTERpdkVsZW1lbnQ+ID0gZWxlbWVudCA9PiB7XG4gICAgICB0aGlzLnNsaWRlckNvbnRhaW5lciA9IGVsZW1lbnQ7XG4gICAgICB0aGlzLl9yZXNpemUoKTtcbiAgICB9O1xuICAgIGlucHV0VmFsdWUwID0gY3JlYXRlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgaW5wdXRWYWx1ZTEgPSBjcmVhdGVSZWY8SFRNTElucHV0RWxlbWVudD4oKTtcbiAgICB2YWx1ZTBTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZhbHVlMDtcbiAgICB2YWx1ZTFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZhbHVlMTtcbiAgICBmaWx0ZXJWYWx1ZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLnZhbHVlMFNlbGVjdG9yLFxuICAgICAgdGhpcy52YWx1ZTFTZWxlY3RvcixcbiAgICAgICh2YWx1ZTAsIHZhbHVlMSkgPT4gW3ZhbHVlMCwgdmFsdWUxXVxuICAgICk7XG5cbiAgICBfaXNUaW1lRmlsdGVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnByb3BzLnRpbWVGb3JtYXQgPT09ICdzdHJpbmcnO1xuICAgIH07XG5cbiAgICBfZ2V0RGlzcGxheVJhbmdlSW5mbyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHtyYW5nZSwgYmlucywgaXNSYW5nZWR9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghcmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuIHtkaXNwbGF5UmFuZ2U6IHJhbmdlLCBiaW5TdGVwOiAwfTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFiaW5zIHx8ICFpc1JhbmdlZCkge1xuICAgICAgICByZXR1cm4ge2Rpc3BsYXlSYW5nZTogcmFuZ2UsIGJpblN0ZXA6IDB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBncm91cEtleXMgPSBPYmplY3Qua2V5cyhiaW5zKS5maWx0ZXIoayA9PiBiaW5zW2tdPy5sZW5ndGggPiAwKTtcbiAgICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7ZGlzcGxheVJhbmdlOiByYW5nZSwgYmluU3RlcDogMH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyb3VwID0gYmluc1tncm91cEtleXNbMF1dO1xuICAgICAgY29uc3QgaWR4ID0gZ3JvdXAubGVuZ3RoID4gMSA/IDEgOiAwO1xuICAgICAgY29uc3QgYmluU3RlcCA9IGdyb3VwW2lkeF0ueDEgLSBncm91cFtpZHhdLngwO1xuXG4gICAgICBpZiAoYmluU3RlcCA8PSAwKSB7XG4gICAgICAgIHJldHVybiB7ZGlzcGxheVJhbmdlOiByYW5nZSwgYmluU3RlcDogMH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9pc1RpbWVGaWx0ZXIoKSkge1xuICAgICAgICBjb25zdCBkaXNwbGF5UmFuZ2UgPSBbcmFuZ2VbMF0gLSBiaW5TdGVwLCByYW5nZVsxXSArIGJpblN0ZXBdO1xuICAgICAgICByZXR1cm4ge2Rpc3BsYXlSYW5nZSwgYmluU3RlcH07XG4gICAgICB9XG5cbiAgICAgIC8vIE5vbi10aW1lIHJhbmdlIGZpbHRlcnM6IHBhZCBieSBoYWxmIGEgYmluIHNvIGVkZ2UgYmFycyBhcmVuJ3QgY2xpcHBlZFxuICAgICAgY29uc3QgcGFkID0gYmluU3RlcCAvIDI7XG4gICAgICBjb25zdCBkaXNwbGF5UmFuZ2UgPSBbcmFuZ2VbMF0gLSBwYWQsIHJhbmdlWzFdICsgcGFkXTtcbiAgICAgIHJldHVybiB7ZGlzcGxheVJhbmdlLCBiaW5TdGVwOiBwYWR9O1xuICAgIH07XG5cbiAgICBfZ2V0RGlzcGxheVJhbmdlID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldERpc3BsYXlSYW5nZUluZm8oKS5kaXNwbGF5UmFuZ2U7XG4gICAgfTtcblxuICAgIF9yb3VuZFZhbFRvU3RlcCA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7cmFuZ2UsIHN0ZXB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghcmFuZ2UgfHwgIXN0ZXApIHJldHVybjtcbiAgICAgIHJldHVybiByb3VuZFZhbFRvU3RlcChyYW5nZVswXSwgc3RlcCwgdmFsKTtcbiAgICB9O1xuXG4gICAgX3NldFJhbmdlVmFsMSA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWUwLCBvbkNoYW5nZSA9IG5vb3B9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGRyID0gdGhpcy5fZ2V0RGlzcGxheVJhbmdlKCk7XG4gICAgICBpZiAoIWRyKSByZXR1cm47XG4gICAgICBjb25zdCB2YWwxID0gTnVtYmVyKHZhbCk7XG4gICAgICBvbkNoYW5nZShbdmFsdWUwLCBjbGFtcChbdmFsdWUwLCBkclsxXV0sIHRoaXMuX3JvdW5kVmFsVG9TdGVwKHZhbDEpKV0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIF9zZXRSYW5nZVZhbDAgPSB2YWwgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlMSwgb25DaGFuZ2UgPSBub29wfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBkciA9IHRoaXMuX2dldERpc3BsYXlSYW5nZSgpO1xuICAgICAgaWYgKCFkcikgcmV0dXJuO1xuICAgICAgY29uc3QgdmFsMCA9IE51bWJlcih2YWwpO1xuICAgICAgb25DaGFuZ2UoW2NsYW1wKFtkclswXSwgdmFsdWUxXSwgdGhpcy5fcm91bmRWYWxUb1N0ZXAodmFsMCkpLCB2YWx1ZTFdKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBfcmVzaXplID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5zbGlkZXJDb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5zdGF0ZS53aWR0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uQ2hhbmdlSW5wdXQgPSAoa2V5LCBlKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtba2V5XTogZS50YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX3JlbmRlcklucHV0KGtleSkge1xuICAgICAgY29uc3Qgc2V0UmFuZ2UgPSBrZXkgPT09ICd2YWx1ZTAnID8gdGhpcy5fc2V0UmFuZ2VWYWwwIDogdGhpcy5fc2V0UmFuZ2VWYWwxO1xuICAgICAgY29uc3QgcmVmID0ga2V5ID09PSAndmFsdWUwJyA/IHRoaXMuaW5wdXRWYWx1ZTAgOiB0aGlzLmlucHV0VmFsdWUxO1xuICAgICAgY29uc3QgdXBkYXRlID0gZSA9PiB7XG4gICAgICAgIGlmICghc2V0UmFuZ2UoZS50YXJnZXQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7W2tleV06IHRoaXMuc3RhdGVba2V5XX0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlSW5wdXQuYmluZCh0aGlzLCBrZXkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2xpZGVySW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBpZD17YHNsaWRlci1pbnB1dC0ke2tleX1gfVxuICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlW2tleV19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZShlKTtcbiAgICAgICAgICAgICAgKHJlZi5jdXJyZW50IGFzIGFueSkuYmx1cigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25CbHVyPXt1cGRhdGV9XG4gICAgICAgICAgJGZsdXNoPXtrZXkgPT09ICd2YWx1ZTAnfVxuICAgICAgICAgICRpbnB1dFNpemU9e3RoaXMucHJvcHMuaW5wdXRTaXplfVxuICAgICAgICAgIHNlY29uZGFyeT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlzUmFuZ2VkLFxuICAgICAgICBzaG93SW5wdXQsXG4gICAgICAgIGJpbnMsXG4gICAgICAgIGxpbmVDaGFydCxcbiAgICAgICAgcGxvdFR5cGUsXG4gICAgICAgIGludmVydFRyZW5kQ29sb3IsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBvbkNoYW5nZSA9IG5vb3AsXG4gICAgICAgIHNsaWRlckhhbmRsZVdpZHRoLFxuICAgICAgICBzdGVwLFxuICAgICAgICB0aW1lem9uZSxcbiAgICAgICAgdGltZUZvcm1hdCxcbiAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGgsXG4gICAgICAgIHNldEZpbHRlclBsb3QsXG4gICAgICAgIGFuaW1hdGlvbldpbmRvdyxcbiAgICAgICAgc3ViQW5pbWF0aW9uczogc3ViQW5pbWF0aW9ucyxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgc2NhbGVDb25maWdcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7d2lkdGh9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIGNvbnN0IHBsb3RXaWR0aCA9IE1hdGgubWF4KHdpZHRoIC0gTnVtYmVyKHNsaWRlckhhbmRsZVdpZHRoKSwgMCk7XG4gICAgICBjb25zdCBoYXNQbG90ID0gcGxvdFR5cGU/LnR5cGU7XG5cbiAgICAgIGNvbnN0IHtkaXNwbGF5UmFuZ2V9ID0gdGhpcy5fZ2V0RGlzcGxheVJhbmdlSW5mbygpO1xuXG4gICAgICBjb25zdCByYXdWYWx1ZSA9IHRoaXMucHJvcHMucGxvdFZhbHVlIHx8IHRoaXMuZmlsdGVyVmFsdWVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgZGlzcGxheVJhbmdlICYmIEFycmF5LmlzQXJyYXkocmF3VmFsdWUpXG4gICAgICAgICAgPyAocmF3VmFsdWUubWFwKHYgPT4gY2xhbXAoW2Rpc3BsYXlSYW5nZVswXSwgZGlzcGxheVJhbmdlWzFdXSwgdikpIGFzIHR5cGVvZiByYXdWYWx1ZSlcbiAgICAgICAgICA6IHJhd1ZhbHVlO1xuICAgICAgY29uc3Qgc2NhbGVkVmFsdWUgPVxuICAgICAgICBzdWJBbmltYXRpb25zPy5sZW5ndGggJiYgcmFuZ2VcbiAgICAgICAgICA/IHNjYWxlU291cmNlRG9tYWluVG9EZXN0aW5hdGlvbih2YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdLCByYW5nZSBhcyBbbnVtYmVyLCBudW1iZXJdKVxuICAgICAgICAgIDogWzAsIDBdO1xuICAgICAgY29uc3QgY29tbW9uUGFkZGluZyA9IGAke051bWJlcihzbGlkZXJIYW5kbGVXaWR0aCkgLyAyfXB4YDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJcIlxuICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICcxMDAlJywgcGFkZGluZzogYDAgJHtjb21tb25QYWRkaW5nfWB9fVxuICAgICAgICAgIHJlZj17dGhpcy5zZXRTbGlkZXJDb250YWluZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7QXJyYXkuaXNBcnJheShyYW5nZSkgJiYgcmFuZ2UuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7aGFzUGxvdCA/IChcbiAgICAgICAgICAgICAgICA8UmFuZ2VQbG90XG4gICAgICAgICAgICAgICAgICBiaW5zPXtiaW5zfVxuICAgICAgICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICAgICAgICBwbG90VHlwZT17cGxvdFR5cGV9XG4gICAgICAgICAgICAgICAgICBpbnZlcnRUcmVuZENvbG9yPXtpbnZlcnRUcmVuZENvbG9yfVxuICAgICAgICAgICAgICAgICAgaXNFbmxhcmdlZD17dGhpcy5wcm9wcy5pc0VubGFyZ2VkfVxuICAgICAgICAgICAgICAgICAgb25CcnVzaD17KHZhbDAsIHZhbDEpID0+IG9uQ2hhbmdlKFt2YWwwLCB2YWwxXSl9XG4gICAgICAgICAgICAgICAgICBtYXJrcz17dGhpcy5wcm9wcy5tYXJrc31cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbldpbmRvdz17YW5pbWF0aW9uV2luZG93fVxuICAgICAgICAgICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgICByYW5nZT17ZGlzcGxheVJhbmdlIHx8IHJhbmdlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3Bsb3RXaWR0aH1cbiAgICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgICAgICAgICAgIHN0ZXA9e3N0ZXB9XG4gICAgICAgICAgICAgICAgICB0aW1lem9uZT17dGltZXpvbmV9XG4gICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0PXt0aW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGg9e3BsYXliYWNrQ29udHJvbFdpZHRofVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyUGxvdD17c2V0RmlsdGVyUGxvdH1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7cGFkZGluZ0xlZnQ6IGNvbW1vblBhZGRpbmd9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c3ViQW5pbWF0aW9ucz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsXG4gICAgICAgICAgICAgICAgICBzdWJBbmltYXRpb25zPXtzdWJBbmltYXRpb25zfVxuICAgICAgICAgICAgICAgICAgc2NhbGVkVmFsdWU9e3NjYWxlZFZhbHVlfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e1JBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFNsaWRlcldyYXBwZXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3NsaWRlclwiXG4gICAgICAgICAgICAgICAgJGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgICAgICAgICAkc2hvd0lucHV0PXtzaG93SW5wdXR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy54QXhpcyA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3toZWlnaHQ6ICczMHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy54QXhpc1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtwbG90V2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbj17ZGlzcGxheVJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIGlzRW5sYXJnZWQ9e3RoaXMucHJvcHMuaXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxTbGlkZXJcbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICAgICAgICAgICAgbWluVmFsdWU9eyhkaXNwbGF5UmFuZ2UgfHwgcmFuZ2UpWzBdfVxuICAgICAgICAgICAgICAgICAgbWF4VmFsdWU9eyhkaXNwbGF5UmFuZ2UgfHwgcmFuZ2UpWzFdfVxuICAgICAgICAgICAgICAgICAgdmFsdWUwPXt0aGlzLnByb3BzLnZhbHVlMH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlMT17dGhpcy5wcm9wcy52YWx1ZTF9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgICAgICAgICAgb25TbGlkZXIwQ2hhbmdlPXt0aGlzLl9zZXRSYW5nZVZhbDB9XG4gICAgICAgICAgICAgICAgICBvblNsaWRlcjFDaGFuZ2U9e3RoaXMuX3NldFJhbmdlVmFsMX1cbiAgICAgICAgICAgICAgICAgIG9uU2xpZGVyQmFyQ2hhbmdlPXsodmFsMCwgdmFsMSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShbdmFsMCwgdmFsMV0pO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGVuYWJsZUJhckRyYWdcbiAgICAgICAgICAgICAgICAgIHNjYWxlQ29uZmlnPXtzY2FsZUNvbmZpZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHshaXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gdGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMScpIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICB7aXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZUlucHV0V3JhcHBlciBjbGFzc05hbWU9XCJyYW5nZS1zbGlkZXJfX2lucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMCcpfVxuICAgICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlcklucHV0KCd2YWx1ZTEnKX1cbiAgICAgICAgICAgICAgICA8L1JhbmdlSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gUmFuZ2VTbGlkZXI7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8seUJBQUEsR0FBQUosc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQU0wQixJQUFBUyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBaEIxQjtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENB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
@@ -4,7 +4,7 @@ type MouseEventHandlerProps = {
4
4
  vertical: boolean;
5
5
  valueListener: (distance: number) => void;
6
6
  toggleMouseOver: () => void;
7
- track: RefObject<StyleRangeSliderType>;
7
+ track: RefObject<StyleRangeSliderType | null>;
8
8
  setAnchor?: null | ((distance: number) => void);
9
9
  };
10
10
  export default class MouseEventHandler {