@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
@@ -7,21 +7,28 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
12
  var _react = _interopRequireWildcard(require("react"));
12
- var _reactVis = require("react-vis");
13
- var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+ var _d3Scale = require("d3-scale");
14
+ var _d3Array = require("d3-array");
15
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
14
16
  var _utils = require("@kepler.gl/utils");
15
17
  var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT
16
18
  // Copyright contributors to the kepler.gl project
17
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
- var LineChartWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .rv-xy-plot {\n /* important for rendering hint */\n position: relative;\n }\n .rv-xy-plot__inner {\n /* important to show axis */\n overflow: visible;\n }\n\n .rv-xy-plot__grid-lines__line {\n stroke: ", ";\n stroke-dasharray: 1px 4px;\n }\n\n .rv-xy-plot__axis__tick__text {\n font-size: 9px;\n fill: ", ";\n }\n"])), function (props) {
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
24
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
25
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
26
+ var LineChartWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n\n .line-chart__grid-line {\n stroke: ", ";\n stroke-dasharray: 1px 4px;\n }\n\n .line-chart__axis-tick {\n font-size: 9px;\n fill: ", ";\n }\n"])), function (props) {
20
27
  return props.theme.histogramFillOutRange;
21
28
  }, function (props) {
22
29
  return props.theme.textColor;
23
30
  });
24
- var StyledHint = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: #d3d8e0;\n border-radius: 2px;\n color: ", ";\n font-size: 9px;\n margin: 4px;\n padding: 3px 6px;\n pointer-events: none;\n user-select: none;\n"])), function (props) {
31
+ var StyledHint = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: #d3d8e0;\n border-radius: 2px;\n color: ", ";\n font-size: 9px;\n margin: 4px;\n padding: 3px 6px;\n pointer-events: none;\n user-select: none;\n position: absolute;\n white-space: nowrap;\n"])), function (props) {
25
32
  return props.theme.textColorLT;
26
33
  });
27
34
  var HintContent = function HintContent(_ref) {
@@ -34,12 +41,6 @@ var HintContent = function HintContent(_ref) {
34
41
  className: "row"
35
42
  }, y));
36
43
  };
37
- var MARGIN = {
38
- top: 0,
39
- bottom: 0,
40
- left: 0,
41
- right: 0
42
- };
43
44
  function LineChartFactory() {
44
45
  var LineChartComponent = function LineChartComponent(_ref2) {
45
46
  var brushComponent = _ref2.brushComponent,
@@ -52,69 +53,235 @@ function LineChartFactory() {
52
53
  lineChart = _ref2.lineChart,
53
54
  margin = _ref2.margin,
54
55
  onMouseMove = _ref2.onMouseMove,
56
+ value = _ref2.value,
55
57
  width = _ref2.width,
56
58
  timezone = _ref2.timezone,
57
- timeFormat = _ref2.timeFormat;
59
+ timeFormat = _ref2.timeFormat,
60
+ range = _ref2.range,
61
+ yAxisAutoRange = _ref2.yAxisAutoRange,
62
+ theme = _ref2.theme;
63
+ var svgRef = (0, _react.useRef)(null);
58
64
  var _ref3 = lineChart || {},
59
65
  yDomain = _ref3.yDomain,
60
66
  xDomain = _ref3.xDomain;
61
67
  // @ts-expect-error seems lineChart.series has ambiguous types. Requires refactoring.
62
68
  var series = lineChart === null || lineChart === void 0 ? void 0 : lineChart.series;
63
- var paddedYDomain = (0, _react.useMemo)(function () {
64
- return yDomain && yDomain[0] && yDomain[1] ? [yDomain[0], yDomain[1] + (yDomain[1] - yDomain[0]) * 0.2] : [];
65
- }, [yDomain]);
66
- var brushData = (0, _react.useMemo)(function () {
67
- return xDomain && paddedYDomain ? [{
68
- x: xDomain[0],
69
- y: paddedYDomain[1],
70
- customComponent: function customComponent() {
71
- return brushComponent;
69
+ var lineColor = color || theme && theme.activeColor || '#3A414C';
70
+ var computedYDomain = (0, _react.useMemo)(function () {
71
+ if (yDomain && yDomain[0] != null && yDomain[1] != null) return yDomain;
72
+ if (!(series !== null && series !== void 0 && series.lines)) return undefined;
73
+ var min;
74
+ var max;
75
+ var _iterator = _createForOfIteratorHelper(series.lines),
76
+ _step;
77
+ try {
78
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
79
+ var line = _step.value;
80
+ var _iterator2 = _createForOfIteratorHelper(line),
81
+ _step2;
82
+ try {
83
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
84
+ var point = _step2.value;
85
+ if (point.y != null) {
86
+ if (min === undefined || point.y < min) min = point.y;
87
+ if (max === undefined || point.y > max) max = point.y;
88
+ }
89
+ }
90
+ } catch (err) {
91
+ _iterator2.e(err);
92
+ } finally {
93
+ _iterator2.f();
94
+ }
72
95
  }
73
- }] : [];
74
- }, [xDomain, paddedYDomain, brushComponent]);
96
+ } catch (err) {
97
+ _iterator.e(err);
98
+ } finally {
99
+ _iterator.f();
100
+ }
101
+ return min !== undefined && max !== undefined ? [min, max] : undefined;
102
+ }, [yDomain, series]);
103
+ var effectiveXDomain = (0, _react.useMemo)(function () {
104
+ return range && range.length === 2 ? range : xDomain;
105
+ }, [range, xDomain]);
106
+ var filteredYDomain = (0, _react.useMemo)(function () {
107
+ if (!yAxisAutoRange || !(series !== null && series !== void 0 && series.lines) || !value || value.length < 2) return computedYDomain;
108
+ var min;
109
+ var max;
110
+ var _iterator3 = _createForOfIteratorHelper(series.lines),
111
+ _step3;
112
+ try {
113
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
114
+ var line = _step3.value;
115
+ for (var i = 0; i < line.length; i++) {
116
+ var point = line[i];
117
+ var inRange = point.x >= value[0] && point.x <= value[1];
118
+ var isAdjacentToRange = !inRange && line[i + 1] && line[i + 1].x >= value[0] && line[i + 1].x <= value[1] || !inRange && line[i - 1] && line[i - 1].x >= value[0] && line[i - 1].x <= value[1];
119
+ if ((inRange || isAdjacentToRange) && point.y != null) {
120
+ if (min === undefined || point.y < min) min = point.y;
121
+ if (max === undefined || point.y > max) max = point.y;
122
+ }
123
+ }
124
+ }
125
+ } catch (err) {
126
+ _iterator3.e(err);
127
+ } finally {
128
+ _iterator3.f();
129
+ }
130
+ return min !== undefined && max !== undefined ? [min, max] : computedYDomain;
131
+ }, [series, value, computedYDomain, yAxisAutoRange]);
132
+ var paddedYDomain = (0, _react.useMemo)(function () {
133
+ if (!filteredYDomain || filteredYDomain[0] == null || filteredYDomain[1] == null) return [];
134
+ var padding = (filteredYDomain[1] - filteredYDomain[0]) * 0.1;
135
+ return [filteredYDomain[0] - padding, filteredYDomain[1] + padding];
136
+ }, [filteredYDomain]);
137
+ var xScale = (0, _react.useMemo)(function () {
138
+ if (!effectiveXDomain || effectiveXDomain.length < 2) return null;
139
+ return (0, _d3Scale.scaleTime)().domain([new Date(effectiveXDomain[0]), new Date(effectiveXDomain[1])]).range([0, width]);
140
+ }, [effectiveXDomain, width]);
141
+ var yScale = (0, _react.useMemo)(function () {
142
+ if (!paddedYDomain || paddedYDomain.length < 2) return null;
143
+ return (0, _d3Scale.scaleLinear)().domain(paddedYDomain).range([height, 0]);
144
+ }, [paddedYDomain, height]);
75
145
  var hintFormatter = (0, _react.useMemo)(function () {
76
146
  return (0, _utils.datetimeFormatter)(timezone)(timeFormat);
77
147
  }, [timezone, timeFormat]);
148
+ var isHoveredDPVisible = hoveredDP ? !yAxisAutoRange || !paddedYDomain || paddedYDomain.length < 2 || hoveredDP.y >= paddedYDomain[0] && hoveredDP.y <= paddedYDomain[1] : false;
149
+ var clampedHoveredDP = (0, _react.useMemo)(function () {
150
+ if (!hoveredDP || !paddedYDomain || paddedYDomain.length < 2) return hoveredDP;
151
+ return _objectSpread(_objectSpread({}, hoveredDP), {}, {
152
+ y: Math.max(paddedYDomain[0], Math.min(paddedYDomain[1], hoveredDP.y))
153
+ });
154
+ }, [hoveredDP, paddedYDomain]);
155
+ var gridLines = (0, _react.useMemo)(function () {
156
+ if (!yScale) return [];
157
+ return yScale.ticks(3);
158
+ }, [yScale]);
159
+ var yAxisTicks = (0, _react.useMemo)(function () {
160
+ if (!yScale) return [];
161
+ return yScale.ticks(3);
162
+ }, [yScale]);
163
+ var linePaths = (0, _react.useMemo)(function () {
164
+ if (!xScale || !yScale || !(series !== null && series !== void 0 && series.lines)) return [];
165
+ return series.lines.map(function (lineData) {
166
+ var points = lineData.filter(function (p) {
167
+ return p.x != null && p.y != null;
168
+ }).map(function (p) {
169
+ return "".concat(xScale(new Date(p.x)), ",").concat(yScale(p.y));
170
+ });
171
+ return points.length > 1 ? "M".concat(points.join('L')) : '';
172
+ });
173
+ }, [xScale, yScale, series]);
174
+ var bisectX = (0, _react.useMemo)(function () {
175
+ return (0, _d3Array.bisector)(function (d) {
176
+ return d.x;
177
+ }).left;
178
+ }, []);
179
+ var findNearestPoint = (0, _react.useCallback)(function (mouseX) {
180
+ if (!xScale || !(series !== null && series !== void 0 && series.lines)) return null;
181
+ var xValue = xScale.invert(mouseX).getTime();
182
+ var nearest = null;
183
+ var minDist = Infinity;
184
+ var _iterator4 = _createForOfIteratorHelper(series.lines),
185
+ _step4;
186
+ try {
187
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
188
+ var line = _step4.value;
189
+ if (line.length === 0) continue;
190
+ var idx = bisectX(line, xValue);
191
+ // Check the two candidates around the bisection point
192
+ for (var _i = 0, _arr = [idx - 1, idx]; _i < _arr.length; _i++) {
193
+ var i = _arr[_i];
194
+ if (i >= 0 && i < line.length) {
195
+ var dist = Math.abs(line[i].x - xValue);
196
+ if (dist < minDist) {
197
+ minDist = dist;
198
+ nearest = line[i];
199
+ }
200
+ }
201
+ }
202
+ }
203
+ } catch (err) {
204
+ _iterator4.e(err);
205
+ } finally {
206
+ _iterator4.f();
207
+ }
208
+ return nearest;
209
+ }, [xScale, series, bisectX]);
210
+ var handleMouseMove = (0, _react.useCallback)(function (e) {
211
+ var _series$markers;
212
+ if (!enableChartHover || series !== null && series !== void 0 && (_series$markers = series.markers) !== null && _series$markers !== void 0 && _series$markers.length) return;
213
+ var svg = svgRef.current;
214
+ if (!svg) return;
215
+ var rect = svg.getBoundingClientRect();
216
+ var mouseX = e.clientX - rect.left;
217
+ var nearest = findNearestPoint(mouseX);
218
+ onMouseMove(nearest);
219
+ }, [enableChartHover, series, findNearestPoint, onMouseMove]);
220
+ var handleMouseLeave = (0, _react.useCallback)(function () {
221
+ onMouseMove(null);
222
+ }, [onMouseMove]);
223
+ var hintPosition = (0, _react.useMemo)(function () {
224
+ if (!clampedHoveredDP || !xScale || !yScale) return null;
225
+ return {
226
+ left: xScale(new Date(clampedHoveredDP.x)),
227
+ top: yScale(clampedHoveredDP.y)
228
+ };
229
+ }, [clampedHoveredDP, xScale, yScale]);
78
230
  return /*#__PURE__*/_react["default"].createElement(LineChartWrapper, {
79
231
  style: {
80
232
  marginTop: "".concat(margin.top, "px")
81
233
  }
82
- }, /*#__PURE__*/_react["default"].createElement(_reactVis.XYPlot, {
83
- xType: "time",
234
+ }, /*#__PURE__*/_react["default"].createElement("svg", {
235
+ ref: svgRef,
84
236
  width: width,
85
237
  height: height,
86
- margin: MARGIN,
87
- onMouseLeave: function onMouseLeave() {
88
- onMouseMove(null);
89
- },
90
- yDomain: paddedYDomain,
91
- xDomain: xDomain
92
- }, /*#__PURE__*/_react["default"].createElement(_reactVis.HorizontalGridLines, {
93
- tickTotal: 3
94
- }), series.lines.map(function (d, i) {
95
- return /*#__PURE__*/_react["default"].createElement(_reactVis.LineSeries, {
238
+ onMouseMove: handleMouseMove,
239
+ onMouseLeave: handleMouseLeave,
240
+ style: {
241
+ overflow: 'visible'
242
+ }
243
+ }, gridLines.map(function (tick, i) {
244
+ return /*#__PURE__*/_react["default"].createElement("line", {
245
+ key: i,
246
+ className: "line-chart__grid-line",
247
+ x1: 0,
248
+ x2: width,
249
+ y1: yScale(tick),
250
+ y2: yScale(tick)
251
+ });
252
+ }), linePaths.map(function (d, i) {
253
+ return /*#__PURE__*/_react["default"].createElement("path", {
96
254
  key: i,
97
- style: {
98
- fill: 'none'
99
- },
100
- color: color,
101
- data: d,
102
- onNearestX: series.markers.length || !enableChartHover ? undefined : onMouseMove
255
+ d: d,
256
+ fill: "none",
257
+ stroke: lineColor,
258
+ strokeWidth: 1
103
259
  });
104
- }), /*#__PURE__*/_react["default"].createElement(_reactVis.MarkSeries, {
105
- data: hoveredDP ? [hoveredDP] : [],
106
- color: color
107
- }), /*#__PURE__*/_react["default"].createElement(_reactVis.CustomSVGSeries, {
108
- data: brushData
109
- }), isEnlarged && /*#__PURE__*/_react["default"].createElement(_reactVis.YAxis, {
110
- tickTotal: 3
111
- }), hoveredDP && enableChartHover && !brushing ? /*#__PURE__*/_react["default"].createElement(_reactVis.Hint, {
112
- value: hoveredDP
260
+ }), isHoveredDPVisible && hoveredDP && xScale && yScale && /*#__PURE__*/_react["default"].createElement("circle", {
261
+ cx: xScale(new Date(hoveredDP.x)),
262
+ cy: yScale(hoveredDP.y),
263
+ r: 4,
264
+ fill: lineColor
265
+ }), isEnlarged && yAxisTicks.map(function (tick, i) {
266
+ return /*#__PURE__*/_react["default"].createElement("text", {
267
+ key: i,
268
+ className: "line-chart__axis-tick",
269
+ x: -4,
270
+ y: yScale(tick),
271
+ textAnchor: "end",
272
+ dominantBaseline: "middle"
273
+ }, tick);
274
+ }), brushComponent), clampedHoveredDP && enableChartHover && !brushing && hintPosition ? /*#__PURE__*/_react["default"].createElement("div", {
275
+ style: {
276
+ position: 'absolute',
277
+ left: hintPosition.left,
278
+ top: hintPosition.top
279
+ }
113
280
  }, /*#__PURE__*/_react["default"].createElement(HintContent, (0, _extends2["default"])({}, hoveredDP, {
114
281
  format: hintFormatter
115
- }))) : null));
282
+ }))) : null);
116
283
  };
