@kepler.gl/components 3.1.7 → 3.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/common/image-preview.d.ts +3 -3
  2. package/dist/common/image-preview.js +17 -13
  3. package/dist/common/loading-spinner.js +2 -2
  4. package/dist/kepler-gl.d.ts +28 -10
  5. package/dist/kepler-gl.js +20 -9
  6. package/dist/map/layer-hover-info.js +38 -15
  7. package/dist/map/map-popover.js +2 -2
  8. package/dist/map-container.js +7 -3
  9. package/dist/modal-container.d.ts +1 -1
  10. package/dist/modals/export-data-modal.js +2 -2
  11. package/dist/modals/export-image-modal.d.ts +1 -1
  12. package/dist/modals/export-image-modal.js +1 -1
  13. package/dist/modals/save-map-modal.d.ts +1 -2
  14. package/dist/modals/save-map-modal.js +1 -1
  15. package/dist/modals/tilesets-modals/common.d.ts +2 -1
  16. package/dist/modals/tilesets-modals/common.js +1 -1
  17. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  18. package/dist/modals/tilesets-modals/load-data-footer.js +11 -5
  19. package/dist/modals/tilesets-modals/load-tileset.js +21 -3
  20. package/dist/modals/tilesets-modals/tileset-raster-form.js +20 -14
  21. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +7 -0
  22. package/dist/modals/tilesets-modals/tileset-wms-form.js +163 -0
  23. package/dist/plot-container.d.ts +9 -7
  24. package/dist/plot-container.js +168 -170
  25. package/dist/side-panel/add-by-dataset-button.d.ts +0 -1
  26. package/dist/side-panel/add-by-dataset-button.js +1 -3
  27. package/dist/side-panel/common/dataset-info.js +2 -2
  28. package/dist/side-panel/filter-panel/add-filter-button.js +1 -2
  29. package/dist/side-panel/layer-manager.js +21 -8
  30. package/dist/side-panel/layer-panel/add-layer-button.js +1 -2
  31. package/dist/side-panel/layer-panel/custom-palette.d.ts +1 -6
  32. package/dist/side-panel/layer-panel/custom-palette.js +132 -88
  33. package/dist/side-panel/layer-panel/custom-picker.js +18 -5
  34. package/dist/side-panel/layer-panel/dataset-layer-section.js +21 -8
  35. package/dist/side-panel/layer-panel/layer-configurator.js +56 -14
  36. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +10 -10
  37. package/package.json +16 -15
@@ -7,15 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = PlotContainerFactory;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
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
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
17
13
  var _react = _interopRequireWildcard(require("react"));
18
- var _reselect = require("reselect");
19
14
  var _styledComponents = _interopRequireDefault(require("styled-components"));
20
15
  var _reactMapGl = require("react-map-gl");
21
16
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
@@ -32,8 +27,6 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
32
27
  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; }
33
28
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
29
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35
- 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)); }
36
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
37
30
  var CLASS_FILTER = ['maplibregl-control-container', 'mapboxgl-control-container', 'attrition-link', 'attrition-logo', 'map-control__panel-split-viewport-tools'];
