kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
134 lines (132 loc) • 26.4 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.ActionPanelItem = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _icons = require("./icons");
var _switch = _interopRequireDefault(require("./switch"));
var _tippyTooltip = _interopRequireDefault(require("./tippy-tooltip"));
var _templateObject, _templateObject2, _templateObject3; // 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; }
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; }
var StyledItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 12px;\n line-height: 14px;\n padding: 8px 16px 8px 8px;\n min-height: ", "px;\n text-transform: capitalize;\n background-color: ", ";\n max-width: 200px;\n position: relative;\n\n ", " &:hover {\n color: ", ";\n .nested-group {\n display: block;\n }\n }\n\n .label {\n margin-left: 8px;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .label-icon {\n margin-left: 4px;\n margin-bottom: -2px;\n }\n .icon {\n width: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .nested-group {\n max-width: 200px;\n overflow: hidden;\n display: none;\n color: ", ";\n position: absolute;\n left: 100%;\n top: 0px;\n padding-left: 4px;\n\n label {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n"])), function (props) {
return props.theme.actionPanelHeight;
}, function (props) {
return props.theme.dropdownListBgd;
}, function (props) {
return props.color ? "border-left: 3px solid rgb(".concat(props.color, ");") : '';
}, function (props) {
return props.theme.textColorHl;
}, function (props) {
return props.theme.textColor;
});
var StyledCheckedbox = (0, _styledComponents["default"])(_switch["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n label {\n margin-bottom: 0;\n color: ", ";\n padding-left: 20px;\n line-height: 12px;\n\n &:before {\n width: 12px;\n height: 12px;\n background-color: ", ";\n }\n &:hover {\n color: ", ";\n }\n }\n"])), function (props) {
return props.theme.textColor;
}, function (props) {
return props.theme.dropdownListBgd;
}, function (props) {
return props.theme.textColorHl;
});
var renderChildren = function renderChildren(child, index) {
return child && /*#__PURE__*/_react["default"].isValidElement(child) && /*#__PURE__*/_react["default"].cloneElement(child, {
onClick: function onClick() {
if (child.props.onClick) {
child.props.onClick(index);
}
},
className: (0, _classnames["default"])('action-panel-item', child.props.className)
});
};
var ActionPanelItem = exports.ActionPanelItem = /*#__PURE__*/_react["default"].memo(function (_ref) {
var children = _ref.children,
color = _ref.color,
className = _ref.className,
Icon = _ref.Icon,
label = _ref.label,
onClick = _ref.onClick,
isSelection = _ref.isSelection,
isActive = _ref.isActive,
isDisabled = _ref.isDisabled,
tooltipText = _ref.tooltipText,
style = _ref.style;
var onClickCallback = (0, _react.useCallback)(function (event) {
if (isDisabled) {
return;
}
event.preventDefault();
event.stopPropagation();
onClick === null || onClick === void 0 || onClick();
}, [onClick, isDisabled]);
var content = /*#__PURE__*/_react["default"].createElement(StyledItem, {
className: className,
onClick: onClickCallback,
color: color,
style: _objectSpread(_objectSpread({}, isDisabled ? {
cursor: 'not-allowed',
opacity: 0.5
} : {
cursor: 'pointer'
}), style)
}, Icon ? /*#__PURE__*/_react["default"].createElement("div", {
className: "icon"
}, /*#__PURE__*/_react["default"].createElement(Icon, {
height: "16px"
})) : null, isSelection ? /*#__PURE__*/_react["default"].createElement(StyledCheckedbox, {
type: "checkbox",
checked: Boolean(isActive),
disabled: Boolean(isDisabled),
id: "switch-".concat(label),
secondary: true,
label: label
}) : /*#__PURE__*/_react["default"].createElement("span", {
className: "label"
}, label), children ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
className: "label-icon"
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
height: "16px"
})), !isDisabled ? /*#__PURE__*/_react["default"].createElement("div", {
className: "nested-group"
}, _react["default"].Children.map(children, renderChildren)) : null) : null);
return tooltipText ? /*#__PURE__*/_react["default"].createElement(_tippyTooltip["default"], {
render: function render() {
return /*#__PURE__*/_react["default"].createElement("div", null, tooltipText);
}
}, content) : content;
});
ActionPanelItem.displayName = 'ActionPanelItem';
var StyledActionPanel = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n box-shadow: ", ";\n transition: ", ";\n color: ", ";\n\n .action-panel-item {\n ", " &:last-of-type {\n border-bottom: 0;\n }\n }\n"])), function (props) {
return props.direction;
}, function (props) {
return props.theme.dropdownListShadow;
}, function (props) {
return props.theme.transitionSlow;
}, function (props) {
return props.theme.textColor;
}, function (props) {
return props.direction === 'column' ? "border-bottom: 1px solid ".concat(props.theme.panelHeaderIcon) : "border-right: 1px solid ".concat(props.theme.panelHeaderIcon);
});
// React compound element https://medium.com/@Dane_s/react-js-compound-components-a6e54b5c9992
// @ts-expect-error looks like not valid default value for direction prop
var ActionPanel = function ActionPanel(_ref2) {
var children = _ref2.children,
className = _ref2.className,
_ref2$direction = _ref2.direction,
direction = _ref2$direction === void 0 ? 'column' : _ref2$direction;
return /*#__PURE__*/_react["default"].createElement(StyledActionPanel, {
className: className,
direction: direction
}, _react["default"].Children.map(children, renderChildren));
};
ActionPanel.displayName = 'ActionPanel';
var _default = exports["default"] = ActionPanel;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pY29ucyIsIl9zd2l0Y2giLCJfdGlwcHlUb29sdGlwIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJTdHlsZWRJdGVtIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiYWN0aW9uUGFuZWxIZWlnaHQiLCJkcm9wZG93bkxpc3RCZ2QiLCJjb2xvciIsImNvbmNhdCIsInRleHRDb2xvckhsIiwidGV4dENvbG9yIiwiU3R5bGVkQ2hlY2tlZGJveCIsIkNoZWNrYm94IiwicmVuZGVyQ2hpbGRyZW4iLCJjaGlsZCIsImluZGV4IiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsIm9uQ2xpY2siLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwiQWN0aW9uUGFuZWxJdGVtIiwiZXhwb3J0cyIsIm1lbW8iLCJfcmVmIiwiY2hpbGRyZW4iLCJJY29uIiwibGFiZWwiLCJpc1NlbGVjdGlvbiIsImlzQWN0aXZlIiwiaXNEaXNhYmxlZCIsInRvb2x0aXBUZXh0Iiwic3R5bGUiLCJvbkNsaWNrQ2FsbGJhY2siLCJ1c2VDYWxsYmFjayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb250ZW50IiwiY3JlYXRlRWxlbWVudCIsImN1cnNvciIsIm9wYWNpdHkiLCJoZWlnaHQiLCJ0eXBlIiwiY2hlY2tlZCIsIkJvb2xlYW4iLCJkaXNhYmxlZCIsImlkIiwic2Vjb25kYXJ5IiwiQXJyb3dSaWdodCIsIkNoaWxkcmVuIiwibWFwIiwicmVuZGVyIiwiZGlzcGxheU5hbWUiLCJTdHlsZWRBY3Rpb25QYW5lbCIsImRpcmVjdGlvbiIsImRyb3Bkb3duTGlzdFNoYWRvdyIsInRyYW5zaXRpb25TbG93IiwicGFuZWxIZWFkZXJJY29uIiwiQWN0aW9uUGFuZWwiLCJfcmVmMiIsIl9yZWYyJGRpcmVjdGlvbiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9hY3Rpb24tcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIFByb3BzV2l0aENoaWxkcmVuLCBFbGVtZW50VHlwZSwgQ1NTUHJvcGVydGllcywgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7SVN0eWxlZENvbXBvbmVudH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtBcnJvd1JpZ2h0fSBmcm9tICcuL2ljb25zJztcbmltcG9ydCBDaGVja2JveCBmcm9tICcuL3N3aXRjaCc7XG5pbXBvcnQge0Jhc2VDb21wb25lbnRQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IFRpcHB5VG9vbHRpcCBmcm9tICcuL3RpcHB5LXRvb2x0aXAnO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25QYW5lbFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBjb2xvcj86IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiBDU1NQcm9wZXJ0aWVzWydkaXJlY3Rpb24nXTtcbn0+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25QYW5lbEl0ZW1Qcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgSWNvbj86IEVsZW1lbnRUeXBlO1xuICBsYWJlbDogc3RyaW5nO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgaXNTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICB0b29sdGlwVGV4dD86IHN0cmluZyB8IG51bGw7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn0+O1xuXG5jb25zdCBTdHlsZWRJdGVtID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMTRweDtcbiAgcGFkZGluZzogOHB4IDE2cHggOHB4IDhweDtcbiAgbWluLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5hY3Rpb25QYW5lbEhlaWdodH1weDtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICR7cHJvcHMgPT4gKHByb3BzLmNvbG9yID8gYGJvcmRlci1sZWZ0OiAzcHggc29saWQgcmdiKCR7cHJvcHMuY29sb3J9KTtgIDogJycpfSAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgLm5lc3RlZC1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAubGFiZWwge1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gIC5sYWJlbC1pY29uIHtcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IC0ycHg7XG4gIH1cbiAgLmljb24ge1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAubmVzdGVkLWdyb3VwIHtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHBhZGRpbmctbGVmdDogNHB4O1xuXG4gICAgbGFiZWwge1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQ2hlY2tlZGJveCA9IHN0eWxlZChDaGVja2JveClgXG4gIGxhYmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgd2lkdGg6IDEycHg7XG4gICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZH07XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgcmVuZGVyQ2hpbGRyZW4gPSAoY2hpbGQ6IFJlYWN0Tm9kZSwgaW5kZXg6IG51bWJlcikgPT5cbiAgY2hpbGQgJiZcbiAgUmVhY3QuaXNWYWxpZEVsZW1lbnQ8YW55PihjaGlsZCkgJiZcbiAgUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgY2hpbGQucHJvcHMub25DbGljayhpbmRleCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ2FjdGlvbi1wYW5lbC1pdGVtJywgY2hpbGQucHJvcHMuY2xhc3NOYW1lKVxuICB9KTtcblxuZXhwb3J0IGNvbnN0IEFjdGlvblBhbmVsSXRlbSA9IFJlYWN0Lm1lbW8oXG4gICh7XG4gICAgY2hpbGRyZW4sXG4gICAgY29sb3IsXG4gICAgY2xhc3NOYW1lLFxuICAgIEljb24sXG4gICAgbGFiZWwsXG4gICAgb25DbGljayxcbiAgICBpc1NlbGVjdGlvbixcbiAgICBpc0FjdGl2ZSxcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRvb2x0aXBUZXh0LFxuICAgIHN0eWxlXG4gIH06IEFjdGlvblBhbmVsSXRlbVByb3BzKSA9PiB7XG4gICAgY29uc3Qgb25DbGlja0NhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBvbkNsaWNrPy4oKTtcbiAgICAgIH0sXG4gICAgICBbb25DbGljaywgaXNEaXNhYmxlZF1cbiAgICApO1xuXG4gICAgY29uc3QgY29udGVudCA9IChcbiAgICAgIDxTdHlsZWRJdGVtXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrQ2FsbGJhY2t9XG4gICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAuLi4oaXNEaXNhYmxlZCA/IHtjdXJzb3I6ICdub3QtYWxsb3dlZCcsIG9wYWNpdHk6IDAuNX0gOiB7Y3Vyc29yOiAncG9pbnRlcid9KSxcbiAgICAgICAgICAuLi5zdHlsZVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7SWNvbiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25cIj5cbiAgICAgICAgICAgIDxJY29uIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge2lzU2VsZWN0aW9uID8gKFxuICAgICAgICAgIDxTdHlsZWRDaGVja2VkYm94XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17Qm9vbGVhbihpc0FjdGl2ZSl9XG4gICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihpc0Rpc2FibGVkKX1cbiAgICAgICAgICAgIGlkPXtgc3dpdGNoLSR7bGFiZWx9YH1cbiAgICAgICAgICAgIHNlY29uZGFyeVxuICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGFiZWxcIj57bGFiZWx9PC9zcGFuPlxuICAgICAgICApfVxuICAgICAgICB7Y2hpbGRyZW4gPyAoXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWwtaWNvblwiPlxuICAgICAgICAgICAgICA8QXJyb3dSaWdodCBoZWlnaHQ9XCIxNnB4XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyFpc0Rpc2FibGVkID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5lc3RlZC1ncm91cFwiPntSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIHJlbmRlckNoaWxkcmVuKX08L2Rpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU3R5bGVkSXRlbT5cbiAgICApO1xuICAgIHJldHVybiB0b29sdGlwVGV4dCA/IChcbiAgICAgIDxUaXBweVRvb2x0aXAgcmVuZGVyPXsoKSA9PiA8ZGl2Pnt0b29sdGlwVGV4dH08L2Rpdj59Pntjb250ZW50fTwvVGlwcHlUb29sdGlwPlxuICAgICkgOiAoXG4gICAgICBjb250ZW50XG4gICAgKTtcbiAgfVxuKTtcblxuQWN0aW9uUGFuZWxJdGVtLmRpc3BsYXlOYW1lID0gJ0FjdGlvblBhbmVsSXRlbSc7XG5cbmV4cG9ydCB0eXBlIFN0eWxlZEFjdGlvblBhbmVsUHJvcHMgPSBCYXNlQ29tcG9uZW50UHJvcHMgJiB7XG4gIGRpcmVjdGlvbj86IHN0cmluZztcbn07XG5cbmNvbnN0IFN0eWxlZEFjdGlvblBhbmVsOiBJU3R5bGVkQ29tcG9uZW50PFxuICAnd2ViJyxcbiAgU3R5bGVkQWN0aW9uUGFuZWxQcm9wc1xuPiA9IHN0eWxlZC5kaXY8U3R5bGVkQWN0aW9uUGFuZWxQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiAke3Byb3BzID0+IHByb3BzLmRpcmVjdGlvbn07XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0U2hhZG93fTtcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50cmFuc2l0aW9uU2xvd307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5cbiAgLmFjdGlvbi1wYW5lbC1pdGVtIHtcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5kaXJlY3Rpb24gPT09ICdjb2x1bW4nXG4gICAgICAgID8gYGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzLnRoZW1lLnBhbmVsSGVhZGVySWNvbn1gXG4gICAgICAgIDogYGJvcmRlci1yaWdodDogMXB4IHNvbGlkICR7cHJvcHMudGhlbWUucGFuZWxIZWFkZXJJY29ufWB9ICY6bGFzdC1vZi10eXBlIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgfVxuICB9XG5gO1xuXG4vLyBSZWFjdCBjb21wb3VuZCBlbGVtZW50IGh0dHBzOi8vbWVkaXVtLmNvbS9ARGFuZV9zL3JlYWN0LWpzLWNvbXBvdW5kLWNvbXBvbmVudHMtYTZlNTRiNWM5OTkyXG4vLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tzIGxpa2Ugbm90IHZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIGRpcmVjdGlvbiBwcm9wXG5jb25zdCBBY3Rpb25QYW5lbCA9ICh7Y2hpbGRyZW4sIGNsYXNzTmFtZSwgZGlyZWN0aW9uID0gJ2NvbHVtbid9OiBBY3Rpb25QYW5lbFByb3BzKSA9PiAoXG4gIDxTdHlsZWRBY3Rpb25QYW5lbCBjbGFzc05hbWU9e2NsYXNzTmFtZX0gZGlyZWN0aW9uPXtkaXJlY3Rpb259PlxuICAgIHtSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIHJlbmRlckNoaWxkcmVuKX1cbiAgPC9TdHlsZWRBY3Rpb25QYW5lbD5cbik7XG5cbkFjdGlvblBhbmVsLmRpc3BsYXlOYW1lID0gJ0FjdGlvblBhbmVsJztcblxuZXhwb3J0IGRlZmF1bHQgQWN0aW9uUGFuZWw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sYUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQTJDLElBQUFPLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFUM0M7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVCx3QkFBQVMsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFFBQUFuQixDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBUSxNQUFBLENBQUFTLElBQUEsQ0FBQXBCLENBQUEsT0FBQVcsTUFBQSxDQUFBVSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFYLE1BQUEsQ0FBQVUscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUUsQ0FBQSxLQUFBb0IsQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQXJCLENBQUEsV0FBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFFLENBQUEsRUFBQXNCLFVBQUEsT0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdkIsQ0FBQSxFQUFBbUIsQ0FBQSxZQUFBbkIsQ0FBQTtBQUFBLFNBQUF3QixjQUFBM0IsQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTBCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBM0IsQ0FBQSxVQUFBQyxDQUFBLFdBQUF5QixTQUFBLENBQUExQixDQUFBLElBQUEwQixTQUFBLENBQUExQixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLE9BQUEyQixPQUFBLFdBQUE1QixDQUFBLFFBQUE2QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBUyxNQUFBLENBQUFxQix5QkFBQSxHQUFBckIsTUFBQSxDQUFBc0IsZ0JBQUEsQ0FBQWpDLENBQUEsRUFBQVcsTUFBQSxDQUFBcUIseUJBQUEsQ0FBQTdCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLEdBQUEyQixPQUFBLFdBQUE1QixDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUE7QUE2QkEsSUFBTWtDLFVBQVUsR0FBR0MsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFBeEMsZUFBQSxLQUFBQSxlQUFBLE9BQUF5Qyx1QkFBQSxvNkJBT2IsVUFBQUMsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDQyxpQkFBaUI7QUFBQSxHQUVoQyxVQUFBRixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNFLGVBQWU7QUFBQSxHQUl0RCxVQUFBSCxLQUFLO0VBQUEsT0FBS0EsS0FBSyxDQUFDSSxLQUFLLGlDQUFBQyxNQUFBLENBQWlDTCxLQUFLLENBQUNJLEtBQUssVUFBTyxFQUFFO0FBQUEsQ0FBQyxFQUNsRSxVQUFBSixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNLLFdBQVc7QUFBQSxHQTBCaEMsVUFBQU4sS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDTSxTQUFTO0FBQUEsRUFXMUM7QUFFRCxJQUFNQyxnQkFBZ0IsR0FBRyxJQUFBWCw0QkFBTSxFQUFDWSxrQkFBUSxDQUFDLENBQUFsRCxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBd0MsdUJBQUEsNFFBRzVCLFVBQUFDLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ00sU0FBUztBQUFBLEdBT2pCLFVBQUFQLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0UsZUFBZTtBQUFBLEdBRy9DLFVBQUFILEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0ssV0FBVztBQUFBLEVBRzlDO0FBRUQsSUFBTUksY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxLQUFnQixFQUFFQyxLQUFhO0VBQUEsT0FDckRELEtBQUssaUJBQ0xFLGlCQUFLLENBQUNDLGNBQWMsQ0FBTUgsS0FBSyxDQUFDLGlCQUNoQ0UsaUJBQUssQ0FBQ0UsWUFBWSxDQUFDSixLQUFLLEVBQUU7SUFDeEJLLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7TUFDYixJQUFJTCxLQUFLLENBQUNYLEtBQUssQ0FBQ2dCLE9BQU8sRUFBRTtRQUN2QkwsS0FBSyxDQUFDWCxLQUFLLENBQUNnQixPQUFPLENBQUNKLEtBQUssQ0FBQztNQUM1QjtJQUNGLENBQUM7SUFDREssU0FBUyxFQUFFLElBQUFDLHNCQUFVLEVBQUMsbUJBQW1CLEVBQUVQLEtBQUssQ0FBQ1gsS0FBSyxDQUFDaUIsU0FBUztFQUNsRSxDQUFDLENBQUM7QUFBQTtBQUVHLElBQU1FLGVBQWUsR0FBQUMsT0FBQSxDQUFBRCxlQUFBLGdCQUFHTixpQkFBSyxDQUFDUSxJQUFJLENBQ3ZDLFVBQUFDLElBQUEsRUFZNEI7RUFBQSxJQVgxQkMsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7SUFDUm5CLEtBQUssR0FBQWtCLElBQUEsQ0FBTGxCLEtBQUs7SUFDTGEsU0FBUyxHQUFBSyxJQUFBLENBQVRMLFNBQVM7SUFDVE8sSUFBSSxHQUFBRixJQUFBLENBQUpFLElBQUk7SUFDSkMsS0FBSyxHQUFBSCxJQUFBLENBQUxHLEtBQUs7SUFDTFQsT0FBTyxHQUFBTSxJQUFBLENBQVBOLE9BQU87SUFDUFUsV0FBVyxHQUFBSixJQUFBLENBQVhJLFdBQVc7SUFDWEMsUUFBUSxHQUFBTCxJQUFBLENBQVJLLFFBQVE7SUFDUkMsVUFBVSxHQUFBTixJQUFBLENBQVZNLFVBQVU7SUFDVkMsV0FBVyxHQUFBUCxJQUFBLENBQVhPLFdBQVc7SUFDWEMsS0FBSyxHQUFBUixJQUFBLENBQUxRLEtBQUs7RUFFTCxJQUFNQyxlQUFlLEdBQUcsSUFBQUMsa0JBQVcsRUFDakMsVUFBQUMsS0FBSyxFQUFJO0lBQ1AsSUFBSUwsVUFBVSxFQUFFO01BQ2Q7SUFDRjtJQUNBSyxLQUFLLENBQUNDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RCRCxLQUFLLENBQUNFLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZCbkIsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRyxDQUFDO0VBQ2IsQ0FBQyxFQUNELENBQUNBLE9BQU8sRUFBRVksVUFBVSxDQUN0QixDQUFDO0VBRUQsSUFBTVEsT0FBTyxnQkFDWHBGLE1BQUEsWUFBQXFGLGFBQUEsQ0FBQ3pDLFVBQVU7SUFDVHFCLFNBQVMsRUFBRUEsU0FBVTtJQUNyQkQsT0FBTyxFQUFFZSxlQUFnQjtJQUN6QjNCLEtBQUssRUFBRUEsS0FBTTtJQUNiMEIsS0FBSyxFQUFBekMsYUFBQSxDQUFBQSxhQUFBLEtBQ0N1QyxVQUFVLEdBQUc7TUFBQ1UsTUFBTSxFQUFFLGFBQWE7TUFBRUMsT0FBTyxFQUFFO0lBQUcsQ0FBQyxHQUFHO01BQUNELE1BQU0sRUFBRTtJQUFTLENBQUMsR0FDekVSLEtBQUs7RUFDUixHQUVETixJQUFJLGdCQUNIeEUsTUFBQSxZQUFBcUYsYUFBQTtJQUFLcEIsU0FBUyxFQUFDO0VBQU0sZ0JBQ25CakUsTUFBQSxZQUFBcUYsYUFBQSxDQUFDYixJQUFJO0lBQUNnQixNQUFNLEVBQUM7RUFBTSxDQUFFLENBQ2xCLENBQUMsR0FDSixJQUFJLEVBQ1BkLFdBQVcsZ0JBQ1YxRSxNQUFBLFlBQUFxRixhQUFBLENBQUM3QixnQkFBZ0I7SUFDZmlDLElBQUksRUFBQyxVQUFVO0lBQ2ZDLE9BQU8sRUFBRUMsT0FBTyxDQUFDaEIsUUFBUSxDQUFFO0lBQzNCaUIsUUFBUSxFQUFFRCxPQUFPLENBQUNmLFVBQVUsQ0FBRTtJQUM5QmlCLEVBQUUsWUFBQXhDLE1BQUEsQ0FBWW9CLEtBQUssQ0FBRztJQUN0QnFCLFNBQVM7SUFDVHJCLEtBQUssRUFBRUE7RUFBTSxDQUNkLENBQUMsZ0JBRUZ6RSxNQUFBLFlBQUFxRixhQUFBO0lBQU1wQixTQUFTLEVBQUM7RUFBTyxHQUFFUSxLQUFZLENBQ3RDLEVBQ0FGLFFBQVEsZ0JBQ1B2RSxNQUFBLFlBQUFxRixhQUFBLDJCQUNFckYsTUFBQSxZQUFBcUYsYUFBQTtJQUFLcEIsU0FBUyxFQUFDO0VBQVksZ0JBQ3pCakUsTUFBQSxZQUFBcUYsYUFBQSxDQUFDbEYsTUFBQSxDQUFBNEYsVUFBVTtJQUFDUCxNQUFNLEVBQUM7RUFBTSxDQUFFLENBQ3hCLENBQUMsRUFDTCxDQUFDWixVQUFVLGdCQUNWNUUsTUFBQSxZQUFBcUYsYUFBQTtJQUFLcEIsU0FBUyxFQUFDO0VBQWMsR0FBRUosaUJBQUssQ0FBQ21DLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDMUIsUUFBUSxFQUFFYixjQUFjLENBQU8sQ0FBQyxHQUNoRixJQUNELENBQUMsR0FDSixJQUNNLENBQ2I7RUFDRCxPQUFPbUIsV0FBVyxnQkFDaEI3RSxNQUFBLFlBQUFxRixhQUFBLENBQUNoRixhQUFBLFdBQVk7SUFBQzZGLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFBO01BQUEsb0JBQVFsRyxNQUFBLFlBQUFxRixhQUFBLGNBQU1SLFdBQWlCLENBQUM7SUFBQTtFQUFDLEdBQUVPLE9BQXNCLENBQUMsR0FFOUVBLE9BQ0Q7QUFDSCxDQUNGLENBQUM7QUFFRGpCLGVBQWUsQ0FBQ2dDLFdBQVcsR0FBRyxpQkFBaUI7QUFNL0MsSUFBTUMsaUJBR0wsR0FBR3ZELDRCQUFNLENBQUNDLEdBQUcsQ0FBQXRDLGdCQUFBLEtBQUFBLGdCQUFBLE9BQUF1Qyx1QkFBQSxzTkFFTSxVQUFBQyxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDcUQsU0FBUztBQUFBLEdBQzVCLFVBQUFyRCxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNxRCxrQkFBa0I7QUFBQSxHQUN2QyxVQUFBdEQsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDc0QsY0FBYztBQUFBLEdBQ3hDLFVBQUF2RCxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNNLFNBQVM7QUFBQSxHQUduQyxVQUFBUCxLQUFLO0VBQUEsT0FDTEEsS0FBSyxDQUFDcUQsU0FBUyxLQUFLLFFBQVEsK0JBQUFoRCxNQUFBLENBQ0lMLEtBQUssQ0FBQ0MsS0FBSyxDQUFDdUQsZUFBZSwrQkFBQW5ELE1BQUEsQ0FDNUJMLEtBQUssQ0FBQ0MsS0FBSyxDQUFDdUQsZUFBZSxDQUFFO0FBQUEsRUFJakU7O0FBRUQ7QUFDQTtBQUNBLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBQyxLQUFBO0VBQUEsSUFBS25DLFFBQVEsR0FBQW1DLEtBQUEsQ0FBUm5DLFFBQVE7SUFBRU4sU0FBUyxHQUFBeUMsS0FBQSxDQUFUekMsU0FBUztJQUFBMEMsZUFBQSxHQUFBRCxLQUFBLENBQUVMLFNBQVM7SUFBVEEsU0FBUyxHQUFBTSxlQUFBLGNBQUcsUUFBUSxHQUFBQSxlQUFBO0VBQUEsb0JBQzdEM0csTUFBQSxZQUFBcUYsYUFBQSxDQUFDZSxpQkFBaUI7SUFBQ25DLFNBQVMsRUFBRUEsU0FBVTtJQUFDb0MsU0FBUyxFQUFFQTtFQUFVLEdBQzNEeEMsaUJBQUssQ0FBQ21DLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDMUIsUUFBUSxFQUFFYixjQUFjLENBQzNCLENBQUM7QUFBQSxDQUNyQjtBQUVEK0MsV0FBVyxDQUFDTixXQUFXLEdBQUcsYUFBYTtBQUFDLElBQUFTLFFBQUEsR0FBQXhDLE9BQUEsY0FFekJxQyxXQUFXIiwiaWdub3JlTGlzdCI6W119
;