kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
148 lines (147 loc) • 26.1 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = NotificationItemFactory;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _icons = require("../common/icons");
var _markdownToJsx = _interopRequireDefault(require("markdown-to-jsx"));
var _constants = require("@kepler.gl/constants");
var _linkRenderer = _interopRequireDefault(require("../common/link-renderer"));
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6; // 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 _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
var NotificationItemContentBlock = _styledComponents["default"].div.attrs({
className: 'notification-item--content-block'
})(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: block;\n position: relative;\n width: ", "px;\n margin-left: auto;\n"])), function (props) {
return props.theme.notificationPanelItemWidth * (1 + Number(props.isExpanded));
});
var NotificationItemContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n color: #fff;\n display: flex;\n flex-direction: row;\n width: ", "px;\n height: ", "px;\n font-size: 11px;\n margin-bottom: 1rem;\n padding: 1em;\n border-radius: 4px;\n box-shadow: ", ";\n cursor: pointer;\n"])), function (props) {
return props.theme.notificationColors[props.type] || '#000';
}, function (props) {
return props.theme.notificationPanelItemWidth * (1 + Number(props.isExpanded));
}, function (props) {
return props.theme.notificationPanelItemHeight * (1 + Number(props.isExpanded));
}, function (props) {
return props.theme.boxShadow;
});
var DeleteIcon = (0, _styledComponents["default"])(_icons.Delete)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n width: 13px;\n height: 13px;\n"])));
var NotificationCounter = _styledComponents["default"].div.attrs({
className: 'notification-item--counter'
})(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n font-size: 11px;\n font-weight: bold;\n text-align: center;\n left: -4px;\n bottom: -4px;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n background-color: #ffffff;\n border: 1px solid ", ";\n color: ", ";\n box-shadow: ", ";\n"])), function (props) {
return props.theme.notificationColors[props.type] || '#000';
}, function (props) {
return props.theme.notificationColors[props.type] || '#000';
}, function (props) {
return props.theme.boxShadow;
});
var NotificationMessage = _styledComponents["default"].div.attrs({
className: 'notification-item--message'
})(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 2;\n width: ", "px;\n margin: 0 1em;\n overflow: ", ";\n padding-right: ", ";\n\n p {\n margin-top: 0;\n a {\n color: #fff;\n text-decoration: underline;\n }\n }\n"])), function (props) {
return props.theme.notificationPanelItemWidth;
}, function (props) {
return props.isExpanded ? 'auto' : 'hidden';
}, function (props) {
return props.isExpanded ? '1em' : 0;
});
var NotificationIcon = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n vertical-align: text-top;\n }\n"])));
var icons = {
info: /*#__PURE__*/_react["default"].createElement(_icons.Info, {
"data-testid": _constants.dataTestIds.infoIcon
}),
warning: /*#__PURE__*/_react["default"].createElement(_icons.Warning, {
"data-testid": _constants.dataTestIds.warningIcon
}),
error: /*#__PURE__*/_react["default"].createElement(_icons.Warning, {
"data-testid": _constants.dataTestIds.errorIcon
}),
success: /*#__PURE__*/_react["default"].createElement(_icons.Checkmark, {
"data-testid": _constants.dataTestIds.successIcon
})
};
function NotificationItemFactory() {
return /*#__PURE__*/function (_Component) {
function NotificationItem() {
var _this;
(0, _classCallCheck2["default"])(this, NotificationItem);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _callSuper(this, NotificationItem, [].concat(args));
(0, _defineProperty2["default"])(_this, "state", {
isExpanded: false
});
return _this;
}
(0, _inherits2["default"])(NotificationItem, _Component);
return (0, _createClass2["default"])(NotificationItem, [{
key: "componentDidMount",
value: function componentDidMount() {
if (this.props.isExpanded) {
this.setState({
isExpanded: true
});
}
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
notification = _this$props.notification,
removeNotification = _this$props.removeNotification;
var isExpanded = this.state.isExpanded;
return /*#__PURE__*/_react["default"].createElement(NotificationItemContentBlock, {
isExpanded: isExpanded,
theme: this.props.theme
}, (notification.count || 0) > 1 ? /*#__PURE__*/_react["default"].createElement(NotificationCounter, {
type: notification.type,
theme: this.props.theme
}, notification.count) : null, /*#__PURE__*/_react["default"].createElement(NotificationItemContent, {
className: "notification-item",
type: notification.type,
isExpanded: isExpanded,
onClick: function onClick() {
return _this2.setState({
isExpanded: !isExpanded
});
}
}, /*#__PURE__*/_react["default"].createElement(NotificationIcon, {
className: "notification-item--icon"
}, icons[notification.type]), /*#__PURE__*/_react["default"].createElement(NotificationMessage, {
isExpanded: isExpanded,
theme: this.props.theme
}, /*#__PURE__*/_react["default"].createElement(_markdownToJsx["default"], {
options: {
overrides: {
a: {
component: _linkRenderer["default"]
}
}
}
}, notification.message)), typeof removeNotification === 'function' ? /*#__PURE__*/_react["default"].createElement("div", {
className: "notification-item--action"
}, /*#__PURE__*/_react["default"].createElement(DeleteIcon, {
height: "10px",
onClick: function onClick() {
return removeNotification(notification.id);
}
})) : null));
}
}]);
}(_react.Component);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaWNvbnMiLCJfbWFya2Rvd25Ub0pzeCIsIl9jb25zdGFudHMiLCJfbGlua1JlbmRlcmVyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIk5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2siLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsIm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoIiwiTnVtYmVyIiwiaXNFeHBhbmRlZCIsIk5vdGlmaWNhdGlvbkl0ZW1Db250ZW50Iiwibm90aWZpY2F0aW9uQ29sb3JzIiwidHlwZSIsIm5vdGlmaWNhdGlvblBhbmVsSXRlbUhlaWdodCIsImJveFNoYWRvdyIsIkRlbGV0ZUljb24iLCJEZWxldGUiLCJOb3RpZmljYXRpb25Db3VudGVyIiwiTm90aWZpY2F0aW9uTWVzc2FnZSIsIk5vdGlmaWNhdGlvbkljb24iLCJpY29ucyIsImluZm8iLCJjcmVhdGVFbGVtZW50IiwiSW5mbyIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nIiwiV2FybmluZyIsIndhcm5pbmdJY29uIiwiZXJyb3IiLCJlcnJvckljb24iLCJzdWNjZXNzIiwiQ2hlY2ttYXJrIiwic3VjY2Vzc0ljb24iLCJOb3RpZmljYXRpb25JdGVtRmFjdG9yeSIsIl9Db21wb25lbnQiLCJOb3RpZmljYXRpb25JdGVtIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJfZGVmaW5lUHJvcGVydHkyIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImNvbXBvbmVudERpZE1vdW50Iiwic2V0U3RhdGUiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsIm5vdGlmaWNhdGlvbiIsInJlbW92ZU5vdGlmaWNhdGlvbiIsInN0YXRlIiwiY291bnQiLCJvbkNsaWNrIiwib3B0aW9ucyIsIm92ZXJyaWRlcyIsImNvbXBvbmVudCIsIkxpbmtSZW5kZXJlciIsIm1lc3NhZ2UiLCJoZWlnaHQiLCJpZCIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb24tcGFuZWwvbm90aWZpY2F0aW9uLWl0ZW0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0RlbGV0ZSwgSW5mbywgV2FybmluZywgQ2hlY2ttYXJrfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5pbXBvcnQge2RhdGFUZXN0SWRzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FjdGlvbkhhbmRsZXIsIHJlbW92ZU5vdGlmaWNhdGlvbiBhcyByZW1vdmVOb3RpZmljYXRpb25BY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbXBvcnQgTGlua1JlbmRlcmVyIGZyb20gJy4uL2NvbW1vbi9saW5rLXJlbmRlcmVyJztcbmludGVyZmFjZSBOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrUHJvcHMge1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9jayA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdub3RpZmljYXRpb24taXRlbS0tY29udGVudC1ibG9jaydcbn0pPE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2tQcm9wcz5gXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoICogKDEgKyBOdW1iZXIocHJvcHMuaXNFeHBhbmRlZCkpfXB4O1xuICBtYXJnaW4tbGVmdDogYXV0bztcbmA7XG5cbmludGVyZmFjZSBOb3RpZmljYXRpb25JdGVtQ29udGVudFByb3BzIHtcbiAgdHlwZTogc3RyaW5nO1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTm90aWZpY2F0aW9uSXRlbUNvbnRlbnQgPSBzdHlsZWQuZGl2PE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50UHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uUGFuZWxJdGVtV2lkdGggKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25QYW5lbEl0ZW1IZWlnaHQgKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuYDtcblxuY29uc3QgRGVsZXRlSWNvbiA9IHN0eWxlZChEZWxldGUpYFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG5gO1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uQ291bnRlclByb3BzIHtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25Db3VudGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1jb3VudGVyJ1xufSk8Tm90aWZpY2F0aW9uQ291bnRlclByb3BzPmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxlZnQ6IC00cHg7XG4gIGJvdHRvbTogLTRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25Db2xvcnNbcHJvcHMudHlwZV0gfHwgJyMwMDAnfTtcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3hTaGFkb3d9O1xuYDtcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk1lc3NhZ2VQcm9wcyB7XG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25NZXNzYWdlID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1tZXNzYWdlJ1xufSk8Tm90aWZpY2F0aW9uTWVzc2FnZVByb3BzPmBcbiAgZmxleC1ncm93OiAyO1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25QYW5lbEl0ZW1XaWR0aH1weDtcbiAgbWFyZ2luOiAwIDFlbTtcbiAgb3ZlcmZsb3c6ICR7cHJvcHMgPT4gKHByb3BzLmlzRXhwYW5kZWQgPyAnYXV0bycgOiAnaGlkZGVuJyl9O1xuICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IChwcm9wcy5pc0V4cGFuZGVkID8gJzFlbScgOiAwKX07XG5cbiAgcCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBOb3RpZmljYXRpb25JY29uID0gc3R5bGVkLmRpdmBcbiAgc3ZnIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbmA7XG5cbmNvbnN0IGljb25zID0ge1xuICBpbmZvOiA8SW5mbyBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuaW5mb0ljb259IC8+LFxuICB3YXJuaW5nOiA8V2FybmluZyBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMud2FybmluZ0ljb259IC8+LFxuICBlcnJvcjogPFdhcm5pbmcgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLmVycm9ySWNvbn0gLz4sXG4gIHN1Y2Nlc3M6IDxDaGVja21hcmsgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLnN1Y2Nlc3NJY29ufSAvPlxufTtcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkl0ZW1Qcm9wcyB7XG4gIG5vdGlmaWNhdGlvbjoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBjb3VudD86IG51bWJlcjtcbiAgfTtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIHJlbW92ZU5vdGlmaWNhdGlvbj86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHJlbW92ZU5vdGlmaWNhdGlvbkFjdGlvbnM+O1xuICB0aGVtZT86IGFueTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTm90aWZpY2F0aW9uSXRlbUZhY3RvcnkoKSB7XG4gIHJldHVybiBjbGFzcyBOb3RpZmljYXRpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50PE5vdGlmaWNhdGlvbkl0ZW1Qcm9wcz4ge1xuICAgIHN0YXRlID0ge1xuICAgICAgaXNFeHBhbmRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2lzRXhwYW5kZWQ6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bm90aWZpY2F0aW9uLCByZW1vdmVOb3RpZmljYXRpb259ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtpc0V4cGFuZGVkfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9IHRoZW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cbiAgICAgICAgICB7KG5vdGlmaWNhdGlvbi5jb3VudCB8fCAwKSA+IDEgPyAoXG4gICAgICAgICAgICA8Tm90aWZpY2F0aW9uQ291bnRlciB0eXBlPXtub3RpZmljYXRpb24udHlwZX0gdGhlbWU9e3RoaXMucHJvcHMudGhlbWV9PlxuICAgICAgICAgICAgICB7bm90aWZpY2F0aW9uLmNvdW50fVxuICAgICAgICAgICAgPC9Ob3RpZmljYXRpb25Db3VudGVyPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxOb3RpZmljYXRpb25JdGVtQ29udGVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgdHlwZT17bm90aWZpY2F0aW9uLnR5cGV9XG4gICAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7aXNFeHBhbmRlZDogIWlzRXhwYW5kZWR9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Tm90aWZpY2F0aW9uSWNvbiBjbGFzc05hbWU9XCJub3RpZmljYXRpb24taXRlbS0taWNvblwiPlxuICAgICAgICAgICAgICB7aWNvbnNbbm90aWZpY2F0aW9uLnR5cGVdfVxuICAgICAgICAgICAgPC9Ob3RpZmljYXRpb25JY29uPlxuICAgICAgICAgICAgPE5vdGlmaWNhdGlvbk1lc3NhZ2UgaXNFeHBhbmRlZD17aXNFeHBhbmRlZH0gdGhlbWU9e3RoaXMucHJvcHMudGhlbWV9PlxuICAgICAgICAgICAgICA8TWFya2Rvd25cbiAgICAgICAgICAgICAgICBvcHRpb25zPXt7XG4gICAgICAgICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogTGlua1JlbmRlcmVyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge25vdGlmaWNhdGlvbi5tZXNzYWdlfVxuICAgICAgICAgICAgICA8L01hcmtkb3duPlxuICAgICAgICAgICAgPC9Ob3RpZmljYXRpb25NZXNzYWdlPlxuICAgICAgICAgICAge3R5cGVvZiByZW1vdmVOb3RpZmljYXRpb24gPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW0tLWFjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxEZWxldGVJY29uIGhlaWdodD1cIjEwcHhcIiBvbkNsaWNrPXsoKSA9PiByZW1vdmVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkKX0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L05vdGlmaWNhdGlvbkl0ZW1Db250ZW50PlxuICAgICAgICA8L05vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2s+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUdBLElBQUFNLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUFtRCxJQUFB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
;