38
31
  var DOM_FILTER_FUNC = function DOM_FILTER_FUNC(node) {
39
32
  return !CLASS_FILTER.includes(node.className);
@@ -50,188 +43,193 @@ var StyledMapContainer = _styledComponents["default"].div(_templateObject2 || (_
50
43
  return props.height;
51
44
  });
52
45
  function PlotContainerFactory(MapContainer, MapsLayout) {
53
- var PlotContainer = /*#__PURE__*/function (_Component) {
54
- function PlotContainer(_props) {
55
- var _this;
56
- (0, _classCallCheck2["default"])(this, PlotContainer);
57
- _this = _callSuper(this, PlotContainer, [_props]);
58
- (0, _defineProperty2["default"])(_this, "plottingAreaRef", /*#__PURE__*/(0, _react.createRef)());
59
- (0, _defineProperty2["default"])(_this, "mapStyleSelector", function (props) {
60
- return props.mapFields.mapStyle;
61
- });
62
- (0, _defineProperty2["default"])(_this, "mapScaleSelector", function (props) {
63
- var imageSize = props.exportImageSetting.imageSize;
64
- var mapState = props.mapFields.mapState;
65
- if (imageSize.scale) {
66
- return imageSize.scale;
67
- }
68
- var scale = (0, _utils.getScaleFromImageSize)(imageSize.imageW, imageSize.imageH, mapState.width * (mapState.isSplit ? 2 : 1), mapState.height);
69
- return scale > 0 ? scale : 1;
70
- });
71
- (0, _defineProperty2["default"])(_this, "scaledMapStyleSelector", (0, _reselect.createSelector)(_this.mapStyleSelector, _this.mapScaleSelector, function (mapStyle, scale) {
72
- return _objectSpread(_objectSpread({}, mapStyle), {}, {
73
- bottomMapStyle: (0, _utils.scaleMapStyleByResolution)(mapStyle.bottomMapStyle, scale),
74
- topMapStyle: (0, _utils.scaleMapStyleByResolution)(mapStyle.topMapStyle, scale)
46
+ function PlotContainer(_ref) {
47
+ var ratio = _ref.ratio,
48
+ resolution = _ref.resolution,
49
+ _ref$legend = _ref.legend,
50
+ legend = _ref$legend === void 0 ? false : _ref$legend,
51
+ center = _ref.center,
52
+ imageSize = _ref.imageSize,
53
+ escapeXhtmlForWebpack = _ref.escapeXhtmlForWebpack,
54
+ mapFields = _ref.mapFields,
55
+ _ref$splitMaps = _ref.splitMaps,
56
+ splitMaps = _ref$splitMaps === void 0 ? [] : _ref$splitMaps,
57
+ setExportImageSetting = _ref.setExportImageSetting,
58
+ setExportImageDataUri = _ref.setExportImageDataUri,
59
+ setExportImageError = _ref.setExportImageError,
60
+ addNotification = _ref.addNotification,
61
+ enableErrorNotification = _ref.enableErrorNotification;
62
+ var plottingAreaRef = (0, _react.useRef)(null);
63
+ var _useState = (0, _react.useState)(function () {
64
+ return mapFields.visState.effects.map(function (effect) {
65
+ return effect.clone();
75
66
  });
76
- }));
77
- (0, _defineProperty2["default"])(_this, "_onMapRender", function (map) {
78
- if (map.isStyleLoaded()) {
79
- _this._retrieveNewScreenshot();
80
- }
67
+ }),
68
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
69
+ plotEffects = _useState2[0];
70
+ var mapState = mapFields.mapState;
71
+
72
+ // Memoize the scale calculation
73
+ var scale = (0, _react.useMemo)(function () {
74
+ if (imageSize.scale) {
75
+ return imageSize.scale;
76
+ }
77
+ var calculatedScale = (0, _utils.getScaleFromImageSize)(imageSize.imageW, imageSize.imageH, mapState.width * (mapState.isSplit ? 2 : 1), mapState.height);
78
+ return calculatedScale > 0 ? calculatedScale : 1;
79
+ }, [imageSize.scale, imageSize.imageW, imageSize.imageH, mapState.width, mapState.height, mapState.isSplit]);
80
+
81
+ // Memoize the map style
82
+ var scaledMapStyle = (0, _react.useMemo)(function () {
83
+ var mapStyle = mapFields.mapStyle;
84
+ return _objectSpread(_objectSpread({}, mapStyle), {}, {
85
+ bottomMapStyle: (0, _utils.scaleMapStyleByResolution)(mapStyle.bottomMapStyle, scale),
86
+ topMapStyle: (0, _utils.scaleMapStyleByResolution)(mapStyle.topMapStyle, scale)
81
87
  });
82
- (0, _defineProperty2["default"])(_this, "_retrieveNewScreenshot", function () {
83
- if (_this.plottingAreaRef.current) {
84
- var _this$props$exportIma = _this.props.exportImageSetting,
85
- imageSize = _this$props$exportIma.imageSize,
86
- escapeXhtmlForWebpack = _this$props$exportIma.escapeXhtmlForWebpack;
87
- (0, _utils.convertToPng)(_this.plottingAreaRef.current, {
88
+ }, [mapFields.mapStyle, scale]);
89
+
90
+ // Memoize the retrieveNewScreenshot callback
91
+ var debouncedScreenshot = (0, _react.useMemo)(function () {
92
+ return (0, _debounce["default"])(function () {
93
+ if (plottingAreaRef.current) {
94
+ (0, _utils.convertToPng)(plottingAreaRef.current, {
88
95
  filter: DOM_FILTER_FUNC,
89
96
  width: imageSize.imageW,
90
97
  height: imageSize.imageH,
91
98
  escapeXhtmlForWebpack: escapeXhtmlForWebpack
92
- }).then(_this.props.setExportImageDataUri)["catch"](function (err) {
93
- _this.props.setExportImageError(err);
94
- if (_this.props.enableErrorNotification) {
95
- _this.props.addNotification((0, _utils.exportImageError)({
99
+ }).then(setExportImageDataUri)["catch"](function (err) {
100
+ setExportImageError(err);
101
+ if (enableErrorNotification) {
102
+ addNotification((0, _utils.exportImageError)({
96
103
  err: err
97
104
  }));
98
105
  }
99
106
  });
100
107
  }
108
+ }, 500);
109
+ }, [imageSize.imageW, imageSize.imageH, escapeXhtmlForWebpack, setExportImageDataUri, setExportImageError, enableErrorNotification, addNotification]);
110
+ var retrieveNewScreenshot = (0, _react.useCallback)(debouncedScreenshot, [debouncedScreenshot]);
111
+
112
+ // Memoize the onMapRender callback
113
+ var debouncedMapRender = (0, _react.useMemo)(function () {
114
+ return (0, _debounce["default"])(function (map) {
115
+ if (map.isStyleLoaded()) {
116
+ retrieveNewScreenshot();
117
+ }
118
+ }, 500);
119
+ }, [retrieveNewScreenshot]);
120
+ var onMapRender = (0, _react.useCallback)(debouncedMapRender, [debouncedMapRender]);
121
+
122
+ // Initial setup effect
123
+ (0, _react.useEffect)(function () {
124
+ setExportImageSetting({
125
+ processing: true
101
126
  });
102
- _this._onMapRender = (0, _debounce["default"])(_this._onMapRender, 500);
103
- _this._retrieveNewScreenshot = (0, _debounce["default"])(_this._retrieveNewScreenshot, 500);
104
- _this.state = {
105
- plotEffects: _this.getEffectsForPlot()
106
- };
107
- return _this;
108
- }
109
- (0, _inherits2["default"])(PlotContainer, _Component);
110
- return (0, _createClass2["default"])(PlotContainer, [{
111
- key: "getEffectsForPlot",
112
- value: function getEffectsForPlot() {
113
- return this.props.mapFields.visState.effects.map(function (effect) {
114
- return effect.clone();
115
- });
116
- }
117
- }, {
118
- key: "componentDidMount",
119
- value: function componentDidMount() {
120
- this.props.setExportImageSetting({
127
+ }, [setExportImageSetting]);
128
+
129
+ // Screenshot update effect
130
+ (0, _react.useEffect)(function () {
131
+ if (ratio !== undefined || resolution !== undefined || legend !== undefined) {
132
+ setExportImageSetting({
121
133
  processing: true
122
134
  });
135
+ retrieveNewScreenshot();
123
136
  }
124
- }, {
125
- key: "componentDidUpdate",
126
- value: function componentDidUpdate(prevProps) {
127
- var _this2 = this;
128
- // re-fetch the new screenshot only when ratio legend or resolution changes
129
- var checks = ['ratio', 'resolution', 'legend'];
130
- var shouldRetrieveScreenshot = checks.some(function (item) {
131
- return _this2.props.exportImageSetting[item] !== prevProps.exportImageSetting[item];
132
- });
133
- if (shouldRetrieveScreenshot) {
134
- this.props.setExportImageSetting({
135
- processing: true
136
- });
137
- this._retrieveNewScreenshot();
138
- }
139
- }
140
- }, {
141
- key: "render",
142
- value: function render() {
143
- var _this$props = this.props,
144
- exportImageSetting = _this$props.exportImageSetting,
145
- mapFields = _this$props.mapFields,
146
- _this$props$splitMaps = _this$props.splitMaps,
147
- splitMaps = _this$props$splitMaps === void 0 ? [] : _this$props$splitMaps;
148
- var mapState = mapFields.mapState,
149
- visState = mapFields.visState;
150
- var layers = visState.layers,
151
- layerData = visState.layerData;
152
- var imageSize = exportImageSetting.imageSize,
153
- legend = exportImageSetting.legend;
154
- var isSplit = splitMaps && splitMaps.length > 1;
137
+ }, [ratio, resolution, legend, setExportImageSetting, retrieveNewScreenshot]);
138
+
139
+ // Memoize size calculations
140
+ var _useMemo = (0, _react.useMemo)(function () {
155
141
  var size = {
156
- width: (imageSize === null || imageSize === void 0 ? void 0 : imageSize.imageW) || 1,
157
- height: (imageSize === null || imageSize === void 0 ? void 0 : imageSize.imageH) || 1
142
+ width: imageSize.imageW || 1,
143
+ height: imageSize.imageH || 1
144
+ };
145
+ var isSplit = splitMaps.length > 1;
146
+ return {
147
+ size: size,
148
+ width: size.width / (isSplit ? 2 : 1),
149
+ height: size.height
158
150
  };
159
- var width = size.width / (isSplit ? 2 : 1);
160
- var height = size.height;
161
- var scale = this.mapScaleSelector(this.props);
162
- var newMapState = _objectSpread(_objectSpread({}, mapState), {}, {
151
+ }, [imageSize.imageW, imageSize.imageH, splitMaps.length]),
152
+ size = _useMemo.size,
153
+ width = _useMemo.width,
154
+ height = _useMemo.height;
155
+
156
+ // Memoize map state
157
+ var newMapState = (0, _react.useMemo)(function () {
158
+ var baseMapState = _objectSpread(_objectSpread({}, mapState), {}, {
159
+ width: width,
160
+ height: height,
161
+ zoom: mapState.zoom + (Math.log2(scale) || 0)
162
+ });
163
+ if (center) {
164
+ var renderedLayers = mapFields.visState.layers.filter(function (layer, idx) {
165
+ return layer.id !== _constants.GEOCODER_LAYER_ID && layer.shouldRenderLayer(mapFields.visState.layerData[idx]);
166
+ });
167
+ var bounds = (0, _reducers.findMapBounds)(renderedLayers);
168
+ var centerAndZoom = (0, _utils.getCenterAndZoomFromBounds)(bounds, {
163
169
  width: width,
164
- height: height,
165
- zoom: mapState.zoom + (Math.log2(scale) || 0)
170
+ height: height
166
171
  });
167
-
168
- // center and all layer bounds
169
- if (exportImageSetting.center) {
170
- var renderedLayers = layers.filter(function (layer, idx) {
171
- return layer.id !== _constants.GEOCODER_LAYER_ID && layer.shouldRenderLayer(layerData[idx]);
172
- });
173
- var bounds = (0, _reducers.findMapBounds)(renderedLayers);
174
- var centerAndZoom = (0, _utils.getCenterAndZoomFromBounds)(bounds, {
175
- width: width,
176
- height: height
172
+ if (centerAndZoom) {
173
+ var zoom = Number.isFinite(centerAndZoom.zoom) ? centerAndZoom.zoom : mapState.zoom;
174
+ return _objectSpread(_objectSpread({}, baseMapState), {}, {
175
+ longitude: centerAndZoom.center[0],
176
+ latitude: centerAndZoom.center[1],
177
+ zoom: zoom + Number(Math.log2(scale) || 0)
177
178
  });
178
- if (centerAndZoom) {
179
- var zoom = Number.isFinite(centerAndZoom.zoom) ? centerAndZoom.zoom : mapState.zoom;
180
- newMapState.longitude = centerAndZoom.center[0];
181
- newMapState.latitude = centerAndZoom.center[1];
182
- newMapState.zoom = zoom + Number(Math.log2(scale) || 0);
183
- }
184
179
  }
185
- var mapProps = _objectSpread(_objectSpread({}, mapFields), {}, {
186
- mapStyle: this.scaledMapStyleSelector(this.props),
187
- // override viewport based on export settings
188
- mapState: newMapState,
189
- mapControls: {
190
- // override map legend visibility
191
- mapLegend: {
192
- show: legend,
193
- active: true
194
- }
195
- },
196
- MapComponent: _reactMapGl.Map,
197
- onMapRender: this._onMapRender,
198
- isExport: true,
199
- deckGlProps: _objectSpread(_objectSpread({}, mapFields.deckGlProps), {}, {
200
- glOptions: {
201
- preserveDrawingBuffer: true,
202
- useDevicePixels: false
203
- }
204
- }),
205
- visState: _objectSpread(_objectSpread({}, mapFields.visState), {}, {
206
- // Make sure to use effects not associated with a different WebGL context
207
- effects: this.state.plotEffects
208
- })
209
- });
210
- var mapContainers = !isSplit ? /*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
211
- index: 0,
212
- primary: true
213
- }, mapProps)) : /*#__PURE__*/_react["default"].createElement(MapsLayout, {
214
- className: "plot-container-maps",
215
- mapState: newMapState
216
- }, splitMaps.map(function (settings, index) {
217
- return /*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
218
- key: index,
219
- index: index,
220
- primary: index === 1
221
- }, mapProps));
222
- }));
223
- return /*#__PURE__*/_react["default"].createElement(StyledPlotContainer, {
224
- className: "export-map-instance"
225
- }, /*#__PURE__*/_react["default"].createElement(StyledMapContainer, {
226
- ref: this.plottingAreaRef,
227
- width: size.width,
228
- height: size.height
229
- }, /*#__PURE__*/_react["default"].createElement(_mapViewStateContext.MapViewStateContextProvider, {
230
- mapState: newMapState
231
- }, mapContainers)));
232
180
  }
233
- }]);
234
- }(_react.Component);
235
- return PlotContainer;
181
+ return baseMapState;
182
+ }, [mapState, width, height, scale, center, mapFields.visState]);
183
+
184
+ // Memoize map props
185
+ var mapProps = (0, _react.useMemo)(function () {
186
+ return _objectSpread(_objectSpread({}, mapFields), {}, {
187
+ mapStyle: scaledMapStyle,
188
+ mapState: newMapState,
189
+ mapControls: {
190
+ mapLegend: {
191
+ show: Boolean(legend),
192
+ active: true
193
+ }
194
+ },
195
+ MapComponent: _reactMapGl.Map,
196
+ onMapRender: onMapRender,
197
+ isExport: true,
198
+ deckGlProps: _objectSpread(_objectSpread({}, mapFields.deckGlProps), {}, {
199
+ glOptions: {
200
+ preserveDrawingBuffer: true,
201
+ useDevicePixels: false
202
+ }
203
+ }),
204
+ visState: _objectSpread(_objectSpread({}, mapFields.visState), {}, {
205
+ effects: plotEffects
206
+ })
207
+ });
208
+ }, [mapFields, scaledMapStyle, newMapState, legend, onMapRender, plotEffects]);
209
+ var isSplit = splitMaps.length > 1;
210
+ var mapContainers = !isSplit ? /*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
211
+ index: 0,
212
+ primary: true
213
+ }, mapProps)) : /*#__PURE__*/_react["default"].createElement(MapsLayout, {
214
+ className: "plot-container-maps",
215
+ mapState: newMapState
216
+ }, splitMaps.map(function (settings, index) {
217
+ return /*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
218
+ key: index,
219
+ index: index,
220
+ primary: index === 1
221
+ }, mapProps));
222
+ }));
223
+ return /*#__PURE__*/_react["default"].createElement(StyledPlotContainer, {
224
+ className: "export-map-instance"
225
+ }, /*#__PURE__*/_react["default"].createElement(StyledMapContainer, {
226
+ ref: plottingAreaRef,
227
+ width: size.width,
228
+ height: size.height
229
+ }, /*#__PURE__*/_react["default"].createElement(_mapViewStateContext.MapViewStateContextProvider, {
230
+ mapState: newMapState
231
+ }, mapContainers)));
232
+ }
233
+ return /*#__PURE__*/_react["default"].memo(PlotContainer);
236
234
  }
237
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVzZWxlY3QiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RNYXBHbCIsIl9kZWJvdW5jZSIsIl91dGlscyIsIl9yZWR1Y2VycyIsIl9tYXBDb250YWluZXIiLCJfbWFwc0xheW91dCIsIl9tYXBWaWV3U3RhdGVDb250ZXh0IiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJpbmNsdWRlcyIsImNsYXNzTmFtZSIsIk9VVF9PRl9TQ1JFRU5fUE9TSVRJT04iLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJTdHlsZWRQbG90Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJTdHlsZWRNYXBDb250YWluZXIiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0IiwiTWFwQ29udGFpbmVyIiwiTWFwc0xheW91dCIsIlBsb3RDb250YWluZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiY3JlYXRlUmVmIiwibWFwRmllbGRzIiwibWFwU3R5bGUiLCJpbWFnZVNpemUiLCJleHBvcnRJbWFnZVNldHRpbmciLCJtYXBTdGF0ZSIsInNjYWxlIiwiZ2V0U2NhbGVGcm9tSW1hZ2VTaXplIiwiaW1hZ2VXIiwiaW1hZ2VIIiwiaXNTcGxpdCIsImNyZWF0ZVNlbGVjdG9yIiwibWFwU3R5bGVTZWxlY3RvciIsIm1hcFNjYWxlU2VsZWN0b3IiLCJib3R0b21NYXBTdHlsZSIsInNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24iLCJ0b3BNYXBTdHlsZSIsIm1hcCIsImlzU3R5bGVMb2FkZWQiLCJfcmV0cmlldmVOZXdTY3JlZW5zaG90IiwicGxvdHRpbmdBcmVhUmVmIiwiY3VycmVudCIsIl90aGlzJHByb3BzJGV4cG9ydEltYSIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImNvbnZlcnRUb1BuZyIsInRoZW4iLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJlcnIiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwiZW5hYmxlRXJyb3JOb3RpZmljYXRpb24iLCJhZGROb3RpZmljYXRpb24iLCJleHBvcnRJbWFnZUVycm9yIiwiX29uTWFwUmVuZGVyIiwiZGVib3VuY2UiLCJzdGF0ZSIsInBsb3RFZmZlY3RzIiwiZ2V0RWZmZWN0c0ZvclBsb3QiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwidmlzU3RhdGUiLCJlZmZlY3RzIiwiZWZmZWN0IiwiY2xvbmUiLCJjb21wb25lbnREaWRNb3VudCIsInNldEV4cG9ydEltYWdlU2V0dGluZyIsInByb2Nlc3NpbmciLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJfdGhpczIiLCJjaGVja3MiLCJzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QiLCJzb21lIiwiaXRlbSIsInJlbmRlciIsIl90aGlzJHByb3BzIiwiX3RoaXMkcHJvcHMkc3BsaXRNYXBzIiwic3BsaXRNYXBzIiwibGF5ZXJzIiwibGF5ZXJEYXRhIiwibGVnZW5kIiwic2l6ZSIsIm5ld01hcFN0YXRlIiwiem9vbSIsIk1hdGgiLCJsb2cyIiwiY2VudGVyIiwicmVuZGVyZWRMYXllcnMiLCJsYXllciIsImlkeCIsImlkIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJzaG91bGRSZW5kZXJMYXllciIsImJvdW5kcyIsImZpbmRNYXBCb3VuZHMiLCJjZW50ZXJBbmRab29tIiwiZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwibWFwUHJvcHMiLCJzY2FsZWRNYXBTdHlsZVNlbGVjdG9yIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJzaG93IiwiYWN0aXZlIiwiTWFwQ29tcG9uZW50IiwiTWFwIiwib25NYXBSZW5kZXIiLCJpc0V4cG9ydCIsImRlY2tHbFByb3BzIiwiZ2xPcHRpb25zIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwidXNlRGV2aWNlUGl4ZWxzIiwibWFwQ29udGFpbmVycyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJpbmRleCIsInByaW1hcnkiLCJzZXR0aW5ncyIsInJlZiIsIk1hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlciIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wbG90LWNvbnRhaW5lci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge01hcH0gZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IHtcbiAgZXhwb3J0SW1hZ2VFcnJvcixcbiAgc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbixcbiAgZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsXG4gIGNvbnZlcnRUb1BuZyxcbiAgZ2V0U2NhbGVGcm9tSW1hZ2VTaXplXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtmaW5kTWFwQm91bmRzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQge01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcn0gZnJvbSAnLi9tYXAtdmlldy1zdGF0ZS1jb250ZXh0JztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgRXhwb3J0SW1hZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7RWZmZWN0LCBTcGxpdE1hcH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBBY3Rpb25IYW5kbGVyLFxuICBhZGROb3RpZmljYXRpb24sXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge21hcEZpZWxkc1NlbGVjdG9yfSBmcm9tICcuL2tlcGxlci1nbCc7XG5cbmNvbnN0IENMQVNTX0ZJTFRFUiA9IFtcbiAgJ21hcGxpYnJlZ2wtY29udHJvbC1jb250YWluZXInLFxuICAnbWFwYm94Z2wtY29udHJvbC1jb250YWluZXInLFxuICAnYXR0cml0aW9uLWxpbmsnLFxuICAnYXR0cml0aW9uLWxvZ28nLFxuICAnbWFwLWNvbnRyb2xfX3BhbmVsLXNwbGl0LXZpZXdwb3J0LXRvb2xzJ1xuXTtcbmNvbnN0IERPTV9GSUxURVJfRlVOQyA9IG5vZGUgPT4gIUNMQVNTX0ZJTFRFUi5pbmNsdWRlcyhub2RlLmNsYXNzTmFtZSk7XG5jb25zdCBPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OID0gLTk5OTk7XG5cblBsb3RDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwQ29udGFpbmVyRmFjdG9yeSwgTWFwc0xheW91dEZhY3RvcnldO1xuXG4vLyBSZW1vdmUgbWFwYm94IGxvZ28gaW4gZXhwb3J0ZWQgbWFwLCBiZWNhdXNlIGl0IGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFyYWN0ZXJzXG4vLyBSZW1vdmUgc3BsaXQgdmlld3BvcnQgVUkgY29udHJvbHMgZnJvbSBleHBvcnRlZCBpbWFnZXMgd2hlbiB0aGUgbGVnZW5kIGlzIHNob3duXG5jb25zdCBTdHlsZWRQbG90Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tbGVmdCxcbiAgLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tcmlnaHQsXG4gIC5tYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXIsXG4gIC5tYXBib3hnbC1jdHJsLWJvdHRvbS1sZWZ0LFxuICAubWFwYm94Z2wtY3RybC1ib3R0b20tcmlnaHQsXG4gIC5tYXBib3gtYXR0cmlidXRpb24tY29udGFpbmVyLFxuICAubWFwLWNvbnRyb2xfX3BhbmVsLXNwbGl0LXZpZXdwb3J0LXRvb2xzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7T1VUX09GX1NDUkVFTl9QT1NJVElPTn1weDtcbiAgbGVmdDogJHtPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OfXB4O1xuYDtcblxuaW50ZXJmYWNlIFN0eWxlZE1hcENvbnRhaW5lclByb3BzIHtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbn1cblxuY29uc3QgU3R5bGVkTWFwQ29udGFpbmVyID0gc3R5bGVkLmRpdjxTdHlsZWRNYXBDb250YWluZXJQcm9wcz5gXG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuaGVpZ2h0fXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuaW50ZXJmYWNlIFBsb3RDb250YWluZXJQcm9wcyB7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG4gIGV4cG9ydEltYWdlU2V0dGluZzogRXhwb3J0SW1hZ2U7XG4gIGFkZE5vdGlmaWNhdGlvbjogQWN0aW9uSGFuZGxlcjx0eXBlb2YgYWRkTm90aWZpY2F0aW9uPjtcbiAgbWFwRmllbGRzOiBSZXR1cm5UeXBlPHR5cGVvZiBtYXBGaWVsZHNTZWxlY3Rvcj47XG4gIHNldEV4cG9ydEltYWdlU2V0dGluZzogdHlwZW9mIHNldEV4cG9ydEltYWdlU2V0dGluZztcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VEYXRhVXJpO1xuICBzZXRFeHBvcnRJbWFnZUVycm9yOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VFcnJvcjtcbiAgc3BsaXRNYXBzPzogU3BsaXRNYXBbXTtcbiAgZW5hYmxlRXJyb3JOb3RpZmljYXRpb24/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgUGxvdENvbnRhaW5lclN0YXRlIHtcbiAgcGxvdEVmZmVjdHM6IEVmZmVjdFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQbG90Q29udGFpbmVyRmFjdG9yeShcbiAgTWFwQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250YWluZXJGYWN0b3J5PixcbiAgTWFwc0xheW91dDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwc0xheW91dEZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPFBsb3RDb250YWluZXJQcm9wcz4ge1xuICBjbGFzcyBQbG90Q29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50PFBsb3RDb250YWluZXJQcm9wcywgUGxvdENvbnRhaW5lclN0YXRlPiB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgIHRoaXMuX29uTWFwUmVuZGVyID0gZGVib3VuY2UodGhpcy5fb25NYXBSZW5kZXIsIDUwMCk7XG4gICAgICB0aGlzLl9yZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSBkZWJvdW5jZSh0aGlzLl9yZXRyaWV2ZU5ld1NjcmVlbnNob3QsIDUwMCk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgIHBsb3RFZmZlY3RzOiB0aGlzLmdldEVmZmVjdHNGb3JQbG90KClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFZmZlY3RzRm9yUGxvdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm1hcEZpZWxkcy52aXNTdGF0ZS5lZmZlY3RzLm1hcChlZmZlY3QgPT4gZWZmZWN0LmNsb25lKCkpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5zZXRFeHBvcnRJbWFnZVNldHRpbmcoe3Byb2Nlc3Npbmc6IHRydWV9KTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICAvLyByZS1mZXRjaCB0aGUgbmV3IHNjcmVlbnNob3Qgb25seSB3aGVuIHJhdGlvIGxlZ2VuZCBvciByZXNvbHV0aW9uIGNoYW5nZXNcbiAgICAgIGNvbnN0IGNoZWNrcyA9IFsncmF0aW8nLCAncmVzb2x1dGlvbicsICdsZWdlbmQnXTtcbiAgICAgIGNvbnN0IHNob3VsZFJldHJpZXZlU2NyZWVuc2hvdCA9IGNoZWNrcy5zb21lKFxuICAgICAgICBpdGVtID0+IHRoaXMucHJvcHMuZXhwb3J0SW1hZ2VTZXR0aW5nW2l0ZW1dICE9PSBwcmV2UHJvcHMuZXhwb3J0SW1hZ2VTZXR0aW5nW2l0ZW1dXG4gICAgICApO1xuICAgICAgaWYgKHNob3VsZFJldHJpZXZlU2NyZWVuc2hvdCkge1xuICAgICAgICB0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlU2V0dGluZyh7cHJvY2Vzc2luZzogdHJ1ZX0pO1xuICAgICAgICB0aGlzLl9yZXRyaWV2ZU5ld1NjcmVlbnNob3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwbG90dGluZ0FyZWFSZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgICBtYXBTdHlsZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwRmllbGRzLm1hcFN0eWxlO1xuICAgIG1hcFNjYWxlU2VsZWN0b3IgPSBwcm9wcyA9PiB7XG4gICAgICBjb25zdCB7aW1hZ2VTaXplfSA9IHByb3BzLmV4cG9ydEltYWdlU2V0dGluZztcbiAgICAgIGNvbnN0IHttYXBTdGF0ZX0gPSBwcm9wcy5tYXBGaWVsZHM7XG4gICAgICBpZiAoaW1hZ2VTaXplLnNjYWxlKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVNpemUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNjYWxlID0gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICBtYXBTdGF0ZS53aWR0aCAqIChtYXBTdGF0ZS5pc1NwbGl0ID8gMiA6IDEpLFxuICAgICAgICBtYXBTdGF0ZS5oZWlnaHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBzY2FsZSA+IDAgPyBzY2FsZSA6IDE7XG4gICAgfTtcblxuICAgIHNjYWxlZE1hcFN0eWxlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubWFwU3R5bGVTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwU2NhbGVTZWxlY3RvcixcbiAgICAgIChtYXBTdHlsZSwgc2NhbGUpID0+ICh7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBib3R0b21NYXBTdHlsZTogc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBTdHlsZS5ib3R0b21NYXBTdHlsZSwgc2NhbGUpLFxuICAgICAgICB0b3BNYXBTdHlsZTogc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBTdHlsZS50b3BNYXBTdHlsZSwgc2NhbGUpXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBfb25NYXBSZW5kZXIgPSBtYXAgPT4ge1xuICAgICAgaWYgKG1hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgdGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9yZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCB7aW1hZ2VTaXplLCBlc2NhcGVYaHRtbEZvcldlYnBhY2t9ID0gdGhpcy5wcm9wcy5leHBvcnRJbWFnZVNldHRpbmc7XG4gICAgICAgIGNvbnZlcnRUb1BuZyh0aGlzLnBsb3R0aW5nQXJlYVJlZi5jdXJyZW50LCB7XG4gICAgICAgICAgZmlsdGVyOiBET01fRklMVEVSX0ZVTkMsXG4gICAgICAgICAgd2lkdGg6IGltYWdlU2l6ZS5pbWFnZVcsXG4gICAgICAgICAgaGVpZ2h0OiBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICAgIGVzY2FwZVhodG1sRm9yV2VicGFja1xuICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpKVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRFeHBvcnRJbWFnZUVycm9yKGVycik7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVFcnJvck5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLmFkZE5vdGlmaWNhdGlvbihleHBvcnRJbWFnZUVycm9yKHtlcnJ9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtleHBvcnRJbWFnZVNldHRpbmcsIG1hcEZpZWxkcywgc3BsaXRNYXBzID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHttYXBTdGF0ZSwgdmlzU3RhdGV9ID0gbWFwRmllbGRzO1xuICAgICAgY29uc3Qge2xheWVycywgbGF5ZXJEYXRhfSA9IHZpc1N0YXRlO1xuICAgICAgY29uc3Qge2ltYWdlU2l6ZSwgbGVnZW5kfSA9IGV4cG9ydEltYWdlU2V0dGluZztcblxuICAgICAgY29uc3QgaXNTcGxpdCA9IHNwbGl0TWFwcyAmJiBzcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuICAgICAgY29uc3Qgc2l6ZSA9IHtcbiAgICAgICAgd2lkdGg6IGltYWdlU2l6ZT8uaW1hZ2VXIHx8IDEsXG4gICAgICAgIGhlaWdodDogaW1hZ2VTaXplPy5pbWFnZUggfHwgMVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdpZHRoID0gc2l6ZS53aWR0aCAvIChpc1NwbGl0ID8gMiA6IDEpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMubWFwU2NhbGVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IG5ld01hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSArIChNYXRoLmxvZzIoc2NhbGUpIHx8IDApXG4gICAgICB9O1xuXG4gICAgICAvLyBjZW50ZXIgYW5kIGFsbCBsYXllciBib3VuZHNcbiAgICAgIGlmIChleHBvcnRJbWFnZVNldHRpbmcuY2VudGVyKSB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTGF5ZXJzID0gbGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAobGF5ZXIsIGlkeCkgPT4gbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmIGxheWVyLnNob3VsZFJlbmRlckxheWVyKGxheWVyRGF0YVtpZHhdKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBib3VuZHMgPSBmaW5kTWFwQm91bmRzKHJlbmRlcmVkTGF5ZXJzKTtcbiAgICAgICAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGJvdW5kcywge3dpZHRoLCBoZWlnaHR9KTtcbiAgICAgICAgaWYgKGNlbnRlckFuZFpvb20pIHtcbiAgICAgICAgICBjb25zdCB6b29tID0gTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSkgPyBjZW50ZXJBbmRab29tLnpvb20gOiBtYXBTdGF0ZS56b29tO1xuXG4gICAgICAgICAgbmV3TWFwU3RhdGUubG9uZ2l0dWRlID0gY2VudGVyQW5kWm9vbS5jZW50ZXJbMF07XG4gICAgICAgICAgbmV3TWFwU3RhdGUubGF0aXR1ZGUgPSBjZW50ZXJBbmRab29tLmNlbnRlclsxXTtcbiAgICAgICAgICBuZXdNYXBTdGF0ZS56b29tID0gem9vbSArIE51bWJlcihNYXRoLmxvZzIoc2NhbGUpIHx8IDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBGaWVsZHMsXG4gICAgICAgIG1hcFN0eWxlOiB0aGlzLnNjYWxlZE1hcFN0eWxlU2VsZWN0b3IodGhpcy5wcm9wcyksXG5cbiAgICAgICAgLy8gb3ZlcnJpZGUgdmlld3BvcnQgYmFzZWQgb24gZXhwb3J0IHNldHRpbmdzXG4gICAgICAgIG1hcFN0YXRlOiBuZXdNYXBTdGF0ZSxcbiAgICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgICAvLyBvdmVycmlkZSBtYXAgbGVnZW5kIHZpc2liaWxpdHlcbiAgICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICAgIHNob3c6IGxlZ2VuZCxcbiAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgTWFwQ29tcG9uZW50OiBNYXAsXG4gICAgICAgIG9uTWFwUmVuZGVyOiB0aGlzLl9vbk1hcFJlbmRlcixcbiAgICAgICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgICAgIGRlY2tHbFByb3BzOiB7XG4gICAgICAgICAgLi4ubWFwRmllbGRzLmRlY2tHbFByb3BzLFxuICAgICAgICAgIGdsT3B0aW9uczoge1xuICAgICAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlLFxuICAgICAgICAgICAgdXNlRGV2aWNlUGl4ZWxzOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdmlzU3RhdGU6IHtcbiAgICAgICAgICAuLi5tYXBGaWVsZHMudmlzU3RhdGUsXG4gICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHVzZSBlZmZlY3RzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBkaWZmZXJlbnQgV2ViR0wgY29udGV4dFxuICAgICAgICAgIGVmZmVjdHM6IHRoaXMuc3RhdGUucGxvdEVmZmVjdHNcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0ID8gKFxuICAgICAgICA8TWFwQ29udGFpbmVyIGluZGV4PXswfSBwcmltYXJ5PXt0cnVlfSB7Li4ubWFwUHJvcHN9IC8+XG4gICAgICApIDogKFxuICAgICAgICA8TWFwc0xheW91dCBjbGFzc05hbWU9XCJwbG90LWNvbnRhaW5lci1tYXBzXCIgbWFwU3RhdGU9e25ld01hcFN0YXRlfT5cbiAgICAgICAgICB7c3BsaXRNYXBzLm1hcCgoc2V0dGluZ3MsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyIGtleT17aW5kZXh9IGluZGV4PXtpbmRleH0gcHJpbWFyeT17aW5kZXggPT09IDF9IHsuLi5tYXBQcm9wc30gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9NYXBzTGF5b3V0PlxuICAgICAgKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRQbG90Q29udGFpbmVyIGNsYXNzTmFtZT1cImV4cG9ydC1tYXAtaW5zdGFuY2VcIj5cbiAgICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17dGhpcy5wbG90dGluZ0FyZWFSZWZ9IHdpZHRoPXtzaXplLndpZHRofSBoZWlnaHQ9e3NpemUuaGVpZ2h0fT5cbiAgICAgICAgICAgIDxNYXBWaWV3U3RhdGVDb250ZXh0UHJvdmlkZXIgbWFwU3RhdGU9e25ld01hcFN0YXRlfT5cbiAgICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgICA8L01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICA8L1N0eWxlZE1hcENvbnRhaW5lcj5cbiAgICAgICAgPC9TdHlsZWRQbG90Q29udGFpbmVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFBsb3RDb250YWluZXI7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFB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
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RNYXBHbCIsIl9kZWJvdW5jZSIsIl91dGlscyIsIl9yZWR1Y2VycyIsIl9tYXBDb250YWluZXIiLCJfbWFwc0xheW91dCIsIl9tYXBWaWV3U3RhdGVDb250ZXh0IiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJDTEFTU19GSUxURVIiLCJET01fRklMVEVSX0ZVTkMiLCJub2RlIiwiaW5jbHVkZXMiLCJjbGFzc05hbWUiLCJPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OIiwiUGxvdENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsIk1hcHNMYXlvdXRGYWN0b3J5IiwiU3R5bGVkUGxvdENvbnRhaW5lciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiU3R5bGVkTWFwQ29udGFpbmVyIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJQbG90Q29udGFpbmVyIiwiX3JlZiIsInJhdGlvIiwicmVzb2x1dGlvbiIsIl9yZWYkbGVnZW5kIiwibGVnZW5kIiwiY2VudGVyIiwiaW1hZ2VTaXplIiwiZXNjYXBlWGh0bWxGb3JXZWJwYWNrIiwibWFwRmllbGRzIiwiX3JlZiRzcGxpdE1hcHMiLCJzcGxpdE1hcHMiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwiYWRkTm90aWZpY2F0aW9uIiwiZW5hYmxlRXJyb3JOb3RpZmljYXRpb24iLCJwbG90dGluZ0FyZWFSZWYiLCJ1c2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInZpc1N0YXRlIiwiZWZmZWN0cyIsIm1hcCIsImVmZmVjdCIsImNsb25lIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInBsb3RFZmZlY3RzIiwibWFwU3RhdGUiLCJzY2FsZSIsInVzZU1lbW8iLCJjYWxjdWxhdGVkU2NhbGUiLCJnZXRTY2FsZUZyb21JbWFnZVNpemUiLCJpbWFnZVciLCJpbWFnZUgiLCJpc1NwbGl0Iiwic2NhbGVkTWFwU3R5bGUiLCJtYXBTdHlsZSIsImJvdHRvbU1hcFN0eWxlIiwic2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbiIsInRvcE1hcFN0eWxlIiwiZGVib3VuY2VkU2NyZWVuc2hvdCIsImRlYm91bmNlIiwiY3VycmVudCIsImNvbnZlcnRUb1BuZyIsInRoZW4iLCJlcnIiLCJleHBvcnRJbWFnZUVycm9yIiwicmV0cmlldmVOZXdTY3JlZW5zaG90IiwidXNlQ2FsbGJhY2siLCJkZWJvdW5jZWRNYXBSZW5kZXIiLCJpc1N0eWxlTG9hZGVkIiwib25NYXBSZW5kZXIiLCJ1c2VFZmZlY3QiLCJwcm9jZXNzaW5nIiwidW5kZWZpbmVkIiwiX3VzZU1lbW8iLCJzaXplIiwibmV3TWFwU3RhdGUiLCJiYXNlTWFwU3RhdGUiLCJ6b29tIiwiTWF0aCIsImxvZzIiLCJyZW5kZXJlZExheWVycyIsImxheWVycyIsImxheWVyIiwiaWR4IiwiaWQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwibGF5ZXJEYXRhIiwiYm91bmRzIiwiZmluZE1hcEJvdW5kcyIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsIk51bWJlciIsImlzRmluaXRlIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJtYXBQcm9wcyIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwic2hvdyIsIkJvb2xlYW4iLCJhY3RpdmUiLCJNYXBDb21wb25lbnQiLCJNYXAiLCJpc0V4cG9ydCIsImRlY2tHbFByb3BzIiwiZ2xPcHRpb25zIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwidXNlRGV2aWNlUGl4ZWxzIiwibWFwQ29udGFpbmVycyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJpbmRleCIsInByaW1hcnkiLCJzZXR0aW5ncyIsImtleSIsInJlZiIsIk1hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlciIsIlJlYWN0IiwibWVtbyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wbG90LWNvbnRhaW5lci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHt1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7TWFwfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQge1xuICBleHBvcnRJbWFnZUVycm9yLFxuICBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uLFxuICBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyxcbiAgY29udmVydFRvUG5nLFxuICBnZXRTY2FsZUZyb21JbWFnZVNpemVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2ZpbmRNYXBCb3VuZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuaW1wb3J0IE1hcENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tYXAtY29udGFpbmVyJztcbmltcG9ydCBNYXBzTGF5b3V0RmFjdG9yeSBmcm9tICcuL21hcHMtbGF5b3V0JztcbmltcG9ydCB7TWFwVmlld1N0YXRlQ29udGV4dFByb3ZpZGVyfSBmcm9tICcuL21hcC12aWV3LXN0YXRlLWNvbnRleHQnO1xuXG5pbXBvcnQge0dFT0NPREVSX0xBWUVSX0lEfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0VmZmVjdCwgU3BsaXRNYXAsIEV4cG9ydEltYWdlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIEFjdGlvbkhhbmRsZXIsXG4gIGFkZE5vdGlmaWNhdGlvbixcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpLFxuICBzZXRFeHBvcnRJbWFnZUVycm9yLFxuICBzZXRFeHBvcnRJbWFnZVNldHRpbmdcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7bWFwRmllbGRzU2VsZWN0b3J9IGZyb20gJy4va2VwbGVyLWdsJztcblxuY29uc3QgQ0xBU1NfRklMVEVSID0gW1xuICAnbWFwbGlicmVnbC1jb250cm9sLWNvbnRhaW5lcicsXG4gICdtYXBib3hnbC1jb250cm9sLWNvbnRhaW5lcicsXG4gICdhdHRyaXRpb24tbGluaycsXG4gICdhdHRyaXRpb24tbG9nbycsXG4gICdtYXAtY29udHJvbF9fcGFuZWwtc3BsaXQtdmlld3BvcnQtdG9vbHMnXG5dO1xuY29uc3QgRE9NX0ZJTFRFUl9GVU5DID0gbm9kZSA9PiAhQ0xBU1NfRklMVEVSLmluY2x1ZGVzKG5vZGUuY2xhc3NOYW1lKTtcbmNvbnN0IE9VVF9PRl9TQ1JFRU5fUE9TSVRJT04gPSAtOTk5OTtcblxuUGxvdENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBDb250YWluZXJGYWN0b3J5LCBNYXBzTGF5b3V0RmFjdG9yeV07XG5cbi8vIFJlbW92ZSBtYXBib3ggbG9nbyBpbiBleHBvcnRlZCBtYXAsIGJlY2F1c2UgaXQgY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbi8vIFJlbW92ZSBzcGxpdCB2aWV3cG9ydCBVSSBjb250cm9scyBmcm9tIGV4cG9ydGVkIGltYWdlcyB3aGVuIHRoZSBsZWdlbmQgaXMgc2hvd25cbmNvbnN0IFN0eWxlZFBsb3RDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAubWFwbGlicmVnbC1jdHJsLWJvdHRvbS1sZWZ0LFxuICAubWFwbGlicmVnbC1jdHJsLWJvdHRvbS1yaWdodCxcbiAgLm1hcGxpYnJlLWF0dHJpYnV0aW9uLWNvbnRhaW5lcixcbiAgLm1hcGJveGdsLWN0cmwtYm90dG9tLWxlZnQsXG4gIC5tYXBib3hnbC1jdHJsLWJvdHRvbS1yaWdodCxcbiAgLm1hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXIsXG4gIC5tYXAtY29udHJvbF9fcGFuZWwtc3BsaXQtdmlld3BvcnQtdG9vbHMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHtPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OfXB4O1xuICBsZWZ0OiAke09VVF9PRl9TQ1JFRU5fUE9TSVRJT059cHg7XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkTWFwQ29udGFpbmVyUHJvcHMge1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xufVxuXG5jb25zdCBTdHlsZWRNYXBDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZE1hcENvbnRhaW5lclByb3BzPmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5pbnRlcmZhY2UgUGxvdENvbnRhaW5lclByb3BzIHtcbiAgLy8gSW1hZ2UgZXhwb3J0IHNldHRpbmdzXG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBib29sZWFuO1xuICBjZW50ZXI/OiBib29sZWFuO1xuICBpbWFnZVNpemU6IEV4cG9ydEltYWdlWydpbWFnZVNpemUnXTtcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrPzogYm9vbGVhbjtcblxuICAvLyBNYXAgc2V0dGluZ3NcbiAgbWFwRmllbGRzOiBSZXR1cm5UeXBlPHR5cGVvZiBtYXBGaWVsZHNTZWxlY3Rvcj47XG4gIHNwbGl0TWFwcz86IFNwbGl0TWFwW107XG5cbiAgLy8gQ2FsbGJhY2tzXG4gIHNldEV4cG9ydEltYWdlU2V0dGluZzogdHlwZW9mIHNldEV4cG9ydEltYWdlU2V0dGluZztcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VEYXRhVXJpO1xuICBzZXRFeHBvcnRJbWFnZUVycm9yOiB0eXBlb2Ygc2V0RXhwb3J0SW1hZ2VFcnJvcjtcbiAgYWRkTm90aWZpY2F0aW9uOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBhZGROb3RpZmljYXRpb24+O1xuXG4gIC8vIEZsYWdzXG4gIGVuYWJsZUVycm9yTm90aWZpY2F0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGxvdENvbnRhaW5lckZhY3RvcnkoXG4gIE1hcENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udGFpbmVyRmFjdG9yeT4sXG4gIE1hcHNMYXlvdXQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcHNMYXlvdXRGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxQbG90Q29udGFpbmVyUHJvcHM+IHtcbiAgZnVuY3Rpb24gUGxvdENvbnRhaW5lcih7XG4gICAgLy8gSW1hZ2UgZXhwb3J0IHNldHRpbmdzXG4gICAgcmF0aW8sXG4gICAgcmVzb2x1dGlvbixcbiAgICBsZWdlbmQgPSBmYWxzZSxcbiAgICBjZW50ZXIsXG4gICAgaW1hZ2VTaXplLFxuICAgIGVzY2FwZVhodG1sRm9yV2VicGFjayxcblxuICAgIC8vIE1hcCBzZXR0aW5nc1xuICAgIG1hcEZpZWxkcyxcbiAgICBzcGxpdE1hcHMgPSBbXSxcblxuICAgIC8vIENhbGxiYWNrc1xuICAgIHNldEV4cG9ydEltYWdlU2V0dGluZyxcbiAgICBzZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gICAgc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgICBhZGROb3RpZmljYXRpb24sXG5cbiAgICAvLyBGbGFnc1xuICAgIGVuYWJsZUVycm9yTm90aWZpY2F0aW9uXG4gIH06IFBsb3RDb250YWluZXJQcm9wcykge1xuICAgIGNvbnN0IHBsb3R0aW5nQXJlYVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW3Bsb3RFZmZlY3RzXSA9IHVzZVN0YXRlPEVmZmVjdFtdPigoKSA9PlxuICAgICAgbWFwRmllbGRzLnZpc1N0YXRlLmVmZmVjdHMubWFwKGVmZmVjdCA9PiBlZmZlY3QuY2xvbmUoKSlcbiAgICApO1xuXG4gICAgY29uc3Qge21hcFN0YXRlfSA9IG1hcEZpZWxkcztcblxuICAgIC8vIE1lbW9pemUgdGhlIHNjYWxlIGNhbGN1bGF0aW9uXG4gICAgY29uc3Qgc2NhbGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChpbWFnZVNpemUuc2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGltYWdlU2l6ZS5zY2FsZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsY3VsYXRlZFNjYWxlID0gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICBtYXBTdGF0ZS53aWR0aCAqIChtYXBTdGF0ZS5pc1NwbGl0ID8gMiA6IDEpLFxuICAgICAgICBtYXBTdGF0ZS5oZWlnaHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBjYWxjdWxhdGVkU2NhbGUgPiAwID8gY2FsY3VsYXRlZFNjYWxlIDogMTtcbiAgICB9LCBbXG4gICAgICBpbWFnZVNpemUuc2NhbGUsXG4gICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgaW1hZ2VTaXplLmltYWdlSCxcbiAgICAgIG1hcFN0YXRlLndpZHRoLFxuICAgICAgbWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgbWFwU3RhdGUuaXNTcGxpdFxuICAgIF0pO1xuXG4gICAgLy8gTWVtb2l6ZSB0aGUgbWFwIHN0eWxlXG4gICAgY29uc3Qgc2NhbGVkTWFwU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IG1hcFN0eWxlID0gbWFwRmllbGRzLm1hcFN0eWxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgIGJvdHRvbU1hcFN0eWxlOiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLCBzY2FsZSksXG4gICAgICAgIHRvcE1hcFN0eWxlOiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcFN0eWxlLnRvcE1hcFN0eWxlLCBzY2FsZSlcbiAgICAgIH07XG4gICAgfSwgW21hcEZpZWxkcy5tYXBTdHlsZSwgc2NhbGVdKTtcblxuICAgIC8vIE1lbW9pemUgdGhlIHJldHJpZXZlTmV3U2NyZWVuc2hvdCBjYWxsYmFja1xuICAgIGNvbnN0IGRlYm91bmNlZFNjcmVlbnNob3QgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgIGlmIChwbG90dGluZ0FyZWFSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29udmVydFRvUG5nKHBsb3R0aW5nQXJlYVJlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgIGZpbHRlcjogRE9NX0ZJTFRFUl9GVU5DLFxuICAgICAgICAgICAgICB3aWR0aDogaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICAgICAgICBlc2NhcGVYaHRtbEZvcldlYnBhY2tcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50aGVuKHNldEV4cG9ydEltYWdlRGF0YVVyaSlcbiAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgc2V0RXhwb3J0SW1hZ2VFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIGlmIChlbmFibGVFcnJvck5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgYWRkTm90aWZpY2F0aW9uKGV4cG9ydEltYWdlRXJyb3Ioe2Vycn0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKSxcbiAgICAgIFtcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlSCxcbiAgICAgICAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrLFxuICAgICAgICBzZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gICAgICAgIHNldEV4cG9ydEltYWdlRXJyb3IsXG4gICAgICAgIGVuYWJsZUVycm9yTm90aWZpY2F0aW9uLFxuICAgICAgICBhZGROb3RpZmljYXRpb25cbiAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgcmV0cmlldmVOZXdTY3JlZW5zaG90ID0gdXNlQ2FsbGJhY2soZGVib3VuY2VkU2NyZWVuc2hvdCwgW2RlYm91bmNlZFNjcmVlbnNob3RdKTtcblxuICAgIC8vIE1lbW9pemUgdGhlIG9uTWFwUmVuZGVyIGNhbGxiYWNrXG4gICAgY29uc3QgZGVib3VuY2VkTWFwUmVuZGVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGRlYm91bmNlKG1hcCA9PiB7XG4gICAgICAgICAgaWYgKG1hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgICAgIHJldHJpZXZlTmV3U2NyZWVuc2hvdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKSxcbiAgICAgIFtyZXRyaWV2ZU5ld1NjcmVlbnNob3RdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uTWFwUmVuZGVyID0gdXNlQ2FsbGJhY2soZGVib3VuY2VkTWFwUmVuZGVyLCBbZGVib3VuY2VkTWFwUmVuZGVyXSk7XG5cbiAgICAvLyBJbml0aWFsIHNldHVwIGVmZmVjdFxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBzZXRFeHBvcnRJbWFnZVNldHRpbmcoe3Byb2Nlc3Npbmc6IHRydWV9KTtcbiAgICB9LCBbc2V0RXhwb3J0SW1hZ2VTZXR0aW5nXSk7XG5cbiAgICAvLyBTY3JlZW5zaG90IHVwZGF0ZSBlZmZlY3RcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHJhdGlvICE9PSB1bmRlZmluZWQgfHwgcmVzb2x1dGlvbiAhPT0gdW5kZWZpbmVkIHx8IGxlZ2VuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldEV4cG9ydEltYWdlU2V0dGluZyh7cHJvY2Vzc2luZzogdHJ1ZX0pO1xuICAgICAgICByZXRyaWV2ZU5ld1NjcmVlbnNob3QoKTtcbiAgICAgIH1cbiAgICB9LCBbcmF0aW8sIHJlc29sdXRpb24sIGxlZ2VuZCwgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nLCByZXRyaWV2ZU5ld1NjcmVlbnNob3RdKTtcblxuICAgIC8vIE1lbW9pemUgc2l6ZSBjYWxjdWxhdGlvbnNcbiAgICBjb25zdCB7c2l6ZSwgd2lkdGgsIGhlaWdodH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSB7XG4gICAgICAgIHdpZHRoOiBpbWFnZVNpemUuaW1hZ2VXIHx8IDEsXG4gICAgICAgIGhlaWdodDogaW1hZ2VTaXplLmltYWdlSCB8fCAxXG4gICAgICB9O1xuICAgICAgY29uc3QgaXNTcGxpdCA9IHNwbGl0TWFwcy5sZW5ndGggPiAxO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGggLyAoaXNTcGxpdCA/IDIgOiAxKSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodFxuICAgICAgfTtcbiAgICB9LCBbaW1hZ2VTaXplLmltYWdlVywgaW1hZ2VTaXplLmltYWdlSCwgc3BsaXRNYXBzLmxlbmd0aF0pO1xuXG4gICAgLy8gTWVtb2l6ZSBtYXAgc3RhdGVcbiAgICBjb25zdCBuZXdNYXBTdGF0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgYmFzZU1hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSArIChNYXRoLmxvZzIoc2NhbGUpIHx8IDApXG4gICAgICB9O1xuXG4gICAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTGF5ZXJzID0gbWFwRmllbGRzLnZpc1N0YXRlLmxheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyLCBpZHgpID0+XG4gICAgICAgICAgICBsYXllci5pZCAhPT0gR0VPQ09ERVJfTEFZRVJfSUQgJiZcbiAgICAgICAgICAgIGxheWVyLnNob3VsZFJlbmRlckxheWVyKG1hcEZpZWxkcy52aXNTdGF0ZS5sYXllckRhdGFbaWR4XSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYm91bmRzID0gZmluZE1hcEJvdW5kcyhyZW5kZXJlZExheWVycyk7XG4gICAgICAgIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhib3VuZHMsIHt3aWR0aCwgaGVpZ2h0fSk7XG4gICAgICAgIGlmIChjZW50ZXJBbmRab29tKSB7XG4gICAgICAgICAgY29uc3Qgem9vbSA9IE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8gY2VudGVyQW5kWm9vbS56b29tIDogbWFwU3RhdGUuem9vbTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZU1hcFN0YXRlLFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAgICAgICAgIGxhdGl0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclsxXSxcbiAgICAgICAgICAgIHpvb206IHpvb20gKyBOdW1iZXIoTWF0aC5sb2cyKHNjYWxlKSB8fCAwKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJhc2VNYXBTdGF0ZTtcbiAgICB9LCBbbWFwU3RhdGUsIHdpZHRoLCBoZWlnaHQsIHNjYWxlLCBjZW50ZXIsIG1hcEZpZWxkcy52aXNTdGF0ZV0pO1xuXG4gICAgLy8gTWVtb2l6ZSBtYXAgcHJvcHNcbiAgICBjb25zdCBtYXBQcm9wcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICAuLi5tYXBGaWVsZHMsXG4gICAgICAgIG1hcFN0eWxlOiBzY2FsZWRNYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAgIG1hcExlZ2VuZDoge1xuICAgICAgICAgICAgc2hvdzogQm9vbGVhbihsZWdlbmQpLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBNYXBDb21wb25lbnQ6IE1hcCxcbiAgICAgICAgb25NYXBSZW5kZXIsXG4gICAgICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgICAgICBkZWNrR2xQcm9wczoge1xuICAgICAgICAgIC4uLm1hcEZpZWxkcy5kZWNrR2xQcm9wcyxcbiAgICAgICAgICBnbE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgICAgIHVzZURldmljZVBpeGVsczogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZpc1N0YXRlOiB7XG4gICAgICAgICAgLi4ubWFwRmllbGRzLnZpc1N0YXRlLFxuICAgICAgICAgIGVmZmVjdHM6IHBsb3RFZmZlY3RzXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgW21hcEZpZWxkcywgc2NhbGVkTWFwU3R5bGUsIG5ld01hcFN0YXRlLCBsZWdlbmQsIG9uTWFwUmVuZGVyLCBwbG90RWZmZWN0c11cbiAgICApO1xuXG4gICAgY29uc3QgaXNTcGxpdCA9IHNwbGl0TWFwcy5sZW5ndGggPiAxO1xuICAgIGNvbnN0IG1hcENvbnRhaW5lcnMgPSAhaXNTcGxpdCA/IChcbiAgICAgIDxNYXBDb250YWluZXIgaW5kZXg9ezB9IHByaW1hcnk9e3RydWV9IHsuLi5tYXBQcm9wc30gLz5cbiAgICApIDogKFxuICAgICAgPE1hcHNMYXlvdXQgY2xhc3NOYW1lPVwicGxvdC1jb250YWluZXItbWFwc1wiIG1hcFN0YXRlPXtuZXdNYXBTdGF0ZX0+XG4gICAgICAgIHtzcGxpdE1hcHMubWFwKChzZXR0aW5ncywgaW5kZXgpID0+IChcbiAgICAgICAgICA8TWFwQ29udGFpbmVyIGtleT17aW5kZXh9IGluZGV4PXtpbmRleH0gcHJpbWFyeT17aW5kZXggPT09IDF9IHsuLi5tYXBQcm9wc30gLz5cbiAgICAgICAgKSl9XG4gICAgICA8L01hcHNMYXlvdXQ+XG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkUGxvdENvbnRhaW5lciBjbGFzc05hbWU9XCJleHBvcnQtbWFwLWluc3RhbmNlXCI+XG4gICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXtwbG90dGluZ0FyZWFSZWZ9IHdpZHRoPXtzaXplLndpZHRofSBoZWlnaHQ9e3NpemUuaGVpZ2h0fT5cbiAgICAgICAgICA8TWFwVmlld1N0YXRlQ29udGV4dFByb3ZpZGVyIG1hcFN0YXRlPXtuZXdNYXBTdGF0ZX0+XG4gICAgICAgICAgICB7bWFwQ29udGFpbmVyc31cbiAgICAgICAgICA8L01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICA8L1N0eWxlZFBsb3RDb250YWluZXI+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdC5tZW1vKFBsb3RDb250YWluZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsb0JBQUEsR0FBQVQsT0FBQTtBQUVBLElBQUFVLFVBQUEsR0FBQVYsT0FBQTtBQUF1RCxJQUFBVyxlQUFBLEVBQUFDLGdCQUFBLEVBcEJ2RDtBQUNBO0FBRUE7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWYsd0JBQUFlLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FB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
@@ -3,7 +3,6 @@ import { Datasets } from '@kepler.gl/table';
3
3
  export declare type AddByDatasetButtonProps = {
4
4
  datasets: Datasets;
5
5
  onAdd: (dataId: string) => void;
6
- width: string;
7
6
  buttonIntlId: string;
8
7
  inactive?: boolean;
9
8
  className?: string;
@@ -51,7 +51,6 @@ var AddByDatasetButton = function AddByDatasetButton(_ref2) {
51
51
  var datasets = _ref2.datasets,
52
52
  onAdd = _ref2.onAdd,
53
53
  buttonIntlId = _ref2.buttonIntlId,
54
- width = _ref2.width,
55
54
  className = _ref2.className,
56
55
  inactive = _ref2.inactive;
57
56
  var _useState = (0, _react.useState)(),
@@ -87,7 +86,6 @@ var AddByDatasetButton = function AddByDatasetButton(_ref2) {
87
86
  var buttonRendered = /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
88
87
  tabIndex: -1,
89
88
  className: className || 'add-by-dataset-button',
90
- width: width,
91
89
  onClick: onClickBtn,
92
90
  disabled: !options.length || inactive
93
91
  }, /*#__PURE__*/_react["default"].createElement(_icons.Add, {
@@ -128,4 +126,4 @@ var AddByDatasetButton = function AddByDatasetButton(_ref2) {
128
126
  });
129
127
  };
130
128
  var _default = exports["default"] = AddByDatasetButton;
131
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9jYWxpemF0aW9uIiwiX3JlYWN0MiIsIl9pY29ucyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl90eXBlYWhlYWQiLCJfYWNjZXNzb3IiLCJfcmVhY3RJbnRsIiwiX2NvbnRleHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRyb3Bkb3duQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dEJvcmRlckNvbG9yIiwiRHJvcGRvd25NZW51IiwiTGlzdEl0ZW1XcmFwcGVyIiwidGV4dENvbG9yIiwiVFlQRUFIRUFEX0NMQVNTIiwiVFlQRUFIRUFEX0lOUFVUX0NMQVNTIiwiTGlzdEl0ZW0iLCJfcmVmIiwidmFsdWUiLCJjcmVhdGVFbGVtZW50IiwiRGF0YXNldFNxdWFyZSIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwidGl0bGUiLCJsYWJlbCIsIkFkZEJ5RGF0YXNldEJ1dHRvbiIsIl9yZWYyIiwiZGF0YXNldHMiLCJvbkFkZCIsImJ1dHRvbkludGxJZCIsIndpZHRoIiwiaW5hY3RpdmUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJ0aXBweUluc3RhbmNlIiwic2V0VGlwcHlJbnN0YW5jZSIsIm9wdGlvbnMiLCJ1c2VNZW1vIiwidmFsdWVzIiwibWFwIiwiZHMiLCJpZCIsIm9uQ2xpY2tCdG4iLCJ1c2VDYWxsYmFjayIsImxlbmd0aCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJvcHRpb24iLCJoaWRlIiwiaW50bCIsInVzZUludGwiLCJidXR0b25SZW5kZXJlZCIsIkJ1dHRvbiIsInRhYkluZGV4Iiwib25DbGljayIsImRpc2FibGVkIiwiQWRkIiwiaGVpZ2h0IiwiRm9ybWF0dGVkTWVzc2FnZSIsIlJvb3RDb250ZXh0IiwiQ29uc3VtZXIiLCJjb250ZXh0IiwidHJpZ2dlciIsImFycm93IiwiaW50ZXJhY3RpdmUiLCJwbGFjZW1lbnQiLCJhcHBlbmRUbyIsImN1cnJlbnQiLCJvbkNyZWF0ZSIsImR1cmF0aW9uIiwiY29udGVudCIsImN1c3RvbUNsYXNzZXMiLCJyZXN1bHRzIiwiaW5wdXQiLCJsaXN0SXRlbSIsInBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsInNlbGVjdGVkSXRlbXMiLCJkaXNwbGF5T3B0aW9uIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yIiwiZmlsdGVyT3B0aW9uIiwic2VhcmNoYWJsZSIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpZGUtcGFuZWwvYWRkLWJ5LWRhdGFzZXQtYnV0dG9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge0RhdGFzZXRzLCBLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmltcG9ydCBUaXBweSBmcm9tICdAdGlwcHlqcy9yZWFjdCc7XG5pbXBvcnQge0FkZH0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7QnV0dG9uLCBEYXRhc2V0U3F1YXJlfSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuLi9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQnO1xuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2FjY2Vzc29yJztcbmltcG9ydCB7dXNlSW50bH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge1Jvb3RDb250ZXh0fSBmcm9tICcuLi9jb250ZXh0JztcblxuY29uc3QgRHJvcGRvd25Db250YWluZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnYWRkLWxheWVyLW1lbnUtZHJvcGRvd24nXG59KWBcbiAgLmxpc3Qtc2VsZWN0b3Ige1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0Qm9yZGVyQ29sb3J9O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8qIGRpc2FibGUgc2Nyb2xsaW5nLCBjdXJyZW50bHkgc2V0IHRvIDI4MHB4IGludGVybmFsbHkgKi9cbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgfVxuICAubGlzdF9faXRlbSA+IGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHN2ZyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZHJvcGRvd24tbWVudSdcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4td2lkdGg6IDI0MHB4O1xuICBtYXgtd2lkdGg6IDI0MHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogLTUzcHg7XG4gIHotaW5kZXg6IDU7XG5gO1xuXG5jb25zdCBMaXN0SXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZHJvcGRvd24tbWVudS1saXN0LWl0ZW0td3JhcHBlcidcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBmb250LXNpemU6IDExcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC5kYXRhc2V0LWNvbG9yIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiAzcHg7XG4gIH1cbiAgLmRhdGFzZXQtbmFtZSB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5gO1xuXG5jb25zdCBUWVBFQUhFQURfQ0xBU1MgPSAndHlwZWFoZWFkJztcbmNvbnN0IFRZUEVBSEVBRF9JTlBVVF9DTEFTUyA9ICd0eXBlYWhlYWRfX2lucHV0JztcblxuZXhwb3J0IHR5cGUgQWRkQnlEYXRhc2V0QnV0dG9uUHJvcHMgPSB7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgb25BZGQ6IChkYXRhSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgd2lkdGg6IHN0cmluZztcbiAgYnV0dG9uSW50bElkOiBzdHJpbmc7XG4gIGluYWN0aXZlPzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuY29uc3QgTGlzdEl0ZW0gPSAoe3ZhbHVlfSkgPT4gKFxuICA8TGlzdEl0ZW1XcmFwcGVyPlxuICAgIDxEYXRhc2V0U3F1YXJlIGNsYXNzTmFtZT1cImRhdGFzZXQtY29sb3JcIiBiYWNrZ3JvdW5kQ29sb3I9e3ZhbHVlLmNvbG9yfSAvPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YXNldC1uYW1lXCIgdGl0bGU9e3ZhbHVlLmxhYmVsfT5cbiAgICAgIHt2YWx1ZS5sYWJlbH1cbiAgICA8L2Rpdj5cbiAgPC9MaXN0SXRlbVdyYXBwZXI+XG4pO1xuXG5jb25zdCBBZGRCeURhdGFzZXRCdXR0b246IFJlYWN0LkZDPEFkZEJ5RGF0YXNldEJ1dHRvblByb3BzPiA9ICh7XG4gIGRhdGFzZXRzLFxuICBvbkFkZCxcbiAgYnV0dG9uSW50bElkLFxuICB3aWR0aCxcbiAgY2xhc3NOYW1lLFxuICBpbmFjdGl2ZVxufSkgPT4ge1xuICBjb25zdCBbdGlwcHlJbnN0YW5jZSwgc2V0VGlwcHlJbnN0YW5jZV0gPSB1c2VTdGF0ZSgpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkYXRhc2V0cykubWFwKChkczogS2VwbGVyVGFibGUpID0+ICh7XG4gICAgICBsYWJlbDogZHMubGFiZWwsXG4gICAgICB2YWx1ZTogZHMuaWQsXG4gICAgICBjb2xvcjogZHMuY29sb3JcbiAgICB9KSk7XG4gIH0sIFtkYXRhc2V0c10pO1xuXG4gIGNvbnN0IG9uQ2xpY2tCdG4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBvbkFkZChvcHRpb25zWzBdLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH0sIFtvcHRpb25zLCBvbkFkZF0pO1xuXG4gIGNvbnN0IG9uT3B0aW9uU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICBvcHRpb24gPT4ge1xuICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb25BZGQob3B0aW9uLnZhbHVlKTtcbiAgICAgIGlmICh0aXBweUluc3RhbmNlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGlwcHlJbnN0YW5jZS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25BZGQsIHRpcHB5SW5zdGFuY2VdXG4gICk7XG5cbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcblxuICBjb25zdCBidXR0b25SZW5kZXJlZCA9IChcbiAgICA8QnV0dG9uXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZSB8fCAnYWRkLWJ5LWRhdGFzZXQtYnV0dG9uJ31cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2tCdG59XG4gICAgICBkaXNhYmxlZD17IW9wdGlvbnMubGVuZ3RoIHx8IGluYWN0aXZlfVxuICAgID5cbiAgICAgIDxBZGQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17YnV0dG9uSW50bElkfSAvPlxuICAgIDwvQnV0dG9uPlxuICApO1xuXG4gIHJldHVybiBvcHRpb25zLmxlbmd0aCA9PT0gMSA/IChcbiAgICBidXR0b25SZW5kZXJlZFxuICApIDogKFxuICAgIDxSb290Q29udGV4dC5Db25zdW1lcj5cbiAgICAgIHtjb250ZXh0ID0+IChcbiAgICAgICAgPFRpcHB5XG4gICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICBhcnJvdz17ZmFsc2V9XG4gICAgICAgICAgaW50ZXJhY3RpdmVcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGFwcGVuZFRvPXtjb250ZXh0Py5jdXJyZW50IHx8ICdwYXJlbnQnfVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBvbkNyZWF0ZT17c2V0VGlwcHlJbnN0YW5jZX1cbiAgICAgICAgICBkdXJhdGlvbj17MH1cbiAgICAgICAgICBjb250ZW50PXtcbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgIDxEcm9wZG93bkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1RZUEVBSEVBRF9DTEFTU31cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDogVFlQRUFIRUFEX0lOUFVUX0NMQVNTLFxuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwgPyBpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAncGxhY2Vob2xkZXIuc2VhcmNoJ30pIDogJ1NlYXJjaCd9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtudWxsfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e0FjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoJ2xhYmVsJyl9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJPcHRpb249eydsYWJlbCd9XG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlXG4gICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvbk9wdGlvblNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e0xpc3RJdGVtfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7YnV0dG9uUmVuZGVyZWR9XG4gICAgICAgIDwvVGlwcHk+XG4gICAgICApfVxuICAgIDwvUm9vdENvbnRleHQuQ29uc3VtZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBZGRCeURhdGFzZXRCdXR0b247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksT0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUF1QyxJQUFBVyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBZHZDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWhCLHdCQUFBZ0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdC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
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9jYWxpemF0aW9uIiwiX3JlYWN0MiIsIl9pY29ucyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl90eXBlYWhlYWQiLCJfYWNjZXNzb3IiLCJfcmVhY3RJbnRsIiwiX2NvbnRleHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRyb3Bkb3duQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dEJvcmRlckNvbG9yIiwiRHJvcGRvd25NZW51IiwiTGlzdEl0ZW1XcmFwcGVyIiwidGV4dENvbG9yIiwiVFlQRUFIRUFEX0NMQVNTIiwiVFlQRUFIRUFEX0lOUFVUX0NMQVNTIiwiTGlzdEl0ZW0iLCJfcmVmIiwidmFsdWUiLCJjcmVhdGVFbGVtZW50IiwiRGF0YXNldFNxdWFyZSIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwidGl0bGUiLCJsYWJlbCIsIkFkZEJ5RGF0YXNldEJ1dHRvbiIsIl9yZWYyIiwiZGF0YXNldHMiLCJvbkFkZCIsImJ1dHRvbkludGxJZCIsImluYWN0aXZlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidGlwcHlJbnN0YW5jZSIsInNldFRpcHB5SW5zdGFuY2UiLCJvcHRpb25zIiwidXNlTWVtbyIsInZhbHVlcyIsIm1hcCIsImRzIiwiaWQiLCJvbkNsaWNrQnRuIiwidXNlQ2FsbGJhY2siLCJsZW5ndGgiLCJvbk9wdGlvblNlbGVjdGVkIiwib3B0aW9uIiwiaGlkZSIsImludGwiLCJ1c2VJbnRsIiwiYnV0dG9uUmVuZGVyZWQiLCJCdXR0b24iLCJ0YWJJbmRleCIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsIkFkZCIsImhlaWdodCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJSb290Q29udGV4dCIsIkNvbnN1bWVyIiwiY29udGV4dCIsInRyaWdnZXIiLCJhcnJvdyIsImludGVyYWN0aXZlIiwicGxhY2VtZW50IiwiYXBwZW5kVG8iLCJjdXJyZW50Iiwib25DcmVhdGUiLCJkdXJhdGlvbiIsImNvbnRlbnQiLCJjdXN0b21DbGFzc2VzIiwicmVzdWx0cyIsImlucHV0IiwibGlzdEl0ZW0iLCJwbGFjZWhvbGRlciIsImZvcm1hdE1lc3NhZ2UiLCJzZWxlY3RlZEl0ZW1zIiwiZGlzcGxheU9wdGlvbiIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImZpbHRlck9wdGlvbiIsInNlYXJjaGFibGUiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaWRlLXBhbmVsL2FkZC1ieS1kYXRhc2V0LWJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtEYXRhc2V0cywgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQgVGlwcHkgZnJvbSAnQHRpcHB5anMvcmVhY3QnO1xuaW1wb3J0IHtBZGR9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge0J1dHRvbiwgRGF0YXNldFNxdWFyZX0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuLi9jb21tb24vaXRlbS1zZWxlY3Rvci9hY2Nlc3Nvcic7XG5pbXBvcnQge3VzZUludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtSb290Q29udGV4dH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2FkZC1sYXllci1tZW51LWRyb3Bkb3duJ1xufSlgXG4gIC5saXN0LXNlbGVjdG9yIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dEJvcmRlckNvbG9yfTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAvKiBkaXNhYmxlIHNjcm9sbGluZywgY3VycmVudGx5IHNldCB0byAyODBweCBpbnRlcm5hbGx5ICovXG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gIH1cbiAgLmxpc3RfX2l0ZW0gPiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBzdmcge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2Ryb3Bkb3duLW1lbnUnXG59KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAyNDBweDtcbiAgbWF4LXdpZHRoOiAyNDBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IC01M3B4O1xuICB6LWluZGV4OiA1O1xuYDtcblxuY29uc3QgTGlzdEl0ZW1XcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2Ryb3Bkb3duLW1lbnUtbGlzdC1pdGVtLXdyYXBwZXInXG59KWBcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAuZGF0YXNldC1jb2xvciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuICB9XG4gIC5kYXRhc2V0LW5hbWUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuYDtcblxuY29uc3QgVFlQRUFIRUFEX0NMQVNTID0gJ3R5cGVhaGVhZCc7XG5jb25zdCBUWVBFQUhFQURfSU5QVVRfQ0xBU1MgPSAndHlwZWFoZWFkX19pbnB1dCc7XG5cbmV4cG9ydCB0eXBlIEFkZEJ5RGF0YXNldEJ1dHRvblByb3BzID0ge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIG9uQWRkOiAoZGF0YUlkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGJ1dHRvbkludGxJZDogc3RyaW5nO1xuICBpbmFjdGl2ZT86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmNvbnN0IExpc3RJdGVtID0gKHt2YWx1ZX0pID0+IChcbiAgPExpc3RJdGVtV3JhcHBlcj5cbiAgICA8RGF0YXNldFNxdWFyZSBjbGFzc05hbWU9XCJkYXRhc2V0LWNvbG9yXCIgYmFja2dyb3VuZENvbG9yPXt2YWx1ZS5jb2xvcn0gLz5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGFzZXQtbmFtZVwiIHRpdGxlPXt2YWx1ZS5sYWJlbH0+XG4gICAgICB7dmFsdWUubGFiZWx9XG4gICAgPC9kaXY+XG4gIDwvTGlzdEl0ZW1XcmFwcGVyPlxuKTtcblxuY29uc3QgQWRkQnlEYXRhc2V0QnV0dG9uOiBSZWFjdC5GQzxBZGRCeURhdGFzZXRCdXR0b25Qcm9wcz4gPSAoe1xuICBkYXRhc2V0cyxcbiAgb25BZGQsXG4gIGJ1dHRvbkludGxJZCxcbiAgY2xhc3NOYW1lLFxuICBpbmFjdGl2ZVxufSkgPT4ge1xuICBjb25zdCBbdGlwcHlJbnN0YW5jZSwgc2V0VGlwcHlJbnN0YW5jZV0gPSB1c2VTdGF0ZSgpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkYXRhc2V0cykubWFwKChkczogS2VwbGVyVGFibGUpID0+ICh7XG4gICAgICBsYWJlbDogZHMubGFiZWwsXG4gICAgICB2YWx1ZTogZHMuaWQsXG4gICAgICBjb2xvcjogZHMuY29sb3JcbiAgICB9KSk7XG4gIH0sIFtkYXRhc2V0c10pO1xuXG4gIGNvbnN0IG9uQ2xpY2tCdG4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBvbkFkZChvcHRpb25zWzBdLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH0sIFtvcHRpb25zLCBvbkFkZF0pO1xuXG4gIGNvbnN0IG9uT3B0aW9uU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICBvcHRpb24gPT4ge1xuICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb25BZGQob3B0aW9uLnZhbHVlKTtcbiAgICAgIGlmICh0aXBweUluc3RhbmNlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGlwcHlJbnN0YW5jZS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25BZGQsIHRpcHB5SW5zdGFuY2VdXG4gICk7XG5cbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcblxuICBjb25zdCBidXR0b25SZW5kZXJlZCA9IChcbiAgICA8QnV0dG9uXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZSB8fCAnYWRkLWJ5LWRhdGFzZXQtYnV0dG9uJ31cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2tCdG59XG4gICAgICBkaXNhYmxlZD17IW9wdGlvbnMubGVuZ3RoIHx8IGluYWN0aXZlfVxuICAgID5cbiAgICAgIDxBZGQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17YnV0dG9uSW50bElkfSAvPlxuICAgIDwvQnV0dG9uPlxuICApO1xuXG4gIHJldHVybiBvcHRpb25zLmxlbmd0aCA9PT0gMSA/IChcbiAgICBidXR0b25SZW5kZXJlZFxuICApIDogKFxuICAgIDxSb290Q29udGV4dC5Db25zdW1lcj5cbiAgICAgIHtjb250ZXh0ID0+IChcbiAgICAgICAgPFRpcHB5XG4gICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICBhcnJvdz17ZmFsc2V9XG4gICAgICAgICAgaW50ZXJhY3RpdmVcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGFwcGVuZFRvPXtjb250ZXh0Py5jdXJyZW50IHx8ICdwYXJlbnQnfVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBvbkNyZWF0ZT17c2V0VGlwcHlJbnN0YW5jZX1cbiAgICAgICAgICBkdXJhdGlvbj17MH1cbiAgICAgICAgICBjb250ZW50PXtcbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgIDxEcm9wZG93bkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1RZUEVBSEVBRF9DTEFTU31cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDogVFlQRUFIRUFEX0lOUFVUX0NMQVNTLFxuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwgPyBpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAncGxhY2Vob2xkZXIuc2VhcmNoJ30pIDogJ1NlYXJjaCd9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtudWxsfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e0FjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoJ2xhYmVsJyl9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJPcHRpb249eydsYWJlbCd9XG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlXG4gICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvbk9wdGlvblNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e0xpc3RJdGVtfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7YnV0dG9uUmVuZGVyZWR9XG4gICAgICAgIDwvVGlwcHk+XG4gICAgICApfVxuICAgIDwvUm9vdENvbnRleHQuQ29uc3VtZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBZGRCeURhdGFzZXRCdXR0b247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksT0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUF1QyxJQUFBVyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBZHZDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWhCLHdCQUFBZ0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxH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