kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
130 lines (128 loc) • 24.8 kB
JavaScript
"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 _react = _interopRequireWildcard(require("react"));
var _timeRangeFilter = _interopRequireDefault(require("../time-range-filter"));
var _icons = require("../../common/icons");
var _utils = require("@kepler.gl/utils");
var _filterPanelHeader = _interopRequireDefault(require("../../side-panel/filter-panel/filter-panel-header"));
var _panelHeaderAction = _interopRequireDefault(require("../../side-panel/panel-header-action"));
var _fieldSelector = _interopRequireDefault(require("../../common/field-selector"));
var _styledComponents = require("../../common/styled-components");
var _newFilterPanel = require("./new-filter-panel");
var _constants = require("@kepler.gl/constants");
var _timeSyncedFieldSelector = _interopRequireDefault(require("./time-synced-field-selector"));
var _filterSyncedDatasetPanel = _interopRequireDefault(require("./filter-synced-dataset-panel"));
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; }
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
var SYNC_FILTER_ID_LENGTH = 2;
TimeRangeFilterPanelFactory.deps = [_timeRangeFilter["default"], _filterPanelHeader["default"], _fieldSelector["default"], _panelHeaderAction["default"], _timeSyncedFieldSelector["default"], _filterSyncedDatasetPanel["default"]];
function TimeRangeFilterPanelFactory(TimeRangeFilter, FilterPanelHeader, FieldSelector, PanelHeaderAction, TimeSyncedFieldSelector, FilterSyncedDatasetPanel) {
var TimeRangeFilterPanel = /*#__PURE__*/_react["default"].memo(function (_ref) {
var idx = _ref.idx,
datasets = _ref.datasets,
layers = _ref.layers,
allAvailableFields = _ref.allAvailableFields,
filter = _ref.filter,
enlargeFilter = _ref.enlargeFilter,
setFilter = _ref.setFilter,
setFilterPlot = _ref.setFilterPlot,
removeFilter = _ref.removeFilter,
toggleAnimation = _ref.toggleAnimation,
syncTimeFilterWithLayerTimeline = _ref.syncTimeFilterWithLayerTimeline;
var onSetFilterValue = (0, _react.useCallback)(function (value) {
return setFilter(idx, 'value', value);
}, [idx, setFilter]);
var onSetFilterPlot = (0, _react.useCallback)(function (newProp, valueIndex) {
return setFilterPlot(idx, newProp, valueIndex);
}, [idx, setFilterPlot]);
var isEnlarged = (0, _react.useMemo)(function () {
return !(0, _utils.isSideFilter)(filter);
}, [filter]);
var panelActions = (0, _react.useMemo)(function () {
return [{
id: filter.id,
onClick: enlargeFilter,
tooltip: 'tooltip.timePlayback',
iconComponent: _icons.Clock,
active: isEnlarged
}];
}, [filter.id, isEnlarged, enlargeFilter]);
var onFieldSelector = (0, _react.useCallback)(function (field, valueIndex) {
return setFilter(idx, 'name', field.name, valueIndex);
}, [setFilter, idx]);
var onSourceDataSelector = (0, _react.useCallback)(function (value) {
return setFilter(idx, 'dataId', value, 0);
}, [idx, setFilter]);
var dataset = datasets[filter.dataId[0]];
var supportedFields = (0, _react.useMemo)(function () {
return (0, _newFilterPanel.getSupportedFilterFields)(dataset.supportedFilterTypes, allAvailableFields);
}, [dataset.supportedFilterTypes, allAvailableFields]);
var isSynced = (0, _react.useMemo)(function () {
return filter.dataId.length >= SYNC_FILTER_ID_LENGTH && filter.type === _constants.FILTER_TYPES.timeRange;
}, [filter.dataId, filter.type]);
var isHistogramVisible = (0, _react.useMemo)(function () {
return filter.type && !isEnlarged;
}, [filter.type, isEnlarged]);
var timeline = (0, _utils.getTimelineFromFilter)(filter);
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(FilterPanelHeader, {
datasets: [dataset],
allAvailableFields: supportedFields,
idx: idx,
filter: filter,
removeFilter: removeFilter
}, isSynced ? /*#__PURE__*/_react["default"].createElement(TimeSyncedFieldSelector, null) : /*#__PURE__*/_react["default"].createElement(FieldSelector, {
inputTheme: "secondary",
fields: supportedFields,
value: Array.isArray(filter.name) ? filter.name[0] : filter.name,
erasable: false,
onSelect: function onSelect(field) {
return onFieldSelector(field, 0);
}
}), panelActions.map(function (panelAction) {
return /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
id: panelAction.id,
key: panelAction.id,
onClick: panelAction.onClick,
tooltip: panelAction.tooltip,
IconComponent: panelAction.iconComponent,
active: panelAction.active
});
})), /*#__PURE__*/_react["default"].createElement(_styledComponents.StyledFilterContent, {
className: "filter-panel__content"
}, /*#__PURE__*/_react["default"].createElement(FilterSyncedDatasetPanel, {
datasets: datasets,
layers: layers,
filter: filter,
idx: idx,
onFieldSelector: onFieldSelector,
onSourceDataSelector: onSourceDataSelector,
setFilter: setFilter,
supportedFields: supportedFields,
syncTimeFilterWithLayerTimeline: syncTimeFilterWithLayerTimeline
}), isHistogramVisible && /*#__PURE__*/_react["default"].createElement("div", {
className: "filter-panel__filter"
}, /*#__PURE__*/_react["default"].createElement(TimeRangeFilter, {
filter: filter,
datasets: datasets,
layers: layers,
idx: idx,
toggleAnimation: toggleAnimation,
setFilter: onSetFilterValue,
setFilterPlot: onSetFilterPlot,
isAnimatable: true,
hideTimeTitle: true,
timeline: timeline
}))));
});
TimeRangeFilterPanel.displayName = 'TimeRangeFilterPanel';
return TimeRangeFilterPanel;
}
var _default = exports["default"] = TimeRangeFilterPanelFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdGltZVJhbmdlRmlsdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9pY29ucyIsIl91dGlscyIsIl9maWx0ZXJQYW5lbEhlYWRlciIsIl9wYW5lbEhlYWRlckFjdGlvbiIsIl9maWVsZFNlbGVjdG9yIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfbmV3RmlsdGVyUGFuZWwiLCJfY29uc3RhbnRzIiwiX3RpbWVTeW5jZWRGaWVsZFNlbGVjdG9yIiwiX2ZpbHRlclN5bmNlZERhdGFzZXRQYW5lbCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlNZTkNfRklMVEVSX0lEX0xFTkdUSCIsIlRpbWVSYW5nZUZpbHRlclBhbmVsRmFjdG9yeSIsImRlcHMiLCJUaW1lUmFuZ2VGaWx0ZXJGYWN0b3J5IiwiRmlsdGVyUGFuZWxIZWFkZXJGYWN0b3J5IiwiRmllbGRTZWxlY3RvckZhY3RvcnkiLCJQYW5lbEhlYWRlckFjdGlvbkZhY3RvcnkiLCJUaW1lU3luY2VkRmllbGRTZWxlY3RvckZhY3RvcnkiLCJGaWx0ZXJTeW5jZWREYXRhc2V0UGFuZWxGYWN0b3J5IiwiVGltZVJhbmdlRmlsdGVyIiwiRmlsdGVyUGFuZWxIZWFkZXIiLCJGaWVsZFNlbGVjdG9yIiwiUGFuZWxIZWFkZXJBY3Rpb24iLCJUaW1lU3luY2VkRmllbGRTZWxlY3RvciIsIkZpbHRlclN5bmNlZERhdGFzZXRQYW5lbCIsIlRpbWVSYW5nZUZpbHRlclBhbmVsIiwiUmVhY3QiLCJtZW1vIiwiX3JlZiIsImlkeCIsImRhdGFzZXRzIiwibGF5ZXJzIiwiYWxsQXZhaWxhYmxlRmllbGRzIiwiZmlsdGVyIiwiZW5sYXJnZUZpbHRlciIsInNldEZpbHRlciIsInNldEZpbHRlclBsb3QiLCJyZW1vdmVGaWx0ZXIiLCJ0b2dnbGVBbmltYXRpb24iLCJzeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lIiwib25TZXRGaWx0ZXJWYWx1ZSIsInVzZUNhbGxiYWNrIiwidmFsdWUiLCJvblNldEZpbHRlclBsb3QiLCJuZXdQcm9wIiwidmFsdWVJbmRleCIsImlzRW5sYXJnZWQiLCJ1c2VNZW1vIiwiaXNTaWRlRmlsdGVyIiwicGFuZWxBY3Rpb25zIiwiaWQiLCJvbkNsaWNrIiwidG9vbHRpcCIsImljb25Db21wb25lbnQiLCJDbG9jayIsImFjdGl2ZSIsIm9uRmllbGRTZWxlY3RvciIsImZpZWxkIiwibmFtZSIsIm9uU291cmNlRGF0YVNlbGVjdG9yIiwiZGF0YXNldCIsImRhdGFJZCIsInN1cHBvcnRlZEZpZWxkcyIsImdldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsInN1cHBvcnRlZEZpbHRlclR5cGVzIiwiaXNTeW5jZWQiLCJsZW5ndGgiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwidGltZVJhbmdlIiwiaXNIaXN0b2dyYW1WaXNpYmxlIiwidGltZWxpbmUiLCJnZXRUaW1lbGluZUZyb21GaWx0ZXIiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJpbnB1dFRoZW1lIiwiZmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZXJhc2FibGUiLCJvblNlbGVjdCIsIm1hcCIsInBhbmVsQWN0aW9uIiwia2V5IiwiSWNvbkNvbXBvbmVudCIsIlN0eWxlZEZpbHRlckNvbnRlbnQiLCJjbGFzc05hbWUiLCJpc0FuaW1hdGFibGUiLCJoaWRlVGltZVRpdGxlIiwiZGlzcGxheU5hbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsdGVycy9maWx0ZXItcGFuZWxzL3RpbWUtcmFuZ2UtZmlsdGVyLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRpbWVSYW5nZUZpbHRlckZhY3RvcnkgZnJvbSAnLi4vdGltZS1yYW5nZS1maWx0ZXInO1xuaW1wb3J0IHtDbG9ja30gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7VGltZVJhbmdlRmlsdGVyUGFuZWxDb21wb25lbnR9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtpc1NpZGVGaWx0ZXIsIGdldFRpbWVsaW5lRnJvbUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQgRmlsdGVyUGFuZWxIZWFkZXJGYWN0b3J5IGZyb20gJy4uLy4uL3NpZGUtcGFuZWwvZmlsdGVyLXBhbmVsL2ZpbHRlci1wYW5lbC1oZWFkZXInO1xuaW1wb3J0IFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSBmcm9tICcuLi8uLi9zaWRlLXBhbmVsL3BhbmVsLWhlYWRlci1hY3Rpb24nO1xuaW1wb3J0IEZpZWxkU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4uLy4uL2NvbW1vbi9maWVsZC1zZWxlY3Rvcic7XG5pbXBvcnQge1N0eWxlZEZpbHRlckNvbnRlbnR9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2dldFN1cHBvcnRlZEZpbHRlckZpZWxkc30gZnJvbSAnLi9uZXctZmlsdGVyLXBhbmVsJztcbmltcG9ydCB7RklMVEVSX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgVGltZVN5bmNlZEZpZWxkU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vdGltZS1zeW5jZWQtZmllbGQtc2VsZWN0b3InO1xuaW1wb3J0IEZpbHRlclN5bmNlZERhdGFzZXRQYW5lbEZhY3RvcnkgZnJvbSAnLi9maWx0ZXItc3luY2VkLWRhdGFzZXQtcGFuZWwnO1xuXG5jb25zdCBTWU5DX0ZJTFRFUl9JRF9MRU5HVEggPSAyO1xuXG5UaW1lUmFuZ2VGaWx0ZXJQYW5lbEZhY3RvcnkuZGVwcyA9IFtcbiAgVGltZVJhbmdlRmlsdGVyRmFjdG9yeSxcbiAgRmlsdGVyUGFuZWxIZWFkZXJGYWN0b3J5LFxuICBGaWVsZFNlbGVjdG9yRmFjdG9yeSxcbiAgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5LFxuICBUaW1lU3luY2VkRmllbGRTZWxlY3RvckZhY3RvcnksXG4gIEZpbHRlclN5bmNlZERhdGFzZXRQYW5lbEZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIFRpbWVSYW5nZUZpbHRlclBhbmVsRmFjdG9yeShcbiAgVGltZVJhbmdlRmlsdGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaW1lUmFuZ2VGaWx0ZXJGYWN0b3J5PixcbiAgRmlsdGVyUGFuZWxIZWFkZXI6IFJldHVyblR5cGU8dHlwZW9mIEZpbHRlclBhbmVsSGVhZGVyRmFjdG9yeT4sXG4gIEZpZWxkU2VsZWN0b3I6IFJldHVyblR5cGU8dHlwZW9mIEZpZWxkU2VsZWN0b3JGYWN0b3J5PixcbiAgUGFuZWxIZWFkZXJBY3Rpb246IFJldHVyblR5cGU8dHlwZW9mIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeT4sXG4gIFRpbWVTeW5jZWRGaWVsZFNlbGVjdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBUaW1lU3luY2VkRmllbGRTZWxlY3RvckZhY3Rvcnk+LFxuICBGaWx0ZXJTeW5jZWREYXRhc2V0UGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIEZpbHRlclN5bmNlZERhdGFzZXRQYW5lbEZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgVGltZVJhbmdlRmlsdGVyUGFuZWw6IFRpbWVSYW5nZUZpbHRlclBhbmVsQ29tcG9uZW50ID0gUmVhY3QubWVtbyhcbiAgICAoe1xuICAgICAgaWR4LFxuICAgICAgZGF0YXNldHMsXG4gICAgICBsYXllcnMsXG4gICAgICBhbGxBdmFpbGFibGVGaWVsZHMsXG4gICAgICBmaWx0ZXIsXG4gICAgICBlbmxhcmdlRmlsdGVyLFxuICAgICAgc2V0RmlsdGVyLFxuICAgICAgc2V0RmlsdGVyUGxvdCxcbiAgICAgIHJlbW92ZUZpbHRlcixcbiAgICAgIHRvZ2dsZUFuaW1hdGlvbixcbiAgICAgIHN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBvblNldEZpbHRlclZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIHZhbHVlID0+IHNldEZpbHRlcihpZHgsICd2YWx1ZScsIHZhbHVlKSxcbiAgICAgICAgW2lkeCwgc2V0RmlsdGVyXVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgb25TZXRGaWx0ZXJQbG90ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChuZXdQcm9wLCB2YWx1ZUluZGV4KSA9PiBzZXRGaWx0ZXJQbG90KGlkeCwgbmV3UHJvcCwgdmFsdWVJbmRleCksXG4gICAgICAgIFtpZHgsIHNldEZpbHRlclBsb3RdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpc0VubGFyZ2VkID0gdXNlTWVtbygoKSA9PiAhaXNTaWRlRmlsdGVyKGZpbHRlciksIFtmaWx0ZXJdKTtcblxuICAgICAgY29uc3QgcGFuZWxBY3Rpb25zID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgICAgICAgICBvbkNsaWNrOiBlbmxhcmdlRmlsdGVyLFxuICAgICAgICAgICAgdG9vbHRpcDogJ3Rvb2x0aXAudGltZVBsYXliYWNrJyxcbiAgICAgICAgICAgIGljb25Db21wb25lbnQ6IENsb2NrLFxuICAgICAgICAgICAgYWN0aXZlOiBpc0VubGFyZ2VkXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbZmlsdGVyLmlkLCBpc0VubGFyZ2VkLCBlbmxhcmdlRmlsdGVyXVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgb25GaWVsZFNlbGVjdG9yID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChmaWVsZCwgdmFsdWVJbmRleCkgPT4gc2V0RmlsdGVyKGlkeCwgJ25hbWUnLCBmaWVsZC5uYW1lLCB2YWx1ZUluZGV4KSxcbiAgICAgICAgW3NldEZpbHRlciwgaWR4XVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgb25Tb3VyY2VEYXRhU2VsZWN0b3IgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgdmFsdWUgPT4gc2V0RmlsdGVyKGlkeCwgJ2RhdGFJZCcsIHZhbHVlLCAwKSxcbiAgICAgICAgW2lkeCwgc2V0RmlsdGVyXVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2ZpbHRlci5kYXRhSWRbMF1dO1xuICAgICAgY29uc3Qgc3VwcG9ydGVkRmllbGRzID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGRhdGFzZXQuc3VwcG9ydGVkRmlsdGVyVHlwZXMsIGFsbEF2YWlsYWJsZUZpZWxkcyksXG4gICAgICAgIFtkYXRhc2V0LnN1cHBvcnRlZEZpbHRlclR5cGVzLCBhbGxBdmFpbGFibGVGaWVsZHNdXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpc1N5bmNlZCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGZpbHRlci5kYXRhSWQubGVuZ3RoID49IFNZTkNfRklMVEVSX0lEX0xFTkdUSCAmJiBmaWx0ZXIudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZVxuICAgICAgICApO1xuICAgICAgfSwgW2ZpbHRlci5kYXRhSWQsIGZpbHRlci50eXBlXSk7XG5cbiAgICAgIGNvbnN0IGlzSGlzdG9ncmFtVmlzaWJsZSA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IGZpbHRlci50eXBlICYmICFpc0VubGFyZ2VkLFxuICAgICAgICBbZmlsdGVyLnR5cGUsIGlzRW5sYXJnZWRdXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0aW1lbGluZSA9IGdldFRpbWVsaW5lRnJvbUZpbHRlcihmaWx0ZXIpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxGaWx0ZXJQYW5lbEhlYWRlclxuICAgICAgICAgICAgZGF0YXNldHM9e1tkYXRhc2V0XX1cbiAgICAgICAgICAgIGFsbEF2YWlsYWJsZUZpZWxkcz17c3VwcG9ydGVkRmllbGRzfVxuICAgICAgICAgICAgaWR4PXtpZHh9XG4gICAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICAgIHJlbW92ZUZpbHRlcj17cmVtb3ZlRmlsdGVyfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc1N5bmNlZCA/IChcbiAgICAgICAgICAgICAgPFRpbWVTeW5jZWRGaWVsZFNlbGVjdG9yIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8RmllbGRTZWxlY3RvclxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIGZpZWxkcz17c3VwcG9ydGVkRmllbGRzfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtBcnJheS5pc0FycmF5KGZpbHRlci5uYW1lKSA/IGZpbHRlci5uYW1lWzBdIDogZmlsdGVyLm5hbWV9XG4gICAgICAgICAgICAgICAgZXJhc2FibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXtmaWVsZCA9PiBvbkZpZWxkU2VsZWN0b3IoZmllbGQsIDApfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtwYW5lbEFjdGlvbnMubWFwKHBhbmVsQWN0aW9uID0+IChcbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgaWQ9e3BhbmVsQWN0aW9uLmlkfVxuICAgICAgICAgICAgICAgIGtleT17cGFuZWxBY3Rpb24uaWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17cGFuZWxBY3Rpb24ub25DbGlja31cbiAgICAgICAgICAgICAgICB0b29sdGlwPXtwYW5lbEFjdGlvbi50b29sdGlwfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e3BhbmVsQWN0aW9uLmljb25Db21wb25lbnR9XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtwYW5lbEFjdGlvbi5hY3RpdmV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0ZpbHRlclBhbmVsSGVhZGVyPlxuICAgICAgICAgIDxTdHlsZWRGaWx0ZXJDb250ZW50IGNsYXNzTmFtZT1cImZpbHRlci1wYW5lbF9fY29udGVudFwiPlxuICAgICAgICAgICAgPEZpbHRlclN5bmNlZERhdGFzZXRQYW5lbFxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICAgICAgaWR4PXtpZHh9XG4gICAgICAgICAgICAgIG9uRmllbGRTZWxlY3Rvcj17b25GaWVsZFNlbGVjdG9yfVxuICAgICAgICAgICAgICBvblNvdXJjZURhdGFTZWxlY3Rvcj17b25Tb3VyY2VEYXRhU2VsZWN0b3J9XG4gICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RmlsdGVyfVxuICAgICAgICAgICAgICBzdXBwb3J0ZWRGaWVsZHM9e3N1cHBvcnRlZEZpZWxkc31cbiAgICAgICAgICAgICAgc3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZT17c3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7aXNIaXN0b2dyYW1WaXNpYmxlICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXItcGFuZWxfX2ZpbHRlclwiPlxuICAgICAgICAgICAgICAgIDxUaW1lUmFuZ2VGaWx0ZXJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgICAgICBpZHg9e2lkeH1cbiAgICAgICAgICAgICAgICAgIHRvZ2dsZUFuaW1hdGlvbj17dG9nZ2xlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtvblNldEZpbHRlclZhbHVlfVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyUGxvdD17b25TZXRGaWx0ZXJQbG90fVxuICAgICAgICAgICAgICAgICAgaXNBbmltYXRhYmxlXG4gICAgICAgICAgICAgICAgICBoaWRlVGltZVRpdGxlXG4gICAgICAgICAgICAgICAgICB0aW1lbGluZT17dGltZWxpbmV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU3R5bGVkRmlsdGVyQ29udGVudD5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICBUaW1lUmFuZ2VGaWx0ZXJQYW5lbC5kaXNwbGF5TmFtZSA9ICdUaW1lUmFuZ2VGaWx0ZXJQYW5lbCc7XG5cbiAgcmV0dXJuIFRpbWVSYW5nZUZpbHRlclBhbmVsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUaW1lUmFuZ2VGaWx0ZXJQYW5lbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGtCQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxrQkFBQSxH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