UNPKG

kepler.gl

Version:

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

122 lines (118 loc) 18.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.basemapFunctionDefinition = basemapFunctionDefinition; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _components = require("@kepler.gl/components"); var _constants = require("@kepler.gl/constants"); 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; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function basemapFunctionDefinition(context) { return { name: 'basemap', description: 'change basemap', properties: { styleType: { type: 'string', description: 'The name of the basemap style. Required. If not provided, please ask user to specify the style. Valid values are "dark-matter", "dark-matter-nolabels", "no_map", "positron", "positron-nolabels", "voyager", "voyager-nolabels"' } }, required: ['styleType'], callbackFunction: basemapCallback, callbackFunctionContext: context, callbackMessage: customBasemapMessageCallback }; } function basemapCallback(_ref) { var functionName = _ref.functionName, functionArgs = _ref.functionArgs, functionContext = _ref.functionContext; var _ref2 = functionArgs, styleType = _ref2.styleType; var _ref3 = functionContext, mapStyleChange = _ref3.mapStyleChange, mapStyle = _ref3.mapStyle; // check if styleType is valid if (!_constants.DEFAULT_MAP_STYLES.find(function (style) { return style.id === styleType; })) { return { type: 'basemap', name: functionName, result: { success: false, details: "Invalid basemap style: ".concat(styleType, ". The valid values are ").concat(_constants.DEFAULT_MAP_STYLES.map(function (style) { return style.id; }).join(', ')) } }; } // change the basemap style // mapStyleChange(styleType); return { type: 'basemap', name: functionName, result: { success: true, styleType: styleType, details: "Yes, I can help to change the basemap style to ".concat(styleType, ".") }, data: { mapStyleChange: mapStyleChange, mapStyle: mapStyle } }; } var MapStyleSelector = _components.appInjector.get(_components.MapStyleSelectorFactory); function BasemapMessage(_ref4) { var functionArgs = _ref4.functionArgs, output = _ref4.output; var _ref5 = functionArgs, styleType = _ref5.styleType; var outputData = output.data; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), isSelecting = _useState2[0], setIsSelecting = _useState2[1]; var _useState3 = (0, _react.useState)(styleType), _useState4 = (0, _slicedToArray2["default"])(_useState3, 2), selectedMapStyle = _useState4[0], setSelectedMapStyle = _useState4[1]; (0, _react.useEffect)(function () { outputData === null || outputData === void 0 || outputData.mapStyleChange(styleType); }, [outputData, styleType]); if (!outputData) { return null; } var onChangeBasemap = function onChangeBasemap(id) { outputData === null || outputData === void 0 || outputData.mapStyleChange(id); setSelectedMapStyle(id); }; var onToggleActive = function onToggleActive() { setIsSelecting(!isSelecting); }; return /*#__PURE__*/_react["default"].createElement("div", { style: { marginTop: '8px' } }, /*#__PURE__*/_react["default"].createElement(MapStyleSelector, { mapStyle: _objectSpread(_objectSpread({}, outputData.mapStyle), {}, { styleType: selectedMapStyle }), isSelecting: isSelecting, onChange: onChangeBasemap, toggleActive: onToggleActive })); } function customBasemapMessageCallback(props) { return /*#__PURE__*/_react["default"].createElement(BasemapMessage, props); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29tcG9uZW50cyIsIl9jb25zdGFudHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJiYXNlbWFwRnVuY3Rpb25EZWZpbml0aW9uIiwiY29udGV4dCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsInByb3BlcnRpZXMiLCJzdHlsZVR5cGUiLCJ0eXBlIiwicmVxdWlyZWQiLCJjYWxsYmFja0Z1bmN0aW9uIiwiYmFzZW1hcENhbGxiYWNrIiwiY2FsbGJhY2tGdW5jdGlvbkNvbnRleHQiLCJjYWxsYmFja01lc3NhZ2UiLCJjdXN0b21CYXNlbWFwTWVzc2FnZUNhbGxiYWNrIiwiX3JlZiIsImZ1bmN0aW9uTmFtZSIsImZ1bmN0aW9uQXJncyIsImZ1bmN0aW9uQ29udGV4dCIsIl9yZWYyIiwiX3JlZjMiLCJtYXBTdHlsZUNoYW5nZSIsIm1hcFN0eWxlIiwiREVGQVVMVF9NQVBfU1RZTEVTIiwiZmluZCIsInN0eWxlIiwiaWQiLCJyZXN1bHQiLCJzdWNjZXNzIiwiZGV0YWlscyIsImNvbmNhdCIsIm1hcCIsImpvaW4iLCJkYXRhIiwiTWFwU3R5bGVTZWxlY3RvciIsImFwcEluamVjdG9yIiwiTWFwU3R5bGVTZWxlY3RvckZhY3RvcnkiLCJCYXNlbWFwTWVzc2FnZSIsIl9yZWY0Iiwib3V0cHV0IiwiX3JlZjUiLCJvdXRwdXREYXRhIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaXNTZWxlY3RpbmciLCJzZXRJc1NlbGVjdGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2VsZWN0ZWRNYXBTdHlsZSIsInNldFNlbGVjdGVkTWFwU3R5bGUiLCJ1c2VFZmZlY3QiLCJvbkNoYW5nZUJhc2VtYXAiLCJvblRvZ2dsZUFjdGl2ZSIsImNyZWF0ZUVsZW1lbnQiLCJtYXJnaW5Ub3AiLCJvbkNoYW5nZSIsInRvZ2dsZUFjdGl2ZSIsInByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2Jhc2VtYXAtZnVuY3Rpb25zLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtSZWFjdE5vZGUsIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWFwU3R5bGVTZWxlY3RvckZhY3RvcnksIGFwcEluamVjdG9yfSBmcm9tICdAa2VwbGVyLmdsL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge21hcFN0eWxlQ2hhbmdlLCBBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtERUZBVUxUX01BUF9TVFlMRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENhbGxiYWNrRnVuY3Rpb25Qcm9wcyxcbiAgQ3VzdG9tRnVuY3Rpb25DYWxsLFxuICBDdXN0b21GdW5jdGlvbkNvbnRleHQsXG4gIEN1c3RvbUZ1bmN0aW9uT3V0cHV0UHJvcHMsXG4gIEVycm9yQ2FsbGJhY2tSZXN1bHQsXG4gIFJlZ2lzdGVyRnVuY3Rpb25DYWxsaW5nUHJvcHNcbn0gZnJvbSAnQG9wZW5hc3Npc3RhbnQvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbWFwRnVuY3Rpb25EZWZpbml0aW9uKFxuICBjb250ZXh0OiBDdXN0b21GdW5jdGlvbkNvbnRleHQ8QWN0aW9uSGFuZGxlcjx0eXBlb2YgbWFwU3R5bGVDaGFuZ2U+IHwgTWFwU3R5bGU+XG4pOiBSZWdpc3RlckZ1bmN0aW9uQ2FsbGluZ1Byb3BzIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYmFzZW1hcCcsXG4gICAgZGVzY3JpcHRpb246ICdjaGFuZ2UgYmFzZW1hcCcsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgc3R5bGVUeXBlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnVGhlIG5hbWUgb2YgdGhlIGJhc2VtYXAgc3R5bGUuIFJlcXVpcmVkLiBJZiBub3QgcHJvdmlkZWQsIHBsZWFzZSBhc2sgdXNlciB0byBzcGVjaWZ5IHRoZSBzdHlsZS4gVmFsaWQgdmFsdWVzIGFyZSBcImRhcmstbWF0dGVyXCIsIFwiZGFyay1tYXR0ZXItbm9sYWJlbHNcIiwgXCJub19tYXBcIiwgXCJwb3NpdHJvblwiLCBcInBvc2l0cm9uLW5vbGFiZWxzXCIsIFwidm95YWdlclwiLCBcInZveWFnZXItbm9sYWJlbHNcIidcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ3N0eWxlVHlwZSddLFxuICAgIGNhbGxiYWNrRnVuY3Rpb246IGJhc2VtYXBDYWxsYmFjayxcbiAgICBjYWxsYmFja0Z1bmN0aW9uQ29udGV4dDogY29udGV4dCxcbiAgICBjYWxsYmFja01lc3NhZ2U6IGN1c3RvbUJhc2VtYXBNZXNzYWdlQ2FsbGJhY2tcbiAgfTtcbn1cblxudHlwZSBCYXNlbWFwQ2FsbGJhY2tSZXN1bHQgPSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICBkZXRhaWxzPzogc3RyaW5nO1xufTtcblxudHlwZSBCYXNlbWFwRnVuY3Rpb25Db250ZXh0ID0ge1xuICBtYXBTdHlsZUNoYW5nZTogKHN0eWxlVHlwZTogc3RyaW5nKSA9PiB2b2lkO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG59O1xuXG50eXBlIE91dHB1dFJlc3VsdFByb3BzID0gQmFzZW1hcENhbGxiYWNrUmVzdWx0IHwgRXJyb3JDYWxsYmFja1Jlc3VsdDtcblxudHlwZSBPdXRwdXREYXRhUHJvcHMgPSBCYXNlbWFwRnVuY3Rpb25Db250ZXh0O1xuXG50eXBlIEJhc2VtYXBDYWxsYmFja091dHB1dCA9IEN1c3RvbUZ1bmN0aW9uT3V0cHV0UHJvcHM8T3V0cHV0UmVzdWx0UHJvcHMsIE91dHB1dERhdGFQcm9wcz47XG5cbnR5cGUgQmFzZW1hcENhbGxiYWNrQXJncyA9IHtcbiAgc3R5bGVUeXBlOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBiYXNlbWFwQ2FsbGJhY2soe1xuICBmdW5jdGlvbk5hbWUsXG4gIGZ1bmN0aW9uQXJncyxcbiAgZnVuY3Rpb25Db250ZXh0XG59OiBDYWxsYmFja0Z1bmN0aW9uUHJvcHMpOiBCYXNlbWFwQ2FsbGJhY2tPdXRwdXQge1xuICBjb25zdCB7c3R5bGVUeXBlfSA9IGZ1bmN0aW9uQXJncyBhcyBCYXNlbWFwQ2FsbGJhY2tBcmdzO1xuICBjb25zdCB7bWFwU3R5bGVDaGFuZ2UsIG1hcFN0eWxlfSA9IGZ1bmN0aW9uQ29udGV4dCBhcyBCYXNlbWFwRnVuY3Rpb25Db250ZXh0O1xuXG4gIC8vIGNoZWNrIGlmIHN0eWxlVHlwZSBpcyB2YWxpZFxuICBpZiAoIURFRkFVTFRfTUFQX1NUWUxFUy5maW5kKHN0eWxlID0+IHN0eWxlLmlkID09PSBzdHlsZVR5cGUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdiYXNlbWFwJyxcbiAgICAgIG5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgICAgIHJlc3VsdDoge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsczogYEludmFsaWQgYmFzZW1hcCBzdHlsZTogJHtzdHlsZVR5cGV9LiBUaGUgdmFsaWQgdmFsdWVzIGFyZSAke0RFRkFVTFRfTUFQX1NUWUxFUy5tYXAoXG4gICAgICAgICAgc3R5bGUgPT4gc3R5bGUuaWRcbiAgICAgICAgKS5qb2luKCcsICcpfWBcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gY2hhbmdlIHRoZSBiYXNlbWFwIHN0eWxlXG4gIC8vIG1hcFN0eWxlQ2hhbmdlKHN0eWxlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnYmFzZW1hcCcsXG4gICAgbmFtZTogZnVuY3Rpb25OYW1lLFxuICAgIHJlc3VsdDoge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIHN0eWxlVHlwZSxcbiAgICAgIGRldGFpbHM6IGBZZXMsIEkgY2FuIGhlbHAgdG8gY2hhbmdlIHRoZSBiYXNlbWFwIHN0eWxlIHRvICR7c3R5bGVUeXBlfS5gXG4gICAgfSxcbiAgICBkYXRhOiB7XG4gICAgICBtYXBTdHlsZUNoYW5nZSxcbiAgICAgIG1hcFN0eWxlXG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBNYXBTdHlsZVNlbGVjdG9yID0gYXBwSW5qZWN0b3IuZ2V0KE1hcFN0eWxlU2VsZWN0b3JGYWN0b3J5KTtcblxuZnVuY3Rpb24gQmFzZW1hcE1lc3NhZ2Uoe2Z1bmN0aW9uQXJncywgb3V0cHV0fTogQ3VzdG9tRnVuY3Rpb25DYWxsKSB7XG4gIGNvbnN0IHtzdHlsZVR5cGV9ID0gZnVuY3Rpb25BcmdzIGFzIEJhc2VtYXBDYWxsYmFja0FyZ3M7XG4gIGNvbnN0IG91dHB1dERhdGEgPSBvdXRwdXQuZGF0YSBhcyBCYXNlbWFwRnVuY3Rpb25Db250ZXh0O1xuXG4gIGNvbnN0IFtpc1NlbGVjdGluZywgc2V0SXNTZWxlY3RpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IFtzZWxlY3RlZE1hcFN0eWxlLCBzZXRTZWxlY3RlZE1hcFN0eWxlXSA9IHVzZVN0YXRlKHN0eWxlVHlwZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBvdXRwdXREYXRhPy5tYXBTdHlsZUNoYW5nZShzdHlsZVR5cGUpO1xuICB9LCBbb3V0cHV0RGF0YSwgc3R5bGVUeXBlXSk7XG5cbiAgaWYgKCFvdXRwdXREYXRhKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBvbkNoYW5nZUJhc2VtYXAgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIG91dHB1dERhdGE/Lm1hcFN0eWxlQ2hhbmdlKGlkKTtcbiAgICBzZXRTZWxlY3RlZE1hcFN0eWxlKGlkKTtcbiAgfTtcblxuICBjb25zdCBvblRvZ2dsZUFjdGl2ZSA9ICgpID0+IHtcbiAgICBzZXRJc1NlbGVjdGluZyghaXNTZWxlY3RpbmcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBzdHlsZT17e21hcmdpblRvcDogJzhweCd9fT5cbiAgICAgIDxNYXBTdHlsZVNlbGVjdG9yXG4gICAgICAgIG1hcFN0eWxlPXt7Li4ub3V0cHV0RGF0YS5tYXBTdHlsZSwgc3R5bGVUeXBlOiBzZWxlY3RlZE1hcFN0eWxlfX1cbiAgICAgICAgaXNTZWxlY3Rpbmc9e2lzU2VsZWN0aW5nfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VCYXNlbWFwfVxuICAgICAgICB0b2dnbGVBY3RpdmU9e29uVG9nZ2xlQWN0aXZlfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gY3VzdG9tQmFzZW1hcE1lc3NhZ2VDYWxsYmFjayhwcm9wczogQ3VzdG9tRnVuY3Rpb25DYWxsKTogUmVhY3ROb2RlIHwgbnVsbCB7XG4gIHJldHVybiA8QmFzZW1hcE1lc3NhZ2Ugey4uLnByb3BzfSAvPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUF3RCxTQUFBRyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUwsd0JBQUFLLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBVyxRQUFBbkIsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQVEsTUFBQSxDQUFBUyxJQUFBLENBQUFwQixDQUFBLE9BQUFXLE1BQUEsQ0FBQVUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBWCxNQUFBLENBQUFVLHFCQUFBLENBQUFyQixDQUFBLEdBQUFFLENBQUEsS0FBQW9CLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFyQixDQUFBLFdBQUFTLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFzQixVQUFBLE9BQUFyQixDQUFBLENBQUFzQixJQUFBLENBQUFDLEtBQUEsQ0FBQXZCLENBQUEsRUFBQW1CLENBQUEsWUFBQW5CLENBQUE7QUFBQSxTQUFBd0IsY0FBQTNCLENBQUEsYUFBQUUsQ0FBQSxNQUFBQSxDQUFBLEdBQUEwQixTQUFBLENBQUFDLE1BQUEsRUFBQTNCLENBQUEsVUFBQUMsQ0FBQSxXQUFBeUIsU0FBQSxDQUFBMUIsQ0FBQSxJQUFBMEIsU0FBQSxDQUFBMUIsQ0FBQSxRQUFBQSxDQUFBLE9BQUFpQixPQUFBLENBQUFSLE1BQUEsQ0FBQVIsQ0FBQSxPQUFBMkIsT0FBQSxXQUFBNUIsQ0FBQSxRQUFBNkIsZ0JBQUEsYUFBQS9CLENBQUEsRUFBQUUsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQVMsTUFBQSxDQUFBcUIseUJBQUEsR0FBQXJCLE1BQUEsQ0FBQXNCLGdCQUFBLENBQUFqQyxDQUFBLEVBQUFXLE1BQUEsQ0FBQXFCLHlCQUFBLENBQUE3QixDQUFBLEtBQUFnQixPQUFBLENBQUFSLE1BQUEsQ0FBQVIsQ0FBQSxHQUFBMkIsT0FBQSxXQUFBNUIsQ0FBQSxJQUFBUyxNQUFBLENBQUFDLGNBQUEsQ0FBQVosQ0FBQSxFQUFBRSxDQUFBLEVBQUFTLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRixDQUFBLElBUHhEO0FBQ0E7QUFnQk8sU0FBU2tDLHlCQUF5QkEsQ0FDdkNDLE9BQStFLEVBQ2pEO0VBQzlCLE9BQU87SUFDTEMsSUFBSSxFQUFFLFNBQVM7SUFDZkMsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QkMsVUFBVSxFQUFFO01BQ1ZDLFNBQVMsRUFBRTtRQUNUQyxJQUFJLEVBQUUsUUFBUTtRQUNkSCxXQUFXLEVBQ1Q7TUFDSjtJQUNGLENBQUM7SUFDREksUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3ZCQyxnQkFBZ0IsRUFBRUMsZUFBZTtJQUNqQ0MsdUJBQXVCLEVBQUVULE9BQU87SUFDaENVLGVBQWUsRUFBRUM7RUFDbkIsQ0FBQztBQUNIO0FBdUJBLFNBQVNILGVBQWVBLENBQUFJLElBQUEsRUFJeUI7RUFBQSxJQUgvQ0MsWUFBWSxHQUFBRCxJQUFBLENBQVpDLFlBQVk7SUFDWkMsWUFBWSxHQUFBRixJQUFBLENBQVpFLFlBQVk7SUFDWkMsZUFBZSxHQUFBSCxJQUFBLENBQWZHLGVBQWU7RUFFZixJQUFBQyxLQUFBLEdBQW9CRixZQUFZO0lBQXpCVixTQUFTLEdBQUFZLEtBQUEsQ0FBVFosU0FBUztFQUNoQixJQUFBYSxLQUFBLEdBQW1DRixlQUFlO0lBQTNDRyxjQUFjLEdBQUFELEtBQUEsQ0FBZEMsY0FBYztJQUFFQyxRQUFRLEdBQUFGLEtBQUEsQ0FBUkUsUUFBUTs7RUFFL0I7RUFDQSxJQUFJLENBQUNDLDZCQUFrQixDQUFDQyxJQUFJLENBQUMsVUFBQUMsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsRUFBRSxLQUFLbkIsU0FBUztFQUFBLEVBQUMsRUFBRTtJQUM3RCxPQUFPO01BQ0xDLElBQUksRUFBRSxTQUFTO01BQ2ZKLElBQUksRUFBRVksWUFBWTtNQUNsQlcsTUFBTSxFQUFFO1FBQ05DLE9BQU8sRUFBRSxLQUFLO1FBQ2RDLE9BQU8sNEJBQUFDLE1BQUEsQ0FBNEJ2QixTQUFTLDZCQUFBdUIsTUFBQSxDQUEwQlAsNkJBQWtCLENBQUNRLEdBQUcsQ0FDMUYsVUFBQU4sS0FBSztVQUFBLE9BQUlBLEtBQUssQ0FBQ0MsRUFBRTtRQUFBLENBQ25CLENBQUMsQ0FBQ00sSUFBSSxDQUFDLElBQUksQ0FBQztNQUNkO0lBQ0YsQ0FBQztFQUNIOztFQUVBO0VBQ0E7O0VBRUEsT0FBTztJQUNMeEIsSUFBSSxFQUFFLFNBQVM7SUFDZkosSUFBSSxFQUFFWSxZQUFZO0lBQ2xCVyxNQUFNLEVBQUU7TUFDTkMsT0FBTyxFQUFFLElBQUk7TUFDYnJCLFNBQVMsRUFBVEEsU0FBUztNQUNUc0IsT0FBTyxvREFBQUMsTUFBQSxDQUFvRHZCLFNBQVM7SUFDdEUsQ0FBQztJQUNEMEIsSUFBSSxFQUFFO01BQ0paLGNBQWMsRUFBZEEsY0FBYztNQUNkQyxRQUFRLEVBQVJBO0lBQ0Y7RUFDRixDQUFDO0FBQ0g7QUFFQSxJQUFNWSxnQkFBZ0IsR0FBR0MsdUJBQVcsQ0FBQzVELEdBQUcsQ0FBQzZELG1DQUF1QixDQUFDO0FBRWpFLFNBQVNDLGNBQWNBLENBQUFDLEtBQUEsRUFBNkM7RUFBQSxJQUEzQ3JCLFlBQVksR0FBQXFCLEtBQUEsQ0FBWnJCLFlBQVk7SUFBRXNCLE1BQU0sR0FBQUQsS0FBQSxDQUFOQyxNQUFNO0VBQzNDLElBQUFDLEtBQUEsR0FBb0J2QixZQUFZO0lBQXpCVixTQUFTLEdBQUFpQyxLQUFBLENBQVRqQyxTQUFTO0VBQ2hCLElBQU1rQyxVQUFVLEdBQUdGLE1BQU0sQ0FBQ04sSUFBOEI7RUFFeEQsSUFBQVMsU0FBQSxHQUFzQyxJQUFBQyxlQUFRLEVBQUMsS0FBSyxDQUFDO0lBQUFDLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQTlDSSxXQUFXLEdBQUFGLFVBQUE7SUFBRUcsY0FBYyxHQUFBSCxVQUFBO0VBRWxDLElBQUFJLFVBQUEsR0FBZ0QsSUFBQUwsZUFBUSxFQUFDcEMsU0FBUyxDQUFDO0lBQUEwQyxVQUFBLE9BQUFKLGVBQUEsYUFBQUcsVUFBQTtJQUE1REUsZ0JBQWdCLEdBQUFELFVBQUE7SUFBRUUsbUJBQW1CLEdBQUFGLFVBQUE7RUFFNUMsSUFBQUcsZ0JBQVMsRUFBQyxZQUFNO0lBQ2RYLFVBQVUsYUFBVkEsVUFBVSxlQUFWQSxVQUFVLENBQUVwQixjQUFjLENBQUNkLFNBQVMsQ0FBQztFQUN2QyxDQUFDLEVBQUUsQ0FBQ2tDLFVBQVUsRUFBRWxDLFNBQVMsQ0FBQyxDQUFDO0VBRTNCLElBQUksQ0FBQ2tDLFVBQVUsRUFBRTtJQUNmLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBTVksZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJM0IsRUFBVSxFQUFLO0lBQ3RDZSxVQUFVLGFBQVZBLFVBQVUsZUFBVkEsVUFBVSxDQUFFcEIsY0FBYyxDQUFDSyxFQUFFLENBQUM7SUFDOUJ5QixtQkFBbUIsQ0FBQ3pCLEVBQUUsQ0FBQztFQUN6QixDQUFDO0VBRUQsSUFBTTRCLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBQSxFQUFTO0lBQzNCUCxjQUFjLENBQUMsQ0FBQ0QsV0FBVyxDQUFDO0VBQzlCLENBQUM7RUFFRCxvQkFDRXBGLE1BQUEsWUFBQTZGLGFBQUE7SUFBSzlCLEtBQUssRUFBRTtNQUFDK0IsU0FBUyxFQUFFO0lBQUs7RUFBRSxnQkFDN0I5RixNQUFBLFlBQUE2RixhQUFBLENBQUNyQixnQkFBZ0I7SUFDZlosUUFBUSxFQUFBM0IsYUFBQSxDQUFBQSxhQUFBLEtBQU04QyxVQUFVLENBQUNuQixRQUFRO01BQUVmLFNBQVMsRUFBRTJDO0lBQWdCLEVBQUU7SUFDaEVKLFdBQVcsRUFBRUEsV0FBWTtJQUN6QlcsUUFBUSxFQUFFSixlQUFnQjtJQUMxQkssWUFBWSxFQUFFSjtFQUFlLENBQzlCLENBQ0UsQ0FBQztBQUVWO0FBRUEsU0FBU3hDLDRCQUE0QkEsQ0FBQzZDLEtBQXlCLEVBQW9CO0VBQ2pGLG9CQUFPakcsTUFBQSxZQUFBNkYsYUFBQSxDQUFDbEIsY0FBYyxFQUFLc0IsS0FBUSxDQUFDO0FBQ3RDIiwiaWdub3JlTGlzdCI6W119