@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.
- package/dist/annotations/annotation-node.d.ts +11 -0
- package/dist/annotations/annotation-node.js +145 -0
- package/dist/annotations/annotation-overlay.d.ts +16 -0
- package/dist/annotations/annotation-overlay.js +166 -0
- package/dist/annotations/annotation-panel.d.ts +24 -0
- package/dist/annotations/annotation-panel.js +362 -0
- package/dist/annotations/annotation-text.d.ts +16 -0
- package/dist/annotations/annotation-text.js +150 -0
- package/dist/annotations/annotation-utils.d.ts +39 -0
- package/dist/annotations/annotation-utils.js +156 -0
- package/dist/annotations/index.d.ts +7 -0
- package/dist/annotations/index.js +53 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
- package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
- package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
- package/dist/annotations/lexical-editor/index.d.ts +7 -0
- package/dist/annotations/lexical-editor/index.js +78 -0
- package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
- package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
- package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
- package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
- package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
- package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
- package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
- package/dist/bottom-widget.d.ts +1 -1
- package/dist/bottom-widget.js +12 -6
- package/dist/common/action-panel.js +1 -1
- package/dist/common/animation-control/animation-control.d.ts +1 -0
- package/dist/common/animation-control/animation-control.js +3 -1
- package/dist/common/animation-control/animation-controller.js +8 -6
- package/dist/common/animation-control/export-video-control.d.ts +9 -0
- package/dist/common/animation-control/export-video-control.js +43 -0
- package/dist/common/animation-control/playback-controls.d.ts +4 -2
- package/dist/common/animation-control/playback-controls.js +7 -4
- package/dist/common/checkbox.d.ts +5 -21
- package/dist/common/checkbox.js +58 -70
- package/dist/common/color-legend.d.ts +1 -1
- package/dist/common/color-legend.js +3 -3
- package/dist/common/data-table/canvas.d.ts +1 -1
- package/dist/common/data-table/index.d.ts +2 -2
- package/dist/common/data-table/index.js +3 -3
- package/dist/common/dnd-layer-items.d.ts +4 -0
- package/dist/common/dnd-layer-items.js +6 -2
- package/dist/common/error-boundary.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.js +4 -4
- package/dist/common/flex-container.d.ts +15 -7
- package/dist/common/histogram-plot.js +102 -53
- package/dist/common/icon-button.d.ts +53 -6
- package/dist/common/icons/3d-models/airplane.d.ts +14 -0
- package/dist/common/icons/3d-models/airplane.js +104 -0
- package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
- package/dist/common/icons/3d-models/bicycle.js +426 -0
- package/dist/common/icons/3d-models/boeing.d.ts +14 -0
- package/dist/common/icons/3d-models/boeing.js +119 -0
- package/dist/common/icons/3d-models/car.d.ts +14 -0
- package/dist/common/icons/3d-models/car.js +110 -0
- package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
- package/dist/common/icons/3d-models/cargoship.js +246 -0
- package/dist/common/icons/3d-models/evtol.d.ts +14 -0
- package/dist/common/icons/3d-models/evtol.js +134 -0
- package/dist/common/icons/3d-models/glider.d.ts +14 -0
- package/dist/common/icons/3d-models/glider.js +62 -0
- package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
- package/dist/common/icons/3d-models/helicopter.js +110 -0
- package/dist/common/icons/3d-models/scooter.d.ts +14 -0
- package/dist/common/icons/3d-models/scooter.js +159 -0
- package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
- package/dist/common/icons/3d-models/semitruck.js +177 -0
- package/dist/common/icons/3d-models/truck.d.ts +14 -0
- package/dist/common/icons/3d-models/truck.js +122 -0
- package/dist/common/icons/anchor_window.d.ts +1 -8
- package/dist/common/icons/anchor_window.js +17 -10
- package/dist/common/icons/annotation-text.d.ts +9 -0
- package/dist/common/icons/annotation-text.js +56 -0
- package/dist/common/icons/arrow-down-full.d.ts +2 -1
- package/dist/common/icons/arrow-down-full.js +1 -1
- package/dist/common/icons/folder.d.ts +10 -0
- package/dist/common/icons/folder.js +51 -0
- package/dist/common/icons/index.d.ts +2 -0
- package/dist/common/icons/index.js +15 -1
- package/dist/common/icons/timeline-marker.d.ts +2 -1
- package/dist/common/icons/timeline-marker.js +1 -1
- package/dist/common/item-selector/chickleted-input.d.ts +1 -1
- package/dist/common/item-selector/chickleted-input.js +5 -5
- package/dist/common/item-selector/dropdown-list.d.ts +1 -1
- package/dist/common/item-selector/dropdown-list.js +1 -1
- package/dist/common/item-selector/dropdown-select.d.ts +13 -7
- package/dist/common/item-selector/item-selector.d.ts +1 -1
- package/dist/common/item-selector/item-selector.js +1 -1
- package/dist/common/item-selector/typeahead.d.ts +4 -4
- package/dist/common/item-selector/typeahead.js +1 -3
- package/dist/common/layout-splitter.d.ts +45 -0
- package/dist/common/layout-splitter.js +231 -0
- package/dist/common/line-chart.d.ts +10 -3
- package/dist/common/line-chart.js +219 -52
- package/dist/common/modal.d.ts +11 -5
- package/dist/common/modal.js +1 -1
- package/dist/common/portaled.d.ts +17 -17
- package/dist/common/range-plot.js +4 -2
- package/dist/common/range-slider.d.ts +2 -0
- package/dist/common/range-slider.js +108 -45
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/mouse-event.js +1 -2
- package/dist/common/slider/slider-bar-handle.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.js +1 -1
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider-handle.js +1 -1
- package/dist/common/slider/slider.d.ts +8 -4
- package/dist/common/slider/slider.js +78 -35
- package/dist/common/styled-components.d.ts +628 -178
- package/dist/common/styled-components.js +2 -2
- package/dist/common/time-range-slider-time-title.d.ts +1 -1
- package/dist/common/time-range-slider-time-title.js +5 -5
- package/dist/common/time-range-slider.d.ts +2 -1
- package/dist/common/time-range-slider.js +19 -7
- package/dist/common/timeline-helpers.d.ts +3 -0
- package/dist/common/timeline-helpers.js +57 -0
- package/dist/common/timeline-slider.js +21 -12
- package/dist/common/toolbar-item.js +5 -5
- package/dist/common/toolbar.d.ts +1 -1
- package/dist/common/toolbar.js +4 -4
- package/dist/common/vertical-toolbar.d.ts +13 -3
- package/dist/container.d.ts +3 -2
- package/dist/container.js +2 -2
- package/dist/context.d.ts +1 -1
- package/dist/context.js +1 -1
- package/dist/dnd-context.d.ts +4 -3
- package/dist/dnd-context.js +64 -9
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +5 -6
- package/dist/effects/effect-configurator.js +213 -52
- package/dist/effects/effect-manager.js +3 -3
- package/dist/effects/effect-panel-header.js +34 -17
- package/dist/effects/effect-panel.d.ts +4 -4
- package/dist/effects/effect-panel.js +61 -86
- package/dist/effects/effect-time-configurator.js +10 -10
- package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
- package/dist/effects/effect-type-dropdown-list.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +2 -1
- package/dist/effects/effect-type-list-item.js +23 -7
- package/dist/effects/effect-type-selector.d.ts +1 -0
- package/dist/effects/effect-type-selector.js +2 -2
- package/dist/effects/surface-fog-section.d.ts +14 -0
- package/dist/effects/surface-fog-section.js +263 -0
- package/dist/filters/components.d.ts +7 -5
- package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/index.js +8 -1
- package/dist/filters/polygon-filter.js +2 -2
- package/dist/filters/time-range-filter.js +3 -1
- package/dist/filters/time-widget-settings.d.ts +14 -0
- package/dist/filters/time-widget-settings.js +312 -0
- package/dist/filters/time-widget-top.d.ts +2 -3
- package/dist/filters/time-widget-top.js +32 -39
- package/dist/filters/time-widget.d.ts +3 -2
- package/dist/filters/time-widget.js +285 -9
- package/dist/filters/types.d.ts +3 -3
- package/dist/filters/types.js +1 -1
- package/dist/geocoder/geocoder.d.ts +4 -1
- package/dist/geocoder/geocoder.js +61 -14
- package/dist/geocoder-panel.d.ts +3 -2
- package/dist/geocoder-panel.js +11 -8
- package/dist/hooks/use-dnd-layers.d.ts +4 -3
- package/dist/hooks/use-dnd-layers.js +103 -42
- package/dist/index.d.ts +17 -2
- package/dist/index.js +161 -9
- package/dist/injector.d.ts +1 -1
- package/dist/kepler-gl.d.ts +179 -27
- package/dist/kepler-gl.js +91 -12
- package/dist/loading-indicator.d.ts +3 -1
- package/dist/loading-indicator.js +6 -3
- package/dist/map/annotations/annotation-control.d.ts +16 -0
- package/dist/map/annotations/annotation-control.js +56 -0
- package/dist/map/layer-hover-info.d.ts +7 -3
- package/dist/map/layer-hover-info.js +124 -55
- package/dist/map/locale-panel.d.ts +1 -1
- package/dist/map/locale-panel.js +2 -2
- package/dist/map/map-control-panel.js +3 -2
- package/dist/map/map-control-toolbar.d.ts +33 -8
- package/dist/map/map-control.d.ts +14 -4
- package/dist/map/map-control.js +18 -8
- package/dist/map/map-draw-panel.d.ts +1 -1
- package/dist/map/map-draw-panel.js +7 -4
- package/dist/map/map-legend-panel.d.ts +11 -2
- package/dist/map/map-legend-panel.js +25 -8
- package/dist/map/map-legend.d.ts +20 -3
- package/dist/map/map-legend.js +145 -31
- package/dist/map/map-navigation-control.d.ts +13 -0
- package/dist/map/map-navigation-control.js +143 -0
- package/dist/map/map-popover.js +2 -2
- package/dist/map/split-map-button.d.ts +6 -1
- package/dist/map/split-map-button.js +113 -19
- package/dist/map-container.d.ts +13 -3
- package/dist/map-container.js +269 -59
- package/dist/map-view-state-context.d.ts +1 -0
- package/dist/map-view-state-context.js +1 -1
- package/dist/maps-layout.d.ts +3 -0
- package/dist/maps-layout.js +86 -26
- package/dist/modal-container.d.ts +3 -2
- package/dist/modal-container.js +28 -6
- package/dist/modals/add-map-style-modal.js +173 -200
- package/dist/modals/cloud-tile.d.ts +1 -2
- package/dist/modals/data-table-modal.d.ts +1 -1
- package/dist/modals/data-table-modal.js +146 -194
- package/dist/modals/export-data-modal.js +117 -139
- package/dist/modals/export-map-modal/components.d.ts +9 -5
- package/dist/modals/export-video-modal.d.ts +28 -0
- package/dist/modals/export-video-modal.js +371 -0
- package/dist/modals/export-video-modal.spec.d.ts +1 -0
- package/dist/modals/export-video-modal.spec.js +686 -0
- package/dist/modals/fog-height-animation.d.ts +8 -0
- package/dist/modals/fog-height-animation.js +97 -0
- package/dist/modals/hubble-utils.d.ts +41 -0
- package/dist/modals/hubble-utils.js +294 -0
- package/dist/modals/hubble-utils.spec.d.ts +1 -0
- package/dist/modals/hubble-utils.spec.js +397 -0
- package/dist/modals/modal-dialog.d.ts +1 -1
- package/dist/modals/share-map-modal.d.ts +2 -4
- package/dist/modals/swipe-composite-utils.d.ts +10 -0
- package/dist/modals/swipe-composite-utils.js +108 -0
- package/dist/modals/swipe-export-settings.d.ts +24 -0
- package/dist/modals/swipe-export-settings.js +370 -0
- package/dist/modals/swipe-export-video-container.d.ts +122 -0
- package/dist/modals/swipe-export-video-container.js +630 -0
- package/dist/modals/swipe-export-video-preview.d.ts +68 -0
- package/dist/modals/swipe-export-video-preview.js +339 -0
- package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
- package/dist/modals/tilesets-modals/load-tileset.js +21 -10
- package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
- package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +90 -11
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +3 -2
- package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
- package/dist/modals/tilesets-modals/tileset-wms-form.js +4 -3
- package/dist/notification-panel/notification-item.d.ts +1 -53
- package/dist/notification-panel/notification-item.js +47 -75
- package/dist/notification-panel.d.ts +1 -1
- package/dist/notification-panel.js +20 -42
- package/dist/plot-container.js +7 -6
- package/dist/side-panel/add-by-dataset-button.js +3 -3
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
- package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
- package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
- package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
- package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
- package/dist/side-panel/layer-manager.d.ts +5 -4
- package/dist/side-panel/layer-manager.js +26 -6
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
- package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
- package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
- package/dist/side-panel/layer-panel/custom-palette.js +5 -5
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +450 -76
- package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
- package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
- package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
- package/dist/side-panel/layer-panel/layer-list.js +197 -40
- package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
- package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
- package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
- package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
- package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
- package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
- package/dist/side-panel/panel-header.d.ts +1 -0
- package/dist/side-panel/panel-header.js +9 -2
- package/dist/side-panel/panel-tab.d.ts +2 -4
- package/dist/side-panel/panel-tab.js +4 -4
- package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
- package/dist/side-panel/side-bar.d.ts +1 -6
- package/dist/side-panel.d.ts +1 -1
- package/dist/side-panel.js +5 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/package.json +53 -48
- package/dist/map/layer-selector-panel.d.ts +0 -21
- package/dist/map/layer-selector-panel.js +0 -85
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
- package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
|
@@ -15,7 +15,6 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
|
15
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
16
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
17
17
|
var _react = _interopRequireWildcard(require("react"));
|
|
18
|
-
var _reactLifecyclesCompat = require("react-lifecycles-compat");
|
|
19
18
|
var _fuzzy = _interopRequireDefault(require("fuzzy"));
|
|
20
19
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
21
20
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
@@ -433,6 +432,5 @@ var Typeahead = /*#__PURE__*/function (_Component) {
|
|
|
433
432
|
resultsTruncatedMessage: null,
|
|
434
433
|
autoFocus: true
|
|
435
434
|
});
|
|
436
|
-
(0, _reactLifecyclesCompat.polyfill)(Typeahead);
|
|
437
435
|
var _default = exports["default"] = Typeahead;
|
|
438
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RMaWZlY3ljbGVzQ29tcGF0IiwiX2Z1enp5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfd2luZG93IiwiX2FjY2Vzc29yIiwiX2Ryb3Bkb3duTGlzdCIsIl9pY29ucyIsIl9jb25zdGFudHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIkRFRkFVTFRfQ0xBU1MiLCJUeXBlYWhlYWRXcmFwcGVyIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsInNob3VsZEZvcndhcmRQcm9wIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdFNoYWRvdyIsIklucHV0Qm94IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJUeXBlYWhlYWRJbnB1dCIsImlucHV0IiwiaW5wdXRMVCIsInNlY29uZGFyeUlucHV0Iiwic2VsZWN0QmFja2dyb3VuZExUIiwic2Vjb25kYXJ5SW5wdXRCZ2QiLCJJbnB1dEljb24iLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uIiwic2VhcmNoT3B0aW9ucyIsImZpbHRlck9wdGlvbiIsIkNvbnNvbGUiLCJ3YXJuIiwidmFsdWUiLCJvcHRpb25zIiwiZmlsdGVyIiwibWFwcGVyIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZUFjY2Vzc29yIiwiSURFTlRJVFlfRk4iLCJmdXp6eSIsImV4dHJhY3QiLCJtYXAiLCJyZXMiLCJpbmRleCIsInNlYXJjaE9wdGlvbnNPbklucHV0IiwiaW5wdXRWYWx1ZSIsImdldE9wdGlvbnNGb3JWYWx1ZSIsInN0YXRlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJzZWFyY2hhYmxlIiwic2hvdWxkU2tpcFNlYXJjaCIsImVtcHR5VmFsdWUiLCJ0cmltIiwibGVuZ3RoIiwiaXNGb2N1c2VkIiwibm9vcCIsIlR5cGVhaGVhZCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfZGVmaW5lUHJvcGVydHkyIiwiY3JlYXRlUmVmIiwiZW50cnkiLCJjdXJyZW50IiwiZm9jdXMiLCJfdGhpcyRzdGF0ZSRlbnRyeVZhbHUiLCJOdW1iZXIiLCJhbGxvd0N1c3RvbVZhbHVlcyIsImVudHJ5VmFsdWUiLCJzZWFyY2hSZXN1bHRzIiwiaW5kZXhPZiIsIl9oYXNDdXN0b21WYWx1ZSIsIm9wdGlvbiIsImV2ZW50IiwiX3RoaXMkcHJvcHMkb25PcHRpb25TIiwiX3RoaXMkcHJvcHMiLCJzZXRTdGF0ZSIsInNlbGVjdGlvbiIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJfdGhpcyRlbnRyeSRjdXJyZW50IiwiZ2V0U2VsZWN0aW9uIiwiX3RoaXMkcHJvcHMkb25LZXlEb3duIiwiX3RoaXMkcHJvcHMyIiwib25LZXlEb3duIiwiX29uT3B0aW9uU2VsZWN0ZWQiLCJzZWxlY3Rpb25JbmRleCIsIl9nZXRDdXN0b21WYWx1ZSIsImV2ZW50cyIsIktleUV2ZW50IiwiRE9NX1ZLX1VQIiwibmF2VXAiLCJET01fVktfRE9XTiIsIm5hdkRvd24iLCJET01fVktfUkVUVVJOIiwiRE9NX1ZLX0VOVEVSIiwiX29uRW50ZXIiLCJET01fVktfRVNDQVBFIiwiX29uRXNjYXBlIiwiRE9NX1ZLX1RBQiIsIl9vblRhYiIsImRlbHRhIiwiX2hhc0hpbnQiLCJuZXdJbmRleCIsIm1heFZpc2libGUiLCJzbGljZSIsIl9uYXYiLCJvbkNoYW5nZSIsIl9vblRleHRFbnRyeVVwZGF0ZWQiLCJzaGlmdEtleSIsIl90aGlzJHByb3BzJG9uS2V5RG93bjIiLCJfdGhpcyRwcm9wczMiLCJoYW5kbGVyIiwiZXZlbnRNYXAiLCJrZXlDb2RlIiwiX3RoaXMkcHJvcHMkb25LZXlEb3duMyIsIl90aGlzJHByb3BzNCIsInByZXZlbnREZWZhdWx0Iiwib25Gb2N1cyIsIm9uQmx1ciIsImluaXRpYWxWYWx1ZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiY29tcG9uZW50RGlkTW91bnQiLCJhdXRvRm9jdXMiLCJfdGhpcyRyb290JGN1cnJlbnQiLCJyb290IiwiX3JlbmRlckluY3JlbWVudGFsU2VhcmNoUmVzdWx0cyIsIl90aGlzJHByb3BzJGN1c3RvbUxpcyIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJDdXN0b21MaXN0Q29tcG9uZW50IiwiRHJvcGRvd25MaXN0IiwiY3JlYXRlRWxlbWVudCIsImZpeGVkT3B0aW9ucyIsImFyZVJlc3VsdHNUcnVuY2F0ZWQiLCJyZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZSIsImN1c3RvbVZhbHVlIiwiY3VzdG9tQ2xhc3NlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCIsImRlZmF1bHRDbGFzc05hbWVzIiwiZGlzcGxheU9wdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJfaGFzRml4ZWRPcHRpb25zIiwiX3RoaXMkcHJvcHMkZml4ZWRPcHRpIiwiX3RoaXMkcHJvcHMkZml4ZWRPcHRpMiIsIl90aGlzJHByb3BzJGZpeGVkT3B0aTMiLCJfcmVuZGVySGlkZGVuSW5wdXQiLCJuYW1lIiwidHlwZSIsIkFycmF5IiwiaXNBcnJheSIsInJlbmRlciIsIl90aGlzJHByb3BzJGN1c3RvbUNsYSIsIl90aGlzJHByb3BzJGN1c3RvbUNsYTIiLCJpbnB1dENsYXNzZXMiLCJpbnB1dENsYXNzTGlzdCIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiY2xhc3NMaXN0IiwicmVmIiwidGFiSW5kZXgiLCJfb25LZXlEb3duIiwib25LZXlQcmVzcyIsIm9uS2V5VXAiLCJfb25Gb2N1cyIsIl9leHRlbmRzMiIsImRpc2FibGVkIiwiaW5wdXRQcm9wcyIsInBsYWNlaG9sZGVyIiwiX29uQ2hhbmdlIiwiX29uQmx1ciIsImlucHV0SWNvbiIsImhlaWdodCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsInByZXZPcHRpb25zIiwiQ29tcG9uZW50IiwicmVzdWx0cyIsImxpc3RJdGVtIiwibGlzdEFuY2hvciIsInRleHRhcmVhIiwiaW5wdXREaXNwbGF5T3B0aW9uIiwiTGlzdEl0ZW0iLCJTZWFyY2giLCJwb2x5ZmlsbCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCBFbGVtZW50VHlwZSwgS2V5Ym9hcmRFdmVudEhhbmRsZXJ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7cG9seWZpbGx9IGZyb20gJ3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0JztcbmltcG9ydCBmdXp6eSBmcm9tICdmdXp6eSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQsIHtJU3R5bGVkQ29tcG9uZW50fSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuL2FjY2Vzc29yJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCB7U2VhcmNofSBmcm9tICcuLi9pY29ucyc7XG5pbXBvcnQge0tleUV2ZW50fSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0Jhc2VDb21wb25lbnRQcm9wc30gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi4vc3R5bGVkLWNvbXBvbmVudHMnO1xuY29uc3QgREVGQVVMVF9DTEFTUyA9ICd0eXBlYWhlYWQnO1xuLyoqXG4gKiBDb3BpZWQgbW9zdGx5IGZyb20gJ3JlYWN0LXR5cGVhaGVhZCcsIGFuIGF1dG8tY29tcGxldGluZyB0ZXh0IGlucHV0XG4gKlxuICogUmVuZGVycyBhbiB0ZXh0IGlucHV0IHRoYXQgc2hvd3Mgb3B0aW9ucyBuZWFyYnkgdGhhdCB5b3UgY2FuIHVzZSB0aGVcbiAqIGtleWJvYXJkIG9yIG1vdXNlIHRvIHNlbGVjdC5cbiAqL1xuXG5leHBvcnQgdHlwZSBUeXBlYWhlYWRXcmFwcGVyUHJvcHMgPSBCYXNlQ29tcG9uZW50UHJvcHMgJiB7XG4gIGxpZ2h0PzogYm9vbGVhbjtcbiAgcmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgVHlwZWFoZWFkV3JhcHBlcjogSVN0eWxlZENvbXBvbmVudDwnd2ViJywgVHlwZWFoZWFkV3JhcHBlclByb3BzPiA9IHN0eWxlZC5kaXYud2l0aENvbmZpZyh7XG4gIHNob3VsZEZvcndhcmRQcm9wXG59KTxUeXBlYWhlYWRXcmFwcGVyUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZH07XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0U2hhZG93fTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5gO1xuXG5jb25zdCBJbnB1dEJveCA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICd0eXBlYWhlYWRfX2lucHV0X2JveCdcbn0pYFxuICBwYWRkaW5nOiA4cHg7XG5gO1xuXG5leHBvcnQgdHlwZSBUeXBlYWhlYWRJbnB1dFByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICBsaWdodD86IGJvb2xlYW47XG4gIHZhbHVlPzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IFR5cGVhaGVhZElucHV0OiBJU3R5bGVkQ29tcG9uZW50PCd3ZWInLCBUeXBlYWhlYWRJbnB1dFByb3BzPiA9IHN0eWxlZC5pbnB1dC53aXRoQ29uZmlnKHtcbiAgc2hvdWxkRm9yd2FyZFByb3Bcbn0pPFR5cGVhaGVhZElucHV0UHJvcHM+YFxuICAke3Byb3BzID0+IChwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmlucHV0TFQgOiBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dCl9XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLnNlbGVjdEJhY2tncm91bmRMVCA6IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0QmdkfTtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXRJY29uID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3R5cGVhaGVhZF9faW5wdXRfaWNvbidcbn0pYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxNXB4O1xuICB0b3A6IDE0cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0UGxhY2Vob2xkZXJDb2xvcn07XG5gO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzOiBUeXBlYWhlYWRQcm9wcykge1xuICBjb25zdCB7c2VhcmNoT3B0aW9ucywgZmlsdGVyT3B0aW9ufSA9IHByb3BzO1xuICBpZiAodHlwZW9mIHNlYXJjaE9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZmlsdGVyT3B0aW9uICE9PSBudWxsKSB7XG4gICAgICBDb25zb2xlLndhcm4oJ3NlYXJjaE9wdGlvbnMgcHJvcCBpcyBiZWluZyB1c2VkLCBmaWx0ZXJPcHRpb24gcHJvcCB3aWxsIGJlIGlnbm9yZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaE9wdGlvbnM7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlck9wdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIHVzZSBjdXN0b20gZmlsdGVyIG9wdGlvblxuICAgIHJldHVybiAodmFsdWUsIG9wdGlvbnMpID0+IG9wdGlvbnMuZmlsdGVyKG8gPT4gZmlsdGVyT3B0aW9uKHZhbHVlLCBvKSk7XG4gIH1cblxuICBjb25zdCBtYXBwZXIgPVxuICAgIHR5cGVvZiBmaWx0ZXJPcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICA/IEFjY2Vzc29yLmdlbmVyYXRlQWNjZXNzb3IoZmlsdGVyT3B0aW9uKVxuICAgICAgOiBBY2Nlc3Nvci5JREVOVElUWV9GTjtcblxuICByZXR1cm4gKHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGZ1enp5LmZpbHRlcih2YWx1ZSwgb3B0aW9ucywge2V4dHJhY3Q6IG1hcHBlcn0pLm1hcChyZXMgPT4gb3B0aW9uc1tyZXMuaW5kZXhdKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2VhcmNoT3B0aW9uc09uSW5wdXQoaW5wdXRWYWx1ZSwgcHJvcHMpIHtcbiAgY29uc3Qgc2VhcmNoT3B0aW9ucyA9IGdlbmVyYXRlU2VhcmNoRnVuY3Rpb24ocHJvcHMpO1xuICByZXR1cm4gc2VhcmNoT3B0aW9ucyhpbnB1dFZhbHVlLCBwcm9wcy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3B0aW9uc0ZvclZhbHVlKHZhbHVlLCBwcm9wcywgc3RhdGUpIHtcbiAgY29uc3Qge29wdGlvbnMsIHNob3dPcHRpb25zV2hlbkVtcHR5fSA9IHByb3BzO1xuXG4gIGlmICghcHJvcHMuc2VhcmNoYWJsZSkge1xuICAgIC8vIGRpcmVjdGx5IHBhc3MgdGhyb3VnaCBvcHRpb25zIGlmIGNhbiBub3QgYmUgc2VhcmNoZWRcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuICBpZiAoc2hvdWxkU2tpcFNlYXJjaCh2YWx1ZSwgc3RhdGUsIHNob3dPcHRpb25zV2hlbkVtcHR5KSkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgY29uc3Qgc2VhcmNoT3B0aW9ucyA9IGdlbmVyYXRlU2VhcmNoRnVuY3Rpb24ocHJvcHMpO1xuICByZXR1cm4gc2VhcmNoT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBTZWFyY2goaW5wdXQsIHN0YXRlLCBzaG93T3B0aW9uc1doZW5FbXB0eSkge1xuICBjb25zdCBlbXB0eVZhbHVlID0gIWlucHV0IHx8IGlucHV0LnRyaW0oKS5sZW5ndGggPT09IDA7XG5cbiAgLy8gdGhpcy5zdGF0ZSBtdXN0IGJlIGNoZWNrZWQgYmVjYXVzZSBpdCBtYXkgbm90IGJlIGRlZmluZWQgeWV0IGlmIHRoaXMgZnVuY3Rpb25cbiAgLy8gaXMgY2FsbGVkIGZyb20gd2l0aGluIGdldEluaXRpYWxTdGF0ZVxuICBjb25zdCBpc0ZvY3VzZWQgPSBzdGF0ZSAmJiBzdGF0ZS5pc0ZvY3VzZWQ7XG4gIHJldHVybiAhKHNob3dPcHRpb25zV2hlbkVtcHR5ICYmIGlzRm9jdXNlZCkgJiYgZW1wdHlWYWx1ZTtcbn1cblxudHlwZSBPcHRpb24gPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgdW5kZWZpbmVkO1xuaW50ZXJmYWNlIFR5cGVhaGVhZFByb3BzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgY3VzdG9tQ2xhc3Nlcz86IGFueTtcbiAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U/OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBSZWFkb25seUFycmF5PE9wdGlvbj47XG4gIGZpeGVkT3B0aW9ucz86IFJlYWRvbmx5QXJyYXk8T3B0aW9uPiB8IG51bGw7XG4gIGFsbG93Q3VzdG9tVmFsdWVzPzogbnVtYmVyO1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0ZXh0YXJlYT86IGJvb2xlYW47XG4gIGlucHV0UHJvcHM/OiBvYmplY3Q7XG4gIG9uT3B0aW9uU2VsZWN0ZWQ/OiAob3B0aW9uOiBhbnksIGV2ZW50OiBhbnkpID0+IGFueTtcbiAgb25DaGFuZ2U/OiAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xuICBvbktleURvd24/OiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkO1xuICBvbktleVByZXNzPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbktleVVwPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbkZvY3VzPzogKGV2ZW50OiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZDtcbiAgb25CbHVyPzogKGV2ZW50OiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xuICBmaWx0ZXJPcHRpb24/OiBzdHJpbmcgfCAoKG86IE9wdGlvbiwgczogc3RyaW5nKSA9PiBib29sZWFuKTtcbiAgc2VhcmNoT3B0aW9ucz86IChvOiBPcHRpb24sIHM6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgZGlzcGxheU9wdGlvbj86IHN0cmluZyB8ICgobzogT3B0aW9uKSA9PiBzdHJpbmcpO1xuICBpbnB1dERpc3BsYXlPcHRpb24/OiBzdHJpbmcgfCAoKG86IE9wdGlvbikgPT4gc3RyaW5nKTtcbiAgZm9ybUlucHV0T3B0aW9uPzogc3RyaW5nIHwgKChvOiBPcHRpb24pID0+IHN0cmluZyk7XG4gIGRlZmF1bHRDbGFzc05hbWVzPzogYm9vbGVhbjtcbiAgY3VzdG9tTGlzdENvbXBvbmVudD86IEVsZW1lbnRUeXBlO1xuICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD86IEVsZW1lbnRUeXBlO1xuICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PzogRWxlbWVudFR5cGUgfCBudWxsO1xuICBzaG93T3B0aW9uc1doZW5FbXB0eT86IGJvb2xlYW47XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBsaWdodD86IGJvb2xlYW47XG4gIGlucHV0SWNvbjogRWxlbWVudFR5cGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0ZWRJdGVtcz86IGFueVtdIHwgbnVsbDtcbiAgYXV0b0ZvY3VzOiBib29sZWFuO1xuICAvLyBkZXByZWNhdGVkXG4gIG1heFZpc2libGU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUeXBlYWhlYWRTdGF0ZSB7XG4gIHNlYXJjaFJlc3VsdHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IHVuZGVmaW5lZD47XG5cbiAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNvbWV0aGluZyBlbHNlLCAnZW50cnlWYWx1ZSdcbiAgZW50cnlWYWx1ZT86IHN0cmluZztcblxuICAvLyBBIHZhbGlkIHR5cGVhaGVhZCB2YWx1ZVxuICBzZWxlY3Rpb24/OiBzdHJpbmc7XG5cbiAgLy8gSW5kZXggb2YgdGhlIHNlbGVjdGlvblxuICBzZWxlY3Rpb25JbmRleDogbnVsbDtcblxuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBmb2N1cyBzdGF0ZSBvZiB0aGUgaW5wdXQgZWxlbWVudCwgdG8gZGV0ZXJtaW5lXG4gIC8vIHdoZXRoZXIgdG8gc2hvdyBvcHRpb25zIHdoZW4gZW1wdHkgKGlmIHNob3dPcHRpb25zV2hlbkVtcHR5IGlzIHRydWUpXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHtcbiAgcmV0dXJuO1xufVxuY2xhc3MgVHlwZWFoZWFkIGV4dGVuZHMgQ29tcG9uZW50PFR5cGVhaGVhZFByb3BzLCBUeXBlYWhlYWRTdGF0ZT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG9wdGlvbnM6IFtdLFxuICAgIGN1c3RvbUNsYXNzZXM6IHtcbiAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgIGlucHV0OiAndHlwZWFoZWFkX19pbnB1dCcsXG4gICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICB9LFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiAwLFxuICAgIGluaXRpYWxWYWx1ZTogJycsXG4gICAgdmFsdWU6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdGV4dGFyZWE6IGZhbHNlLFxuICAgIGlucHV0UHJvcHM6IHt9LFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6IG5vb3AsXG4gICAgb25DaGFuZ2U6IG5vb3AsXG4gICAgb25LZXlEb3duOiBub29wLFxuICAgIG9uS2V5UHJlc3M6IG5vb3AsXG4gICAgb25LZXlVcDogbm9vcCxcbiAgICBvbkZvY3VzOiBub29wLFxuICAgIG9uQmx1cjogbm9vcCxcbiAgICBmaWx0ZXJPcHRpb246IG51bGwsXG4gICAgc2VhcmNoT3B0aW9uczogbnVsbCxcbiAgICBpbnB1dERpc3BsYXlPcHRpb246IG51bGwsXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IHRydWUsXG4gICAgY3VzdG9tTGlzdENvbXBvbmVudDogRHJvcGRvd25MaXN0LFxuICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICBpbnB1dEljb246IFNlYXJjaCxcbiAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50OiBudWxsLFxuICAgIHNob3dPcHRpb25zV2hlbkVtcHR5OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U6IG51bGwsXG4gICAgYXV0b0ZvY3VzOiB0cnVlXG4gIH07XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICBpZiAocHJvcHMub3B0aW9ucyA9PT0gc3RhdGUucHJldk9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvLyAgaW52b2tlZCBhZnRlciBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgYXMgd2VsbCBhcyBiZWZvcmUgaXQgaXMgcmUtcmVuZGVyZWRcbiAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZ2V0T3B0aW9uc0ZvclZhbHVlKHN0YXRlLmVudHJ5VmFsdWUsIHByb3BzLCBzdGF0ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VhcmNoUmVzdWx0cyxcbiAgICAgIHByZXZPcHRpb25zOiBwcm9wcy5vcHRpb25zXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC8vIGluaXRpYXRlIHNlYXJjaFJlc3VsdHMgd2l0aCBvcHRpb25zXG4gICAgICBzZWFyY2hSZXN1bHRzOiB0aGlzLnByb3BzLm9wdGlvbnMgfHwgW10sXG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBzb21ldGhpbmcgZWxzZSwgJ2VudHJ5VmFsdWUnXG4gICAgICBlbnRyeVZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8IHRoaXMucHJvcHMuaW5pdGlhbFZhbHVlLFxuXG4gICAgICAvLyBBIHZhbGlkIHR5cGVhaGVhZCB2YWx1ZVxuICAgICAgc2VsZWN0aW9uOiB0aGlzLnByb3BzLnZhbHVlLFxuXG4gICAgICAvLyBJbmRleCBvZiB0aGUgc2VsZWN0aW9uXG4gICAgICBzZWxlY3Rpb25JbmRleDogbnVsbCxcblxuICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGlucHV0IGVsZW1lbnQsIHRvIGRldGVybWluZVxuICAgICAgLy8gd2hldGhlciB0byBzaG93IG9wdGlvbnMgd2hlbiBlbXB0eSAoaWYgc2hvd09wdGlvbnNXaGVuRW1wdHkgaXMgdHJ1ZSlcbiAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgLy8gY2FsbCBmb2N1cyBvbiBlbnRyeSBvciBkaXYgdG8gdHJpZ2dlciBrZXkgZXZlbnRzIGxpc3RlbmVyXG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICBpZiAodGhpcy5lbnRyeS5jdXJyZW50KSB7XG4gICAgICAgIHRoaXMuZW50cnkuY3VycmVudC5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb290LmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcm9vdCA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgZW50cnkgPSBjcmVhdGVSZWY8SFRNTElucHV0RWxlbWVudD4oKTtcblxuICBmb2N1cyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5lbnRyeS5jdXJyZW50KSB7XG4gICAgICB0aGlzLmVudHJ5LmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgX2hhc0N1c3RvbVZhbHVlID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBOdW1iZXIodGhpcy5wcm9wcy5hbGxvd0N1c3RvbVZhbHVlcykgPiAwICYmXG4gICAgICBOdW1iZXIodGhpcy5zdGF0ZS5lbnRyeVZhbHVlPy5sZW5ndGgpID49IE51bWJlcih0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzKSAmJlxuICAgICAgdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy5zdGF0ZS5lbnRyeVZhbHVlKSA8IDBcbiAgICApO1xuICB9O1xuXG4gIF9nZXRDdXN0b21WYWx1ZSA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5faGFzQ3VzdG9tVmFsdWUoKSA/IHRoaXMuc3RhdGUuZW50cnlWYWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgX3JlbmRlckluY3JlbWVudGFsU2VhcmNoUmVzdWx0cygpIHtcbiAgICBjb25zdCB7Y3VzdG9tTGlzdENvbXBvbmVudDogQ3VzdG9tTGlzdENvbXBvbmVudCA9IERyb3Bkb3duTGlzdH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8Q3VzdG9tTGlzdENvbXBvbmVudFxuICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHN9XG4gICAgICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ9e2ZhbHNlfVxuICAgICAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZT17dGhpcy5wcm9wcy5yZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZX1cbiAgICAgICAgb25PcHRpb25TZWxlY3RlZD17dGhpcy5fb25PcHRpb25TZWxlY3RlZH1cbiAgICAgICAgYWxsb3dDdXN0b21WYWx1ZXM9e3RoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXN9XG4gICAgICAgIGN1c3RvbVZhbHVlPXt0aGlzLl9nZXRDdXN0b21WYWx1ZSgpfVxuICAgICAgICBjdXN0b21DbGFzc2VzPXt0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXN9XG4gICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RJdGVtQ29tcG9uZW50fVxuICAgICAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgIHNlbGVjdGlvbkluZGV4PXt0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4fVxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lcz17dGhpcy5wcm9wcy5kZWZhdWx0Q2xhc3NOYW1lc31cbiAgICAgICAgZGlzcGxheU9wdGlvbj17dGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9ufVxuICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uKCkge1xuICAgIGxldCBpbmRleDogbnVtYmVyIHwgbnVsbCA9IHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXg7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaW5kZXggPSBOdW1iZXIoaW5kZXgpO1xuXG4gICAgaWYgKHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5lbnRyeVZhbHVlO1xuICAgICAgfVxuICAgICAgaW5kZXgtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0ZpeGVkT3B0aW9ucygpKSB7XG4gICAgICByZXR1cm4gaW5kZXggPCBOdW1iZXIodGhpcy5wcm9wcy5maXhlZE9wdGlvbnM/Lmxlbmd0aClcbiAgICAgICAgPyB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8uW2luZGV4XVxuICAgICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1tpbmRleCAtIE51bWJlcih0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8ubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbaW5kZXhdO1xuICB9XG5cbiAgX29uT3B0aW9uU2VsZWN0ZWQgPSAob3B0aW9uLCBldmVudCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAgIC8vIHJlc2V0IGVudHJ5IGlucHV0XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgLy8gcmVzZXQgc2VhcmNoIG9wdGlvbnMgd2hlbiBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZVxuICAgICAgICBzZWFyY2hSZXN1bHRzOiB0aGlzLnByb3BzLm9wdGlvbnMgfHwgW10sXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6ICcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uT3B0aW9uU2VsZWN0ZWQ/LihvcHRpb24sIGV2ZW50KTtcbiAgfTtcblxuICAvLyB1c2UgKCkgPT4ge30gdG8gYXZvaWQgYmluZGluZyAndGhpcydcbiAgX29uVGV4dEVudHJ5VXBkYXRlZCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hhYmxlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50cnkuY3VycmVudD8udmFsdWU7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBzZWFyY2hPcHRpb25zT25JbnB1dCh2YWx1ZSwgdGhpcy5wcm9wcyksXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX29uRW50ZXIgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgdGhpcy5wcm9wcy5vbktleURvd24/LihldmVudCk7XG4gICAgfVxuICAgIHRoaXMuX29uT3B0aW9uU2VsZWN0ZWQoc2VsZWN0aW9uLCBldmVudCk7XG4gIH07XG5cbiAgX29uRXNjYXBlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0aW9uSW5kZXg6IG51bGxcbiAgICB9KTtcbiAgfTtcblxuICBfb25UYWIgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICBsZXQgb3B0aW9uID0gc2VsZWN0aW9uXG4gICAgICA/IHNlbGVjdGlvblxuICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMFxuICAgICAgPyB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbMF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChvcHRpb24gPT09IG51bGwgJiYgdGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgb3B0aW9uID0gdGhpcy5fZ2V0Q3VzdG9tVmFsdWUoKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fb25PcHRpb25TZWxlY3RlZChvcHRpb24sIGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgZXZlbnRNYXAgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0ge307XG5cbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1VQXSA9IHRoaXMubmF2VXA7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19ET1dOXSA9IHRoaXMubmF2RG93bjtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1JFVFVSTl0gPSBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0VOVEVSXSA9IHRoaXMuX29uRW50ZXI7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19FU0NBUEVdID0gdGhpcy5fb25Fc2NhcGU7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19UQUJdID0gdGhpcy5fb25UYWI7XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9O1xuXG4gIF9uYXYgPSBkZWx0YSA9PiB7XG4gICAgaWYgKCF0aGlzLl9oYXNIaW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5ld0luZGV4ID1cbiAgICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXggPT09IG51bGxcbiAgICAgICAgPyBkZWx0YSA9PT0gMVxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogZGVsdGFcbiAgICAgICAgOiB0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4ICsgZGVsdGE7XG4gICAgbGV0IGxlbmd0aCA9IHRoaXMucHJvcHMubWF4VmlzaWJsZVxuICAgICAgPyB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMuc2xpY2UoMCwgdGhpcy5wcm9wcy5tYXhWaXNpYmxlKS5sZW5ndGhcbiAgICAgIDogdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmxlbmd0aDtcbiAgICBpZiAodGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgbGVuZ3RoICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKG5ld0luZGV4IDwgMCkge1xuICAgICAgbmV3SW5kZXggKz0gbGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICBuZXdJbmRleCAtPSBsZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7c2VsZWN0aW9uSW5kZXg6IG5ld0luZGV4fSk7XG4gIH07XG5cbiAgbmF2RG93biA9ICgpID0+IHtcbiAgICB0aGlzLl9uYXYoMSk7XG4gIH07XG5cbiAgbmF2VXAgPSAoKSA9PiB7XG4gICAgdGhpcy5fbmF2KC0xKTtcbiAgfTtcblxuICBfb25DaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IGV2ZW50ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25UZXh0RW50cnlVcGRhdGVkKCk7XG4gIH07XG5cbiAgX29uS2V5RG93bjogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIC8vIElmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGVsZW1lbnRzLCBkb24ndCBwZXJmb3JtIHNlbGVjdG9yIG5hdmlnYXRpb24uXG4gICAgLy8gSnVzdCBwYXNzIHRoaXMgdXAgdG8gdGhlIHVwc3RyZWFtIG9uS2V5ZG93biBoYW5kbGVyLlxuICAgIC8vIEFsc28gc2tpcCBpZiB0aGUgdXNlciBpcyBwcmVzc2luZyB0aGUgc2hpZnQga2V5LCBzaW5jZSBub25lIG9mIG91ciBoYW5kbGVycyBhcmUgbG9va2luZyBmb3Igc2hpZnRcbiAgICBpZiAoIXRoaXMuX2hhc0hpbnQoKSB8fCBldmVudC5zaGlmdEtleSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25LZXlEb3duPy4oZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmV2ZW50TWFwKClbZXZlbnQua2V5Q29kZV07XG5cbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uS2V5RG93bj8uKGV2ZW50KTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgcHJvcGFnYXRlIHRoZSBrZXlzdHJva2UgYmFjayB0byB0aGUgRE9NL2Jyb3dzZXJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIF9vbkZvY3VzOiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gPSBldmVudCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7aXNGb2N1c2VkOiB0cnVlfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25Gb2N1cykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkJsdXI6IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogZmFsc2V9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uQmx1cihldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJIaWRkZW5JbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT17dGhpcy5wcm9wcy5uYW1lfSB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3Rpb259IC8+O1xuICB9XG5cbiAgX2hhc0hpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwIHx8IHRoaXMuX2hhc0N1c3RvbVZhbHVlKCk7XG4gIH1cblxuICBfaGFzRml4ZWRPcHRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuZml4ZWRPcHRpb25zKSAmJiB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgaW5wdXRDbGFzc2VzID0ge307XG4gICAgaW5wdXRDbGFzc2VzW3RoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcz8uaW5wdXRdID0gQm9vbGVhbih0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXM/LmlucHV0KTtcbiAgICBjb25zdCBpbnB1dENsYXNzTGlzdCA9IGNsYXNzTmFtZXMoaW5wdXRDbGFzc2VzKTtcblxuICAgIGNvbnN0IGNsYXNzZXMgPSB7XG4gICAgICBbREVGQVVMVF9DTEFTU106IHRoaXMucHJvcHMuZGVmYXVsdENsYXNzTmFtZXNcbiAgICB9O1xuICAgIGNsYXNzZXNbdGhpcy5wcm9wcy5jbGFzc05hbWUgPyB0aGlzLnByb3BzLmNsYXNzTmFtZSA6ICcnXSA9IEJvb2xlYW4odGhpcy5wcm9wcy5jbGFzc05hbWUpO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGNsYXNzTmFtZXMoY2xhc3Nlcyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFR5cGVhaGVhZFdyYXBwZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc0xpc3R9XG4gICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgb25LZXlEb3duPXt0aGlzLl9vbktleURvd259XG4gICAgICAgIG9uS2V5UHJlc3M9e3RoaXMucHJvcHMub25LZXlQcmVzc31cbiAgICAgICAgb25LZXlVcD17dGhpcy5wcm9wcy5vbktleVVwfVxuICAgICAgICBvbkZvY3VzPXt0aGlzLl9vbkZvY3VzfVxuICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5saWdodH1cbiAgICAgID5cbiAgICAgICAge3RoaXMuX3JlbmRlckhpZGRlbklucHV0KCl9XG4gICAgICAgIHt0aGlzLnByb3BzLnNlYXJjaGFibGUgPyAoXG4gICAgICAgICAgPElucHV0Qm94PlxuICAgICAgICAgICAgPFR5cGVhaGVhZElucHV0XG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lbnRyeX1cbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuaW5wdXRQcm9wc31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17aW5wdXRDbGFzc0xpc3R9XG4gICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVudHJ5VmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLl9vbkNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLl9vbkJsdXJ9XG4gICAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxJbnB1dEljb24+XG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmlucHV0SWNvbiBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgIDwvSW5wdXRJY29uPlxuICAgICAgICAgIDwvSW5wdXRCb3g+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7dGhpcy5fcmVuZGVySW5jcmVtZW50YWxTZWFyY2hSZXN1bHRzKCl9XG4gICAgICA8L1R5cGVhaGVhZFdyYXBwZXI+XG4gICAgKTtcbiAgfVxufVxuXG5wb2x5ZmlsbChUeXBlYWhlYWQpO1xuXG5leHBvcnQgZGVmYXVsdCBUeXBlYWhlYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxzQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssaUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLFNBQUEsR0FBQUosc0JBQUEsQ0FB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
|
|
436
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZnV6enkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NsYXNzbmFtZXMiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl93aW5kb3ciLCJfYWNjZXNzb3IiLCJfZHJvcGRvd25MaXN0IiwiX2ljb25zIiwiX2NvbnN0YW50cyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiREVGQVVMVF9DTEFTUyIsIlR5cGVhaGVhZFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJ3aXRoQ29uZmlnIiwic2hvdWxkRm9yd2FyZFByb3AiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwibGlnaHQiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdEJnZExUIiwiZHJvcGRvd25MaXN0QmdkIiwiZHJvcGRvd25MaXN0U2hhZG93IiwiSW5wdXRCb3giLCJhdHRycyIsImNsYXNzTmFtZSIsIlR5cGVhaGVhZElucHV0IiwiaW5wdXQiLCJpbnB1dExUIiwic2Vjb25kYXJ5SW5wdXQiLCJzZWxlY3RCYWNrZ3JvdW5kTFQiLCJzZWNvbmRhcnlJbnB1dEJnZCIsIklucHV0SWNvbiIsImlucHV0UGxhY2Vob2xkZXJDb2xvciIsImdlbmVyYXRlU2VhcmNoRnVuY3Rpb24iLCJzZWFyY2hPcHRpb25zIiwiZmlsdGVyT3B0aW9uIiwiQ29uc29sZSIsIndhcm4iLCJ2YWx1ZSIsIm9wdGlvbnMiLCJmaWx0ZXIiLCJtYXBwZXIiLCJBY2Nlc3NvciIsImdlbmVyYXRlQWNjZXNzb3IiLCJJREVOVElUWV9GTiIsImZ1enp5IiwiZXh0cmFjdCIsIm1hcCIsInJlcyIsImluZGV4Iiwic2VhcmNoT3B0aW9uc09uSW5wdXQiLCJpbnB1dFZhbHVlIiwiZ2V0T3B0aW9uc0ZvclZhbHVlIiwic3RhdGUiLCJzaG93T3B0aW9uc1doZW5FbXB0eSIsInNlYXJjaGFibGUiLCJzaG91bGRTa2lwU2VhcmNoIiwiZW1wdHlWYWx1ZSIsInRyaW0iLCJsZW5ndGgiLCJpc0ZvY3VzZWQiLCJub29wIiwiVHlwZWFoZWFkIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJjcmVhdGVSZWYiLCJlbnRyeSIsImN1cnJlbnQiLCJmb2N1cyIsIl90aGlzJHN0YXRlJGVudHJ5VmFsdSIsIk51bWJlciIsImFsbG93Q3VzdG9tVmFsdWVzIiwiZW50cnlWYWx1ZSIsInNlYXJjaFJlc3VsdHMiLCJpbmRleE9mIiwiX2hhc0N1c3RvbVZhbHVlIiwib3B0aW9uIiwiZXZlbnQiLCJfdGhpcyRwcm9wcyRvbk9wdGlvblMiLCJfdGhpcyRwcm9wcyIsInNldFN0YXRlIiwic2VsZWN0aW9uIiwib25PcHRpb25TZWxlY3RlZCIsIl90aGlzJGVudHJ5JGN1cnJlbnQiLCJnZXRTZWxlY3Rpb24iLCJfdGhpcyRwcm9wcyRvbktleURvd24iLCJfdGhpcyRwcm9wczIiLCJvbktleURvd24iLCJfb25PcHRpb25TZWxlY3RlZCIsInNlbGVjdGlvbkluZGV4IiwiX2dldEN1c3RvbVZhbHVlIiwiZXZlbnRzIiwiS2V5RXZlbnQiLCJET01fVktfVVAiLCJuYXZVcCIsIkRPTV9WS19ET1dOIiwibmF2RG93biIsIkRPTV9WS19SRVRVUk4iLCJET01fVktfRU5URVIiLCJfb25FbnRlciIsIkRPTV9WS19FU0NBUEUiLCJfb25Fc2NhcGUiLCJET01fVktfVEFCIiwiX29uVGFiIiwiZGVsdGEiLCJfaGFzSGludCIsIm5ld0luZGV4IiwibWF4VmlzaWJsZSIsInNsaWNlIiwiX25hdiIsIm9uQ2hhbmdlIiwiX29uVGV4dEVudHJ5VXBkYXRlZCIsInNoaWZ0S2V5IiwiX3RoaXMkcHJvcHMkb25LZXlEb3duMiIsIl90aGlzJHByb3BzMyIsImhhbmRsZXIiLCJldmVudE1hcCIsImtleUNvZGUiLCJfdGhpcyRwcm9wcyRvbktleURvd24zIiwiX3RoaXMkcHJvcHM0IiwicHJldmVudERlZmF1bHQiLCJvbkZvY3VzIiwib25CbHVyIiwiaW5pdGlhbFZhbHVlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJjb21wb25lbnREaWRNb3VudCIsImF1dG9Gb2N1cyIsIl90aGlzJHJvb3QkY3VycmVudCIsInJvb3QiLCJfcmVuZGVySW5jcmVtZW50YWxTZWFyY2hSZXN1bHRzIiwiX3RoaXMkcHJvcHMkY3VzdG9tTGlzIiwiY3VzdG9tTGlzdENvbXBvbmVudCIsIkN1c3RvbUxpc3RDb21wb25lbnQiLCJEcm9wZG93bkxpc3QiLCJjcmVhdGVFbGVtZW50IiwiZml4ZWRPcHRpb25zIiwiYXJlUmVzdWx0c1RydW5jYXRlZCIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwiY3VzdG9tVmFsdWUiLCJjdXN0b21DbGFzc2VzIiwiY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQiLCJjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IiwiZGVmYXVsdENsYXNzTmFtZXMiLCJkaXNwbGF5T3B0aW9uIiwic2VsZWN0ZWRJdGVtcyIsIl9oYXNGaXhlZE9wdGlvbnMiLCJfdGhpcyRwcm9wcyRmaXhlZE9wdGkiLCJfdGhpcyRwcm9wcyRmaXhlZE9wdGkyIiwiX3RoaXMkcHJvcHMkZml4ZWRPcHRpMyIsIl9yZW5kZXJIaWRkZW5JbnB1dCIsIm5hbWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwicmVuZGVyIiwiX3RoaXMkcHJvcHMkY3VzdG9tQ2xhIiwiX3RoaXMkcHJvcHMkY3VzdG9tQ2xhMiIsImlucHV0Q2xhc3NlcyIsImlucHV0Q2xhc3NMaXN0IiwiY2xhc3NOYW1lcyIsImNsYXNzZXMiLCJjbGFzc0xpc3QiLCJyZWYiLCJ0YWJJbmRleCIsIl9vbktleURvd24iLCJvbktleVByZXNzIiwib25LZXlVcCIsIl9vbkZvY3VzIiwiX2V4dGVuZHMyIiwiZGlzYWJsZWQiLCJpbnB1dFByb3BzIiwicGxhY2Vob2xkZXIiLCJfb25DaGFuZ2UiLCJfb25CbHVyIiwiaW5wdXRJY29uIiwiaGVpZ2h0IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwicHJldk9wdGlvbnMiLCJDb21wb25lbnQiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwidGV4dGFyZWEiLCJpbnB1dERpc3BsYXlPcHRpb24iLCJMaXN0SXRlbSIsIlNlYXJjaCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCBFbGVtZW50VHlwZSwgS2V5Ym9hcmRFdmVudEhhbmRsZXJ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBmdXp6eSBmcm9tICdmdXp6eSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQsIHtJU3R5bGVkQ29tcG9uZW50fSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuL2FjY2Vzc29yJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCB7U2VhcmNofSBmcm9tICcuLi9pY29ucyc7XG5pbXBvcnQge0tleUV2ZW50fSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0Jhc2VDb21wb25lbnRQcm9wc30gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi4vc3R5bGVkLWNvbXBvbmVudHMnO1xuY29uc3QgREVGQVVMVF9DTEFTUyA9ICd0eXBlYWhlYWQnO1xuLyoqXG4gKiBDb3BpZWQgbW9zdGx5IGZyb20gJ3JlYWN0LXR5cGVhaGVhZCcsIGFuIGF1dG8tY29tcGxldGluZyB0ZXh0IGlucHV0XG4gKlxuICogUmVuZGVycyBhbiB0ZXh0IGlucHV0IHRoYXQgc2hvd3Mgb3B0aW9ucyBuZWFyYnkgdGhhdCB5b3UgY2FuIHVzZSB0aGVcbiAqIGtleWJvYXJkIG9yIG1vdXNlIHRvIHNlbGVjdC5cbiAqL1xuXG5leHBvcnQgdHlwZSBUeXBlYWhlYWRXcmFwcGVyUHJvcHMgPSBCYXNlQ29tcG9uZW50UHJvcHMgJiB7XG4gIGxpZ2h0PzogYm9vbGVhbjtcbiAgcmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbn07XG5cbmNvbnN0IFR5cGVhaGVhZFdyYXBwZXI6IElTdHlsZWRDb21wb25lbnQ8J3dlYicsIFR5cGVhaGVhZFdyYXBwZXJQcm9wcz4gPSBzdHlsZWQuZGl2LndpdGhDb25maWcoe1xuICBzaG91bGRGb3J3YXJkUHJvcFxufSk8VHlwZWFoZWFkV3JhcHBlclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdFNoYWRvd307XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXRCb3ggPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAndHlwZWFoZWFkX19pbnB1dF9ib3gnXG59KWBcbiAgcGFkZGluZzogOHB4O1xuYDtcblxuZXhwb3J0IHR5cGUgVHlwZWFoZWFkSW5wdXRQcm9wcyA9IEJhc2VDb21wb25lbnRQcm9wcyAmIHtcbiAgbGlnaHQ/OiBib29sZWFuO1xuICB2YWx1ZT86IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPjtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBUeXBlYWhlYWRJbnB1dDogSVN0eWxlZENvbXBvbmVudDwnd2ViJywgVHlwZWFoZWFkSW5wdXRQcm9wcz4gPSBzdHlsZWQuaW5wdXQud2l0aENvbmZpZyh7XG4gIHNob3VsZEZvcndhcmRQcm9wXG59KTxUeXBlYWhlYWRJbnB1dFByb3BzPmBcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5pbnB1dExUIDogcHJvcHMudGhlbWUuc2Vjb25kYXJ5SW5wdXQpfVxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5zZWxlY3RCYWNrZ3JvdW5kTFQgOiBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dEJnZH07XG4gIH1cbmA7XG5cbmNvbnN0IElucHV0SWNvbiA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICd0eXBlYWhlYWRfX2lucHV0X2ljb24nXG59KWBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMTVweDtcbiAgdG9wOiAxNHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuYDtcblxuZnVuY3Rpb24gZ2VuZXJhdGVTZWFyY2hGdW5jdGlvbihwcm9wczogVHlwZWFoZWFkUHJvcHMpIHtcbiAgY29uc3Qge3NlYXJjaE9wdGlvbnMsIGZpbHRlck9wdGlvbn0gPSBwcm9wcztcbiAgaWYgKHR5cGVvZiBzZWFyY2hPcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZpbHRlck9wdGlvbiAhPT0gbnVsbCkge1xuICAgICAgQ29uc29sZS53YXJuKCdzZWFyY2hPcHRpb25zIHByb3AgaXMgYmVpbmcgdXNlZCwgZmlsdGVyT3B0aW9uIHByb3Agd2lsbCBiZSBpZ25vcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiBzZWFyY2hPcHRpb25zO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmaWx0ZXJPcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyB1c2UgY3VzdG9tIGZpbHRlciBvcHRpb25cbiAgICByZXR1cm4gKHZhbHVlLCBvcHRpb25zKSA9PiBvcHRpb25zLmZpbHRlcihvID0+IGZpbHRlck9wdGlvbih2YWx1ZSwgbykpO1xuICB9XG5cbiAgY29uc3QgbWFwcGVyID1cbiAgICB0eXBlb2YgZmlsdGVyT3B0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgPyBBY2Nlc3Nvci5nZW5lcmF0ZUFjY2Vzc29yKGZpbHRlck9wdGlvbilcbiAgICAgIDogQWNjZXNzb3IuSURFTlRJVFlfRk47XG5cbiAgcmV0dXJuICh2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBmdXp6eS5maWx0ZXIodmFsdWUsIG9wdGlvbnMsIHtleHRyYWN0OiBtYXBwZXJ9KS5tYXAocmVzID0+IG9wdGlvbnNbcmVzLmluZGV4XSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHNlYXJjaE9wdGlvbnNPbklucHV0KGlucHV0VmFsdWUsIHByb3BzKSB7XG4gIGNvbnN0IHNlYXJjaE9wdGlvbnMgPSBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzKTtcbiAgcmV0dXJuIHNlYXJjaE9wdGlvbnMoaW5wdXRWYWx1ZSwgcHJvcHMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnNGb3JWYWx1ZSh2YWx1ZSwgcHJvcHMsIHN0YXRlKSB7XG4gIGNvbnN0IHtvcHRpb25zLCBzaG93T3B0aW9uc1doZW5FbXB0eX0gPSBwcm9wcztcblxuICBpZiAoIXByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAvLyBkaXJlY3RseSBwYXNzIHRocm91Z2ggb3B0aW9ucyBpZiBjYW4gbm90IGJlIHNlYXJjaGVkXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cbiAgaWYgKHNob3VsZFNraXBTZWFyY2godmFsdWUsIHN0YXRlLCBzaG93T3B0aW9uc1doZW5FbXB0eSkpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIGNvbnN0IHNlYXJjaE9wdGlvbnMgPSBnZW5lcmF0ZVNlYXJjaEZ1bmN0aW9uKHByb3BzKTtcbiAgcmV0dXJuIHNlYXJjaE9wdGlvbnModmFsdWUsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwU2VhcmNoKGlucHV0LCBzdGF0ZSwgc2hvd09wdGlvbnNXaGVuRW1wdHkpIHtcbiAgY29uc3QgZW1wdHlWYWx1ZSA9ICFpbnB1dCB8fCBpbnB1dC50cmltKCkubGVuZ3RoID09PSAwO1xuXG4gIC8vIHRoaXMuc3RhdGUgbXVzdCBiZSBjaGVja2VkIGJlY2F1c2UgaXQgbWF5IG5vdCBiZSBkZWZpbmVkIHlldCBpZiB0aGlzIGZ1bmN0aW9uXG4gIC8vIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBnZXRJbml0aWFsU3RhdGVcbiAgY29uc3QgaXNGb2N1c2VkID0gc3RhdGUgJiYgc3RhdGUuaXNGb2N1c2VkO1xuICByZXR1cm4gIShzaG93T3B0aW9uc1doZW5FbXB0eSAmJiBpc0ZvY3VzZWQpICYmIGVtcHR5VmFsdWU7XG59XG5cbnR5cGUgT3B0aW9uID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IHVuZGVmaW5lZDtcbmludGVyZmFjZSBUeXBlYWhlYWRQcm9wcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGN1c3RvbUNsYXNzZXM/OiBhbnk7XG4gIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlPzogc3RyaW5nO1xuICBvcHRpb25zPzogUmVhZG9ubHlBcnJheTxPcHRpb24+O1xuICBmaXhlZE9wdGlvbnM/OiBSZWFkb25seUFycmF5PE9wdGlvbj4gfCBudWxsO1xuICBhbGxvd0N1c3RvbVZhbHVlcz86IG51bWJlcjtcbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdGV4dGFyZWE/OiBib29sZWFuO1xuICBpbnB1dFByb3BzPzogb2JqZWN0O1xuICBvbk9wdGlvblNlbGVjdGVkPzogKG9wdGlvbjogYW55LCBldmVudDogYW55KSA9PiBhbnk7XG4gIG9uQ2hhbmdlPzogKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgb25LZXlEb3duPzogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZDtcbiAgb25LZXlQcmVzcz86IEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgb25LZXlVcD86IEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgb25Gb2N1cz86IChldmVudDogUmVhY3QuRm9jdXNFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWQ7XG4gIG9uQmx1cj86IChldmVudDogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgZmlsdGVyT3B0aW9uPzogc3RyaW5nIHwgKChvOiBPcHRpb24sIHM6IHN0cmluZykgPT4gYm9vbGVhbik7XG4gIHNlYXJjaE9wdGlvbnM/OiAobzogT3B0aW9uLCBzOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIGRpc3BsYXlPcHRpb24/OiBzdHJpbmcgfCAoKG86IE9wdGlvbikgPT4gc3RyaW5nKTtcbiAgaW5wdXREaXNwbGF5T3B0aW9uPzogc3RyaW5nIHwgKChvOiBPcHRpb24pID0+IHN0cmluZyk7XG4gIGZvcm1JbnB1dE9wdGlvbj86IHN0cmluZyB8ICgobzogT3B0aW9uKSA9PiBzdHJpbmcpO1xuICBkZWZhdWx0Q2xhc3NOYW1lcz86IGJvb2xlYW47XG4gIGN1c3RvbUxpc3RDb21wb25lbnQ/OiBFbGVtZW50VHlwZTtcbiAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ/OiBFbGVtZW50VHlwZTtcbiAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD86IEVsZW1lbnRUeXBlIHwgbnVsbDtcbiAgc2hvd09wdGlvbnNXaGVuRW1wdHk/OiBib29sZWFuO1xuICBzZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgbGlnaHQ/OiBib29sZWFuO1xuICBpbnB1dEljb246IEVsZW1lbnRUeXBlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdGVkSXRlbXM/OiBhbnlbXSB8IG51bGw7XG4gIGF1dG9Gb2N1czogYm9vbGVhbjtcbiAgLy8gZGVwcmVjYXRlZFxuICBtYXhWaXNpYmxlPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVHlwZWFoZWFkU3RhdGUge1xuICBzZWFyY2hSZXN1bHRzOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCB1bmRlZmluZWQ+O1xuXG4gIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBzb21ldGhpbmcgZWxzZSwgJ2VudHJ5VmFsdWUnXG4gIGVudHJ5VmFsdWU/OiBzdHJpbmc7XG5cbiAgLy8gQSB2YWxpZCB0eXBlYWhlYWQgdmFsdWVcbiAgc2VsZWN0aW9uPzogc3RyaW5nO1xuXG4gIC8vIEluZGV4IG9mIHRoZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uSW5kZXg6IG51bGw7XG5cbiAgLy8gS2VlcCB0cmFjayBvZiB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGlucHV0IGVsZW1lbnQsIHRvIGRldGVybWluZVxuICAvLyB3aGV0aGVyIHRvIHNob3cgb3B0aW9ucyB3aGVuIGVtcHR5IChpZiBzaG93T3B0aW9uc1doZW5FbXB0eSBpcyB0cnVlKVxuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybjtcbn1cbmNsYXNzIFR5cGVhaGVhZCBleHRlbmRzIENvbXBvbmVudDxUeXBlYWhlYWRQcm9wcywgVHlwZWFoZWFkU3RhdGU+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcHRpb25zOiBbXSxcbiAgICBjdXN0b21DbGFzc2VzOiB7XG4gICAgICByZXN1bHRzOiAnbGlzdC1zZWxlY3RvcicsXG4gICAgICBpbnB1dDogJ3R5cGVhaGVhZF9faW5wdXQnLFxuICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgIGxpc3RBbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG4gICAgfSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogMCxcbiAgICBpbml0aWFsVmFsdWU6ICcnLFxuICAgIHZhbHVlOiAnJyxcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHRleHRhcmVhOiBmYWxzZSxcbiAgICBpbnB1dFByb3BzOiB7fSxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiBub29wLFxuICAgIG9uQ2hhbmdlOiBub29wLFxuICAgIG9uS2V5RG93bjogbm9vcCxcbiAgICBvbktleVByZXNzOiBub29wLFxuICAgIG9uS2V5VXA6IG5vb3AsXG4gICAgb25Gb2N1czogbm9vcCxcbiAgICBvbkJsdXI6IG5vb3AsXG4gICAgZmlsdGVyT3B0aW9uOiBudWxsLFxuICAgIHNlYXJjaE9wdGlvbnM6IG51bGwsXG4gICAgaW5wdXREaXNwbGF5T3B0aW9uOiBudWxsLFxuICAgIGRlZmF1bHRDbGFzc05hbWVzOiB0cnVlLFxuICAgIGN1c3RvbUxpc3RDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogTGlzdEl0ZW0sXG4gICAgaW5wdXRJY29uOiBTZWFyY2gsXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBzaG93T3B0aW9uc1doZW5FbXB0eTogdHJ1ZSxcbiAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlOiBudWxsLFxuICAgIGF1dG9Gb2N1czogdHJ1ZVxuICB9O1xuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgPT09IHN0YXRlLnByZXZPcHRpb25zKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLy8gIGludm9rZWQgYWZ0ZXIgYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIGFzIHdlbGwgYXMgYmVmb3JlIGl0IGlzIHJlLXJlbmRlcmVkXG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGdldE9wdGlvbnNGb3JWYWx1ZShzdGF0ZS5lbnRyeVZhbHVlLCBwcm9wcywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlYXJjaFJlc3VsdHMsXG4gICAgICBwcmV2T3B0aW9uczogcHJvcHMub3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAvLyBpbml0aWF0ZSBzZWFyY2hSZXN1bHRzIHdpdGggb3B0aW9uc1xuICAgICAgc2VhcmNoUmVzdWx0czogdGhpcy5wcm9wcy5vcHRpb25zIHx8IFtdLFxuXG4gICAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgc29tZXRoaW5nIGVsc2UsICdlbnRyeVZhbHVlJ1xuICAgICAgZW50cnlWYWx1ZTogdGhpcy5wcm9wcy52YWx1ZSB8fCB0aGlzLnByb3BzLmluaXRpYWxWYWx1ZSxcblxuICAgICAgLy8gQSB2YWxpZCB0eXBlYWhlYWQgdmFsdWVcbiAgICAgIHNlbGVjdGlvbjogdGhpcy5wcm9wcy52YWx1ZSxcblxuICAgICAgLy8gSW5kZXggb2YgdGhlIHNlbGVjdGlvblxuICAgICAgc2VsZWN0aW9uSW5kZXg6IG51bGwsXG5cbiAgICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LCB0byBkZXRlcm1pbmVcbiAgICAgIC8vIHdoZXRoZXIgdG8gc2hvdyBvcHRpb25zIHdoZW4gZW1wdHkgKGlmIHNob3dPcHRpb25zV2hlbkVtcHR5IGlzIHRydWUpXG4gICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIGNhbGwgZm9jdXMgb24gZW50cnkgb3IgZGl2IHRvIHRyaWdnZXIga2V5IGV2ZW50cyBsaXN0ZW5lclxuICAgIGlmICh0aGlzLnByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgaWYgKHRoaXMuZW50cnkuY3VycmVudCkge1xuICAgICAgICB0aGlzLmVudHJ5LmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm9vdC5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPigpO1xuICBlbnRyeSA9IGNyZWF0ZVJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4oKTtcblxuICBmb2N1cyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5lbnRyeS5jdXJyZW50KSB7XG4gICAgICB0aGlzLmVudHJ5LmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgX2hhc0N1c3RvbVZhbHVlID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBOdW1iZXIodGhpcy5wcm9wcy5hbGxvd0N1c3RvbVZhbHVlcykgPiAwICYmXG4gICAgICBOdW1iZXIodGhpcy5zdGF0ZS5lbnRyeVZhbHVlPy5sZW5ndGgpID49IE51bWJlcih0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzKSAmJlxuICAgICAgdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy5zdGF0ZS5lbnRyeVZhbHVlKSA8IDBcbiAgICApO1xuICB9O1xuXG4gIF9nZXRDdXN0b21WYWx1ZSA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5faGFzQ3VzdG9tVmFsdWUoKSA/IHRoaXMuc3RhdGUuZW50cnlWYWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgX3JlbmRlckluY3JlbWVudGFsU2VhcmNoUmVzdWx0cygpIHtcbiAgICBjb25zdCB7Y3VzdG9tTGlzdENvbXBvbmVudDogQ3VzdG9tTGlzdENvbXBvbmVudCA9IERyb3Bkb3duTGlzdH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8Q3VzdG9tTGlzdENvbXBvbmVudFxuICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHN9XG4gICAgICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ9e2ZhbHNlfVxuICAgICAgICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZT17dGhpcy5wcm9wcy5yZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZX1cbiAgICAgICAgb25PcHRpb25TZWxlY3RlZD17dGhpcy5fb25PcHRpb25TZWxlY3RlZH1cbiAgICAgICAgYWxsb3dDdXN0b21WYWx1ZXM9e3RoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXN9XG4gICAgICAgIGN1c3RvbVZhbHVlPXt0aGlzLl9nZXRDdXN0b21WYWx1ZSgpfVxuICAgICAgICBjdXN0b21DbGFzc2VzPXt0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXN9XG4gICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RJdGVtQ29tcG9uZW50fVxuICAgICAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PXt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgIHNlbGVjdGlvbkluZGV4PXt0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4fVxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lcz17dGhpcy5wcm9wcy5kZWZhdWx0Q2xhc3NOYW1lc31cbiAgICAgICAgZGlzcGxheU9wdGlvbj17dGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9ufVxuICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXN9XG4gICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uKCkge1xuICAgIGxldCBpbmRleDogbnVtYmVyIHwgbnVsbCA9IHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXg7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaW5kZXggPSBOdW1iZXIoaW5kZXgpO1xuXG4gICAgaWYgKHRoaXMuX2hhc0N1c3RvbVZhbHVlKCkpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5lbnRyeVZhbHVlO1xuICAgICAgfVxuICAgICAgaW5kZXgtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0ZpeGVkT3B0aW9ucygpKSB7XG4gICAgICByZXR1cm4gaW5kZXggPCBOdW1iZXIodGhpcy5wcm9wcy5maXhlZE9wdGlvbnM/Lmxlbmd0aClcbiAgICAgICAgPyB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8uW2luZGV4XVxuICAgICAgICA6IHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0c1tpbmRleCAtIE51bWJlcih0aGlzLnByb3BzLmZpeGVkT3B0aW9ucz8ubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbaW5kZXhdO1xuICB9XG5cbiAgX29uT3B0aW9uU2VsZWN0ZWQgPSAob3B0aW9uLCBldmVudCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaGFibGUpIHtcbiAgICAgIC8vIHJlc2V0IGVudHJ5IGlucHV0XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgLy8gcmVzZXQgc2VhcmNoIG9wdGlvbnMgd2hlbiBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZVxuICAgICAgICBzZWFyY2hSZXN1bHRzOiB0aGlzLnByb3BzLm9wdGlvbnMgfHwgW10sXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6ICcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uT3B0aW9uU2VsZWN0ZWQ/LihvcHRpb24sIGV2ZW50KTtcbiAgfTtcblxuICAvLyB1c2UgKCkgPT4ge30gdG8gYXZvaWQgYmluZGluZyAndGhpcydcbiAgX29uVGV4dEVudHJ5VXBkYXRlZCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hhYmxlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZW50cnkuY3VycmVudD8udmFsdWU7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzZWFyY2hSZXN1bHRzOiBzZWFyY2hPcHRpb25zT25JbnB1dCh2YWx1ZSwgdGhpcy5wcm9wcyksXG4gICAgICAgIHNlbGVjdGlvbjogJycsXG4gICAgICAgIGVudHJ5VmFsdWU6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX29uRW50ZXIgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgdGhpcy5wcm9wcy5vbktleURvd24/LihldmVudCk7XG4gICAgfVxuICAgIHRoaXMuX29uT3B0aW9uU2VsZWN0ZWQoc2VsZWN0aW9uLCBldmVudCk7XG4gIH07XG5cbiAgX29uRXNjYXBlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0aW9uSW5kZXg6IG51bGxcbiAgICB9KTtcbiAgfTtcblxuICBfb25UYWIgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICBsZXQgb3B0aW9uID0gc2VsZWN0aW9uXG4gICAgICA/IHNlbGVjdGlvblxuICAgICAgOiB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMFxuICAgICAgPyB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHNbMF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChvcHRpb24gPT09IG51bGwgJiYgdGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgb3B0aW9uID0gdGhpcy5fZ2V0Q3VzdG9tVmFsdWUoKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fb25PcHRpb25TZWxlY3RlZChvcHRpb24sIGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgZXZlbnRNYXAgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0ge307XG5cbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1VQXSA9IHRoaXMubmF2VXA7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19ET1dOXSA9IHRoaXMubmF2RG93bjtcbiAgICBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX1JFVFVSTl0gPSBldmVudHNbS2V5RXZlbnQuRE9NX1ZLX0VOVEVSXSA9IHRoaXMuX29uRW50ZXI7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19FU0NBUEVdID0gdGhpcy5fb25Fc2NhcGU7XG4gICAgZXZlbnRzW0tleUV2ZW50LkRPTV9WS19UQUJdID0gdGhpcy5fb25UYWI7XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9O1xuXG4gIF9uYXYgPSBkZWx0YSA9PiB7XG4gICAgaWYgKCF0aGlzLl9oYXNIaW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5ld0luZGV4ID1cbiAgICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uSW5kZXggPT09IG51bGxcbiAgICAgICAgPyBkZWx0YSA9PT0gMVxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogZGVsdGFcbiAgICAgICAgOiB0aGlzLnN0YXRlLnNlbGVjdGlvbkluZGV4ICsgZGVsdGE7XG4gICAgbGV0IGxlbmd0aCA9IHRoaXMucHJvcHMubWF4VmlzaWJsZVxuICAgICAgPyB0aGlzLnN0YXRlLnNlYXJjaFJlc3VsdHMuc2xpY2UoMCwgdGhpcy5wcm9wcy5tYXhWaXNpYmxlKS5sZW5ndGhcbiAgICAgIDogdGhpcy5zdGF0ZS5zZWFyY2hSZXN1bHRzLmxlbmd0aDtcbiAgICBpZiAodGhpcy5faGFzQ3VzdG9tVmFsdWUoKSkge1xuICAgICAgbGVuZ3RoICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKG5ld0luZGV4IDwgMCkge1xuICAgICAgbmV3SW5kZXggKz0gbGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICBuZXdJbmRleCAtPSBsZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7c2VsZWN0aW9uSW5kZXg6IG5ld0luZGV4fSk7XG4gIH07XG5cbiAgbmF2RG93biA9ICgpID0+IHtcbiAgICB0aGlzLl9uYXYoMSk7XG4gIH07XG5cbiAgbmF2VXAgPSAoKSA9PiB7XG4gICAgdGhpcy5fbmF2KC0xKTtcbiAgfTtcblxuICBfb25DaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IGV2ZW50ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25UZXh0RW50cnlVcGRhdGVkKCk7XG4gIH07XG5cbiAgX29uS2V5RG93bjogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIC8vIElmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGVsZW1lbnRzLCBkb24ndCBwZXJmb3JtIHNlbGVjdG9yIG5hdmlnYXRpb24uXG4gICAgLy8gSnVzdCBwYXNzIHRoaXMgdXAgdG8gdGhlIHVwc3RyZWFtIG9uS2V5ZG93biBoYW5kbGVyLlxuICAgIC8vIEFsc28gc2tpcCBpZiB0aGUgdXNlciBpcyBwcmVzc2luZyB0aGUgc2hpZnQga2V5LCBzaW5jZSBub25lIG9mIG91ciBoYW5kbGVycyBhcmUgbG9va2luZyBmb3Igc2hpZnRcbiAgICBpZiAoIXRoaXMuX2hhc0hpbnQoKSB8fCBldmVudC5zaGlmdEtleSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25LZXlEb3duPy4oZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmV2ZW50TWFwKClbZXZlbnQua2V5Q29kZV07XG5cbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uS2V5RG93bj8uKGV2ZW50KTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgcHJvcGFnYXRlIHRoZSBrZXlzdHJva2UgYmFjayB0byB0aGUgRE9NL2Jyb3dzZXJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIF9vbkZvY3VzOiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gPSBldmVudCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7aXNGb2N1c2VkOiB0cnVlfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25Gb2N1cykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkJsdXI6IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2lzRm9jdXNlZDogZmFsc2V9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9uQmx1cihldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJIaWRkZW5JbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT17dGhpcy5wcm9wcy5uYW1lfSB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3Rpb259IC8+O1xuICB9XG5cbiAgX2hhc0hpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwIHx8IHRoaXMuX2hhc0N1c3RvbVZhbHVlKCk7XG4gIH1cblxuICBfaGFzRml4ZWRPcHRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuZml4ZWRPcHRpb25zKSAmJiB0aGlzLnByb3BzLmZpeGVkT3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgaW5wdXRDbGFzc2VzID0ge307XG4gICAgaW5wdXRDbGFzc2VzW3RoaXMucHJvcHMuY3VzdG9tQ2xhc3Nlcz8uaW5wdXRdID0gQm9vbGVhbih0aGlzLnByb3BzLmN1c3RvbUNsYXNzZXM/LmlucHV0KTtcbiAgICBjb25zdCBpbnB1dENsYXNzTGlzdCA9IGNsYXNzTmFtZXMoaW5wdXRDbGFzc2VzKTtcblxuICAgIGNvbnN0IGNsYXNzZXMgPSB7XG4gICAgICBbREVGQVVMVF9DTEFTU106IHRoaXMucHJvcHMuZGVmYXVsdENsYXNzTmFtZXNcbiAgICB9O1xuICAgIGNsYXNzZXNbdGhpcy5wcm9wcy5jbGFzc05hbWUgPyB0aGlzLnByb3BzLmNsYXNzTmFtZSA6ICcnXSA9IEJvb2xlYW4odGhpcy5wcm9wcy5jbGFzc05hbWUpO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGNsYXNzTmFtZXMoY2xhc3Nlcyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFR5cGVhaGVhZFdyYXBwZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc0xpc3R9XG4gICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgb25LZXlEb3duPXt0aGlzLl9vbktleURvd259XG4gICAgICAgIG9uS2V5UHJlc3M9e3RoaXMucHJvcHMub25LZXlQcmVzc31cbiAgICAgICAgb25LZXlVcD17dGhpcy5wcm9wcy5vbktleVVwfVxuICAgICAgICBvbkZvY3VzPXt0aGlzLl9vbkZvY3VzfVxuICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5saWdodH1cbiAgICAgID5cbiAgICAgICAge3RoaXMuX3JlbmRlckhpZGRlbklucHV0KCl9XG4gICAgICAgIHt0aGlzLnByb3BzLnNlYXJjaGFibGUgPyAoXG4gICAgICAgICAgPElucHV0Qm94PlxuICAgICAgICAgICAgPFR5cGVhaGVhZElucHV0XG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lbnRyeX1cbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuaW5wdXRQcm9wc31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17aW5wdXRDbGFzc0xpc3R9XG4gICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVudHJ5VmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLl9vbkNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLl9vbkJsdXJ9XG4gICAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmxpZ2h0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxJbnB1dEljb24+XG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmlucHV0SWNvbiBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgIDwvSW5wdXRJY29uPlxuICAgICAgICAgIDwvSW5wdXRCb3g+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7dGhpcy5fcmVuZGVySW5jcmVtZW50YWxTZWFyY2hSZXN1bHRzKCl9XG4gICAgICA8L1R5cGVhaGVhZFdyYXBwZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUeXBlYWhlYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sU0FBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBRUEsSUFBQVUsa0JBQUEsR0FBQVYsT0FBQTtBQUF1RCxJQUFBVyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBZHZEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWpCLHdCQUFBaUIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFdBQUFoQixDQUFBLEVBQUFpQixDQUFBLEVBQUFwQixDQUFBLFdBQUFvQixDQUFBLE9BQUFDLGdCQUFBLGFBQUFELENBQUEsT0FBQUUsMkJBQUEsYUFBQW5CLENBQUEsRUFBQW9CLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBTCxDQUFBLEVBQUFwQixDQUFBLFlBQUFxQixnQkFBQSxhQUFBbEIsQ0FBQSxFQUFBdUIsV0FBQSxJQUFBTixDQUFBLENBQUFPLEtBQUEsQ0FBQXhCLENBQUEsRUFBQUgsQ0FBQTtBQUFBLFNBQUF1QiwwQkFBQSxjQUFBcEIsQ0FBQSxJQUFBeUIsT0FBQSxDQUFBQyxTQUFBLENBQUFDLE9BQUEsQ0FBQWQsSUFBQSxDQUFBUSxPQUFBLENBQUFDLFNBQUEsQ0FBQUcsT0FBQSxpQ0FBQXpCLENBQUEsYUFBQW9CLHlCQUFBLFlBQUFBLDBCQUFBLGFBQUFwQixDQUFBO0FBY0EsSUFBTTRCLGFBQWEsR0FBRyxXQUFXO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFPQSxJQUFNQyxnQkFBZ0UsR0FBR0MsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFDQyxVQUFVLENBQUM7RUFDN0ZDLGlCQUFpQixFQUFqQkE7QUFDRixDQUFDLENBQUMsQ0FBQXpDLGVBQUEsS0FBQUEsZUFBQSxPQUFBMEMsdUJBQUEseUpBR29CLFVBQUFDLEtBQUs7RUFBQSxPQUN2QkEsS0FBSyxDQUFDQyxLQUFLLEdBQUdELEtBQUssQ0FBQ0UsS0FBSyxDQUFDQyxpQkFBaUIsR0FBR0gsS0FBSyxDQUFDRSxLQUFLLENBQUNFLGVBQWU7QUFBQSxHQUM3RCxVQUFBSixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDRSxLQUFLLENBQUNHLGtCQUFrQjtBQUFBLEVBS3REO0FBRUQsSUFBTUMsUUFBUSxHQUFHWCw0QkFBTSxDQUFDQyxHQUFHLENBQUNXLEtBQUssQ0FBQztFQUNoQ0MsU0FBUyxFQUFFO0FBQ2IsQ0FBQyxDQUFDLENBQUFsRCxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBeUMsdUJBQUEsdUNBRUQ7QUFXRCxJQUFNVSxjQUE0RCxHQUFHZCw0QkFBTSxDQUFDZSxLQUFLLENBQUNiLFVBQVUsQ0FBQztFQUMzRkMsaUJBQWlCLEVBQWpCQTtBQUNGLENBQUMsQ0FBQyxDQUFBdkMsZ0JBQUEsS0FBQUEsZ0JBQUEsT0FBQXdDLHVCQUFBLG9HQUNFLFVBQUFDLEtBQUs7RUFBQSxPQUFLQSxLQUFLLENBQUNDLEtBQUssR0FBR0QsS0FBSyxDQUFDRSxLQUFLLENBQUNTLE9BQU8sR0FBR1gsS0FBSyxDQUFDRSxLQUFLLENBQUNVLGNBQWM7QUFBQSxDQUFDLEVBR3JELFVBQUFaLEtBQUs7RUFBQSxPQUN2QkEsS0FBSyxDQUFDQyxLQUFLLEdBQUdELEtBQUssQ0FBQ0UsS0FBSyxDQUFDVyxrQkFBa0IsR0FBR2IsS0FBSyxDQUFDRSxLQUFLLENBQUNZLGlCQUFpQjtBQUFBLEVBRWpGO0FBRUQsSUFBTUMsU0FBUyxHQUFHcEIsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFDVyxLQUFLLENBQUM7RUFDakNDLFNBQVMsRUFBRTtBQUNiLENBQUMsQ0FBQyxDQUFBaEQsZ0JBQUEsS0FBQUEsZ0JBQUEsT0FBQXVDLHVCQUFBLDRGQUlTLFVBQUFDLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNFLEtBQUssQ0FBQ2MscUJBQXFCO0FBQUEsRUFDcEQ7QUFFRCxTQUFTQyxzQkFBc0JBLENBQUNqQixLQUFxQixFQUFFO0VBQ3JELElBQU9rQixhQUFhLEdBQWtCbEIsS0FBSyxDQUFwQ2tCLGFBQWE7SUFBRUMsWUFBWSxHQUFJbkIsS0FBSyxDQUFyQm1CLFlBQVk7RUFDbEMsSUFBSSxPQUFPRCxhQUFhLEtBQUssVUFBVSxFQUFFO0lBQ3ZDLElBQUlDLFlBQVksS0FBSyxJQUFJLEVBQUU7TUFDekJDLGVBQU8sQ0FBQ0MsSUFBSSxDQUFDLHFFQUFxRSxDQUFDO0lBQ3JGO0lBQ0EsT0FBT0gsYUFBYTtFQUN0QixDQUFDLE1BQU0sSUFBSSxPQUFPQyxZQUFZLEtBQUssVUFBVSxFQUFFO0lBQzdDO0lBQ0EsT0FBTyxVQUFDRyxLQUFLLEVBQUVDLE9BQU87TUFBQSxPQUFLQSxPQUFPLENBQUNDLE1BQU0sQ0FBQyxVQUFBMUMsQ0FBQztRQUFBLE9BQUlxQyxZQUFZLENBQUNHLEtBQUssRUFBRXhDLENBQUMsQ0FBQztNQUFBLEVBQUM7SUFBQTtFQUN4RTtFQUVBLElBQU0yQyxNQUFNLEdBQ1YsT0FBT04sWUFBWSxLQUFLLFFBQVEsR0FDNUJPLG9CQUFRLENBQUNDLGdCQUFnQixDQUFDUixZQUFZLENBQUMsR0FDdkNPLG9CQUFRLENBQUNFLFdBQVc7RUFFMUIsT0FBTyxVQUFDTixLQUFLLEVBQUVDLE9BQU8sRUFBSztJQUN6QixPQUFPTSxpQkFBSyxDQUFDTCxNQUFNLENBQUNGLEtBQUssRUFBRUMsT0FBTyxFQUFFO01BQUNPLE9BQU8sRUFBRUw7SUFBTSxDQUFDLENBQUMsQ0FBQ00sR0FBRyxDQUFDLFVBQUFDLEdBQUc7TUFBQSxPQUFJVCxPQUFPLENBQUNTLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDO0lBQUEsRUFBQztFQUN2RixDQUFDO0FBQ0g7QUFFQSxTQUFTQyxvQkFBb0JBLENBQUNDLFVBQVUsRUFBRW5DLEtBQUssRUFBRTtFQUMvQyxJQUFNa0IsYUFBYSxHQUFHRCxzQkFBc0IsQ0FBQ2pCLEtBQUssQ0FBQztFQUNuRCxPQUFPa0IsYUFBYSxDQUFDaUIsVUFBVSxFQUFFbkMsS0FBSyxDQUFDdUIsT0FBTyxDQUFDO0FBQ2pEO0FBRUEsU0FBU2Esa0JBQWtCQSxDQUFDZCxLQUFLLEVBQUV0QixLQUFLLEVBQUVxQyxLQUFLLEVBQUU7RUFDL0MsSUFBT2QsT0FBTyxHQUEwQnZCLEtBQUssQ0FBdEN1QixPQUFPO0lBQUVlLG9CQUFvQixHQUFJdEMsS0FBSyxDQUE3QnNDLG9CQUFvQjtFQUVwQyxJQUFJLENBQUN0QyxLQUFLLENBQUN1QyxVQUFVLEVBQUU7SUFDckI7SUFDQSxPQUFPaEIsT0FBTztFQUNoQjtFQUNBLElBQUlpQixnQkFBZ0IsQ0FBQ2xCLEtBQUssRUFBRWUsS0FBSyxFQUFFQyxvQkFBb0IsQ0FBQyxFQUFFO0lBQ3hELE9BQU9mLE9BQU87RUFDaEI7RUFFQSxJQUFNTCxhQUFhLEdBQUdELHNCQUFzQixDQUFDakIsS0FBSyxDQUFDO0VBQ25ELE9BQU9rQixhQUFhLENBQUNJLEtBQUssRUFBRUMsT0FBTyxDQUFDO0FBQ3RDO0FBRUEsU0FBU2lCLGdCQUFnQkEsQ0FBQzlCLEtBQUssRUFBRTJCLEtBQUssRUFBRUMsb0JBQW9CLEVBQUU7RUFDNUQsSUFBTUcsVUFBVSxHQUFHLENBQUMvQixLQUFLLElBQUlBLEtBQUssQ0FBQ2dDLElBQUksQ0FBQyxDQUFDLENBQUNDLE1BQU0sS0FBSyxDQUFDOztFQUV0RDtFQUNBO0VBQ0EsSUFBTUMsU0FBUyxHQUFHUCxLQUFLLElBQUlBLEtBQUssQ0FBQ08sU0FBUztFQUMxQyxPQUFPLEVBQUVOLG9CQUFvQixJQUFJTSxTQUFTLENBQUMsSUFBSUgsVUFBVTtBQUMzRDtBQTREQSxTQUFTSSxJQUFJQSxDQUFBLEVBQUc7RUFDZDtBQUNGO0FBQUMsSUFDS0MsU0FBUywwQkFBQUMsVUFBQTtFQW1EYixTQUFBRCxVQUFZOUMsS0FBSyxFQUFFO0lBQUEsSUFBQWdELEtBQUE7SUFBQSxJQUFBQyxnQkFBQSxtQkFBQUgsU0FBQTtJQUNqQkUsS0FBQSxHQUFBbkUsVUFBQSxPQUFBaUUsU0FBQSxHQUFNOUMsS0FBSztJQUFFLElBQUFrRCxnQkFBQSxhQUFBRixLQUFBLHVCQWdDUixJQUFBRyxnQkFBUyxFQUF3QixDQUFDO0lBQUEsSUFBQUQsZ0JBQUEsYUFBQUYsS0FBQSx3QkFDakMsSUFBQUcsZ0JBQVMsRUFBMEIsQ0FBQztJQUFBLElBQUFELGdCQUFBLGFBQUFGLEtBQUEsV0FFcEMsWUFBTTtNQUNaLElBQUlBLEtBQUEsQ0FBS0ksS0FBSyxDQUFDQyxPQUFPLEVBQUU7UUFDdEJMLEtBQUEsQ0FBS0ksS0FBSyxDQUFDQyxPQUFPLENBQUNDLEtBQUssQ0FBQyxDQUFDO01BQzVCO0lBQ0YsQ0FBQztJQUFBLElBQUFKLGdCQUFBLGFBQUFGLEtBQUEscUJBRWlCLFlBQU07TUFBQSxJQUFBTyxxQkFBQTtNQUN0QixPQUNFQyxNQUFNLENBQUNSLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3lELGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUN4Q0QsTUFBTSxFQUFBRCxxQkFBQSxHQUFDUCxLQUFBLENBQUtYLEtBQUssQ0FBQ3FCLFVBQVUsY0FBQUgscUJBQUEsdUJBQXJCQSxxQkFBQSxDQUF1QlosTUFBTSxDQUFDLElBQUlhLE1BQU0sQ0FBQ1IsS0FBQSxDQUFLaEQsS0FBSyxDQUFDeUQsaUJBQWlCLENBQUMsSUFDN0VULEtBQUEsQ0FBS1gsS0FBSyxDQUFDc0IsYUFBYSxDQUFDQyxPQUFPLENBQUNaLEtBQUEsQ0FBS1gsS0FBSyxDQUFDcUIsVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUUvRCxDQUFDO0lBQUEsSUFBQVIsZ0JBQUEsYUFBQUYsS0FBQSxxQkFFaUIsWUFBTTtNQUN0QixPQUFPQSxLQUFBLENBQUthLGVBQWUsQ0FBQyxDQUFDLEdBQUdiLEtBQUEsQ0FBS1gsS0FBSyxDQUFDcUIsVUFBVSxHQUFHLElBQUk7SUFDOUQsQ0FBQztJQUFBLElBQUFSLGdCQUFBLGFBQUFGLEtBQUEsdUJBOENtQixVQUFDYyxNQUFNLEVBQUVDLEtBQUssRUFBSztNQUFBLElBQUFDLHFCQUFBLEVBQUFDLFdBQUE7TUFDckMsSUFBSWpCLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3VDLFVBQVUsRUFBRTtRQUN6QjtRQUNBUyxLQUFBLENBQUtrQixRQUFRLENBQUM7VUFDWjtVQUNBUCxhQUFhLEVBQUVYLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3VCLE9BQU8sSUFBSSxFQUFFO1VBQ3ZDNEMsU0FBUyxFQUFFLEVBQUU7VUFDYlQsVUFBVSxFQUFFO1FBQ2QsQ0FBQyxDQUFDO01BQ0o7TUFFQSxDQUFBTSxxQkFBQSxJQUFBQyxXQUFBLEdBQUFqQixLQUFBLENBQUtoRCxLQUFLLEVBQUNvRSxnQkFBZ0IsY0FBQUoscUJBQUEsZUFBM0JBLHFCQUFBLENBQUF0RixJQUFBLENBQUF1RixXQUFBLEVBQThCSCxNQUFNLEVBQUVDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQ7SUFBQSxJQUFBYixnQkFBQSxhQUFBRixLQUFBLHlCQUNzQixZQUFNO01BQzFCLElBQUlBLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3VDLFVBQVUsRUFBRTtRQUFBLElBQUE4QixtQkFBQTtRQUN6QixJQUFNL0MsS0FBSyxJQUFBK0MsbUJBQUEsR0FBR3JCLEtBQUEsQ0FBS0ksS0FBSyxDQUFDQyxPQUFPLGNBQUFnQixtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CL0MsS0FBSztRQUV2QzBCLEtBQUEsQ0FBS2tCLFFBQVEsQ0FBQztVQUNaUCxhQUFhLEVBQUV6QixvQkFBb0IsQ0FBQ1osS0FBSyxFQUFFMEIsS0FBQSxDQUFLaEQsS0FBSyxDQUFDO1VBQ3REbUUsU0FBUyxFQUFFLEVBQUU7VUFDYlQsVUFBVSxFQUFFcEM7UUFDZCxDQUFDLENBQUM7TUFDSjtJQUNGLENBQUM7SUFBQSxJQUFBNEIsZ0JBQUEsYUFBQUYsS0FBQSxjQUVVLFVBQUFlLEtBQUssRUFBSTtNQUNsQixJQUFNSSxTQUFTLEdBQUduQixLQUFBLENBQUtzQixZQUFZLENBQUMsQ0FBQztNQUNyQyxJQUFJLENBQUNILFNBQVMsRUFBRTtRQUFBLElBQUFJLHFCQUFBLEVBQUFDLFlBQUE7UUFDZCxDQUFBRCxxQkFBQSxJQUFBQyxZQUFBLEdBQUF4QixLQUFBLENBQUtoRCxLQUFLLEVBQUN5RSxTQUFTLGNBQUFGLHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFBN0YsSUFBQSxDQUFBOEYsWUFBQSxFQUF1QlQsS0FBSyxDQUFDO01BQy9CO01BQ0FmLEtBQUEsQ0FBSzBCLGlCQUFpQixDQUFDUCxTQUFTLEVBQUVKLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBQUEsSUFBQWIsZ0JBQUEsYUFBQUYsS0FBQSxlQUVXLFlBQU07TUFDaEJBLEtBQUEsQ0FBS2tCLFFBQVEsQ0FBQztRQUNaUyxjQUFjLEVBQUU7TUFDbEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUFBLElBQUF6QixnQkFBQSxhQUFBRixLQUFBLFlBRVEsVUFBQWUsS0FBSyxFQUFJO01BQ2hCLElBQU1JLFNBQVMsR0FBR25CLEtBQUEsQ0FBS3NCLFlBQVksQ0FBQyxDQUFDO01BQ3JDLElBQUlSLE1BQU0sR0FBR0ssU0FBUyxHQUNsQkEsU0FBUyxHQUNUbkIsS0FBQSxDQUFLWCxLQUFLLENBQUNzQixhQUFhLENBQUNoQixNQUFNLEdBQUcsQ0FBQyxHQUNuQ0ssS0FBQSxDQUFLWCxLQUFLLENBQUNzQixhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQzNCLElBQUk7TUFFUixJQUFJRyxNQUFNLEtBQUssSUFBSSxJQUFJZCxLQUFBLENBQUthLGVBQWUsQ0FBQyxDQUFDLEVBQUU7UUFDN0NDLE1BQU0sR0FBR2QsS0FBQSxDQUFLNEIsZUFBZSxDQUFDLENBQUM7TUFDakM7TUFFQSxJQUFJZCxNQUFNLEtBQUssSUFBSSxFQUFFO1FBQ25CLE9BQU9kLEtBQUEsQ0FBSzBCLGlCQUFpQixDQUFDWixNQUFNLEVBQUVDLEtBQUssQ0FBQztNQUM5QztJQUNGLENBQUM7SUFBQSxJQUFBYixnQkFBQSxhQUFBRixLQUFBLGNBRVUsWUFBTTtNQUNmLElBQU02QixNQUFNLEdBQUcsQ0FBQyxDQUFDO01BRWpCQSxNQUFNLENBQUNDLG1CQUFRLENBQUNDLFNBQVMsQ0FBQyxHQUFHL0IsS0FBQSxDQUFLZ0MsS0FBSztNQUN2Q0gsTUFBTSxDQUFDQyxtQkFBUSxDQUFDRyxXQUFXLENBQUMsR0FBR2pDLEtBQUEsQ0FBS2tDLE9BQU87TUFDM0NMLE1BQU0sQ0FBQ0MsbUJBQVEsQ0FBQ0ssYUFBYSxDQUFDLEdBQUdOLE1BQU0sQ0FBQ0MsbUJBQVEsQ0FBQ00sWUFBWSxDQUFDLEdBQUdwQyxLQUFBLENBQUtxQyxRQUFRO01BQzlFUixNQUFNLENBQUNDLG1CQUFRLENBQUNRLGFBQWEsQ0FBQyxHQUFHdEMsS0FBQSxDQUFLdUMsU0FBUztNQUMvQ1YsTUFBTSxDQUFDQyxtQkFBUSxDQUFDVSxVQUFVLENBQUMsR0FBR3hDLEtBQUEsQ0FBS3lDLE1BQU07TUFFekMsT0FBT1osTUFBTTtJQUNmLENBQUM7SUFBQSxJQUFBM0IsZ0JBQUEsYUFBQUYsS0FBQSxVQUVNLFVBQUEwQyxLQUFLLEVBQUk7TUFDZCxJQUFJLENBQUMxQyxLQUFBLENBQUsyQyxRQUFRLENBQUMsQ0FBQyxFQUFFO1FBQ3BCO01BQ0Y7TUFDQSxJQUFJQyxRQUFRLEdBQ1Y1QyxLQUFBLENBQUtYLEtBQUssQ0FBQ3NDLGNBQWMsS0FBSyxJQUFJLEdBQzlCZSxLQUFLLEtBQUssQ0FBQyxHQUNULENBQUMsR0FDREEsS0FBSyxHQUNQMUMsS0FBQSxDQUFLWCxLQUFLLENBQUNzQyxjQUFjLEdBQUdlLEtBQUs7TUFDdkMsSUFBSS9DLE1BQU0sR0FBR0ssS0FBQSxDQUFLaEQsS0FBSyxDQUFDNkYsVUFBVSxHQUM5QjdDLEtBQUEsQ0FBS1gsS0FBSyxDQUFDc0IsYUFBYSxDQUFDbUMsS0FBSyxDQUFDLENBQUMsRUFBRTlDLEtBQUEsQ0FBS2hELEtBQUssQ0FBQzZGLFVBQVUsQ0FBQyxDQUFDbEQsTUFBTSxHQUMvREssS0FBQSxDQUFLWCxLQUFLLENBQUNzQixhQUFhLENBQUNoQixNQUFNO01BQ25DLElBQUlLLEtBQUEsQ0FBS2EsZUFBZSxDQUFDLENBQUMsRUFBRTtRQUMxQmxCLE1BQU0sSUFBSSxDQUFDO01BQ2I7TUFFQSxJQUFJaUQsUUFBUSxHQUFHLENBQUMsRUFBRTtRQUNoQkEsUUFBUSxJQUFJakQsTUFBTTtNQUNwQixDQUFDLE1BQU0sSUFBSWlELFFBQVEsSUFBSWpELE1BQU0sRUFBRTtRQUM3QmlELFFBQVEsSUFBSWpELE1BQU07TUFDcEI7TUFFQUssS0FBQSxDQUFLa0IsUUFBUSxDQUFDO1FBQUNTLGNBQWMsRUFBRWlCO01BQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQSxJQUFBMUMsZ0JBQUEsYUFBQUYsS0FBQSxhQUVTLFlBQU07TUFDZEEsS0FBQSxDQUFLK0MsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7SUFBQSxJQUFBN0MsZ0JBQUEsYUFBQUYsS0FBQSxXQUVPLFlBQU07TUFDWkEsS0FBQSxDQUFLK0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUFBLElBQUE3QyxnQkFBQSxhQUFBRixLQUFBLGVBRXVELFVBQUFlLEtBQUssRUFBSTtNQUMvRCxJQUFJZixLQUFBLENBQUtoRCxLQUFLLENBQUNnRyxRQUFRLEVBQUU7UUFDdkJoRCxLQUFBLENBQUtoRCxLQUFLLENBQUNnRyxRQUFRLENBQUNqQyxLQUFLLENBQUM7TUFDNUI7TUFFQWYsS0FBQSxDQUFLaUQsbUJBQW1CLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQUEsSUFBQS9DLGdCQUFBLGFBQUFGLEtBQUEsZ0JBRXdELFVBQUFlLEtBQUssRUFBSTtNQUNoRTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUNmLEtBQUEsQ0FBSzJDLFFBQVEsQ0FBQyxDQUFDLElBQUk1QixLQUFLLENBQUNtQyxRQUFRLEVBQUU7UUFBQSxJQUFBQyxzQkFBQSxFQUFBQyxZQUFBO1FBQ3RDLFFBQUFELHNCQUFBLEdBQU8sQ0FBQUMsWUFBQSxHQUFBcEQsS0FBQSxDQUFLaEQsS0FBSyxFQUFDeUUsU0FBUyxjQUFBMEIsc0JBQUEsdUJBQXBCQSxzQkFBQSxDQUFBekgsSUFBQSxDQUFBMEgsWUFBQSxFQUF1QnJDLEtBQUssQ0FBQztNQUN0QztNQUVBLElBQU1zQyxPQUFPLEdBQUdyRCxLQUFBLENBQUtzRCxRQUFRLENBQUMsQ0FBQyxDQUFDdkMsS0FBSyxDQUFDd0MsT0FBTyxDQUFDO01BRTlDLElBQUlGLE9BQU8sRUFBRTtRQUNYQSxPQUFPLENBQUN0QyxLQUFLLENBQUM7TUFDaEIsQ0FBQyxNQUFNO1FBQUEsSUFBQXlDLHNCQUFBLEVBQUFDLFlBQUE7UUFDTCxRQUFBRCxzQkFBQSxHQUFPLENBQUFDLFlBQUEsR0FBQXpELEtBQUEsQ0FBS2hELEtBQUssRUFBQ3lFLFNBQVMsY0FBQStCLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBQTlILElBQUEsQ0FBQStILFlBQUEsRUFBdUIxQyxLQUFLLENBQUM7TUFDdEM7TUFDQTtNQUNBQSxLQUFLLENBQUMyQyxjQUFjLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQUEsSUFBQXhELGdCQUFBLGFBQUFGLEtBQUEsY0FFbUQsVUFBQWUsS0FBSyxFQUFJO01BQzNEZixLQUFBLENBQUtrQixRQUFRLENBQUM7UUFBQ3RCLFNBQVMsRUFBRTtNQUFJLENBQUMsQ0FBQztNQUNoQyxJQUFJSSxLQUFBLENBQUtoRCxLQUFLLENBQUMyRyxPQUFPLEVBQUU7UUFDdEIsT0FBTzNELEtBQUEsQ0FBS2hELEtBQUssQ0FBQzJHLE9BQU8sQ0FBQzVDLEtBQUssQ0FBQztNQUNsQztJQUNGLENBQUM7SUFBQSxJQUFBYixnQkFBQSxhQUFBRixLQUFBLGFBRW9ELFVBQUFlLEtBQUssRUFBSTtNQUM1RGYsS0FBQSxDQUFLa0IsUUFBUSxDQUFDO1FBQUN0QixTQUFTLEVBQUU7TUFBSyxDQUFDLENBQUM7TUFDakMsSUFBSUksS0FBQSxDQUFLaEQsS0FBSyxDQUFDNEcsTUFBTSxFQUFFO1FBQ3JCLE9BQU81RCxLQUFBLENBQUtoRCxLQUFLLENBQUM0RyxNQUFNLENBQUM3QyxLQUFLLENBQUM7TUFDakM7SUFDRixDQUFDO0lBOU9DZixLQUFBLENBQUtYLEtBQUssR0FBRztNQUNYO01BQ0FzQixhQUFhLEVBQUVYLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3VCLE9BQU8sSUFBSSxFQUFFO01BRXZDO01BQ0FtQyxVQUFVLEVBQUVWLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3NCLEtBQUssSUFBSTBCLEtBQUEsQ0FBS2hELEtBQUssQ0FBQzZHLFlBQVk7TUFFdkQ7TUFDQTFDLFNBQVMsRUFBRW5CLEtBQUEsQ0FBS2hELEtBQUssQ0FBQ3NCLEtBQUs7TUFFM0I7TUFDQXFELGNBQWMsRUFBRSxJQUFJO01BRXBCO01BQ0E7TUFDQS9CLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFBQyxPQUFBSSxLQUFBO0VBQ0o7RUFBQyxJQUFBOEQsVUFBQSxhQUFBaEUsU0FBQSxFQUFBQyxVQUFBO0VBQUEsV0FBQWdFLGFBQUEsYUFBQWpFLFNBQUE7SUFBQWtFLEdBQUE7SUFBQTFGLEtBQUEsRUFFRCxTQUFBMkYsaUJBQWlCQSxDQUFBLEVBQUc7TUFDbEI7TUFDQSxJQUFJLElBQUksQ0FBQ2pILEtBQUssQ0FBQ2tILFNBQVMsRUFBRTtRQUN4QixJQUFJLElBQUksQ0FBQzlELEtBQUssQ0FBQ0MsT0FBTyxFQUFFO1VBQ3RCLElBQUksQ0FBQ0QsS0FBSyxDQUFDQyxPQUFPLENBQUNDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsTUFBTTtVQUFBLElBQUE2RCxrQkFBQTtVQUNMLENBQUFBLGtCQUFBLE9BQUksQ0FBQ0MsSUFBSSxDQUFDL0QsT0FBTyxjQUFBOEQsa0JBQUEsZUFBakJBLGtCQUFBLENBQW1CN0QsS0FBSyxDQUFDLENBQUM7UUFDNUI7TUFDRjtJQUNGO0VBQUM7SUFBQTBELEdBQUE7SUFBQTFGLEtBQUEsRUF1QkQsU0FBQStGLCtCQUErQkEsQ0FBQSxFQUFHO01BQ2hDLElBQUFDLHFCQUFBLEdBQWtFLElBQUksQ0FBQ3RILEtBQUssQ0FBckV1SCxtQkFBbUI7UUFBRUMsbUJBQW1CLEdBQUFGLHFCQUFBLGNBQUdHLHdCQUFZLEdBQUFILHFCQUFBO01BQzlELG9CQUNFOUssTUFBQSxZQUFBa0wsYUFBQSxDQUFDRixtQkFBbUI7UUFDbEJHLFlBQVksRUFBRSxJQUFJLENBQUMzSCxLQUFLLENBQUMySCxZQUFhO1FBQ3RDcEcsT0FBTyxFQUFFLElBQUksQ0FBQ2MsS0FBSyxDQUFDc0IsYUFBYztRQUNsQ2lFLG1CQUFtQixFQUFFLEtBQU07UUFDM0JDLHVCQUF1QixFQUFFLElBQUksQ0FBQzdILEtBQUssQ0FBQzZILHVCQUF3QjtRQUM1RHpELGdCQUFnQixFQUFFLElBQUksQ0FBQ00saUJBQWtCO1FBQ3pDakIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDekQsS0FBSyxDQUFDeUQsaUJBQWtCO1FBQ2hEcUUsV0FBVyxFQUFFLElBQUksQ0FBQ2xELGVBQWUsQ0FBQyxDQUFFO1FBQ3BDbUQsYUFBYSxFQUFFLElBQUksQ0FBQy9ILEtBQUssQ0FBQytILGFBQWM7UUFDeENDLHVCQUF1QixFQUFFLElBQUksQ0FBQ2hJLEtBQUssQ0FBQ2dJLHVCQUF3QjtRQUM1REMseUJBQXlCLEVBQUUsSUFBSSxDQUFDakksS0FBSyxDQUFDaUkseUJBQTBCO1FBQ2hFdEQsY0FBYyxFQUFFLElBQUksQ0FBQ3RDLEtBQUssQ0FBQ3NDLGNBQWU7UUFDMUN1RCxpQkFBaUIsRUFBRSxJQUFJLENBQUNsSSxLQUFLLENBQUNrSSxpQkFBa0I7UUFDaERDLGFBQWEsRUFBRSxJQUFJLENBQUNuSSxLQUFLLENBQUNtSSxhQUFjO1FBQ3hDQyxhQUFhLEVBQUUsSUFBSSxDQUFDcEksS0FBSyxDQUFDb0ksYUFBYztRQUN4Q25JLEtBQUssRUFBRSxJQUFJLENBQUNELEtBQUssQ0FBQ0M7TUFBTSxDQUN6QixDQUFDO0lBRU47RUFBQztJQUFBK0csR0FBQTtJQUFBMUYsS0FBQSxFQUVELFNBQUFnRCxZQUFZQSxDQUFBLEVBQUc7TUFDYixJQUFJckMsS0FBb0IsR0FBRyxJQUFJLENBQUNJLEtBQUssQ0FBQ3NDLGNBQWM7TUFDcEQsSUFBSTFDLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTyxJQUFJO01BQ2I7TUFDQUEsS0FBSyxHQUFHdUIsTUFBTSxDQUFDdkIsS0FBSyxDQUFDO01BRXJCLElBQUksSUFBSSxDQUFDNEIsZUFBZSxDQUFDLENBQUMsRUFBRTtRQUMxQixJQUFJNUIsS0FBSyxLQUFLLENBQUMsRUFBRTtVQUNmLE9BQU8sSUFBSSxDQUFDSSxLQUFLLENBQUNxQixVQUFVO1FBQzlCO1FBQ0F6QixLQUFLLEVBQUU7TUFDVDtNQUNBLElBQUksSUFBSSxDQUFDb0csZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO1FBQUEsSUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7UUFDM0IsT0FBT3ZHLEtBQUssR0FBR3VCLE1BQU0sRUFBQThFLHFCQUFBLEdBQUMsSUFBSSxDQUFDdEksS0FBSyxDQUFDMkgsWUFBWSxjQUFBVyxxQkFBQSx1QkFBdkJBLHFCQUFBLENBQXlCM0YsTUFBTSxDQUFDLElBQUE0RixzQkFBQSxHQUNsRCxJQUFJLENBQUN2SSxLQUFLLENBQUMySCxZQUFZLGNBQUFZLHNCQUFBLHVCQUF2QkEsc0JBQUEsQ0FBMEJ0RyxLQUFLLENBQUMsR0FDaEMsSUFBSSxDQUFDSSxLQUFLLENBQUNzQixhQUFhLENBQUMxQixLQUFLLEdBQUd1QixNQUFNLEVBQUFnRixzQkFBQSxHQUFDLElBQUksQ0FBQ3hJLEtBQUssQ0FBQzJILFlBQVksY0FBQWEsc0JBQUEsdUJBQXZCQSxzQkFBQSxDQUF5QjdGLE1BQU0sQ0FBQyxDQUFDO01BQy9FO01BQ0EsT0FBTyxJQUFJLENBQUNOLEtBQUssQ0FBQ3NCLGFBQWEsQ0FBQzFCLEtBQUssQ0FBQztJQUN4QztFQUFDO0lBQUErRSxHQUFBO0lBQUExRixLQUFBLEVBbUpELFNBQUFtSCxrQkFBa0JBLENBQUEsRUFBRztNQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDekksS0FBSyxDQUFDMEksSUFBSSxFQUFFO1FBQ3BCLE9BQU8sSUFBSTtNQUNiO01BRUEsb0JBQU9sTSxNQUFBLFlBQUFrTCxhQUFBO1FBQU9pQixJQUFJLEVBQUMsUUFBUTtRQUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDMUksS0FBSyxDQUFDMEksSUFBSztRQUFDcEgsS0FBSyxFQUFFLElBQUksQ0FBQ2UsS0FBSyxDQUFDOEI7TUFBVSxDQUFFLENBQUM7SUFDcEY7RUFBQztJQUFBNkMsR0FBQTtJQUFBMUYsS0FBQSxFQUVELFNBQUFxRSxRQUFRQSxDQUFBLEVBQUc7TUFDVCxPQUFPLElBQUksQ0FBQ3RELEtBQUssQ0FBQ3NCLGFBQWEsQ0FBQ2hCLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDa0IsZUFBZSxDQUFDLENBQUM7SUFDdEU7RUFBQztJQUFBbUQsR0FBQTtJQUFBMUYsS0FBQSxFQUVELFNBQUErRyxnQkFBZ0JBLENBQUEsRUFBRztNQUNqQixPQUFPTyxLQUFLLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUM3SSxLQUFLLENBQUMySCxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMzSCxLQUFLLENBQUMySCxZQUFZLENBQUNoRixNQUFNO0lBQ2pGO0VBQUM7SUFBQXFFLEdBQUE7SUFBQTFGLEtBQUEsRUFFRCxTQUFBd0gsTUFBTUEsQ0FBQSxFQUFHO01BQUEsSUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7TUFDUCxJQUFNQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ3ZCQSxZQUFZLEVBQUFGLHFCQUFBLEdBQUMsSUFBSSxDQUFDL0ksS0FBSyxDQUFDK0gsYUFBYSxjQUFBZ0IscUJBQUEsdUJBQXhCQSxxQkFBQSxDQUEwQnJJLEtBQUssQ0FBQyxHQUFHcEIsT0FBTyxFQUFBMEosc0JBQUEsR0FBQyxJQUFJLENBQUNoSixLQUFLLENBQUMrSCxhQUFhLGNBQUFpQixzQkFBQSx1QkFBeEJBLHNCQUFBLENBQTBCdEksS0FBSyxDQUFDO01BQ3hGLElBQU13SSxjQUFjLEdBQUcsSUFBQUMsc0JBQVUsRUFBQ0YsWUFBWSxDQUFDO01BRS9DLElBQU1HLE9BQU8sT0FBQWxHLGdCQUFBLGlCQUNWekQsYUFBYSxFQUFHLElBQUksQ0FBQ08sS0FBSyxDQUFDa0ksaUJBQWlCLENBQzlDO01BQ0RrQixPQUFPLENBQUMsSUFBSSxDQUFDcEosS0FBSyxDQUFDUSxTQUFTLEdBQUcsSUFBSSxDQUFDUixLQUFLLENBQUNRLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBR2xCLE9BQU8sQ0FBQyxJQUFJLENBQUNVLEtBQUssQ0FBQ1EsU0FBUyxDQUFDO01BQ3pGLElBQU02SSxTQUFTLEdBQUcsSUFBQUYsc0JBQVUsRUFBQ0MsT0FBTyxDQUFDO01BRXJDLG9CQUNFNU0sTUFBQSxZQUFBa0wsYUFBQSxDQUFDaEksZ0JBQWdCO1FBQ2ZjLFNBQVMsRUFBRTZJLFNBQVU7UUFDckJDLEdBQUcsRUFBRSxJQUFJLENBQUNsQyxJQUFLO1FBQ2ZtQyxRQUFRLEVBQUUsQ0FBRTtRQUNaOUUsU0FBUyxFQUFFLElBQUksQ0FBQytFLFVBQVc7UUFDM0JDLFVBQVUsRUFBRSxJQUFJLENBQUN6SixLQUFLLENBQUN5SixVQUFXO1FBQ2xDQyxPQUFPLEVBQUUsSUFBSSxDQUFDMUosS0FBSyxDQUFDMEosT0FBUTtRQUM1Qi9DLE9BQU8sRUFBRSxJQUFJLENBQUNnRCxRQUFTO1FBQ3ZCMUosS0FBSyxFQUFFLElBQUksQ0FBQ0QsS0FBSyxDQUFDQztNQUFNLEdBRXZCLElBQUksQ0FBQ3dJLGtCQUFrQixDQUFDLENBQUMsRUFDekIsSUFBSSxDQUFDekksS0FBSyxDQUFDdUMsVUFBVSxnQkFDcEIvRixNQUFBLFlBQUFrTCxhQUFBLENBQUNwSCxRQUFRLHFCQUNQOUQsTUFBQSxZQUFBa0wsYUFBQSxDQUFDakgsY0FBYyxNQUFBbUosU0FBQTtRQUNiTixHQUFHLEVBQUUsSUFBSSxDQUFDbEcsS0FBTTtRQUNoQnVGLElBQUksRUFBQyxNQUFNO1FBQ1hrQixRQUFRLEVBQUUsSUFBSSxDQUFDN0osS0FBSyxDQUFDNko7TUFBUyxHQUMxQixJQUFJLENBQUM3SixLQUFLLENBQUM4SixVQUFVO1FBQ3pCQyxXQUFXLEVBQUUsSUFBSSxDQUFDL0osS0FBSyxDQUFDK0osV0FBWTtRQUNwQ3ZKLFNBQVMsRUFBRTBJLGNBQWU7UUFDMUI1SCxLQUFLLEVBQUUsSUFBSSxDQUFDZSxLQUFLLENBQUNxQixVQUFXO1FBQzdCc0MsUUFBUSxFQUFFLElBQUksQ0FBQ2dFLFNBQVU7UUFDekJwRCxNQUFNLEVBQUUsSUFBSSxDQUFDcUQsT0FBUTtRQUNyQmhLLEtBQUssRUFBRSxJQUFJLENBQUNELEtBQUssQ0FBQ0M7TUFBTSxFQUN6QixDQUFDLGVBQ0Z6RCxNQUFBLFlBQUFrTCxhQUFBLENBQUMzRyxTQUFTLHFCQUNSdkUsTUFBQSxZQUFBa0wsYUFBQSxNQUFNMUgsS0FBSyxDQUFDa0ssU0FBUztRQUFDQyxNQUFNLEVBQUM7TUFBTSxDQUFFLENBQzVCLENBQ0gsQ0FBQyxHQUNULElBQUksRUFDUCxJQUFJLENBQUM5QywrQkFBK0IsQ0FBQyxDQUN0QixDQUFDO0lBRXZCO0VBQUM7SUFBQUwsR0FBQTtJQUFBMUYsS0FBQSxFQTlURCxTQUFPOEksd0JBQXdCQSxDQUFDcEssS0FBSyxFQUFFcUMsS0FBSyxFQUFFO01BQzVDLElBQUlyQyxLQUFLLENBQUN1QixPQUFPLEtBQUtjLEtBQUssQ0FBQ2dJLFdBQVcsRUFBRTtRQUN2QyxPQUFPLENBQUMsQ0FBQztNQUNYOztNQUVBO01BQ0EsSUFBTTFHLGFBQWEsR0FBR3ZCLGtCQUFrQixDQUFDQyxLQUFLLENBQUNxQixVQUFVLEVBQUUxRCxLQUFLLEVBQUVxQyxLQUFLLENBQUM7TUFFeEUsT0FBTztRQUNMc0IsYUFBYSxFQUFiQSxhQUFhO1FBQ2IwRyxXQUFXLEVBQUVySyxLQUFLLENBQUN1QjtNQUNyQixDQUFDO0lBQ0g7RUFBQztBQUFBLEVBakRxQitJLGdCQUFTO0FBQUEsSUFBQXBILGdCQUFBLGFBQTNCSixTQUFTLGtCQUNTO0VBQ3BCdkIsT0FBTyxFQUFFLEVBQUU7RUFDWHdHLGFBQWEsRUFBRTtJQUNid0MsT0FBTyxFQUFFLGVBQWU7SUFDeEI3SixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCOEosUUFBUSxFQUFFLFlBQVk7SUFDdEJDLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFDRGhILGlCQUFpQixFQUFFLENBQUM7RUFDcEJvRCxZQUFZLEVBQUUsRUFBRTtFQUNoQnZGLEtBQUssRUFBRSxFQUFFO0VBQ1R5SSxXQUFXLEVBQUUsRUFBRTtFQUNmRixRQUFRLEVBQUUsS0FBSztFQUNmYSxRQUFRLEVBQUUsS0FBSztFQUNmWixVQUFVLEVBQUUsQ0FBQyxDQUFDO0VBQ2QxRixnQkFBZ0IsRUFBRXZCLElBQUk7RUFDdEJtRCxRQUFRLEVBQUVuRCxJQUFJO0VBQ2Q0QixTQUFTLEVBQUU1QixJQUFJO0VBQ2Y0RyxVQUFVLEVBQUU1RyxJQUFJO0VBQ2hCNkcsT0FBTyxFQUFFN0csSUFBSTtFQUNiOEQsT0FBTyxFQUFFOUQsSUFBSTtFQUNiK0QsTUFBTSxFQUFFL0QsSUFBSTtFQUNaMUIsWUFBWSxFQUFFLElBQUk7RUFDbEJELGFBQWEsRUFBRSxJQUFJO0VBQ25CeUosa0JBQWtCLEVBQUUsSUFBSTtFQUN4QnpDLGlCQUFpQixFQUFFLElBQUk7RUFDdkJYLG1CQUFtQixFQUFFRSx3QkFBWTtFQUNqQ08sdUJBQXVCLEVBQUU0QyxzQkFBUTtFQUNqQ1YsU0FBUyxFQUFFVyxhQUFNO0VBQ2pCNUMseUJBQXlCLEVBQUUsSUFBSTtFQUMvQjNGLG9CQUFvQixFQUFFLElBQUk7RUFDMUJDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCc0YsdUJBQXVCLEVBQUUsSUFBSTtFQUM3QlgsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUFBLElBQUE0RCxRQUFBLEdBQUFDLE9BQUEsY0FtVVlqSSxTQUFTIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { Component, ReactElement } from 'react';
|
|
2
|
+
export declare enum LayoutSplitterMode {
|
|
3
|
+
VERTICAL = "VERTICAL",
|
|
4
|
+
HORIZONTAL = "HORIZONTAL"
|
|
5
|
+
}
|
|
6
|
+
export interface VirtualElement {
|
|
7
|
+
top: number;
|
|
8
|
+
left: number;
|
|
9
|
+
bottom: number;
|
|
10
|
+
right: number;
|
|
11
|
+
}
|
|
12
|
+
export interface LayoutSplitterProps {
|
|
13
|
+
size?: number;
|
|
14
|
+
color?: string;
|
|
15
|
+
shadowColor?: string;
|
|
16
|
+
mode: LayoutSplitterMode;
|
|
17
|
+
referenceElement: HTMLElement | VirtualElement;
|
|
18
|
+
renderHandle?: () => ReactElement;
|
|
19
|
+
percentageSplit: number;
|
|
20
|
+
resizeThrottleDelay?: number;
|
|
21
|
+
onMove?: (percentageSplit: number) => void;
|
|
22
|
+
onRelease?: (percentageSplit: number) => void;
|
|
23
|
+
}
|
|
24
|
+
export default class LayoutSplitter extends Component<LayoutSplitterProps> {
|
|
25
|
+
static defaultProps: {
|
|
26
|
+
mode: LayoutSplitterMode;
|
|
27
|
+
size: number;
|
|
28
|
+
resizeThrottleDelay: number;
|
|
29
|
+
};
|
|
30
|
+
componentDidMount(): void;
|
|
31
|
+
componentWillUnmount(): void;
|
|
32
|
+
ref: React.RefObject<HTMLDivElement | null>;
|
|
33
|
+
dragging: boolean;
|
|
34
|
+
getReferenceBoundingBox(): VirtualElement | undefined;
|
|
35
|
+
getNextValue(clientX: number, clientY: number): number;
|
|
36
|
+
handlePointerDown: (evt: React.PointerEvent) => void;
|
|
37
|
+
handlePointerMove: (evt: React.PointerEvent) => void;
|
|
38
|
+
handlePointerUp: (evt: React.PointerEvent) => void;
|
|
39
|
+
handleResize: () => void;
|
|
40
|
+
renderHandle(): React.ReactNode;
|
|
41
|
+
getPositioningStyle(): {
|
|
42
|
+
[x: string]: number;
|
|
43
|
+
};
|
|
44
|
+
render(): React.ReactNode;
|
|
45
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = exports.LayoutSplitterMode = void 0;
|
|
9
|
+
var _readOnlyError2 = _interopRequireDefault(require("@babel/runtime/helpers/readOnlyError"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
17
|
+
var _d3Scale = require("d3-scale");
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
20
|
+
var _utils = require("@kepler.gl/utils");
|
|
21
|
+
var _templateObject; // SPDX-License-Identifier: MIT
|
|
22
|
+
// Copyright contributors to the kepler.gl project
|
|
23
|
+
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); }
|
|
24
|
+
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; }
|
|
25
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
26
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
27
|
+
var LayoutSplitterMode = exports.LayoutSplitterMode = /*#__PURE__*/function (LayoutSplitterMode) {
|
|
28
|
+
LayoutSplitterMode["VERTICAL"] = "VERTICAL";
|
|
29
|
+
LayoutSplitterMode["HORIZONTAL"] = "HORIZONTAL";
|
|
30
|
+
return LayoutSplitterMode;
|
|
31
|
+
}({});
|
|
32
|
+
var Layout = _styledComponents["default"].div(function (props) {
|
|
33
|
+
return "\n position: absolute;\n z-index: 3;\n touch-action: none;\n & > .splitter {\n box-shadow: 0 0 2px ".concat(props.shadowColor || 'rgba(0, 0, 0, 0.3)', ";\n transition: box-shadow 0.3s ease;\n }\n &:hover > .splitter {\n box-shadow: 0 0 10px ").concat(props.shadowColor || 'rgba(0, 0, 0, 0.3)', ";\n }\n ").concat(props.mode === LayoutSplitterMode.VERTICAL ? "width: 20px;\n margin-left: -10px;\n height: 100%;\n top: 0;\n cursor: ew-resize;" : "width: 100%;\n height: 20px;\n margin-top: -10px;\n left: 0;\n cursor: ns-resize;", "\n");
|
|
34
|
+
});
|
|
35
|
+
var SplitterLine = _styledComponents["default"].div(function (props) {
|
|
36
|
+
return "\n position: absolute;\n background: ".concat(props.color || '#FFFFFF', ";\n ").concat(props.mode === LayoutSplitterMode.VERTICAL ? "left: 50%;\n transform: translateX(-50%);\n width: ".concat(props.size, "px;\n height: 100%;\n ") : "top: 50%;\n transform: translateY(-50%);\n height: ".concat(props.size, "px;\n width: 100%;\n "));
|
|
37
|
+
});
|
|
38
|
+
var HandleWrapper = _styledComponents["default"].div(function (_ref) {
|
|
39
|
+
var mode = _ref.mode;
|
|
40
|
+
return "\n position: absolute;\n left: 50%;\n transform: translate(-50%,-50%);\n ".concat(mode === LayoutSplitterMode.VERTICAL ? 'top: 50%;' : 'left: 50%;', "\n");
|
|
41
|
+
});
|
|
42
|
+
var Handle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: 36px;\n height: 36px;\n align-items: center;\n justify-content: center;\n padding: 4px;\n background-color: ", ";\n color: ", ";\n border: 2px solid #FFFFFF;\n border-radius: 50%;\n background-position: center;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n"])), function (props) {
|
|
43
|
+
return props.theme.panelBackground || '#29323C';
|
|
44
|
+
}, function (props) {
|
|
45
|
+
return props.theme.textColor || '#FFFFFF';
|
|
46
|
+
});
|
|
47
|
+
var ArrowIcon = function ArrowIcon(_ref2) {
|
|
48
|
+
var _ref2$size = _ref2.size,
|
|
49
|
+
size = _ref2$size === void 0 ? 20 : _ref2$size,
|
|
50
|
+
mode = _ref2.mode;
|
|
51
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
52
|
+
width: size,
|
|
53
|
+
height: size,
|
|
54
|
+
viewBox: "-15 -15 30 30"
|
|
55
|
+
}, /*#__PURE__*/_react["default"].createElement("g", {
|
|
56
|
+
transform: mode === LayoutSplitterMode.HORIZONTAL ? 'rotate(90)' : ''
|
|
57
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
58
|
+
d: "M-15,0 L-5,-6 L-5,6Z",
|
|
59
|
+
fill: "currentColor"
|
|
60
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
61
|
+
d: "M15,0 L5,-6 L5,6Z",
|
|
62
|
+
fill: "currentColor"
|
|
63
|
+
})));
|
|
64
|
+
};
|
|
65
|
+
var LayoutSplitter = exports["default"] = /*#__PURE__*/function (_Component) {
|
|
66
|
+
function LayoutSplitter() {
|
|
67
|
+
var _this;
|
|
68
|
+
(0, _classCallCheck2["default"])(this, LayoutSplitter);
|
|
69
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
70
|
+
args[_key] = arguments[_key];
|
|
71
|
+
}
|
|
72
|
+
_this = _callSuper(this, LayoutSplitter, [].concat(args));
|
|
73
|
+
(0, _defineProperty2["default"])(_this, "ref", /*#__PURE__*/(0, _react.createRef)());
|
|
74
|
+
(0, _defineProperty2["default"])(_this, "dragging", false);
|
|
75
|
+
(0, _defineProperty2["default"])(_this, "handlePointerDown", function (evt) {
|
|
76
|
+
evt.stopPropagation();
|
|
77
|
+
evt.preventDefault();
|
|
78
|
+
_this.dragging = true;
|
|
79
|
+
evt.currentTarget.setPointerCapture(evt.pointerId);
|
|
80
|
+
});
|
|
81
|
+
(0, _defineProperty2["default"])(_this, "handlePointerMove", function (evt) {
|
|
82
|
+
if (!_this.dragging) return;
|
|
83
|
+
evt.stopPropagation();
|
|
84
|
+
evt.preventDefault();
|
|
85
|
+
var nextValue = _this.getNextValue(evt.clientX, evt.clientY);
|
|
86
|
+
var _this$props = _this.props,
|
|
87
|
+
percentageSplit = _this$props.percentageSplit,
|
|
88
|
+
onMove = _this$props.onMove;
|
|
89
|
+
if (nextValue !== percentageSplit && onMove) {
|
|
90
|
+
onMove(nextValue);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
(0, _defineProperty2["default"])(_this, "handlePointerUp", function (evt) {
|
|
94
|
+
if (!_this.dragging) return;
|
|
95
|
+
evt.stopPropagation();
|
|
96
|
+
evt.preventDefault();
|
|
97
|
+
_this.dragging = false;
|
|
98
|
+
evt.currentTarget.releasePointerCapture(evt.pointerId);
|
|
99
|
+
var nextValue = _this.getNextValue(evt.clientX, evt.clientY);
|
|
100
|
+
var _this$props2 = _this.props,
|
|
101
|
+
percentageSplit = _this$props2.percentageSplit,
|
|
102
|
+
onMove = _this$props2.onMove,
|
|
103
|
+
onRelease = _this$props2.onRelease;
|
|
104
|
+
if (nextValue !== percentageSplit && onMove) {
|
|
105
|
+
onMove(nextValue);
|
|
106
|
+
}
|
|
107
|
+
if (onRelease) onRelease(nextValue);
|
|
108
|
+
});
|
|
109
|
+
(0, _defineProperty2["default"])(_this, "handleResize", function () {
|
|
110
|
+
_this.forceUpdate();
|
|
111
|
+
});
|
|
112
|
+
return _this;
|
|
113
|
+
}
|
|
114
|
+
(0, _inherits2["default"])(LayoutSplitter, _Component);
|
|
115
|
+
return (0, _createClass2["default"])(LayoutSplitter, [{
|
|
116
|
+
key: "componentDidMount",
|
|
117
|
+
value: function componentDidMount() {
|
|
118
|
+
var _this$props3 = this.props,
|
|
119
|
+
referenceElement = _this$props3.referenceElement,
|
|
120
|
+
resizeThrottleDelay = _this$props3.resizeThrottleDelay;
|
|
121
|
+
if (referenceElement instanceof HTMLElement) {
|
|
122
|
+
(0, _utils.observeDimensions)(referenceElement, this.handleResize, resizeThrottleDelay);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}, {
|
|
126
|
+
key: "componentWillUnmount",
|
|
127
|
+
value: function componentWillUnmount() {
|
|
128
|
+
var referenceElement = this.props.referenceElement;
|
|
129
|
+
if (referenceElement instanceof HTMLElement) {
|
|
130
|
+
(0, _utils.unobserveDimensions)(referenceElement);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, {
|
|
134
|
+
key: "getReferenceBoundingBox",
|
|
135
|
+
value: function getReferenceBoundingBox() {
|
|
136
|
+
var referenceElement = this.props.referenceElement;
|
|
137
|
+
if (referenceElement instanceof HTMLElement) {
|
|
138
|
+
if (referenceElement.getBoundingClientRect) {
|
|
139
|
+
return referenceElement.getBoundingClientRect();
|
|
140
|
+
}
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
return referenceElement;
|
|
144
|
+
}
|
|
145
|
+
}, {
|
|
146
|
+
key: "getNextValue",
|
|
147
|
+
value: function getNextValue(clientX, clientY) {
|
|
148
|
+
var mode = this.props.mode;
|
|
149
|
+
var bbox = this.getReferenceBoundingBox();
|
|
150
|
+
if (!bbox) return this.props.percentageSplit;
|
|
151
|
+
var left = bbox.left,
|
|
152
|
+
right = bbox.right,
|
|
153
|
+
top = bbox.top,
|
|
154
|
+
bottom = bbox.bottom;
|
|
155
|
+
var scale = (0, _d3Scale.scaleLinear)().domain([0, 100]).clamp(true);
|
|
156
|
+
if (mode === LayoutSplitterMode.VERTICAL) {
|
|
157
|
+
scale.range([left, right]);
|
|
158
|
+
return scale.invert(clientX);
|
|
159
|
+
} else {
|
|
160
|
+
scale.range([top, bottom]);
|
|
161
|
+
return scale.invert(clientY);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}, {
|
|
165
|
+
key: "renderHandle",
|
|
166
|
+
value: function renderHandle() {
|
|
167
|
+
var _this$props4 = this.props,
|
|
168
|
+
mode = _this$props4.mode,
|
|
169
|
+
renderHandle = _this$props4.renderHandle;
|
|
170
|
+
return /*#__PURE__*/_react["default"].createElement(HandleWrapper, {
|
|
171
|
+
mode: mode
|
|
172
|
+
}, renderHandle ? renderHandle() : /*#__PURE__*/_react["default"].createElement(Handle, null, /*#__PURE__*/_react["default"].createElement(ArrowIcon, {
|
|
173
|
+
mode: mode
|
|
174
|
+
})));
|
|
175
|
+
}
|
|
176
|
+
}, {
|
|
177
|
+
key: "getPositioningStyle",
|
|
178
|
+
value: function getPositioningStyle() {
|
|
179
|
+
var _this$props5 = this.props,
|
|
180
|
+
mode = _this$props5.mode,
|
|
181
|
+
percentageSplit = _this$props5.percentageSplit;
|
|
182
|
+
var bbox = this.getReferenceBoundingBox();
|
|
183
|
+
if (!bbox) return (0, _defineProperty2["default"])({}, mode === LayoutSplitterMode.VERTICAL ? 'left' : 'top', 0);
|
|
184
|
+
var left = bbox.left,
|
|
185
|
+
right = bbox.right,
|
|
186
|
+
top = bbox.top,
|
|
187
|
+
bottom = bbox.bottom;
|
|
188
|
+
var scale = (0, _d3Scale.scaleLinear)().domain([0, 100]).clamp(true);
|
|
189
|
+
if (mode === LayoutSplitterMode.VERTICAL) {
|
|
190
|
+
scale.range([0, right - left]);
|
|
191
|
+
} else {
|
|
192
|
+
scale.range([0, bottom - top]);
|
|
193
|
+
}
|
|
194
|
+
return (0, _defineProperty2["default"])({}, mode === LayoutSplitterMode.VERTICAL ? 'left' : 'top', scale(percentageSplit));
|
|
195
|
+
}
|
|
196
|
+
}, {
|
|
197
|
+
key: "render",
|
|
198
|
+
value: function render() {
|
|
199
|
+
var _this$props6 = this.props,
|
|
200
|
+
mode = _this$props6.mode,
|
|
201
|
+
size = _this$props6.size,
|
|
202
|
+
color = _this$props6.color,
|
|
203
|
+
shadowColor = _this$props6.shadowColor;
|
|
204
|
+
return /*#__PURE__*/_react["default"].createElement(Layout, {
|
|
205
|
+
className: "layout-splitter",
|
|
206
|
+
ref: this.ref,
|
|
207
|
+
mode: mode,
|
|
208
|
+
shadowColor: shadowColor,
|
|
209
|
+
style: this.getPositioningStyle(),
|
|
210
|
+
onPointerDown: this.handlePointerDown,
|
|
211
|
+
onPointerMove: this.handlePointerMove,
|
|
212
|
+
onPointerUp: this.handlePointerUp,
|
|
213
|
+
onPointerCancel: this.handlePointerUp,
|
|
214
|
+
onClick: function onClick(e) {
|
|
215
|
+
return e.stopPropagation();
|
|
216
|
+
}
|
|
217
|
+
}, /*#__PURE__*/_react["default"].createElement(SplitterLine, {
|
|
218
|
+
className: "splitter",
|
|
219
|
+
mode: mode,
|
|
220
|
+
size: size,
|
|
221
|
+
color: color
|
|
222
|
+
}), this.renderHandle());
|
|
223
|
+
}
|
|
224
|
+
}]);
|
|
225
|
+
}(_react.Component);
|
|
226
|
+
(0, _defineProperty2["default"])(LayoutSplitter, "defaultProps", {
|
|
227
|
+
mode: LayoutSplitterMode.VERTICAL,
|
|
228
|
+
size: 2,
|
|
229
|
+
resizeThrottleDelay: 50
|
|
230
|
+
});
|
|
231
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNTY2FsZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiTGF5b3V0U3BsaXR0ZXJNb2RlIiwiZXhwb3J0cyIsIkxheW91dCIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29uY2F0Iiwic2hhZG93Q29sb3IiLCJtb2RlIiwiVkVSVElDQUwiLCJTcGxpdHRlckxpbmUiLCJjb2xvciIsInNpemUiLCJIYW5kbGVXcmFwcGVyIiwiX3JlZiIsIkhhbmRsZSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwidGhlbWUiLCJwYW5lbEJhY2tncm91bmQiLCJ0ZXh0Q29sb3IiLCJBcnJvd0ljb24iLCJfcmVmMiIsIl9yZWYyJHNpemUiLCJjcmVhdGVFbGVtZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwidHJhbnNmb3JtIiwiSE9SSVpPTlRBTCIsImQiLCJmaWxsIiwiTGF5b3V0U3BsaXR0ZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJfZGVmaW5lUHJvcGVydHkyIiwiY3JlYXRlUmVmIiwiZXZ0Iiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJkcmFnZ2luZyIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInBvaW50ZXJJZCIsIm5leHRWYWx1ZSIsImdldE5leHRWYWx1ZSIsImNsaWVudFgiLCJjbGllbnRZIiwiX3RoaXMkcHJvcHMiLCJwZXJjZW50YWdlU3BsaXQiLCJvbk1vdmUiLCJyZWxlYXNlUG9pbnRlckNhcHR1cmUiLCJfdGhpcyRwcm9wczIiLCJvblJlbGVhc2UiLCJmb3JjZVVwZGF0ZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHByb3BzMyIsInJlZmVyZW5jZUVsZW1lbnQiLCJyZXNpemVUaHJvdHRsZURlbGF5IiwiSFRNTEVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsImhhbmRsZVJlc2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsImdldFJlZmVyZW5jZUJvdW5kaW5nQm94IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidW5kZWZpbmVkIiwiYmJveCIsImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsInNjYWxlIiwic2NhbGVMaW5lYXIiLCJkb21haW4iLCJjbGFtcCIsInJhbmdlIiwiaW52ZXJ0IiwicmVuZGVySGFuZGxlIiwiX3RoaXMkcHJvcHM0IiwiZ2V0UG9zaXRpb25pbmdTdHlsZSIsIl90aGlzJHByb3BzNSIsInJlbmRlciIsIl90aGlzJHByb3BzNiIsImNsYXNzTmFtZSIsInJlZiIsInN0eWxlIiwib25Qb2ludGVyRG93biIsImhhbmRsZVBvaW50ZXJEb3duIiwib25Qb2ludGVyTW92ZSIsImhhbmRsZVBvaW50ZXJNb3ZlIiwib25Qb2ludGVyVXAiLCJoYW5kbGVQb2ludGVyVXAiLCJvblBvaW50ZXJDYW5jZWwiLCJvbkNsaWNrIiwiQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9sYXlvdXQtc3BsaXR0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7c2NhbGVMaW5lYXJ9IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCBSZWFjdEVsZW1lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge29ic2VydmVEaW1lbnNpb25zLCB1bm9ic2VydmVEaW1lbnNpb25zfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuZXhwb3J0IGVudW0gTGF5b3V0U3BsaXR0ZXJNb2RlIHtcbiAgVkVSVElDQUwgPSAnVkVSVElDQUwnLFxuICBIT1JJWk9OVEFMID0gJ0hPUklaT05UQUwnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbEVsZW1lbnQge1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xuICBib3R0b206IG51bWJlcjtcbiAgcmlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRTcGxpdHRlclByb3BzIHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIHNoYWRvd0NvbG9yPzogc3RyaW5nO1xuICBtb2RlOiBMYXlvdXRTcGxpdHRlck1vZGU7XG4gIHJlZmVyZW5jZUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgVmlydHVhbEVsZW1lbnQ7XG4gIHJlbmRlckhhbmRsZT86ICgpID0+IFJlYWN0RWxlbWVudDtcbiAgcGVyY2VudGFnZVNwbGl0OiBudW1iZXI7XG4gIHJlc2l6ZVRocm90dGxlRGVsYXk/OiBudW1iZXI7XG4gIG9uTW92ZT86IChwZXJjZW50YWdlU3BsaXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZWxlYXNlPzogKHBlcmNlbnRhZ2VTcGxpdDogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5jb25zdCBMYXlvdXQgPSBzdHlsZWQuZGl2PHttb2RlOiBMYXlvdXRTcGxpdHRlck1vZGU7IHNoYWRvd0NvbG9yPzogc3RyaW5nfT4oXG4gIHByb3BzID0+IGBcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMztcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gICAgJiA+IC5zcGxpdHRlciB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMnB4ICR7cHJvcHMuc2hhZG93Q29sb3IgfHwgJ3JnYmEoMCwgMCwgMCwgMC4zKSd9O1xuICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzIGVhc2U7XG4gICAgfVxuICAgICY6aG92ZXIgPiAuc3BsaXR0ZXIge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDEwcHggJHtwcm9wcy5zaGFkb3dDb2xvciB8fCAncmdiYSgwLCAwLCAwLCAwLjMpJ307XG4gICAgfVxuICAgICR7XG4gICAgICBwcm9wcy5tb2RlID09PSBMYXlvdXRTcGxpdHRlck1vZGUuVkVSVElDQUxcbiAgICAgICAgPyBgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMTBweDtcbiAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgIGN1cnNvcjogZXctcmVzaXplO2BcbiAgICAgICAgOiBgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XG4gICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgIGN1cnNvcjogbnMtcmVzaXplO2BcbiAgICB9XG5gXG4pO1xuXG50eXBlIFNwbGl0dGVyTGluZVByb3BzID0ge1xuICBtb2RlOiBMYXlvdXRTcGxpdHRlck1vZGU7XG4gIHNpemU/OiBudW1iZXI7XG4gIGNvbG9yPzogUmVhY3QuQ1NTUHJvcGVydGllc1snY29sb3InXTtcbn07XG5cbmNvbnN0IFNwbGl0dGVyTGluZSA9IHN0eWxlZC5kaXY8U3BsaXR0ZXJMaW5lUHJvcHM+KFxuICBwcm9wcyA9PiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZDogJHtwcm9wcy5jb2xvciB8fCAnI0ZGRkZGRid9O1xuICAgICR7XG4gICAgICBwcm9wcy5tb2RlID09PSBMYXlvdXRTcGxpdHRlck1vZGUuVkVSVElDQUxcbiAgICAgICAgPyBgbGVmdDogNTAlO1xuICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgICAgIHdpZHRoOiAke3Byb3BzLnNpemV9cHg7XG4gICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYFxuICAgICAgICA6IGB0b3A6IDUwJTtcbiAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgICBoZWlnaHQ6ICR7cHJvcHMuc2l6ZX1weDtcbiAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGBcbiAgICB9YFxuKTtcblxuY29uc3QgSGFuZGxlV3JhcHBlciA9IHN0eWxlZC5kaXY8e21vZGU6IExheW91dFNwbGl0dGVyTW9kZX0+KFxuICAoe21vZGV9KSA9PiBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpO1xuICAgICR7bW9kZSA9PT0gTGF5b3V0U3BsaXR0ZXJNb2RlLlZFUlRJQ0FMID8gJ3RvcDogNTAlOycgOiAnbGVmdDogNTAlOyd9XG5gXG4pO1xuXG5jb25zdCBIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZCB8fCAnIzI5MzIzQyd9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3IgfHwgJyNGRkZGRkYnfTtcbiAgYm9yZGVyOiAycHggc29saWQgI0ZGRkZGRjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG5gO1xuXG5jb25zdCBBcnJvd0ljb246IFJlYWN0LkZDPHtzaXplPzogbnVtYmVyOyBtb2RlOiBMYXlvdXRTcGxpdHRlck1vZGV9PiA9ICh7c2l6ZSA9IDIwLCBtb2RlfSkgPT4gKFxuICA8c3ZnIHdpZHRoPXtzaXplfSBoZWlnaHQ9e3NpemV9IHZpZXdCb3g9XCItMTUgLTE1IDMwIDMwXCI+XG4gICAgPGcgdHJhbnNmb3JtPXttb2RlID09PSBMYXlvdXRTcGxpdHRlck1vZGUuSE9SSVpPTlRBTCA/ICdyb3RhdGUoOTApJyA6ICcnfT5cbiAgICAgIDxwYXRoIGQ9XCJNLTE1LDAgTC01LC02IEwtNSw2WlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgPHBhdGggZD1cIk0xNSwwIEw1LC02IEw1LDZaXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgPC9nPlxuICA8L3N2Zz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheW91dFNwbGl0dGVyIGV4dGVuZHMgQ29tcG9uZW50PExheW91dFNwbGl0dGVyUHJvcHM+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtb2RlOiBMYXlvdXRTcGxpdHRlck1vZGUuVkVSVElDQUwsXG4gICAgc2l6ZTogMixcbiAgICByZXNpemVUaHJvdHRsZURlbGF5OiA1MFxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHtyZWZlcmVuY2VFbGVtZW50LCByZXNpemVUaHJvdHRsZURlbGF5fSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnMocmVmZXJlbmNlRWxlbWVudCwgdGhpcy5oYW5kbGVSZXNpemUsIHJlc2l6ZVRocm90dGxlRGVsYXkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHtyZWZlcmVuY2VFbGVtZW50fSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyhyZWZlcmVuY2VFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gIGRyYWdnaW5nID0gZmFsc2U7XG5cbiAgZ2V0UmVmZXJlbmNlQm91bmRpbmdCb3goKTogVmlydHVhbEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHtyZWZlcmVuY2VFbGVtZW50fSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlZmVyZW5jZUVsZW1lbnQgYXMgVmlydHVhbEVsZW1lbnQ7XG4gIH1cblxuICBnZXROZXh0VmFsdWUoY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHttb2RlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgYmJveCA9IHRoaXMuZ2V0UmVmZXJlbmNlQm91bmRpbmdCb3goKTtcbiAgICBpZiAoIWJib3gpIHJldHVybiB0aGlzLnByb3BzLnBlcmNlbnRhZ2VTcGxpdDtcblxuICAgIGNvbnN0IHtsZWZ0LCByaWdodCwgdG9wLCBib3R0b219ID0gYmJveDtcbiAgICBjb25zdCBzY2FsZSA9IHNjYWxlTGluZWFyKCkuZG9tYWluKFswLCAxMDBdKS5jbGFtcCh0cnVlKTtcblxuICAgIGlmIChtb2RlID09PSBMYXlvdXRTcGxpdHRlck1vZGUuVkVSVElDQUwpIHtcbiAgICAgIHNjYWxlLnJhbmdlKFtsZWZ0LCByaWdodF0pO1xuICAgICAgcmV0dXJuIHNjYWxlLmludmVydChjbGllbnRYKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUucmFuZ2UoW3RvcCwgYm90dG9tXSk7XG4gICAgICByZXR1cm4gc2NhbGUuaW52ZXJ0KGNsaWVudFkpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJEb3duID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIChldnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2V0UG9pbnRlckNhcHR1cmUoZXZ0LnBvaW50ZXJJZCk7XG4gIH07XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUgPSAoZXZ0OiBSZWFjdC5Qb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHJldHVybjtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgbmV4dFZhbHVlID0gdGhpcy5nZXROZXh0VmFsdWUoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcbiAgICBjb25zdCB7cGVyY2VudGFnZVNwbGl0LCBvbk1vdmV9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAobmV4dFZhbHVlICE9PSBwZXJjZW50YWdlU3BsaXQgJiYgb25Nb3ZlKSB7XG4gICAgICBvbk1vdmUobmV4dFZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlUG9pbnRlclVwID0gKGV2dDogUmVhY3QuUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKSByZXR1cm47XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAoZXZ0LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldnQucG9pbnRlcklkKTtcblxuICAgIGNvbnN0IG5leHRWYWx1ZSA9IHRoaXMuZ2V0TmV4dFZhbHVlKGV2dC5jbGllbnRYLCBldnQuY2xpZW50WSk7XG4gICAgY29uc3Qge3BlcmNlbnRhZ2VTcGxpdCwgb25Nb3ZlLCBvblJlbGVhc2V9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAobmV4dFZhbHVlICE9PSBwZXJjZW50YWdlU3BsaXQgJiYgb25Nb3ZlKSB7XG4gICAgICBvbk1vdmUobmV4dFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKG9uUmVsZWFzZSkgb25SZWxlYXNlKG5leHRWYWx1ZSk7XG4gIH07XG5cbiAgaGFuZGxlUmVzaXplID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgfTtcblxuICByZW5kZXJIYW5kbGUoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICBjb25zdCB7bW9kZSwgcmVuZGVySGFuZGxlfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgIDxIYW5kbGVXcmFwcGVyIG1vZGU9e21vZGV9PlxuICAgICAgICB7cmVuZGVySGFuZGxlID8gKFxuICAgICAgICAgIHJlbmRlckhhbmRsZSgpXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEhhbmRsZT5cbiAgICAgICAgICAgIDxBcnJvd0ljb24gbW9kZT17bW9kZX0gLz5cbiAgICAgICAgICA8L0hhbmRsZT5cbiAgICAgICAgKX1cbiAgICAgIDwvSGFuZGxlV3JhcHBlcj5cbiAgICApO1xuICB9XG5cbiAgZ2V0UG9zaXRpb25pbmdTdHlsZSgpOiB7W3g6IHN0cmluZ106IG51bWJlcn0ge1xuICAgIGNvbnN0IHttb2RlLCBwZXJjZW50YWdlU3BsaXR9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBiYm94ID0gdGhpcy5nZXRSZWZlcmVuY2VCb3VuZGluZ0JveCgpO1xuICAgIGlmICghYmJveCkgcmV0dXJuIHtbbW9kZSA9PT0gTGF5b3V0U3BsaXR0ZXJNb2RlLlZFUlRJQ0FMID8gJ2xlZnQnIDogJ3RvcCddOiAwfTtcblxuICAgIGNvbnN0IHtsZWZ0LCByaWdodCwgdG9wLCBib3R0b219ID0gYmJveDtcbiAgICBjb25zdCBzY2FsZSA9IHNjYWxlTGluZWFyKCkuZG9tYWluKFswLCAxMDBdKS5jbGFtcCh0cnVlKTtcblxuICAgIGlmIChtb2RlID09PSBMYXlvdXRTcGxpdHRlck1vZGUuVkVSVElDQUwpIHtcbiAgICAgIHNjYWxlLnJhbmdlKFswLCByaWdodCAtIGxlZnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUucmFuZ2UoWzAsIGJvdHRvbSAtIHRvcF0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBbbW9kZSA9PT0gTGF5b3V0U3BsaXR0ZXJNb2RlLlZFUlRJQ0FMID8gJ2xlZnQnIDogJ3RvcCddOiBzY2FsZShwZXJjZW50YWdlU3BsaXQpXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgIGNvbnN0IHttb2RlLCBzaXplLCBjb2xvciwgc2hhZG93Q29sb3J9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPExheW91dFxuICAgICAgICBjbGFzc05hbWU9XCJsYXlvdXQtc3BsaXR0ZXJcIlxuICAgICAgICByZWY9e3RoaXMucmVmfVxuICAgICAgICBtb2RlPXttb2RlfVxuICAgICAgICBzaGFkb3dDb2xvcj17c2hhZG93Q29sb3J9XG4gICAgICAgIHN0eWxlPXt0aGlzLmdldFBvc2l0aW9uaW5nU3R5bGUoKX1cbiAgICAgICAgb25Qb2ludGVyRG93bj17dGhpcy5oYW5kbGVQb2ludGVyRG93bn1cbiAgICAgICAgb25Qb2ludGVyTW92ZT17dGhpcy5oYW5kbGVQb2ludGVyTW92ZX1cbiAgICAgICAgb25Qb2ludGVyVXA9e3RoaXMuaGFuZGxlUG9pbnRlclVwfVxuICAgICAgICBvblBvaW50ZXJDYW5jZWw9e3RoaXMuaGFuZGxlUG9pbnRlclVwfVxuICAgICAgICBvbkNsaWNrPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICA+XG4gICAgICAgIDxTcGxpdHRlckxpbmUgY2xhc3NOYW1lPVwic3BsaXR0ZXJcIiBtb2RlPXttb2RlfSBzaXplPXtzaXplfSBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgIHt0aGlzLnJlbmRlckhhbmRsZSgpfVxuICAgICAgPC9MYXlvdXQ+XG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUVBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUF3RSxJQUFBTSxlQUFBLEVBUHhFO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFB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
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { LineSeriesPoint, RVNearestXData } from 'react-vis';
|
|
3
2
|
import { LineChart } from '@kepler.gl/types';
|
|
3
|
+
export interface LineSeriesPoint {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
}
|
|
4
7
|
export interface HoverDP {
|
|
5
8
|
x: number;
|
|
6
9
|
y: number;
|
|
@@ -25,10 +28,14 @@ interface LineChartProps {
|
|
|
25
28
|
left?: number;
|
|
26
29
|
right?: number;
|
|
27
30
|
};
|
|
28
|
-
onMouseMove: (datapoint: LineSeriesPoint | null
|
|
31
|
+
onMouseMove: (datapoint: LineSeriesPoint | null) => void;
|
|
32
|
+
value?: number[];
|
|
29
33
|
width: number;
|
|
30
34
|
timezone?: string | null;
|
|
31
35
|
timeFormat?: string;
|
|
36
|
+
range?: number[];
|
|
37
|
+
yAxisAutoRange?: boolean;
|
|
38
|
+
theme?: any;
|
|
32
39
|
}
|
|
33
|
-
declare function LineChartFactory():
|
|
40
|
+
declare function LineChartFactory(): React.FC<Omit<LineChartProps, "theme">>;
|
|
34
41
|
export default LineChartFactory;
|