@kando-env/kando-ui 1.2.399 → 1.2.401-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,28 +1,109 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
  var _reactBootstrap = require("react-bootstrap");
12
+ var _reactFontawesome = require("@fortawesome/react-fontawesome");
13
+ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
14
+ var _Sector = _interopRequireDefault(require("components/Sector"));
15
+ var _KandoFilter = _interopRequireDefault(require("ui-kit/KandoFilter/KandoFilter"));
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
18
  var LeftPanel = function LeftPanel(_ref) {
11
19
  var points = _ref.points,
12
20
  selectedPoint = _ref.selectedPoint,
13
21
  setSelectedPoint = _ref.setSelectedPoint;
22
+ var _useState = (0, _react.useState)([]),
23
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
24
+ selectedFilters = _useState2[0],
25
+ setSelectedFilters = _useState2[1];
26
+ var _useState3 = (0, _react.useState)([]),
27
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
28
+ filteredPoints = _useState4[0],
29
+ setFilteredPoints = _useState4[1];
30
+ var maxIssues = 3;
31
+ var issuesIconColor = function issuesIconColor(length) {
32
+ if (length % maxIssues === 0) {
33
+ return 'icon-red';
34
+ } else if (length % maxIssues === 2) {
35
+ return 'icon-orange';
36
+ } else {
37
+ return 'icon-yellow';
38
+ }
39
+ };
40
+ var showIssues = function showIssues(point) {
41
+ var issuesLength = point === null || point === void 0 ? void 0 : point.issues.length;
42
+ if (issuesLength > 0) {
43
+ return /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
44
+ icon: _freeSolidSvgIcons.faExclamationTriangle,
45
+ className: issuesIconColor(issuesLength)
46
+ });
47
+ }
48
+ return '';
49
+ };
50
+ var sortedPoints = points.sort(function (a, b) {
51
+ return b.issues.length - a.issues.length;
52
+ });
53
+ var filterOptions = [{
54
+ value: 'installation_height',
55
+ label: 'Installation Height'
56
+ }, {
57
+ value: 'distance',
58
+ label: 'Distance'
59
+ }, {
60
+ value: 'no_parent',
61
+ label: 'No Parent'
62
+ }];
63
+ (0, _react.useEffect)(function () {
64
+ setFilteredPoints(sortedPoints);
65
+ }, [sortedPoints]);
66
+ (0, _react.useEffect)(function () {
67
+ var filteredPoints = sortedPoints.filter(function (point) {
68
+ if (selectedFilters.length === 0) {
69
+ return true; // Show all points if no filters are selected
70
+ }
71
+
72
+ return selectedFilters.some(function (filter) {
73
+ return point.issues.some(function (issue) {
74
+ return issue.type === filter.value;
75
+ });
76
+ });
77
+ });
78
+ setFilteredPoints(filteredPoints);
79
+ }, [selectedFilters]);
14
80
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Container, {
15
- className: "mt-4"
16
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Row, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Col, null, /*#__PURE__*/_react.default.createElement("h4", null, "Monitored Points(".concat(points.length, ")")), /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, null, points.length > 0 && points.map(function (point) {
81
+ className: "mt-4 pl-3 pr-2"
82
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Row, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Col, null, /*#__PURE__*/_react.default.createElement("h4", null, "Monitored Points(".concat(filteredPoints.length, ")")))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Row, {
83
+ className: "mt-3 mb-3"
84
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Col, null, /*#__PURE__*/_react.default.createElement(_KandoFilter.default, {
85
+ filterOptions: filterOptions,
86
+ selectedFilters: selectedFilters,
87
+ setSelectedFilters: setSelectedFilters
88
+ }))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Row, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Col, null, /*#__PURE__*/_react.default.createElement("div", {
89
+ className: "scrollable-list"
90
+ }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup, null, points.length > 0 && filteredPoints.map(function (point) {
17
91
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
18
92
  className: (selectedPoint === null || selectedPoint === void 0 ? void 0 : selectedPoint.id) === point.id ? 'list-item list-item-selected' : 'list-item',
19
93
  key: point.id,
20
94
  onClick: function onClick() {
21
95
  return setSelectedPoint(point);
22
96
  }
23
- }, point.name);
24
- })))));
97
+ }, /*#__PURE__*/_react.default.createElement("div", {
98
+ className: "item-content"
99
+ }, /*#__PURE__*/_react.default.createElement(_Sector.default, {
100
+ sectorIconName: point.group.sector_icon_name,
101
+ sectorName: point.group.sector_name,
102
+ showLabel: false,
103
+ withTooltip: true
104
+ }), /*#__PURE__*/_react.default.createElement("span", null, point.name)), showIssues(point));
105
+ }))))));
25
106
  };
26
107
  var _default = LeftPanel;
27
108
  exports.default = _default;
28
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdEJvb3RzdHJhcCIsIkxlZnRQYW5lbCIsIl9yZWYiLCJwb2ludHMiLCJzZWxlY3RlZFBvaW50Iiwic2V0U2VsZWN0ZWRQb2ludCIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiQ29udGFpbmVyIiwiY2xhc3NOYW1lIiwiUm93IiwiQ29sIiwiY29uY2F0IiwibGVuZ3RoIiwiTGlzdEdyb3VwIiwibWFwIiwicG9pbnQiLCJJdGVtIiwiaWQiLCJrZXkiLCJvbkNsaWNrIiwibmFtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9PcGVyYXRpb25zUGFnZS9MZWZ0UGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250YWluZXIsIFJvdywgQ29sLCBMaXN0R3JvdXAgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcblxuZXhwb3J0IGludGVyZmFjZSBMZWZ0UGFuZWxQcm9wcyB7XG4gIHBvaW50czogSVBvaW50W107XG4gIHNlbGVjdGVkUG9pbnQ6IElQb2ludCB8IG51bGw7XG4gIHNldFNlbGVjdGVkUG9pbnQ6IChwb2ludDogSVBvaW50KSA9PiB2b2lkO1xufVxuXG5jb25zdCBMZWZ0UGFuZWw6IFJlYWN0LkZDPExlZnRQYW5lbFByb3BzPiA9ICh7XG4gIHBvaW50cyxcbiAgc2VsZWN0ZWRQb2ludCxcbiAgc2V0U2VsZWN0ZWRQb2ludCxcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT1cIm10LTRcIj5cbiAgICAgIDxSb3c+XG4gICAgICAgIDxDb2w+XG4gICAgICAgICAgPGg0PntgTW9uaXRvcmVkIFBvaW50cygke3BvaW50cy5sZW5ndGh9KWB9PC9oND5cbiAgICAgICAgICA8TGlzdEdyb3VwPlxuICAgICAgICAgICAge3BvaW50cy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgIHBvaW50cy5tYXAoKHBvaW50KSA9PiAoXG4gICAgICAgICAgICAgICAgPExpc3RHcm91cC5JdGVtXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBvaW50Py5pZCA9PT0gcG9pbnQuaWRcbiAgICAgICAgICAgICAgICAgICAgICA/ICdsaXN0LWl0ZW0gbGlzdC1pdGVtLXNlbGVjdGVkJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2xpc3QtaXRlbSdcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGtleT17cG9pbnQuaWR9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFBvaW50KHBvaW50KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7cG9pbnQubmFtZX1cbiAgICAgICAgICAgICAgICA8L0xpc3RHcm91cC5JdGVtPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0xpc3RHcm91cD5cbiAgICAgICAgPC9Db2w+XG4gICAgICA8L1Jvdz5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExlZnRQYW5lbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGVBQUEsR0FBQUQsT0FBQTtBQVNBLElBQU1FLFNBQW1DLEdBQUcsU0FBdENBLFNBQW1DQSxDQUFBQyxJQUFBLEVBSW5DO0VBQUEsSUFISkMsTUFBTSxHQUFBRCxJQUFBLENBQU5DLE1BQU07SUFDTkMsYUFBYSxHQUFBRixJQUFBLENBQWJFLGFBQWE7SUFDYkMsZ0JBQWdCLEdBQUFILElBQUEsQ0FBaEJHLGdCQUFnQjtFQUVoQixvQkFDRVIsTUFBQSxDQUFBUyxPQUFBLENBQUFDLGFBQUEsQ0FBQ1AsZUFBQSxDQUFBUSxTQUFTO0lBQUNDLFNBQVMsRUFBQztFQUFNLGdCQUN6QlosTUFBQSxDQUFBUyxPQUFBLENBQUFDLGFBQUEsQ0FBQ1AsZUFBQSxDQUFBVSxHQUFHLHFCQUNGYixNQUFBLENBQUFTLE9BQUEsQ0FBQUMsYUFBQSxDQUFDUCxlQUFBLENBQUFXLEdBQUcscUJBQ0ZkLE1BQUEsQ0FBQVMsT0FBQSxDQUFBQyxhQUFBLGlDQUFBSyxNQUFBLENBQXlCVCxNQUFNLENBQUNVLE1BQU0sTUFBUSxDQUFDLGVBQy9DaEIsTUFBQSxDQUFBUyxPQUFBLENBQUFDLGFBQUEsQ0FBQ1AsZUFBQSxDQUFBYyxTQUFTLFFBQ1BYLE1BQU0sQ0FBQ1UsTUFBTSxHQUFHLENBQUMsSUFDaEJWLE1BQU0sQ0FBQ1ksR0FBRyxDQUFDLFVBQUNDLEtBQUs7SUFBQSxvQkFDZm5CLE1BQUEsQ0FBQVMsT0FBQSxDQUFBQyxhQUFBLENBQUNQLGVBQUEsQ0FBQWMsU0FBUyxDQUFDRyxJQUFJO01BQ2JSLFNBQVMsRUFDUCxDQUFBTCxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWMsRUFBRSxNQUFLRixLQUFLLENBQUNFLEVBQUUsR0FDMUIsOEJBQThCLEdBQzlCLFdBQ0w7TUFDREMsR0FBRyxFQUFFSCxLQUFLLENBQUNFLEVBQUc7TUFDZEUsT0FBTyxFQUFFLFNBQUFBLFFBQUE7UUFBQSxPQUFNZixnQkFBZ0IsQ0FBQ1csS0FBSyxDQUFDO01BQUE7SUFBQyxHQUV0Q0EsS0FBSyxDQUFDSyxJQUNPLENBQUM7RUFBQSxDQUNsQixDQUNNLENBQ1IsQ0FDRixDQUNJLENBQUM7QUFFaEIsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FFYXJCLFNBQVM7QUFBQXNCLE9BQUEsQ0FBQWpCLE9BQUEsR0FBQWdCLFFBQUEifQ==
109
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RCb290c3RyYXAiLCJfcmVhY3RGb250YXdlc29tZSIsIl9mcmVlU29saWRTdmdJY29ucyIsIl9TZWN0b3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0thbmRvRmlsdGVyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJMZWZ0UGFuZWwiLCJfcmVmIiwicG9pbnRzIiwic2VsZWN0ZWRQb2ludCIsInNldFNlbGVjdGVkUG9pbnQiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZWxlY3RlZEZpbHRlcnMiLCJzZXRTZWxlY3RlZEZpbHRlcnMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZpbHRlcmVkUG9pbnRzIiwic2V0RmlsdGVyZWRQb2ludHMiLCJtYXhJc3N1ZXMiLCJpc3N1ZXNJY29uQ29sb3IiLCJsZW5ndGgiLCJzaG93SXNzdWVzIiwicG9pbnQiLCJpc3N1ZXNMZW5ndGgiLCJpc3N1ZXMiLCJjcmVhdGVFbGVtZW50IiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhRXhjbGFtYXRpb25UcmlhbmdsZSIsImNsYXNzTmFtZSIsInNvcnRlZFBvaW50cyIsInNvcnQiLCJhIiwiYiIsImZpbHRlck9wdGlvbnMiLCJ2YWx1ZSIsImxhYmVsIiwidXNlRWZmZWN0IiwiZmlsdGVyIiwic29tZSIsImlzc3VlIiwidHlwZSIsIkNvbnRhaW5lciIsIlJvdyIsIkNvbCIsImNvbmNhdCIsIkxpc3RHcm91cCIsIm1hcCIsIkl0ZW0iLCJpZCIsIm9uQ2xpY2siLCJzZWN0b3JJY29uTmFtZSIsImdyb3VwIiwic2VjdG9yX2ljb25fbmFtZSIsInNlY3Rvck5hbWUiLCJzZWN0b3JfbmFtZSIsInNob3dMYWJlbCIsIndpdGhUb29sdGlwIiwibmFtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9PcGVyYXRpb25zUGFnZS9MZWZ0UGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBSb3csIENvbCwgTGlzdEdyb3VwIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBGb250QXdlc29tZUljb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFFeGNsYW1hdGlvblRyaWFuZ2xlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCBTZWN0b3IgZnJvbSAnc3JjL2NvbXBvbmVudHMvU2VjdG9yJztcbmltcG9ydCBLYW5kb0ZpbHRlciBmcm9tICdzcmMvdWkta2l0L0thbmRvRmlsdGVyL0thbmRvRmlsdGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBMZWZ0UGFuZWxQcm9wcyB7XG4gIHBvaW50czogSVBvaW50W107XG4gIHNlbGVjdGVkUG9pbnQ6IElQb2ludCB8IG51bGw7XG4gIHNldFNlbGVjdGVkUG9pbnQ6IChwb2ludDogSVBvaW50KSA9PiB2b2lkO1xufVxuXG5jb25zdCBMZWZ0UGFuZWw6IFJlYWN0LkZDPExlZnRQYW5lbFByb3BzPiA9ICh7XG4gIHBvaW50cyxcbiAgc2VsZWN0ZWRQb2ludCxcbiAgc2V0U2VsZWN0ZWRQb2ludCxcbn0pID0+IHtcbiAgY29uc3QgW3NlbGVjdGVkRmlsdGVycywgc2V0U2VsZWN0ZWRGaWx0ZXJzXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW2ZpbHRlcmVkUG9pbnRzLCBzZXRGaWx0ZXJlZFBvaW50c10gPSB1c2VTdGF0ZTxJUG9pbnRbXT4oW10pO1xuICBjb25zdCBtYXhJc3N1ZXMgPSAzO1xuICBjb25zdCBpc3N1ZXNJY29uQ29sb3IgPSAobGVuZ3RoKSA9PiB7XG4gICAgaWYgKGxlbmd0aCAlIG1heElzc3VlcyA9PT0gMCkge1xuICAgICAgcmV0dXJuICdpY29uLXJlZCc7XG4gICAgfSBlbHNlIGlmIChsZW5ndGggJSBtYXhJc3N1ZXMgPT09IDIpIHtcbiAgICAgIHJldHVybiAnaWNvbi1vcmFuZ2UnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2ljb24teWVsbG93JztcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd0lzc3VlcyA9IChwb2ludCkgPT4ge1xuICAgIGNvbnN0IGlzc3Vlc0xlbmd0aCA9IHBvaW50Py5pc3N1ZXMubGVuZ3RoO1xuICAgIGlmIChpc3N1ZXNMZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICAgICAgaWNvbj17ZmFFeGNsYW1hdGlvblRyaWFuZ2xlfVxuICAgICAgICAgIGNsYXNzTmFtZT17aXNzdWVzSWNvbkNvbG9yKGlzc3Vlc0xlbmd0aCl9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH07XG5cbiAgY29uc3Qgc29ydGVkUG9pbnRzID0gcG9pbnRzLnNvcnQoKGEsIGIpID0+IGIuaXNzdWVzLmxlbmd0aCAtIGEuaXNzdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgZmlsdGVyT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnaW5zdGFsbGF0aW9uX2hlaWdodCcsIGxhYmVsOiAnSW5zdGFsbGF0aW9uIEhlaWdodCcgfSxcbiAgICB7IHZhbHVlOiAnZGlzdGFuY2UnLCBsYWJlbDogJ0Rpc3RhbmNlJyB9LFxuICAgIHsgdmFsdWU6ICdub19wYXJlbnQnLCBsYWJlbDogJ05vIFBhcmVudCcgfSxcbiAgXTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEZpbHRlcmVkUG9pbnRzKHNvcnRlZFBvaW50cyk7XG4gIH0sIFtzb3J0ZWRQb2ludHNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkUG9pbnRzID0gc29ydGVkUG9pbnRzLmZpbHRlcigocG9pbnQpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZEZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBTaG93IGFsbCBwb2ludHMgaWYgbm8gZmlsdGVycyBhcmUgc2VsZWN0ZWRcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdGVkRmlsdGVycy5zb21lKChmaWx0ZXIpID0+XG4gICAgICAgIHBvaW50Lmlzc3Vlcy5zb21lKChpc3N1ZSkgPT4gaXNzdWUudHlwZSA9PT0gZmlsdGVyLnZhbHVlKSxcbiAgICAgICk7XG4gICAgfSk7XG4gICAgc2V0RmlsdGVyZWRQb2ludHMoZmlsdGVyZWRQb2ludHMpO1xuICB9LCBbc2VsZWN0ZWRGaWx0ZXJzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT1cIm10LTQgcGwtMyBwci0yXCI+XG4gICAgICA8Um93PlxuICAgICAgICA8Q29sPlxuICAgICAgICAgIDxoND57YE1vbml0b3JlZCBQb2ludHMoJHtmaWx0ZXJlZFBvaW50cy5sZW5ndGh9KWB9PC9oND5cbiAgICAgICAgPC9Db2w+XG4gICAgICA8L1Jvdz5cbiAgICAgIDxSb3cgY2xhc3NOYW1lPVwibXQtMyBtYi0zXCI+XG4gICAgICAgIDxDb2w+XG4gICAgICAgICAgPEthbmRvRmlsdGVyXG4gICAgICAgICAgICBmaWx0ZXJPcHRpb25zPXtmaWx0ZXJPcHRpb25zfVxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJzPXtzZWxlY3RlZEZpbHRlcnN9XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEZpbHRlcnM9e3NldFNlbGVjdGVkRmlsdGVyc31cbiAgICAgICAgICA+PC9LYW5kb0ZpbHRlcj5cbiAgICAgICAgPC9Db2w+XG4gICAgICA8L1Jvdz5cbiAgICAgIDxSb3c+XG4gICAgICAgIDxDb2w+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzY3JvbGxhYmxlLWxpc3RcIj5cbiAgICAgICAgICAgIDxMaXN0R3JvdXA+XG4gICAgICAgICAgICAgIHtwb2ludHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRzLm1hcCgocG9pbnQpID0+IChcbiAgICAgICAgICAgICAgICAgIDxMaXN0R3JvdXAuSXRlbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUG9pbnQ/LmlkID09PSBwb2ludC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbGlzdC1pdGVtIGxpc3QtaXRlbS1zZWxlY3RlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2xpc3QtaXRlbSdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e3BvaW50LmlkfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFBvaW50KHBvaW50KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpdGVtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0b3JJY29uTmFtZT17cG9pbnQuZ3JvdXAuc2VjdG9yX2ljb25fbmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rvck5hbWU9e3BvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhUb29sdGlwPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgID48L1NlY3Rvcj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57cG9pbnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7c2hvd0lzc3Vlcyhwb2ludCl9XG4gICAgICAgICAgICAgICAgICA8L0xpc3RHcm91cC5JdGVtPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9MaXN0R3JvdXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ29sPlxuICAgICAgPC9Sb3c+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMZWZ0UGFuZWw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGVBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGlCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxrQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBRCxzQkFBQSxDQUFBTCxPQUFBO0FBQTZELFNBQUFPLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtB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
@@ -20,9 +20,14 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
20
20
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
21
21
  focusedMarker = _useState4[0],
