UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

120 lines (119 loc) 20.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.DragItem = void 0; var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _core = require("@dnd-kit/core"); var _console = _interopRequireDefault(require("global/console")); var _layerPanelHeader = _interopRequireDefault(require("./side-panel/layer-panel/layer-panel-header")); var _useDndLayers2 = _interopRequireDefault(require("./hooks/use-dnd-layers")); var _useDndEffects2 = _interopRequireDefault(require("./hooks/use-dnd-effects")); var _dndLayerItems = require("./common/dnd-layer-items"); var _templateObject; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } 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; } var DragItem = exports.DragItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n border-radius: ", "px;\n padding: 5px 10px;\n display: inline;\n"])), function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.radioButtonRadius; }); var nop = function nop() { return undefined; }; DndContextFactory.deps = [_layerPanelHeader["default"]]; function DndContextFactory(LayerPanelHeader) { var LayerPanelOverlay = function LayerPanelOverlay(_ref) { var layer = _ref.layer, datasets = _ref.datasets; var color = layer.config.dataId && datasets[layer.config.dataId] ? datasets[layer.config.dataId].color : null; return /*#__PURE__*/_react["default"].createElement(LayerPanelHeader, { isConfigActive: false, layerId: layer.id, isVisible: true, isValid: true, label: layer.config.label, labelRCGColorValues: color, onToggleVisibility: nop, onResetIsValid: nop, onUpdateLayerLabel: nop, onToggleEnableConfig: nop, onDuplicateLayer: nop, onRemoveLayer: nop, onZoomToLayer: nop, layerType: layer.type, allowDuplicate: false, isDragNDropEnabled: false }); }; var DndContext = function DndContext(_ref2) { var children = _ref2.children, visState = _ref2.visState; var datasets = visState.datasets, layerOrder = visState.layerOrder, layers = visState.layers, effects = visState.effects, effectOrder = visState.effectOrder, splitMaps = visState.splitMaps; var _useDndLayers = (0, _useDndLayers2["default"])(layers, layerOrder), activeLayer = _useDndLayers.activeLayer, onLayerDragStart = _useDndLayers.onDragStart, onLayerDragEnd = _useDndLayers.onDragEnd; var _useDndEffects = (0, _useDndEffects2["default"])(effects, effectOrder), onEffectDragStart = _useDndEffects.onDragStart, onEffectDragEnd = _useDndEffects.onDragEnd; var isSplit = (0, _react.useMemo)(function () { return (splitMaps === null || splitMaps === void 0 ? void 0 : splitMaps.length) > 1; }, [splitMaps]); var dndModifiers = (0, _react.useMemo)(function () { return isSplit ? _dndLayerItems.DND_EMPTY_MODIFIERS : _dndLayerItems.DND_MODIFIERS; }, [isSplit]); var onDragStart = (0, _react.useCallback)(function (event) { var _event$active$data; var activeType = (_event$active$data = event.active.data) === null || _event$active$data === void 0 || (_event$active$data = _event$active$data.current) === null || _event$active$data === void 0 ? void 0 : _event$active$data.type; switch (activeType) { case _dndLayerItems.SORTABLE_LAYER_TYPE: onLayerDragStart(event); break; case _dndLayerItems.SORTABLE_EFFECT_TYPE: onEffectDragStart(event); break; default: _console["default"].log("activeType ".concat(activeType, " unknown")); } }, [onLayerDragStart, onEffectDragStart]); var onDragEnd = (0, _react.useCallback)(function (event) { var _event$active$data2; var activeType = (_event$active$data2 = event.active.data) === null || _event$active$data2 === void 0 || (_event$active$data2 = _event$active$data2.current) === null || _event$active$data2 === void 0 ? void 0 : _event$active$data2.type; switch (activeType) { case _dndLayerItems.SORTABLE_LAYER_TYPE: onLayerDragEnd(event); break; case _dndLayerItems.SORTABLE_EFFECT_TYPE: onEffectDragEnd(event); break; default: _console["default"].log("activeType ".concat(activeType, " unknown")); } }, [onLayerDragEnd, onEffectDragEnd]); return /*#__PURE__*/_react["default"].createElement(_core.DndContext, { onDragStart: onDragStart, onDragEnd: onDragEnd, modifiers: dndModifiers }, children, activeLayer ? /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, { modifiers: dndModifiers, dropAnimation: null }, /*#__PURE__*/_react["default"].createElement(DragItem, null, /*#__PURE__*/_react["default"].createElement(LayerPanelOverlay, { layer: activeLayer, datasets: datasets }))) : null); }; return DndContext; } var _default = exports["default"] = DndContextFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29yZSIsIl9jb25zb2xlIiwiX2xheWVyUGFuZWxIZWFkZXIiLCJfdXNlRG5kTGF5ZXJzMiIsIl91c2VEbmRFZmZlY3RzMiIsIl9kbmRMYXllckl0ZW1zIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiRHJhZ0l0ZW0iLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9ySGwiLCJyYWRpb0J1dHRvblJhZGl1cyIsIm5vcCIsInVuZGVmaW5lZCIsIkRuZENvbnRleHRGYWN0b3J5IiwiZGVwcyIsIkxheWVyUGFuZWxIZWFkZXJGYWN0b3J5IiwiTGF5ZXJQYW5lbEhlYWRlciIsIkxheWVyUGFuZWxPdmVybGF5IiwiX3JlZiIsImxheWVyIiwiZGF0YXNldHMiLCJjb2xvciIsImNvbmZpZyIsImRhdGFJZCIsImNyZWF0ZUVsZW1lbnQiLCJpc0NvbmZpZ0FjdGl2ZSIsImxheWVySWQiLCJpZCIsImlzVmlzaWJsZSIsImlzVmFsaWQiLCJsYWJlbCIsImxhYmVsUkNHQ29sb3JWYWx1ZXMiLCJvblRvZ2dsZVZpc2liaWxpdHkiLCJvblJlc2V0SXNWYWxpZCIsIm9uVXBkYXRlTGF5ZXJMYWJlbCIsIm9uVG9nZ2xlRW5hYmxlQ29uZmlnIiwib25EdXBsaWNhdGVMYXllciIsIm9uUmVtb3ZlTGF5ZXIiLCJvblpvb21Ub0xheWVyIiwibGF5ZXJUeXBlIiwidHlwZSIsImFsbG93RHVwbGljYXRlIiwiaXNEcmFnTkRyb3BFbmFibGVkIiwiRG5kQ29udGV4dCIsIl9yZWYyIiwiY2hpbGRyZW4iLCJ2aXNTdGF0ZSIsImxheWVyT3JkZXIiLCJsYXllcnMiLCJlZmZlY3RzIiwiZWZmZWN0T3JkZXIiLCJzcGxpdE1hcHMiLCJfdXNlRG5kTGF5ZXJzIiwidXNlRG5kTGF5ZXJzIiwiYWN0aXZlTGF5ZXIiLCJvbkxheWVyRHJhZ1N0YXJ0Iiwib25EcmFnU3RhcnQiLCJvbkxheWVyRHJhZ0VuZCIsIm9uRHJhZ0VuZCIsIl91c2VEbmRFZmZlY3RzIiwidXNlRG5kRWZmZWN0cyIsIm9uRWZmZWN0RHJhZ1N0YXJ0Iiwib25FZmZlY3REcmFnRW5kIiwiaXNTcGxpdCIsInVzZU1lbW8iLCJsZW5ndGgiLCJkbmRNb2RpZmllcnMiLCJETkRfRU1QVFlfTU9ESUZJRVJTIiwiRE5EX01PRElGSUVSUyIsInVzZUNhbGxiYWNrIiwiZXZlbnQiLCJfZXZlbnQkYWN0aXZlJGRhdGEiLCJhY3RpdmVUeXBlIiwiYWN0aXZlIiwiZGF0YSIsImN1cnJlbnQiLCJTT1JUQUJMRV9MQVlFUl9UWVBFIiwiU09SVEFCTEVfRUZGRUNUX1RZUEUiLCJDb25zb2xlIiwibG9nIiwiY29uY2F0IiwiX2V2ZW50JGFjdGl2ZSRkYXRhMiIsIm1vZGlmaWVycyIsIkRyYWdPdmVybGF5IiwiZHJvcEFuaW1hdGlvbiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RuZC1jb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgUHJvcHNXaXRoQ2hpbGRyZW59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtEbmRDb250ZXh0IGFzIERuZEtpdENvbnRleHQsIERyYWdPdmVybGF5fSBmcm9tICdAZG5kLWtpdC9jb3JlJztcblxuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcblxuaW1wb3J0IExheWVyUGFuZWxIZWFkZXJGYWN0b3J5IGZyb20gJy4vc2lkZS1wYW5lbC9sYXllci1wYW5lbC9sYXllci1wYW5lbC1oZWFkZXInO1xuaW1wb3J0IHVzZURuZExheWVycyBmcm9tICcuL2hvb2tzL3VzZS1kbmQtbGF5ZXJzJztcbmltcG9ydCB1c2VEbmRFZmZlY3RzIGZyb20gJy4vaG9va3MvdXNlLWRuZC1lZmZlY3RzJztcblxuaW1wb3J0IHtcbiAgRE5EX01PRElGSUVSUyxcbiAgRE5EX0VNUFRZX01PRElGSUVSUyxcbiAgU09SVEFCTEVfTEFZRVJfVFlQRSxcbiAgU09SVEFCTEVfRUZGRUNUX1RZUEVcbn0gZnJvbSAnLi9jb21tb24vZG5kLWxheWVyLWl0ZW1zJztcblxuZXhwb3J0IHR5cGUgRG5kQ29udGV4dFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICB2aXNTdGF0ZTogVmlzU3RhdGU7XG59PjtcblxuZXhwb3J0IHR5cGUgRG5kQ29udGV4dENvbXBvbmVudCA9IFJlYWN0LkZDPERuZENvbnRleHRQcm9wcz47XG5cbmV4cG9ydCBjb25zdCBEcmFnSXRlbSA9IHN0eWxlZC5kaXZgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgYm9yZGVyLXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5yYWRpb0J1dHRvblJhZGl1c31weDtcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGRpc3BsYXk6IGlubGluZTtcbmA7XG5cbmNvbnN0IG5vcCA9ICgpID0+IHVuZGVmaW5lZDtcblxuRG5kQ29udGV4dEZhY3RvcnkuZGVwcyA9IFtMYXllclBhbmVsSGVhZGVyRmFjdG9yeV07XG5cbmZ1bmN0aW9uIERuZENvbnRleHRGYWN0b3J5KFxuICBMYXllclBhbmVsSGVhZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllclBhbmVsSGVhZGVyRmFjdG9yeT5cbik6IFJlYWN0LkZDPERuZENvbnRleHRQcm9wcz4ge1xuICBjb25zdCBMYXllclBhbmVsT3ZlcmxheSA9ICh7bGF5ZXIsIGRhdGFzZXRzfSkgPT4ge1xuICAgIGNvbnN0IGNvbG9yID1cbiAgICAgIGxheWVyLmNvbmZpZy5kYXRhSWQgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvclxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMYXllclBhbmVsSGVhZGVyXG4gICAgICAgIGlzQ29uZmlnQWN0aXZlPXtmYWxzZX1cbiAgICAgICAgbGF5ZXJJZD17bGF5ZXIuaWR9XG4gICAgICAgIGlzVmlzaWJsZT17dHJ1ZX1cbiAgICAgICAgaXNWYWxpZD17dHJ1ZX1cbiAgICAgICAgbGFiZWw9e2xheWVyLmNvbmZpZy5sYWJlbH1cbiAgICAgICAgbGFiZWxSQ0dDb2xvclZhbHVlcz17Y29sb3J9XG4gICAgICAgIG9uVG9nZ2xlVmlzaWJpbGl0eT17bm9wfVxuICAgICAgICBvblJlc2V0SXNWYWxpZD17bm9wfVxuICAgICAgICBvblVwZGF0ZUxheWVyTGFiZWw9e25vcH1cbiAgICAgICAgb25Ub2dnbGVFbmFibGVDb25maWc9e25vcH1cbiAgICAgICAgb25EdXBsaWNhdGVMYXllcj17bm9wfVxuICAgICAgICBvblJlbW92ZUxheWVyPXtub3B9XG4gICAgICAgIG9uWm9vbVRvTGF5ZXI9e25vcH1cbiAgICAgICAgbGF5ZXJUeXBlPXtsYXllci50eXBlfVxuICAgICAgICBhbGxvd0R1cGxpY2F0ZT17ZmFsc2V9XG4gICAgICAgIGlzRHJhZ05Ecm9wRW5hYmxlZD17ZmFsc2V9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgRG5kQ29udGV4dCA9ICh7Y2hpbGRyZW4sIHZpc1N0YXRlfTogRG5kQ29udGV4dFByb3BzKSA9PiB7XG4gICAgY29uc3Qge2RhdGFzZXRzLCBsYXllck9yZGVyLCBsYXllcnMsIGVmZmVjdHMsIGVmZmVjdE9yZGVyLCBzcGxpdE1hcHN9ID0gdmlzU3RhdGU7XG5cbiAgICBjb25zdCB7XG4gICAgICBhY3RpdmVMYXllcixcbiAgICAgIG9uRHJhZ1N0YXJ0OiBvbkxheWVyRHJhZ1N0YXJ0LFxuICAgICAgb25EcmFnRW5kOiBvbkxheWVyRHJhZ0VuZFxuICAgIH0gPSB1c2VEbmRMYXllcnMobGF5ZXJzLCBsYXllck9yZGVyKTtcbiAgICBjb25zdCB7b25EcmFnU3RhcnQ6IG9uRWZmZWN0RHJhZ1N0YXJ0LCBvbkRyYWdFbmQ6IG9uRWZmZWN0RHJhZ0VuZH0gPSB1c2VEbmRFZmZlY3RzKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGVmZmVjdE9yZGVyXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU3BsaXQgPSB1c2VNZW1vKCgpID0+IHNwbGl0TWFwcz8ubGVuZ3RoID4gMSwgW3NwbGl0TWFwc10pO1xuICAgIGNvbnN0IGRuZE1vZGlmaWVycyA9IHVzZU1lbW8oKCkgPT4gKGlzU3BsaXQgPyBETkRfRU1QVFlfTU9ESUZJRVJTIDogRE5EX01PRElGSUVSUyksIFtpc1NwbGl0XSk7XG5cbiAgICBjb25zdCBvbkRyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVUeXBlID0gZXZlbnQuYWN0aXZlLmRhdGE/LmN1cnJlbnQ/LnR5cGU7XG4gICAgICAgIHN3aXRjaCAoYWN0aXZlVHlwZSkge1xuICAgICAgICAgIGNhc2UgU09SVEFCTEVfTEFZRVJfVFlQRTpcbiAgICAgICAgICAgIG9uTGF5ZXJEcmFnU3RhcnQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9FRkZFQ1RfVFlQRTpcbiAgICAgICAgICAgIG9uRWZmZWN0RHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBDb25zb2xlLmxvZyhgYWN0aXZlVHlwZSAke2FjdGl2ZVR5cGV9IHVua25vd25gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvbkxheWVyRHJhZ1N0YXJ0LCBvbkVmZmVjdERyYWdTdGFydF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25EcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVR5cGUgPSBldmVudC5hY3RpdmUuZGF0YT8uY3VycmVudD8udHlwZTtcbiAgICAgICAgc3dpdGNoIChhY3RpdmVUeXBlKSB7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9MQVlFUl9UWVBFOlxuICAgICAgICAgICAgb25MYXllckRyYWdFbmQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9FRkZFQ1RfVFlQRTpcbiAgICAgICAgICAgIG9uRWZmZWN0RHJhZ0VuZChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgQ29uc29sZS5sb2coYGFjdGl2ZVR5cGUgJHthY3RpdmVUeXBlfSB1bmtub3duYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbb25MYXllckRyYWdFbmQsIG9uRWZmZWN0RHJhZ0VuZF1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEbmRLaXRDb250ZXh0IG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH0gb25EcmFnRW5kPXtvbkRyYWdFbmR9IG1vZGlmaWVycz17ZG5kTW9kaWZpZXJzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7YWN0aXZlTGF5ZXIgPyAoXG4gICAgICAgICAgPERyYWdPdmVybGF5IG1vZGlmaWVycz17ZG5kTW9kaWZpZXJzfSBkcm9wQW5pbWF0aW9uPXtudWxsfT5cbiAgICAgICAgICAgIDxEcmFnSXRlbT5cbiAgICAgICAgICAgICAgPExheWVyUGFuZWxPdmVybGF5IGxheWVyPXthY3RpdmVMYXllcn0gZGF0YXNldHM9e2RhdGFzZXRzfSAvPlxuICAgICAgICAgICAgPC9EcmFnSXRlbT5cbiAgICAgICAgICA8L0RyYWdPdmVybGF5PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvRG5kS2l0Q29udGV4dD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBEbmRDb250ZXh0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBEbmRDb250ZXh0RmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFLLGlCQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBUSxjQUFBLEdBQUFSLE9BQUE7QUFLa0MsSUFBQVMsZUFBQSxFQW5CbEM7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFB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