@kando-env/kando-ui 1.2.412-alpha.9 → 1.2.412

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.
Files changed (44) hide show
  1. package/lib/Widgets/EventsRow/EventsRow.js +3 -3
  2. package/lib/Widgets/Map/Map.js +100 -128
  3. package/lib/Widgets/Map/MapUtils.js +18 -10
  4. package/lib/Widgets/Map/areas/AreaPolygon.js +24 -23
  5. package/lib/Widgets/Map/edges/Edge.js +7 -7
  6. package/lib/Widgets/Map/events/Event.js +6 -2
  7. package/lib/Widgets/Map/events/EventIndicator.js +7 -7
  8. package/lib/Widgets/Map/events/EventPath.js +3 -3
  9. package/lib/Widgets/Map/events/EventUtils.js +5 -5
  10. package/lib/Widgets/Map/points/PointMarker.js +3 -10
  11. package/lib/Widgets/Map/points/PointMarkers.js +25 -15
  12. package/lib/Widgets/Map/points/PointUtils.js +16 -32
  13. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  14. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +3 -4
  15. package/lib/components/Header/InfoBar/InfoBar.js +9 -9
  16. package/lib/components/Map/Map.js +5 -6
  17. package/lib/components/SevereEvent/SevereEvent.js +2 -3
  18. package/lib/i18n/en.json +1 -2
  19. package/lib/i18n/en_uk.json +5 -2
  20. package/lib/macros/getVersion.js +2 -2
  21. package/lib/pages/DashboardMap/FactoryCard.js +5 -2
  22. package/lib/pages/DashboardMap/List.js +69 -77
  23. package/lib/pages/DashboardMap/SeverityBadge.js +3 -7
  24. package/lib/pages/DashboardMap/WWTPMap.js +5 -6
  25. package/lib/pages/EventsPage/Body/Body.js +17 -17
  26. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +5 -4
  27. package/lib/pages/EventsPage/events/Sidebar.js +11 -12
  28. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +22 -21
  29. package/lib/pages/EventsPage/events/event_info/Header/Header.js +1 -1
  30. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +1 -1
  31. package/lib/pages/EventsPage/events/event_info/Header/index.js +1 -1
  32. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +1 -1
  33. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +1 -1
  34. package/lib/pages/EventsPage/events/events_list/EventsList.js +2 -2
  35. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +5 -7
  36. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +2 -2
  37. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +11 -9
  38. package/lib/test/mocks/browser.js +1 -1
  39. package/lib/test/test-utils.js +1 -1
  40. package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -1
  41. package/lib/utilities/Analytics.js +27 -34
  42. package/lib/utilities/scoreToData.js +3 -7
  43. package/lib/utilities/scoreToData.test.js +1 -1
  44. package/package.json +1 -1