22
22
  setFocusedMarker = _useState4[1];
23
+ var focusedMarkerRef = (0, _react.useRef)(null);
23
24
  var pointsLayerRef = (0, _react.useRef)();
24
25
  var edgesLayerRef = (0, _react.useRef)();
25
26
  var areasLayerRef = (0, _react.useRef)();
27
+ (0, _react.useEffect)(function () {
28
+ focusedMarkerRef.current = focusedMarker;
29
+ resetAllOthers();
30
+ }, [focusedMarker]);
26
31
  (0, _react.useEffect)(function () {
27
32
  if (!mapRef.current) {
28
33
  return;
@@ -44,18 +49,33 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
44
49
  mapTemp.remove();
45
50
  };
46
51
  }, []);
47
- (0, _react.useEffect)(function () {
52
+ var resetAllOthers = function resetAllOthers() {
48
53
  var _pointsLayerRef$curre;
49
- if (focusedMarker) {
50
- focusedMarker.fire('mouseout');
51
- }
52
54
  (_pointsLayerRef$curre = pointsLayerRef.current) === null || _pointsLayerRef$curre === void 0 ? void 0 : _pointsLayerRef$curre.eachLayer(function (marker) {
53
- if (selectedPoint && marker.options.kando_object_id === (selectedPoint === null || selectedPoint === void 0 ? void 0 : selectedPoint.id)) {
54
- marker.fire('mouseover');
55
- setFocusedMarker(marker);
56
- return;
55
+ if (marker.options.kando_object_id !== (selectedPoint === null || selectedPoint === void 0 ? void 0 : selectedPoint.id) && marker._isInside) {
56
+ marker.fire('mouseout');
57
57
  }
58
58
  });
59
+ };
60
+ (0, _react.useEffect)(function () {
61
+ if (selectedPoint === null) {
62
+ setFocusedMarker(null);
63
+ } else {
64
+ var _pointsLayerRef$curre2;
65
+ (_pointsLayerRef$curre2 = pointsLayerRef.current) === null || _pointsLayerRef$curre2 === void 0 ? void 0 : _pointsLayerRef$curre2.eachLayer(function (marker) {
66
+ if (selectedPoint && marker.options.kando_object_id === (selectedPoint === null || selectedPoint === void 0 ? void 0 : selectedPoint.id)) {
67
+ if (!(map === null || map === void 0 ? void 0 : map.getBounds().contains(marker.getLatLng()))) {
68
+ map === null || map === void 0 ? void 0 : map.flyTo(marker.getLatLng(), map.getZoom(), {
69
+ duration: 0.5,
70
+ animate: false
71
+ });
72
+ }
73
+ marker.fire('mouseover');
74
+ setFocusedMarker(marker);
75
+ return;
76
+ }
77
+ });
78
+ }
59
79
  }, [selectedPoint]);
60
80
  var handleMarkerClick = function handleMarkerClick(point) {
61
81
  updateSelectedPoint(point);
@@ -73,14 +93,15 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
73
93
  pointsLayerRef.current.addTo(map);
74
94
  if (!pointsLayerRef.current.getLayers().length) {
75
95
  points.forEach(function (point) {
76
- var _pointsLayerRef$curre2;
77
- var icon = (0, _PointIcon.getPointIconByType)(point.group.type, point.name, '', false, true);
78
- var focusedIcon = (0, _PointIcon.getPointIconByType)(point.group.type, point.name, '', true, false);
79
- var marker = getMarker(point);
80
- if (marker instanceof _leaflet.default.Marker) {
96
+ var type = point.has_device === true || point.group.type === 'Groups::WastewaterTreatmentPlant' ? point.group.type : 'Groups::default';
97
+ var icon = (0, _PointIcon.getPointIconByType)(type, point.name, '', false, true);
98
+ var focusedIcon = (0, _PointIcon.getPointIconByType)(type, point.name, '', true, false);
99
+ if (point.latitude && point.longitude) {
100
+ var _pointsLayerRef$curre3;
101
+ var marker = getMarker(point);
81
102
  marker.setIcon(icon);
82
103
  // The use of marker._isInside is to overcome the issue that mouseover is endlessly triggered
83
- // and we need it onley once
104
+ // and we need it only once
84
105
  marker.on('mouseover', function () {
85
106
  if (!marker._isInside) {
86
107
  marker._isInside = true;
@@ -88,37 +109,30 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
88
109
  }
89
110
  });
90
111
  marker.on('mouseout', function () {
91
- marker._isInside = false;
92
- marker.setIcon(icon);
112
+ var _focusedMarkerRef$cur;
113
+ if ((focusedMarkerRef === null || focusedMarkerRef === void 0 ? void 0 : (_focusedMarkerRef$cur = focusedMarkerRef.current) === null || _focusedMarkerRef$cur === void 0 ? void 0 : _focusedMarkerRef$cur._leaflet_id) !== (marker === null || marker === void 0 ? void 0 : marker._leaflet_id)) {
114
+ marker._isInside = false;
115
+ marker.setIcon(icon);
116
+ }
117
+ });
118
+ marker.on('click', function () {
119
+ var _focusedMarkerRef$cur2;
120
+ if ((focusedMarkerRef === null || focusedMarkerRef === void 0 ? void 0 : (_focusedMarkerRef$cur2 = focusedMarkerRef.current) === null || _focusedMarkerRef$cur2 === void 0 ? void 0 : _focusedMarkerRef$cur2._leaflet_id) === (marker === null || marker === void 0 ? void 0 : marker._leaflet_id)) {
121
+ setFocusedMarker(null);
122
+ handleMarkerClick(null);
123
+ } else {
124
+ handleMarkerClick(point);
125
+ }
93
126
  });
127
+ (_pointsLayerRef$curre3 = pointsLayerRef.current) === null || _pointsLayerRef$curre3 === void 0 ? void 0 : _pointsLayerRef$curre3.addLayer(marker);
94
128
  }
95
- marker.on('click', function () {
96
- handleMarkerClick(point);
97
- });
98
- (_pointsLayerRef$curre2 = pointsLayerRef.current) === null || _pointsLayerRef$curre2 === void 0 ? void 0 : _pointsLayerRef$curre2.addLayer(marker);
99
129
  });
100
130
  }
101
- if (pointsLayerRef.current.getLayers().length) {
102
- map.fitBounds(pointsLayerRef.current.getBounds());
103
- } else {
104
- map.setView([32.219157, 34.982481], 12);
105
- }
106
131
  };
107
132
  var getMarker = function getMarker(point) {
108
- if (point.has_device === true || point.group.type === 'Groups::WastewaterTreatmentPlant') {
109
- return _leaflet.default.marker([point.latitude, point.longitude], {
110
- kando_object_id: point.id
111
- });
112
- } else {
113
- return _leaflet.default.circleMarker([point.latitude, point.longitude], {
114
- radius: 4,
115
- color: '#000000',
116
- weight: 1,
117
- fillColor: '#ffffff',
118
- fillOpacity: 1,
119
- kando_object_id: point.id
120
- });
121
- }
133
+ return _leaflet.default.marker([point.latitude, point.longitude], {
134
+ kando_object_id: point.id
135
+ });
122
136
  };
123
137
  var addEdges = function addEdges() {
124
138
  if (!map || !edges) {
@@ -136,7 +150,7 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
136
150
  edgesLayerRef.current = _leaflet.default.featureGroup();
137
151
  edgesLayerRef.current.addTo(map);
138
152
  edges.forEach(function (edge) {
139
- var _edgesLayerRef$curren;
153
+ var _edgesLayerRef$curren, _edgesLayerRef$curren2;
140
154
  var sourcePoint = pointLookup.get(edge.source_point_id);
141
155
  var targetPoint = pointLookup.get(edge.target_point_id);
142
156
  if (!sourcePoint || !targetPoint) {
@@ -166,7 +180,7 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
166
180
  })
167
181
  }]
168
182
  });
169
- decorator.addTo(map);
183
+ (_edgesLayerRef$curren2 = edgesLayerRef.current) === null || _edgesLayerRef$curren2 === void 0 ? void 0 : _edgesLayerRef$curren2.addLayer(decorator);
170
184
  });
171
185
  };