117
- return LineChartComponent;
284
+ return (0, _styledComponents.withTheme)(LineChartComponent);
118
285
  }
119
286
  var _default = exports["default"] = LineChartFactory;
120
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXMiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiTGluZUNoYXJ0V3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsImhpc3RvZ3JhbUZpbGxPdXRSYW5nZSIsInRleHRDb2xvciIsIlN0eWxlZEhpbnQiLCJ0ZXh0Q29sb3JMVCIsIkhpbnRDb250ZW50IiwiX3JlZiIsIngiLCJ5IiwiZm9ybWF0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIk1BUkdJTiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIkxpbmVDaGFydEZhY3RvcnkiLCJMaW5lQ2hhcnRDb21wb25lbnQiLCJfcmVmMiIsImJydXNoQ29tcG9uZW50IiwiYnJ1c2hpbmciLCJjb2xvciIsImVuYWJsZUNoYXJ0SG92ZXIiLCJoZWlnaHQiLCJob3ZlcmVkRFAiLCJpc0VubGFyZ2VkIiwibGluZUNoYXJ0IiwibWFyZ2luIiwib25Nb3VzZU1vdmUiLCJ3aWR0aCIsInRpbWV6b25lIiwidGltZUZvcm1hdCIsIl9yZWYzIiwieURvbWFpbiIsInhEb21haW4iLCJzZXJpZXMiLCJwYWRkZWRZRG9tYWluIiwidXNlTWVtbyIsImJydXNoRGF0YSIsImN1c3RvbUNvbXBvbmVudCIsImhpbnRGb3JtYXR0ZXIiLCJkYXRldGltZUZvcm1hdHRlciIsInN0eWxlIiwibWFyZ2luVG9wIiwiY29uY2F0IiwiWFlQbG90IiwieFR5cGUiLCJvbk1vdXNlTGVhdmUiLCJIb3Jpem9udGFsR3JpZExpbmVzIiwidGlja1RvdGFsIiwibGluZXMiLCJtYXAiLCJkIiwiTGluZVNlcmllcyIsImtleSIsImZpbGwiLCJkYXRhIiwib25OZWFyZXN0WCIsIm1hcmtlcnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJNYXJrU2VyaWVzIiwiQ3VzdG9tU1ZHU2VyaWVzIiwiWUF4aXMiLCJIaW50IiwidmFsdWUiLCJfZXh0ZW5kczIiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2xpbmUtY2hhcnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIEhvcml6b250YWxHcmlkTGluZXMsXG4gIExpbmVTZXJpZXMsXG4gIFhZUGxvdCxcbiAgQ3VzdG9tU1ZHU2VyaWVzLFxuICBIaW50LFxuICBZQXhpcyxcbiAgTWFya1NlcmllcyxcbiAgTGluZVNlcmllc1BvaW50LFxuICBSVk5lYXJlc3RYRGF0YVxufSBmcm9tICdyZWFjdC12aXMnO1xuaW1wb3J0IHtMaW5lQ2hhcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2RhdGV0aW1lRm9ybWF0dGVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuY29uc3QgTGluZUNoYXJ0V3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIC5ydi14eS1wbG90IHtcbiAgICAvKiBpbXBvcnRhbnQgZm9yIHJlbmRlcmluZyBoaW50ICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIC5ydi14eS1wbG90X19pbm5lciB7XG4gICAgLyogaW1wb3J0YW50IHRvIHNob3cgYXhpcyAqL1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLnJ2LXh5LXBsb3RfX2dyaWQtbGluZXNfX2xpbmUge1xuICAgIHN0cm9rZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oaXN0b2dyYW1GaWxsT3V0UmFuZ2V9O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCA0cHg7XG4gIH1cblxuICAucnYteHktcGxvdF9fYXhpc19fdGlja19fdGV4dCB7XG4gICAgZm9udC1zaXplOiA5cHg7XG4gICAgZmlsbDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRIaW50ID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzZDhlMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIGZvbnQtc2l6ZTogOXB4O1xuICBtYXJnaW46IDRweDtcbiAgcGFkZGluZzogM3B4IDZweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuYDtcblxuaW50ZXJmYWNlIEhpbnRDb250ZW50UHJvcHMge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgZm9ybWF0OiAodHM6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBIaW50Q29udGVudCA9ICh7eCwgeSwgZm9ybWF0fTogSGludENvbnRlbnRQcm9wcykgPT4gKFxuICA8U3R5bGVkSGludD5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhpbnQtLXhcIj57Zm9ybWF0KHgpfTwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+e3l9PC9kaXY+XG4gIDwvU3R5bGVkSGludD5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG92ZXJEUCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZyB8IG51bWJlcjtcbiAgb3BhY2l0eT86IHN0cmluZyB8IG51bWJlcjtcbiAgc3Ryb2tlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBmaWxsPzogc3RyaW5nIHwgbnVtYmVyO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTGluZUNoYXJ0UHJvcHMge1xuICBicnVzaENvbXBvbmVudD86IGFueTtcbiAgYnJ1c2hpbmc/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbiAgZW5hYmxlQ2hhcnRIb3Zlcj86IGJvb2xlYW47XG4gIGhlaWdodDogbnVtYmVyO1xuICBob3ZlcmVkRFA/OiBIb3ZlckRQIHwgbnVsbDtcbiAgaXNFbmxhcmdlZD86IGJvb2xlYW47XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFyZ2luOiB7dG9wPzogbnVtYmVyOyBib3R0b20/OiBudW1iZXI7IGxlZnQ/OiBudW1iZXI7IHJpZ2h0PzogbnVtYmVyfTtcbiAgb25Nb3VzZU1vdmU6IChkYXRhcG9pbnQ6IExpbmVTZXJpZXNQb2ludCB8IG51bGwsIGRhdGE/OiBSVk5lYXJlc3RYRGF0YTxMaW5lU2VyaWVzUG9pbnQ+KSA9PiB2b2lkO1xuICB3aWR0aDogbnVtYmVyO1xuICB0aW1lem9uZT86IHN0cmluZyB8IG51bGw7XG4gIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG59XG5cbmNvbnN0IE1BUkdJTiA9IHt0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDB9O1xuZnVuY3Rpb24gTGluZUNoYXJ0RmFjdG9yeSgpIHtcbiAgY29uc3QgTGluZUNoYXJ0Q29tcG9uZW50ID0gKHtcbiAgICBicnVzaENvbXBvbmVudCxcbiAgICBicnVzaGluZyxcbiAgICBjb2xvcixcbiAgICBlbmFibGVDaGFydEhvdmVyLFxuICAgIGhlaWdodCxcbiAgICBob3ZlcmVkRFAsXG4gICAgaXNFbmxhcmdlZCxcbiAgICBsaW5lQ2hhcnQsXG4gICAgbWFyZ2luLFxuICAgIG9uTW91c2VNb3ZlLFxuICAgIHdpZHRoLFxuICAgIHRpbWV6b25lLFxuICAgIHRpbWVGb3JtYXRcbiAgfTogTGluZUNoYXJ0UHJvcHMpID0+IHtcbiAgICBjb25zdCB7eURvbWFpbiwgeERvbWFpbn0gPSBsaW5lQ2hhcnQgfHwge307XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBzZWVtcyBsaW5lQ2hhcnQuc2VyaWVzIGhhcyBhbWJpZ3VvdXMgdHlwZXMuIFJlcXVpcmVzIHJlZmFjdG9yaW5nLlxuICAgIGNvbnN0IHNlcmllczoge2xpbmVzOiBhbnlbXTsgbWFya2VyczogYW55W119ID0gbGluZUNoYXJ0Py5zZXJpZXM7XG5cbiAgICBjb25zdCBwYWRkZWRZRG9tYWluID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIHlEb21haW4gJiYgeURvbWFpblswXSAmJiB5RG9tYWluWzFdXG4gICAgICAgICAgPyBbeURvbWFpblswXSwgeURvbWFpblsxXSArICh5RG9tYWluWzFdIC0geURvbWFpblswXSkgKiAwLjJdXG4gICAgICAgICAgOiBbXSxcbiAgICAgIFt5RG9tYWluXVxuICAgICk7XG4gICAgY29uc3QgYnJ1c2hEYXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4geERvbWFpbiAmJiBwYWRkZWRZRG9tYWluXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB4OiB4RG9tYWluWzBdLFxuICAgICAgICAgICAgICB5OiBwYWRkZWRZRG9tYWluWzFdLFxuICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnQ6ICgpID0+IGJydXNoQ29tcG9uZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuICAgIH0sIFt4RG9tYWluLCBwYWRkZWRZRG9tYWluLCBicnVzaENvbXBvbmVudF0pO1xuXG4gICAgY29uc3QgaGludEZvcm1hdHRlciA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBkYXRldGltZUZvcm1hdHRlcih0aW1lem9uZSkodGltZUZvcm1hdCksXG4gICAgICBbdGltZXpvbmUsIHRpbWVGb3JtYXRdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8TGluZUNoYXJ0V3JhcHBlciBzdHlsZT17e21hcmdpblRvcDogYCR7bWFyZ2luLnRvcH1weGB9fT5cbiAgICAgICAgPFhZUGxvdFxuICAgICAgICAgIHhUeXBlPVwidGltZVwiXG4gICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICAgIG1hcmdpbj17TUFSR0lOfVxuICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4ge1xuICAgICAgICAgICAgb25Nb3VzZU1vdmUobnVsbCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB5RG9tYWluPXtwYWRkZWRZRG9tYWlufVxuICAgICAgICAgIHhEb21haW49e3hEb21haW59XG4gICAgICAgID5cbiAgICAgICAgICA8SG9yaXpvbnRhbEdyaWRMaW5lcyB0aWNrVG90YWw9ezN9IC8+XG4gICAgICAgICAge3Nlcmllcy5saW5lcy5tYXAoKGQsIGkpID0+IChcbiAgICAgICAgICAgIDxMaW5lU2VyaWVzXG4gICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tmaWxsOiAnbm9uZSd9fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICAgIGRhdGE9e2R9XG4gICAgICAgICAgICAgIG9uTmVhcmVzdFg9e3Nlcmllcy5tYXJrZXJzLmxlbmd0aCB8fCAhZW5hYmxlQ2hhcnRIb3ZlciA/IHVuZGVmaW5lZCA6IG9uTW91c2VNb3ZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8TWFya1NlcmllcyBkYXRhPXtob3ZlcmVkRFAgPyBbaG92ZXJlZERQXSA6IFtdfSBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgPEN1c3RvbVNWR1NlcmllcyBkYXRhPXticnVzaERhdGF9IC8+XG4gICAgICAgICAge2lzRW5sYXJnZWQgJiYgPFlBeGlzIHRpY2tUb3RhbD17M30gLz59XG4gICAgICAgICAge2hvdmVyZWREUCAmJiBlbmFibGVDaGFydEhvdmVyICYmICFicnVzaGluZyA/IChcbiAgICAgICAgICAgIDxIaW50IHZhbHVlPXtob3ZlcmVkRFB9PlxuICAgICAgICAgICAgICA8SGludENvbnRlbnQgey4uLmhvdmVyZWREUH0gZm9ybWF0PXtoaW50Rm9ybWF0dGVyfSAvPlxuICAgICAgICAgICAgPC9IaW50PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1hZUGxvdD5cbiAgICAgIDwvTGluZUNoYXJ0V3JhcHBlcj5cbiAgICApO1xuICB9O1xuICByZXR1cm4gTGluZUNoYXJ0Q29tcG9uZW50O1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaW5lQ2hhcnRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBWUEsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFtRCxJQUFBSyxlQUFBLEVBQUFDLGdCQUFBLEVBakJuRDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFULHdCQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JB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
287
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl9kM0FycmF5IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfdXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiTGluZUNoYXJ0V3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsImhpc3RvZ3JhbUZpbGxPdXRSYW5nZSIsInRleHRDb2xvciIsIlN0eWxlZEhpbnQiLCJ0ZXh0Q29sb3JMVCIsIkhpbnRDb250ZW50IiwiX3JlZiIsIngiLCJ5IiwiZm9ybWF0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIkxpbmVDaGFydEZhY3RvcnkiLCJMaW5lQ2hhcnRDb21wb25lbnQiLCJfcmVmMiIsImJydXNoQ29tcG9uZW50IiwiYnJ1c2hpbmciLCJjb2xvciIsImVuYWJsZUNoYXJ0SG92ZXIiLCJoZWlnaHQiLCJob3ZlcmVkRFAiLCJpc0VubGFyZ2VkIiwibGluZUNoYXJ0IiwibWFyZ2luIiwib25Nb3VzZU1vdmUiLCJ3aWR0aCIsInRpbWV6b25lIiwidGltZUZvcm1hdCIsInJhbmdlIiwieUF4aXNBdXRvUmFuZ2UiLCJzdmdSZWYiLCJ1c2VSZWYiLCJfcmVmMyIsInlEb21haW4iLCJ4RG9tYWluIiwic2VyaWVzIiwibGluZUNvbG9yIiwiYWN0aXZlQ29sb3IiLCJjb21wdXRlZFlEb21haW4iLCJ1c2VNZW1vIiwibGluZXMiLCJ1bmRlZmluZWQiLCJtaW4iLCJtYXgiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwicG9pbnQiLCJlcnIiLCJlZmZlY3RpdmVYRG9tYWluIiwiZmlsdGVyZWRZRG9tYWluIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImluUmFuZ2UiLCJpc0FkamFjZW50VG9SYW5nZSIsInBhZGRlZFlEb21haW4iLCJwYWRkaW5nIiwieFNjYWxlIiwic2NhbGVUaW1lIiwiZG9tYWluIiwiRGF0ZSIsInlTY2FsZSIsInNjYWxlTGluZWFyIiwiaGludEZvcm1hdHRlciIsImRhdGV0aW1lRm9ybWF0dGVyIiwiaXNIb3ZlcmVkRFBWaXNpYmxlIiwiY2xhbXBlZEhvdmVyZWREUCIsIk1hdGgiLCJncmlkTGluZXMiLCJ0aWNrcyIsInlBeGlzVGlja3MiLCJsaW5lUGF0aHMiLCJtYXAiLCJsaW5lRGF0YSIsInBvaW50cyIsInAiLCJjb25jYXQiLCJqb2luIiwiYmlzZWN0WCIsImJpc2VjdG9yIiwiZCIsImxlZnQiLCJmaW5kTmVhcmVzdFBvaW50IiwidXNlQ2FsbGJhY2siLCJtb3VzZVgiLCJ4VmFsdWUiLCJpbnZlcnQiLCJnZXRUaW1lIiwibmVhcmVzdCIsIm1pbkRpc3QiLCJJbmZpbml0eSIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJpZHgiLCJfaSIsIl9hcnIiLCJkaXN0IiwiYWJzIiwiaGFuZGxlTW91c2VNb3ZlIiwiX3NlcmllcyRtYXJrZXJzIiwibWFya2VycyIsInN2ZyIsImN1cnJlbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xpZW50WCIsImhhbmRsZU1vdXNlTGVhdmUiLCJoaW50UG9zaXRpb24iLCJ0b3AiLCJzdHlsZSIsIm1hcmdpblRvcCIsInJlZiIsIm9uTW91c2VMZWF2ZSIsIm92ZXJmbG93IiwidGljayIsImtleSIsIngxIiwieDIiLCJ5MSIsInkyIiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiY3giLCJjeSIsInRleHRBbmNob3IiLCJkb21pbmFudEJhc2VsaW5lIiwicG9zaXRpb24iLCJfZXh0ZW5kczIiLCJ3aXRoVGhlbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2xpbmUtY2hhcnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7c2NhbGVUaW1lLCBzY2FsZUxpbmVhcn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtiaXNlY3Rvcn0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHtMaW5lQ2hhcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtkYXRldGltZUZvcm1hdHRlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZVNlcmllc1BvaW50IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmNvbnN0IExpbmVDaGFydFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmxpbmUtY2hhcnRfX2dyaWQtbGluZSB7XG4gICAgc3Ryb2tlOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhpc3RvZ3JhbUZpbGxPdXRSYW5nZX07XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMXB4IDRweDtcbiAgfVxuXG4gIC5saW5lLWNoYXJ0X19heGlzLXRpY2sge1xuICAgIGZvbnQtc2l6ZTogOXB4O1xuICAgIGZpbGw6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkSGludCA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6ICNkM2Q4ZTA7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICBmb250LXNpemU6IDlweDtcbiAgbWFyZ2luOiA0cHg7XG4gIHBhZGRpbmc6IDNweCA2cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYDtcblxuaW50ZXJmYWNlIEhpbnRDb250ZW50UHJvcHMge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgZm9ybWF0OiAodHM6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBIaW50Q29udGVudCA9ICh7eCwgeSwgZm9ybWF0fTogSGludENvbnRlbnRQcm9wcykgPT4gKFxuICA8U3R5bGVkSGludD5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhpbnQtLXhcIj57Zm9ybWF0KHgpfTwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+e3l9PC9kaXY+XG4gIDwvU3R5bGVkSGludD5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG92ZXJEUCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZyB8IG51bWJlcjtcbiAgb3BhY2l0eT86IHN0cmluZyB8IG51bWJlcjtcbiAgc3Ryb2tlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBmaWxsPzogc3RyaW5nIHwgbnVtYmVyO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTGluZUNoYXJ0UHJvcHMge1xuICBicnVzaENvbXBvbmVudD86IGFueTtcbiAgYnJ1c2hpbmc/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbiAgZW5hYmxlQ2hhcnRIb3Zlcj86IGJvb2xlYW47XG4gIGhlaWdodDogbnVtYmVyO1xuICBob3ZlcmVkRFA/OiBIb3ZlckRQIHwgbnVsbDtcbiAgaXNFbmxhcmdlZD86IGJvb2xlYW47XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFyZ2luOiB7dG9wPzogbnVtYmVyOyBib3R0b20/OiBudW1iZXI7IGxlZnQ/OiBudW1iZXI7IHJpZ2h0PzogbnVtYmVyfTtcbiAgb25Nb3VzZU1vdmU6IChkYXRhcG9pbnQ6IExpbmVTZXJpZXNQb2ludCB8IG51bGwpID0+IHZvaWQ7XG4gIHZhbHVlPzogbnVtYmVyW107XG4gIHdpZHRoOiBudW1iZXI7XG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgcmFuZ2U/OiBudW1iZXJbXTtcbiAgeUF4aXNBdXRvUmFuZ2U/OiBib29sZWFuO1xuICB0aGVtZT86IGFueTtcbn1cblxuZnVuY3Rpb24gTGluZUNoYXJ0RmFjdG9yeSgpIHtcbiAgY29uc3QgTGluZUNoYXJ0Q29tcG9uZW50ID0gKHtcbiAgICBicnVzaENvbXBvbmVudCxcbiAgICBicnVzaGluZyxcbiAgICBjb2xvcixcbiAgICBlbmFibGVDaGFydEhvdmVyLFxuICAgIGhlaWdodCxcbiAgICBob3ZlcmVkRFAsXG4gICAgaXNFbmxhcmdlZCxcbiAgICBsaW5lQ2hhcnQsXG4gICAgbWFyZ2luLFxuICAgIG9uTW91c2VNb3ZlLFxuICAgIHZhbHVlLFxuICAgIHdpZHRoLFxuICAgIHRpbWV6b25lLFxuICAgIHRpbWVGb3JtYXQsXG4gICAgcmFuZ2UsXG4gICAgeUF4aXNBdXRvUmFuZ2UsXG4gICAgdGhlbWVcbiAgfTogTGluZUNoYXJ0UHJvcHMpID0+IHtcbiAgICBjb25zdCBzdmdSZWYgPSB1c2VSZWY8U1ZHU1ZHRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3Qge3lEb21haW4sIHhEb21haW59ID0gbGluZUNoYXJ0IHx8IHt9O1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igc2VlbXMgbGluZUNoYXJ0LnNlcmllcyBoYXMgYW1iaWd1b3VzIHR5cGVzLiBSZXF1aXJlcyByZWZhY3RvcmluZy5cbiAgICBjb25zdCBzZXJpZXM6IHtsaW5lczogYW55W107IG1hcmtlcnM6IGFueVtdfSA9IGxpbmVDaGFydD8uc2VyaWVzO1xuXG4gICAgY29uc3QgbGluZUNvbG9yID0gY29sb3IgfHwgKHRoZW1lICYmIHRoZW1lLmFjdGl2ZUNvbG9yKSB8fCAnIzNBNDE0Qyc7XG5cbiAgICBjb25zdCBjb21wdXRlZFlEb21haW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICh5RG9tYWluICYmIHlEb21haW5bMF0gIT0gbnVsbCAmJiB5RG9tYWluWzFdICE9IG51bGwpIHJldHVybiB5RG9tYWluO1xuICAgICAgaWYgKCFzZXJpZXM/LmxpbmVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgbGV0IG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IG1heDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIHNlcmllcy5saW5lcykge1xuICAgICAgICBmb3IgKGNvbnN0IHBvaW50IG9mIGxpbmUpIHtcbiAgICAgICAgICBpZiAocG9pbnQueSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAobWluID09PSB1bmRlZmluZWQgfHwgcG9pbnQueSA8IG1pbikgbWluID0gcG9pbnQueTtcbiAgICAgICAgICAgIGlmIChtYXggPT09IHVuZGVmaW5lZCB8fCBwb2ludC55ID4gbWF4KSBtYXggPSBwb2ludC55O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1pbiAhPT0gdW5kZWZpbmVkICYmIG1heCAhPT0gdW5kZWZpbmVkID8gW21pbiwgbWF4XSA6IHVuZGVmaW5lZDtcbiAgICB9LCBbeURvbWFpbiwgc2VyaWVzXSk7XG5cbiAgICBjb25zdCBlZmZlY3RpdmVYRG9tYWluID0gdXNlTWVtbyhcbiAgICAgICgpID0+IChyYW5nZSAmJiByYW5nZS5sZW5ndGggPT09IDIgPyByYW5nZSA6IHhEb21haW4pLFxuICAgICAgW3JhbmdlLCB4RG9tYWluXVxuICAgICk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFlEb21haW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICgheUF4aXNBdXRvUmFuZ2UgfHwgIXNlcmllcz8ubGluZXMgfHwgIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8IDIpIHJldHVybiBjb21wdXRlZFlEb21haW47XG4gICAgICBsZXQgbWluOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgbWF4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2Ygc2VyaWVzLmxpbmVzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHBvaW50ID0gbGluZVtpXTtcbiAgICAgICAgICBjb25zdCBpblJhbmdlID0gcG9pbnQueCA+PSB2YWx1ZVswXSAmJiBwb2ludC54IDw9IHZhbHVlWzFdO1xuICAgICAgICAgIGNvbnN0IGlzQWRqYWNlbnRUb1JhbmdlID1cbiAgICAgICAgICAgICghaW5SYW5nZSAmJiBsaW5lW2kgKyAxXSAmJiBsaW5lW2kgKyAxXS54ID49IHZhbHVlWzBdICYmIGxpbmVbaSArIDFdLnggPD0gdmFsdWVbMV0pIHx8XG4gICAgICAgICAgICAoIWluUmFuZ2UgJiYgbGluZVtpIC0gMV0gJiYgbGluZVtpIC0gMV0ueCA+PSB2YWx1ZVswXSAmJiBsaW5lW2kgLSAxXS54IDw9IHZhbHVlWzFdKTtcbiAgICAgICAgICBpZiAoKGluUmFuZ2UgfHwgaXNBZGphY2VudFRvUmFuZ2UpICYmIHBvaW50LnkgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKG1pbiA9PT0gdW5kZWZpbmVkIHx8IHBvaW50LnkgPCBtaW4pIG1pbiA9IHBvaW50Lnk7XG4gICAgICAgICAgICBpZiAobWF4ID09PSB1bmRlZmluZWQgfHwgcG9pbnQueSA+IG1heCkgbWF4ID0gcG9pbnQueTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtaW4gIT09IHVuZGVmaW5lZCAmJiBtYXggIT09IHVuZGVmaW5lZCA/IFttaW4sIG1heF0gOiBjb21wdXRlZFlEb21haW47XG4gICAgfSwgW3NlcmllcywgdmFsdWUsIGNvbXB1dGVkWURvbWFpbiwgeUF4aXNBdXRvUmFuZ2VdKTtcblxuICAgIGNvbnN0IHBhZGRlZFlEb21haW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZmlsdGVyZWRZRG9tYWluIHx8IGZpbHRlcmVkWURvbWFpblswXSA9PSBudWxsIHx8IGZpbHRlcmVkWURvbWFpblsxXSA9PSBudWxsKSByZXR1cm4gW107XG4gICAgICBjb25zdCBwYWRkaW5nID0gKGZpbHRlcmVkWURvbWFpblsxXSAtIGZpbHRlcmVkWURvbWFpblswXSkgKiAwLjE7XG4gICAgICByZXR1cm4gW2ZpbHRlcmVkWURvbWFpblswXSAtIHBhZGRpbmcsIGZpbHRlcmVkWURvbWFpblsxXSArIHBhZGRpbmddO1xuICAgIH0sIFtmaWx0ZXJlZFlEb21haW5dKTtcblxuICAgIGNvbnN0IHhTY2FsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFlZmZlY3RpdmVYRG9tYWluIHx8IGVmZmVjdGl2ZVhEb21haW4ubGVuZ3RoIDwgMikgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gc2NhbGVUaW1lKClcbiAgICAgICAgLmRvbWFpbihbbmV3IERhdGUoZWZmZWN0aXZlWERvbWFpblswXSksIG5ldyBEYXRlKGVmZmVjdGl2ZVhEb21haW5bMV0pXSlcbiAgICAgICAgLnJhbmdlKFswLCB3aWR0aF0pO1xuICAgIH0sIFtlZmZlY3RpdmVYRG9tYWluLCB3aWR0aF0pO1xuXG4gICAgY29uc3QgeVNjYWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIXBhZGRlZFlEb21haW4gfHwgcGFkZGVkWURvbWFpbi5sZW5ndGggPCAyKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBzY2FsZUxpbmVhcigpLmRvbWFpbihwYWRkZWRZRG9tYWluKS5yYW5nZShbaGVpZ2h0LCAwXSk7XG4gICAgfSwgW3BhZGRlZFlEb21haW4sIGhlaWdodF0pO1xuXG4gICAgY29uc3QgaGludEZvcm1hdHRlciA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBkYXRldGltZUZvcm1hdHRlcih0aW1lem9uZSkodGltZUZvcm1hdCksXG4gICAgICBbdGltZXpvbmUsIHRpbWVGb3JtYXRdXG4gICAgKTtcblxuICAgIGNvbnN0IGlzSG92ZXJlZERQVmlzaWJsZSA9IGhvdmVyZWREUFxuICAgICAgPyAheUF4aXNBdXRvUmFuZ2UgfHxcbiAgICAgICAgIXBhZGRlZFlEb21haW4gfHxcbiAgICAgICAgcGFkZGVkWURvbWFpbi5sZW5ndGggPCAyIHx8XG4gICAgICAgIChob3ZlcmVkRFAueSA+PSBwYWRkZWRZRG9tYWluWzBdICYmIGhvdmVyZWREUC55IDw9IHBhZGRlZFlEb21haW5bMV0pXG4gICAgICA6IGZhbHNlO1xuXG4gICAgY29uc3QgY2xhbXBlZEhvdmVyZWREUCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFob3ZlcmVkRFAgfHwgIXBhZGRlZFlEb21haW4gfHwgcGFkZGVkWURvbWFpbi5sZW5ndGggPCAyKSByZXR1cm4gaG92ZXJlZERQO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaG92ZXJlZERQLFxuICAgICAgICB5OiBNYXRoLm1heChwYWRkZWRZRG9tYWluWzBdLCBNYXRoLm1pbihwYWRkZWRZRG9tYWluWzFdLCBob3ZlcmVkRFAueSkpXG4gICAgICB9O1xuICAgIH0sIFtob3ZlcmVkRFAsIHBhZGRlZFlEb21haW5dKTtcblxuICAgIGNvbnN0IGdyaWRMaW5lcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCF5U2NhbGUpIHJldHVybiBbXTtcbiAgICAgIHJldHVybiB5U2NhbGUudGlja3MoMyk7XG4gICAgfSwgW3lTY2FsZV0pO1xuXG4gICAgY29uc3QgeUF4aXNUaWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCF5U2NhbGUpIHJldHVybiBbXTtcbiAgICAgIHJldHVybiB5U2NhbGUudGlja3MoMyk7XG4gICAgfSwgW3lTY2FsZV0pO1xuXG4gICAgY29uc3QgbGluZVBhdGhzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIXhTY2FsZSB8fCAheVNjYWxlIHx8ICFzZXJpZXM/LmxpbmVzKSByZXR1cm4gW107XG4gICAgICByZXR1cm4gc2VyaWVzLmxpbmVzLm1hcChsaW5lRGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGxpbmVEYXRhXG4gICAgICAgICAgLmZpbHRlcihwID0+IHAueCAhPSBudWxsICYmIHAueSAhPSBudWxsKVxuICAgICAgICAgIC5tYXAocCA9PiBgJHt4U2NhbGUobmV3IERhdGUocC54KSl9LCR7eVNjYWxlKHAueSl9YCk7XG4gICAgICAgIHJldHVybiBwb2ludHMubGVuZ3RoID4gMSA/IGBNJHtwb2ludHMuam9pbignTCcpfWAgOiAnJztcbiAgICAgIH0pO1xuICAgIH0sIFt4U2NhbGUsIHlTY2FsZSwgc2VyaWVzXSk7XG5cbiAgICBjb25zdCBiaXNlY3RYID0gdXNlTWVtbygoKSA9PiBiaXNlY3RvcjxMaW5lU2VyaWVzUG9pbnQsIG51bWJlcj4oZCA9PiBkLngpLmxlZnQsIFtdKTtcblxuICAgIGNvbnN0IGZpbmROZWFyZXN0UG9pbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChtb3VzZVg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoIXhTY2FsZSB8fCAhc2VyaWVzPy5saW5lcykgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHhWYWx1ZSA9IHhTY2FsZS5pbnZlcnQobW91c2VYKS5nZXRUaW1lKCk7XG4gICAgICAgIGxldCBuZWFyZXN0OiBMaW5lU2VyaWVzUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IG1pbkRpc3QgPSBJbmZpbml0eTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIHNlcmllcy5saW5lcykge1xuICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA9PT0gMCkgY29udGludWU7XG4gICAgICAgICAgY29uc3QgaWR4ID0gYmlzZWN0WChsaW5lLCB4VmFsdWUpO1xuICAgICAgICAgIC8vIENoZWNrIHRoZSB0d28gY2FuZGlkYXRlcyBhcm91bmQgdGhlIGJpc2VjdGlvbiBwb2ludFxuICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBbaWR4IC0gMSwgaWR4XSkge1xuICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBpIDwgbGluZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IE1hdGguYWJzKGxpbmVbaV0ueCAtIHhWYWx1ZSk7XG4gICAgICAgICAgICAgIGlmIChkaXN0IDwgbWluRGlzdCkge1xuICAgICAgICAgICAgICAgIG1pbkRpc3QgPSBkaXN0O1xuICAgICAgICAgICAgICAgIG5lYXJlc3QgPSBsaW5lW2ldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZWFyZXN0O1xuICAgICAgfSxcbiAgICAgIFt4U2NhbGUsIHNlcmllcywgYmlzZWN0WF1cbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogUmVhY3QuTW91c2VFdmVudDxTVkdTVkdFbGVtZW50PikgPT4ge1xuICAgICAgICBpZiAoIWVuYWJsZUNoYXJ0SG92ZXIgfHwgc2VyaWVzPy5tYXJrZXJzPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc3ZnID0gc3ZnUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghc3ZnKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHJlY3QgPSBzdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG1vdXNlWCA9IGUuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgbmVhcmVzdCA9IGZpbmROZWFyZXN0UG9pbnQobW91c2VYKTtcbiAgICAgICAgb25Nb3VzZU1vdmUobmVhcmVzdCk7XG4gICAgICB9LFxuICAgICAgW2VuYWJsZUNoYXJ0SG92ZXIsIHNlcmllcywgZmluZE5lYXJlc3RQb2ludCwgb25Nb3VzZU1vdmVdXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvbk1vdXNlTW92ZShudWxsKTtcbiAgICB9LCBbb25Nb3VzZU1vdmVdKTtcblxuICAgIGNvbnN0IGhpbnRQb3NpdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFjbGFtcGVkSG92ZXJlZERQIHx8ICF4U2NhbGUgfHwgIXlTY2FsZSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiB4U2NhbGUobmV3IERhdGUoY2xhbXBlZEhvdmVyZWREUC54KSksXG4gICAgICAgIHRvcDogeVNjYWxlKGNsYW1wZWRIb3ZlcmVkRFAueSlcbiAgICAgIH07XG4gICAgfSwgW2NsYW1wZWRIb3ZlcmVkRFAsIHhTY2FsZSwgeVNjYWxlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPExpbmVDaGFydFdyYXBwZXIgc3R5bGU9e3ttYXJnaW5Ub3A6IGAke21hcmdpbi50b3B9cHhgfX0+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICByZWY9e3N2Z1JlZn1cbiAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgICAgb25Nb3VzZU1vdmU9e2hhbmRsZU1vdXNlTW92ZX1cbiAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZU1vdXNlTGVhdmV9XG4gICAgICAgICAgc3R5bGU9e3tvdmVyZmxvdzogJ3Zpc2libGUnfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtncmlkTGluZXMubWFwKCh0aWNrLCBpKSA9PiAoXG4gICAgICAgICAgICA8bGluZVxuICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpbmUtY2hhcnRfX2dyaWQtbGluZVwiXG4gICAgICAgICAgICAgIHgxPXswfVxuICAgICAgICAgICAgICB4Mj17d2lkdGh9XG4gICAgICAgICAgICAgIHkxPXt5U2NhbGUhKHRpY2spfVxuICAgICAgICAgICAgICB5Mj17eVNjYWxlISh0aWNrKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge2xpbmVQYXRocy5tYXAoKGQsIGkpID0+IChcbiAgICAgICAgICAgIDxwYXRoIGtleT17aX0gZD17ZH0gZmlsbD1cIm5vbmVcIiBzdHJva2U9e2xpbmVDb2xvcn0gc3Ryb2tlV2lkdGg9ezF9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge2lzSG92ZXJlZERQVmlzaWJsZSAmJiBob3ZlcmVkRFAgJiYgeFNjYWxlICYmIHlTY2FsZSAmJiAoXG4gICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgIGN4PXt4U2NhbGUobmV3IERhdGUoaG92ZXJlZERQLngpKX1cbiAgICAgICAgICAgICAgY3k9e3lTY2FsZShob3ZlcmVkRFAueSl9XG4gICAgICAgICAgICAgIHI9ezR9XG4gICAgICAgICAgICAgIGZpbGw9e2xpbmVDb2xvcn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNFbmxhcmdlZCAmJlxuICAgICAgICAgICAgeUF4aXNUaWNrcy5tYXAoKHRpY2ssIGkpID0+IChcbiAgICAgICAgICAgICAgPHRleHRcbiAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGluZS1jaGFydF9fYXhpcy10aWNrXCJcbiAgICAgICAgICAgICAgICB4PXstNH1cbiAgICAgICAgICAgICAgICB5PXt5U2NhbGUhKHRpY2spfVxuICAgICAgICAgICAgICAgIHRleHRBbmNob3I9XCJlbmRcIlxuICAgICAgICAgICAgICAgIGRvbWluYW50QmFzZWxpbmU9XCJtaWRkbGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RpY2t9XG4gICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIHticnVzaENvbXBvbmVudH1cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIHtjbGFtcGVkSG92ZXJlZERQICYmIGVuYWJsZUNoYXJ0SG92ZXIgJiYgIWJydXNoaW5nICYmIGhpbnRQb3NpdGlvbiA/IChcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7cG9zaXRpb246ICdhYnNvbHV0ZScsIGxlZnQ6IGhpbnRQb3NpdGlvbi5sZWZ0LCB0b3A6IGhpbnRQb3NpdGlvbi50b3B9fT5cbiAgICAgICAgICAgIDxIaW50Q29udGVudCB7Li4uaG92ZXJlZERQIX0gZm9ybWF0PXtoaW50Rm9ybWF0dGVyfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvTGluZUNoYXJ0V3JhcHBlcj5cbiAgICApO1xuICB9O1xuICByZXR1cm4gd2l0aFRoZW1lKExpbmVDaGFydENvbXBvbmVudCkgYXMgUmVhY3QuRkM8T21pdDxMaW5lQ2hhcnRQcm9wcywgJ3RoZW1lJz4+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaW5lQ2hhcnRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLGlCQUFBLEdBQUFKLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFBbUQsSUFBQUssZUFBQSxFQUFBQyxnQkFBQSxFQVJuRDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFULHdCQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVB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
@@ -1,12 +1,18 @@
1
- import React, { Component, ReactNode, PropsWithChildren } from 'react';
1
+ import React, { Component, ReactNode } from 'react';
2
2
  import { css } from 'styled-components';