@@ -70,10 +70,10 @@ var EventsRow = function EventsRow(_ref) {
70
70
  }, response && eventsArr.length === 0 ? /*#__PURE__*/_react.default.createElement(NoEventsComponent, null) : eventsArr.map(function (event, index) {
71
71
  var data = parseEventData(event);
72
72
  return /*#__PURE__*/_react.default.createElement("div", {
73
- key: "event-container-".concat(event.id),
73
+ key: "olse-$(index)",
74
74
  className: "ol-severe-event"
75
75
  }, /*#__PURE__*/_react.default.createElement(_OptionalLinkedSevereEvent.default, {
76
- key: "event-".concat(event.id),
76
+ key: index,
77
77
  event: event,
78
78
  total: data.total,
79
79
  firstseen: data.firstseen,
@@ -96,4 +96,4 @@ var NoEventsComponent = (0, _styledComponents.default)(_NoEvents.default).withCo
96
96
  displayName: "EventsRow__NoEventsComponent",
97
97
  componentId: "sc-6myj56-1"
98
98
  })(["min-height:unset;height:100%;border:1px solid #d0d0d0;box-sizing:border-box;border-radius:6px;"]);
99
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZGF5anMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0YyIsIl9yZWFjdFJlZHV4IiwiX05vRXZlbnRzIiwiX09wdGlvbmFsTGlua2VkU2V2ZXJlRXZlbnQiLCJfRGF0YUxvYWRlckVycm9yIiwiX1NwaW5uZXIiLCJfVXRpbGl0eURhc2hib2FyZCIsIl91c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnkiLCJfRXZlbnRVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiRXZlbnRzUm93IiwiX3JlZiIsImVuZHBvaW50IiwiX3JlZiRldmVudFBhcmFtcyIsImV2ZW50UGFyYW1zIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZXZlbnRzQXJyIiwic2V0RXZlbnRzQXJyIiwibG9jYWxlIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwiX3VzZUFwaVdpdGhEYXNoYm9hcmRRIiwidXNlQXBpV2l0aERhc2hib2FyZFF1ZXJ5IiwiX3VzZUFwaVdpdGhEYXNoYm9hcmRRMiIsInJlc3BvbnNlIiwiaXNMb2FkaW5nIiwiZXJyb3IiLCJ1c2VFZmZlY3QiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZXZlbnRzIiwic2xpY2UiLCJwYXJzZUV2ZW50RGF0YSIsImV2ZW50IiwibGFzdHNlZW4iLCJsYXN0U2Vlbk9ic2VydmF0aW9uIiwiZmlyc3RzZWVuIiwiZmlyc3RTZWVuT2JzZXJ2YXRpb24iLCJkaWZmIiwibGFzdF9zZWVuX3RpbWUiLCJzdGFydF90aW1lIiwiZGF5anMiLCJleHRlbmQiLCJ1dGMiLCJtYXBwZWRFdmVudCIsInRvdGFsIiwiZm9ybWF0IiwiY3JlYXRlRWxlbWVudCIsIkNvbnRhaW5lciIsIkRhdGFMb2FkZXJFcnJvciIsIlNwaW5uZXJIb2xkZXIiLCJTcGlubmVyIiwiY2xhc3NOYW1lIiwiY29uY2F0IiwibGVuZ3RoIiwiTm9FdmVudHNDb21wb25lbnQiLCJtYXAiLCJpbmRleCIsImlkIiwibXNnIiwidmFsdWVzRnJvbUtRTCIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiTm9FdmVudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvV2lkZ2V0cy9FdmVudHNSb3cvRXZlbnRzUm93LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcblxuaW1wb3J0IE5vRXZlbnRzIGZyb20gJ3NyYy9wYWdlcy9VdGlsaXR5RGFzaGJvYXJkUGFnZS9Nb3N0U2V2ZXJlRXZlbnRzL05vRXZlbnRzL05vRXZlbnRzJztcbmltcG9ydCBPcHRpb25hbExpbmtlZFNldmVyZUV2ZW50IGZyb20gJ3NyYy9wYWdlcy9VdGlsaXR5RGFzaGJvYXJkUGFnZS9Nb3N0U2V2ZXJlRXZlbnRzL1NldmVyZUV2ZW50L09wdGlvbmFsTGlua2VkU2V2ZXJlRXZlbnQnO1xuaW1wb3J0IHsgRGF0YUxvYWRlckVycm9yIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvRGF0YUxvYWRlckVycm9yL0RhdGFMb2FkZXJFcnJvcic7XG5pbXBvcnQgeyBJRXZlbnQsIElFdmVudHNSZXNwb25zZSB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFNwaW5uZXJIb2xkZXIgfSBmcm9tICdzcmMvcGFnZXMvVXRpbGl0eURhc2hib2FyZFBhZ2UvVXRpbGl0eURhc2hib2FyZCc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnc3JjL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IHVzZUFwaVdpdGhEYXNoYm9hcmRRdWVyeSB9IGZyb20gJ3NyYy9ob29rcy91c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnknO1xuaW1wb3J0IHtcbiAgZmlyc3RTZWVuT2JzZXJ2YXRpb24sXG4gIGxhc3RTZWVuT2JzZXJ2YXRpb24sXG59IGZyb20gJy4uLy4uL3BhZ2VzL0V2ZW50c1BhZ2UvZXZlbnRzL2V2ZW50c19saXN0L0V2ZW50VXRpbHMnO1xuXG5pbnRlcmZhY2UgRXZlbnRzUm93UHJvcHMge1xuICBlbmRwb2ludDogc3RyaW5nO1xuICBldmVudFBhcmFtcz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY29uc3QgRXZlbnRzUm93OiBSZWFjdC5GQzxFdmVudHNSb3dQcm9wcz4gPSAoe1xuICBlbmRwb2ludCxcbiAgZXZlbnRQYXJhbXMgPSB7fSxcbn0pID0+IHtcbiAgY29uc3QgW2V2ZW50c0Fyciwgc2V0RXZlbnRzQXJyXSA9IHVzZVN0YXRlPElFdmVudFtdPihbXSk7XG4gIGNvbnN0IGxvY2FsZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+XG4gICAgICBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlLFxuICApO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3QgW3Jlc3BvbnNlLCBpc0xvYWRpbmcsIGVycm9yXSA9XG4gICAgdXNlQXBpV2l0aERhc2hib2FyZFF1ZXJ5PElFdmVudHNSZXNwb25zZT4oZW5kcG9pbnQsIGV2ZW50UGFyYW1zKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNwb25zZT8uZGF0YSAmJiAhZXJyb3IgJiYgQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhLmV2ZW50cykpIHtcbiAgICAgIHNldEV2ZW50c0FycihyZXNwb25zZS5kYXRhLmV2ZW50cy5zbGljZSgwLCA0KSk7XG4gICAgfVxuICB9LCBbcmVzcG9uc2VdKTtcblxuICAvLyBUaGlzIGhvbGRzIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3Qgc2VlbiBvZiB0aGUgZXZlbnRcbiAgY29uc3QgcGFyc2VFdmVudERhdGEgPSAoZXZlbnQ6IElFdmVudCkgPT4ge1xuICAgIGNvbnN0IGxhc3RzZWVuID0gbGFzdFNlZW5PYnNlcnZhdGlvbihldmVudCk7XG5cbiAgICBjb25zdCBmaXJzdHNlZW4gPSBmaXJzdFNlZW5PYnNlcnZhdGlvbihldmVudCk7XG5cbiAgICBjb25zdCBkaWZmID0gbGFzdHNlZW4ubGFzdF9zZWVuX3RpbWUgLSBmaXJzdHNlZW4uc3RhcnRfdGltZTtcbiAgICBkYXlqcy5leHRlbmQodXRjKTtcblxuICAgIGNvbnN0IG1hcHBlZEV2ZW50OiBhbnkgPSB7XG4gICAgICBsYXN0c2VlbixcbiAgICAgIGZpcnN0c2VlbixcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdG90YWw6IGRheWpzLnV0YyhkaWZmICogMTAwMCkuZm9ybWF0KCdISDptbTpzcycpLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcHBlZEV2ZW50O1xuICB9O1xuXG4gIGlmIChpc0xvYWRpbmcgJiYgIWVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb250YWluZXI+XG4gICAgICAgIDxEYXRhTG9hZGVyRXJyb3IgaXNMb2FkaW5nPXtpc0xvYWRpbmd9IGRhdGE9e2V2ZW50c0Fycn0gZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgICA8U3Bpbm5lckhvbGRlcj5cbiAgICAgICAgICAgIDxTcGlubmVyIC8+XG4gICAgICAgICAgPC9TcGlubmVySG9sZGVyPlxuICAgICAgICA8L0RhdGFMb2FkZXJFcnJvcj5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtgZXZlbnQtcm93LSR7bG9jYWxlfWB9PlxuICAgICAge3Jlc3BvbnNlICYmIGV2ZW50c0Fyci5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgIDxOb0V2ZW50c0NvbXBvbmVudCAvPlxuICAgICAgKSA6IChcbiAgICAgICAgZXZlbnRzQXJyLm1hcCgoZXZlbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHBhcnNlRXZlbnREYXRhKGV2ZW50KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2BldmVudC1jb250YWluZXItJHtldmVudC5pZH1gfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvbC1zZXZlcmUtZXZlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8T3B0aW9uYWxMaW5rZWRTZXZlcmVFdmVudFxuICAgICAgICAgICAgICAgIGtleT17YGV2ZW50LSR7ZXZlbnQuaWR9YH1cbiAgICAgICAgICAgICAgICBldmVudD17ZXZlbnR9XG4gICAgICAgICAgICAgICAgdG90YWw9e2RhdGEudG90YWx9XG4gICAgICAgICAgICAgICAgZmlyc3RzZWVuPXtkYXRhLmZpcnN0c2Vlbn1cbiAgICAgICAgICAgICAgICBsYXN0c2Vlbj17ZGF0YS5sYXN0c2Vlbn1cbiAgICAgICAgICAgICAgICBtc2c9XCJcIlxuICAgICAgICAgICAgICAgIHZhbHVlc0Zyb21LUUw9e2V2ZW50UGFyYW1zLnZhbHVlc0Zyb21LUUx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYuYXR0cnMoKCkgPT4gKHtcbiAgbG9jYWxlOiAndGV4dCcsXG59KSlgXG4gIGhlaWdodDogY2FsYygxMDAlIC0gNjNweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBnYXA6IDI0cHg7XG5cbiAgLm9sLXNldmVyZS1ldmVudCB7XG4gICAgd2lkdGg6IDQwNHB4O1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgJi5ldmVudC1yb3ctaGUge1xuICAgIC5vbC1zZXZlcmUtZXZlbnQge1xuICAgICAgbWFyZ2luOiAwIDAgMCAxLjMyJTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICB9XG5gO1xuXG5jb25zdCBOb0V2ZW50c0NvbXBvbmVudCA9IHN0eWxlZChOb0V2ZW50cylgXG4gIG1pbi1oZWlnaHQ6IHVuc2V0O1xuICBoZWlnaHQ6IDEwMCU7XG5cbiAgYm9yZGVyOiAxcHggc29saWQgI2QwZDBkMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJv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
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZGF5anMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0YyIsIl9yZWFjdFJlZHV4IiwiX05vRXZlbnRzIiwiX09wdGlvbmFsTGlua2VkU2V2ZXJlRXZlbnQiLCJfRGF0YUxvYWRlckVycm9yIiwiX1NwaW5uZXIiLCJfVXRpbGl0eURhc2hib2FyZCIsIl91c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnkiLCJfRXZlbnRVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiRXZlbnRzUm93IiwiX3JlZiIsImVuZHBvaW50IiwiX3JlZiRldmVudFBhcmFtcyIsImV2ZW50UGFyYW1zIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZXZlbnRzQXJyIiwic2V0RXZlbnRzQXJyIiwibG9jYWxlIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwiX3VzZUFwaVdpdGhEYXNoYm9hcmRRIiwidXNlQXBpV2l0aERhc2hib2FyZFF1ZXJ5IiwiX3VzZUFwaVdpdGhEYXNoYm9hcmRRMiIsInJlc3BvbnNlIiwiaXNMb2FkaW5nIiwiZXJyb3IiLCJ1c2VFZmZlY3QiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZXZlbnRzIiwic2xpY2UiLCJwYXJzZUV2ZW50RGF0YSIsImV2ZW50IiwibGFzdHNlZW4iLCJsYXN0U2Vlbk9ic2VydmF0aW9uIiwiZmlyc3RzZWVuIiwiZmlyc3RTZWVuT2JzZXJ2YXRpb24iLCJkaWZmIiwibGFzdF9zZWVuX3RpbWUiLCJzdGFydF90aW1lIiwiZGF5anMiLCJleHRlbmQiLCJ1dGMiLCJtYXBwZWRFdmVudCIsInRvdGFsIiwiZm9ybWF0IiwiY3JlYXRlRWxlbWVudCIsIkNvbnRhaW5lciIsIkRhdGFMb2FkZXJFcnJvciIsIlNwaW5uZXJIb2xkZXIiLCJTcGlubmVyIiwiY2xhc3NOYW1lIiwiY29uY2F0IiwibGVuZ3RoIiwiTm9FdmVudHNDb21wb25lbnQiLCJtYXAiLCJpbmRleCIsIm1zZyIsInZhbHVlc0Zyb21LUUwiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIk5vRXZlbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL1dpZGdldHMvRXZlbnRzUm93L0V2ZW50c1Jvdy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cy9tYWNybyc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBOb0V2ZW50cyBmcm9tICdzcmMvcGFnZXMvVXRpbGl0eURhc2hib2FyZFBhZ2UvTW9zdFNldmVyZUV2ZW50cy9Ob0V2ZW50cy9Ob0V2ZW50cyc7XG5pbXBvcnQgT3B0aW9uYWxMaW5rZWRTZXZlcmVFdmVudCBmcm9tICdzcmMvcGFnZXMvVXRpbGl0eURhc2hib2FyZFBhZ2UvTW9zdFNldmVyZUV2ZW50cy9TZXZlcmVFdmVudC9PcHRpb25hbExpbmtlZFNldmVyZUV2ZW50JztcbmltcG9ydCB7IERhdGFMb2FkZXJFcnJvciB9IGZyb20gJ3NyYy9jb21wb25lbnRzL0RhdGFMb2FkZXJFcnJvci9EYXRhTG9hZGVyRXJyb3InO1xuaW1wb3J0IHsgSUV2ZW50LCBJRXZlbnRzUmVzcG9uc2UgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJ3NyYy9jb21wb25lbnRzL1NwaW5uZXIvU3Bpbm5lcic7XG5pbXBvcnQgeyBTcGlubmVySG9sZGVyIH0gZnJvbSAnc3JjL3BhZ2VzL1V0aWxpdHlEYXNoYm9hcmRQYWdlL1V0aWxpdHlEYXNoYm9hcmQnO1xuaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJ3NyYy9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyB1c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnkgfSBmcm9tICdzcmMvaG9va3MvdXNlQXBpV2l0aERhc2hib2FyZFF1ZXJ5JztcbmltcG9ydCB7XG4gIGZpcnN0U2Vlbk9ic2VydmF0aW9uLFxuICBsYXN0U2Vlbk9ic2VydmF0aW9uLFxufSBmcm9tICcuLi8uLi9wYWdlcy9FdmVudHNQYWdlL2V2ZW50cy9ldmVudHNfbGlzdC9FdmVudFV0aWxzJztcblxuaW50ZXJmYWNlIEV2ZW50c1Jvd1Byb3BzIHtcbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgZXZlbnRQYXJhbXM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IEV2ZW50c1JvdzogUmVhY3QuRkM8RXZlbnRzUm93UHJvcHM+ID0gKHtcbiAgZW5kcG9pbnQsXG4gIGV2ZW50UGFyYW1zID0ge30sXG59KSA9PiB7XG4gIGNvbnN0IFtldmVudHNBcnIsIHNldEV2ZW50c0Fycl0gPSB1c2VTdGF0ZTxJRXZlbnRbXT4oW10pO1xuICBjb25zdCBsb2NhbGUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PlxuICAgICAgc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZSxcbiAgKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFtyZXNwb25zZSwgaXNMb2FkaW5nLCBlcnJvcl0gPVxuICAgIHVzZUFwaVdpdGhEYXNoYm9hcmRRdWVyeTxJRXZlbnRzUmVzcG9uc2U+KGVuZHBvaW50LCBldmVudFBhcmFtcyk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzcG9uc2U/LmRhdGEgJiYgIWVycm9yICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGF0YS5ldmVudHMpKSB7XG4gICAgICBzZXRFdmVudHNBcnIocmVzcG9uc2UuZGF0YS5ldmVudHMuc2xpY2UoMCwgNCkpO1xuICAgIH1cbiAgfSwgW3Jlc3BvbnNlXSk7XG5cbiAgLy8gVGhpcyBob2xkcyB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IHNlZW4gb2YgdGhlIGV2ZW50XG4gIGNvbnN0IHBhcnNlRXZlbnREYXRhID0gKGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgICBjb25zdCBsYXN0c2VlbiA9IGxhc3RTZWVuT2JzZXJ2YXRpb24oZXZlbnQpO1xuXG4gICAgY29uc3QgZmlyc3RzZWVuID0gZmlyc3RTZWVuT2JzZXJ2YXRpb24oZXZlbnQpO1xuXG4gICAgY29uc3QgZGlmZiA9IGxhc3RzZWVuLmxhc3Rfc2Vlbl90aW1lIC0gZmlyc3RzZWVuLnN0YXJ0X3RpbWU7XG4gICAgZGF5anMuZXh0ZW5kKHV0Yyk7XG5cbiAgICBjb25zdCBtYXBwZWRFdmVudDogYW55ID0ge1xuICAgICAgbGFzdHNlZW4sXG4gICAgICBmaXJzdHNlZW4sXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHRvdGFsOiBkYXlqcy51dGMoZGlmZiAqIDEwMDApLmZvcm1hdCgnSEg6bW06c3MnKSxcbiAgICB9O1xuICAgIHJldHVybiBtYXBwZWRFdmVudDtcbiAgfTtcblxuICBpZiAoaXNMb2FkaW5nICYmICFlcnJvcikge1xuICAgIHJldHVybiAoXG4gICAgICA8Q29udGFpbmVyPlxuICAgICAgICA8RGF0YUxvYWRlckVycm9yIGlzTG9hZGluZz17aXNMb2FkaW5nfSBkYXRhPXtldmVudHNBcnJ9IGVycm9yPXtlcnJvcn0+XG4gICAgICAgICAgPFNwaW5uZXJIb2xkZXI+XG4gICAgICAgICAgICA8U3Bpbm5lciAvPlxuICAgICAgICAgIDwvU3Bpbm5lckhvbGRlcj5cbiAgICAgICAgPC9EYXRhTG9hZGVyRXJyb3I+XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17YGV2ZW50LXJvdy0ke2xvY2FsZX1gfT5cbiAgICAgIHtyZXNwb25zZSAmJiBldmVudHNBcnIubGVuZ3RoID09PSAwID8gKFxuICAgICAgICA8Tm9FdmVudHNDb21wb25lbnQgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIGV2ZW50c0Fyci5tYXAoKGV2ZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBwYXJzZUV2ZW50RGF0YShldmVudCk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYga2V5PXtgb2xzZS0kKGluZGV4KWB9IGNsYXNzTmFtZT1cIm9sLXNldmVyZS1ldmVudFwiPlxuICAgICAgICAgICAgICA8T3B0aW9uYWxMaW5rZWRTZXZlcmVFdmVudFxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICAgICAgICAgIHRvdGFsPXtkYXRhLnRvdGFsfVxuICAgICAgICAgICAgICAgIGZpcnN0c2Vlbj17ZGF0YS5maXJzdHNlZW59XG4gICAgICAgICAgICAgICAgbGFzdHNlZW49e2RhdGEubGFzdHNlZW59XG4gICAgICAgICAgICAgICAgbXNnPVwiXCJcbiAgICAgICAgICAgICAgICB2YWx1ZXNGcm9tS1FMPXtldmVudFBhcmFtcy52YWx1ZXNGcm9tS1FMfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2LmF0dHJzKCgpID0+ICh7XG4gIGxvY2FsZTogJ3RleHQnLFxufSkpYFxuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDYzcHgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZ2FwOiAyNHB4O1xuXG4gIC5vbC1zZXZlcmUtZXZlbnQge1xuICAgIHdpZHRoOiA0MDRweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gICYuZXZlbnQtcm93LWhlIHtcbiAgICAub2wtc2V2ZXJlLWV2ZW50IHtcbiAgICAgIG1hcmdpbjogMCAwIDAgMS4zMiU7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgfVxuYDtcblxuY29uc3QgTm9FdmVudHNDb21wb25lbnQgPSBzdHlsZWQoTm9FdmVudHMpYFxuICBtaW4taGVpZ2h0OiB1bnNldDtcbiAgaGVpZ2h0OiAxMDAlO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMGQwZDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFD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
@@ -24,14 +24,13 @@ var _Event = require("./events/Event");
24
24
  var _MapUtils = require("./MapUtils");
25
25
  var _theme = require("../../styles/theme/theme");
26
26
  var _ListContext = require("pages/DashboardMap/ListContext");
27
+ var _actions = require("store/global/actions");
27
28
  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); }
28
29
  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; }
