kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
124 lines (123 loc) • 20.9 kB
JavaScript
"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 _constants = require("@kepler.gl/constants");
var _reducers = require("@kepler.gl/reducers");
var _layerPanelHeader = _interopRequireDefault(require("./side-panel/layer-panel/layer-panel-header"));
var _injector = require("./injector");
var _useDndLayers2 = _interopRequireDefault(require("./hooks/use-dnd-layers"));
var _useDndEffects2 = _interopRequireDefault(require("./hooks/use-dnd-effects"));
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 ? _constants.DND_EMPTY_MODIFIERS : _constants.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 _constants.SORTABLE_LAYER_TYPE:
onLayerDragStart(event);
break;
case _constants.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 _constants.SORTABLE_LAYER_TYPE:
onLayerDragEnd(event);
break;
case _constants.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 (0, _injector.withState)([_reducers.visStateLens], function (state) {
return state;
})(DndContext);
}
var _default = exports["default"] = DndContextFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29yZSIsIl9jb25zb2xlIiwiX2NvbnN0YW50cyIsIl9yZWR1Y2VycyIsIl9sYXllclBhbmVsSGVhZGVyIiwiX2luamVjdG9yIiwiX3VzZURuZExheWVyczIiLCJfdXNlRG5kRWZmZWN0czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJEcmFnSXRlbSIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JIbCIsInJhZGlvQnV0dG9uUmFkaXVzIiwibm9wIiwidW5kZWZpbmVkIiwiRG5kQ29udGV4dEZhY3RvcnkiLCJkZXBzIiwiTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnkiLCJMYXllclBhbmVsSGVhZGVyIiwiTGF5ZXJQYW5lbE92ZXJsYXkiLCJfcmVmIiwibGF5ZXIiLCJkYXRhc2V0cyIsImNvbG9yIiwiY29uZmlnIiwiZGF0YUlkIiwiY3JlYXRlRWxlbWVudCIsImlzQ29uZmlnQWN0aXZlIiwibGF5ZXJJZCIsImlkIiwiaXNWaXNpYmxlIiwiaXNWYWxpZCIsImxhYmVsIiwibGFiZWxSQ0dDb2xvclZhbHVlcyIsIm9uVG9nZ2xlVmlzaWJpbGl0eSIsIm9uUmVzZXRJc1ZhbGlkIiwib25VcGRhdGVMYXllckxhYmVsIiwib25Ub2dnbGVFbmFibGVDb25maWciLCJvbkR1cGxpY2F0ZUxheWVyIiwib25SZW1vdmVMYXllciIsIm9uWm9vbVRvTGF5ZXIiLCJsYXllclR5cGUiLCJ0eXBlIiwiYWxsb3dEdXBsaWNhdGUiLCJpc0RyYWdORHJvcEVuYWJsZWQiLCJEbmRDb250ZXh0IiwiX3JlZjIiLCJjaGlsZHJlbiIsInZpc1N0YXRlIiwibGF5ZXJPcmRlciIsImxheWVycyIsImVmZmVjdHMiLCJlZmZlY3RPcmRlciIsInNwbGl0TWFwcyIsIl91c2VEbmRMYXllcnMiLCJ1c2VEbmRMYXllcnMiLCJhY3RpdmVMYXllciIsIm9uTGF5ZXJEcmFnU3RhcnQiLCJvbkRyYWdTdGFydCIsIm9uTGF5ZXJEcmFnRW5kIiwib25EcmFnRW5kIiwiX3VzZURuZEVmZmVjdHMiLCJ1c2VEbmRFZmZlY3RzIiwib25FZmZlY3REcmFnU3RhcnQiLCJvbkVmZmVjdERyYWdFbmQiLCJpc1NwbGl0IiwidXNlTWVtbyIsImxlbmd0aCIsImRuZE1vZGlmaWVycyIsIkRORF9FTVBUWV9NT0RJRklFUlMiLCJETkRfTU9ESUZJRVJTIiwidXNlQ2FsbGJhY2siLCJldmVudCIsIl9ldmVudCRhY3RpdmUkZGF0YSIsImFjdGl2ZVR5cGUiLCJhY3RpdmUiLCJkYXRhIiwiY3VycmVudCIsIlNPUlRBQkxFX0xBWUVSX1RZUEUiLCJTT1JUQUJMRV9FRkZFQ1RfVFlQRSIsIkNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJfZXZlbnQkYWN0aXZlJGRhdGEyIiwibW9kaWZpZXJzIiwiRHJhZ092ZXJsYXkiLCJkcm9wQW5pbWF0aW9uIiwid2l0aFN0YXRlIiwidmlzU3RhdGVMZW5zIiwic3RhdGUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kbmQtY29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIFByb3BzV2l0aENoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7RG5kQ29udGV4dCBhcyBEbmRLaXRDb250ZXh0LCBEcmFnT3ZlcmxheX0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbmltcG9ydCB7XG4gIERORF9FTVBUWV9NT0RJRklFUlMsXG4gIERORF9NT0RJRklFUlMsXG4gIFNPUlRBQkxFX0xBWUVSX1RZUEUsXG4gIFNPUlRBQkxFX0VGRkVDVF9UWVBFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7dmlzU3RhdGVMZW5zfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5cbmltcG9ydCBMYXllclBhbmVsSGVhZGVyRmFjdG9yeSBmcm9tICcuL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItcGFuZWwtaGVhZGVyJztcbmltcG9ydCB7d2l0aFN0YXRlfSBmcm9tICcuL2luamVjdG9yJztcbmltcG9ydCB1c2VEbmRMYXllcnMgZnJvbSAnLi9ob29rcy91c2UtZG5kLWxheWVycyc7XG5pbXBvcnQgdXNlRG5kRWZmZWN0cyBmcm9tICcuL2hvb2tzL3VzZS1kbmQtZWZmZWN0cyc7XG5cbmV4cG9ydCB0eXBlIERuZENvbnRleHRQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xufT47XG5cbmV4cG9ydCB0eXBlIERuZENvbnRleHRDb21wb25lbnQgPSBSZWFjdC5GQzxEbmRDb250ZXh0UHJvcHM+O1xuXG5leHBvcnQgY29uc3QgRHJhZ0l0ZW0gPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIGJvcmRlci1yYWRpdXM6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucmFkaW9CdXR0b25SYWRpdXN9cHg7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBkaXNwbGF5OiBpbmxpbmU7XG5gO1xuXG5jb25zdCBub3AgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbkRuZENvbnRleHRGYWN0b3J5LmRlcHMgPSBbTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnldO1xuXG5mdW5jdGlvbiBEbmRDb250ZXh0RmFjdG9yeShcbiAgTGF5ZXJQYW5lbEhlYWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJQYW5lbEhlYWRlckZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxQcm9wc1dpdGhDaGlsZHJlbj4ge1xuICBjb25zdCBMYXllclBhbmVsT3ZlcmxheSA9ICh7bGF5ZXIsIGRhdGFzZXRzfSkgPT4ge1xuICAgIGNvbnN0IGNvbG9yID1cbiAgICAgIGxheWVyLmNvbmZpZy5kYXRhSWQgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvclxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMYXllclBhbmVsSGVhZGVyXG4gICAgICAgIGlzQ29uZmlnQWN0aXZlPXtmYWxzZX1cbiAgICAgICAgbGF5ZXJJZD17bGF5ZXIuaWR9XG4gICAgICAgIGlzVmlzaWJsZT17dHJ1ZX1cbiAgICAgICAgaXNWYWxpZD17dHJ1ZX1cbiAgICAgICAgbGFiZWw9e2xheWVyLmNvbmZpZy5sYWJlbH1cbiAgICAgICAgbGFiZWxSQ0dDb2xvclZhbHVlcz17Y29sb3J9XG4gICAgICAgIG9uVG9nZ2xlVmlzaWJpbGl0eT17bm9wfVxuICAgICAgICBvblJlc2V0SXNWYWxpZD17bm9wfVxuICAgICAgICBvblVwZGF0ZUxheWVyTGFiZWw9e25vcH1cbiAgICAgICAgb25Ub2dnbGVFbmFibGVDb25maWc9e25vcH1cbiAgICAgICAgb25EdXBsaWNhdGVMYXllcj17bm9wfVxuICAgICAgICBvblJlbW92ZUxheWVyPXtub3B9XG4gICAgICAgIG9uWm9vbVRvTGF5ZXI9e25vcH1cbiAgICAgICAgbGF5ZXJUeXBlPXtsYXllci50eXBlfVxuICAgICAgICBhbGxvd0R1cGxpY2F0ZT17ZmFsc2V9XG4gICAgICAgIGlzRHJhZ05Ecm9wRW5hYmxlZD17ZmFsc2V9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgRG5kQ29udGV4dCA9ICh7Y2hpbGRyZW4sIHZpc1N0YXRlfTogRG5kQ29udGV4dFByb3BzKSA9PiB7XG4gICAgY29uc3Qge2RhdGFzZXRzLCBsYXllck9yZGVyLCBsYXllcnMsIGVmZmVjdHMsIGVmZmVjdE9yZGVyLCBzcGxpdE1hcHN9ID0gdmlzU3RhdGU7XG5cbiAgICBjb25zdCB7XG4gICAgICBhY3RpdmVMYXllcixcbiAgICAgIG9uRHJhZ1N0YXJ0OiBvbkxheWVyRHJhZ1N0YXJ0LFxuICAgICAgb25EcmFnRW5kOiBvbkxheWVyRHJhZ0VuZFxuICAgIH0gPSB1c2VEbmRMYXllcnMobGF5ZXJzLCBsYXllck9yZGVyKTtcbiAgICBjb25zdCB7b25EcmFnU3RhcnQ6IG9uRWZmZWN0RHJhZ1N0YXJ0LCBvbkRyYWdFbmQ6IG9uRWZmZWN0RHJhZ0VuZH0gPSB1c2VEbmRFZmZlY3RzKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGVmZmVjdE9yZGVyXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU3BsaXQgPSB1c2VNZW1vKCgpID0+IHNwbGl0TWFwcz8ubGVuZ3RoID4gMSwgW3NwbGl0TWFwc10pO1xuICAgIGNvbnN0IGRuZE1vZGlmaWVycyA9IHVzZU1lbW8oKCkgPT4gKGlzU3BsaXQgPyBETkRfRU1QVFlfTU9ESUZJRVJTIDogRE5EX01PRElGSUVSUyksIFtpc1NwbGl0XSk7XG5cbiAgICBjb25zdCBvbkRyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVUeXBlID0gZXZlbnQuYWN0aXZlLmRhdGE/LmN1cnJlbnQ/LnR5cGU7XG4gICAgICAgIHN3aXRjaCAoYWN0aXZlVHlwZSkge1xuICAgICAgICAgIGNhc2UgU09SVEFCTEVfTEFZRVJfVFlQRTpcbiAgICAgICAgICAgIG9uTGF5ZXJEcmFnU3RhcnQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9FRkZFQ1RfVFlQRTpcbiAgICAgICAgICAgIG9uRWZmZWN0RHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBDb25zb2xlLmxvZyhgYWN0aXZlVHlwZSAke2FjdGl2ZVR5cGV9IHVua25vd25gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvbkxheWVyRHJhZ1N0YXJ0LCBvbkVmZmVjdERyYWdTdGFydF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25EcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVR5cGUgPSBldmVudC5hY3RpdmUuZGF0YT8uY3VycmVudD8udHlwZTtcbiAgICAgICAgc3dpdGNoIChhY3RpdmVUeXBlKSB7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9MQVlFUl9UWVBFOlxuICAgICAgICAgICAgb25MYXllckRyYWdFbmQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9FRkZFQ1RfVFlQRTpcbiAgICAgICAgICAgIG9uRWZmZWN0RHJhZ0VuZChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgQ29uc29sZS5sb2coYGFjdGl2ZVR5cGUgJHthY3RpdmVUeXBlfSB1bmtub3duYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbb25MYXllckRyYWdFbmQsIG9uRWZmZWN0RHJhZ0VuZF1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEbmRLaXRDb250ZXh0IG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH0gb25EcmFnRW5kPXtvbkRyYWdFbmR9IG1vZGlmaWVycz17ZG5kTW9kaWZpZXJzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7YWN0aXZlTGF5ZXIgPyAoXG4gICAgICAgICAgPERyYWdPdmVybGF5IG1vZGlmaWVycz17ZG5kTW9kaWZpZXJzfSBkcm9wQW5pbWF0aW9uPXtudWxsfT5cbiAgICAgICAgICAgIDxEcmFnSXRlbT5cbiAgICAgICAgICAgICAgPExheWVyUGFuZWxPdmVybGF5IGxheWVyPXthY3RpdmVMYXllcn0gZGF0YXNldHM9e2RhdGFzZXRzfSAvPlxuICAgICAgICAgICAgPC9EcmFnSXRlbT5cbiAgICAgICAgICA8L0RyYWdPdmVybGF5PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvRG5kS2l0Q29udGV4dD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoU3RhdGUoW3Zpc1N0YXRlTGVuc10sIHN0YXRlID0+IHN0YXRlKShEbmRDb250ZXh0KSBhcyBSZWFjdC5GQzxQcm9wc1dpdGhDaGlsZHJlbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IERuZENvbnRleHRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBR0EsSUFBQU8saUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGNBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLGVBQUEsR0FB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