172
186
  var addAreas = function addAreas() {
@@ -187,7 +201,9 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
187
201
  if (area.shape_data.length > 0) {
188
202
  allAreas.push(area);
189
203
  }
190
- if (area.sub_areas.length > 0) {
204
+
205
+ // If there are sub_areas, recurse and concatenate
206
+ if (Array.isArray(area.sub_areas) && area.sub_areas.length > 0) {
191
207
  allAreas = allAreas.concat(flattenAreas(area.sub_areas));
192
208
  }
193
209
  });
@@ -212,12 +228,24 @@ var useMap = function useMap(mapRef, points, edges, areas, selectedPoint, update
212
228
  (_areasLayerRef$curren = areasLayerRef.current) === null || _areasLayerRef$curren === void 0 ? void 0 : _areasLayerRef$curren.addLayer(polygon);
213
229
  });
214
230
  };
231
+ var focusMap = function focusMap() {
232
+ if (map) {
233
+ if ((pointsLayerRef === null || pointsLayerRef === void 0 ? void 0 : pointsLayerRef.current) && Array.isArray(pointsLayerRef.current.getLayers()) && pointsLayerRef.current.getLayers().length > 0) {
234
+ map.fitBounds(pointsLayerRef.current.getBounds());
235
+ } else {
236
+ map.setView([32.219157, 34.982481], 12);
237
+ }
238
+ }
239
+ };
215
240
  (0, _react.useEffect)(function () {
216
- addAreas();
217
- addMarkers();
218
- addEdges();
219
- }, [points, map]);
241
+ if (map) {
242
+ addAreas();
243
+ addEdges();
244
+ addMarkers();
245
+ focusMap();
246
+ }
247
+ }, [points, areas, edges, map]);
220
248
  return map;
221
249
  };
222
250
  exports.useMap = useMap;