29
30
  // @ts-ignore
30
31
 
31
32
  // import { storeMap } from 'src/store/global/actions';
32
33
 
33
- // import { appReducer } from '../../store/rootReducer';
34
-
35
34
  require('leaflet.markercluster');
36
35
  var Map = function Map(_ref) {
37
36
  var areas = _ref.areas,
@@ -65,73 +64,74 @@ var Map = function Map(_ref) {
65
64
  setMapZoomLevel = _useState2[1];
66
65
  var _useSelectedItem = (0, _ListContext.useSelectedItem)(),
67
66
  selectedItem = _useSelectedItem.selectedItem;
68
- // const eventsData = useSelector(
69
- // (state: ReturnType<typeof appReducer>) => state.events_data,
70
- // );
67
+ var eventsData = (0, _reactRedux.useSelector)(function (state) {
68
+ return state.events_data;
69
+ });
71
70
  var hoveredEventPresent = (0, _react.useMemo)(function () {
72
71
  return hoveredEvent !== null && hoveredEvent !== undefined;
73
72
  }, [hoveredEvent]);
74
73
  var focusedEventPresent = (0, _react.useMemo)(function () {
75
74
  return focusedEvent !== null && focusedEvent !== undefined;
76
75
  }, [focusedEvent]);
77
-
78
- // Add parent layer group for all factories
79
- var _useState3 = (0, _react.useState)(L.layerGroup()),
76
+ var _useState3 = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions)),
80
77
  _useState4 = (0, _slicedToArray2.default)(_useState3, 1),
81
- factoriesParentGroup = _useState4[0];
82
- var _useState5 = (0, _react.useState)(L.layerGroup()),
78
+ hiddenFactoriesClusterGroup = _useState4[0];
79
+ var _useState5 = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions)),
83
80
  _useState6 = (0, _slicedToArray2.default)(_useState5, 1),
84
- unmonitoredFactoriesGroup = _useState6[0];
85
- var _useState7 = (0, _react.useState)(L.layerGroup()),
81
+ unmonitoredFactoriesClusterGroup = _useState6[0];
82
+ var _useState7 = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions)),
86
83
  _useState8 = (0, _slicedToArray2.default)(_useState7, 1),
87
- monitoredFactoriesGroup = _useState8[0];
84
+ monitoredFactoriesClusterGroup = _useState8[0];
88
85
  var _useState9 = (0, _react.useState)(L.layerGroup()),
89
86
  _useState10 = (0, _slicedToArray2.default)(_useState9, 1),
90
87
  unmonitoredEdgesGroup = _useState10[0];
91
88
  var _useState11 = (0, _react.useState)(L.layerGroup()),
92
89
  _useState12 = (0, _slicedToArray2.default)(_useState11, 1),
93
- monitoredEdgesGroup = _useState12[0];
90
+ hiddenUnmonitoredEdgesGroup = _useState12[0];
94
91
  var _useState13 = (0, _react.useState)(L.layerGroup()),
95
92
  _useState14 = (0, _slicedToArray2.default)(_useState13, 1),
96
- wwtpsLayerGroup = _useState14[0];
93
+ monitoredEdgesGroup = _useState14[0];
97
94
  var _useState15 = (0, _react.useState)(L.layerGroup()),
98
95
  _useState16 = (0, _slicedToArray2.default)(_useState15, 1),
99
- collectorsLayerGroup = _useState16[0];
100
- var _useState17 = (0, _react.useState)(new L.FeatureGroup()),
96
+ wwtpsLayerGroup = _useState16[0];
97
+ var _useState17 = (0, _react.useState)(L.layerGroup()),
101
98
  _useState18 = (0, _slicedToArray2.default)(_useState17, 1),
102
- areasLayerGroup = _useState18[0];
103
- var _useState19 = (0, _react.useState)(true),
104
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
105
- edgesCheckbox = _useState20[0],
106
- setEdgesCheckbox = _useState20[1];
99
+ collectorsLayerGroup = _useState18[0];
100
+ var _useState19 = (0, _react.useState)(new L.FeatureGroup()),
101
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 1),
102
+ areasLayerGroup = _useState20[0];
103
+ var _useState21 = (0, _react.useState)(true),
104
+ _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
105
+ edgesCheckbox = _useState22[0],
106
+ setEdgesCheckbox = _useState22[1];
107
107
  var renderPointMarkers = function renderPointMarkers(filteredPoints, mapRef, props) {
108
108
  return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, Object.assign({
109
109
  map: mapRef.current,
110
110
  points: filteredPoints
111
111
  }, props));
112
112
  };
