kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
160 lines (138 loc) • 22 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.DatasetTag = void 0;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireDefault(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _d3Format = require("d3-format");
var _styledComponents2 = require("../common/styled-components");
var _icons = require("../common/icons");
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
var defaultRemoveDataset = function defaultRemoveDataset(datasetKey) {};
var numFormat = (0, _d3Format.format)(',');
var SourceDataCatelogWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n transition: ", ";\n"])), function (props) {
return props.theme.transition;
});
var DatasetTitle = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n align-items: flex-start;\n\n .source-data-arrow {\n height: 16px;\n }\n :hover {\n color: ", ";\n cursor: ", ";\n\n .dataset-action {\n color: ", ";\n opacity: 1;\n }\n\n .dataset-action:hover {\n color: black;\n }\n }\n"])), function (props) {
return props.theme.textColor;
}, function (props) {
return props.clickable ? props.theme.textColorHl : props.theme.textColor;
}, function (props) {
return props.clickable ? 'pointer' : 'auto';
}, function (props) {
return props.theme.textColorHl;
});
var DatasetTagWrapper = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n font-size: 11px;\n letter-spacing: 0.2px;\n overflow: auto;\n\n .dataset-color {\n flex-shrink: 0;\n margin-top: 5px;\n }\n\n .dataset-name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n"])), function (props) {
return props.theme.textColor;
});
var DataTagAction = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n height: 16px;\n opacity: 0;\n"])));
var DataRowCount = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 11px;\n color: ", ";\n padding-left: 19px;\n"])), function (props) {
return props.theme.subtextColor;
});
var DatasetTag = exports.DatasetTag = function DatasetTag(_ref) {
var onClick = _ref.onClick,
dataset = _ref.dataset;
return (/*#__PURE__*/_react["default"].createElement(DatasetTagWrapper, {
className: "source-data-tag",
onClick: onClick
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.DatasetSquare, {
className: "dataset-color",
color: dataset.color
}), /*#__PURE__*/_react["default"].createElement("div", {
className: "dataset-name"
}, dataset.label))
);
};
var ShowDataTable = function ShowDataTable(_ref2) {
var id = _ref2.id,
showDatasetTable = _ref2.showDatasetTable;
return (/*#__PURE__*/_react["default"].createElement(DataTagAction, {
className: "dataset-action show-data-table",
"data-tip": true,
"data-for": "data-table-".concat(id)
}, /*#__PURE__*/_react["default"].createElement(_icons.Table, {
height: "16px",
onClick: function onClick() {
return showDatasetTable(id);
}
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
id: "data-table-".concat(id),
effect: "solid"
}, /*#__PURE__*/_react["default"].createElement("span", null, "Show data table")))
);
};
var RemoveDataset = function RemoveDataset(_ref3) {
var datasetKey = _ref3.datasetKey,
_ref3$removeDataset = _ref3.removeDataset,
removeDataset = _ref3$removeDataset === void 0 ? defaultRemoveDataset : _ref3$removeDataset;
return (/*#__PURE__*/_react["default"].createElement(DataTagAction, {
className: "dataset-action remove-dataset",
"data-tip": true,
"data-for": "delete-".concat(datasetKey)
}, /*#__PURE__*/_react["default"].createElement(_icons.Trash, {
height: "16px",
onClick: function onClick(e) {
e.stopPropagation();
removeDataset(datasetKey);
}
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
id: "delete-".concat(datasetKey),
effect: "solid",
type: "error"
}, /*#__PURE__*/_react["default"].createElement("span", null, "Remove dataset")))
);
};
function SourceDataCatalogFactory() {
var SourceDataCatalog = function SourceDataCatalog(_ref4) {
var datasets = _ref4.datasets,
showDatasetTable = _ref4.showDatasetTable,
removeDataset = _ref4.removeDataset,
_ref4$showDeleteDatas = _ref4.showDeleteDataset,
showDeleteDataset = _ref4$showDeleteDatas === void 0 ? false : _ref4$showDeleteDatas;
return (/*#__PURE__*/_react["default"].createElement(SourceDataCatelogWrapper, {
className: "source-data-catalog"
}, Object.values(datasets).map(function (dataset, index) {
return dataset.externalData && dataset.externalData === true ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, {
key: dataset.id
}, /*#__PURE__*/_react["default"].createElement(DatasetTitle, {
className: "source-data-title"
}, /*#__PURE__*/_react["default"].createElement(DatasetTag, {
dataset: dataset
}), showDatasetTable ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, {
className: "source-data-arrow"
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
height: "12px"
})) : null, showDeleteDataset ? /*#__PURE__*/_react["default"].createElement(RemoveDataset, {
datasetKey: dataset.id,
removeDataset: removeDataset
}) : null)) : /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, {
key: dataset.id
}, /*#__PURE__*/_react["default"].createElement(DatasetTitle, {
className: "source-data-title",
clickable: Boolean(showDatasetTable)
}, /*#__PURE__*/_react["default"].createElement(DatasetTag, {
dataset: dataset,
onClick: showDatasetTable ? function () {
return showDatasetTable(dataset.id);
} : null
}), showDatasetTable ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, {
className: "source-data-arrow"
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
height: "12px"
})) : null, showDatasetTable ? /*#__PURE__*/_react["default"].createElement(ShowDataTable, {
id: dataset.id,
showDatasetTable: showDatasetTable
}) : null, showDeleteDataset ? /*#__PURE__*/_react["default"].createElement(RemoveDataset, {
datasetKey: dataset.id,
removeDataset: removeDataset
}) : null));
}))
);
};
return SourceDataCatalog;
}
var _default = exports["default"] = SourceDataCatalogFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvc291cmNlLWRhdGEtY2F0YWxvZy5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0UmVtb3ZlRGF0YXNldCIsImRhdGFzZXRLZXkiLCJudW1Gb3JtYXQiLCJTb3VyY2VEYXRhQ2F0ZWxvZ1dyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwidHJhbnNpdGlvbiIsIkRhdGFzZXRUaXRsZSIsInRleHRDb2xvciIsImNsaWNrYWJsZSIsInRleHRDb2xvckhsIiwiRGF0YXNldFRhZ1dyYXBwZXIiLCJEYXRhVGFnQWN0aW9uIiwiRGF0YVJvd0NvdW50Iiwic3VidGV4dENvbG9yIiwiRGF0YXNldFRhZyIsIm9uQ2xpY2siLCJkYXRhc2V0IiwiY29sb3IiLCJsYWJlbCIsIlNob3dEYXRhVGFibGUiLCJpZCIsInNob3dEYXRhc2V0VGFibGUiLCJSZW1vdmVEYXRhc2V0IiwicmVtb3ZlRGF0YXNldCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJTb3VyY2VEYXRhQ2F0YWxvZ0ZhY3RvcnkiLCJTb3VyY2VEYXRhQ2F0YWxvZyIsImRhdGFzZXRzIiwic2hvd0RlbGV0ZURhdGFzZXQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXAiLCJpbmRleCIsImV4dGVybmFsRGF0YSIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUVBOztBQU1BOzs7O0FBRUEsSUFBTUEsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixDQUFBQyxVQUFVLEVBQUksQ0FBRSxDQUE3Qzs7QUFDQSxJQUFNQyxTQUFTLEdBQUcsc0JBQU8sR0FBUCxDQUFsQjs7QUFFQSxJQUFNQyx3QkFBd0IsR0FBR0MsNkJBQU9DLEdBQVYsOEdBQ2QsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxVQUFoQjtBQUFBLENBRFMsQ0FBOUI7O0FBSUEsSUFBTUMsWUFBWSxHQUFH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LFlBQUQ7QUFDRSxVQUFBLFNBQVMsRUFBQyxtQkFEWjtBQUVFLFVBQUEsU0FBUyxFQUFFZSxPQUFPLENBQUNkLGdCQUFEO0FBRnBCLHdCQUlFLGdDQUFDLFVBQUQ7QUFDRSxVQUFBLE9BQU8sRUFBRUwsT0FEWDtBQUVFLFVBQUEsT0FBTyxFQUNMSyxnQkFBZ0IsR0FBRztBQUFBLG1CQUFNQSxnQkFBZ0IsQ0FBQ0wsT0FBTyxDQUFDSSxFQUFULENBQXRCO0FBQUEsV0FBSCxHQUF3QztBQUg1RCxVQUpGLEVBVUdDLGdCQUFnQixnQkFDZixnQ0FBQyxnQ0FBRDtBQUFlLFVBQUEsU0FBUyxFQUFDO0FBQXpCLHdCQUNFLGdDQUFDLGlCQUFEO0FBQVksVUFBQSxNQUFNLEVBQUM7QUFBbkIsVUFERixDQURlLEdBSWIsSUFkTixFQWVHQSxnQkFBZ0IsZ0JBQ2YsZ0NBQUMsYUFBRDtBQUNFLFVBQUEsRUFBRSxFQUFFTCxPQUFPLENBQUNJLEVBRGQ7QUFFRSxVQUFBLGdCQUFnQixFQUFFQztBQUZwQixVQURlLEdBS2IsSUFwQk4sRUFxQkdRLGlCQUFpQixnQkFDaEIsZ0NBQUMsYUFBRDtBQUNFLFVBQUEsVUFBVSxFQUFFYixPQUFPLENBQUNJLEVBRHRCO0FBRUUsVUFBQSxhQUFhLEVBQUVHO0FBRmpCLFVBRGdCLEdBS2QsSUExQk4sQ0FERixDQXhCeUI7QUFBQSxPQUE1QixDQURIO0FBTndCO0FBQUEsR0FBMUI7O0FBdUVBLFNBQU9JLGlCQUFQO0FBQ0Q7O29DQUVjRCx3QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Zm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuXG5pbXBvcnQge1xuICBTaWRlUGFuZWxTZWN0aW9uLFxuICBUb29sdGlwLFxuICBEYXRhc2V0U3F1YXJlLFxuICBDZW50ZXJGbGV4Ym94XG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7VGFibGUsIFRyYXNoLCBBcnJvd1JpZ2h0fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5cbmNvbnN0IGRlZmF1bHRSZW1vdmVEYXRhc2V0ID0gZGF0YXNldEtleSA9PiB7fTtcbmNvbnN0IG51bUZvcm1hdCA9IGZvcm1hdCgnLCcpO1xuXG5jb25zdCBTb3VyY2VEYXRhQ2F0ZWxvZ1dyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICB0cmFuc2l0aW9uOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRyYW5zaXRpb259O1xuYDtcblxuY29uc3QgRGF0YXNldFRpdGxlID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgLnNvdXJjZS1kYXRhLWFycm93IHtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbiAgOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuY2xpY2thYmxlID8gcHJvcHMudGhlbWUudGV4dENvbG9ySGwgOiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICAgIGN1cnNvcjogJHtwcm9wcyA9PiAocHJvcHMuY2xpY2thYmxlID8gJ3BvaW50ZXInIDogJ2F1dG8nKX07XG5cbiAgICAuZGF0YXNldC1hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAuZGF0YXNldC1hY3Rpb246aG92ZXIge1xuICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgRGF0YXNldFRhZ1dyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBmb250LXNpemU6IDExcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgLmRhdGFzZXQtY29sb3Ige1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgfVxuXG4gIC5kYXRhc2V0LW5hbWUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuYDtcblxuY29uc3QgRGF0YVRhZ0FjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIG9wYWNpdHk6IDA7XG5gO1xuXG5jb25zdCBEYXRhUm93Q291bnQgPSBzdHlsZWQuZGl2YFxuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gIHBhZGRpbmctbGVmdDogMTlweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBEYXRhc2V0VGFnID0gKHtvbkNsaWNrLCBkYXRhc2V0fSkgPT4gKFxuICA8RGF0YXNldFRhZ1dyYXBwZXIgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtdGFnXCIgb25DbGljaz17b25DbGlja30+XG4gICAgPERhdGFzZXRTcXVhcmUgY2xhc3NOYW1lPVwiZGF0YXNldC1jb2xvclwiIGNvbG9yPXtkYXRhc2V0LmNvbG9yfSAvPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YXNldC1uYW1lXCI+e2RhdGFzZXQubGFiZWx9PC9kaXY+XG4gIDwvRGF0YXNldFRhZ1dyYXBwZXI+XG4pO1xuXG5jb25zdCBTaG93RGF0YVRhYmxlID0gKHtpZCwgc2hvd0RhdGFzZXRUYWJsZX0pID0+IChcbiAgPERhdGFUYWdBY3Rpb25cbiAgICBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiBzaG93LWRhdGEtdGFibGVcIlxuICAgIGRhdGEtdGlwXG4gICAgZGF0YS1mb3I9e2BkYXRhLXRhYmxlLSR7aWR9YH1cbiAgPlxuICAgIDxUYWJsZSBoZWlnaHQ9XCIxNnB4XCIgb25DbGljaz17KCkgPT4gc2hvd0RhdGFzZXRUYWJsZShpZCl9IC8+XG4gICAgPFRvb2x0aXAgaWQ9e2BkYXRhLXRhYmxlLSR7aWR9YH0gZWZmZWN0PVwic29saWRcIj5cbiAgICAgIDxzcGFuPlNob3cgZGF0YSB0YWJsZTwvc3Bhbj5cbiAgICA8L1Rvb2x0aXA+XG4gIDwvRGF0YVRhZ0FjdGlvbj5cbik7XG5cbmNvbnN0IFJlbW92ZURhdGFzZXQgPSAoe2RhdGFzZXRLZXksIHJlbW92ZURhdGFzZXQgPSBkZWZhdWx0UmVtb3ZlRGF0YXNldH0pID0+IChcbiAgPERhdGFUYWdBY3Rpb25cbiAgICBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiByZW1vdmUtZGF0YXNldFwiXG4gICAgZGF0YS10aXBcbiAgICBkYXRhLWZvcj17YGRlbGV0ZS0ke2RhdGFzZXRLZXl9YH1cbiAgPlxuICAgIDxUcmFzaFxuICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmVtb3ZlRGF0YXNldChkYXRhc2V0S2V5KTtcbiAgICAgIH19XG4gICAgLz5cbiAgICA8VG9vbHRpcCBpZD17YGRlbGV0ZS0ke2RhdGFzZXRLZXl9YH0gZWZmZWN0PVwic29saWRcIiB0eXBlPVwiZXJyb3JcIj5cbiAgICAgIDxzcGFuPlJlbW92ZSBkYXRhc2V0PC9zcGFuPlxuICAgIDwvVG9vbHRpcD5cbiAgPC9EYXRhVGFnQWN0aW9uPlxuKTtcblxuZnVuY3Rpb24gU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5KCkge1xuICBjb25zdCBTb3VyY2VEYXRhQ2F0YWxvZyA9ICh7XG4gICAgZGF0YXNldHMsXG4gICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICByZW1vdmVEYXRhc2V0LFxuICAgIHNob3dEZWxldGVEYXRhc2V0ID0gZmFsc2VcbiAgfSkgPT4gKFxuICAgIDxTb3VyY2VEYXRhQ2F0ZWxvZ1dyYXBwZXIgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtY2F0YWxvZ1wiPlxuICAgICAge09iamVjdC52YWx1ZXMoZGF0YXNldHMpLm1hcCgoZGF0YXNldCwgaW5kZXgpID0+XG4gICAgICAgIGRhdGFzZXQuZXh0ZXJuYWxEYXRhICYmIGRhdGFzZXQuZXh0ZXJuYWxEYXRhID09PSB0cnVlID8gKFxuICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uIGtleT17ZGF0YXNldC5pZH0+XG4gICAgICAgICAgICA8RGF0YXNldFRpdGxlIGNsYXNzTmFtZT1cInNvdXJjZS1kYXRhLXRpdGxlXCI+XG4gICAgICAgICAgICAgIDxEYXRhc2V0VGFnIGRhdGFzZXQ9e2RhdGFzZXR9IC8+XG4gICAgICAgICAgICAgIHtzaG93RGF0YXNldFRhYmxlID8gKFxuICAgICAgICAgICAgICAgIDxDZW50ZXJGbGV4Ym94IGNsYXNzTmFtZT1cInNvdXJjZS1kYXRhLWFycm93XCI+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dSaWdodCBoZWlnaHQ9XCIxMnB4XCIgLz5cbiAgICAgICAgICAgICAgICA8L0NlbnRlckZsZXhib3g+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c2hvd0RlbGV0ZURhdGFzZXQgPyAoXG4gICAgICAgICAgICAgICAgPFJlbW92ZURhdGFzZXRcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRLZXk9e2RhdGFzZXQuaWR9XG4gICAgICAgICAgICAgICAgICByZW1vdmVEYXRhc2V0PXtyZW1vdmVEYXRhc2V0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9EYXRhc2V0VGl0bGU+XG4gICAgICAgICAgICB7Lyoge3Nob3dEYXRhc2V0VGFibGUgPyAoXG4gICAgICAgICAgICAgIDxEYXRhUm93Q291bnQgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtcm93c1wiPntgJHtudW1Gb3JtYXQoXG4gICAgICAgICAgICAgICAgZGF0YXNldC5hbGxEYXRhLmxlbmd0aFxuICAgICAgICAgICAgICApfSByb3dzYH08L0RhdGFSb3dDb3VudD5cbiAgICAgICAgICAgICkgOiBudWxsfSAqL31cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24ga2V5PXtkYXRhc2V0LmlkfT5cbiAgICAgICAgICAgIDxEYXRhc2V0VGl0bGVcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtdGl0bGVcIlxuICAgICAgICAgICAgICBjbGlja2FibGU9e0Jvb2xlYW4oc2hvd0RhdGFzZXRUYWJsZSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxEYXRhc2V0VGFnXG4gICAgICAgICAgICAgICAgZGF0YXNldD17ZGF0YXNldH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtcbiAgICAgICAgICAgICAgICAgIHNob3dEYXRhc2V0VGFibGUgPyAoKSA9PiBzaG93RGF0YXNldFRhYmxlKGRhdGFzZXQuaWQpIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge3Nob3dEYXRhc2V0VGFibGUgPyAoXG4gICAgICAgICAgICAgICAgPENlbnRlckZsZXhib3ggY2xhc3NOYW1lPVwic291cmNlLWRhdGEtYXJyb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxBcnJvd1JpZ2h0IGhlaWdodD1cIjEycHhcIiAvPlxuICAgICAgICAgICAgICAgIDwvQ2VudGVyRmxleGJveD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtzaG93RGF0YXNldFRhYmxlID8gKFxuICAgICAgICAgICAgICAgIDxTaG93RGF0YVRhYmxlXG4gICAgICAgICAgICAgICAgICBpZD17ZGF0YXNldC5pZH1cbiAgICAgICAgICAgICAgICAgIHNob3dEYXRhc2V0VGFibGU9e3Nob3dEYXRhc2V0VGFibGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtzaG93RGVsZXRlRGF0YXNldCA/IChcbiAgICAgICAgICAgICAgICA8UmVtb3ZlRGF0YXNldFxuICAgICAgICAgICAgICAgICAgZGF0YXNldEtleT17ZGF0YXNldC5pZH1cbiAgICAgICAgICAgICAgICAgIHJlbW92ZURhdGFzZXQ9e3JlbW92ZURhdGFzZXR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0RhdGFzZXRUaXRsZT5cbiAgICAgICAgICAgIHsvKiB7c2hvd0RhdGFzZXRUYWJsZSA/IChcbiAgICAgICAgICAgICAgPERhdGFSb3dDb3VudCBjbGFzc05hbWU9XCJzb3VyY2UtZGF0YS1yb3dzXCI+e2Ake251bUZvcm1hdChcbiAgICAgICAgICAgICAgICBkYXRhc2V0LmFsbERhdGEgPyBkYXRhc2V0LmFsbERhdGEubGVuZ3RoIDogbnVsbFxuICAgICAgICAgICAgICApfSByb3dzYH08L0RhdGFSb3dDb3VudD5cbiAgICAgICAgICAgICkgOiBudWxsfSAqL31cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgPC9Tb3VyY2VEYXRhQ2F0ZWxvZ1dyYXBwZXI+XG4gICk7XG5cbiAgcmV0dXJuIFNvdXJjZURhdGFDYXRhbG9nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3VyY2VEYXRhQ2F0YWxvZ0ZhY3Rvcnk7XG4iXX0=