223
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX1BvaW50SWNvbiIsIl90aGVtZSIsIl9NYXBVdGlscyIsInVzZU1hcCIsIm1hcFJlZiIsInBvaW50cyIsImVkZ2VzIiwiYXJlYXMiLCJzZWxlY3RlZFBvaW50IiwidXBkYXRlU2VsZWN0ZWRQb2ludCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImRlZmF1bHQiLCJtYXAiLCJzZXRNYXAiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZvY3VzZWRNYXJrZXIiLCJzZXRGb2N1c2VkTWFya2VyIiwicG9pbnRzTGF5ZXJSZWYiLCJ1c2VSZWYiLCJlZGdlc0xheWVyUmVmIiwiYXJlYXNMYXllclJlZiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJtYXBUeXBlcyIsImJhc2VNYXBzIiwibGVhZmxldE1hcCIsIm1hcERlZmF1bHQiLCJzYXRlbGxpdGUiLCJtYXBUZW1wIiwiTCIsInJlbmRlcmVyIiwiY2FudmFzIiwiT2JqZWN0IiwidmFsdWVzIiwiYWRkVG8iLCJjb250cm9sIiwibGF5ZXJzIiwicG9zaXRpb24iLCJvZmYiLCJyZW1vdmUiLCJfcG9pbnRzTGF5ZXJSZWYkY3VycmUiLCJmaXJlIiwiZWFjaExheWVyIiwibWFya2VyIiwib3B0aW9ucyIsImthbmRvX29iamVjdF9pZCIsImlkIiwiaGFuZGxlTWFya2VyQ2xpY2siLCJwb2ludCIsImFkZE1hcmtlcnMiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiZmVhdHVyZUdyb3VwIiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9wb2ludHNMYXllclJlZiRjdXJyZTIiLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwiZ3JvdXAiLCJ0eXBlIiwibmFtZSIsImZvY3VzZWRJY29uIiwiZ2V0TWFya2VyIiwiTWFya2VyIiwic2V0SWNvbiIsIm9uIiwiX2lzSW5zaWRlIiwiYWRkTGF5ZXIiLCJmaXRCb3VuZHMiLCJnZXRCb3VuZHMiLCJzZXRWaWV3IiwiaGFzX2RldmljZSIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiY29sb3IiLCJ3ZWlnaHQiLCJmaWxsQ29sb3IiLCJmaWxsT3BhY2l0eSIsImFkZEVkZ2VzIiwicG9pbnRMb29rdXAiLCJNYXAiLCJwIiwic2V0IiwiZWRnZSIsIl9lZGdlc0xheWVyUmVmJGN1cnJlbiIsInNvdXJjZVBvaW50IiwiZ2V0Iiwic291cmNlX3BvaW50X2lkIiwidGFyZ2V0UG9pbnQiLCJ0YXJnZXRfcG9pbnRfaWQiLCJsYXRsbmdzIiwicG9seWxpbmUiLCJvcGFjaXR5Iiwic21vb3RoRmFjdG9yIiwiZGVjb3JhdG9yIiwicG9seWxpbmVEZWNvcmF0b3IiLCJwYXR0ZXJucyIsIm9mZnNldCIsInJlcGVhdCIsInN5bWJvbCIsIlN5bWJvbCIsImFycm93SGVhZCIsInBpeGVsU2l6ZSIsInBvbHlnb24iLCJwYXRoT3B0aW9ucyIsInN0cm9rZSIsImFkZEFyZWFzIiwiZmxhdHRlbkFyZWFzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiYWxsQXJlYXMiLCJhcmVhIiwic2hhcGVfZGF0YSIsInB1c2giLCJzdWJfYXJlYXMiLCJjb25jYXQiLCJfYXJlYXNMYXllclJlZiRjdXJyZW4iLCJpbnRlcmFjdGl2ZSIsImFyZWFfaWQiLCJiaW5kVG9vbHRpcCIsImFyZWFfbmFtZSIsInBlcm1hbmVudCIsImRpcmVjdGlvbiIsImNsYXNzTmFtZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnZXMvT3BlcmF0aW9uc1BhZ2UvTWFwL3VzZU1hcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEwsIHsgTWFya2VyIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnc3JjL1dpZGdldHMvTWFwL3BvaW50cy9Qb2ludEljb24nO1xuaW1wb3J0IHsgbGVhZmxldE1hcCB9IGZyb20gJ3NyYy9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgYmFzZU1hcHMgfSBmcm9tICdzcmMvV2lkZ2V0cy9NYXAvTWFwVXRpbHMnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJQXJlYSB9IGZyb20gJ3NyYy9zdG9yZS9hcmVhcy9tb2RlbHMvSUFyZWEnO1xuXG5leHBvcnQgY29uc3QgdXNlTWFwID0gKFxuICBtYXBSZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHBvaW50czogSVBvaW50W10sXG4gIGVkZ2VzOiBJRWRnZVtdLFxuICBhcmVhczogSUFyZWFbXSxcbiAgc2VsZWN0ZWRQb2ludDogSVBvaW50IHwgbnVsbCxcbiAgdXBkYXRlU2VsZWN0ZWRQb2ludDogKHBvaW50OiBJUG9pbnQpID0+IHZvaWQsXG4pOiBMLk1hcCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IFttYXAsIHNldE1hcF0gPSB1c2VTdGF0ZTxMLk1hcD4oKTtcbiAgY29uc3QgW2ZvY3VzZWRNYXJrZXIsIHNldEZvY3VzZWRNYXJrZXJdID0gdXNlU3RhdGU8TWFya2VyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHBvaW50c0xheWVyUmVmID0gdXNlUmVmPEwuRmVhdHVyZUdyb3VwPigpO1xuICBjb25zdCBlZGdlc0xheWVyUmVmID0gdXNlUmVmPEwuRmVhdHVyZUdyb3VwPigpO1xuICBjb25zdCBhcmVhc0xheWVyUmVmID0gdXNlUmVmPEwuRmVhdHVyZUdyb3VwPigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcFR5cGVzID0gYmFzZU1hcHMobGVhZmxldE1hcC5tYXBEZWZhdWx0LCBsZWFmbGV0TWFwLnNhdGVsbGl0ZSk7XG4gICAgY29uc3QgbWFwVGVtcCA9IEwubWFwKG1hcFJlZi5jdXJyZW50LCB7IHJlbmRlcmVyOiBMLmNhbnZhcygpIH0pO1xuXG4gICAgT2JqZWN0LnZhbHVlcyhtYXBUeXBlcylbMF0uYWRkVG8obWFwVGVtcCk7XG5cbiAgICBMLmNvbnRyb2wubGF5ZXJzKG1hcFR5cGVzLCB7fSwgeyBwb3NpdGlvbjogJ2JvdHRvbXJpZ2h0JyB9KS5hZGRUbyhtYXBUZW1wKTtcblxuICAgIHNldE1hcChtYXBUZW1wKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIW1hcFRlbXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbWFwVGVtcC5vZmYoKTtcbiAgICAgIG1hcFRlbXAucmVtb3ZlKCk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRNYXJrZXIpIHtcbiAgICAgIGZvY3VzZWRNYXJrZXIuZmlyZSgnbW91c2VvdXQnKTtcbiAgICB9XG5cbiAgICBwb2ludHNMYXllclJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKG1hcmtlcikgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBzZWxlY3RlZFBvaW50ICYmXG4gICAgICAgIG1hcmtlci5vcHRpb25zLmthbmRvX29iamVjdF9pZCA9PT0gc2VsZWN0ZWRQb2ludD8uaWRcbiAgICAgICkge1xuICAgICAgICBtYXJrZXIuZmlyZSgnbW91c2VvdmVyJyk7XG4gICAgICAgIHNldEZvY3VzZWRNYXJrZXIobWFya2VyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc2VsZWN0ZWRQb2ludF0pO1xuXG4gIGNvbnN0IGhhbmRsZU1hcmtlckNsaWNrID0gKHBvaW50KSA9PiB7XG4gICAgdXBkYXRlU2VsZWN0ZWRQb2ludChwb2ludCk7XG4gIH07XG5cbiAgY29uc3QgYWRkTWFya2VycyA9ICgpID0+IHtcbiAgICBpZiAoIW1hcCB8fCAhcG9pbnRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBvaW50c0xheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlmIChtYXAuaGFzTGF5ZXIocG9pbnRzTGF5ZXJSZWYuY3VycmVudCkpIHtcbiAgICAgICAgbWFwLnJlbW92ZUxheWVyKHBvaW50c0xheWVyUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBvaW50c0xheWVyUmVmLmN1cnJlbnQgPSBMLmZlYXR1cmVHcm91cCgpO1xuICAgIHBvaW50c0xheWVyUmVmLmN1cnJlbnQuYWRkVG8obWFwKTtcblxuICAgIGlmICghcG9pbnRzTGF5ZXJSZWYuY3VycmVudC5nZXRMYXllcnMoKS5sZW5ndGgpIHtcbiAgICAgIHBvaW50cy5mb3JFYWNoKChwb2ludCkgPT4ge1xuICAgICAgICBjb25zdCBpY29uID0gZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICAgICAgcG9pbnQubmFtZSxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzZWRJY29uID0gZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICAgICAgcG9pbnQubmFtZSxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBtYXJrZXIgPSBnZXRNYXJrZXIocG9pbnQpO1xuXG4gICAgICAgIGlmIChtYXJrZXIgaW5zdGFuY2VvZiBMLk1hcmtlcikge1xuICAgICAgICAgIG1hcmtlci5zZXRJY29uKGljb24pO1xuICAgICAgICAgIC8vIFRoZSB1c2Ugb2YgbWFya2VyLl9pc0luc2lkZSBpcyB0byBvdmVyY29tZSB0aGUgaXNzdWUgdGhhdCBtb3VzZW92ZXIgaXMgZW5kbGVzc2x5IHRyaWdnZXJlZFxuICAgICAgICAgIC8vIGFuZCB3ZSBuZWVkIGl0IG9ubGV5IG9uY2VcbiAgICAgICAgICBtYXJrZXIub24oJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghbWFya2VyLl9pc0luc2lkZSkge1xuICAgICAgICAgICAgICBtYXJrZXIuX2lzSW5zaWRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgbWFya2VyLnNldEljb24oZm9jdXNlZEljb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG1hcmtlci5vbignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgICAgICAgICBtYXJrZXIuX2lzSW5zaWRlID0gZmFsc2U7XG4gICAgICAgICAgICBtYXJrZXIuc2V0SWNvbihpY29uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1hcmtlci5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlTWFya2VyQ2xpY2socG9pbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBwb2ludHNMYXllclJlZi5jdXJyZW50Py5hZGRMYXllcihtYXJrZXIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHBvaW50c0xheWVyUmVmLmN1cnJlbnQuZ2V0TGF5ZXJzKCkubGVuZ3RoKSB7XG4gICAgICBtYXAuZml0Qm91bmRzKHBvaW50c0xheWVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRzKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0VmlldyhbMzIuMjE5MTU3LCAzNC45ODI0ODFdLCAxMik7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldE1hcmtlciA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gICAgaWYgKFxuICAgICAgcG9pbnQuaGFzX2RldmljZSA9PT0gdHJ1ZSB8fFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50J1xuICAgICkge1xuICAgICAgcmV0dXJuIEwubWFya2VyKFtwb2ludC5sYXRpdHVkZSwgcG9pbnQubG9uZ2l0dWRlXSwge1xuICAgICAgICBrYW5kb19vYmplY3RfaWQ6IHBvaW50LmlkLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBMLmNpcmNsZU1hcmtlcihbcG9pbnQubGF0aXR1ZGUsIHBvaW50LmxvbmdpdHVkZV0sIHtcbiAgICAgICAgcmFkaXVzOiA0LFxuICAgICAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIGZpbGxDb2xvcjogJyNmZmZmZmYnLFxuICAgICAgICBmaWxsT3BhY2l0eTogMSxcbiAgICAgICAga2FuZG9fb2JqZWN0X2lkOiBwb2ludC5pZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRFZGdlcyA9ICgpID0+IHtcbiAgICBpZiAoIW1hcCB8fCAhZWRnZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludExvb2t1cCA9IG5ldyBNYXAoKTtcbiAgICBwb2ludHMuZm9yRWFjaCgocCkgPT4gcG9pbnRMb29rdXAuc2V0KHAuaWQsIHApKTtcblxuICAgIGlmIChlZGdlc0xheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlmIChtYXAuaGFzTGF5ZXIoZWRnZXNMYXllclJlZi5jdXJyZW50KSkge1xuICAgICAgICBtYXAucmVtb3ZlTGF5ZXIoZWRnZXNMYXllclJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlZGdlc0xheWVyUmVmLmN1cnJlbnQgPSBMLmZlYXR1cmVHcm91cCgpO1xuICAgIGVkZ2VzTGF5ZXJSZWYuY3VycmVudC5hZGRUbyhtYXApO1xuXG4gICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlUG9pbnQgPSBwb2ludExvb2t1cC5nZXQoZWRnZS5zb3VyY2VfcG9pbnRfaWQpO1xuICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSBwb2ludExvb2t1cC5nZXQoZWRnZS50YXJnZXRfcG9pbnRfaWQpO1xuXG4gICAgICBpZiAoIXNvdXJjZVBvaW50IHx8ICF0YXJnZXRQb2ludCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxhdGxuZ3MgPSBbXG4gICAgICAgIFtzb3VyY2VQb2ludD8ubGF0aXR1ZGUsIHNvdXJjZVBvaW50Py5sb25naXR1ZGVdLFxuICAgICAgICBbdGFyZ2V0UG9pbnQ/LmxhdGl0dWRlLCB0YXJnZXRQb2ludD8ubG9uZ2l0dWRlXSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHBvbHlsaW5lID0gTC5wb2x5bGluZShsYXRsbmdzLCB7XG4gICAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIG9wYWNpdHk6IDAuNSxcbiAgICAgICAgc21vb3RoRmFjdG9yOiAxLFxuICAgICAgfSk7XG5cbiAgICAgIGVkZ2VzTGF5ZXJSZWYuY3VycmVudD8uYWRkTGF5ZXIocG9seWxpbmUpO1xuXG4gICAgICBjb25zdCBkZWNvcmF0b3IgPSBMLnBvbHlsaW5lRGVjb3JhdG9yKHBvbHlsaW5lLCB7XG4gICAgICAgIHBhdHRlcm5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2Zmc2V0OiAyMCxcbiAgICAgICAgICAgIHJlcGVhdDogNjAsXG4gICAgICAgICAgICBzeW1ib2w6IEwuU3ltYm9sLmFycm93SGVhZCh7XG4gICAgICAgICAgICAgIHBpeGVsU2l6ZTogNCxcbiAgICAgICAgICAgICAgcG9seWdvbjogZmFsc2UsXG4gICAgICAgICAgICAgIHBhdGhPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzU1NScsXG4gICAgICAgICAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZGVjb3JhdG9yLmFkZFRvKG1hcCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYWRkQXJlYXMgPSAoKSA9PiB7XG4gICAgaWYgKCFtYXAgfHwgIWFyZWFzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGFyZWFzTGF5ZXJSZWYuY3VycmVudCkge1xuICAgICAgaWYgKG1hcC5oYXNMYXllcihhcmVhc0xheWVyUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgIG1hcC5yZW1vdmVMYXllcihhcmVhc0xheWVyUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFyZWFzTGF5ZXJSZWYuY3VycmVudCA9IEwuZmVhdHVyZUdyb3VwKCk7XG4gICAgYXJlYXNMYXllclJlZi5jdXJyZW50LmFkZFRvKG1hcCk7XG5cbiAgICBjb25zdCBmbGF0dGVuQXJlYXMgPSAoYXJlYXM6IElBcmVhW10gPSBbXSk6IElBcmVhW10gPT4ge1xuICAgICAgbGV0IGFsbEFyZWFzOiBJQXJlYVtdID0gW107XG5cbiAgICAgIGFyZWFzLmZvckVhY2goKGFyZWE6IElBcmVhKSA9PiB7XG4gICAgICAgIGlmIChhcmVhLnNoYXBlX2RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGFsbEFyZWFzLnB1c2goYXJlYSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJlYS5zdWJfYXJlYXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGFsbEFyZWFzID0gYWxsQXJlYXMuY29uY2F0KGZsYXR0ZW5BcmVhcyhhcmVhLnN1Yl9hcmVhcykpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGFsbEFyZWFzO1xuICAgIH07XG5cbiAgICBjb25zdCBhbGxBcmVhcyA9IGZsYXR0ZW5BcmVhcyhhcmVhcyk7XG5cbiAgICBhbGxBcmVhcy5mb3JFYWNoKChhcmVhKSA9PiB7XG4gICAgICBjb25zdCBwb2x5Z29uID0gTC5wb2x5Z29uKGFyZWEuc2hhcGVfZGF0YSwge1xuICAgICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICBvcGFjaXR5OiAwLjgsXG4gICAgICAgIHNtb290aEZhY3RvcjogMSxcbiAgICAgICAgaW50ZXJhY3RpdmU6IGZhbHNlLFxuICAgICAgICBrYW5kb19vYmplY3RfaWQ6IGFyZWEuYXJlYV9pZCxcbiAgICAgIH0pO1xuXG4gICAgICBwb2x5Z29uLmJpbmRUb29sdGlwKGFyZWEuYXJlYV9uYW1lLCB7XG4gICAgICAgIHBlcm1hbmVudDogdHJ1ZSxcbiAgICAgICAgZGlyZWN0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnYXJlYS10b29sdGlwJyxcbiAgICAgIH0pO1xuXG4gICAgICBhcmVhc0xheWVyUmVmLmN1cnJlbnQ/LmFkZExheWVyKHBvbHlnb24pO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWRkQXJlYXMoKTtcbiAgICBhZGRNYXJrZXJzKCk7XG4gICAgYWRkRWRnZXMoKTtcbiAgfSwgW3BvaW50cywgbWFwXSk7XG5cbiAgcmV0dXJuIG1hcDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBS08sSUFBTUssTUFBTSxHQUFHLFNBQVRBLE1BQU1BLENBQ2pCQyxNQUF1QyxFQUN2Q0MsTUFBZ0IsRUFDaEJDLEtBQWMsRUFDZEMsS0FBYyxFQUNkQyxh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
251
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX1BvaW50SWNvbiIsIl90aGVtZSIsIl9NYXBVdGlscyIsInVzZU1hcCIsIm1hcFJlZiIsInBvaW50cyIsImVkZ2VzIiwiYXJlYXMiLCJzZWxlY3RlZFBvaW50IiwidXBkYXRlU2VsZWN0ZWRQb2ludCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImRlZmF1bHQiLCJtYXAiLCJzZXRNYXAiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZvY3VzZWRNYXJrZXIiLCJzZXRGb2N1c2VkTWFya2VyIiwiZm9jdXNlZE1hcmtlclJlZiIsInVzZVJlZiIsInBvaW50c0xheWVyUmVmIiwiZWRnZXNMYXllclJlZiIsImFyZWFzTGF5ZXJSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwicmVzZXRBbGxPdGhlcnMiLCJtYXBUeXBlcyIsImJhc2VNYXBzIiwibGVhZmxldE1hcCIsIm1hcERlZmF1bHQiLCJzYXRlbGxpdGUiLCJtYXBUZW1wIiwiTCIsInJlbmRlcmVyIiwiY2FudmFzIiwiT2JqZWN0IiwidmFsdWVzIiwiYWRkVG8iLCJjb250cm9sIiwibGF5ZXJzIiwicG9zaXRpb24iLCJvZmYiLCJyZW1vdmUiLCJfcG9pbnRzTGF5ZXJSZWYkY3VycmUiLCJlYWNoTGF5ZXIiLCJtYXJrZXIiLCJvcHRpb25zIiwia2FuZG9fb2JqZWN0X2lkIiwiaWQiLCJfaXNJbnNpZGUiLCJmaXJlIiwiX3BvaW50c0xheWVyUmVmJGN1cnJlMiIsImdldEJvdW5kcyIsImNvbnRhaW5zIiwiZ2V0TGF0TG5nIiwiZmx5VG8iLCJnZXRab29tIiwiZHVyYXRpb24iLCJhbmltYXRlIiwiaGFuZGxlTWFya2VyQ2xpY2siLCJwb2ludCIsImFkZE1hcmtlcnMiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiZmVhdHVyZUdyb3VwIiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwiZm9yRWFjaCIsInR5cGUiLCJoYXNfZGV2aWNlIiwiZ3JvdXAiLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwibmFtZSIsImZvY3VzZWRJY29uIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJfcG9pbnRzTGF5ZXJSZWYkY3VycmUzIiwiZ2V0TWFya2VyIiwic2V0SWNvbiIsIm9uIiwiX2ZvY3VzZWRNYXJrZXJSZWYkY3VyIiwiX2xlYWZsZXRfaWQiLCJfZm9jdXNlZE1hcmtlclJlZiRjdXIyIiwiYWRkTGF5ZXIiLCJhZGRFZGdlcyIsInBvaW50TG9va3VwIiwiTWFwIiwicCIsInNldCIsImVkZ2UiLCJfZWRnZXNMYXllclJlZiRjdXJyZW4iLCJfZWRnZXNMYXllclJlZiRjdXJyZW4yIiwic291cmNlUG9pbnQiLCJnZXQiLCJzb3VyY2VfcG9pbnRfaWQiLCJ0YXJnZXRQb2ludCIsInRhcmdldF9wb2ludF9pZCIsImxhdGxuZ3MiLCJwb2x5bGluZSIsImNvbG9yIiwid2VpZ2h0Iiwib3BhY2l0eSIsInNtb290aEZhY3RvciIsImRlY29yYXRvciIsInBvbHlsaW5lRGVjb3JhdG9yIiwicGF0dGVybnMiLCJvZmZzZXQiLCJyZXBlYXQiLCJzeW1ib2wiLCJTeW1ib2wiLCJhcnJvd0hlYWQiLCJwaXhlbFNpemUiLCJwb2x5Z29uIiwicGF0aE9wdGlvbnMiLCJzdHJva2UiLCJhZGRBcmVhcyIsImZsYXR0ZW5BcmVhcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImFsbEFyZWFzIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5Iiwic3ViX2FyZWFzIiwiY29uY2F0IiwiX2FyZWFzTGF5ZXJSZWYkY3VycmVuIiwiaW50ZXJhY3RpdmUiLCJhcmVhX2lkIiwiYmluZFRvb2x0aXAiLCJhcmVhX25hbWUiLCJwZXJtYW5lbnQiLCJkaXJlY3Rpb24iLCJjbGFzc05hbWUiLCJmb2N1c01hcCIsImZpdEJvdW5kcyIsInNldFZpZXciLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhZ2VzL09wZXJhdGlvbnNQYWdlL01hcC91c2VNYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMLCB7IE1hcmtlciB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFBvaW50SWNvbkJ5VHlwZSB9IGZyb20gJ3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRJY29uJztcbmltcG9ydCB7IGxlYWZsZXRNYXAgfSBmcm9tICdzcmMvc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCB7IGJhc2VNYXBzIH0gZnJvbSAnc3JjL1dpZGdldHMvTWFwL01hcFV0aWxzJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJ3NyYy9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcblxuZXhwb3J0IGNvbnN0IHVzZU1hcCA9IChcbiAgbWFwUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBwb2ludHM6IElQb2ludFtdLFxuICBlZGdlczogSUVkZ2VbXSxcbiAgYXJlYXM6IElBcmVhW10sXG4gIHNlbGVjdGVkUG9pbnQ6IElQb2ludCB8IG51bGwsXG4gIHVwZGF0ZVNlbGVjdGVkUG9pbnQ6IChwb2ludDogSVBvaW50KSA9PiB2b2lkLFxuKTogTC5NYXAgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBbbWFwLCBzZXRNYXBdID0gdXNlU3RhdGU8TC5NYXA+KCk7XG4gIGNvbnN0IFtmb2N1c2VkTWFya2VyLCBzZXRGb2N1c2VkTWFya2VyXSA9IHVzZVN0YXRlPE1hcmtlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBmb2N1c2VkTWFya2VyUmVmID0gdXNlUmVmPE1hcmtlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwb2ludHNMYXllclJlZiA9IHVzZVJlZjxMLkZlYXR1cmVHcm91cD4oKTtcbiAgY29uc3QgZWRnZXNMYXllclJlZiA9IHVzZVJlZjxMLkZlYXR1cmVHcm91cD4oKTtcbiAgY29uc3QgYXJlYXNMYXllclJlZiA9IHVzZVJlZjxMLkZlYXR1cmVHcm91cD4oKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZvY3VzZWRNYXJrZXJSZWYuY3VycmVudCA9IGZvY3VzZWRNYXJrZXI7XG4gICAgcmVzZXRBbGxPdGhlcnMoKTtcbiAgfSwgW2ZvY3VzZWRNYXJrZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXBUeXBlcyA9IGJhc2VNYXBzKGxlYWZsZXRNYXAubWFwRGVmYXVsdCwgbGVhZmxldE1hcC5zYXRlbGxpdGUpO1xuICAgIGNvbnN0IG1hcFRlbXAgPSBMLm1hcChtYXBSZWYuY3VycmVudCwgeyByZW5kZXJlcjogTC5jYW52YXMoKSB9KTtcblxuICAgIE9iamVjdC52YWx1ZXMobWFwVHlwZXMpWzBdLmFkZFRvKG1hcFRlbXApO1xuXG4gICAgTC5jb250cm9sLmxheWVycyhtYXBUeXBlcywge30sIHsgcG9zaXRpb246ICdib3R0b21yaWdodCcgfSkuYWRkVG8obWFwVGVtcCk7XG5cbiAgICBzZXRNYXAobWFwVGVtcCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFtYXBUZW1wKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG1hcFRlbXAub2ZmKCk7XG4gICAgICBtYXBUZW1wLnJlbW92ZSgpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCByZXNldEFsbE90aGVycyA9ICgpID0+IHtcbiAgICBwb2ludHNMYXllclJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKG1hcmtlcikgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBtYXJrZXIub3B0aW9ucy5rYW5kb19vYmplY3RfaWQgIT09IHNlbGVjdGVkUG9pbnQ/LmlkICYmXG4gICAgICAgIG1hcmtlci5faXNJbnNpZGVcbiAgICAgICkge1xuICAgICAgICBtYXJrZXIuZmlyZSgnbW91c2VvdXQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZFBvaW50ID09PSBudWxsKSB7XG4gICAgICBzZXRGb2N1c2VkTWFya2VyKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb2ludHNMYXllclJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKG1hcmtlcikgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZWN0ZWRQb2ludCAmJlxuICAgICAgICAgIG1hcmtlci5vcHRpb25zLmthbmRvX29iamVjdF9pZCA9PT0gc2VsZWN0ZWRQb2ludD8uaWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCFtYXA/LmdldEJvdW5kcygpLmNvbnRhaW5zKG1hcmtlci5nZXRMYXRMbmcoKSkpIHtcbiAgICAgICAgICAgIG1hcD8uZmx5VG8obWFya2VyLmdldExhdExuZygpLCBtYXAuZ2V0Wm9vbSgpLCB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAwLjUsXG4gICAgICAgICAgICAgIGFuaW1hdGU6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hcmtlci5maXJlKCdtb3VzZW92ZXInKTtcbiAgICAgICAgICBzZXRGb2N1c2VkTWFya2VyKG1hcmtlcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtzZWxlY3RlZFBvaW50XSk7XG5cbiAgY29uc3QgaGFuZGxlTWFya2VyQ2xpY2sgPSAocG9pbnQpID0+IHtcbiAgICB1cGRhdGVTZWxlY3RlZFBvaW50KHBvaW50KTtcbiAgfTtcblxuICBjb25zdCBhZGRNYXJrZXJzID0gKCkgPT4ge1xuICAgIGlmICghbWFwIHx8ICFwb2ludHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocG9pbnRzTGF5ZXJSZWYuY3VycmVudCkge1xuICAgICAgaWYgKG1hcC5oYXNMYXllcihwb2ludHNMYXllclJlZi5jdXJyZW50KSkge1xuICAgICAgICBtYXAucmVtb3ZlTGF5ZXIocG9pbnRzTGF5ZXJSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcG9pbnRzTGF5ZXJSZWYuY3VycmVudCA9IEwuZmVhdHVyZUdyb3VwKCk7XG4gICAgcG9pbnRzTGF5ZXJSZWYuY3VycmVudC5hZGRUbyhtYXApO1xuXG4gICAgaWYgKCFwb2ludHNMYXllclJlZi5jdXJyZW50LmdldExheWVycygpLmxlbmd0aCkge1xuICAgICAgcG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGUgPVxuICAgICAgICAgIHBvaW50Lmhhc19kZXZpY2UgPT09IHRydWUgfHxcbiAgICAgICAgICBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnXG4gICAgICAgICAgICA/IHBvaW50Lmdyb3VwLnR5cGVcbiAgICAgICAgICAgIDogJ0dyb3Vwczo6ZGVmYXVsdCc7XG4gICAgICAgIGNvbnN0IGljb24gPSBnZXRQb2ludEljb25CeVR5cGUodHlwZSwgcG9pbnQubmFtZSwgJycsIGZhbHNlLCB0cnVlKTtcblxuICAgICAgICBjb25zdCBmb2N1c2VkSWNvbiA9IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHBvaW50Lm5hbWUsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocG9pbnQubGF0aXR1ZGUgJiYgcG9pbnQubG9uZ2l0dWRlKSB7XG4gICAgICAgICAgbGV0IG1hcmtlciA9IGdldE1hcmtlcihwb2ludCk7XG5cbiAgICAgICAgICBtYXJrZXIuc2V0SWNvbihpY29uKTtcbiAgICAgICAgICAvLyBUaGUgdXNlIG9mIG1hcmtlci5faXNJbnNpZGUgaXMgdG8gb3ZlcmNvbWUgdGhlIGlzc3VlIHRoYXQgbW91c2VvdmVyIGlzIGVuZGxlc3NseSB0cmlnZ2VyZWRcbiAgICAgICAgICAvLyBhbmQgd2UgbmVlZCBpdCBvbmx5IG9uY2VcbiAgICAgICAgICBtYXJrZXIub24oJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghbWFya2VyLl9pc0luc2lkZSkge1xuICAgICAgICAgICAgICBtYXJrZXIuX2lzSW5zaWRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgbWFya2VyLnNldEljb24oZm9jdXNlZEljb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbWFya2VyLm9uKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZm9jdXNlZE1hcmtlclJlZj8uY3VycmVudD8uX2xlYWZsZXRfaWQgIT09IG1hcmtlcj8uX2xlYWZsZXRfaWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBtYXJrZXIuX2lzSW5zaWRlID0gZmFsc2U7XG4gICAgICAgICAgICAgIG1hcmtlci5zZXRJY29uKGljb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbWFya2VyLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZm9jdXNlZE1hcmtlclJlZj8uY3VycmVudD8uX2xlYWZsZXRfaWQgPT09IG1hcmtlcj8uX2xlYWZsZXRfaWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXRGb2N1c2VkTWFya2VyKG51bGwpO1xuICAgICAgICAgICAgICBoYW5kbGVNYXJrZXJDbGljayhudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGhhbmRsZU1hcmtlckNsaWNrKHBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBvaW50c0xheWVyUmVmLmN1cnJlbnQ/LmFkZExheWVyKG1hcmtlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRNYXJrZXIgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIHJldHVybiBMLm1hcmtlcihbcG9pbnQubGF0aXR1ZGUsIHBvaW50LmxvbmdpdHVkZV0sIHtcbiAgICAgIGthbmRvX29iamVjdF9pZDogcG9pbnQuaWQsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYWRkRWRnZXMgPSAoKSA9PiB7XG4gICAgaWYgKCFtYXAgfHwgIWVkZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRMb29rdXAgPSBuZXcgTWFwKCk7XG4gICAgcG9pbnRzLmZvckVhY2goKHApID0+IHBvaW50TG9va3VwLnNldChwLmlkLCBwKSk7XG5cbiAgICBpZiAoZWRnZXNMYXllclJlZi5jdXJyZW50KSB7XG4gICAgICBpZiAobWFwLmhhc0xheWVyKGVkZ2VzTGF5ZXJSZWYuY3VycmVudCkpIHtcbiAgICAgICAgbWFwLnJlbW92ZUxheWVyKGVkZ2VzTGF5ZXJSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWRnZXNMYXllclJlZi5jdXJyZW50ID0gTC5mZWF0dXJlR3JvdXAoKTtcbiAgICBlZGdlc0xheWVyUmVmLmN1cnJlbnQuYWRkVG8obWFwKTtcblxuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gcG9pbnRMb29rdXAuZ2V0KGVkZ2Uuc291cmNlX3BvaW50X2lkKTtcbiAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gcG9pbnRMb29rdXAuZ2V0KGVkZ2UudGFyZ2V0X3BvaW50X2lkKTtcblxuICAgICAgaWYgKCFzb3VyY2VQb2ludCB8fCAhdGFyZ2V0UG9pbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXRsbmdzID0gW1xuICAgICAgICBbc291cmNlUG9pbnQ/LmxhdGl0dWRlLCBzb3VyY2VQb2ludD8ubG9uZ2l0dWRlXSxcbiAgICAgICAgW3RhcmdldFBvaW50Py5sYXRpdHVkZSwgdGFyZ2V0UG9pbnQ/LmxvbmdpdHVkZV0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBwb2x5bGluZSA9IEwucG9seWxpbmUobGF0bG5ncywge1xuICAgICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICBvcGFjaXR5OiAwLjUsXG4gICAgICAgIHNtb290aEZhY3RvcjogMSxcbiAgICAgIH0pO1xuXG4gICAgICBlZGdlc0xheWVyUmVmLmN1cnJlbnQ/LmFkZExheWVyKHBvbHlsaW5lKTtcblxuICAgICAgY29uc3QgZGVjb3JhdG9yID0gTC5wb2x5bGluZURlY29yYXRvcihwb2x5bGluZSwge1xuICAgICAgICBwYXR0ZXJuczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9mZnNldDogMjAsXG4gICAgICAgICAgICByZXBlYXQ6IDYwLFxuICAgICAgICAgICAgc3ltYm9sOiBMLlN5bWJvbC5hcnJvd0hlYWQoe1xuICAgICAgICAgICAgICBwaXhlbFNpemU6IDQsXG4gICAgICAgICAgICAgIHBvbHlnb246IGZhbHNlLFxuICAgICAgICAgICAgICBwYXRoT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb2xvcjogJyM1NTUnLFxuICAgICAgICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjgsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGVkZ2VzTGF5ZXJSZWYuY3VycmVudD8uYWRkTGF5ZXIoZGVjb3JhdG9yKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhZGRBcmVhcyA9ICgpID0+IHtcbiAgICBpZiAoIW1hcCB8fCAhYXJlYXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYXJlYXNMYXllclJlZi5jdXJyZW50KSB7XG4gICAgICBpZiAobWFwLmhhc0xheWVyKGFyZWFzTGF5ZXJSZWYuY3VycmVudCkpIHtcbiAgICAgICAgbWFwLnJlbW92ZUxheWVyKGFyZWFzTGF5ZXJSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXJlYXNMYXllclJlZi5jdXJyZW50ID0gTC5mZWF0dXJlR3JvdXAoKTtcbiAgICBhcmVhc0xheWVyUmVmLmN1cnJlbnQuYWRkVG8obWFwKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5BcmVhcyA9IChhcmVhczogSUFyZWFbXSA9IFtdKTogSUFyZWFbXSA9PiB7XG4gICAgICBsZXQgYWxsQXJlYXM6IElBcmVhW10gPSBbXTtcblxuICAgICAgYXJlYXMuZm9yRWFjaCgoYXJlYTogSUFyZWEpID0+IHtcbiAgICAgICAgaWYgKGFyZWEuc2hhcGVfZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYWxsQXJlYXMucHVzaChhcmVhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdWJfYXJlYXMsIHJlY3Vyc2UgYW5kIGNvbmNhdGVuYXRlXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZWEuc3ViX2FyZWFzKSAmJiBhcmVhLnN1Yl9hcmVhcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYWxsQXJlYXMgPSBhbGxBcmVhcy5jb25jYXQoZmxhdHRlbkFyZWFzKGFyZWEuc3ViX2FyZWFzKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYWxsQXJlYXM7XG4gICAgfTtcblxuICAgIGNvbnN0IGFsbEFyZWFzID0gZmxhdHRlbkFyZWFzKGFyZWFzKTtcblxuICAgIGFsbEFyZWFzLmZvckVhY2goKGFyZWEpID0+IHtcbiAgICAgIGNvbnN0IHBvbHlnb24gPSBMLnBvbHlnb24oYXJlYS5zaGFwZV9kYXRhLCB7XG4gICAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIG9wYWNpdHk6IDAuOCxcbiAgICAgICAgc21vb3RoRmFjdG9yOiAxLFxuICAgICAgICBpbnRlcmFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGthbmRvX29iamVjdF9pZDogYXJlYS5hcmVhX2lkLFxuICAgICAgfSk7XG5cbiAgICAgIHBvbHlnb24uYmluZFRvb2x0aXAoYXJlYS5hcmVhX25hbWUsIHtcbiAgICAgICAgcGVybWFuZW50OiB0cnVlLFxuICAgICAgICBkaXJlY3Rpb246ICdjZW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6ICdhcmVhLXRvb2x0aXAnLFxuICAgICAgfSk7XG5cbiAgICAgIGFyZWFzTGF5ZXJSZWYuY3VycmVudD8uYWRkTGF5ZXIocG9seWdvbik7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZm9jdXNNYXAgPSAoKSA9PiB7XG4gICAgaWYgKG1hcCkge1xuICAgICAgaWYgKFxuICAgICAgICBwb2ludHNMYXllclJlZj8uY3VycmVudCAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KHBvaW50c0xheWVyUmVmLmN1cnJlbnQuZ2V0TGF5ZXJzKCkpICYmXG4gICAgICAgIHBvaW50c0xheWVyUmVmLmN1cnJlbnQuZ2V0TGF5ZXJzKCkubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIG1hcC5maXRCb3VuZHMocG9pbnRzTGF5ZXJSZWYuY3VycmVudC5nZXRCb3VuZHMoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXAuc2V0VmlldyhbMzIuMjE5MTU3LCAzNC45ODI0ODFdLCAxMik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1hcCkge1xuICAgICAgYWRkQXJlYXMoKTtcbiAgICAgIGFkZEVkZ2VzKCk7XG4gICAgICBhZGRNYXJrZXJzKCk7XG4gICAgICBmb2N1c01hcCgpO1xuICAgIH1cbiAgfSwgW3BvaW50cywgYXJlYXMsIGVkZ2VzLCBtYXBdKTtcblxuICByZXR1cm4gbWFwO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFLTyxJQUFNSyxNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FDakJDLE1BQXVDLEVBQ3ZDQyxNQUFnQixFQUNoQkMsS0FBYyxFQUNkQyxLQUFjLEVBQ2RDLGFBQTRCLEVBQzVCQyxtQkFBNEMsRUFDdEI7RUFDdEIsSUFBQUMsU0FBQSxHQUFzQixJQUFBQyxlQUFRLEVBQVEsQ0FBQztJQUFBQyxVQUFBLE9BQUFDLGVBQUEsQ0FBQUMsT0FBQSxFQUFBSixTQUFBO0lBQWhDSyxHQUFHLEdBQUFILFVBQUE7SUFBRUksTUFBTSxHQUFBSixVQUFBO0VBQ2xCLElBQUFLLFVBQUEsR0FBMEMsSUFBQU4sZUFBUSxFQUFnQixJQUFJLENBQUM7SUFBQU8sVUFBQSxPQUFBTCxlQUFBLENBQUFDLE9BQUEsRUFBQUcsVUFBQTtJQUFoRUUsYUFBYSxHQUFBRCxVQUFBO0lBQUVFLGdCQUFnQixHQUFBRixVQUFBO0VBQ3RDLElBQU1HLGdCQUFnQixHQUFHLElBQUFDLGFBQU0sRUFBZ0IsSUFBSSxDQUFDO0VBQ3BELElBQU1DLGNBQWMsR0FBRyxJQUFBRCxhQUFNLEVBQWlCLENBQUM7RUFDL0MsSUFBTUUsYUFBYSxHQUFHLElBQUFGLGFBQU0sRUFBaUIsQ0FBQztFQUM5QyxJQUFNRyxhQUFhLEdBQUcsSUFBQUgs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
@@ -14,11 +14,12 @@ var _reactBootstrap = require("react-bootstrap");
14
14
  var _actions = require("store/context/actions");