113
- var memoizedMonitoredPoints = function memoizedMonitoredPoints() {
113
+ var memoizedMonitoredPoints = (0, _react.useMemo)(function () {
114
114
  var monitoredPoints = (0, _MapUtils.filterPoints)(points, true);
115
115
  return renderPointMarkers(monitoredPoints, mapRef, {
116
- includeUnmonitoredPoints: true,
116
+ includeUnmonitoredPoints: includeUnmonitoredPoints,
117
117
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
118
- factoriesGroup: monitoredFactoriesGroup,
118
+ factoriesGroup: monitoredFactoriesClusterGroup,
119
119
  wwtpsGroup: wwtpsLayerGroup,
120
120
  collectorsGroup: collectorsLayerGroup,
121
- forEventsView: forEventsView
121
+ forEventsView: false
122
122
  });
123
- };
124
- var memoizedUnmonitoredPoints = function memoizedUnmonitoredPoints() {
123
+ }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
124
+ var memoizedUnmonitoredPoints = (0, _react.useMemo)(function () {
125
125
  var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, false);
126
126
  return renderPointMarkers(unmonitoredPoints, mapRef, {
127
- includeUnmonitoredPoints: true,
127
+ includeUnmonitoredPoints: includeUnmonitoredPoints,
128
128
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
129
- factoriesGroup: unmonitoredFactoriesGroup,
129
+ factoriesGroup: unmonitoredFactoriesClusterGroup,
130
130
  wwtpsGroup: wwtpsLayerGroup,
131
131
  collectorsGroup: collectorsLayerGroup,
132
- forEventsView: forEventsView
132
+ forEventsView: false
133
133
  });
134
- };
134
+ }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
135
135
  var renderEdges = function renderEdges(filteredEdges, mapRef, edgesCheckbox, props) {
136
136
  return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
137
137
  edges: filteredEdges,
@@ -158,29 +158,29 @@ var Map = function Map(_ref) {
158
158
  hideArrows: true,
159
159
  allowUnmonitoredDescendants: includeUnmonitoredDescendantsForEdges,
160
160
  group: unmonitoredEdgesGroup,
161
- shouldntDraw: unmonitoredEdgesGroup.getLayers().length !== 0
161
+ shouldntDraw: hiddenUnmonitoredEdgesGroup.getLayers().length !== 0
162
162
  });
163
163
  }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
164
164
  var handleEdgesCheckboxChange = function handleEdgesCheckboxChange(isChecked) {
165
165
  setEdgesCheckbox(isChecked);
166
166
  };
