@kepler.gl/reducers 3.0.0-alpha.0 → 3.0.0-alpha.1

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 (41) hide show
  1. package/dist/combined-updaters.d.ts +30 -1
  2. package/dist/combined-updaters.js +222 -4
  3. package/dist/composer-helpers.d.ts +7 -4
  4. package/dist/composer-helpers.js +18 -9
  5. package/dist/composers.d.ts +6 -0
  6. package/dist/composers.js +3 -3
  7. package/dist/core.d.ts +1 -1
  8. package/dist/core.js +16 -6
  9. package/dist/data-utils.js +2 -3
  10. package/dist/export-utils.js +2 -2
  11. package/dist/index.d.ts +2 -3
  12. package/dist/index.js +37 -16
  13. package/dist/interaction-utils.d.ts +1 -5
  14. package/dist/interaction-utils.js +5 -10
  15. package/dist/layer-utils.d.ts +39 -10
  16. package/dist/layer-utils.js +110 -35
  17. package/dist/map-state-updaters.d.ts +33 -2
  18. package/dist/map-state-updaters.js +278 -19
  19. package/dist/map-state.d.ts +74 -2
  20. package/dist/map-state.js +3 -3
  21. package/dist/map-style-updaters.d.ts +30 -17
  22. package/dist/map-style-updaters.js +303 -84
  23. package/dist/map-style.js +3 -3
  24. package/dist/merger-handler.d.ts +10 -0
  25. package/dist/merger-handler.js +143 -0
  26. package/dist/middleware.js +2 -2
  27. package/dist/provider-state-updaters.js +2 -2
  28. package/dist/provider-state.js +2 -2
  29. package/dist/root.d.ts +1 -8
  30. package/dist/root.js +25 -11
  31. package/dist/ui-state-updaters.d.ts +9 -2
  32. package/dist/ui-state-updaters.js +88 -63
  33. package/dist/ui-state.js +3 -3
  34. package/dist/vis-state-merger.d.ts +47 -13
  35. package/dist/vis-state-merger.js +393 -107
  36. package/dist/vis-state-selectors.js +2 -2
  37. package/dist/vis-state-updaters.d.ts +136 -10
  38. package/dist/vis-state-updaters.js +924 -262
  39. package/dist/vis-state.d.ts +210 -2
  40. package/dist/vis-state.js +3 -3
  41. package/package.json +20 -18
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
1
+ // Copyright (c) 2023 Uber Technologies, Inc.
2
2
  //
3
3
  // Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  // of this software and associated documentation files (the "Software"), to deal
@@ -34,7 +34,11 @@ exports.isLayerVisible = isLayerVisible;
34
34
  exports.prepareLayersForDeck = prepareLayersForDeck;
35
35
  exports.prepareLayersToRender = prepareLayersToRender;
36
36
  exports.getCustomDeckLayers = getCustomDeckLayers;
37
+ exports.bindLayerCallbacks = bindLayerCallbacks;
37
38
  exports.computeDeckLayers = computeDeckLayers;
39
+ exports.getLayerOrderFromLayers = getLayerOrderFromLayers;
40
+ exports.reorderLayerOrder = reorderLayerOrder;
41
+ exports.addLayerToLayerOrder = addLayerToLayerOrder;
38
42
 
39
43
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
40
44
 
@@ -42,6 +46,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
42
46
 
43
47
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
44
48
 
49
+ var _sortable = require("@dnd-kit/sortable");
50
+
45
51
  var _constants = require("@kepler.gl/constants");
46
52
 
47
53
  var _layers = require("@kepler.gl/layers");
@@ -82,26 +88,52 @@ function findDefaultLayer(dataset, layerClasses) {
82
88
  return typeof layer.setInitialLayerConfig === 'function' && dataset.dataContainer ? layer.setInitialLayerConfig(dataset) : layer;
83
89
  });
84
90
  }
91
+
85
92
  /**
86
- * calculate layer data based on layer type, col Config,
87
- * return updated layer if colorDomain, dataMap has changed
93
+ * Calculate layer data based on layer type, col Config,
94
+ * return updated layer if colorDomain, dataMap has changed.
95
+ * Also, returns updated layer in case the input layer was in invalid state.
96
+ * Adds an error message to the layer in case of an exception.
88
97
  */