15
15
  var _actions2 = require("store/points/actions");
16
16
  var _actions3 = require("store/edges/actions");
17
+ var _actions4 = require("store/areas/actions");
17
18
  var _Map = require("./Map/Map");
18
19
  var _LeftPanel = _interopRequireDefault(require("./LeftPanel"));
19
20
  var _RightPanel = _interopRequireDefault(require("./RightPanel"));
20
- var _actions4 = require("store/areas/actions");
21
21
  var _KandoAlert = require("ui-kit/Alert/KandoAlert");
22
+ var _Loader = require("../DashboardMap/Loader");
22
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
25
  var OperationsPage = function OperationsPage() {
@@ -48,7 +49,7 @@ var OperationsPage = function OperationsPage() {
48
49
  isSmallScreen = _useState6[0],
49
50
  setIsSmallScreen = _useState6[1];
50
51
  var handleSelectPoint = function handleSelectPoint(newPoint) {
51
- if (selectedPoint && newPoint.id === selectedPoint.id) {
52
+ if (newPoint === null || newPoint.id === (selectedPoint === null || selectedPoint === void 0 ? void 0 : selectedPoint.id)) {
52
53
  setSelectedPoint(null);
53
54
  } else {
54
55
  setSelectedPoint(newPoint);
@@ -73,12 +74,13 @@ var OperationsPage = function OperationsPage() {
73
74
  }, []);
74
75
  (0, _react.useEffect)(function () {
75
76
  if (global_data.waterAuthorityId) {
76
- dispatch((0, _actions2.fetchPoints)(global_data.waterAuthorityId));
77
+ dispatch((0, _actions2.fetchPoints)(global_data.waterAuthorityId, '', true));
77
78
  dispatch((0, _actions3.fetchEdges)(global_data.waterAuthorityId));
78
79
  dispatch((0, _actions4.fetchAreas)(global_data.waterAuthorityId));
79
80
  }
80
81
  return function () {
81
82
  setSelectedPoint(null);
83
+ dispatch((0, _actions2.clearPoints)());
82
84
  };
83
85
  }, [global_data.waterAuthorityId]);
84
86
  var points = (0, _react.useMemo)(function () {
@@ -96,7 +98,7 @@ var OperationsPage = function OperationsPage() {
96
98
  return /*#__PURE__*/_react.default.createElement(_LeftPanel.default, {
97
99
  points: monitoredPoints,
98
100
  selectedPoint: selectedPoint,
99
- setSelectedPoint: setSelectedPoint
101
+ setSelectedPoint: handleSelectPoint
100
102
  });
101
103
  }, [monitoredPoints, selectedPoint]);
102
104
  (0, _react.useEffect)(function () {
@@ -109,15 +111,6 @@ var OperationsPage = function OperationsPage() {
109
111
  var onRightPanelClose = function onRightPanelClose() {
110
112
  setSelectedPoint(null);
111
113
  };
112
- var getDistance = function getDistance() {
113
- if (selectedPoint && edges_data.items) {
114
- var edge = edges_data.items.find(function (edge) {
115
- return edge.source_point_id === selectedPoint.id;
116
- });
117
- return (edge === null || edge === void 0 ? void 0 : edge.distance) || 0;
118
- }
119
- return 0;
120
- };
121
114
  if (isSmallScreen) {
122
115
  return /*#__PURE__*/_react.default.createElement(_KandoAlert.KandoAlert, {
123
116
  variant: "success",
@@ -133,7 +126,7 @@ var OperationsPage = function OperationsPage() {
133
126
  }, showLeftPanel), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Col, {
134
127
  className: "map-column",
135
128
  sm: 9
136
- }, !edges_data.isFetching && !areas_data.isFetching && /*#__PURE__*/_react.default.createElement(_Map.Map, {
129
+ }, edges_data.isFetching || areas_data.isFetching ? /*#__PURE__*/_react.default.createElement(_Loader.Loader, null) : /*#__PURE__*/_react.default.createElement(_Map.Map, {
137
130
  points: points,
138
131
  edges: edges_data.items,
139
132
  areas: areas_data.newAreas,
@@ -142,10 +135,9 @@ var OperationsPage = function OperationsPage() {
142
135
  }), /*#__PURE__*/_react.default.createElement(_RightPanel.default, {
143
136
  className: "right-panel ".concat(showRightPanel ? 'open' : ''),
144
137
  point: selectedPoint,
145
- distance: getDistance(),
146
138
  onClose: onRightPanelClose
147
139
  }))));
148
140
  };
149
141
  var _default = OperationsPage;
150
142
  exports.default = _default;
151
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdEJvb3RzdHJhcCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX2FjdGlvbnMzIiwiX01hcCIsIl9MZWZ0UGFuZWwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1JpZ2h0UGFuZWwiLCJfYWN0aW9uczQiLCJfS2FuZG9BbGVydCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiT3BlcmF0aW9uc1BhZ2UiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwicG9pbnRzX2RhdGEiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZWRnZXNfZGF0YSIsImFyZWFzX2RhdGEiLCJnbG9iYWxfZGF0YSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNob3dSaWdodFBhbmVsIiwic2V0U2hvd1JpZ2h0UGFuZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNlbGVjdGVkUG9pbnQiLCJzZXRTZWxlY3RlZFBvaW50IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc1NtYWxsU2NyZWVuIiwic2V0SXNTbWFsbFNjcmVlbiIsImhhbmRsZVNlbGVjdFBvaW50IiwibmV3UG9pbnQiLCJpZCIsInVzZUVmZmVjdCIsInVwZGF0ZU5hdkNvbnRleHQiLCJuYW1lIiwiY2hlY2tTY3JlZW5TaXplIiwid2luZG93IiwiaW5uZXJXaWR0aCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwid2F0ZXJBdXRob3JpdHlJZCIsImZldGNoUG9pbnRzIiwiZmV0Y2hFZGdlcyIsImZldGNoQXJlYXMiLCJwb2ludHMiLCJ1c2VNZW1vIiwiX3BvaW50c19kYXRhJGl0ZW1zIiwiaXRlbXMiLCJmaWx0ZXIiLCJwb2ludCIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibW9uaXRvcmVkUG9pbnRzIiwiaGFzX2RldmljZSIsInNob3dMZWZ0UGFuZWwiLCJjcmVhdGVFbGVtZW50Iiwib25SaWdodFBhbmVsQ2xvc2UiLCJnZXREaXN0YW5jZSIsImVkZ2UiLCJmaW5kIiwic291cmNlX3BvaW50X2lkIiwiZGlzdGFuY2UiLCJLYW5kb0FsZXJ0IiwidmFyaWFudCIsImhlYWRlciIsIkNvbnRhaW5lciIsImZsdWlkIiwiY2xhc3NOYW1lIiwiUm93IiwiQ29sIiwic20iLCJpc0ZldGNoaW5nIiwiTWFwIiwiZWRnZXMiLCJhcmVhcyIsIm5ld0FyZWFzIiwidXBkYXRlU2VsZWN0ZWRQb2ludCIsImNvbmNhdCIsIm9uQ2xvc2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvT3BlcmF0aW9uc1BhZ2UvT3BlcmF0aW9uc1BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9PcGVyYXRpb25zUGFnZS5zY3NzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgQ29sLCBDb250YWluZXIsIFJvdyB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCc7XG5pbXBvcnQgeyB1cGRhdGVOYXZDb250ZXh0IH0gZnJvbSAnc3JjL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaFBvaW50cyB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaEVkZ2VzIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL2FjdGlvbnMnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCB7IE1hcCB9IGZyb20gJy4vTWFwL01hcCc7XG5pbXBvcnQgTGVmdFBhbmVsIGZyb20gJy4vTGVmdFBhbmVsJztcbmltcG9ydCBSaWdodFBhbmVsIGZyb20gJy4vUmlnaHRQYW5lbCc7XG5pbXBvcnQgeyBmZXRjaEFyZWFzIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL2FjdGlvbnMnO1xuaW1wb3J0IHsgS2FuZG9BbGVydCB9IGZyb20gJ3NyYy91aS1raXQvQWxlcnQvS2FuZG9BbGVydCc7XG5cbmNvbnN0IE9wZXJhdGlvbnNQYWdlOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBwb2ludHNfZGF0YSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucG9pbnRzX2RhdGEpO1xuICBjb25zdCBlZGdlc19kYXRhID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5lZGdlc19kYXRhKTtcbiAgY29uc3QgYXJlYXNfZGF0YSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUuYXJlYXNfZGF0YSk7XG4gIGNvbnN0IGdsb2JhbF9kYXRhID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YSk7XG4gIGNvbnN0IFtzaG93UmlnaHRQYW5lbCwgc2V0U2hvd1JpZ2h0UGFuZWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRQb2ludCwgc2V0U2VsZWN0ZWRQb2ludF0gPSB1c2VTdGF0ZTxJUG9pbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2lzU21hbGxTY3JlZW4sIHNldElzU21hbGxTY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBvaW50ID0gKG5ld1BvaW50OiBJUG9pbnQpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRQb2ludCAmJiBuZXdQb2ludC5pZCA9PT0gc2VsZWN0ZWRQb2ludC5pZCkge1xuICAgICAgc2V0U2VsZWN0ZWRQb2ludChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U2VsZWN0ZWRQb2ludChuZXdQb2ludCk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGlzcGF0Y2godXBkYXRlTmF2Q29udGV4dCh7IG5hbWU6ICdvcGVyYXRpb25zJyB9KSk7XG5cbiAgICBjb25zdCBjaGVja1NjcmVlblNpemUgPSAoKSA9PiB7XG4gICAgICBzZXRJc1NtYWxsU2NyZWVuKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KTsgLy8gb3IgYW55IGJyZWFrcG9pbnRcbiAgICB9O1xuXG4gICAgLy8gUnVuIG9uIG1vdW50OlxuICAgIGNoZWNrU2NyZWVuU2l6ZSgpO1xuXG4gICAgLy8gQWxzbyB1cGRhdGUgaWYgdGhlIHVzZXIgcmVzaXplcyB0aGUgYnJvd3NlcjpcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2hlY2tTY3JlZW5TaXplKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNoZWNrU2NyZWVuU2l6ZSk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQpIHtcbiAgICAgIGRpc3BhdGNoKGZldGNoUG9pbnRzKGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQpKTtcbiAgICAgIGRpc3BhdGNoKGZldGNoRWRnZXMoZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCkpO1xuICAgICAgZGlzcGF0Y2goZmV0Y2hBcmVhcyhnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkUG9pbnQobnVsbCk7XG4gICAgfTtcbiAgfSwgW2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRdKTtcblxuICBjb25zdCBwb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgcG9pbnRzX2RhdGEuaXRlbXM/LmZpbHRlcihcbiAgICAgICAgKHBvaW50OiBJUG9pbnQpID0+IHBvaW50LmxhdGl0dWRlICYmIHBvaW50LmxvbmdpdHVkZSxcbiAgICAgICkgfHwgW11cbiAgICApO1xuICB9LCBbcG9pbnRzX2RhdGEuaXRlbXNdKTtcblxuICBjb25zdCBtb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcG9pbnRzLmZpbHRlcigocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQuaGFzX2RldmljZSkgfHwgW107XG4gIH0sIFtwb2ludHNdKTtcblxuICBjb25zdCBzaG93TGVmdFBhbmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMZWZ0UGFuZWxcbiAgICAgICAgcG9pbnRzPXttb25pdG9yZWRQb2ludHN9XG4gICAgICAgIHNlbGVjdGVkUG9pbnQ9e3NlbGVjdGVkUG9pbnR9XG4gICAgICAgIHNldFNlbGVjdGVkUG9pbnQ9e3NldFNlbGVjdGVkUG9pbnR9XG4gICAgICAvPlxuICAgICk7XG4gIH0sIFttb25pdG9yZWRQb2ludHMsIHNlbGVjdGVkUG9pbnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZFBvaW50KSB7XG4gICAgICBzZXRTaG93UmlnaHRQYW5lbCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U2hvd1JpZ2h0UGFuZWwoZmFsc2UpO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkUG9pbnRdKTtcblxuICBjb25zdCBvblJpZ2h0UGFuZWxDbG9zZSA9ICgpID0+IHtcbiAgICBzZXRTZWxlY3RlZFBvaW50KG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGdldERpc3RhbmNlID0gKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZFBvaW50ICYmIGVkZ2VzX2RhdGEuaXRlbXMpIHtcbiAgICAgIGNvbnN0IGVkZ2UgPSBlZGdlc19kYXRhLml0ZW1zLmZpbmQoXG4gICAgICAgIChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCA9PT0gc2VsZWN0ZWRQb2ludC5pZCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZWRnZT8uZGlzdGFuY2UgfHwgMDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgaWYgKGlzU21hbGxTY3JlZW4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEthbmRvQWxlcnQgdmFyaWFudD1cInN1Y2Nlc3NcIiBoZWFkZXI9XCJOb3RpY2VcIj5cbiAgICAgICAgPGg1PnsnVGhpcyBwYWdlIGlzIG5vdCBzdXBwb3J0ZWQgb24gc21hbGwgc2NyZWVucyd9PC9oNT5cbiAgICAgICAgPHA+eydQbGVhc2UgdXNlIGEgbGFyZ2VyIHNjcmVlbiBmb3IgdGhlIGJlc3QgZXhwZXJpZW5jZS4nfTwvcD5cbiAgICAgIDwvS2FuZG9BbGVydD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGZsdWlkIGNsYXNzTmFtZT1cInZoLTkwIHAtMFwiPlxuICAgICAgPFJvdz5cbiAgICAgICAgPENvbCBzbT17M30gY2xhc3NOYW1lPVwibGVmdC1wYW5lbFwiPlxuICAgICAgICAgIHtzaG93TGVmdFBhbmVsfVxuICAgICAgICA8L0NvbD5cbiAgICAgICAgPENvbCBjbGFzc05hbWU9XCJtYXAtY29sdW1uXCIgc209ezl9PlxuICAgICAgICAgIHshZWRnZXNfZGF0YS5pc0ZldGNoaW5nICYmICFhcmVhc19kYXRhLmlzRmV0Y2hpbmcgJiYgKFxuICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICBwb2ludHM9e3BvaW50c31cbiAgICAgICAgICAgICAgZWRnZXM9e2VkZ2VzX2RhdGEuaXRlbXN9XG4gICAgICAgICAgICAgIGFyZWFzPXthcmVhc19kYXRhLm5ld0FyZWFzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFBvaW50PXtzZWxlY3RlZFBvaW50fVxuICAgICAgICAgICAgICB1cGRhdGVTZWxlY3RlZFBvaW50PXtoYW5kbGVTZWxlY3RQb2ludH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8UmlnaHRQYW5lbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgcmlnaHQtcGFuZWwgJHtzaG93UmlnaHRQYW5lbCA/ICdvcGVuJyA6ICcnfWB9XG4gICAgICAgICAgICBwb2ludD17c2VsZWN0ZWRQb2ludH1cbiAgICAgICAgICAgIGRpc3RhbmNlPXtnZXREaXN0YW5jZSgpfVxuICAgICAgICAgICAgb25DbG9zZT17b25SaWdodFBhbmVsQ2xvc2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2w+XG4gICAgICA8L1Jvdz5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9wZXJhdGlvbnNQYWdlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQUEsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLElBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFXLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFZLFNBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFdBQUEsR0FBQWIsT0FBQTtBQUF5RCxTQUFBYyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQWIsd0JBQUFpQixHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsYUFBQUUsT0FBQSxDQUFBRixHQUFBLHlCQUFBQSxHQUFBLDRCQUFBRyxPQUFBLEVBQUFILEdBQUEsVUFBQUksS0FBQSxHQUFBVCx3QkFBQSxDQUFBQyxXQUFBLE9BQUFRLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFMLEdBQUEsWUFBQUksS0FBQSxDQUFBRSxHQUFBLENBQUFOLEdBQUEsU0FBQU8sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFaLEdBQUEsUUFBQVksR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixHQUFBLEVBQUFZLEdBQUEsU0FBQUksSUFBQSxHQUFBUixxQkFBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFYLEdBQUEsRUFBQVksR0FBQSxjQUFBSSxJQUFBLEtBQUFBLElBQUEsQ0FBQVYsR0FBQSxJQUFBVSxJQUFBLENBQUFDLEdBQUEsS0FBQVIsTUFBQSxDQUFBQyxjQUFBLENBQUFILE1BQUEsRUFBQUssR0FBQSxFQUFBSSxJQUFBLFlBQUFULE1BQUEsQ0FBQUssR0FBQSxJQUFBWixHQUFBLENBQUFZLEdBQUEsU0FBQUwsTUFBQSxDQUFBSixPQUFBLEdBQUFILEdBQUEsTUFBQUksS0FBQSxJQUFBQSxLQUFBLENBQUFhLEdBQUEsQ0FBQWpCLEdBQUEsRUFBQU8sTUFBQSxZQUFBQSxNQUFBO0FBRXpELElBQU1XLGNBQXdCLEdBQUcsU0FBM0JBLGNBQXdCQSxDQUFBLEVBQVM7RUFDckMsSUFBTUMsUUFBUSxHQUFHLElBQUFDLHVCQUFXLEVBQUMsQ0FBQztFQUM5QixJQUFNQyxXQUFXLEdBQUcsSUFBQUMsdUJBQVcsRUFBQyxVQUFDQyxLQUFLO0lBQUEsT0FBS0EsS0FBSyxDQUFDRixXQUFXO0VBQUEsRUFBQztFQUM3RCxJQUFNRyxVQUFVLEdBQUcsSUFBQUYsdUJBQVcsRUFBQyxVQUFDQyxLQUFLO0lBQUEsT0FBS0EsS0FBSyxDQUFDQyxVQUFVO0VBQUEsRUFBQztFQUMzRCxJQUFNQyxVQUFVLEdBQUcsSUFBQUgsdUJBQVcsRUFBQyxVQUFDQyxLQUFLO0lBQUEsT0FBS0EsS0FBSyxDQUFDRSxVQUFVO0VBQUEsRUFBQztFQUMzRCxJQUFNQyxXQUFXLEdBQUcsSUFBQUosdUJBQVcsRUFBQyxVQUFDQyxLQUFLO0lBQUEsT0FBS0EsS0FBSyxDQUFDRyxXQUFXO0VBQUEsRUFBQztFQUM3RCxJQUFBQyxTQUFBLEdBQTRDLElBQUFDLGVBQVEsRUFBQyxLQUFLLENBQUM7SUFBQUMsVUFBQSxPQUFBQyxlQUFBLENBQUEzQixPQUFBLEVBQUF3QixTQUFBO0lBQXBESSxjQUFjLEdBQUFGLFVBQUE7SUFBRUcsaUJBQWlCLEdBQUFILFVBQUE7RUFDeEMsSUFBQUksVUFBQSxHQUEwQyxJQUFBTCxlQUFRLEVBQWdCLElBQUksQ0FBQztJQUFBTSxVQUFBLE9BQUFKLGVBQUEsQ0FBQTNCLE9BQUEsRUFBQThCLFVBQUE7SUFBaEVFLGFBQWEsR0FBQUQsVUFBQTtJQUFFRSxnQkFBZ0IsR0FBQUYsVUFBQTtFQUN0QyxJQUFBRyxVQUFBLEdBQTBDLElBQUFULGVBQVEsRUFBQyxLQUFLLENBQUM7SUFBQVUsVUFBQSxPQUFBUixlQUFBLENBQUEzQixPQUFBLEVBQUFrQyxVQUFBO0lBQWxERSxhQUFhLEdBQUFELFVBQUE7SUFBRUUsZ0JBQWdCLEdBQUFGLFVBQUE7RUFFdEMsSUFBTUcsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsUUFBZ0IsRUFBSztJQUM5QyxJQUFJUCxhQUFhLElBQUlPLFFBQVEsQ0FBQ0MsRUFBRSxLQUFLUixhQUFhLENBQUNRLEVBQUUsRUFBRTtNQUNyRFAsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUMsTUFBTTtNQUNMQSxnQkFBZ0IsQ0FBQ00sUUFBUSxDQUFDO0lBQzVCO0VBQ0YsQ0FBQztFQUVELElBQUFFLGdCQUFTLEVBQUMsWUFBTTtJQUNkekIsUUFBUSxDQUFDLElBQUEwQix5QkFBZ0IsRUFBQztNQUFFQyxJQUFJLEVBQUU7SUFBYSxDQUFDLENBQUMsQ0FBQztJQUVsRCxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBUztNQUM1QlAsZ0JBQWdCLENBQUNRLE1BQU0sQ0FBQ0MsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7SUFFRDtJQUNBRixlQUFlLENBQUMsQ0FBQzs7SUFFakI7SUFDQUMsTUFBTSxDQUFDRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVILGVBQWUsQ0FBQztJQUNsRCxPQUFPLFlBQU07TUFDWEMsTUFBTSxDQUFDRyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVKLGVBQWUsQ0FBQztJQUN2RCxDQUFDO0VBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQUFILGdCQUFTLEVBQUMsWUFBTTtJQUNkLElBQUlsQixXQUFXLENBQUMwQixnQkFBZ0IsRUFBRTtNQUNoQ2pDLFFBQVEsQ0FBQyxJQUFBa0MscUJBQVcsRUFBQzNCLFdBQVcsQ0FBQzBCLGdCQUFnQixDQUFDLENBQUM7TUFDbkRqQyxRQUFRLENBQUMsSUFBQW1DLG9CQUFVLEVBQUM1QixXQUFXLENBQUMwQixnQkFBZ0IsQ0FBQyxDQUFDO01BQ2xEakMsUUFBUSxDQUFDLElBQUFvQyxvQkFBVSxFQUFDN0IsV0FBVyxDQUFDMEIsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRDtJQUVBLE9BQU8sWUFBTTtNQUNYaEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ1YsV0FBVyxDQUFDMEIsZ0JBQWdCLENBQUMsQ0FBQztFQUVsQyxJQUFNSSxNQUFNLEdBQUcsSUFBQUMsY0FBTyxFQUFDLFlBQU07SUFBQSxJQUFBQyxrQkFBQTtJQUMzQixPQUNFLEVBQUFBLGtCQUFBLEdBQUFyQyxXQUFXLENBQUNzQyxLQUFLLGNBQUFELGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJFLE1BQU0sQ0FDdkIsVUFBQ0MsS0FBYTtNQUFBLE9BQUtBLEtBQUssQ0FBQ0MsUUFBUSxJQUFJRCxLQUFLLENBQUNFLFNBQVM7SUFBQSxDQUN0RCxDQUFDLEtBQUksRUFBRTtFQUVYLENBQUMsRUFBRSxDQUFDMUMsV0FBVyxDQUFDc0MsS0FBSyxDQUFDLENBQUM7RUFFdkIsSUFBTUssZUFBZSxHQUFHLElBQUFQLGNBQU8sRUFBQyxZQUFNO0lBQ3BDLE9BQU9ELE1BQU0sQ0FBQ0ksTUFBTSxDQUFDLFVBQUNDLEtBQWE7TUFBQSxPQUFLQSxLQUFLLENBQUNJLFVBQVU7SUFBQSxFQUFDLElBQUksRUFBRTtFQUNqRSxDQUFDLEVBQUUsQ0FBQ1QsTUFBTSxDQUFDLENBQUM7RUFFWixJQUFNVSxhQUFhLEdBQUcsSUFBQVQsY0FBTyxFQUFDLFlBQU07SUFDbEMsb0JBQ0UzRSxNQUFBLENBQUFxQixPQUFBLENBQUFnRSxhQUFBLENBQUM3RSxVQUFBLENBQUFhLE9BQVM7TUFDUnFELE1BQU0sRUFBRVEsZUFBZ0I7TUFDeEI3QixhQUFhLEVBQUVBLGFBQWM7TUFDN0JDLGdCQUFnQixFQUFFQTtJQUFpQixDQUNwQyxDQUFDO0VBRU4sQ0FBQyxFQUFFLENBQUM0QixlQUFlLEVBQUU3QixhQUFhLENBQUMsQ0FBQztFQUVwQyxJQUFBUyxnQkFBUyxFQUFDLFlBQU07SUFDZCxJQUFJVCxhQUFhLEVBQUU7TUFDakJILGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDLE1BQU07TUFDTEEsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQzFCO0VBQ0YsQ0FBQyxFQUFFLENBQUNHLGFBQWEsQ0FBQyxDQUFDO0VBRW5CLElBQU1pQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBLEVBQVM7SUFDOUJoQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7RUFDeEIsQ0FBQztFQUVELElBQU1pQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQSxFQUFTO0lBQ3hCLElBQUlsQyxhQUFhLElBQUlYLFVBQVUsQ0FBQ21DLEtBQUssRUFBRTtNQUNyQyxJQUFNVyxJQUFJLEdBQUc5QyxVQUFVLENBQUNtQyxLQUFLLENBQUNZLElBQUksQ0FDaEMsVUFBQ0QsSUFBSTtRQUFBLE9BQUtBLElBQUksQ0FBQ0UsZUFBZSxLQUFLckMsYUFBYSxDQUFDUSxFQUFFO01BQUEsQ0FDckQsQ0FBQztNQUNELE9BQU8sQ0FBQTJCLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFRyxRQUFRLEtBQUksQ0FBQztJQUM1QjtJQUNBLE9BQU8sQ0FBQztFQUNWLENBQUM7RUFFRCxJQUFJbEMsYUFBYSxFQUFFO0lBQ2pCLG9CQUNFekQsTUFBQSxDQUFBcUIsT0FBQSxDQUFBZ0UsYUFBQSxDQUFDekUsV0FBQSxDQUFBZ0YsVUFBVTtNQUFDQyxPQUFPLEVBQUMsU0FBUztNQUFDQyxNQUFNLEVBQUM7SUFBUSxnQkFDM0M5RixNQUFBLENBQUFxQixPQUFBLENBQUFnRSxhQUFBLGFBQUssNkNBQWtELENBQUMsZUFDeERyRixNQUFBLENBQUFxQixPQUFBLENBQUFnRSxhQUFBLFlBQUkscURBQXlELENBQ25ELENBQUM7RUFFakI7RUFFQSxvQkFDRXJGLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQWdFLGFBQUEsQ0FBQ2xGLGVBQUEsQ0FBQTRGLFNBQVM7SUFBQ0MsS0FBSztJQUFDQyxTQUFTLEVBQUM7RUFBVyxnQkFDcENqRyxNQUFBLENBQUFxQixPQUFBLENBQUFnRSxhQUFBLENBQUNsRixlQUFBLENBQUErRixHQUFHLHFCQUNGbEcsTUFBQSxDQUFBcUIsT0FBQSxDQUFBZ0UsYUFBQSxDQUFDbEYsZUFBQSxDQUFBZ0csR0FBRztJQUFDQyxFQUFFLEVBQUUsQ0FBRTtJQUFDSCxTQUFTLEVBQUM7RUFBWSxHQUMvQmIsYUFDRSxDQUFDLGVBQ05wRixNQUFBLENBQUFxQixPQUFBLENBQUFnRSxhQUFBLENBQUNsRixlQUFBLENBQUFnRyxHQUFHO0lBQUNGLFNBQVMsRUFBQyxZQUFZO0lBQUNHLEVBQUUsRUFBRTtFQUFFLEdBQy9CLENBQUMxRCxVQUFVLENBQUMyRCxVQUFVLElBQUksQ0FBQzFELFVBQVUsQ0FBQzBELFVBQVUsaUJBQy9DckcsTUFBQSxDQUFBcUIsT0FBQSxDQUFBZ0UsYUFBQSxDQUFDOUUsSUFBQSxDQUFBK0YsR0FBRztJQUNGNUIsTUFBTSxFQUFFQSxNQUFPO0lBQ2Y2QixLQUFLLEVBQUU3RCxVQUFVLENBQUNtQyxLQUFNO0lBQ3hCMkIsS0FBSyxFQUFFN0QsVUFBVSxDQUFDOEQsUUFBUztJQUMzQnBELGFBQWEsRUFBRUEsYUFBYztJQUM3QnFELG1CQUFtQixFQUFFL0M7RUFBa0IsQ0FDeEMsQ0FDRixlQUNEM0QsTUFBQSxDQUFBcUIsT0FBQSxDQUFBZ0UsYUFBQSxDQUFDM0UsV0FBQSxDQUFBVyxPQUFVO0lBQ1Q0RSxTQUFTLGlCQUFBVSxNQUFBLENBQWlCMUQsY0FBYyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUc7SUFDekQ4QixLQUFLLEVBQUUxQixhQUFjO0lBQ3JCc0MsUUFBUSxFQUFFSixXQUFXLENBQUMsQ0FBRTtJQUN4QnFCLE9BQU8sRUFBRXRCO0VBQWtCLENBQzVCLENBQ0UsQ0FDRixDQUNJLENBQUM7QUFFaEIsQ0FBQztBQUFDLElBQUF1QixRQUFBLEdBRWF6RSxjQUFjO0FBQUEwRSxPQUFBLENBQUF6RixPQUFBLEdBQUF3RixRQUFBIn0=
143
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdEJvb3RzdHJhcCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX2FjdGlvbnMzIiwiX2FjdGlvbnM0IiwiX01hcCIsIl9MZWZ0UGFuZWwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1JpZ2h0UGFuZWwiLCJfS2FuZG9BbGVydCIsIl9Mb2FkZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIk9wZXJhdGlvbnNQYWdlIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsInBvaW50c19kYXRhIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImVkZ2VzX2RhdGEiLCJhcmVhc19kYXRhIiwiZ2xvYmFsX2RhdGEiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzaG93UmlnaHRQYW5lbCIsInNldFNob3dSaWdodFBhbmVsIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzZWxlY3RlZFBvaW50Iiwic2V0U2VsZWN0ZWRQb2ludCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNTbWFsbFNjcmVlbiIsInNldElzU21hbGxTY3JlZW4iLCJoYW5kbGVTZWxlY3RQb2ludCIsIm5ld1BvaW50IiwiaWQiLCJ1c2VFZmZlY3QiLCJ1cGRhdGVOYXZDb250ZXh0IiwibmFtZSIsImNoZWNrU2NyZWVuU2l6ZSIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIndhdGVyQXV0aG9yaXR5SWQiLCJmZXRjaFBvaW50cyIsImZldGNoRWRnZXMiLCJmZXRjaEFyZWFzIiwiY2xlYXJQb2ludHMiLCJwb2ludHMiLCJ1c2VNZW1vIiwiX3BvaW50c19kYXRhJGl0ZW1zIiwiaXRlbXMiLCJmaWx0ZXIiLCJwb2ludCIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibW9uaXRvcmVkUG9pbnRzIiwiaGFzX2RldmljZSIsInNob3dMZWZ0UGFuZWwiLCJjcmVhdGVFbGVtZW50Iiwib25SaWdodFBhbmVsQ2xvc2UiLCJLYW5kb0FsZXJ0IiwidmFyaWFudCIsImhlYWRlciIsIkNvbnRhaW5lciIsImZsdWlkIiwiY2xhc3NOYW1lIiwiUm93IiwiQ29sIiwic20iLCJpc0ZldGNoaW5nIiwiTG9hZGVyIiwiTWFwIiwiZWRnZXMiLCJhcmVhcyIsIm5ld0FyZWFzIiwidXBkYXRlU2VsZWN0ZWRQb2ludCIsImNvbmNhdCIsIm9uQ2xvc2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvT3BlcmF0aW9uc1BhZ2UvT3BlcmF0aW9uc1BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9PcGVyYXRpb25zUGFnZS5zY3NzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgQ29sLCBDb250YWluZXIsIFJvdyB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCc7XG5pbXBvcnQgeyB1cGRhdGVOYXZDb250ZXh0IH0gZnJvbSAnc3JjL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBjbGVhclBvaW50cywgZmV0Y2hQb2ludHMgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hFZGdlcyB9IGZyb20gJ3NyYy9zdG9yZS9lZGdlcy9hY3Rpb25zJztcbmltcG9ydCB7IGZldGNoQXJlYXMgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvYWN0aW9ucyc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi9NYXAvTWFwJztcbmltcG9ydCBMZWZ0UGFuZWwgZnJvbSAnLi9MZWZ0UGFuZWwnO1xuaW1wb3J0IFJpZ2h0UGFuZWwgZnJvbSAnLi9SaWdodFBhbmVsJztcbmltcG9ydCB7IEthbmRvQWxlcnQgfSBmcm9tICdzcmMvdWkta2l0L0FsZXJ0L0thbmRvQWxlcnQnO1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vRGFzaGJvYXJkTWFwL0xvYWRlcic7XG5cbmNvbnN0IE9wZXJhdGlvbnNQYWdlOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBwb2ludHNfZGF0YSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucG9pbnRzX2RhdGEpO1xuICBjb25zdCBlZGdlc19kYXRhID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5lZGdlc19kYXRhKTtcbiAgY29uc3QgYXJlYXNfZGF0YSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUuYXJlYXNfZGF0YSk7XG4gIGNvbnN0IGdsb2JhbF9kYXRhID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YSk7XG4gIGNvbnN0IFtzaG93UmlnaHRQYW5lbCwgc2V0U2hvd1JpZ2h0UGFuZWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRQb2ludCwgc2V0U2VsZWN0ZWRQb2ludF0gPSB1c2VTdGF0ZTxJUG9pbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2lzU21hbGxTY3JlZW4sIHNldElzU21hbGxTY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBvaW50ID0gKG5ld1BvaW50OiBJUG9pbnQpID0+IHtcbiAgICBpZiAobmV3UG9pbnQgPT09IG51bGwgfHwgbmV3UG9pbnQuaWQgPT09IHNlbGVjdGVkUG9pbnQ/LmlkKSB7XG4gICAgICBzZXRTZWxlY3RlZFBvaW50KG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTZWxlY3RlZFBvaW50KG5ld1BvaW50KTtcbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkaXNwYXRjaCh1cGRhdGVOYXZDb250ZXh0KHsgbmFtZTogJ29wZXJhdGlvbnMnIH0pKTtcblxuICAgIGNvbnN0IGNoZWNrU2NyZWVuU2l6ZSA9ICgpID0+IHtcbiAgICAgIHNldElzU21hbGxTY3JlZW4od2luZG93LmlubmVyV2lkdGggPCA3NjgpOyAvLyBvciBhbnkgYnJlYWtwb2ludFxuICAgIH07XG5cbiAgICAvLyBSdW4gb24gbW91bnQ6XG4gICAgY2hlY2tTY3JlZW5TaXplKCk7XG5cbiAgICAvLyBBbHNvIHVwZGF0ZSBpZiB0aGUgdXNlciByZXNpemVzIHRoZSBicm93c2VyOlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjaGVja1NjcmVlblNpemUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2hlY2tTY3JlZW5TaXplKTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCkge1xuICAgICAgZGlzcGF0Y2goZmV0Y2hQb2ludHMoZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCwgJycsIHRydWUpKTtcbiAgICAgIGRpc3BhdGNoKGZldGNoRWRnZXMoZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCkpO1xuICAgICAgZGlzcGF0Y2goZmV0Y2hBcmVhcyhnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNldFNlbGVjdGVkUG9pbnQobnVsbCk7XG4gICAgICBkaXNwYXRjaChjbGVhclBvaW50cygpKTtcbiAgICB9O1xuICB9LCBbZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIGNvbnN0IHBvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBwb2ludHNfZGF0YS5pdGVtcz8uZmlsdGVyKFxuICAgICAgICAocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQubGF0aXR1ZGUgJiYgcG9pbnQubG9uZ2l0dWRlLFxuICAgICAgKSB8fCBbXVxuICAgICk7XG4gIH0sIFtwb2ludHNfZGF0YS5pdGVtc10pO1xuXG4gIGNvbnN0IG1vbml0b3JlZFBvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwb2ludHMuZmlsdGVyKChwb2ludDogSVBvaW50KSA9PiBwb2ludC5oYXNfZGV2aWNlKSB8fCBbXTtcbiAgfSwgW3BvaW50c10pO1xuXG4gIGNvbnN0IHNob3dMZWZ0UGFuZWwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPExlZnRQYW5lbFxuICAgICAgICBwb2ludHM9e21vbml0b3JlZFBvaW50c31cbiAgICAgICAgc2VsZWN0ZWRQb2ludD17c2VsZWN0ZWRQb2ludH1cbiAgICAgICAgc2V0U2VsZWN0ZWRQb2ludD17aGFuZGxlU2VsZWN0UG9pbnR9XG4gICAgICAvPlxuICAgICk7XG4gIH0sIFttb25pdG9yZWRQb2ludHMsIHNlbGVjdGVkUG9pbnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZFBvaW50KSB7XG4gICAgICBzZXRTaG93UmlnaHRQYW5lbCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U2hvd1JpZ2h0UGFuZWwoZmFsc2UpO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkUG9pbnRdKTtcblxuICBjb25zdCBvblJpZ2h0UGFuZWxDbG9zZSA9ICgpID0+IHtcbiAgICBzZXRTZWxlY3RlZFBvaW50KG51bGwpO1xuICB9O1xuXG4gIGlmIChpc1NtYWxsU2NyZWVuKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxLYW5kb0FsZXJ0IHZhcmlhbnQ9XCJzdWNjZXNzXCIgaGVhZGVyPVwiTm90aWNlXCI+XG4gICAgICAgIDxoNT57J1RoaXMgcGFnZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHNtYWxsIHNjcmVlbnMnfTwvaDU+XG4gICAgICAgIDxwPnsnUGxlYXNlIHVzZSBhIGxhcmdlciBzY3JlZW4gZm9yIHRoZSBiZXN0IGV4cGVyaWVuY2UuJ308L3A+XG4gICAgICA8L0thbmRvQWxlcnQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBmbHVpZCBjbGFzc05hbWU9XCJ2aC05MCBwLTBcIj5cbiAgICAgIDxSb3c+XG4gICAgICAgIDxDb2wgc209ezN9IGNsYXNzTmFtZT1cImxlZnQtcGFuZWxcIj5cbiAgICAgICAgICB7c2hvd0xlZnRQYW5lbH1cbiAgICAgICAgPC9Db2w+XG4gICAgICAgIDxDb2wgY2xhc3NOYW1lPVwibWFwLWNvbHVtblwiIHNtPXs5fT5cbiAgICAgICAgICB7ZWRnZXNfZGF0YS5pc0ZldGNoaW5nIHx8IGFyZWFzX2RhdGEuaXNGZXRjaGluZyA/IChcbiAgICAgICAgICAgIDxMb2FkZXIgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICBwb2ludHM9e3BvaW50c31cbiAgICAgICAgICAgICAgZWRnZXM9e2VkZ2VzX2RhdGEuaXRlbXN9XG4gICAgICAgICAgICAgIGFyZWFzPXthcmVhc19kYXRhLm5ld0FyZWFzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFBvaW50PXtzZWxlY3RlZFBvaW50fVxuICAgICAgICAgICAgICB1cGRhdGVTZWxlY3RlZFBvaW50PXtoYW5kbGVTZWxlY3RQb2ludH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8UmlnaHRQYW5lbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgcmlnaHQtcGFuZWwgJHtzaG93UmlnaHRQYW5lbCA/ICdvcGVuJyA6ICcnfWB9XG4gICAgICAgICAgICBwb2ludD17c2VsZWN0ZWRQb2ludH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uUmlnaHRQYW5lbENsb3NlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ29sPlxuICAgICAgPC9Sb3c+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcGVyYXRpb25zUGFnZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUFBLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxTQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxJQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFDLHNCQUFBLENBQUFYLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFELHNCQUFBLENBQUFYLE9BQUE7QUFDQSxJQUFBYSxXQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxPQUFBLEdBQUFkLE9BQUE7QUFBZ0QsU0FBQWUseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlB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