3
3
  import Modal from 'react-modal';
4
4
  type CssStyleType = ReturnType<typeof css>;
5
- type ModalTitleProps = PropsWithChildren<{
5
+ export declare const ModalTitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "children"> & {
6
6
  style?: React.CSSProperties;
7
7
  className?: string;
8
- }>;
9
- export declare const ModalTitle: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ModalTitleProps>>;
8
+ } & {
9
+ children?: ReactNode | undefined;
10
+ }, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "children"> & {
11
+ style?: React.CSSProperties;
12
+ className?: string;
13
+ } & {
14
+ children?: ReactNode | undefined;
15
+ }, never>>> & string;
10
16
  type ModalButtonProps = {
11
17
  style?: React.CSSProperties;
12
18
  large?: boolean;
@@ -60,5 +66,5 @@ export declare class ModalDialog extends Component<ModalDialogProps> {
60
66
  };
61
67
  render(): React.JSX.Element;
62
68
  }
63
- declare const StyledModal: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<ModalDialogOwnProps & Omit<Modal.Props, "className" | "style" | "ariaHideApp"> & React.RefAttributes<ModalDialog>, never>> & Omit<typeof ModalDialog, keyof React.Component<any, {}, any>>;
69
+ declare const StyledModal: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<ModalDialogOwnProps & Omit<Modal.Props, "className" | "style" | "ariaHideApp"> & React.RefAttributes<ModalDialog>, never> & Partial<Pick<ModalDialogOwnProps & Omit<Modal.Props, "className" | "style" | "ariaHideApp"> & React.RefAttributes<ModalDialog>, never>>> & string & Omit<typeof ModalDialog, keyof React.Component<any, {}, any>>;
64
70
  export default StyledModal;