167
-
168
- // This variable stores the zoom levels the edges are displayed
169
- // It is used in two places in the code, so it is better to store it in one place
170
- var edgesZoomLevels = ['Small', 'Medium', 'MLarge', 'Large'];
171
167
  var handlePointsCheckboxChange = function handlePointsCheckboxChange(isChecked) {
172
168
  if (mapRef.current !== null) {
173
169
  var zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
174
170
  if (isChecked) {
175
- // Hide unmonitored points when "show only monitored" is checked
176
- factoriesParentGroup.removeLayer(unmonitoredFactoriesGroup);
171
+ hiddenFactoriesClusterGroup.addLayer(unmonitoredFactoriesClusterGroup);
172
+ unmonitoredFactoriesClusterGroup.clearLayers();
173
+ hiddenUnmonitoredEdgesGroup.removeFrom(mapRef.current);
174
+ hiddenUnmonitoredEdgesGroup.clearLayers();
175
+ hiddenUnmonitoredEdgesGroup.addLayer(unmonitoredEdgesGroup);
177
176
  unmonitoredEdgesGroup.removeFrom(mapRef.current);
178
177
  } else {
179
- // Show all points when "show only monitored" is unchecked
180
- factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
181
-
182
- // Show unmonitored edges if at appropriate zoom level
183
- if (edgesZoomLevels.includes(zoom)) {
178
+ unmonitoredFactoriesClusterGroup.addLayer(hiddenFactoriesClusterGroup);
179
+ hiddenFactoriesClusterGroup.clearLayers();
180
+ if (zoom === 'Medium' || zoom === 'Small') {
181
+ unmonitoredEdgesGroup.addLayer(hiddenUnmonitoredEdgesGroup);
182
+ hiddenUnmonitoredEdgesGroup.removeFrom(mapRef.current);
183
+ hiddenUnmonitoredEdgesGroup.clearLayers();
184
184
  unmonitoredEdgesGroup.addTo(mapRef.current);
185
185
  }
186
186
  }
@@ -191,25 +191,32 @@ var Map = function Map(_ref) {
191
191
  (0, _MapUtils.setupCheckboxListener)('#monitored-points-checkbox', handlePointsCheckboxChange);
192
192
  };
193
193
  var zoomRulesForEventsView = function zoomRulesForEventsView() {
194
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
194
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
195
195
  return payload;
196
196
  };
197
197
  var zoomRulesForDashaboardMaps = function zoomRulesForDashaboardMaps() {
198
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
199
- if (forEventsView || edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
200
- payload = zoomRulesForEventsView();
198
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints, " ", memoizedMonitoredPoints);
199
+ switch (_MapUtils.zoomLevels[mapZoomLevel]) {
200
+ case 'Small':
201
+ case 'Medium':
202
+ payload = zoomRulesForEventsView();
203
+ break;
204
+ // case 'MLarge':
205
+ // case 'Large':
206
+ // case 'XLarge':
207
+ // default:
208
+ // payload = <>{memoizedPoints}</>;
209
+ // break;
201
210
  }
211
+
202
212
  return payload;
203
213
  };
204
- var memoizedZoomControl = function memoizedZoomControl() {
214
+ var memoizedZoomControl = (0, _react.useMemo)(function () {
205
215
  var payload = forEventsView ? zoomRulesForEventsView() : zoomRulesForDashaboardMaps();
206
- var checkbox = document.querySelector('#monitored-points-checkbox');
207
- if (checkbox) {
208
- handlePointsCheckboxChange(checkbox.checked);
209
- }
216
+ document.querySelector('#monitored-points-checkbox') != null && handlePointsCheckboxChange(document.querySelector('#monitored-points-checkbox').checked);
210
217
  return payload;
211
- };
212
- var memoizedEvent = function memoizedEvent() {
218
+ }, [mapZoomLevel, eventsData.isFetching, focusedEvent, hoveredEvent, points, mapRef.current, edgesCheckbox, unmonitoredEdgesGroup]);
219
+ var memoizedEvent = (0, _react.useMemo)(function () {
213
220
  if (focusedEventPresent) {
214
221
  focusedEvent.focused = focusedEventPresent;
215
222
  focusedEvent.hovered = !focusedEventPresent;
@@ -226,89 +233,53 @@ var Map = function Map(_ref) {
226
233
  points: points,
227
234
  includeNetwork: !hoveredEventPresent
228
235
  });
229
- };
230
-
231
- // useEffect(() => {
232
- // return function cleanup() {
233
- // collectorsLayerGroup.clearLayers();
234
- // mapRef.current?.removeLayer(collectorsLayerGroup);
235
- // };
236
- // }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
237
-
238
- // useEffect(() => {
239
- // initializeMap(
240
- // mapZoomLevel,
241
- // mapBoxStyle,
242
- // leafletMap.satellite,
243
- // mapRef,
244
- // dispatch,
245
- // isValidArea,
246
- // areaToCenterBy,
247
- // setMapZoomLevel,
248
- // forWWTPDashboard,
249
- // true,
250
- // global_data.waterAuthorityId,
251
- // );
252
-
253
- // return function cleanup() {
254
- // wwtpsLayerGroup.clearLayers();
255
- // collectorsLayerGroup.clearLayers();
256
- // areasLayerGroup.clearLayers();
257
- // mapRef.current?.removeLayer(wwtpsLayerGroup);
258
- // mapRef.current?.removeLayer(collectorsLayerGroup);
259
- // mapRef.current?.removeLayer(areasLayerGroup);
260
- // // @ts-ignore
261
- // mapRef.current.remove();
262
- // dispatch(storeMap(undefined));
263
- // };
264
- // }, [global_data.waterAuthorityId]);
265
-
236
+ }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
237
+ (0, _react.useEffect)(function () {
238
+ return function cleanup() {
239
+ var _mapRef$current;
240
+ collectorsLayerGroup.clearLayers();
241
+ (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.removeLayer(collectorsLayerGroup);
242
+ };
243
+ }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
244
+ (0, _react.useEffect)(function () {
245
+ (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, true, global_data.waterAuthorityId);
246
+ return function cleanup() {
247
+ var _mapRef$current2, _mapRef$current3, _mapRef$current4, _mapRef$current5, _mapRef$current6, _mapRef$current7;
248
+ hiddenFactoriesClusterGroup.clearLayers();
249
+ unmonitoredFactoriesClusterGroup.clearLayers();
250
+ monitoredFactoriesClusterGroup.clearLayers();
251
+ wwtpsLayerGroup.clearLayers();
252
+ collectorsLayerGroup.clearLayers();
253
+ areasLayerGroup.clearLayers();
254
+ (_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.removeLayer(hiddenFactoriesClusterGroup);
255
+ (_mapRef$current3 = mapRef.current) === null || _mapRef$current3 === void 0 ? void 0 : _mapRef$current3.removeLayer(unmonitoredFactoriesClusterGroup);
256
+ (_mapRef$current4 = mapRef.current) === null || _mapRef$current4 === void 0 ? void 0 : _mapRef$current4.removeLayer(monitoredFactoriesClusterGroup);
257
+ (_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.removeLayer(wwtpsLayerGroup);
258
+ (_mapRef$current6 = mapRef.current) === null || _mapRef$current6 === void 0 ? void 0 : _mapRef$current6.removeLayer(collectorsLayerGroup);
259
+ (_mapRef$current7 = mapRef.current) === null || _mapRef$current7 === void 0 ? void 0 : _mapRef$current7.removeLayer(areasLayerGroup);
260
+ // @ts-ignore
261
+ mapRef.current.remove();
262
+ dispatch((0, _actions.storeMap)(undefined));
263
+ };
264
+ }, [global_data.waterAuthorityId]);
266
265
  (0, _react.useEffect)(function () {
267
266
  if (!mapRef.current) {
268
267
  (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, true, global_data.waterAuthorityId);
269
-
270
- // Initialize parent factory group
271
- if (mapRef.current) {
272
- factoriesParentGroup.addTo(mapRef.current);
273
- factoriesParentGroup.addLayer(monitoredFactoriesGroup);
274
- factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
275
- }
276
268
  } else {
277
- // setMapZoomLevel(mapRef.current.getZoom());
269
+ setMapZoomLevel(mapRef.current.getZoom());
278
270
  if (!areaToCenterBy) {
279
271
  areaToCenterBy = areas.map(function (area) {
280
272
  return area.shape_data;
281
273
  }).flat();
282
274
  }
283
- if (!forEventsView || !focusedEvent) {
284
- (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
285
- }
275
+ (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
286
276
  trackLayerbox();
287
277
  }
288
- }, [mapRef.current, points]);
289
- (0, _react.useEffect)(function () {
290
- if (!mapRef.current) {
291
- return;
292
- }
293
-
294
- // return () => {
295
- // mapRef.current?.clearLayers();
296
- // mapRef.current?.off();
297
- // mapRef.current?.remove();
298
- // mapRef.current = null;
299
- // dispatch(storeMap(undefined));
300
- // };
301
-
302
- if (_MapUtils.zoomLevels[mapZoomLevel] === 'XLarge') {
303
- mapRef.current.removeLayer(factoriesParentGroup);
304
- } else {
305
- mapRef.current.addLayer(factoriesParentGroup);
306
- }
307
- }, [mapZoomLevel]);
278
+ }, [mapRef.current, areaToCenterBy]);
308
279
  (0, _react.useEffect)(function () {
309
- var _mapRef$current;
280
+ var _mapRef$current8;
310
281
  var clicked = false;
311
- (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.eachLayer(function (layer) {
282
+ (_mapRef$current8 = mapRef.current) === null || _mapRef$current8 === void 0 ? void 0 : _mapRef$current8.eachLayer(function (layer) {
312
283
  if (clicked) return;
313
284
  if ((layer === null || layer === void 0 ? void 0 : layer.kando_object_id) === selectedItem && layer.isPopupOpen() === false) {
314
285
  if (layer instanceof L.Marker) {
@@ -327,15 +298,16 @@ var Map = function Map(_ref) {
327
298
  className: " map-container ".concat(global_data.sidenavExpanded ? '' : 'map-container--sidenav-collapsed')
328
299
  }, /*#__PURE__*/_react.default.createElement(_ErrorBoundary.default, null, /*#__PURE__*/_react.default.createElement("div", {
329
300
  id: "map"
330
- }, (0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points) && /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
301
+ }), (0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points) && /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
331
302
  areas: areas,
332
303
  map: mapRef.current,
333
304
  L: L,
334
305
  areaToCenterBy: areaToCenterBy,
335
306
  mapZoom: mapZoomLevel,
307
+ rerender: _MapUtils.zoomLevels[mapZoomLevel],
336
308
  global_data: global_data,
337
309
  featureGroup: areasLayerGroup
338
- }), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent(), memoizedZoomControl(), children)))));
310
+ }), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent, memoizedZoomControl, children))));
339
311
  };
340
312
  exports.Map = Map;
341
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiTWFwIiwiX3JlZiIsImFyZWFzIiwiZWRnZXMiLCJwb2ludHMiLCJnbG9iYWxfZGF0YSIsImFyZWFUb0NlbnRlckJ5IiwiZm9jdXNlZEV2ZW50IiwiaG92ZXJlZEV2ZW50IiwiX3JlZiRoaWRlRWRnZXMiLCJoaWRlRWRnZXMiLCJfcmVmJG1hcEJveFN0eWxlIiwibWFwQm94U3R5bGUiLCJsZWFmbGV0TWFwIiwibWFwRGVmYXVsdCIsImNoaWxkcmVuIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yIiwiaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yMiIsImluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMiLCJfcmVmJGZvckV2ZW50c1ZpZXciLCJmb3JFdmVudHNWaWV3IiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiX3JlZiRmb3JXV1RQRGFzaGJvYXJkIiwiZm9yV1dUUERhc2hib2FyZCIsIm1hcCIsIm1hcFJlZiIsInVzZVJlZiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXBab29tTGV2ZWwiLCJzZXRNYXBab29tTGV2ZWwiLCJfdXNlU2VsZWN0ZWRJdGVtIiwidXNlU2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtIiwiaG92ZXJlZEV2ZW50UHJlc2VudCIsInVzZU1lbW8iLCJ1bmRlZmluZWQiLCJmb2N1c2VkRXZlbnRQcmVzZW50IiwiX3VzZVN0YXRlMyIsImxheWVyR3JvdXAiLCJfdXNlU3RhdGU0IiwiZmFjdG9yaWVzUGFyZW50R3JvdXAiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwid3d0cHNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTciLCJGZWF0dXJlR3JvdXAiLCJfdXNlU3RhdGUxOCIsImFyZWFzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJlZGdlc0NoZWNrYm94Iiwic2V0RWRnZXNDaGVja2JveCIsInJlbmRlclBvaW50TWFya2VycyIsImZpbHRlcmVkUG9pbnRzIiwicHJvcHMiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwicmVyZW5kZXIiLCJ6b29tTGV2ZWxzIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwicmVuZGVyRWRnZXMiLCJmaWx0ZXJlZEVkZ2VzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZmlsdGVyRWRnZXMiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwic2hvdWxkbnREcmF3IiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImVkZ2VzWm9vbUxldmVscyIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJyZW1vdmVMYXllciIsInJlbW92ZUZyb20iLCJhZGRMYXllciIsImluY2x1ZGVzIiwiYWRkVG8iLCJ0cmFja0xheWVyYm94Iiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwiem9vbVJ1bGVzRm9yRXZlbnRzVmlldyIsInBheWxvYWQiLCJGcmFnbWVudCIsInpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzIiwibWVtb2l6ZWRab29tQ29udHJvbCIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tlZCIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsInVzZUVmZmVjdCIsImluaXRpYWxpemVNYXAiLCJzYXRlbGxpdGUiLCJpc1ZhbGlkQXJlYSIsIndhdGVyQXV0aG9yaXR5SWQiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudCIsImNsaWNrZWQiLCJlYWNoTGF5ZXIiLCJsYXllciIsImthbmRvX29iamVjdF9pZCIsImlzUG9wdXBPcGVuIiwiTWFya2VyIiwiZmlyZSIsIlBvbHlnb24iLCJjbGFzc05hbWUiLCJjb25jYXQiLCJzaWRlbmF2RXhwYW5kZWQiLCJpZCIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiQXJlYVBvbHlnb25zIiwibWFwWm9vbSIsImZlYXR1cmVHcm91cCIsInNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL01hcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCAnc3JjL3V0aWxpdGllcy9wb2x5bGluZWRlY29yYXRvcic7XG5pbXBvcnQgJ2xlYWZsZXQubWFya2VyY2x1c3Rlcic7XG5pbXBvcnQgJ2xlYWZsZXQucGF0dGVybic7XG5pbXBvcnQgJ2xlYWZsZXQuaGVhdCc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL21vZGVscy9JQXJlYSc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJ3NyYy9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50Jztcbi8vIGltcG9ydCB7IHN0b3JlTWFwIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCB7IElHbG9iYWxTdGF0ZSB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvbW9kZWxzL0lHbG9iYWxTdGF0ZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnc3JjL3V0aWxpdGllcy9FcnJvckJvdW5kYXJ5JztcbmltcG9ydCB7IEFyZWFQb2x5Z29ucyB9IGZyb20gJy4vYXJlYXMvQXJlYVBvbHlnb25zJztcbmltcG9ydCBFZGdlcyBmcm9tICcuL2VkZ2VzL0VkZ2VzJztcbmltcG9ydCAnLi9NYXAuc2Nzcyc7XG5pbXBvcnQgJy4vcG9pbnRzL1BvaW50SWNvbi5zY3NzJztcbmltcG9ydCB7IFBvaW50TWFya2VycyB9IGZyb20gJy4vcG9pbnRzL1BvaW50TWFya2Vycyc7XG4vLyBpbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9FdmVudCc7XG5pbXBvcnQge1xuICBhcmVhRm9jdXNMb2dpYyxcbiAgZmlsdGVyRWRnZXMsXG4gIGZpbHRlclBvaW50cyxcbiAgaW5pdGlhbGl6ZU1hcCxcbiAgaXNWYWxpZEFyZWEsXG4gIHNldHVwQ2hlY2tib3hMaXN0ZW5lcixcbiAgc2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyxcbiAgc2hvdWxkTG9hZE1hcE9iamVjdHMsXG4gIHpvb21MZXZlbHMsXG59IGZyb20gJy4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgbGVhZmxldE1hcCB9IGZyb20gJy4uLy4uL3N0eWxlcy90aGVtZS90aGVtZSc7XG5pbXBvcnQgeyB1c2VTZWxlY3RlZEl0ZW0gfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL0xpc3RDb250ZXh0JztcbnJlcXVpcmUoJ2xlYWZsZXQubWFya2VyY2x1c3RlcicpO1xuXG5pbnRlcmZhY2UgTWFwUHJvcHMge1xuICBhcmVhczogSUFyZWFbXTtcbiAgZWRnZXM/OiBJRWRnZVtdO1xuICBwb2ludHM/OiBJUG9pbnRbXTtcbiAgZ2xvYmFsX2RhdGE6IElHbG9iYWxTdGF0ZTtcbiAgYXJlYVRvQ2VudGVyQnk/OiBhbnk7XG4gIGZvY3VzZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhvdmVyZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhpZGVFZGdlcz86IGJvb2xlYW47XG4gIG1hcEJveFN0eWxlPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IGFueTtcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM/OiBib29sZWFuO1xuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzPzogYm9vbGVhbjtcbiAgZm9yRXZlbnRzVmlldzogYm9vbGVhbjtcbiAgZm9yV1dUUERhc2hib2FyZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNYXA6IFJlYWN0LkZDPE1hcFByb3BzPiA9ICh7XG4gIGFyZWFzLFxuICBlZGdlcyxcbiAgcG9pbnRzLFxuICBnbG9iYWxfZGF0YSxcbiAgYXJlYVRvQ2VudGVyQnksXG4gIGZvY3VzZWRFdmVudCxcbiAgaG92ZXJlZEV2ZW50LFxuICBoaWRlRWRnZXMgPSBmYWxzZSxcbiAgbWFwQm94U3R5bGUgPSBsZWFmbGV0TWFwLm1hcERlZmF1bHQsXG4gIGNoaWxkcmVuLFxuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMgPSB0cnVlLFxuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzID0gZmFsc2UsXG4gIGZvckV2ZW50c1ZpZXcgPSBmYWxzZSxcbiAgc3R5bGUgPSB7fSxcbiAgZm9yV1dUUERhc2hib2FyZCA9IGZhbHNlLFxufSkgPT4ge1xuICBjb25zdCB7IG1hcCB9ID0gZ2xvYmFsX2RhdGE7XG4gIGNvbnN0IG1hcFJlZiA9IHVzZVJlZjxMLk1hcCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttYXBab29tTGV2ZWwsIHNldE1hcFpvb21MZXZlbF0gPSB1c2VTdGF0ZSgyKTtcbiAgY29uc3QgeyBzZWxlY3RlZEl0ZW0gfSA9IHVzZVNlbGVjdGVkSXRlbSgpO1xuICAvLyBjb25zdCBldmVudHNEYXRhID0gdXNlU2VsZWN0b3IoXG4gIC8vICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZXZlbnRzX2RhdGEsXG4gIC8vICk7XG4gIGNvbnN0IGhvdmVyZWRFdmVudFByZXNlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gaG92ZXJlZEV2ZW50ICE9PSBudWxsICYmIGhvdmVyZWRFdmVudCAhPT0gdW5kZWZpbmVkO1xuICB9LCBbaG92ZXJlZEV2ZW50XSk7XG5cbiAgY29uc3QgZm9jdXNlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBmb2N1c2VkRXZlbnQgIT09IG51bGwgJiYgZm9jdXNlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtmb2N1c2VkRXZlbnRdKTtcblxuICAvLyBBZGQgcGFyZW50IGxheWVyIGdyb3VwIGZvciBhbGwgZmFjdG9yaWVzXG4gIGNvbnN0IFtmYWN0b3JpZXNQYXJlbnRHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFt1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9uaXRvcmVkUG9pbnRzID0gZmlsdGVyUG9pbnRzKHBvaW50cywgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyhtb25pdG9yZWRQb2ludHMsIG1hcFJlZiwge1xuICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiB0cnVlLFxuICAgICAgcmVyZW5kZXI6IHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSxcbiAgICAgIGZhY3Rvcmllc0dyb3VwOiBtb25pdG9yZWRGYWN0b3JpZXNHcm91cCxcbiAgICAgIHd3dHBzR3JvdXA6IHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgIGNvbGxlY3RvcnNHcm91cDogY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBmb3JFdmVudHNWaWV3OiBmb3JFdmVudHNWaWV3LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyh1bm1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM6IHRydWUsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgICBzaG91bGRudERyYXc6IHVubW9uaXRvcmVkRWRnZXNHcm91cC5nZXRMYXllcnMoKS5sZW5ndGggIT09IDAsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICAvLyBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgem9vbSBsZXZlbHMgdGhlIGVkZ2VzIGFyZSBkaXNwbGF5ZWRcbiAgLy8gSXQgaXMgdXNlZCBpbiB0d28gcGxhY2VzIGluIHRoZSBjb2RlLCBzbyBpdCBpcyBiZXR0ZXIgdG8gc3RvcmUgaXQgaW4gb25lIHBsYWNlXG4gIGNvbnN0IGVkZ2VzWm9vbUxldmVscyA9IFsnU21hbGwnLCAnTWVkaXVtJywgJ01MYXJnZScsICdMYXJnZSddO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgbGV0IHpvb20gPSB6b29tTGV2ZWxzW21hcFJlZi5jdXJyZW50LmdldFpvb20oKV07XG5cbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgLy8gSGlkZSB1bm1vbml0b3JlZCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyBjaGVja2VkXG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLnJlbW92ZUxheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAucmVtb3ZlRnJvbShtYXBSZWYuY3VycmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaG93IGFsbCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyB1bmNoZWNrZWRcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG5cbiAgICAgICAgLy8gU2hvdyB1bm1vbml0b3JlZCBlZGdlcyBpZiBhdCBhcHByb3ByaWF0ZSB6b29tIGxldmVsXG4gICAgICAgIGlmIChlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbSkpIHtcbiAgICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHRyYWNrTGF5ZXJib3ggPSAoKSA9PiB7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKCcjZWRnZXMtY2hlY2tib3gnLCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnLFxuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JFdmVudHNWaWV3ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRQb2ludHMoKX1cbiAgICAgICAge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzKCl9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMgPSAoKSA9PiB7XG4gICAgbGV0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cygpfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHMoKX1cbiAgICAgIDwvPlxuICAgICk7XG4gICAgaWYgKGZvckV2ZW50c1ZpZXcgfHwgZWRnZXNab29tTGV2ZWxzLmluY2x1ZGVzKHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSkpIHtcbiAgICAgIHBheWxvYWQgPSB6b29tUnVsZXNGb3JFdmVudHNWaWV3KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRab29tQ29udHJvbCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gZm9yRXZlbnRzVmlld1xuICAgICAgPyB6b29tUnVsZXNGb3JFdmVudHNWaWV3KClcbiAgICAgIDogem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMoKTtcblxuICAgIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChjaGVja2JveCkge1xuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UoY2hlY2tib3guY2hlY2tlZCk7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkRXZlbnQgPSAoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGZvY3VzZWRFdmVudCEuZm9jdXNlZCA9IGZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgICBmb2N1c2VkRXZlbnQhLmhvdmVyZWQgPSAhZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXJlZEV2ZW50UHJlc2VudCkge1xuICAgICAgaG92ZXJlZEV2ZW50IS5ob3ZlcmVkID0gaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICAgIGhvdmVyZWRFdmVudCEuZm9jdXNlZCA9ICFob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmICghaG92ZXJlZEV2ZW50UHJlc2VudCAmJiAhZm9jdXNlZEV2ZW50UHJlc2VudCkgcmV0dXJuIDw+PC8+O1xuICAgIHJldHVybiAoXG4gICAgICA8RXZlbnRcbiAgICAgICAgZXZlbnQ9e2ZvY3VzZWRFdmVudCEgfHwgaG92ZXJlZEV2ZW50IX1cbiAgICAgICAgbWFwPXttYXB9XG4gICAgICAgIGVkZ2VzPXtlZGdlcyF9XG4gICAgICAgIHBvaW50cz17cG9pbnRzIX1cbiAgICAgICAgaW5jbHVkZU5ldHdvcms9eyFob3ZlcmVkRXZlbnRQcmVzZW50fVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIC8vIHVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gIC8vICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgLy8gICB9O1xuICAvLyB9LCBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICAvLyB1c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIGluaXRpYWxpemVNYXAoXG4gIC8vICAgICBtYXBab29tTGV2ZWwsXG4gIC8vICAgICBtYXBCb3hTdHlsZSxcbiAgLy8gICAgIGxlYWZsZXRNYXAuc2F0ZWxsaXRlLFxuICAvLyAgICAgbWFwUmVmLFxuICAvLyAgICAgZGlzcGF0Y2gsXG4gIC8vICAgICBpc1ZhbGlkQXJlYSxcbiAgLy8gICAgIGFyZWFUb0NlbnRlckJ5LFxuICAvLyAgICAgc2V0TWFwWm9vbUxldmVsLFxuICAvLyAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgLy8gICAgIHRydWUsXG4gIC8vICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICAvLyAgICk7XG5cbiAgLy8gICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgLy8gICAgIHd3dHBzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgY29sbGVjdG9yc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgLy8gICAgIGFyZWFzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gIC8vICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGFyZWFzTGF5ZXJHcm91cCk7XG4gIC8vICAgICAvLyBAdHMtaWdub3JlXG4gIC8vICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmUoKTtcbiAgLy8gICAgIGRpc3BhdGNoKHN0b3JlTWFwKHVuZGVmaW5lZCkpO1xuICAvLyAgIH07XG4gIC8vIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHBhcmVudCBmYWN0b3J5IGdyb3VwXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRMYXllcihtb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZXRNYXBab29tTGV2ZWwobWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpKTtcbiAgICAgIGlmICghYXJlYVRvQ2VudGVyQnkpIHtcbiAgICAgICAgYXJlYVRvQ2VudGVyQnkgPSBhcmVhcy5tYXAoKGFyZWEpID0+IGFyZWEuc2hhcGVfZGF0YSkuZmxhdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZvckV2ZW50c1ZpZXcgfHwgIWZvY3VzZWRFdmVudCkge1xuICAgICAgICBhcmVhRm9jdXNMb2dpYyhtYXBSZWYsIGlzVmFsaWRBcmVhLCBhcmVhVG9DZW50ZXJCeSk7XG4gICAgICB9XG5cbiAgICAgIHRyYWNrTGF5ZXJib3goKTtcbiAgICB9XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuICgpID0+IHtcbiAgICAvLyAgIG1hcFJlZi5jdXJyZW50Py5jbGVhckxheWVycygpO1xuICAgIC8vICAgbWFwUmVmLmN1cnJlbnQ/Lm9mZigpO1xuICAgIC8vICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZSgpO1xuICAgIC8vICAgbWFwUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIC8vICAgZGlzcGF0Y2goc3RvcmVNYXAodW5kZWZpbmVkKSk7XG4gICAgLy8gfTtcblxuICAgIGlmICh6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0gPT09ICdYTGFyZ2UnKSB7XG4gICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihmYWN0b3JpZXNQYXJlbnRHcm91cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcFJlZi5jdXJyZW50LmFkZExheWVyKGZhY3Rvcmllc1BhcmVudEdyb3VwKTtcbiAgICB9XG4gIH0sIFttYXBab29tTGV2ZWxdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjbGlja2VkID0gZmFsc2U7XG5cbiAgICBtYXBSZWYuY3VycmVudD8uZWFjaExheWVyKChsYXllcikgPT4ge1xuICAgICAgaWYgKGNsaWNrZWQpIHJldHVybjtcblxuICAgICAgaWYgKFxuICAgICAgICBsYXllcj8ua2FuZG9fb2JqZWN0X2lkID09PSBzZWxlY3RlZEl0ZW0gJiZcbiAgICAgICAgbGF5ZXIuaXNQb3B1cE9wZW4oKSA9PT0gZmFsc2VcbiAgICAgICkge1xuICAgICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlcikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlnb24pIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljay1ldmVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNsaWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc2VsZWN0ZWRJdGVtXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLW1hcC1jb250YWluZXJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2AgbWFwLWNvbnRhaW5lciAke1xuICAgICAgICAgIGdsb2JhbF9kYXRhLnNpZGVuYXZFeHBhbmRlZCA/ICcnIDogJ21hcC1jb250YWluZXItLXNpZGVuYXYtY29sbGFwc2VkJ1xuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgPGRpdiBpZD1cIm1hcFwiPlxuICAgICAgICAgICAge3Nob3VsZExvYWRNYXBPYmplY3RzKGdsb2JhbF9kYXRhLCBtYXBSZWYsIGVkZ2VzLCBwb2ludHMpICYmIChcbiAgICAgICAgICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICAgICAgICAgIGFyZWFzPXthcmVhc31cbiAgICAgICAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgICAgICAgYXJlYVRvQ2VudGVyQnk9e2FyZWFUb0NlbnRlckJ5fVxuICAgICAgICAgICAgICAgIG1hcFpvb209e21hcFpvb21MZXZlbH1cbiAgICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgICAgICAgICAgZmVhdHVyZUdyb3VwPXthcmVhc0xheWVyR3JvdXB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMoXG4gICAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgICAgZ2xvYmFsX2RhdGEsXG4gICAgICAgICAgICAgIG1hcFJlZixcbiAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge21lbW9pemVkRXZlbnQoKX1cbiAgICAgICAgICAgICAgICB7bWVtb2l6ZWRab29tQ29udHJvbCgpfVxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBT0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBT0EsSUFBQUcsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVQsT0FBQTtBQVdBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFlBQUEsR0FBQVgsT0FBQTtBQUFxRSxTQUFBWSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxL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
313
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJfcmVmJGhpZGVFZGdlcyIsImhpZGVFZGdlcyIsIl9yZWYkbWFwQm94U3R5bGUiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IyIiwiaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyIsIl9yZWYkZm9yRXZlbnRzVmlldyIsImZvckV2ZW50c1ZpZXciLCJfcmVmJHN0eWxlIiwic3R5bGUiLCJfcmVmJGZvcldXVFBEYXNoYm9hcmQiLCJmb3JXV1RQRGFzaGJvYXJkIiwibWFwIiwibWFwUmVmIiwidXNlUmVmIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1hcFpvb21MZXZlbCIsInNldE1hcFpvb21MZXZlbCIsIl91c2VTZWxlY3RlZEl0ZW0iLCJ1c2VTZWxlY3RlZEl0ZW0iLCJzZWxlY3RlZEl0ZW0iLCJldmVudHNEYXRhIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImV2ZW50c19kYXRhIiwiaG92ZXJlZEV2ZW50UHJlc2VudCIsInVzZU1lbW8iLCJ1bmRlZmluZWQiLCJmb2N1c2VkRXZlbnRQcmVzZW50IiwiX3VzZVN0YXRlMyIsIndpbmRvdyIsImN1c3RvbUxlYWZsZXQiLCJtYXJrZXJDbHVzdGVyR3JvdXAiLCJjbHVzdGVyR3JvdXBPcHRpb25zIiwiX3VzZVN0YXRlNCIsImhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXAiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCIsIl91c2VTdGF0ZTkiLCJsYXllckdyb3VwIiwiX3VzZVN0YXRlMTAiLCJ1bm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2Iiwid3d0cHNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTkiLCJGZWF0dXJlR3JvdXAiLCJfdXNlU3RhdGUyMCIsImFyZWFzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJlZGdlc0NoZWNrYm94Iiwic2V0RWRnZXNDaGVja2JveCIsInJlbmRlclBvaW50TWFya2VycyIsImZpbHRlcmVkUG9pbnRzIiwicHJvcHMiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwicmVyZW5kZXIiLCJ6b29tTGV2ZWxzIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwicmVuZGVyRWRnZXMiLCJmaWx0ZXJlZEVkZ2VzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZmlsdGVyRWRnZXMiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwic2hvdWxkbnREcmF3IiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJhZGRMYXllciIsImNsZWFyTGF5ZXJzIiwicmVtb3ZlRnJvbSIsImFkZFRvIiwidHJhY2tMYXllcmJveCIsInNldHVwQ2hlY2tib3hMaXN0ZW5lciIsInpvb21SdWxlc0ZvckV2ZW50c1ZpZXciLCJwYXlsb2FkIiwiRnJhZ21lbnQiLCJ6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcyIsIm1lbW9pemVkWm9vbUNvbnRyb2wiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjaGVja2VkIiwiaXNGZXRjaGluZyIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsImV2ZW50RmlsdGVyUGFyYW0iLCJ1c2VFZmZlY3QiLCJjbGVhbnVwIiwiX21hcFJlZiRjdXJyZW50IiwicmVtb3ZlTGF5ZXIiLCJpbml0aWFsaXplTWFwIiwic2F0ZWxsaXRlIiwiaXNWYWxpZEFyZWEiLCJ3YXRlckF1dGhvcml0eUlkIiwiX21hcFJlZiRjdXJyZW50MiIsIl9tYXBSZWYkY3VycmVudDMiLCJfbWFwUmVmJGN1cnJlbnQ0IiwiX21hcFJlZiRjdXJyZW50NSIsIl9tYXBSZWYkY3VycmVudDYiLCJfbWFwUmVmJGN1cnJlbnQ3IiwicmVtb3ZlIiwic3RvcmVNYXAiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudDgiLCJjbGlja2VkIiwiZWFjaExheWVyIiwibGF5ZXIiLCJrYW5kb19vYmplY3RfaWQiLCJpc1BvcHVwT3BlbiIsIk1hcmtlciIsImZpcmUiLCJQb2x5Z29uIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic2lkZW5hdkV4cGFuZGVkIiwiaWQiLCJzaG91bGRMb2FkTWFwT2JqZWN0cyIsIkFyZWFQb2x5Z29ucyIsIm1hcFpvb20iLCJmZWF0dXJlR3JvdXAiLCJzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0ICdsZWFmbGV0LmhlYXQnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuLy8gaW1wb3J0IHsgc3RvcmVNYXAgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgQXJlYVBvbHlnb25zIH0gZnJvbSAnLi9hcmVhcy9BcmVhUG9seWdvbnMnO1xuaW1wb3J0IEVkZ2VzIGZyb20gJy4vZWRnZXMvRWRnZXMnO1xuaW1wb3J0ICcuL01hcC5zY3NzJztcbmltcG9ydCAnLi9wb2ludHMvUG9pbnRJY29uLnNjc3MnO1xuaW1wb3J0IHsgUG9pbnRNYXJrZXJzIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRNYXJrZXJzJztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vZXZlbnRzL0V2ZW50JztcbmltcG9ydCB7XG4gIGFyZWFGb2N1c0xvZ2ljLFxuICBjbHVzdGVyR3JvdXBPcHRpb25zLFxuICBmaWx0ZXJFZGdlcyxcbiAgZmlsdGVyUG9pbnRzLFxuICBpbml0aWFsaXplTWFwLFxuICBpc1ZhbGlkQXJlYSxcbiAgc2V0dXBDaGVja2JveExpc3RlbmVyLFxuICBzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzLFxuICBzaG91bGRMb2FkTWFwT2JqZWN0cyxcbiAgem9vbUxldmVscyxcbn0gZnJvbSAnLi9NYXBVdGlscyc7XG5pbXBvcnQgeyBsZWFmbGV0TWFwIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCB7IHVzZVNlbGVjdGVkSXRlbSB9IGZyb20gJ3NyYy9wYWdlcy9EYXNoYm9hcmRNYXAvTGlzdENvbnRleHQnO1xuaW1wb3J0IHsgc3RvcmVNYXAgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IGV2ZW50c0RhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5ldmVudHNfZGF0YSxcbiAgKTtcbiAgY29uc3QgaG92ZXJlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICBjb25zdCBmb2N1c2VkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJiBmb2N1c2VkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2ZvY3VzZWRFdmVudF0pO1xuXG4gIGNvbnN0IFtoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXBdID0gdXNlU3RhdGUoXG4gICAgd2luZG93LmN1c3RvbUxlYWZsZXQubWFya2VyQ2x1c3Rlckdyb3VwKGNsdXN0ZXJHcm91cE9wdGlvbnMpLFxuICApO1xuICBjb25zdCBbdW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXBdID0gdXNlU3RhdGUoXG4gICAgd2luZG93LmN1c3RvbUxlYWZsZXQubWFya2VyQ2x1c3Rlckdyb3VwKGNsdXN0ZXJHcm91cE9wdGlvbnMpLFxuICApO1xuICBjb25zdCBbbW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwXSA9IHVzZVN0YXRlKFxuICAgIHdpbmRvdy5jdXN0b21MZWFmbGV0Lm1hcmtlckNsdXN0ZXJHcm91cChjbHVzdGVyR3JvdXBPcHRpb25zKSxcbiAgKTtcblxuICBjb25zdCBbdW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2hpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCB0cnVlKTtcbiAgICByZXR1cm4gcmVuZGVyUG9pbnRNYXJrZXJzKG1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IG1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCxcbiAgICAgIHd3dHBzR3JvdXA6IHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgIGNvbGxlY3RvcnNHcm91cDogY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBmb3JFdmVudHNWaWV3OiBmYWxzZSxcbiAgICB9KTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1bm1vbml0b3JlZFBvaW50cyA9IGZpbHRlclBvaW50cyhwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyUG9pbnRNYXJrZXJzKHVubW9uaXRvcmVkUG9pbnRzLCBtYXBSZWYsIHtcbiAgICAgIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyxcbiAgICAgIHJlcmVuZGVyOiB6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0sXG4gICAgICBmYWN0b3JpZXNHcm91cDogdW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZmFsc2UsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgICBzaG91bGRudERyYXc6IGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5nZXRMYXllcnMoKS5sZW5ndGggIT09IDAsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSA9IChpc0NoZWNrZWQpID0+IHtcbiAgICBpZiAobWFwUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGxldCB6b29tID0gem9vbUxldmVsc1ttYXBSZWYuY3VycmVudC5nZXRab29tKCldO1xuXG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cC5hZGRMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCk7XG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG5cbiAgICAgICAgaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICBoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5yZW1vdmVGcm9tKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmFkZExheWVyKGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cCk7XG4gICAgICAgIGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cC5jbGVhckxheWVycygpO1xuXG4gICAgICAgIGlmICh6b29tID09PSAnTWVkaXVtJyB8fCB6b29tID09PSAnU21hbGwnKSB7XG4gICAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLmFkZExheWVyKGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgICAgaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdHJhY2tMYXllcmJveCA9ICgpID0+IHtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoJyNlZGdlcy1jaGVja2JveCcsIGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UpO1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgICBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IChcbiAgICAgIDw+XG4gICAgICAgIHttZW1vaXplZEVkZ2VzfVxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzfVxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50c31cbiAgICAgICAge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzfVxuICAgICAgPC8+XG4gICAgKTtcblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IHpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzID0gKCkgPT4ge1xuICAgIGxldCBwYXlsb2FkID0gKFxuICAgICAgPD5cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRQb2ludHN9IHttZW1vaXplZE1vbml0b3JlZFBvaW50c31cbiAgICAgIDwvPlxuICAgICk7XG4gICAgc3dpdGNoICh6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0pIHtcbiAgICAgIGNhc2UgJ1NtYWxsJzpcbiAgICAgIGNhc2UgJ01lZGl1bSc6XG4gICAgICAgIHBheWxvYWQgPSB6b29tUnVsZXNGb3JFdmVudHNWaWV3KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gY2FzZSAnTUxhcmdlJzpcbiAgICAgIC8vIGNhc2UgJ0xhcmdlJzpcbiAgICAgIC8vIGNhc2UgJ1hMYXJnZSc6XG4gICAgICAvLyBkZWZhdWx0OlxuICAgICAgLy8gICBwYXlsb2FkID0gPD57bWVtb2l6ZWRQb2ludHN9PC8+O1xuICAgICAgLy8gICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCBtZW1vaXplZFpvb21Db250cm9sID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGZvckV2ZW50c1ZpZXdcbiAgICAgID8gem9vbVJ1bGVzRm9yRXZlbnRzVmlldygpXG4gICAgICA6IHpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzKCk7XG5cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcpICE9IG51bGwgJiZcbiAgICAgIGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlKFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcpLmNoZWNrZWQsXG4gICAgICApO1xuICAgIHJldHVybiBwYXlsb2FkO1xuICB9LCBbXG4gICAgbWFwWm9vbUxldmVsLFxuICAgIGV2ZW50c0RhdGEuaXNGZXRjaGluZyxcbiAgICBmb2N1c2VkRXZlbnQsXG4gICAgaG92ZXJlZEV2ZW50LFxuICAgIHBvaW50cyxcbiAgICBtYXBSZWYuY3VycmVudCxcbiAgICBlZGdlc0NoZWNrYm94LFxuICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb2N1c2VkRXZlbnRQcmVzZW50KSB7XG4gICAgICBmb2N1c2VkRXZlbnQhLmZvY3VzZWQgPSBmb2N1c2VkRXZlbnRQcmVzZW50O1xuICAgICAgZm9jdXNlZEV2ZW50IS5ob3ZlcmVkID0gIWZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGhvdmVyZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGhvdmVyZWRFdmVudCEuaG92ZXJlZCA9IGhvdmVyZWRFdmVudFByZXNlbnQ7XG4gICAgICBob3ZlcmVkRXZlbnQhLmZvY3VzZWQgPSAhaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoIWhvdmVyZWRFdmVudFByZXNlbnQgJiYgIWZvY3VzZWRFdmVudFByZXNlbnQpIHJldHVybiA8PjwvPjtcbiAgICByZXR1cm4gKFxuICAgICAgPEV2ZW50XG4gICAgICAgIGV2ZW50PXtmb2N1c2VkRXZlbnQhIHx8IGhvdmVyZWRFdmVudCF9XG4gICAgICAgIG1hcD17bWFwfVxuICAgICAgICBlZGdlcz17ZWRnZXMhfVxuICAgICAgICBwb2ludHM9e3BvaW50cyF9XG4gICAgICAgIGluY2x1ZGVOZXR3b3JrPXshaG92ZXJlZEV2ZW50UHJlc2VudH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSwgW2ZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50LCBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgIH07XG4gIH0sIFtmb2N1c2VkRXZlbnQsIGhvdmVyZWRFdmVudCwgZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdGlhbGl6ZU1hcChcbiAgICAgIG1hcFpvb21MZXZlbCxcbiAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgbGVhZmxldE1hcC5zYXRlbGxpdGUsXG4gICAgICBtYXBSZWYsXG4gICAgICBkaXNwYXRjaCxcbiAgICAgIGlzVmFsaWRBcmVhLFxuICAgICAgYXJlYVRvQ2VudGVyQnksXG4gICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICBmb3JXV1RQRGFzaGJvYXJkLFxuICAgICAgdHJ1ZSxcbiAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICB1bm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgbW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICB3d3Rwc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXApO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihtb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXApO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGFyZWFzTGF5ZXJHcm91cCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmUoKTtcbiAgICAgIGRpc3BhdGNoKHN0b3JlTWFwKHVuZGVmaW5lZCkpO1xuICAgIH07XG4gIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRNYXBab29tTGV2ZWwobWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpKTtcbiAgICAgIGlmICghYXJlYVRvQ2VudGVyQnkpIHtcbiAgICAgICAgYXJlYVRvQ2VudGVyQnkgPSBhcmVhcy5tYXAoKGFyZWEpID0+IGFyZWEuc2hhcGVfZGF0YSkuZmxhdCgpO1xuICAgICAgfVxuXG4gICAgICBhcmVhRm9jdXNMb2dpYyhtYXBSZWYsIGlzVmFsaWRBcmVhLCBhcmVhVG9DZW50ZXJCeSk7XG4gICAgICB0cmFja0xheWVyYm94KCk7XG4gICAgfVxuICB9LCBbbWFwUmVmLmN1cnJlbnQsIGFyZWFUb0NlbnRlckJ5XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgY2xpY2tlZCA9IGZhbHNlO1xuXG4gICAgbWFwUmVmLmN1cnJlbnQ/LmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgIGlmIChjbGlja2VkKSByZXR1cm47XG5cbiAgICAgIGlmIChcbiAgICAgICAgbGF5ZXI/LmthbmRvX29iamVjdF9pZCA9PT0gc2VsZWN0ZWRJdGVtICYmXG4gICAgICAgIGxheWVyLmlzUG9wdXBPcGVuKCkgPT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5NYXJrZXIpIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljaycpO1xuICAgICAgICB9IGVsc2UgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5Qb2x5Z29uKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2stZXZlbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjbGlja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJrZC1tYXAtY29udGFpbmVyXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgIG1hcC1jb250YWluZXIgJHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS5zaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdtYXAtY29udGFpbmVyLS1zaWRlbmF2LWNvbGxhcHNlZCdcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIDxkaXYgaWQ9XCJtYXBcIj48L2Rpdj5cbiAgICAgICAgICB7c2hvdWxkTG9hZE1hcE9iamVjdHMoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgZWRnZXMsIHBvaW50cykgJiYgKFxuICAgICAgICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICAgICAgICBhcmVhcz17YXJlYXN9XG4gICAgICAgICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXthcmVhVG9DZW50ZXJCeX1cbiAgICAgICAgICAgICAgbWFwWm9vbT17bWFwWm9vbUxldmVsfVxuICAgICAgICAgICAgICByZXJlbmRlcj17em9vbUxldmVsc1ttYXBab29tTGV2ZWxdfVxuICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgICAgICAgIGZlYXR1cmVHcm91cD17YXJlYXNMYXllckdyb3VwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzKFxuICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLFxuICAgICAgICAgICAgbWFwUmVmLFxuICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICkgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge21lbW9pemVkRXZlbnR9XG4gICAgICAgICAgICAgIHttZW1vaXplZFpvb21Db250cm9sfVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBT0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBT0EsSUFBQUcsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVQsT0FBQTtBQVlBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFlBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFFBQUEsR0FBQVosT0FBQTtBQUFvRCxTQUFBYSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQWYsd0JBQUFtQixHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsYUFBQUUsT0FBQSxDQUFBRixHQUFBLHlCQUFBQSxH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