98
+ function calculateLayerData(layer, state, oldLayerData) {
99
+ var layerData;
89
100
 
101
+ try {
102
+ // Make sure the layer updates data after an error
103
+ if (!layer.isValid) {
104
+ layer._oldDataUpdateTriggers = undefined;
105
+ }
90
106
 
91
- function calculateLayerData(layer, state, oldLayerData) {
92
- var type = layer.type;
107
+ if (!layer.type || !layer.hasAllColumns() || !layer.config.dataId) {
108
+ return {
109
+ layer: layer,
110
+ layerData: {}
111
+ };
112
+ }
93
113
 
94
- if (!type || !layer.hasAllColumns() || !layer.config.dataId) {
95
- return {
96
- layer: layer,
97
- layerData: {}
98
- };
114
+ layerData = layer.formatLayerData(state.datasets, oldLayerData); // At this point the data for the layer is updated without errors
115
+
116
+ if (!layer.isValid) {
117
+ // Switch to visible after an error
118
+ layer = layer.updateLayerConfig({
119
+ isVisible: true
120
+ });
121
+ }
122
+
123
+ layer.isValid = true;
124
+ layer.errorMessage = null;
125
+ } catch (err) {
126
+ layer = layer.updateLayerConfig({
127
+ isVisible: false
128
+ });
129
+ layer.isValid = false;
130
+ layer.errorMessage = err instanceof Error && err.message ? err.message.substring(0, 100) : 'Unknown error';
131
+ layerData = {};
99
132
  }
100
133
 
101
- var layerData = layer.formatLayerData(state.datasets, oldLayerData);
102
134
  return {
103
- layerData: layerData,
104
- layer: layer
135
+ layer: layer,
136
+ layerData: layerData
105
137
  };
106
138
  }
107
139
  /**
@@ -136,6 +168,11 @@ function getLayerHoverProp(_ref) {
136
168
  dataContainer = _datasets$dataId.dataContainer,
137
169
  fields = _datasets$dataId.fields;
138
170
  var data = layer.getHoverData(object, dataContainer, fields);
171
+
172
+ if (!data) {
173
+ return null;
174
+ }
175
+
139
176
  var fieldsToShow = interactionConfig.tooltip.config.fieldsToShow[dataId];
140
177
  return {
141
178
  data: data,
@@ -149,20 +186,20 @@ function getLayerHoverProp(_ref) {
149
186
  return null;
150
187
  }
151
188
 
152
- function renderDeckGlLayer(props, layerCallbacks, idx) {
189
+ function renderDeckGlLayer(props, layerCallbacks) {
153
190
  var datasets = props.datasets,
154
- layers = props.layers,
155
- layerData = props.layerData,
191
+ layer = props.layer,
192
+ layerIndex = props.layerIndex,
193
+ data = props.data,
156
194
  hoverInfo = props.hoverInfo,
157
195
  clicked = props.clicked,
158
196
  mapState = props.mapState,
159
197
  interactionConfig = props.interactionConfig,
160
198
  animationConfig = props.animationConfig,
161
199
  mapLayers = props.mapLayers;
162
- var layer = layers[idx];
163
- var data = layerData[idx];
200
+ var dataset = datasets[layer.config.dataId];
164
201
 
165
- var _ref2 = datasets[layer.config.dataId] || {},
202
+ var _ref2 = dataset || {},
166
203
  gpuFilter = _ref2.gpuFilter;
167
204
 
168
205
  var objectHovered = clicked || hoverInfo;
@@ -171,7 +208,7 @@ function renderDeckGlLayer(props, layerCallbacks, idx) {
171
208
  return layer.renderLayer({
172
209
  data: data,
173
210
  gpuFilter: gpuFilter,
174
- idx: idx,
211
+ idx: layerIndex,
175
212
  interactionConfig: interactionConfig,
176
213
  layerCallbacks: layerCallbacks,
177
214
  mapState: mapState,
@@ -214,7 +251,18 @@ function getCustomDeckLayers(deckGlProps) {
214
251
  return [bottomDeckLayers, topDeckLayers];
215
252
  }
216
253
 
217
- function computeDeckLayers(_ref3, options, _onSetLayerDomain, deckGlProps) {
254
+ function bindLayerCallbacks() {
255
+ var layerCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
256
+ var idx = arguments.length > 1 ? arguments[1] : undefined;
257
+ return Object.keys(layerCallbacks).reduce(function (accu, key) {
258
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, function (val) {
259
+ return layerCallbacks[key](idx, val);
260
+ }));
261
+ }, {});
262
+ }
263
+
264
+ // eslint-disable-next-line complexity
265
+ function computeDeckLayers(_ref3, options, layerCallbacks, deckGlProps) {
218
266
  var visState = _ref3.visState,
219
267
  mapState = _ref3.mapState,
220
268
  mapStyle = _ref3.mapStyle;
@@ -233,32 +281,36 @@ function computeDeckLayers(_ref3, options, _onSetLayerDomain, deckGlProps) {
233
281
  mapboxApiAccessToken = _ref4.mapboxApiAccessToken,
234
282
  mapboxApiUrl = _ref4.mapboxApiUrl,
235
283
  primaryMap = _ref4.primaryMap,
236
- layersForDeck = _ref4.layersForDeck;
284
+ layersForDeck = _ref4.layersForDeck,
285
+ editorInfo = _ref4.editorInfo;
237
286
 
238
287
  var dataLayers = [];
239
288
 
240
289
  if (layerData && layerData.length) {
241
290
  var mapLayers = (0, _utils.getMapLayersFromSplitMaps)(splitMaps, mapIndex || 0);
242
291
  var currentLayersForDeck = layersForDeck || prepareLayersForDeck(layers, layerData);
243
- dataLayers = layerOrder.slice().reverse().filter(function (idx) {
244
- return currentLayersForDeck[layers[idx].id];
245
- }).reduce(function (overlays, idx) {
246
- var layerCallbacks = _onSetLayerDomain ? {
247
- onSetLayerDomain: function onSetLayerDomain(val) {
248
- return _onSetLayerDomain(idx, val);
249
- }
250
- } : {};
292
+ dataLayers = layerOrder.slice().reverse().filter(function (id) {
293
+ return currentLayersForDeck[id];
294
+ }).reduce(function (overlays, layerId) {
295
+ var layerIndex = layers.findIndex(function (_ref5) {
296
+ var id = _ref5.id;
297
+ return id === layerId;
298
+ });
299
+ var bindedLayerCallbacks = layerCallbacks ? bindLayerCallbacks(layerCallbacks, layerIndex) : {};
300
+ var layer = layers[layerIndex];
301
+ var data = layerData[layerIndex];
251
302
  var layerOverlay = renderDeckGlLayer({
252
303
  datasets: datasets,
253
- layers: layers,
254
- layerData: layerData,
304
+ layer: layer,
305
+ layerIndex: layerIndex,
306
+ data: data,
255
307
  hoverInfo: hoverInfo,
256
308
  clicked: clicked,
257
309
  mapState: mapState,
258
310
  interactionConfig: interactionConfig,
259
311
  animationConfig: animationConfig,
260
312
  mapLayers: mapLayers
261
- }, layerCallbacks, idx);
313
+ }, bindedLayerCallbacks);
262
314
  return overlays.concat(layerOverlay || []);
263
315
  }, []);
264
316
  }
@@ -284,6 +336,29 @@ function computeDeckLayers(_ref3, options, _onSetLayerDomain, deckGlProps) {
284
336
  customBottomDeckLayers = _getCustomDeckLayers2[0],
285
337
  customTopDeckLayers = _getCustomDeckLayers2[1];
286
338
 
287
- return [].concat((0, _toConsumableArray2["default"])(customBottomDeckLayers), (0, _toConsumableArray2["default"])(dataLayers), (0, _toConsumableArray2["default"])(customTopDeckLayers));
339
+ var editorLayer = [];
340
+
341
+ if (editorInfo) {
342
+ editorLayer.push((0, _layers.getEditorLayer)(_objectSpread({}, editorInfo)));
343
+ }
344
+
345
+ return [].concat((0, _toConsumableArray2["default"])(customBottomDeckLayers), (0, _toConsumableArray2["default"])(dataLayers), (0, _toConsumableArray2["default"])(customTopDeckLayers), editorLayer);
346
+ }
347
+
348
+ function getLayerOrderFromLayers(layers) {
349
+ return layers.map(function (_ref6) {
350
+ var id = _ref6.id;
351
+ return id;
352
+ });
353
+ }
354
+
355
+ function reorderLayerOrder(layerOrder, originLayerId, destinationLayerId) {
356
+ var activeIndex = layerOrder.indexOf(originLayerId);
357
+ var overIndex = layerOrder.indexOf(destinationLayerId);
358
+ return (0, _sortable.arrayMove)(layerOrder, activeIndex, overIndex);
359
+ }
360
+
361
+ function addLayerToLayerOrder(layerOrder, layerId) {
362
+ return [layerId].concat((0, _toConsumableArray2["default"])(layerOrder));
288
363
  }
289
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXllci11dGlscy50cyJdLCJuYW1lcyI6WyJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldmlvdXMiLCJsYyIsInJlc3VsdCIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsInByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm91bmRMYXllcnMiLCJjb25jYXQiLCJtYXAiLCJwIiwidHlwZSIsImRhdGFJZCIsImlkIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwic3RhdGUiLCJvbGRMYXllckRhdGEiLCJoYXNBbGxDb2x1bW5zIiwiY29uZmlnIiwibGF5ZXJEYXRhIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJnZXRMYXllckhvdmVyUHJvcCIsImludGVyYWN0aW9uQ29uZmlnIiwiaG92ZXJJbmZvIiwibGF5ZXJzIiwibGF5ZXJzVG9SZW5kZXIiLCJ0b29sdGlwIiwiZW5hYmxlZCIsInBpY2tlZCIsIm9iamVjdCIsIm92ZXJsYXkiLCJpZHgiLCJnZXRIb3ZlckRhdGEiLCJmaWVsZHMiLCJkYXRhIiwiZmllbGRzVG9TaG93IiwicmVuZGVyRGVja0dsTGF5ZXIiLCJsYXllckNhbGxiYWNrcyIsImNsaWNrZWQiLCJtYXBTdGF0ZSIsImFuaW1hdGlvbkNvbmZpZyIsIm1hcExheWVycyIsImdwdUZpbHRlciIsIm9iamVjdEhvdmVyZWQiLCJ2aXNpYmxlIiwicmVuZGVyTGF5ZXIiLCJpc0xheWVyUmVuZGVyYWJsZSIsIkdFT0NPREVSX0xBWUVSX0lEIiwic2hvdWxkUmVuZGVyTGF5ZXIiLCJpc0xheWVyVmlzaWJsZSIsImlzVmlzaWJsZSIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiYWNjdSIsIm92ZXJsYXlUeXBlIiwiT1ZFUkxBWV9UWVBFX0NPTlNUIiwiZGVja2dsIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwiZ2V0Q3VzdG9tRGVja0xheWVycyIsImRlY2tHbFByb3BzIiwiYm90dG9tRGVja0xheWVycyIsInRvcERlY2tMYXllcnMiLCJ0b3BMYXllcnMiLCJjb21wdXRlRGVja0xheWVycyIsIm9wdGlvbnMiLCJvblNldExheWVyRG9tYWluIiwidmlzU3RhdGUiLCJtYXBTdHlsZSIsImxheWVyT3JkZXIiLCJzcGxpdE1hcHMiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwicHJpbWFyeU1hcCIsImxheWVyc0ZvckRlY2siLCJkYXRhTGF5ZXJzIiwibGVuZ3RoIiwiY3VycmVudExheWVyc0ZvckRlY2siLCJzbGljZSIsInJldmVyc2UiLCJmaWx0ZXIiLCJvdmVybGF5cyIsInZhbCIsImxheWVyT3ZlcmxheSIsInZpc2libGVMYXllckdyb3VwcyIsInB1c2giLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0RmlsbENvbG9yIiwiY3VzdG9tQm90dG9tRGVja0xheWVycyIsImN1c3RvbVRvcERlY2tMYXllcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFRQTs7QUFTQTs7QUFDQTs7Ozs7O0FBaUJBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLGdCQUFULENBQTBCQyxPQUExQixFQUFnREMsWUFBaEQsRUFBeUY7QUFDOUYsTUFBSSxDQUFDRCxPQUFMLEVBQWM7QUFDWixXQUFPLEVBQVA7QUFDRDs7QUFDRCxNQUFNRSxVQUFVLEdBQUlDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxZQUFaLENBQUQsQ0FBNkRJLE1BQTdELENBQ2pCLFVBQUNDLFFBQUQsRUFBV0MsRUFBWCxFQUFrQjtBQUNoQixRQUFNQyxNQUF3QyxHQUM1QyxPQUFPUCxZQUFZLENBQUNNLEVBQUQsQ0FBWixDQUFpQkUscUJBQXhCLEtBQWtELFVBQWxE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Qjs7QUE0RVQsdURBQVdELHNCQUFYLHVDQUFzQ2YsVUFBdEMsdUNBQXFEZ0IsbUJBQXJEO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0dFT0NPREVSX0xBWUVSX0lEfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBGaWVsZCxcbiAgVG9vbHRpcEZpZWxkLFxuICBDb21wYXJlVHlwZSxcbiAgU3BsaXRNYXBMYXllcnMsXG4gIEludGVyYWN0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUsXG4gIExheWVyLFxuICBMYXllckNsYXNzZXNUeXBlLFxuICBPVkVSTEFZX1RZUEVfQ09OU1Rcbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuXG5pbXBvcnQgS2VwbGVyVGFibGUsIHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtpc0Z1bmN0aW9uLCBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzLCBEYXRhUm93fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7VGhyZWVEQnVpbGRpbmdMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJzVG9SZW5kZXIgPSB7XG4gIFtsYXllcklkOiBzdHJpbmddOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSA9IHtwb2ludHM6IGFueVtdOyBjb2xvclZhbHVlPzogYW55OyBlbGV2YXRpb25WYWx1ZT86IGFueX07XG5cbmV4cG9ydCB0eXBlIExheWVySG92ZXJQcm9wID0ge1xuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGw7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRzVG9TaG93OiBUb29sdGlwRmllbGRbXTtcbiAgbGF5ZXI6IExheWVyO1xuICBwcmltYXJ5RGF0YT86IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgbnVsbDtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbn07XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0OiBLZXBsZXJUYWJsZSwgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlKTogTGF5ZXJbXSB7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBsYXllclByb3BzID0gKE9iamVjdC5rZXlzKGxheWVyQ2xhc3NlcykgYXMgQXJyYXk8a2V5b2YgTGF5ZXJDbGFzc2VzVHlwZT4pLnJlZHVjZShcbiAgICAocHJldmlvdXMsIGxjKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlID1cbiAgICAgICAgdHlwZW9mIGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0LCBwcmV2aW91cylcbiAgICAgICAgICA6IHtwcm9wczogW119O1xuXG4gICAgICBjb25zdCBwcm9wcyA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IHJlc3VsdC5wcm9wcyB8fCBbXTtcbiAgICAgIGNvbnN0IGZvdW5kTGF5ZXJzID0gcmVzdWx0LmZvdW5kTGF5ZXJzIHx8IHByZXZpb3VzO1xuXG4gICAgICByZXR1cm4gZm91bmRMYXllcnMuY29uY2F0KFxuICAgICAgICBwcm9wcy5tYXAocCA9PiAoe1xuICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgdHlwZTogbGMsXG4gICAgICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkXG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtdIGFzIExheWVyQ2xhc3Nlc1R5cGVba2V5b2YgTGF5ZXJDbGFzc2VzVHlwZV1bXVxuICApO1xuXG4gIC8vIGdvIHRocm91Z2ggYWxsIGxheWVyUHJvcHMgdG8gY3JlYXRlIGxheWVyXG4gIHJldHVybiBsYXllclByb3BzLm1hcChwcm9wcyA9PiB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBjaGVja2luZyBwcm9wcy50eXBlICE9PSBudWxsXG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3Byb3BzLnR5cGVdKHByb3BzKTtcbiAgICByZXR1cm4gdHlwZW9mIGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyAmJiBkYXRhc2V0LmRhdGFDb250YWluZXJcbiAgICAgID8gbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnKGRhdGFzZXQpXG4gICAgICA6IGxheWVyO1xuICB9KTtcbn1cblxuLyoqXG4gKiBjYWxjdWxhdGUgbGF5ZXIgZGF0YSBiYXNlZCBvbiBsYXllciB0eXBlLCBjb2wgQ29uZmlnLFxuICogcmV0dXJuIHVwZGF0ZWQgbGF5ZXIgaWYgY29sb3JEb21haW4sIGRhdGFNYXAgaGFzIGNoYW5nZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUxheWVyRGF0YShcbiAgbGF5ZXI6IExheWVyLFxuICBzdGF0ZToge2RhdGFzZXRzOiBEYXRhc2V0c30sXG4gIG9sZExheWVyRGF0YT86IGFueVxuKToge1xuICBsYXllckRhdGE6IGFueTtcbiAgbGF5ZXI6IExheWVyO1xufSB7XG4gIGNvbnN0IHt0eXBlfSA9IGxheWVyO1xuXG4gIGlmICghdHlwZSB8fCAhbGF5ZXIuaGFzQWxsQ29sdW1ucygpIHx8ICFsYXllci5jb25maWcuZGF0YUlkKSB7XG4gICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gIH1cblxuICBjb25zdCBsYXllckRhdGEgPSBsYXllci5mb3JtYXRMYXllckRhdGEoc3RhdGUuZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG4gIHJldHVybiB7bGF5ZXJEYXRhLCBsYXllcn07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByb3BzIHBhc3NlZCB0byBMYXllckhvdmVySW5mb1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbGF5ZXItdXRpbHMnKS5nZXRMYXllckhvdmVyUHJvcH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgaW50ZXJhY3Rpb25Db25maWcsXG4gIGhvdmVySW5mbyxcbiAgbGF5ZXJzLFxuICBsYXllcnNUb1JlbmRlcixcbiAgZGF0YXNldHNcbn06IHtcbiAgaW50ZXJhY3Rpb25Db25maWc6IEludGVyYWN0aW9uQ29uZmlnO1xuICBob3ZlckluZm86IGFueTtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBsYXllcnNUb1JlbmRlcjogTGF5ZXJzVG9SZW5kZXI7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbn0pOiBMYXllckhvdmVyUHJvcCB8IG51bGwge1xuICBpZiAoaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkICYmIGhvdmVySW5mbyAmJiBob3ZlckluZm8ucGlja2VkKSB7XG4gICAgLy8gaWYgYW55dGhpbmcgaG92ZXJlZFxuICAgIGNvbnN0IHtvYmplY3QsIGxheWVyOiBvdmVybGF5fSA9IGhvdmVySW5mbztcblxuICAgIC8vIGRlY2tnbCBsYXllciB0byBrZXBsZXItZ2wgbGF5ZXJcbiAgICBjb25zdCBsYXllciA9IGxheWVyc1tvdmVybGF5LnByb3BzLmlkeF07XG5cbiAgICBpZiAob2JqZWN0ICYmIGxheWVyICYmIGxheWVyLmdldEhvdmVyRGF0YSAmJiBsYXllcnNUb1JlbmRlcltsYXllci5pZF0pIHtcbiAgICAgIC8vIGlmIGxheWVyIGlzIHZpc2libGUgYW5kIGhhdmUgaG92ZXJlZCBkYXRhXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge2RhdGFJZH1cbiAgICAgIH0gPSBsYXllcjtcbiAgICAgIGlmICghZGF0YUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZGF0YTogRGF0YVJvdyB8IG51bGwgPSBsYXllci5nZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyLCBmaWVsZHMpO1xuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllclxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSwgaWR4OiBudW1iZXIpIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGxheWVycyxcbiAgICBsYXllckRhdGEsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVyc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGxheWVyID0gbGF5ZXJzW2lkeF07XG4gIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbaWR4XTtcbiAgY29uc3Qge2dwdUZpbHRlcn0gPSBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSB8fCB7fTtcbiAgY29uc3Qgb2JqZWN0SG92ZXJlZCA9IGNsaWNrZWQgfHwgaG92ZXJJbmZvO1xuICBjb25zdCB2aXNpYmxlID0gIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pO1xuICAvLyBMYXllciBpcyBMYXllciBjbGFzc1xuICByZXR1cm4gbGF5ZXIucmVuZGVyTGF5ZXIoe1xuICAgIGRhdGEsXG4gICAgZ3B1RmlsdGVyLFxuICAgIGlkeCxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICBsYXllckNhbGxiYWNrcyxcbiAgICBtYXBTdGF0ZSxcbiAgICBhbmltYXRpb25Db25maWcsXG4gICAgb2JqZWN0SG92ZXJlZCxcbiAgICB2aXNpYmxlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclJlbmRlcmFibGUobGF5ZXI6IExheWVyLCBsYXllckRhdGEpIHtcbiAgcmV0dXJuIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihsYXllckRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycykge1xuICByZXR1cm4gKFxuICAgIGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAvLyBpZiBsYXllci5pZCBpcyBub3QgaW4gbWFwTGF5ZXJzLCBkb24ndCByZW5kZXIgaXRcbiAgICAoIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pKVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgdGhlIGRlY2suZ2xcbi8vIE5vdGUsIGlzVmlzaWJsZTogZmFsc2UgbGF5ZXIgaXMgcGFzc2VkIHRvIGRlY2suZ2wgaGVyZVxuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNGb3JEZWNrKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogYW55W11cbik6IHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn0ge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOlxuICAgICAgICBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGxheWVyLm92ZXJsYXlUeXBlID09PSBPVkVSTEFZX1RZUEVfQ09OU1QuZGVja2dsXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgcmVuZGVyZWQgbGF5ZXJzIHJlbmRlcmVkIGluIHRoZSBtYXBcbi8vIFRoaXMgaW5jbHVkZXMgb25seSB0aGUgdmlzaWJpbGUgbGF5ZXJzIGZvciBzaW5nbGUgbWFwIHZpZXcgYW5kIHNwbGl0IG1hcCB2aWV3XG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc1RvUmVuZGVyKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddLFxuICBtYXBMYXllcnM/OiBTcGxpdE1hcExheWVycyB8IHVuZGVmaW5lZCB8IG51bGxcbik6IExheWVyc1RvUmVuZGVyIHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTogaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKSB7XG4gIGNvbnN0IGJvdHRvbURlY2tMYXllcnMgPSBBcnJheS5pc0FycmF5KGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzXG4gICAgOiBpc0Z1bmN0aW9uKGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzKClcbiAgICA6IFtdO1xuICBjb25zdCB0b3BEZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVycygpXG4gICAgOiBbXTtcblxuICByZXR1cm4gW2JvdHRvbURlY2tMYXllcnMsIHRvcERlY2tMYXllcnNdO1xufVxuXG5leHBvcnQgdHlwZSBDb21wdXRlRGVja0xheWVyc1Byb3BzID0ge1xuICBtYXBJbmRleD86IG51bWJlcjtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgcHJpbWFyeU1hcD86IGJvb2xlYW47XG4gIGxheWVyc0ZvckRlY2s/OiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2tMYXllcnMoXG4gIHt2aXNTdGF0ZSwgbWFwU3RhdGUsIG1hcFN0eWxlfTogYW55LFxuICBvcHRpb25zPzogQ29tcHV0ZURlY2tMYXllcnNQcm9wcyxcbiAgb25TZXRMYXllckRvbWFpbj86IChpZHg6IG51bWJlciwgdmFsdWU6IGFueSkgPT4gdm9pZCxcbiAgZGVja0dsUHJvcHM/OiBhbnlcbik6IExheWVyW10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHttYXBJbmRleCwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgcHJpbWFyeU1hcCwgbGF5ZXJzRm9yRGVja30gPSBvcHRpb25zIHx8IHt9O1xuXG4gIGxldCBkYXRhTGF5ZXJzOiBhbnlbXSA9IFtdO1xuXG4gIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgIGNvbnN0IG1hcExheWVycyA9IGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMoc3BsaXRNYXBzLCBtYXBJbmRleCB8fCAwKTtcblxuICAgIGNvbnN0IGN1cnJlbnRMYXllcnNGb3JEZWNrID0gbGF5ZXJzRm9yRGVjayB8fCBwcmVwYXJlTGF5ZXJzRm9yRGVjayhsYXllcnMsIGxheWVyRGF0YSk7XG5cbiAgICBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgLnNsaWNlKClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maWx0ZXIoaWR4ID0+IGN1cnJlbnRMYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBpZHgpID0+IHtcbiAgICAgICAgY29uc3QgbGF5ZXJDYWxsYmFja3MgPSBvblNldExheWVyRG9tYWluXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIG9uU2V0TGF5ZXJEb21haW46IHZhbCA9PiBvblNldExheWVyRG9tYWluKGlkeCwgdmFsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge307XG4gICAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgICBtYXBMYXllcnNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxheWVyQ2FsbGJhY2tzLFxuICAgICAgICAgIGlkeFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBpZiAoIXByaW1hcnlNYXApIHtcbiAgICByZXR1cm4gZGF0YUxheWVycztcbiAgfVxuXG4gIGlmIChcbiAgICBtYXBTdHlsZT8udmlzaWJsZUxheWVyR3JvdXBzWyczZCBidWlsZGluZyddICYmXG4gICAgcHJpbWFyeU1hcCAmJlxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuICYmXG4gICAgbWFwYm94QXBpVXJsXG4gICkge1xuICAgIGRhdGFMYXllcnMucHVzaChcbiAgICAgIG5ldyBUaHJlZURCdWlsZGluZ0xheWVyKHtcbiAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdCBbY3VzdG9tQm90dG9tRGVja0xheWVycywgY3VzdG9tVG9wRGVja0xheWVyc10gPSBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKTtcblxuICByZXR1cm4gWy4uLmN1c3RvbUJvdHRvbURlY2tMYXllcnMsIC4uLmRhdGFMYXllcnMsIC4uLmN1c3RvbVRvcERlY2tMYXllcnNdO1xufVxuIl19
364
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXllci11dGlscy50cyJdLCJuYW1lcyI6WyJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldmlvdXMiLCJsYyIsInJlc3VsdCIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsInByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm91bmRMYXllcnMiLCJjb25jYXQiLCJtYXAiLCJwIiwidHlwZSIsImRhdGFJZCIsImlkIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwic3RhdGUiLCJvbGRMYXllckRhdGEiLCJsYXllckRhdGEiLCJpc1ZhbGlkIiwiX29sZERhdGFVcGRhdGVUcmlnZ2VycyIsInVuZGVmaW5lZCIsImhhc0FsbENvbHVtbnMiLCJjb25maWciLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiaXNWaXNpYmxlIiwiZXJyb3JNZXNzYWdlIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwic3Vic3RyaW5nIiwiZ2V0TGF5ZXJIb3ZlclByb3AiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVycyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiZ2V0SG92ZXJEYXRhIiwiZmllbGRzIiwiZGF0YSIsImZpZWxkc1RvU2hvdyIsInJlbmRlckRlY2tHbExheWVyIiwibGF5ZXJDYWxsYmFja3MiLCJsYXllckluZGV4IiwiY2xpY2tlZCIsIm1hcFN0YXRlIiwiYW5pbWF0aW9uQ29uZmlnIiwibWFwTGF5ZXJzIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsInZpc2libGUiLCJyZW5kZXJMYXllciIsImlzTGF5ZXJSZW5kZXJhYmxlIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJzaG91bGRSZW5kZXJMYXllciIsImlzTGF5ZXJWaXNpYmxlIiwicHJlcGFyZUxheWVyc0ZvckRlY2siLCJhY2N1Iiwib3ZlcmxheVR5cGUiLCJPVkVSTEFZX1RZUEVfQ09OU1QiLCJkZWNrZ2wiLCJwcmVwYXJlTGF5ZXJzVG9SZW5kZXIiLCJnZXRDdXN0b21EZWNrTGF5ZXJzIiwiZGVja0dsUHJvcHMiLCJib3R0b21EZWNrTGF5ZXJzIiwidG9wRGVja0xheWVycyIsInRvcExheWVycyIsImJpbmRMYXllckNhbGxiYWNrcyIsImtleSIsInZhbCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwib3B0aW9ucyIsInZpc1N0YXRlIiwibWFwU3R5bGUiLCJsYXllck9yZGVyIiwic3BsaXRNYXBzIiwibWFwSW5kZXgiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsInByaW1hcnlNYXAiLCJsYXllcnNGb3JEZWNrIiwiZWRpdG9ySW5mbyIsImRhdGFMYXllcnMiLCJsZW5ndGgiLCJjdXJyZW50TGF5ZXJzRm9yRGVjayIsInNsaWNlIiwicmV2ZXJzZSIsImZpbHRlciIsIm92ZXJsYXlzIiwibGF5ZXJJZCIsImZpbmRJbmRleCIsImJpbmRlZExheWVyQ2FsbGJhY2tzIiwibGF5ZXJPdmVybGF5IiwidmlzaWJsZUxheWVyR3JvdXBzIiwicHVzaCIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRGaWxsQ29sb3IiLCJjdXN0b21Cb3R0b21EZWNrTGF5ZXJzIiwiY3VzdG9tVG9wRGVja0xheWVycyIsImVkaXRvckxheWVyIiwiZ2V0TGF5ZXJPcmRlckZyb21MYXllcnMiLCJyZW9yZGVyTGF5ZXJPcmRlciIsIm9yaWdpbkxheWVySWQiLCJkZXN0aW5hdGlvbkxheWVySWQiLCJhY3RpdmVJbmRleCIsImluZGV4T2YiLCJvdmVySW5kZXgiLCJhZGRMYXllclRvTGF5ZXJPcmRlciJdLCJt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LENBQVc7QUFBQSxRQUFFSSxFQUFGLFNBQUVBLEVBQUY7QUFBQSxXQUFVQSxFQUFWO0FBQUEsR0FBWCxDQUFQO0FBQ0Q7O0FBRU0sU0FBU21HLGlCQUFULENBQ0w3QixVQURLLEVBRUw4QixhQUZLLEVBR0xDLGtCQUhLLEVBSW1CO0FBQ3hCLE1BQU1DLFdBQVcsR0FBR2hDLFVBQVUsQ0FBQ2lDLE9BQVgsQ0FBbUJILGFBQW5CLENBQXBCO0FBQ0EsTUFBTUksU0FBUyxHQUFHbEMsVUFBVSxDQUFDaUMsT0FBWCxDQUFtQkYsa0JBQW5CLENBQWxCO0FBRUEsU0FBTyx5QkFBVS9CLFVBQVYsRUFBc0JnQyxXQUF0QixFQUFtQ0UsU0FBbkMsQ0FBUDtBQUNEOztBQUVNLFNBQVNDLG9CQUFULENBQ0xuQyxVQURLLEVBRUxlLE9BRkssRUFHSztBQUNWLFVBQVFBLE9BQVIsNkNBQW9CZixVQUFwQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHthcnJheU1vdmV9IGZyb20gJ0BkbmQta2l0L3NvcnRhYmxlJztcbmltcG9ydCB7R0VPQ09ERVJfTEFZRVJfSUR9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyLCBMYXllclByb3BzIGFzIERlY2tMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7XG4gIEZpZWxkLFxuICBUb29sdGlwRmllbGQsXG4gIENvbXBhcmVUeXBlLFxuICBTcGxpdE1hcExheWVycyxcbiAgSW50ZXJhY3Rpb25Db25maWcsXG4gIEVkaXRvcixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQsXG4gIFZpZXdwb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUsXG4gIExheWVyLFxuICBMYXllckNsYXNzZXNUeXBlLFxuICBPVkVSTEFZX1RZUEVfQ09OU1QsXG4gIGdldEVkaXRvckxheWVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcblxuaW1wb3J0IEtlcGxlclRhYmxlLCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7aXNGdW5jdGlvbiwgZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcywgRGF0YVJvd30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1RocmVlREJ1aWxkaW5nTGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmV4cG9ydCB0eXBlIExheWVyc1RvUmVuZGVyID0ge1xuICBbbGF5ZXJJZDogc3RyaW5nXTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgPSB7cG9pbnRzOiBhbnlbXTsgY29sb3JWYWx1ZT86IGFueTsgZWxldmF0aW9uVmFsdWU/OiBhbnl9O1xuXG5leHBvcnQgdHlwZSBMYXllckhvdmVyUHJvcCA9IHtcbiAgZGF0YTogRGF0YVJvdyB8IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgfCBudWxsO1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGZpZWxkc1RvU2hvdzogVG9vbHRpcEZpZWxkW107XG4gIGxheWVyOiBMYXllcjtcbiAgcHJpbWFyeURhdGE/OiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGw7XG4gIGNvbXBhcmVUeXBlPzogQ29tcGFyZVR5cGU7XG59O1xuXG4vKipcbiAqIEZpbmQgZGVmYXVsdCBsYXllcnMgZnJvbSBmaWVsZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZWZhdWx0TGF5ZXIoZGF0YXNldDogS2VwbGVyVGFibGUsIGxheWVyQ2xhc3NlczogTGF5ZXJDbGFzc2VzVHlwZSk6IExheWVyW10ge1xuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgbGF5ZXJQcm9wcyA9IChPYmplY3Qua2V5cyhsYXllckNsYXNzZXMpIGFzIEFycmF5PGtleW9mIExheWVyQ2xhc3Nlc1R5cGU+KS5yZWR1Y2UoXG4gICAgKHByZXZpb3VzLCBsYykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCwgcHJldmlvdXMpXG4gICAgICAgICAgOiB7cHJvcHM6IFtdfTtcblxuICAgICAgY29uc3QgcHJvcHMgPSBBcnJheS5pc0FycmF5KHJlc3VsdCkgPyByZXN1bHQgOiByZXN1bHQucHJvcHMgfHwgW107XG4gICAgICBjb25zdCBmb3VuZExheWVycyA9IHJlc3VsdC5mb3VuZExheWVycyB8fCBwcmV2aW91cztcblxuICAgICAgcmV0dXJuIGZvdW5kTGF5ZXJzLmNvbmNhdChcbiAgICAgICAgcHJvcHMubWFwKHAgPT4gKHtcbiAgICAgICAgICAuLi5wLFxuICAgICAgICAgIHR5cGU6IGxjLFxuICAgICAgICAgIGRhdGFJZDogZGF0YXNldC5pZFxuICAgICAgICB9KSlcbiAgICAgICk7XG4gICAgfSxcbiAgICBbXSBhcyBMYXllckNsYXNzZXNUeXBlW2tleW9mIExheWVyQ2xhc3Nlc1R5cGVdW11cbiAgKTtcblxuICAvLyBnbyB0aHJvdWdoIGFsbCBsYXllclByb3BzIHRvIGNyZWF0ZSBsYXllclxuICByZXR1cm4gbGF5ZXJQcm9wcy5tYXAocHJvcHMgPT4ge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogY2hlY2tpbmcgcHJvcHMudHlwZSAhPT0gbnVsbFxuICAgIGNvbnN0IGxheWVyID0gbmV3IGxheWVyQ2xhc3Nlc1twcm9wcy50eXBlXShwcm9wcyk7XG4gICAgcmV0dXJuIHR5cGVvZiBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcgPT09ICdmdW5jdGlvbicgJiYgZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgICA/IGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KVxuICAgICAgOiBsYXllcjtcbiAgfSk7XG59XG5cbnR5cGUgTWluVmlzU3RhdGVGb3JMYXllckRhdGEgPSB7XG4gIGRhdGFzZXRzOiBWaXNTdGF0ZVsnZGF0YXNldHMnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBsYXllciBkYXRhIGJhc2VkIG9uIGxheWVyIHR5cGUsIGNvbCBDb25maWcsXG4gKiByZXR1cm4gdXBkYXRlZCBsYXllciBpZiBjb2xvckRvbWFpbiwgZGF0YU1hcCBoYXMgY2hhbmdlZC5cbiAqIEFsc28sIHJldHVybnMgdXBkYXRlZCBsYXllciBpbiBjYXNlIHRoZSBpbnB1dCBsYXllciB3YXMgaW4gaW52YWxpZCBzdGF0ZS5cbiAqIEFkZHMgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgbGF5ZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMYXllckRhdGE8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yTGF5ZXJEYXRhPihcbiAgbGF5ZXI6IExheWVyLFxuICBzdGF0ZTogUyxcbiAgb2xkTGF5ZXJEYXRhPzogYW55XG4pOiB7XG4gIGxheWVyRGF0YTogYW55O1xuICBsYXllcjogTGF5ZXI7XG59IHtcbiAgbGV0IGxheWVyRGF0YTtcbiAgdHJ5IHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIHVwZGF0ZXMgZGF0YSBhZnRlciBhbiBlcnJvclxuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgbGF5ZXIuX29sZERhdGFVcGRhdGVUcmlnZ2VycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLnR5cGUgfHwgIWxheWVyLmhhc0FsbENvbHVtbnMoKSB8fCAhbGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gICAgfVxuXG4gICAgbGF5ZXJEYXRhID0gbGF5ZXIuZm9ybWF0TGF5ZXJEYXRhKHN0YXRlLmRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZGF0YSBmb3IgdGhlIGxheWVyIGlzIHVwZGF0ZWQgd2l0aG91dCBlcnJvcnNcbiAgICBpZiAoIWxheWVyLmlzVmFsaWQpIHtcbiAgICAgIC8vIFN3aXRjaCB0byB2aXNpYmxlIGFmdGVyIGFuIGVycm9yXG4gICAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGF5ZXIuaXNWYWxpZCA9IHRydWU7XG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbGF5ZXIgPSBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfSk7XG4gICAgbGF5ZXIuaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID1cbiAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCkgOiAnVW5rbm93biBlcnJvcic7XG5cbiAgICBsYXllckRhdGEgPSB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJEYXRhXG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByb3BzIHBhc3NlZCB0byBMYXllckhvdmVySW5mb1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbGF5ZXItdXRpbHMnKS5nZXRMYXllckhvdmVyUHJvcH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgaW50ZXJhY3Rpb25Db25maWcsXG4gIGhvdmVySW5mbyxcbiAgbGF5ZXJzLFxuICBsYXllcnNUb1JlbmRlcixcbiAgZGF0YXNldHNcbn06IHtcbiAgaW50ZXJhY3Rpb25Db25maWc6IEludGVyYWN0aW9uQ29uZmlnO1xuICBob3ZlckluZm86IGFueTtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBsYXllcnNUb1JlbmRlcjogTGF5ZXJzVG9SZW5kZXI7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbn0pOiBMYXllckhvdmVyUHJvcCB8IG51bGwge1xuICBpZiAoaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkICYmIGhvdmVySW5mbyAmJiBob3ZlckluZm8ucGlja2VkKSB7XG4gICAgLy8gaWYgYW55dGhpbmcgaG92ZXJlZFxuICAgIGNvbnN0IHtvYmplY3QsIGxheWVyOiBvdmVybGF5fSA9IGhvdmVySW5mbztcblxuICAgIC8vIGRlY2tnbCBsYXllciB0byBrZXBsZXItZ2wgbGF5ZXJcbiAgICBjb25zdCBsYXllciA9IGxheWVyc1tvdmVybGF5LnByb3BzLmlkeF07XG5cbiAgICBpZiAob2JqZWN0ICYmIGxheWVyICYmIGxheWVyLmdldEhvdmVyRGF0YSAmJiBsYXllcnNUb1JlbmRlcltsYXllci5pZF0pIHtcbiAgICAgIC8vIGlmIGxheWVyIGlzIHZpc2libGUgYW5kIGhhdmUgaG92ZXJlZCBkYXRhXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge2RhdGFJZH1cbiAgICAgIH0gPSBsYXllcjtcbiAgICAgIGlmICghZGF0YUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZGF0YTogRGF0YVJvdyB8IG51bGwgPSBsYXllci5nZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyLCBmaWVsZHMpO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllclxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJJbmRleCxcbiAgICBkYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF07XG4gIGNvbnN0IHtncHVGaWx0ZXJ9ID0gZGF0YXNldCB8fCB7fTtcbiAgY29uc3Qgb2JqZWN0SG92ZXJlZCA9IGNsaWNrZWQgfHwgaG92ZXJJbmZvO1xuICBjb25zdCB2aXNpYmxlID0gIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pO1xuICAvLyBMYXllciBpcyBMYXllciBjbGFzc1xuICByZXR1cm4gbGF5ZXIucmVuZGVyTGF5ZXIoe1xuICAgIGRhdGEsXG4gICAgZ3B1RmlsdGVyLFxuICAgIGlkeDogbGF5ZXJJbmRleCxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICBsYXllckNhbGxiYWNrcyxcbiAgICBtYXBTdGF0ZSxcbiAgICBhbmltYXRpb25Db25maWcsXG4gICAgb2JqZWN0SG92ZXJlZCxcbiAgICB2aXNpYmxlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclJlbmRlcmFibGUobGF5ZXI6IExheWVyLCBsYXllckRhdGEpIHtcbiAgcmV0dXJuIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihsYXllckRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycykge1xuICByZXR1cm4gKFxuICAgIGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAvLyBpZiBsYXllci5pZCBpcyBub3QgaW4gbWFwTGF5ZXJzLCBkb24ndCByZW5kZXIgaXRcbiAgICAoIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pKVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgdGhlIGRlY2suZ2xcbi8vIE5vdGUsIGlzVmlzaWJsZTogZmFsc2UgbGF5ZXIgaXMgcGFzc2VkIHRvIGRlY2suZ2wgaGVyZVxuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNGb3JEZWNrKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddXG4pOiB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59IHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTpcbiAgICAgICAgaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBsYXllci5vdmVybGF5VHlwZSA9PT0gT1ZFUkxBWV9UWVBFX0NPTlNULmRlY2tnbFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIHJlbmRlcmVkIGxheWVycyByZW5kZXJlZCBpbiB0aGUgbWFwXG4vLyBUaGlzIGluY2x1ZGVzIG9ubHkgdGhlIHZpc2liaWxlIGxheWVycyBmb3Igc2luZ2xlIG1hcCB2aWV3IGFuZCBzcGxpdCBtYXAgdmlld1xuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNUb1JlbmRlcihcbiAgbGF5ZXJzOiBMYXllcltdLFxuICBsYXllckRhdGE6IFZpc1N0YXRlWydsYXllckRhdGEnXSxcbiAgbWFwTGF5ZXJzPzogU3BsaXRNYXBMYXllcnMgfCB1bmRlZmluZWQgfCBudWxsXG4pOiBMYXllcnNUb1JlbmRlciB7XG4gIHJldHVybiBsYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllciwgaWR4KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5pZF06IGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGFbaWR4XSkgJiYgaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycylcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG50eXBlIEN1c3RvbURlY2tMYXllciA9IERlY2tMYXllcjxEZWNrTGF5ZXJQcm9wcz47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzPzogYW55KTogW0N1c3RvbURlY2tMYXllcltdLCBDdXN0b21EZWNrTGF5ZXJbXV0ge1xuICBjb25zdCBib3R0b21EZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVycygpXG4gICAgOiBbXTtcbiAgY29uc3QgdG9wRGVja0xheWVycyA9IEFycmF5LmlzQXJyYXkoZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnNcbiAgICA6IGlzRnVuY3Rpb24oZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnMoKVxuICAgIDogW107XG5cbiAgcmV0dXJuIFtib3R0b21EZWNrTGF5ZXJzLCB0b3BEZWNrTGF5ZXJzXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tcHV0ZURlY2tMYXllcnNQcm9wcyA9IHtcbiAgbWFwSW5kZXg/OiBudW1iZXI7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIHByaW1hcnlNYXA/OiBib29sZWFuO1xuICBsYXllcnNGb3JEZWNrPzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBlZGl0b3JJbmZvPzoge1xuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIGVkaXRvck1lbnVBY3RpdmU6IGJvb2xlYW47XG4gICAgb25TZXRGZWF0dXJlczogKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IGFueTtcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmU6IChcbiAgICAgIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICAgICAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0XG4gICAgKSA9PiBhbnk7XG4gICAgZmVhdHVyZUNvbGxlY3Rpb246IHtcbiAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gICAgfTtcbiAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiBudW1iZXJbXTtcbiAgICB2aWV3cG9ydDogVmlld3BvcnQ7XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYmluZExheWVyQ2FsbGJhY2tzKGxheWVyQ2FsbGJhY2tzOiBMYXllckNhbGxiYWNrcyA9IHt9LCBpZHg6IG51bWJlcikge1xuICByZXR1cm4gT2JqZWN0LmtleXMobGF5ZXJDYWxsYmFja3MpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtrZXldOiB2YWwgPT4gbGF5ZXJDYWxsYmFja3Nba2V5XShpZHgsIHZhbClcbiAgICB9KSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCAoX2lkeDogbnVtYmVyLCB2YWw6IGFueSkgPT4gdm9pZD5cbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJDYWxsYmFja3MgPSB7XG4gIG9uTGF5ZXJIb3Zlcj86IChpZHg6IG51bWJlciwgdmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgb25TZXRMYXllckRvbWFpbj86IChpZHg6IG51bWJlciwgdmFsdWU6IGFueSkgPT4gdm9pZDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2tMYXllcnMoXG4gIHt2aXNTdGF0ZSwgbWFwU3RhdGUsIG1hcFN0eWxlfTogYW55LFxuICBvcHRpb25zPzogQ29tcHV0ZURlY2tMYXllcnNQcm9wcyxcbiAgbGF5ZXJDYWxsYmFja3M/OiBMYXllckNhbGxiYWNrcyxcbiAgZGVja0dsUHJvcHM/OiBhbnlcbik6IExheWVyW10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHttYXBJbmRleCwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgcHJpbWFyeU1hcCwgbGF5ZXJzRm9yRGVjaywgZWRpdG9ySW5mb30gPVxuICAgIG9wdGlvbnMgfHwge307XG5cbiAgbGV0IGRhdGFMYXllcnM6IGFueVtdID0gW107XG5cbiAgaWYgKGxheWVyRGF0YSAmJiBsYXllckRhdGEubGVuZ3RoKSB7XG4gICAgY29uc3QgbWFwTGF5ZXJzID0gZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcyhzcGxpdE1hcHMsIG1hcEluZGV4IHx8IDApO1xuXG4gICAgY29uc3QgY3VycmVudExheWVyc0ZvckRlY2sgPSBsYXllcnNGb3JEZWNrIHx8IHByZXBhcmVMYXllcnNGb3JEZWNrKGxheWVycywgbGF5ZXJEYXRhKTtcblxuICAgIGRhdGFMYXllcnMgPSBsYXllck9yZGVyXG4gICAgICAuc2xpY2UoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbHRlcihpZCA9PiBjdXJyZW50TGF5ZXJzRm9yRGVja1tpZF0pXG4gICAgICAucmVkdWNlKChvdmVybGF5cywgbGF5ZXJJZCkgPT4ge1xuICAgICAgICBjb25zdCBsYXllckluZGV4ID0gbGF5ZXJzLmZpbmRJbmRleCgoe2lkfSkgPT4gaWQgPT09IGxheWVySWQpO1xuICAgICAgICBjb25zdCBiaW5kZWRMYXllckNhbGxiYWNrcyA9IGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgPyBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3MsIGxheWVySW5kZXgpXG4gICAgICAgICAgOiB7fTtcbiAgICAgICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgICBsYXllckluZGV4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgICAgbWFwTGF5ZXJzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBiaW5kZWRMYXllckNhbGxiYWNrc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBpZiAoIXByaW1hcnlNYXApIHtcbiAgICByZXR1cm4gZGF0YUxheWVycztcbiAgfVxuXG4gIGlmIChcbiAgICBtYXBTdHlsZT8udmlzaWJsZUxheWVyR3JvdXBzWyczZCBidWlsZGluZyddICYmXG4gICAgcHJpbWFyeU1hcCAmJlxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuICYmXG4gICAgbWFwYm94QXBpVXJsXG4gICkge1xuICAgIGRhdGFMYXllcnMucHVzaChcbiAgICAgIG5ldyBUaHJlZURCdWlsZGluZ0xheWVyKHtcbiAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdCBbY3VzdG9tQm90dG9tRGVja0xheWVycywgY3VzdG9tVG9wRGVja0xheWVyc10gPSBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKTtcblxuICBjb25zdCBlZGl0b3JMYXllcjogYW55W10gPSBbXTtcbiAgaWYgKGVkaXRvckluZm8pIHtcbiAgICBlZGl0b3JMYXllci5wdXNoKFxuICAgICAgZ2V0RWRpdG9yTGF5ZXIoe1xuICAgICAgICAuLi5lZGl0b3JJbmZvXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gWy4uLmN1c3RvbUJvdHRvbURlY2tMYXllcnMsIC4uLmRhdGFMYXllcnMsIC4uLmN1c3RvbVRvcERlY2tMYXllcnMsIC4uLmVkaXRvckxheWVyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyT3JkZXJGcm9tTGF5ZXJzPFQgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KGxheWVyczogVFtdKTogc3RyaW5nW10ge1xuICByZXR1cm4gbGF5ZXJzLm1hcCgoe2lkfSkgPT4gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVvcmRlckxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIG9yaWdpbkxheWVySWQ6IHN0cmluZyxcbiAgZGVzdGluYXRpb25MYXllcklkOiBzdHJpbmdcbik6IFZpc1N0YXRlWydsYXllck9yZGVyJ10ge1xuICBjb25zdCBhY3RpdmVJbmRleCA9IGxheWVyT3JkZXIuaW5kZXhPZihvcmlnaW5MYXllcklkKTtcbiAgY29uc3Qgb3ZlckluZGV4ID0gbGF5ZXJPcmRlci5pbmRleE9mKGRlc3RpbmF0aW9uTGF5ZXJJZCk7XG5cbiAgcmV0dXJuIGFycmF5TW92ZShsYXllck9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyVG9MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBWaXNTdGF0ZVsnbGF5ZXJPcmRlciddLFxuICBsYXllcklkOiBzdHJpbmdcbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFtsYXllcklkLCAuLi5sYXllck9yZGVyXTtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { MapStateActions, ReceiveMapConfigPayload, ActionTypes } from '@kepler.gl/actions';
2
- import { MapState } from '@kepler.gl/types';
2
+ import { MapState, Bounds, Viewport } from '@kepler.gl/types';
3
3
  /**
4
4
  * Default initial `mapState`
5
5
  * @memberof mapStateUpdaters
@@ -12,7 +12,13 @@ import { MapState } from '@kepler.gl/types';
12
12
  * @property dragRotate Default: `false`
13
13
  * @property width Default: `800`
14
14
  * @property height Default: `800`
15
- * @property isSplit Default: `false`
15
+ * @property minZoom: `undefined`,
16
+ * @property maxZoom: `undefined`,
17
+ * @property maxBounds: `undefined`,
18
+ * @property isSplit: `false`,
19
+ * @property isViewportSynced: `true`,
20
+ * @property isZoomLocked: `false`,
21
+ * @property splitMapViewports: `[]`
16
22
  * @public
17
23
  */
18
24
  export declare const INITIAL_MAP_STATE: MapState;
@@ -55,8 +61,33 @@ export declare const receiveMapConfigUpdater: (state: MapState, { payload: { con
55
61
  * @public
56
62
  */
57
63
  export declare const toggleSplitMapUpdater: (state: MapState, action: MapStateActions.ToggleSplitMapUpdaterAction) => MapState;
64
+ /**
65
+ * Toggle between locked and unlocked split viewports
66
+ * @memberof mapStateUpdaters
67
+ * @public
68
+ */
69
+ export declare const toggleSplitMapViewportUpdater: (state: MapState, action: MapStateActions.ToggleSplitMapViewportUpdaterAction) => {
70
+ isViewportSynced: boolean;
71
+ isZoomLocked: boolean;
72
+ pitch: number;
73
+ bearing: number;
74
+ latitude: number;
75
+ longitude: number;
76
+ zoom: number;
77
+ dragRotate: boolean;
78
+ width: number;
79
+ height: number;
80
+ minZoom?: number | undefined;
81
+ maxZoom?: number | undefined;
82
+ maxBounds?: Bounds | undefined;
83
+ initialState?: any;
84
+ scale?: number | undefined;
85
+ isSplit: boolean;
86
+ splitMapViewports: Viewport[];
87
+ };
58
88
  export declare function getMapDimForSplitMap(isSplit: any, state: any): {
59
89
  width?: undefined;
60
90
  } | {
61
91
  width: number;
62
92
  };
93
+ export declare function pickViewportPropsFromMapState(state: MapState): Viewport;