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"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _reactVis = require("react-vis"); var _styledComponents = _interopRequireDefault(require("styled-components")); var _utils = require("@kepler.gl/utils"); var _templateObject, _templateObject2; // 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 LineChartWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .rv-xy-plot {\n /* important for rendering hint */\n position: relative;\n }\n .rv-xy-plot__inner {\n /* important to show axis */\n overflow: visible;\n }\n\n .rv-xy-plot__grid-lines__line {\n stroke: ", ";\n stroke-dasharray: 1px 4px;\n }\n\n .rv-xy-plot__axis__tick__text {\n font-size: 9px;\n fill: ", ";\n }\n"])), function (props) { return props.theme.histogramFillOutRange; }, function (props) { return props.theme.textColor; }); var StyledHint = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: #d3d8e0;\n border-radius: 2px;\n color: ", ";\n font-size: 9px;\n margin: 4px;\n padding: 3px 6px;\n pointer-events: none;\n user-select: none;\n"])), function (props) { return props.theme.textColorLT; }); var HintContent = function HintContent(_ref) { var x = _ref.x, y = _ref.y, format = _ref.format; return /*#__PURE__*/_react["default"].createElement(StyledHint, null, /*#__PURE__*/_react["default"].createElement("div", { className: "hint--x" }, format(x)), /*#__PURE__*/_react["default"].createElement("div", { className: "row" }, y)); }; var MARGIN = { top: 0, bottom: 0, left: 0, right: 0 }; function LineChartFactory() { var LineChartComponent = function LineChartComponent(_ref2) { var brushComponent = _ref2.brushComponent, brushing = _ref2.brushing, color = _ref2.color, enableChartHover = _ref2.enableChartHover, height = _ref2.height, hoveredDP = _ref2.hoveredDP, isEnlarged = _ref2.isEnlarged, lineChart = _ref2.lineChart, margin = _ref2.margin, onMouseMove = _ref2.onMouseMove, width = _ref2.width, timezone = _ref2.timezone, timeFormat = _ref2.timeFormat; var _ref3 = lineChart || {}, yDomain = _ref3.yDomain, xDomain = _ref3.xDomain; // @ts-expect-error seems lineChart.series has ambiguous types. Requires refactoring. var series = lineChart === null || lineChart === void 0 ? void 0 : lineChart.series; var paddedYDomain = (0, _react.useMemo)(function () { return yDomain && yDomain[0] && yDomain[1] ? [yDomain[0], yDomain[1] + (yDomain[1] - yDomain[0]) * 0.2] : []; }, [yDomain]); var brushData = (0, _react.useMemo)(function () { return xDomain && paddedYDomain ? [{ x: xDomain[0], y: paddedYDomain[1], customComponent: function customComponent() { return brushComponent; } }] : []; }, [xDomain, paddedYDomain, brushComponent]); var hintFormatter = (0, _react.useMemo)(function () { return (0, _utils.datetimeFormatter)(timezone)(timeFormat); }, [timezone, timeFormat]); return /*#__PURE__*/_react["default"].createElement(LineChartWrapper, { style: { marginTop: "".concat(margin.top, "px") } }, /*#__PURE__*/_react["default"].createElement(_reactVis.XYPlot, { xType: "time", width: width, height: height, margin: MARGIN, onMouseLeave: function onMouseLeave() { onMouseMove(null); }, yDomain: paddedYDomain, xDomain: xDomain }, /*#__PURE__*/_react["default"].createElement(_reactVis.HorizontalGridLines, { tickTotal: 3 }), series.lines.map(function (d, i) { return /*#__PURE__*/_react["default"].createElement(_reactVis.LineSeries, { key: i, style: { fill: 'none' }, color: color, data: d, onNearestX: series.markers.length || !enableChartHover ? undefined : onMouseMove }); }), /*#__PURE__*/_react["default"].createElement(_reactVis.MarkSeries, { data: hoveredDP ? [hoveredDP] : [], color: color }), /*#__PURE__*/_react["default"].createElement(_reactVis.CustomSVGSeries, { data: brushData }), isEnlarged && /*#__PURE__*/_react["default"].createElement(_reactVis.YAxis, { tickTotal: 3 }), hoveredDP && enableChartHover && !brushing ? /*#__PURE__*/_react["default"].createElement(_reactVis.Hint, { value: hoveredDP }, /*#__PURE__*/_react["default"].createElement(HintContent, (0, _extends2["default"])({}, hoveredDP, { format: hintFormatter }))) : null)); }; return LineChartComponent; } var _default = exports["default"] = LineChartFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXMiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiTGluZUNoYXJ0V3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsImhpc3RvZ3JhbUZpbGxPdXRSYW5nZSIsInRleHRDb2xvciIsIlN0eWxlZEhpbnQiLCJ0ZXh0Q29sb3JMVCIsIkhpbnRDb250ZW50IiwiX3JlZiIsIngiLCJ5IiwiZm9ybWF0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIk1BUkdJTiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIkxpbmVDaGFydEZhY3RvcnkiLCJMaW5lQ2hhcnRDb21wb25lbnQiLCJfcmVmMiIsImJydXNoQ29tcG9uZW50IiwiYnJ1c2hpbmciLCJjb2xvciIsImVuYWJsZUNoYXJ0SG92ZXIiLCJoZWlnaHQiLCJob3ZlcmVkRFAiLCJpc0VubGFyZ2VkIiwibGluZUNoYXJ0IiwibWFyZ2luIiwib25Nb3VzZU1vdmUiLCJ3aWR0aCIsInRpbWV6b25lIiwidGltZUZvcm1hdCIsIl9yZWYzIiwieURvbWFpbiIsInhEb21haW4iLCJzZXJpZXMiLCJwYWRkZWRZRG9tYWluIiwidXNlTWVtbyIsImJydXNoRGF0YSIsImN1c3RvbUNvbXBvbmVudCIsImhpbnRGb3JtYXR0ZXIiLCJkYXRldGltZUZvcm1hdHRlciIsInN0eWxlIiwibWFyZ2luVG9wIiwiY29uY2F0IiwiWFlQbG90IiwieFR5cGUiLCJvbk1vdXNlTGVhdmUiLCJIb3Jpem9udGFsR3JpZExpbmVzIiwidGlja1RvdGFsIiwibGluZXMiLCJtYXAiLCJkIiwiTGluZVNlcmllcyIsImtleSIsImZpbGwiLCJkYXRhIiwib25OZWFyZXN0WCIsIm1hcmtlcnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJNYXJrU2VyaWVzIiwiQ3VzdG9tU1ZHU2VyaWVzIiwiWUF4aXMiLCJIaW50IiwidmFsdWUiLCJfZXh0ZW5kczIiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2xpbmUtY2hhcnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIEhvcml6b250YWxHcmlkTGluZXMsXG4gIExpbmVTZXJpZXMsXG4gIFhZUGxvdCxcbiAgQ3VzdG9tU1ZHU2VyaWVzLFxuICBIaW50LFxuICBZQXhpcyxcbiAgTWFya1NlcmllcyxcbiAgTGluZVNlcmllc1BvaW50LFxuICBSVk5lYXJlc3RYRGF0YVxufSBmcm9tICdyZWFjdC12aXMnO1xuaW1wb3J0IHtMaW5lQ2hhcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2RhdGV0aW1lRm9ybWF0dGVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuY29uc3QgTGluZUNoYXJ0V3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIC5ydi14eS1wbG90IHtcbiAgICAvKiBpbXBvcnRhbnQgZm9yIHJlbmRlcmluZyBoaW50ICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIC5ydi14eS1wbG90X19pbm5lciB7XG4gICAgLyogaW1wb3J0YW50IHRvIHNob3cgYXhpcyAqL1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLnJ2LXh5LXBsb3RfX2dyaWQtbGluZXNfX2xpbmUge1xuICAgIHN0cm9rZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oaXN0b2dyYW1GaWxsT3V0UmFuZ2V9O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCA0cHg7XG4gIH1cblxuICAucnYteHktcGxvdF9fYXhpc19fdGlja19fdGV4dCB7XG4gICAgZm9udC1zaXplOiA5cHg7XG4gICAgZmlsbDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRIaW50ID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzZDhlMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIGZvbnQtc2l6ZTogOXB4O1xuICBtYXJnaW46IDRweDtcbiAgcGFkZGluZzogM3B4IDZweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuYDtcblxuaW50ZXJmYWNlIEhpbnRDb250ZW50UHJvcHMge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgZm9ybWF0OiAodHM6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBIaW50Q29udGVudCA9ICh7eCwgeSwgZm9ybWF0fTogSGludENvbnRlbnRQcm9wcykgPT4gKFxuICA8U3R5bGVkSGludD5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhpbnQtLXhcIj57Zm9ybWF0KHgpfTwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+e3l9PC9kaXY+XG4gIDwvU3R5bGVkSGludD5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG92ZXJEUCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZyB8IG51bWJlcjtcbiAgb3BhY2l0eT86IHN0cmluZyB8IG51bWJlcjtcbiAgc3Ryb2tlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBmaWxsPzogc3RyaW5nIHwgbnVtYmVyO1xuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTGluZUNoYXJ0UHJvcHMge1xuICBicnVzaENvbXBvbmVudD86IGFueTtcbiAgYnJ1c2hpbmc/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbiAgZW5hYmxlQ2hhcnRIb3Zlcj86IGJvb2xlYW47XG4gIGhlaWdodDogbnVtYmVyO1xuICBob3ZlcmVkRFA/OiBIb3ZlckRQIHwgbnVsbDtcbiAgaXNFbmxhcmdlZD86IGJvb2xlYW47XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFyZ2luOiB7dG9wPzogbnVtYmVyOyBib3R0b20/OiBudW1iZXI7IGxlZnQ/OiBudW1iZXI7IHJpZ2h0PzogbnVtYmVyfTtcbiAgb25Nb3VzZU1vdmU6IChkYXRhcG9pbnQ6IExpbmVTZXJpZXNQb2ludCB8IG51bGwsIGRhdGE/OiBSVk5lYXJlc3RYRGF0YTxMaW5lU2VyaWVzUG9pbnQ+KSA9PiB2b2lkO1xuICB3aWR0aDogbnVtYmVyO1xuICB0aW1lem9uZT86IHN0cmluZyB8IG51bGw7XG4gIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG59XG5cbmNvbnN0IE1BUkdJTiA9IHt0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDB9O1xuZnVuY3Rpb24gTGluZUNoYXJ0RmFjdG9yeSgpIHtcbiAgY29uc3QgTGluZUNoYXJ0Q29tcG9uZW50ID0gKHtcbiAgICBicnVzaENvbXBvbmVudCxcbiAgICBicnVzaGluZyxcbiAgICBjb2xvcixcbiAgICBlbmFibGVDaGFydEhvdmVyLFxuICAgIGhlaWdodCxcbiAgICBob3ZlcmVkRFAsXG4gICAgaXNFbmxhcmdlZCxcbiAgICBsaW5lQ2hhcnQsXG4gICAgbWFyZ2luLFxuICAgIG9uTW91c2VNb3ZlLFxuICAgIHdpZHRoLFxuICAgIHRpbWV6b25lLFxuICAgIHRpbWVGb3JtYXRcbiAgfTogTGluZUNoYXJ0UHJvcHMpID0+IHtcbiAgICBjb25zdCB7eURvbWFpbiwgeERvbWFpbn0gPSBsaW5lQ2hhcnQgfHwge307XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBzZWVtcyBsaW5lQ2hhcnQuc2VyaWVzIGhhcyBhbWJpZ3VvdXMgdHlwZXMuIFJlcXVpcmVzIHJlZmFjdG9yaW5nLlxuICAgIGNvbnN0IHNlcmllczoge2xpbmVzOiBhbnlbXTsgbWFya2VyczogYW55W119ID0gbGluZUNoYXJ0Py5zZXJpZXM7XG5cbiAgICBjb25zdCBwYWRkZWRZRG9tYWluID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIHlEb21haW4gJiYgeURvbWFpblswXSAmJiB5RG9tYWluWzFdXG4gICAgICAgICAgPyBbeURvbWFpblswXSwgeURvbWFpblsxXSArICh5RG9tYWluWzFdIC0geURvbWFpblswXSkgKiAwLjJdXG4gICAgICAgICAgOiBbXSxcbiAgICAgIFt5RG9tYWluXVxuICAgICk7XG4gICAgY29uc3QgYnJ1c2hEYXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4geERvbWFpbiAmJiBwYWRkZWRZRG9tYWluXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB4OiB4RG9tYWluWzBdLFxuICAgICAgICAgICAgICB5OiBwYWRkZWRZRG9tYWluWzFdLFxuICAgICAgICAgICAgICBjdXN0b21Db21wb25lbnQ6ICgpID0+IGJydXNoQ29tcG9uZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuICAgIH0sIFt4RG9tYWluLCBwYWRkZWRZRG9tYWluLCBicnVzaENvbXBvbmVudF0pO1xuXG4gICAgY29uc3QgaGludEZvcm1hdHRlciA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBkYXRldGltZUZvcm1hdHRlcih0aW1lem9uZSkodGltZUZvcm1hdCksXG4gICAgICBbdGltZXpvbmUsIHRpbWVGb3JtYXRdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8TGluZUNoYXJ0V3JhcHBlciBzdHlsZT17e21hcmdpblRvcDogYCR7bWFyZ2luLnRvcH1weGB9fT5cbiAgICAgICAgPFhZUGxvdFxuICAgICAgICAgIHhUeXBlPVwidGltZVwiXG4gICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICAgIG1hcmdpbj17TUFSR0lOfVxuICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4ge1xuICAgICAgICAgICAgb25Nb3VzZU1vdmUobnVsbCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB5RG9tYWluPXtwYWRkZWRZRG9tYWlufVxuICAgICAgICAgIHhEb21haW49e3hEb21haW59XG4gICAgICAgID5cbiAgICAgICAgICA8SG9yaXpvbnRhbEdyaWRMaW5lcyB0aWNrVG90YWw9ezN9IC8+XG4gICAgICAgICAge3Nlcmllcy5saW5lcy5tYXAoKGQsIGkpID0+IChcbiAgICAgICAgICAgIDxMaW5lU2VyaWVzXG4gICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tmaWxsOiAnbm9uZSd9fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICAgIGRhdGE9e2R9XG4gICAgICAgICAgICAgIG9uTmVhcmVzdFg9e3Nlcmllcy5tYXJrZXJzLmxlbmd0aCB8fCAhZW5hYmxlQ2hhcnRIb3ZlciA/IHVuZGVmaW5lZCA6IG9uTW91c2VNb3ZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8TWFya1NlcmllcyBkYXRhPXtob3ZlcmVkRFAgPyBbaG92ZXJlZERQXSA6IFtdfSBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgPEN1c3RvbVNWR1NlcmllcyBkYXRhPXticnVzaERhdGF9IC8+XG4gICAgICAgICAge2lzRW5sYXJnZWQgJiYgPFlBeGlzIHRpY2tUb3RhbD17M30gLz59XG4gICAgICAgICAge2hvdmVyZWREUCAmJiBlbmFibGVDaGFydEhvdmVyICYmICFicnVzaGluZyA/IChcbiAgICAgICAgICAgIDxIaW50IHZhbHVlPXtob3ZlcmVkRFB9PlxuICAgICAgICAgICAgICA8SGludENvbnRlbnQgey4uLmhvdmVyZWREUH0gZm9ybWF0PXtoaW50Rm9ybWF0dGVyfSAvPlxuICAgICAgICAgICAgPC9IaW50PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1hZUGxvdD5cbiAgICAgIDwvTGluZUNoYXJ0V3JhcHBlcj5cbiAgICApO1xuICB9O1xuICByZXR1cm4gTGluZUNoYXJ0Q29tcG9uZW50O1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaW5lQ2hhcnRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBWUEsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFtRCxJQUFBSyxlQUFBLEVBQUFDLGdCQUFBLEVBakJuRDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFULHdCQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JB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