@@ -168,4 +168,4 @@ var StyledModal = (0, _styledComponents["default"])(ModalDialog)(_templateObject
168
168
  return props.theme.transition;
169
169
  }, _styles.media.portable(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 24px;\n padding-right: 24px;\n "]))), _styles.media.palm(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 0;\n padding-right: 0;\n "]))));
170
170
  var _default = exports["default"] = StyledModal;
171
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9jYWxpemF0aW9uIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0TW9kYWwiLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3R5bGVzIiwiX2V4Y2x1ZGVkIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfdGVtcGxhdGVPYmplY3Q3IiwiX3RlbXBsYXRlT2JqZWN0OCIsIl90ZW1wbGF0ZU9iamVjdDkiLCJfdGVtcGxhdGVPYmplY3QxMCIsIl90ZW1wbGF0ZU9iamVjdDExIiwiX3RlbXBsYXRlT2JqZWN0MTIiLCJfdGVtcGxhdGVPYmplY3QxMyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiTW9kYWxDb250ZW50V3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRyYW5zaXRpb24iLCJsYWJlbENvbG9yTFQiLCJtZWRpYSIsInBvcnRhYmxlIiwicGFsbSIsImNzc1N0eWxlIiwiTW9kYWxDb250ZW50IiwibW9kYWxDb250ZW50WiIsIk1vZGFsVGl0bGUiLCJleHBvcnRzIiwibW9kYWxUaXRsZUZvbnRTaXplIiwibW9kYWxUaXRsZUNvbG9yIiwibW9kYWxUaXRsZVoiLCJTdHlsZWRNb2RhbEZvb3RlciIsIm1vZGFsRm9vdGVyWiIsIkNsb3NlQnV0dG9uIiwidGl0bGVDb2xvckxUIiwibW9kYWxCdXR0b25aIiwiRm9vdGVyQWN0aW9uV3JhcHBlciIsImRlZmF1bHRDYW5jZWxCdXR0b24iLCJsaW5rIiwibGFyZ2UiLCJjaGlsZHJlbiIsImRlZmF1bHRDb25maXJtQnV0dG9uIiwiY3RhIiwid2lkdGgiLCJwcm9jZXNzRGlzYWJsZWRQcm9wZXJ0eSIsImRpc2FibGVkIiwibmV3UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiTW9kYWxGb290ZXIiLCJfcmVmIiwiX2NhbmNlbEJ1dHRvblByb3BzJGNoIiwiX2NvbmZpcm1CdXR0b25Qcm9wcyRjIiwiY2FuY2VsIiwiY29uZmlybSIsImNhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b24iLCJjYW5jZWxCdXR0b25Qcm9wcyIsImNvbmZpcm1CdXR0b25Qcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJCdXR0b24iLCJfZXh0ZW5kczIiLCJvbkNsaWNrIiwiRm9ybWF0dGVkTWVzc2FnZSIsImlkIiwiTW9kYWxEaWFsb2ciLCJfQ29tcG9uZW50IiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJ0ZXN0SWQiLCJhcmlhSGlkZUFwcCIsInN0eWxlIiwib3ZlcmxheSIsImJhY2tncm91bmRDb2xvciIsIm1vZGFsT3ZlcmxheUJnZCIsInpJbmRleCIsIm1vZGFsT3ZlckxheVoiLCJjbG9zZSIsIm9uQ2FuY2VsIiwiRGVsZXRlIiwiaGVpZ2h0IiwidGl0bGUiLCJmb290ZXIiLCJvbkNvbmZpcm0iLCJDb21wb25lbnQiLCJTdHlsZWRNb2RhbCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9tb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBSZWFjdE5vZGUsIFByb3BzV2l0aENoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHN0eWxlZCwge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1vZGFsIGZyb20gJ3JlYWN0LW1vZGFsJztcbmltcG9ydCB7RGVsZXRlfSBmcm9tICcuL2ljb25zJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7bWVkaWF9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcblxudHlwZSBDc3NTdHlsZVR5cGUgPSBSZXR1cm5UeXBlPHR5cGVvZiBjc3M+O1xuXG5pbnRlcmZhY2UgTW9kYWxDb250ZW50V3JhcHBlclByb3BzIHtcbiAgY3NzU3R5bGU/OiBDc3NTdHlsZVR5cGUgfCBzdHJpbmc7XG59XG5cbmNvbnN0IE1vZGFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2PE1vZGFsQ29udGVudFdyYXBwZXJQcm9wcz5gXG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG1heC13aWR0aDogNzB2dztcbiAgbWF4LWhlaWdodDogODV2aDtcbiAgcGFkZGluZzogMjRweCA3MnB4IDQwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA5MnB4O1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50cmFuc2l0aW9ufTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yTFR9O1xuXG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgcGFkZGluZzogMTJweCAzNnB4IDI0cHg7XG4gICAgbWF4LXdpZHRoOiA4MHZ3O1xuICBgfVxuXG4gICR7bWVkaWEucGFsbWBcbiAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICBgfVxuXG4gICR7cHJvcHMgPT4gcHJvcHMuY3NzU3R5bGUgfHwgJyd9O1xuYDtcblxuY29uc3QgTW9kYWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsQ29udGVudFp9O1xuYDtcblxudHlwZSBNb2RhbFRpdGxlUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCBjb25zdCBNb2RhbFRpdGxlID0gc3R5bGVkLmRpdjxNb2RhbFRpdGxlUHJvcHM+YFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxUaXRsZUZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxUaXRsZUNvbG9yfTtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsVGl0bGVafTtcbmA7XG5cbmNvbnN0IFN0eWxlZE1vZGFsRm9vdGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcGFkZGluZy10b3A6IDI0cHg7XG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgcGFkZGluZy10b3A6IDI0cHg7XG4gIGB9O1xuXG4gICR7bWVkaWEucGFsbWBcbiAgICBwYWRkaW5nLXRvcDogMTZweDtcbiAgYH07XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxGb290ZXJafTtcbmA7XG5cbmNvbnN0IENsb3NlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGl0bGVDb2xvckxUfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tb2RhbEJ1dHRvblp9O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMjRweDtcbiAgcmlnaHQ6IDI0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBGb290ZXJBY3Rpb25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbmA7XG5cbmNvbnN0IGRlZmF1bHRDYW5jZWxCdXR0b24gPSB7XG4gIGxpbms6IHRydWUsXG4gIGxhcmdlOiB0cnVlLFxuICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5kZWZhdWx0Q2FuY2VsJ1xufTtcblxuY29uc3QgZGVmYXVsdENvbmZpcm1CdXR0b24gPSB7XG4gIGN0YTogdHJ1ZSxcbiAgbGFyZ2U6IHRydWUsXG4gIHdpZHRoOiAnMTYwcHgnLFxuICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5kZWZhdWx0Q29uZmlybSdcbn07XG5cbnR5cGUgTW9kYWxCdXR0b25Qcm9wcyA9IHtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBsYXJnZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbmVnYXRpdmU/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IHN0cmluZztcbn07XG5cbnR5cGUgTW9kYWxGb290ZXJQcm9wcyA9IHtcbiAgY2FuY2VsOiAoKSA9PiB2b2lkO1xuICBjb25maXJtOiAoZGF0YT86IGFueSkgPT4gdm9pZDtcbiAgY2FuY2VsQnV0dG9uPzogTW9kYWxCdXR0b25Qcm9wcztcbiAgY29uZmlybUJ1dHRvbj86IE1vZGFsQnV0dG9uUHJvcHM7XG59O1xuXG4vKipcbiAqIHRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIGBkaXNhYmxlZGAgcHJvcGVydHkgZnJvbSBidXR0b24gcHJvcHMgd2hlbiBkaXNhYmxlZCBpcyBzZXQgdG8gZmFsc2VcbiAqIHRvIGF2b2lkIGlzc3VlIHdpdGggdGhlIGRpc2FibGVkIHRhZ1xuICpcbiAqIEBwYXJhbSBwcm9wc1xuICovXG5jb25zdCBwcm9jZXNzRGlzYWJsZWRQcm9wZXJ0eSA9IChwcm9wczogTW9kYWxCdXR0b25Qcm9wcyk6IE1vZGFsQnV0dG9uUHJvcHMgPT4ge1xuICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IHtkaXNhYmxlZCwgLi4ubmV3UHJvcHN9ID0gcHJvcHM7XG4gICAgcmV0dXJuIG5ld1Byb3BzO1xuICB9XG4gIHJldHVybiBwcm9wcztcbn07XG5cbmV4cG9ydCBjb25zdCBNb2RhbEZvb3RlcjogUmVhY3QuRkM8TW9kYWxGb290ZXJQcm9wcz4gPSAoe1xuICBjYW5jZWwsXG4gIGNvbmZpcm0sXG4gIGNhbmNlbEJ1dHRvbixcbiAgY29uZmlybUJ1dHRvblxufSkgPT4ge1xuICBjb25zdCBjYW5jZWxCdXR0b25Qcm9wcyA9IHByb2Nlc3NEaXNhYmxlZFByb3BlcnR5KHtcbiAgICAuLi5kZWZhdWx0Q2FuY2VsQnV0dG9uLFxuICAgIC4uLmNhbmNlbEJ1dHRvblxuICB9KTtcbiAgY29uc3QgY29uZmlybUJ1dHRvblByb3BzID0gcHJvY2Vzc0Rpc2FibGVkUHJvcGVydHkoey4uLmRlZmF1bHRDb25maXJtQnV0dG9uLCAuLi5jb25maXJtQnV0dG9ufSk7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZE1vZGFsRm9vdGVyIGNsYXNzTmFtZT1cIm1vZGFsLS1mb290ZXJcIj5cbiAgICAgIDxGb290ZXJBY3Rpb25XcmFwcGVyPlxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cIm1vZGFsLS1mb290ZXItLWNhbmNlbC1idXR0b25cIiB7Li4uY2FuY2VsQnV0dG9uUHJvcHN9IG9uQ2xpY2s9e2NhbmNlbH0+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2NhbmNlbEJ1dHRvblByb3BzLmNoaWxkcmVuID8/ICcnfSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJtb2RhbC0tZm9vdGVyLS1jb25maXJtLWJ1dHRvblwiIHsuLi5jb25maXJtQnV0dG9uUHJvcHN9IG9uQ2xpY2s9e2NvbmZpcm19PlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtjb25maXJtQnV0dG9uUHJvcHMuY2hpbGRyZW4gPz8gJyd9IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Gb290ZXJBY3Rpb25XcmFwcGVyPlxuICAgIDwvU3R5bGVkTW9kYWxGb290ZXI+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsRGlhbG9nT3duUHJvcHMge1xuICBmb290ZXI6IGJvb2xlYW47XG4gIGNsb3NlOiBib29sZWFuO1xuICBpc09wZW46IGJvb2xlYW47XG4gIHRpdGxlPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uQ29uZmlybTogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZDtcbiAgb25DYW5jZWw6ICguLi5hcmdzOiBhbnkpID0+IHZvaWQ7XG4gIGNvbmZpcm1CdXR0b24/OiBNb2RhbEJ1dHRvblByb3BzO1xuICBjb25maXJtQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGNhbmNlbEJ1dHRvbj86IE1vZGFsQnV0dG9uUHJvcHM7XG4gIGNhbmNlbEJ1dHRvbkxhYmVsPzogc3RyaW5nO1xuICBjc3NTdHlsZT86IENzc1N0eWxlVHlwZSB8IHN0cmluZztcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICB0aGVtZTogYW55O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IHR5cGUgTW9kYWxEaWFsb2dQcm9wcyA9IE1vZGFsRGlhbG9nT3duUHJvcHMgJlxuICBPbWl0PFJlYWN0TW9kYWwuUHJvcHMsICdzdHlsZScgfCAnYXJpYUhpZGVBcHAnIHwgJ2NsYXNzTmFtZSc+O1xuXG5leHBvcnQgY2xhc3MgTW9kYWxEaWFsb2cgZXh0ZW5kcyBDb21wb25lbnQ8TW9kYWxEaWFsb2dQcm9wcz4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGZvb3RlcjogZmFsc2UsXG4gICAgY2xvc2U6IHRydWUsXG4gICAgb25Db25maXJtOiAoKSA9PiB7XG4gICAgICByZXR1cm47XG4gICAgfSxcbiAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgY2FuY2VsQnV0dG9uOiBkZWZhdWx0Q2FuY2VsQnV0dG9uLFxuICAgIGNvbmZpcm1CdXR0b246IGRlZmF1bHRDb25maXJtQnV0dG9uLFxuICAgIGNzc1N0eWxlOiBbXVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7cHJvcHN9ID0gdGhpcztcbiAgICByZXR1cm4gKFxuICAgICAgPE1vZGFsXG4gICAgICAgIGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHRlc3RJZD17cHJvcHNbJ2RhdGEtdGVzdGlkJ119XG4gICAgICAgIGFyaWFIaWRlQXBwPXtmYWxzZX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBvdmVybGF5OiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IChwcm9wcy50aGVtZSAmJiBwcm9wcy50aGVtZS5tb2RhbE92ZXJsYXlCZ2QpIHx8ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICAgICAgICAgICAgekluZGV4OiAocHJvcHMudGhlbWUgJiYgcHJvcHMudGhlbWUubW9kYWxPdmVyTGF5WikgfHwgMTAwMCxcbiAgICAgICAgICAgIC8vIGluIGNhc2Ugd2Ugd2FudCB0byBvdmVycmlkZSB0aGUgbW9kYWwgZGlhbG9nIHN0eWxlXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE1vZGFsQ29udGVudFdyYXBwZXIgY2xhc3NOYW1lPVwibW9kYWwtLXdyYXBwZXJcIiBjc3NTdHlsZT17cHJvcHMuY3NzU3R5bGV9PlxuICAgICAgICAgIHtwcm9wcy5jbG9zZSAmJiAoXG4gICAgICAgICAgICA8Q2xvc2VCdXR0b24gY2xhc3NOYW1lPVwibW9kYWwtLWNsb3NlXCIgb25DbGljaz17cHJvcHMub25DYW5jZWx9PlxuICAgICAgICAgICAgICA8RGVsZXRlIGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgPC9DbG9zZUJ1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7cHJvcHMudGl0bGUgJiYgKFxuICAgICAgICAgICAgICA8TW9kYWxUaXRsZSBjbGFzc05hbWU9XCJtb2RhbC0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17cHJvcHMudGl0bGV9IC8+XG4gICAgICAgICAgICAgIDwvTW9kYWxUaXRsZT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8TW9kYWxDb250ZW50IGNsYXNzTmFtZT1cIm1vZGFsLS1ib2R5XCI+e3Byb3BzLmNoaWxkcmVufTwvTW9kYWxDb250ZW50PlxuICAgICAgICAgICAge3Byb3BzLmZvb3RlciAmJiAoXG4gICAgICAgICAgICAgIDxNb2RhbEZvb3RlclxuICAgICAgICAgICAgICAgIGNhbmNlbD17cHJvcHMub25DYW5jZWx9XG4gICAgICAgICAgICAgICAgY29uZmlybT17cHJvcHMub25Db25maXJtfVxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvbj17cHJvcHMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b249e3Byb3BzLmNvbmZpcm1CdXR0b259XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L01vZGFsQ29udGVudFdyYXBwZXI+XG4gICAgICA8L01vZGFsPlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgU3R5bGVkTW9kYWwgPSBzdHlsZWQoTW9kYWxEaWFsb2cpYFxuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHRyYW5zaXRpb246ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudHJhbnNpdGlvbn07XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbiAgcGFkZGluZy1yaWdodDogNDBweDtcbiAgb3V0bGluZTogbm9uZTtcblxuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xuICBgfTtcblxuICAke21lZGlhLnBhbG1gXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gIGB9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbmA7XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxlZE1vZGFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQXdDLElBQUFRLFNBQUE7QUFBQSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBVnhDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQXhCLHdCQUFBd0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxH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
171
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9jYWxpemF0aW9uIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0TW9kYWwiLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3R5bGVzIiwiX2V4Y2x1ZGVkIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfdGVtcGxhdGVPYmplY3Q3IiwiX3RlbXBsYXRlT2JqZWN0OCIsIl90ZW1wbGF0ZU9iamVjdDkiLCJfdGVtcGxhdGVPYmplY3QxMCIsIl90ZW1wbGF0ZU9iamVjdDExIiwiX3RlbXBsYXRlT2JqZWN0MTIiLCJfdGVtcGxhdGVPYmplY3QxMyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiTW9kYWxDb250ZW50V3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRyYW5zaXRpb24iLCJsYWJlbENvbG9yTFQiLCJtZWRpYSIsInBvcnRhYmxlIiwicGFsbSIsImNzc1N0eWxlIiwiTW9kYWxDb250ZW50IiwibW9kYWxDb250ZW50WiIsIk1vZGFsVGl0bGUiLCJleHBvcnRzIiwibW9kYWxUaXRsZUZvbnRTaXplIiwibW9kYWxUaXRsZUNvbG9yIiwibW9kYWxUaXRsZVoiLCJTdHlsZWRNb2RhbEZvb3RlciIsIm1vZGFsRm9vdGVyWiIsIkNsb3NlQnV0dG9uIiwidGl0bGVDb2xvckxUIiwibW9kYWxCdXR0b25aIiwiRm9vdGVyQWN0aW9uV3JhcHBlciIsImRlZmF1bHRDYW5jZWxCdXR0b24iLCJsaW5rIiwibGFyZ2UiLCJjaGlsZHJlbiIsImRlZmF1bHRDb25maXJtQnV0dG9uIiwiY3RhIiwid2lkdGgiLCJwcm9jZXNzRGlzYWJsZWRQcm9wZXJ0eSIsImRpc2FibGVkIiwibmV3UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiTW9kYWxGb290ZXIiLCJfcmVmIiwiX2NhbmNlbEJ1dHRvblByb3BzJGNoIiwiX2NvbmZpcm1CdXR0b25Qcm9wcyRjIiwiY2FuY2VsIiwiY29uZmlybSIsImNhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b24iLCJjYW5jZWxCdXR0b25Qcm9wcyIsImNvbmZpcm1CdXR0b25Qcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJCdXR0b24iLCJfZXh0ZW5kczIiLCJvbkNsaWNrIiwiRm9ybWF0dGVkTWVzc2FnZSIsImlkIiwiTW9kYWxEaWFsb2ciLCJfQ29tcG9uZW50IiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJ0ZXN0SWQiLCJhcmlhSGlkZUFwcCIsInN0eWxlIiwib3ZlcmxheSIsImJhY2tncm91bmRDb2xvciIsIm1vZGFsT3ZlcmxheUJnZCIsInpJbmRleCIsIm1vZGFsT3ZlckxheVoiLCJjbG9zZSIsIm9uQ2FuY2VsIiwiRGVsZXRlIiwiaGVpZ2h0IiwidGl0bGUiLCJmb290ZXIiLCJvbkNvbmZpcm0iLCJDb21wb25lbnQiLCJTdHlsZWRNb2RhbCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9tb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBSZWFjdE5vZGUsIFByb3BzV2l0aENoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHN0eWxlZCwge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1vZGFsIGZyb20gJ3JlYWN0LW1vZGFsJztcbmltcG9ydCB7RGVsZXRlfSBmcm9tICcuL2ljb25zJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7bWVkaWF9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcblxudHlwZSBDc3NTdHlsZVR5cGUgPSBSZXR1cm5UeXBlPHR5cGVvZiBjc3M+O1xuXG5pbnRlcmZhY2UgTW9kYWxDb250ZW50V3JhcHBlclByb3BzIHtcbiAgY3NzU3R5bGU/OiBDc3NTdHlsZVR5cGUgfCBzdHJpbmc7XG59XG5cbmNvbnN0IE1vZGFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2PE1vZGFsQ29udGVudFdyYXBwZXJQcm9wcz5gXG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG1heC13aWR0aDogNzB2dztcbiAgbWF4LWhlaWdodDogODV2aDtcbiAgcGFkZGluZzogMjRweCA3MnB4IDQwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA5MnB4O1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50cmFuc2l0aW9ufTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yTFR9O1xuXG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgcGFkZGluZzogMTJweCAzNnB4IDI0cHg7XG4gICAgbWF4LXdpZHRoOiA4MHZ3O1xuICBgfVxuXG4gICR7bWVkaWEucGFsbWBcbiAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICBgfVxuXG4gICR7cHJvcHMgPT4gcHJvcHMuY3NzU3R5bGUgfHwgJyd9O1xuYDtcblxuY29uc3QgTW9kYWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsQ29udGVudFp9O1xuYDtcblxudHlwZSBNb2RhbFRpdGxlUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCBjb25zdCBNb2RhbFRpdGxlID0gc3R5bGVkLmRpdjxNb2RhbFRpdGxlUHJvcHM+YFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxUaXRsZUZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxUaXRsZUNvbG9yfTtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsVGl0bGVafTtcbmA7XG5cbmNvbnN0IFN0eWxlZE1vZGFsRm9vdGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcGFkZGluZy10b3A6IDI0cHg7XG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgcGFkZGluZy10b3A6IDI0cHg7XG4gIGB9O1xuXG4gICR7bWVkaWEucGFsbWBcbiAgICBwYWRkaW5nLXRvcDogMTZweDtcbiAgYH07XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxGb290ZXJafTtcbmA7XG5cbmNvbnN0IENsb3NlQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGl0bGVDb2xvckxUfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tb2RhbEJ1dHRvblp9O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMjRweDtcbiAgcmlnaHQ6IDI0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBGb290ZXJBY3Rpb25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbmA7XG5cbmNvbnN0IGRlZmF1bHRDYW5jZWxCdXR0b24gPSB7XG4gIGxpbms6IHRydWUsXG4gIGxhcmdlOiB0cnVlLFxuICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5kZWZhdWx0Q2FuY2VsJ1xufTtcblxuY29uc3QgZGVmYXVsdENvbmZpcm1CdXR0b24gPSB7XG4gIGN0YTogdHJ1ZSxcbiAgbGFyZ2U6IHRydWUsXG4gIHdpZHRoOiAnMTYwcHgnLFxuICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5kZWZhdWx0Q29uZmlybSdcbn07XG5cbnR5cGUgTW9kYWxCdXR0b25Qcm9wcyA9IHtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBsYXJnZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbmVnYXRpdmU/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IHN0cmluZztcbn07XG5cbnR5cGUgTW9kYWxGb290ZXJQcm9wcyA9IHtcbiAgY2FuY2VsOiAoKSA9PiB2b2lkO1xuICBjb25maXJtOiAoZGF0YT86IGFueSkgPT4gdm9pZDtcbiAgY2FuY2VsQnV0dG9uPzogTW9kYWxCdXR0b25Qcm9wcztcbiAgY29uZmlybUJ1dHRvbj86IE1vZGFsQnV0dG9uUHJvcHM7XG59O1xuXG4vKipcbiAqIHRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIGBkaXNhYmxlZGAgcHJvcGVydHkgZnJvbSBidXR0b24gcHJvcHMgd2hlbiBkaXNhYmxlZCBpcyBzZXQgdG8gZmFsc2VcbiAqIHRvIGF2b2lkIGlzc3VlIHdpdGggdGhlIGRpc2FibGVkIHRhZ1xuICpcbiAqIEBwYXJhbSBwcm9wc1xuICovXG5jb25zdCBwcm9jZXNzRGlzYWJsZWRQcm9wZXJ0eSA9IChwcm9wczogTW9kYWxCdXR0b25Qcm9wcyk6IE1vZGFsQnV0dG9uUHJvcHMgPT4ge1xuICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IHtkaXNhYmxlZCwgLi4ubmV3UHJvcHN9ID0gcHJvcHM7XG4gICAgcmV0dXJuIG5ld1Byb3BzO1xuICB9XG4gIHJldHVybiBwcm9wcztcbn07XG5cbmV4cG9ydCBjb25zdCBNb2RhbEZvb3RlcjogUmVhY3QuRkM8TW9kYWxGb290ZXJQcm9wcz4gPSAoe1xuICBjYW5jZWwsXG4gIGNvbmZpcm0sXG4gIGNhbmNlbEJ1dHRvbixcbiAgY29uZmlybUJ1dHRvblxufSkgPT4ge1xuICBjb25zdCBjYW5jZWxCdXR0b25Qcm9wcyA9IHByb2Nlc3NEaXNhYmxlZFByb3BlcnR5KHtcbiAgICAuLi5kZWZhdWx0Q2FuY2VsQnV0dG9uLFxuICAgIC4uLmNhbmNlbEJ1dHRvblxuICB9KTtcbiAgY29uc3QgY29uZmlybUJ1dHRvblByb3BzID0gcHJvY2Vzc0Rpc2FibGVkUHJvcGVydHkoey4uLmRlZmF1bHRDb25maXJtQnV0dG9uLCAuLi5jb25maXJtQnV0dG9ufSk7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZE1vZGFsRm9vdGVyIGNsYXNzTmFtZT1cIm1vZGFsLS1mb290ZXJcIj5cbiAgICAgIDxGb290ZXJBY3Rpb25XcmFwcGVyPlxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cIm1vZGFsLS1mb290ZXItLWNhbmNlbC1idXR0b25cIiB7Li4uY2FuY2VsQnV0dG9uUHJvcHN9IG9uQ2xpY2s9e2NhbmNlbH0+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2NhbmNlbEJ1dHRvblByb3BzLmNoaWxkcmVuID8/ICcnfSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJtb2RhbC0tZm9vdGVyLS1jb25maXJtLWJ1dHRvblwiIHsuLi5jb25maXJtQnV0dG9uUHJvcHN9IG9uQ2xpY2s9e2NvbmZpcm19PlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtjb25maXJtQnV0dG9uUHJvcHMuY2hpbGRyZW4gPz8gJyd9IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Gb290ZXJBY3Rpb25XcmFwcGVyPlxuICAgIDwvU3R5bGVkTW9kYWxGb290ZXI+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsRGlhbG9nT3duUHJvcHMge1xuICBmb290ZXI6IGJvb2xlYW47XG4gIGNsb3NlOiBib29sZWFuO1xuICBpc09wZW46IGJvb2xlYW47XG4gIHRpdGxlPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uQ29uZmlybTogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZDtcbiAgb25DYW5jZWw6ICguLi5hcmdzOiBhbnkpID0+IHZvaWQ7XG4gIGNvbmZpcm1CdXR0b24/OiBNb2RhbEJ1dHRvblByb3BzO1xuICBjb25maXJtQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGNhbmNlbEJ1dHRvbj86IE1vZGFsQnV0dG9uUHJvcHM7XG4gIGNhbmNlbEJ1dHRvbkxhYmVsPzogc3RyaW5nO1xuICBjc3NTdHlsZT86IENzc1N0eWxlVHlwZSB8IHN0cmluZztcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICB0aGVtZTogYW55O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IHR5cGUgTW9kYWxEaWFsb2dQcm9wcyA9IE1vZGFsRGlhbG9nT3duUHJvcHMgJlxuICBPbWl0PFJlYWN0TW9kYWwuUHJvcHMsICdzdHlsZScgfCAnYXJpYUhpZGVBcHAnIHwgJ2NsYXNzTmFtZSc+O1xuXG5leHBvcnQgY2xhc3MgTW9kYWxEaWFsb2cgZXh0ZW5kcyBDb21wb25lbnQ8TW9kYWxEaWFsb2dQcm9wcz4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGZvb3RlcjogZmFsc2UsXG4gICAgY2xvc2U6IHRydWUsXG4gICAgb25Db25maXJtOiAoKSA9PiB7XG4gICAgICByZXR1cm47XG4gICAgfSxcbiAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgY2FuY2VsQnV0dG9uOiBkZWZhdWx0Q2FuY2VsQnV0dG9uLFxuICAgIGNvbmZpcm1CdXR0b246IGRlZmF1bHRDb25maXJtQnV0dG9uLFxuICAgIGNzc1N0eWxlOiBbXVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7cHJvcHN9ID0gdGhpcztcbiAgICByZXR1cm4gKFxuICAgICAgPE1vZGFsXG4gICAgICAgIGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHRlc3RJZD17cHJvcHNbJ2RhdGEtdGVzdGlkJ119XG4gICAgICAgIGFyaWFIaWRlQXBwPXtmYWxzZX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBvdmVybGF5OiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IChwcm9wcy50aGVtZSAmJiBwcm9wcy50aGVtZS5tb2RhbE92ZXJsYXlCZ2QpIHx8ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICAgICAgICAgICAgekluZGV4OiAocHJvcHMudGhlbWUgJiYgcHJvcHMudGhlbWUubW9kYWxPdmVyTGF5WikgfHwgMTAwMCxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgIH0gYXMgYW55XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxNb2RhbENvbnRlbnRXcmFwcGVyIGNsYXNzTmFtZT1cIm1vZGFsLS13cmFwcGVyXCIgY3NzU3R5bGU9e3Byb3BzLmNzc1N0eWxlfT5cbiAgICAgICAgICB7cHJvcHMuY2xvc2UgJiYgKFxuICAgICAgICAgICAgPENsb3NlQnV0dG9uIGNsYXNzTmFtZT1cIm1vZGFsLS1jbG9zZVwiIG9uQ2xpY2s9e3Byb3BzLm9uQ2FuY2VsfT5cbiAgICAgICAgICAgICAgPERlbGV0ZSBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgIDwvQ2xvc2VCdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge3Byb3BzLnRpdGxlICYmIChcbiAgICAgICAgICAgICAgPE1vZGFsVGl0bGUgY2xhc3NOYW1lPVwibW9kYWwtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e3Byb3BzLnRpdGxlfSAvPlxuICAgICAgICAgICAgICA8L01vZGFsVGl0bGU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPE1vZGFsQ29udGVudCBjbGFzc05hbWU9XCJtb2RhbC0tYm9keVwiPntwcm9wcy5jaGlsZHJlbn08L01vZGFsQ29udGVudD5cbiAgICAgICAgICAgIHtwcm9wcy5mb290ZXIgJiYgKFxuICAgICAgICAgICAgICA8TW9kYWxGb290ZXJcbiAgICAgICAgICAgICAgICBjYW5jZWw9e3Byb3BzLm9uQ2FuY2VsfVxuICAgICAgICAgICAgICAgIGNvbmZpcm09e3Byb3BzLm9uQ29uZmlybX1cbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b249e3Byb3BzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uPXtwcm9wcy5jb25maXJtQnV0dG9ufVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9Nb2RhbENvbnRlbnRXcmFwcGVyPlxuICAgICAgPC9Nb2RhbD5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZE1vZGFsID0gc3R5bGVkKE1vZGFsRGlhbG9nKWBcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB0cmFuc2l0aW9uOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRyYW5zaXRpb259O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gIG91dGxpbmU6IG5vbmU7XG5cbiAgJHttZWRpYS5wb3J0YWJsZWBcbiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgYH07XG5cbiAgJHttZWRpYS5wYWxtYFxuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBgfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBTdHlsZWRNb2RhbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUF3QyxJQUFBUSxTQUFBO0FBQUEsSUFBQUMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQVZ4QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUF4Qix3QkFBQXdCLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxD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