@kando-env/kando-ui 1.2.420-alpha.8 → 1.2.421
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.
- package/lib/Widgets/Map/Map.js +39 -51
- package/lib/Widgets/Map/MapUtils.js +2 -23
- package/lib/Widgets/Map/points/PointIcon.js +4 -12
- package/lib/Widgets/Map/points/PointIcon.scss +0 -6
- package/lib/Widgets/Map/points/PointMarkers.js +6 -1
- package/lib/Widgets/Map/points/PointUtils.js +6 -21
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +2 -1
- package/lib/Widgets/PotentialImpactSummary/Icon.js +2 -1
- package/lib/components/DamageType/DamageType.js +3 -3
- package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +2 -1
- package/lib/hooks/useMap.js +2 -2
- package/lib/i18n/en.json +1 -2
- package/lib/macros/getVersion.js +2 -2
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +2 -1
- package/lib/pages/EventsPage/events/event_info/EventSection.test.js +22 -21
- package/lib/pages/EventsPage/events/event_info/Header/Header.js +1 -1
- package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +1 -1
- package/lib/pages/EventsPage/events/event_info/Header/index.js +1 -1
- package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +1 -1
- package/lib/pages/EventsPage/events/event_info/Timelines/index.js +1 -1
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +4 -19
- package/lib/pages/ImportGisPage/importGisUtils.js +14 -41
- package/lib/pages/ImportGisPage/style.module.scss +1 -1
- package/lib/pages/OperationsPage/Map/useMap.js +3 -3
- package/lib/pages/PollutionRiskAssessment/useMap.js +2 -2
- package/lib/store/permissions/permissionsSlice.js +1 -3
- package/lib/store/points/models/IPoint.js +1 -1
- package/lib/test/mocks/browser.js +1 -1
- package/lib/test/test-utils.js +1 -1
- package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -1
- package/lib/utilities/Enum.js +4 -4
- package/lib/utilities/File.js +4 -7
- package/lib/utilities/map/icons.js +2 -7
- package/lib/utilities/scoreToData.test.js +1 -1
- package/package.json +1 -1
- package/lib/assets/map/sampler.svg +0 -9
|
@@ -23,26 +23,18 @@ var getPointIconByType = function getPointIconByType(type, title, subtitle) {
|
|
|
23
23
|
var clicked = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
24
24
|
var hideText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
25
25
|
var hasIssues = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
26
|
-
var
|
|
27
|
-
var shouldInstall = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
|
|
26
|
+
var shouldInstall = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
28
27
|
var icon = clicked ? (0, _icons.matchIconToSite)(type, hasIssues, shouldInstall).clicked : (0, _icons.matchIconToSite)(type, hasIssues, shouldInstall).default;
|
|
29
|
-
return iconHtml(icon, title, subtitle, clicked, type, hideText
|
|
28
|
+
return iconHtml(icon, title, subtitle, clicked, type, hideText);
|
|
30
29
|
};
|
|
31
30
|
exports.getPointIconByType = getPointIconByType;
|
|
32
31
|
var iconHtml = function iconHtml(imageUrl, title, subtitle, clicked, type, hideText) {
|
|
33
|
-
var showSampler = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
34
32
|
var text = title ? "<div class=\"icon-title\">".concat(title, "</div>") : '';
|
|
35
33
|
text += subtitle ? "<div class=\"icon-subtitle\">".concat(subtitle, "</div>") : '';
|
|
36
34
|
var colorClass = getColorClass(type);
|
|
37
35
|
var className = type === 'Groups::default' ? 'default-svg' : 'centered-svg';
|
|
38
|
-
var handleSamplerIcon = function handleSamplerIcon() {
|
|
39
|
-
if (showSampler) {
|
|
40
|
-
return "<img src=\"".concat((0, _icons.samplerIcon)(), "\" class=\"sampler-icon\">");
|
|
41
|
-
}
|
|
42
|
-
return '';
|
|
43
|
-
};
|
|
44
36
|
var icon = new _leaflet.default.DivIcon({
|
|
45
|
-
html: "<div class=\"icon-holder ".concat(clicked ? 'clicked' : '', "\"
|
|
37
|
+
html: "<div class=\"icon-holder ".concat(clicked ? 'clicked' : '', "\">\n <img class=\"").concat(className, "\" src=\"").concat(imageUrl, "\">\n <div class=\"icon-text ").concat(hideText ? 'hidden-text' : '', " ").concat(colorClass, "\">\n ").concat(text, "\n </div>\n </div>"),
|
|
46
38
|
popupAnchor: [0, -30]
|
|
47
39
|
});
|
|
48
40
|
return icon;
|
|
@@ -53,4 +45,4 @@ var getColorClass = function getColorClass(type) {
|
|
|
53
45
|
};
|
|
54
46
|
var _default = PointIcon;
|
|
55
47
|
exports.default = _default;
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pY29ucyIsIl9sZWFmbGV0IiwiUG9pbnRJY29uIiwiX3JlZiIsImltYWdlVXJsIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzcmMiLCJhbHQiLCJnZXRQb2ludEljb25CeVR5cGUiLCJ0eXBlIiwidGl0bGUiLCJzdWJ0aXRsZSIsImNsaWNrZWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJoaWRlVGV4dCIsImhhc0lzc3VlcyIsInNob3VsZEluc3RhbGwiLCJpY29uIiwibWF0Y2hJY29uVG9TaXRlIiwiaWNvbkh0bWwiLCJleHBvcnRzIiwidGV4dCIsImNvbmNhdCIsImNvbG9yQ2xhc3MiLCJnZXRDb2xvckNsYXNzIiwiTCIsIkRpdkljb24iLCJodG1sIiwicG9wdXBBbmNob3IiLCJjb2xvciIsInNwbGl0IiwidG9Mb3dlckNhc2UiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRJY29uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL1BvaW50SWNvbi5zY3NzJztcbmltcG9ydCB7IG1hdGNoSWNvblRvU2l0ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9tYXAvaWNvbnMnO1xuaW1wb3J0IEwgZnJvbSAnbGVhZmxldCc7XG5cbmNvbnN0IFBvaW50SWNvbiA9ICh7IGltYWdlVXJsIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlLWNpcmNsZVwiPlxuICAgICAgPGltZyBjbGFzc05hbWU9XCJjZW50ZXJlZC1zdmdcIiBzcmM9e2ltYWdlVXJsfSBhbHQ9XCJwb2ludCBpY29uXCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQb2ludEljb25CeVR5cGUgPSAoXG4gIHR5cGU6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgc3VidGl0bGU6IHN0cmluZyxcbiAgY2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlLFxuICBoaWRlVGV4dDogYm9vbGVhbiA9IHRydWUsXG4gIGhhc0lzc3VlczogYm9vbGVhbiA9IGZhbHNlLFxuICBzaG91bGRJbnN0YWxsOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgbGV0IGljb24gPSBjbGlja2VkXG4gICAgPyBtYXRjaEljb25Ub1NpdGUodHlwZSwgaGFzSXNzdWVzLCBzaG91bGRJbnN0YWxsKS5jbGlja2VkXG4gICAgOiBtYXRjaEljb25Ub1NpdGUodHlwZSwgaGFzSXNzdWVzLCBzaG91bGRJbnN0YWxsKS5kZWZhdWx0O1xuICByZXR1cm4gaWNvbkh0bWwoaWNvbiwgdGl0bGUsIHN1YnRpdGxlLCBjbGlja2VkLCB0eXBlLCBoaWRlVGV4dCk7XG59O1xuXG5jb25zdCBpY29uSHRtbCA9IChcbiAgaW1hZ2VVcmw6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgc3VidGl0bGU6IHN0cmluZyxcbiAgY2xpY2tlZDogYm9vbGVhbixcbiAgdHlwZTogc3RyaW5nLFxuICBoaWRlVGV4dDogYm9vbGVhbixcbikgPT4ge1xuICBsZXQgdGV4dCA9IHRpdGxlID8gYDxkaXYgY2xhc3M9XCJpY29uLXRpdGxlXCI+JHt0aXRsZX08L2Rpdj5gIDogJyc7XG4gIHRleHQgKz0gc3VidGl0bGUgPyBgPGRpdiBjbGFzcz1cImljb24tc3VidGl0bGVcIj4ke3N1YnRpdGxlfTwvZGl2PmAgOiAnJztcblxuICBjb25zdCBjb2xvckNsYXNzID0gZ2V0Q29sb3JDbGFzcyh0eXBlKTtcblxuICBjb25zdCBjbGFzc05hbWUgPSB0eXBlID09PSAnR3JvdXBzOjpkZWZhdWx0JyA/ICdkZWZhdWx0LXN2ZycgOiAnY2VudGVyZWQtc3ZnJztcblxuICBjb25zdCBpY29uID0gbmV3IEwuRGl2SWNvbih7XG4gICAgaHRtbDogYDxkaXYgY2xhc3M9XCJpY29uLWhvbGRlciAke2NsaWNrZWQgPyAnY2xpY2tlZCcgOiAnJ31cIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiJHtjbGFzc05hbWV9XCIgc3JjPVwiJHtpbWFnZVVybH1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi10ZXh0ICR7XG4gICAgICAgICAgICAgICAgICBoaWRlVGV4dCA/ICdoaWRkZW4tdGV4dCcgOiAnJ1xuICAgICAgICAgICAgICAgIH0gICR7Y29sb3JDbGFzc31cIj5cbiAgICAgICAgICAgICAgICAgICAgJHt0ZXh0fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+YCxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xuXG4gIHJldHVybiBpY29uO1xufTtcblxuY29uc3QgZ2V0Q29sb3JDbGFzcyA9ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgbGV0IGNvbG9yID0gdHlwZS5zcGxpdCgnOjonKVsxXS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gJ2NvbG9yLXRleHQtJyArIGNvbG9yO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUG9pbnRJY29uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFNRyxTQUFTLEdBQUcsU0FBWkEsU0FBU0EsQ0FBQUMsSUFBQSxFQUFxQjtFQUFBLElBQWZDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0VBQzNCLG9CQUNFUCxNQUFBLENBQUFRLE9BQUEsQ0FBQUMsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBYyxnQkFDM0JWLE1BQUEsQ0FBQVEsT0FBQSxDQUFBQyxhQUFBO0lBQUtDLFNBQVMsRUFBQyxjQUFjO0lBQUNDLEdBQUcs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
|
|
@@ -155,6 +155,11 @@ var PointMarkers = function PointMarkers(props) {
|
|
|
155
155
|
// }
|
|
156
156
|
}
|
|
157
157
|
}, [rerender, points]);
|
|
158
|
+
|
|
159
|
+
// useEffect(() => {
|
|
160
|
+
// makeSureThereAreNoDuplicates();
|
|
161
|
+
// }, [eventsData.focusedEvent, eventsData.isFetching, rerender]);
|
|
162
|
+
|
|
158
163
|
return /*#__PURE__*/_react.default.createElement("div", null, points.length !== 0 && filteredPoints().map(function (point) {
|
|
159
164
|
return /*#__PURE__*/_react.default.createElement(_PointMarker.default, {
|
|
160
165
|
map: map,
|
|
@@ -167,4 +172,4 @@ var PointMarkers = function PointMarkers(props) {
|
|
|
167
172
|
}));
|
|
168
173
|
};
|
|
169
174
|
exports.PointMarkers = PointMarkers;
|
|
170
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUG9pbnRNYXJrZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1BvaW50VXRpbHMiLCJfcmVhY3RSZWR1eCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiUG9pbnRNYXJrZXJzIiwicHJvcHMiLCJwb2ludHMiLCJtYXAiLCJmYWN0b3JpZXNHcm91cCIsInd3dHBzR3JvdXAiLCJjb2xsZWN0b3JzR3JvdXAiLCJyZXJlbmRlciIsImlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMiLCJwb2ludCIsInBvaW50SXNXV1RQIiwicG9pbnRJc0ZhY3RvcnkiLCJncm91cCIsInR5cGUiLCJoYXNfZGV2aWNlIiwicG9pbnRIYXNDb29yZGluYXRlcyIsImxhdCIsImxhdGl0dWRlIiwibG5nIiwibG9uZ2l0dWRlIiwiaXNWYWxpZCIsImlzTmFOIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJpZCIsImZpbHRlclN0YXRlbWVudCIsImZpbHRlcmVkUG9pbnRzIiwiZmlsdGVyIiwidXNlckluZm8iLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwicGVybWlzc2lvbnMiLCJ1c2VyX2luZm8iLCJ1c2VFZmZlY3QiLCJhZGRMYXllckdyb3VwIiwicmVtb3ZlTGF5ZXJHcm91cCIsImNyZWF0ZUVsZW1lbnQiLCJsZW5ndGgiLCJsYXllckdyb3VwIiwiZmxvd1JhdGVVbml0IiwiZmxvd19yYXRlX3VuaXQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL3BvaW50cy9Qb2ludE1hcmtlcnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IFBvaW50TWFya2VyIGZyb20gJy4vUG9pbnRNYXJrZXInO1xuaW1wb3J0IHtcbiAgYWRkTGF5ZXJHcm91cCxcbiAgcmVtb3ZlTGF5ZXJHcm91cCxcbiAgcG9pbnRJc0ZhY3RvcnksXG4gIHBvaW50SXNXV1RQLFxufSBmcm9tICcuL1BvaW50VXRpbHMnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIG1hcDogYW55O1xuICBwb2ludHM6IGFueTtcbiAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiBib29sZWFuO1xuICByZXJlbmRlcjogc3RyaW5nO1xuICBmYWN0b3JpZXNHcm91cDogYW55O1xuICB3d3Rwc0dyb3VwOiBhbnk7XG4gIGNvbGxlY3RvcnNHcm91cDogYW55O1xuICBmb3JFdmVudHNWaWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE1hcmtlcnM6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IHBvaW50cywgbWFwLCBmYWN0b3JpZXNHcm91cCwgd3d0cHNHcm91cCwgY29sbGVjdG9yc0dyb3VwLCByZXJlbmRlciB9ID1cbiAgICBwcm9wcztcblxuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgcG9pbnQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBtYXAuXG4gIGNvbnN0IGlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBwb2ludElzV1dUUChwb2ludCkgfHxcbiAgICAgIHBvaW50SXNGYWN0b3J5KHBvaW50KSB8fFxuICAgICAgKHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkNvbGxlY3RvcnMnICYmIHBvaW50Lmhhc19kZXZpY2UpIHx8XG4gICAgICBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpQdW1wU3RhdGlvbidcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHBvaW50SGFzQ29vcmRpbmF0ZXMgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIGNvbnN0IGxhdCA9IHBvaW50LmxhdGl0dWRlO1xuICAgIGNvbnN0IGxuZyA9IHBvaW50LmxvbmdpdHVkZTtcbiAgICBjb25zdCBpc1ZhbGlkID1cbiAgICAgIHR5cGVvZiBsYXQgPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbG5nID09PSAnbnVtYmVyJyAmJlxuICAgICAgIWlzTmFOKGxhdCkgJiZcbiAgICAgICFpc05hTihsbmcpO1xuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgY29uc29sZS53YXJuKGBQb2ludCAke3BvaW50LmlkfSBoYXMgaW52YWxpZCBjb29yZGluYXRlczogJHtsYXR9LCAke2xuZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH07XG5cbiAgY29uc3QgZmlsdGVyU3RhdGVtZW50ID0gKHBvaW50KSA9PiB7XG4gICAgcmV0dXJuIGlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMocG9pbnQpICYmIHBvaW50SGFzQ29vcmRpbmF0ZXMocG9pbnQpO1xuICB9O1xuXG4gIGNvbnN0IGZpbHRlcmVkUG9pbnRzID0gKCkgPT4ge1xuICAgIHJldHVybiBwb2ludHMuZmlsdGVyKChwb2ludDogSVBvaW50KSA9PiBmaWx0ZXJTdGF0ZW1lbnQocG9pbnQpKTtcbiAgfTtcblxuICAvLyBjb25zdCBnbG9iYWxEYXRhID0gdXNlU2VsZWN0b3IoXG4gIC8vICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZ2xvYmFsX2RhdGEsXG4gIC8vICk7XG5cbiAgY29uc3QgdXNlckluZm8gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLnBlcm1pc3Npb25zLnVzZXJfaW5mbyk7XG5cbiAgLy8gY29uc3QgW2xheWVyc1RvUmVtb3ZlLCBzZXRMYXllcnNUb1JlbW92ZV0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuXG4gIC8vIGNvbnN0IHJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIgPSAodW5pcWVJZHMsIGxvY2FsTGF5ZXJzVG9SZW1vdmUpID0+IHtcbiAgLy8gICBpZiAoIWZhY3Rvcmllc0dyb3VwIHx8ICFtYXApIHtcbiAgLy8gICAgIGNvbnNvbGUud2FybignRWl0aGVyIGZhY3Rvcmllc0dyb3VwIG9yIG1hcCBpcyB1bmRlZmluZWQuJyk7XG4gIC8vICAgICByZXR1cm47XG4gIC8vICAgfVxuXG4gIC8vICAgLy8gUmVmcmVzaCBjbHVzdGVycyB0byB1cGRhdGUgaW50ZXJuYWwgc3RydWN0dXJlcy5cbiAgLy8gICBmYWN0b3JpZXNHcm91cC5yZWZyZXNoQ2x1c3RlcnMoKTtcblxuICAvLyAgIHVuaXFlSWRzLmZvckVhY2goKGlkKSA9PiB7XG4gIC8vICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIG1hcC5fbGF5ZXJzKSB7XG4gIC8vICAgICAgIGNvbnN0IGxheWVyID0gbWFwLl9sYXllcnNbcHJvcGVydHldO1xuICAvLyAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBsYXllciBleGlzdHMsIGlzIG9mIHR5cGUgJ1BvaW50JywgaGFzIHRoZSBleHBlY3RlZCBpZCxcbiAgLy8gICAgICAgLy8gYW5kIHRoYXQgaXQgaW1wbGVtZW50cyBnZXRMYXRMbmcuXG4gIC8vICAgICAgIGlmIChcbiAgLy8gICAgICAgICBsYXllciAmJlxuICAvLyAgICAgICAgIGxheWVyLmthbmRvX29iamVjdCA9PT0gJ1BvaW50JyAmJlxuICAvLyAgICAgICAgIGxheWVyLmthbmRvX29iamVjdF9pZCA9PT0gaWQgJiZcbiAgLy8gICAgICAgICB0eXBlb2YgbGF5ZXIuZ2V0TGF0TG5nID09PSAnZnVuY3Rpb24nICYmXG4gIC8vICAgICAgICAgdHlwZW9mIGxheWVyLl96b29tID09PSAnbnVtYmVyJ1xuICAvLyAgICAgICApIHtcbiAgLy8gICAgICAgICBsb2NhbExheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG5cbiAgLy8gICAvLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgYW5kIGFueSB1bmRlZmluZWQgbGF5ZXJzLlxuICAvLyAgIGNvbnN0IHVuaXF1ZUxheWVycyA9IGxvY2FsTGF5ZXJzVG9SZW1vdmUuZmlsdGVyKFxuICAvLyAgICAgKGxheWVyLCBpbmRleCwgc2VsZikgPT5cbiAgLy8gICAgICAgbGF5ZXIgJiZcbiAgLy8gICAgICAgdHlwZW9mIGxheWVyLmdldExhdExuZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAvLyAgICAgICBpbmRleCA9PT1cbiAgLy8gICAgICAgICBzZWxmLmZpbmRJbmRleCgobCkgPT4gbC5rYW5kb19vYmplY3RfaWQgPT09IGxheWVyLmthbmRvX29iamVjdF9pZCksXG4gIC8vICAgKTtcblxuICAvLyAgIHNldExheWVyc1RvUmVtb3ZlKHVuaXF1ZUxheWVycyk7XG4gIC8vICAgZmFjdG9yaWVzR3JvdXAucmVtb3ZlTGF5ZXJzKHVuaXF1ZUxheWVycyk7XG4gIC8vIH07XG5cbiAgLy8gY29uc3QgYWRkRXZlbnRQb2ludHNUb0NsdXN0ZXIgPSAoKSA9PiB7XG4gIC8vICAgbGV0IGxheWVyc1RvRHJhdyA9IFtdO1xuICAvLyAgIGxldCBsYXllcnNJZHMgPSBsYXllcnNUb1JlbW92ZS5tYXAoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQpO1xuICAvLyAgIGxldCB1bmlxZUlkcyA9IFsuLi5uZXcgU2V0KGxheWVyc0lkcyldO1xuICAvLyAgIHVuaXFlSWRzLmZvckVhY2goKGlkKSA9PiB7XG4gIC8vICAgICBsYXllcnNUb0RyYXcucHVzaChcbiAgLy8gICAgICAgbGF5ZXJzVG9SZW1vdmUuZmluZCgobGF5ZXIpID0+IGxheWVyLmthbmRvX29iamVjdF9pZCA9PT0gaWQpLFxuICAvLyAgICAgKTtcbiAgLy8gICB9KTtcblxuICAvLyAgIGxheWVyc1RvRHJhdy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAvLyAgICAgbGV0IHBvaW50ID0gcG9pbnRzLmZpbmQoKHBvaW50KSA9PiBwb2ludC5pZCA9PT0gbGF5ZXIua2FuZG9fb2JqZWN0X2lkKTtcbiAgLy8gICAgIHBvaW50ICYmIGJpbmRQb3B1cFRvTWFya2VyKHBvaW50LCBsYXllciwgdXNlckluZm8uZmxvd19yYXRlX3VuaXQpO1xuICAvLyAgIH0pO1xuICAvLyAgIGZhY3Rvcmllc0dyb3VwLmFkZExheWVycyhsYXllcnNUb0RyYXcpO1xuICAvLyB9O1xuXG4gIC8vIGNvbnN0IG1ha2VTdXJlVGhlcmVBcmVOb0R1cGxpY2F0ZXMgPSAoKSA9PiB7XG4gIC8vICAgbGV0IGxvY2FsTGF5ZXJzVG9SZW1vdmUgPSBbXTtcblxuICAvLyAgIGlmIChldmVudHNEYXRhLmZvY3VzZWRFdmVudCkge1xuICAvLyAgICAgbGV0IG9ic0lkcyA9IGV2ZW50c0RhdGEuZm9jdXNlZEV2ZW50Lm9ic2VydmF0aW9ucy5tYXAoXG4gIC8vICAgICAgIChvYnMpID0+IG9icy5wb2ludF9pZCxcbiAgLy8gICAgICk7XG4gIC8vICAgICBsZXQgdW5pcWVJZHMgPSBbLi4ubmV3IFNldChvYnNJZHMpXTtcbiAgLy8gICAgIHJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIodW5pcWVJZHMsIGxvY2FsTGF5ZXJzVG9SZW1vdmUpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBhZGRFdmVudFBvaW50c1RvQ2x1c3RlcigpO1xuICAvLyAgIH1cbiAgLy8gfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtYXApIHtcbiAgICAgIC8vIGlmIChmb3JFdmVudHNWaWV3KSB7XG4gICAgICAvLyAgIC8vIEluIGV2ZW50cyB2aWV3LCBhbHdheXMgc2hvdyBhbGwgbGF5ZXJzXG4gICAgICAvLyAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAvLyAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgIC8vICAgYWRkTGF5ZXJHcm91cChtYXAsIGNvbGxlY3RvcnNHcm91cCk7XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChyZXJlbmRlcikge1xuICAgICAgICBjYXNlICdYTGFyZ2UnOlxuICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgICAvLyBmYWN0b3JpZXMgZ3JvdXAgaGFzIGEgcGFyZW50IGxheWVyIGluIG1hcC50c3hcbiAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSBpdCBoZXJlXG4gICAgICAgICAgLy8gcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgY29sbGVjdG9yc0dyb3VwKTtcbiAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgZmFjdG9yaWVzR3JvdXApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMYXJnZSc6XG4gICAgICAgIGNhc2UgJ01MYXJnZSc6XG4gICAgICAgIGNhc2UgJ01lZGl1bSc6XG4gICAgICAgIGNhc2UgJ1NtYWxsJzpcbiAgICAgICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgZmFjdG9yaWVzUGFyZW50R3JvdXAgaW4gbWFwLnRzeFxuICAgICAgICAgIC8vIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIHd3dHBzR3JvdXApO1xuICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBjb2xsZWN0b3JzR3JvdXApO1xuICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyB9XG4gICAgfVxuICB9LCBbcmVyZW5kZXIsIHBvaW50c10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtwb2ludHMubGVuZ3RoICE9PSAwICYmXG4gICAgICAgIGZpbHRlcmVkUG9pbnRzKCkubWFwKChwb2ludDogSVBvaW50KSA9PiAoXG4gICAgICAgICAgPFBvaW50TWFya2VyXG4gICAgICAgICAgICBtYXA9e21hcH1cbiAgICAgICAgICAgIHBvaW50PXtwb2ludH1cbiAgICAgICAgICAgIGtleT17cG9pbnQuaWR9XG4gICAgICAgICAgICByZXJlbmRlcj17cmVyZW5kZXJ9XG4gICAgICAgICAgICBsYXllckdyb3VwPXtcbiAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeSdcbiAgICAgICAgICAgICAgICA/IGZhY3Rvcmllc0dyb3VwXG4gICAgICAgICAgICAgICAgOiBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnXG4gICAgICAgICAgICAgICAgPyB3d3Rwc0dyb3VwXG4gICAgICAgICAgICAgICAgOiBjb2xsZWN0b3JzR3JvdXBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZsb3dSYXRlVW5pdD17dXNlckluZm8uZmxvd19yYXRlX3VuaXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFlBQUEsR0FBQUMsc0JB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
|
|
175
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUG9pbnRNYXJrZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1BvaW50VXRpbHMiLCJfcmVhY3RSZWR1eCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiUG9pbnRNYXJrZXJzIiwicHJvcHMiLCJwb2ludHMiLCJtYXAiLCJmYWN0b3JpZXNHcm91cCIsInd3dHBzR3JvdXAiLCJjb2xsZWN0b3JzR3JvdXAiLCJyZXJlbmRlciIsImlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMiLCJwb2ludCIsInBvaW50SXNXV1RQIiwicG9pbnRJc0ZhY3RvcnkiLCJncm91cCIsInR5cGUiLCJoYXNfZGV2aWNlIiwicG9pbnRIYXNDb29yZGluYXRlcyIsImxhdCIsImxhdGl0dWRlIiwibG5nIiwibG9uZ2l0dWRlIiwiaXNWYWxpZCIsImlzTmFOIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJpZCIsImZpbHRlclN0YXRlbWVudCIsImZpbHRlcmVkUG9pbnRzIiwiZmlsdGVyIiwidXNlckluZm8iLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwicGVybWlzc2lvbnMiLCJ1c2VyX2luZm8iLCJ1c2VFZmZlY3QiLCJhZGRMYXllckdyb3VwIiwicmVtb3ZlTGF5ZXJHcm91cCIsImNyZWF0ZUVsZW1lbnQiLCJsZW5ndGgiLCJsYXllckdyb3VwIiwiZmxvd1JhdGVVbml0IiwiZmxvd19yYXRlX3VuaXQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL3BvaW50cy9Qb2ludE1hcmtlcnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IFBvaW50TWFya2VyIGZyb20gJy4vUG9pbnRNYXJrZXInO1xuaW1wb3J0IHtcbiAgYWRkTGF5ZXJHcm91cCxcbiAgcmVtb3ZlTGF5ZXJHcm91cCxcbiAgcG9pbnRJc0ZhY3RvcnksXG4gIHBvaW50SXNXV1RQLFxufSBmcm9tICcuL1BvaW50VXRpbHMnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIG1hcDogYW55O1xuICBwb2ludHM6IGFueTtcbiAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiBib29sZWFuO1xuICByZXJlbmRlcjogc3RyaW5nO1xuICBmYWN0b3JpZXNHcm91cDogYW55O1xuICB3d3Rwc0dyb3VwOiBhbnk7XG4gIGNvbGxlY3RvcnNHcm91cDogYW55O1xuICBmb3JFdmVudHNWaWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE1hcmtlcnM6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IHBvaW50cywgbWFwLCBmYWN0b3JpZXNHcm91cCwgd3d0cHNHcm91cCwgY29sbGVjdG9yc0dyb3VwLCByZXJlbmRlciB9ID1cbiAgICBwcm9wcztcblxuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgcG9pbnQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBtYXAuXG4gIGNvbnN0IGlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBwb2ludElzV1dUUChwb2ludCkgfHxcbiAgICAgIHBvaW50SXNGYWN0b3J5KHBvaW50KSB8fFxuICAgICAgKHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkNvbGxlY3RvcnMnICYmIHBvaW50Lmhhc19kZXZpY2UpIHx8XG4gICAgICBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpQdW1wU3RhdGlvbidcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHBvaW50SGFzQ29vcmRpbmF0ZXMgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIGNvbnN0IGxhdCA9IHBvaW50LmxhdGl0dWRlO1xuICAgIGNvbnN0IGxuZyA9IHBvaW50LmxvbmdpdHVkZTtcbiAgICBjb25zdCBpc1ZhbGlkID1cbiAgICAgIHR5cGVvZiBsYXQgPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbG5nID09PSAnbnVtYmVyJyAmJlxuICAgICAgIWlzTmFOKGxhdCkgJiZcbiAgICAgICFpc05hTihsbmcpO1xuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgY29uc29sZS53YXJuKGBQb2ludCAke3BvaW50LmlkfSBoYXMgaW52YWxpZCBjb29yZGluYXRlczogJHtsYXR9LCAke2xuZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH07XG5cbiAgY29uc3QgZmlsdGVyU3RhdGVtZW50ID0gKHBvaW50KSA9PiB7XG4gICAgcmV0dXJuIGlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMocG9pbnQpICYmIHBvaW50SGFzQ29vcmRpbmF0ZXMocG9pbnQpO1xuICB9O1xuXG4gIGNvbnN0IGZpbHRlcmVkUG9pbnRzID0gKCkgPT4ge1xuICAgIHJldHVybiBwb2ludHMuZmlsdGVyKChwb2ludDogSVBvaW50KSA9PiBmaWx0ZXJTdGF0ZW1lbnQocG9pbnQpKTtcbiAgfTtcblxuICAvLyBjb25zdCBnbG9iYWxEYXRhID0gdXNlU2VsZWN0b3IoXG4gIC8vICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZ2xvYmFsX2RhdGEsXG4gIC8vICk7XG5cbiAgY29uc3QgdXNlckluZm8gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLnBlcm1pc3Npb25zLnVzZXJfaW5mbyk7XG5cbiAgLy8gY29uc3QgW2xheWVyc1RvUmVtb3ZlLCBzZXRMYXllcnNUb1JlbW92ZV0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuXG4gIC8vIGNvbnN0IHJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIgPSAodW5pcWVJZHMsIGxvY2FsTGF5ZXJzVG9SZW1vdmUpID0+IHtcbiAgLy8gICBpZiAoIWZhY3Rvcmllc0dyb3VwIHx8ICFtYXApIHtcbiAgLy8gICAgIGNvbnNvbGUud2FybignRWl0aGVyIGZhY3Rvcmllc0dyb3VwIG9yIG1hcCBpcyB1bmRlZmluZWQuJyk7XG4gIC8vICAgICByZXR1cm47XG4gIC8vICAgfVxuXG4gIC8vICAgLy8gUmVmcmVzaCBjbHVzdGVycyB0byB1cGRhdGUgaW50ZXJuYWwgc3RydWN0dXJlcy5cbiAgLy8gICBmYWN0b3JpZXNHcm91cC5yZWZyZXNoQ2x1c3RlcnMoKTtcblxuICAvLyAgIHVuaXFlSWRzLmZvckVhY2goKGlkKSA9PiB7XG4gIC8vICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIG1hcC5fbGF5ZXJzKSB7XG4gIC8vICAgICAgIGNvbnN0IGxheWVyID0gbWFwLl9sYXllcnNbcHJvcGVydHldO1xuICAvLyAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBsYXllciBleGlzdHMsIGlzIG9mIHR5cGUgJ1BvaW50JywgaGFzIHRoZSBleHBlY3RlZCBpZCxcbiAgLy8gICAgICAgLy8gYW5kIHRoYXQgaXQgaW1wbGVtZW50cyBnZXRMYXRMbmcuXG4gIC8vICAgICAgIGlmIChcbiAgLy8gICAgICAgICBsYXllciAmJlxuICAvLyAgICAgICAgIGxheWVyLmthbmRvX29iamVjdCA9PT0gJ1BvaW50JyAmJlxuICAvLyAgICAgICAgIGxheWVyLmthbmRvX29iamVjdF9pZCA9PT0gaWQgJiZcbiAgLy8gICAgICAgICB0eXBlb2YgbGF5ZXIuZ2V0TGF0TG5nID09PSAnZnVuY3Rpb24nICYmXG4gIC8vICAgICAgICAgdHlwZW9mIGxheWVyLl96b29tID09PSAnbnVtYmVyJ1xuICAvLyAgICAgICApIHtcbiAgLy8gICAgICAgICBsb2NhbExheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG5cbiAgLy8gICAvLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgYW5kIGFueSB1bmRlZmluZWQgbGF5ZXJzLlxuICAvLyAgIGNvbnN0IHVuaXF1ZUxheWVycyA9IGxvY2FsTGF5ZXJzVG9SZW1vdmUuZmlsdGVyKFxuICAvLyAgICAgKGxheWVyLCBpbmRleCwgc2VsZikgPT5cbiAgLy8gICAgICAgbGF5ZXIgJiZcbiAgLy8gICAgICAgdHlwZW9mIGxheWVyLmdldExhdExuZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAvLyAgICAgICBpbmRleCA9PT1cbiAgLy8gICAgICAgICBzZWxmLmZpbmRJbmRleCgobCkgPT4gbC5rYW5kb19vYmplY3RfaWQgPT09IGxheWVyLmthbmRvX29iamVjdF9pZCksXG4gIC8vICAgKTtcblxuICAvLyAgIHNldExheWVyc1RvUmVtb3ZlKHVuaXF1ZUxheWVycyk7XG4gIC8vICAgZmFjdG9yaWVzR3JvdXAucmVtb3ZlTGF5ZXJzKHVuaXF1ZUxheWVycyk7XG4gIC8vIH07XG5cbiAgLy8gY29uc3QgYWRkRXZlbnRQb2ludHNUb0NsdXN0ZXIgPSAoKSA9PiB7XG4gIC8vICAgbGV0IGxheWVyc1RvRHJhdyA9IFtdO1xuICAvLyAgIGxldCBsYXllcnNJZHMgPSBsYXllcnNUb1JlbW92ZS5tYXAoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQpO1xuICAvLyAgIGxldCB1bmlxZUlkcyA9IFsuLi5uZXcgU2V0KGxheWVyc0lkcyldO1xuICAvLyAgIHVuaXFlSWRzLmZvckVhY2goKGlkKSA9PiB7XG4gIC8vICAgICBsYXllcnNUb0RyYXcucHVzaChcbiAgLy8gICAgICAgbGF5ZXJzVG9SZW1vdmUuZmluZCgobGF5ZXIpID0+IGxheWVyLmthbmRvX29iamVjdF9pZCA9PT0gaWQpLFxuICAvLyAgICAgKTtcbiAgLy8gICB9KTtcblxuICAvLyAgIGxheWVyc1RvRHJhdy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAvLyAgICAgbGV0IHBvaW50ID0gcG9pbnRzLmZpbmQoKHBvaW50KSA9PiBwb2ludC5pZCA9PT0gbGF5ZXIua2FuZG9fb2JqZWN0X2lkKTtcbiAgLy8gICAgIHBvaW50ICYmIGJpbmRQb3B1cFRvTWFya2VyKHBvaW50LCBsYXllciwgdXNlckluZm8uZmxvd19yYXRlX3VuaXQpO1xuICAvLyAgIH0pO1xuICAvLyAgIGZhY3Rvcmllc0dyb3VwLmFkZExheWVycyhsYXllcnNUb0RyYXcpO1xuICAvLyB9O1xuXG4gIC8vIGNvbnN0IG1ha2VTdXJlVGhlcmVBcmVOb0R1cGxpY2F0ZXMgPSAoKSA9PiB7XG4gIC8vICAgbGV0IGxvY2FsTGF5ZXJzVG9SZW1vdmUgPSBbXTtcblxuICAvLyAgIGlmIChldmVudHNEYXRhLmZvY3VzZWRFdmVudCkge1xuICAvLyAgICAgbGV0IG9ic0lkcyA9IGV2ZW50c0RhdGEuZm9jdXNlZEV2ZW50Lm9ic2VydmF0aW9ucy5tYXAoXG4gIC8vICAgICAgIChvYnMpID0+IG9icy5wb2ludF9pZCxcbiAgLy8gICAgICk7XG4gIC8vICAgICBsZXQgdW5pcWVJZHMgPSBbLi4ubmV3IFNldChvYnNJZHMpXTtcbiAgLy8gICAgIHJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIodW5pcWVJZHMsIGxvY2FsTGF5ZXJzVG9SZW1vdmUpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBhZGRFdmVudFBvaW50c1RvQ2x1c3RlcigpO1xuICAvLyAgIH1cbiAgLy8gfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtYXApIHtcbiAgICAgIC8vIGlmIChmb3JFdmVudHNWaWV3KSB7XG4gICAgICAvLyAgIC8vIEluIGV2ZW50cyB2aWV3LCBhbHdheXMgc2hvdyBhbGwgbGF5ZXJzXG4gICAgICAvLyAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAvLyAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgIC8vICAgYWRkTGF5ZXJHcm91cChtYXAsIGNvbGxlY3RvcnNHcm91cCk7XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChyZXJlbmRlcikge1xuICAgICAgICBjYXNlICdYTGFyZ2UnOlxuICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgICAvLyBmYWN0b3JpZXMgZ3JvdXAgaGFzIGEgcGFyZW50IGxheWVyIGluIG1hcC50c3hcbiAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSBpdCBoZXJlXG4gICAgICAgICAgLy8gcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgY29sbGVjdG9yc0dyb3VwKTtcbiAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgZmFjdG9yaWVzR3JvdXApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMYXJnZSc6XG4gICAgICAgIGNhc2UgJ01MYXJnZSc6XG4gICAgICAgIGNhc2UgJ01lZGl1bSc6XG4gICAgICAgIGNhc2UgJ1NtYWxsJzpcbiAgICAgICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgZmFjdG9yaWVzUGFyZW50R3JvdXAgaW4gbWFwLnRzeFxuICAgICAgICAgIC8vIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIHd3dHBzR3JvdXApO1xuICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBjb2xsZWN0b3JzR3JvdXApO1xuICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyB9XG4gICAgfVxuICB9LCBbcmVyZW5kZXIsIHBvaW50c10pO1xuXG4gIC8vIHVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgbWFrZVN1cmVUaGVyZUFyZU5vRHVwbGljYXRlcygpO1xuICAvLyB9LCBbZXZlbnRzRGF0YS5mb2N1c2VkRXZlbnQsIGV2ZW50c0RhdGEuaXNGZXRjaGluZywgcmVyZW5kZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7cG9pbnRzLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICBmaWx0ZXJlZFBvaW50cygpLm1hcCgocG9pbnQ6IElQb2ludCkgPT4gKFxuICAgICAgICAgIDxQb2ludE1hcmtlclxuICAgICAgICAgICAgbWFwPXttYXB9XG4gICAgICAgICAgICBwb2ludD17cG9pbnR9XG4gICAgICAgICAgICBrZXk9e3BvaW50LmlkfVxuICAgICAgICAgICAgcmVyZW5kZXI9e3JlcmVuZGVyfVxuICAgICAgICAgICAgbGF5ZXJHcm91cD17XG4gICAgICAgICAgICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkZhY3RvcnknXG4gICAgICAgICAgICAgICAgPyBmYWN0b3JpZXNHcm91cFxuICAgICAgICAgICAgICAgIDogcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50J1xuICAgICAgICAgICAgICAgID8gd3d0cHNHcm91cFxuICAgICAgICAgICAgICAgIDogY29sbGVjdG9yc0dyb3VwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbG93UmF0ZVVuaXQ9e3VzZXJJbmZvLmZsb3dfcmF0ZV91bml0fVxu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
|
|
@@ -49,15 +49,12 @@ var bubbleForWWTP = function bubbleForWWTP(args) {
|
|
|
49
49
|
});
|
|
50
50
|
pointCustomIcon['kando_object_id'] = args.wwtpPoint.id;
|
|
51
51
|
pointCustomIcon['kando_object'] = 'Point';
|
|
52
|
-
pointCustomIcon['kando_has_device'] = args.wwtpPoint.has_device;
|
|
53
|
-
pointCustomIcon['kando_has_sampler'] = args.wwtpPoint.has_sampler;
|
|
54
52
|
return pointCustomIcon;
|
|
55
53
|
};
|
|
56
54
|
exports.bubbleForWWTP = bubbleForWWTP;
|
|
57
55
|
var createBubblePoint = function createBubblePoint(markerLocation, point, map, hovered, layerGroup) {
|
|
58
56
|
var flow_rate_unit = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'gd_us';
|
|
59
57
|
var handleClick = arguments.length > 6 ? arguments[6] : undefined;
|
|
60
|
-
var showSampler = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
|
|
61
58
|
var markerOnMap = layerGroup.getLayers().find(function (layer) {
|
|
62
59
|
return layer.kando_object_id === point.id;
|
|
63
60
|
});
|
|
@@ -65,21 +62,13 @@ var createBubblePoint = function createBubblePoint(markerLocation, point, map, h
|
|
|
65
62
|
var subtitle = pointIsFactory(point) ? point.group.sector_name : '';
|
|
66
63
|
var type = point.has_device || pointIsWWTP(point) ? point.group.type : 'Groups::default';
|
|
67
64
|
var pointCustomIcon = _leaflet.default.marker(markerLocation, {
|
|
68
|
-
icon: (0, _PointIcon.getPointIconByType)(type, point.name, subtitle, false, true, false,
|
|
65
|
+
icon: (0, _PointIcon.getPointIconByType)(type, point.name, subtitle, false, true, false, point.has_sampler),
|
|
69
66
|
riseOnHover: true
|
|
70
67
|
});
|
|
71
68
|
pointCustomIcon['kando_object_id'] = point.id;
|
|
72
69
|
pointCustomIcon['kando_object'] = 'Point';
|
|
73
70
|
pointCustomIcon['kando_has_device'] = point.has_device;
|
|
74
|
-
pointCustomIcon['kando_has_sampler'] = point.has_sampler;
|
|
75
71
|
if (hovered) pointCustomIcon['kando_object'] = 'PointHovered';
|
|
76
|
-
pointCustomIcon['kando_icon_data'] = {
|
|
77
|
-
type: type,
|
|
78
|
-
title: point.name,
|
|
79
|
-
subtitle: subtitle,
|
|
80
|
-
hasIssues: false,
|
|
81
|
-
shouldInstall: false
|
|
82
|
-
};
|
|
83
72
|
layerGroup.addLayer(pointCustomIcon);
|
|
84
73
|
if (pointIsFactory(point)) {
|
|
85
74
|
bindPopupToMarker(point, pointCustomIcon, flow_rate_unit);
|
|
@@ -102,8 +91,6 @@ var createManholePoint = function createManholePoint(markerLocation, point, map,
|
|
|
102
91
|
manholeIcon['kando_object_id'] = point.id;
|
|
103
92
|
manholeIcon['kando_object'] = 'Point';
|
|
104
93
|
manholeIcon['kando_point_type'] = 'Manhole';
|
|
105
|
-
manholeIcon['kando_has_device'] = point.has_device;
|
|
106
|
-
manholeIcon['kando_has_sampler'] = point.has_sampler;
|
|
107
94
|
if (hovered) manholeIcon['kando_object'] = 'PointHovered';
|
|
108
95
|
layerGroup.addLayer(manholeIcon);
|
|
109
96
|
};
|
|
@@ -348,19 +335,17 @@ var popupContent = function popupContent(obs, point) {
|
|
|
348
335
|
}
|
|
349
336
|
};
|
|
350
337
|
exports.popupContent = popupContent;
|
|
351
|
-
var getIcon = function getIcon(point, clicked, subtitle
|
|
338
|
+
var getIcon = function getIcon(point, clicked, subtitle) {
|
|
352
339
|
var isWWTP = point.group.type === 'Groups::WastewaterTreatmentPlant';
|
|
353
340
|
var type = point.has_device || isWWTP ? point.group.type : 'Groups::default';
|
|
354
341
|
var subtitleText = subtitle ? subtitle : point.group.sector_name;
|
|
355
342
|
if (isWWTP && !point.has_device) {
|
|
356
343
|
subtitleText += " (".concat(_i18n.default.t('dashboard_v2.utility_dashboard.topbar.quality-summary.unmonitored'), ")");
|
|
357
344
|
}
|
|
358
|
-
return (0, _PointIcon.getPointIconByType)(type, point.name, subtitleText, clicked, !clicked
|
|
345
|
+
return (0, _PointIcon.getPointIconByType)(type, point.name, subtitleText, clicked, !clicked);
|
|
359
346
|
};
|
|
360
|
-
var setIcon = function setIcon(element, clicked, point) {
|
|
361
|
-
|
|
362
|
-
var showSampler = element['kando_show_sampler'] || false;
|
|
363
|
-
element.setIcon(getIcon(point, clicked, subtitle, showSampler));
|
|
347
|
+
var setIcon = function setIcon(element, clicked, point, subtitle) {
|
|
348
|
+
element.setIcon(getIcon(point, clicked, subtitle));
|
|
364
349
|
};
|
|
365
350
|
|
|
366
351
|
// round to nearest thousand is used when you want to round the water consumption to the nearest thousand
|
|
@@ -491,4 +476,4 @@ var isFactoryType = function isFactoryType(type) {
|
|
|
491
476
|
return type === 'Groups::Factory';
|
|
492
477
|
};
|
|
493
478
|
exports.isFactoryType = isFactoryType;
|
|
494
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiX3V0aWxzIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmciLCJzdHJpbmciLCJjb25jYXQiLCJncm91cCIsIm5hbWUiLCJwb2ludElzRmFjdG9yeSIsInNlY3Rvcl9uYW1lIiwid2F0ZXJfZGlzY2hhcmdlIiwiYnViYmxlRm9yV1dUUCIsImFyZ3MiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwibWFya2VyTG9jYXRpb24iLCJpY29uIiwiZ2V0SWNvbiIsInd3dHBQb2ludCIsInJpc2VPbkhvdmVyIiwiaGFzX2RldmljZSIsImhhc19zYW1wbGVyIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJtYXAiLCJob3ZlcmVkIiwibGF5ZXJHcm91cCIsImZsb3dfcmF0ZV91bml0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2siLCJzaG93U2FtcGxlciIsIm1hcmtlck9uTWFwIiwiZ2V0TGF5ZXJzIiwiZmluZCIsImxheWVyIiwia2FuZG9fb2JqZWN0X2lkIiwic3VidGl0bGUiLCJ0eXBlIiwicG9pbnRJc1dXVFAiLCJnZXRQb2ludEljb25CeVR5cGUiLCJ0aXRsZSIsImhhc0lzc3VlcyIsInNob3VsZEluc3RhbGwiLCJhZGRMYXllciIsImJpbmRQb3B1cFRvTWFya2VyIiwiaGFuZGxlTWFya2VyRXZlbnRzIiwiY3JlYXRlTWFuaG9sZVBvaW50IiwicG9pbnRJY29uIiwiSWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJpY29uQW5jaG9yIiwibWFuaG9sZUljb24iLCJNYXJrZXIiLCJiaW5kVG9vbHRpcCIsIm1hdGNoSWNvblRvUG9pbnQiLCJjb21iaW5lZEZhY3RvcnlJY29uIiwibWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UiLCJ1bnNoaWZ0Iiwic2VsZWN0ZWRCYWNrZ3JvdW5kIiwibWFya2VyQmVsb25nc1RvU291cmNlIiwiYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCIsInN0YW5kYXJkQmFja2dyb3VuZCIsImNvbWJpbmVkUHVtcFN0YXRpb25JY29uIiwiY29tYmluZWRXV1RQSWNvbiIsInJlZFBpblJlZFNoYWRvdyIsIndhdGVySWNvbk5vQmFja2dyb3VuZCIsInBvcHVwQW5jaG9yIiwiY29tYmluZWRDb2xsZWN0b3JzSWNvbiIsInNlY29uZGFyeSIsInRoaXJkIiwid2hpdGVQaW5CbGFja1NoYWRvdyIsInllbGxvd0NpcmNsZVVSTCIsInBsYW50SWNvblVSTCIsImdyZWVuQ2lyY2xlVVJMIiwicHVtcFN0YXRpb25JY29uVVJMIiwiY29sbGVjdG9ySWNvbiIsImJyaWdodEJsdWVDaXJjbGVVUkwiLCJXV1RQSWNvblVSTCIsIndoaXRlUGluUmVkU2hhZG93Iiwic291cmNlIiwic291cmNlcyIsImZpbHRlciIsInNlbGVjdGVkX3NvdXJjZSIsImNyZWF0ZVNhbXBsaW5nSWNvblBvaW50Iiwic2Vjb25kYXJ5SWNvbiIsInNhbXBsaW5nSWNvbiIsImJsdWVDaXJjbGVVUkwiLCJzYW1wbGluZ0ljb25VUkwiLCJ0aGlyZEljb24iLCJmb3JFYWNoIiwiaW5kZXgiLCJjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCIsIm9ic2VydmF0aW9uSWNvbiIsInBpbmtDaXJjbGVVUkwiLCJvYnNlcnZhdGlvbkljb25VUkwiLCJjcmVhdGVTYW1wbGluZ0ljb25zIiwic2FtcGxlZFBvaW50SWRzIiwic2FtcGxpbmdzIiwicyIsImluY2x1ZGVzIiwicG9wdXBDb250ZW50Iiwib2JzIiwiR3JhcGhJY29uIiwiaTE4biIsInQiLCJzZXZlcml0eSIsImNsaWNrZWQiLCJpc1dXVFAiLCJzdWJ0aXRsZVRleHQiLCJzZXRJY29uIiwiZWxlbWVudCIsImNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24iLCJ3YXRlckNvbnN1bXB0aW9uIiwicm91bmRfdG9fbmVhcmVzdF9rIiwiY2FsY3VsYXRlZCIsInRvRml4ZWQiLCJyb3VuZFRvTmVhcmVzdFRob3VzYW5kIiwicGFyc2VGbG9hdCIsInRvTG9jYWxlU3RyaW5nIiwiTWF0aCIsInJvdW5kIiwibnVtYmVyIiwicm91bmRlZFRob3VzYW5kcyIsInJvdW5kZWRWYWx1ZSIsInRyYW5zbGF0ZUZsb3dSYXRlIiwidG9vbHRpcFZpc2libGUiLCJvbiIsImNsb3NlUG9wdXAiLCJpc1BvcHVwT3BlbiIsInNlbmRBbmFseXRpY3NFdmVudCIsInBvaW50X25hbWUiLCJjb250ZW50Iiwid2F0ZXJSZXVzZUljb24iLCJnZXRGbG93UmF0ZSIsImJpbmRQb3B1cCIsImNsYXNzTmFtZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJjbG9zZUJ1dHRvbiIsImZsb3dSYXRlVW5pdCIsImlzUm91bmQiLCJyZW1vdmVMYXllckdyb3VwIiwiaGFzTGF5ZXIiLCJyZW1vdmVMYXllciIsImFkZExheWVyR3JvdXAiLCJpc0ZhY3RvcnlUeXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL3BvaW50cy9Qb2ludFV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcmFwaEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2xpbmUtY2hhcnQuc3ZnJztcbmltcG9ydCBMLCB7IExhdExuZ1R1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgaTE4biBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgYmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYmx1ZS1jaXJjbGUuc3ZnJztcbmltcG9ydCBzYW1wbGluZ0ljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3NhbXBsaW5nLWljb24uc3ZnJztcbmltcG9ydCBwaW5rQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9waW5rLWNpcmNsZS5zdmcnO1xuaW1wb3J0IG9ic2VydmF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvb2JzZXJ2YXRpb24taWNvbi5zdmcnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHJlZFBpblJlZFNoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcmVkLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5CbGFja1NoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2hpdGUtcGluLWJsYWNrLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHllbGxvd0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMveWVsbG93LWNpcmNsZS5zdmcnO1xuaW1wb3J0IHBsYW50SWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvZmFjdG9yeS1pY29uLnN2Zyc7XG5pbXBvcnQgZ3JlZW5DaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2dyZWVuLWNpcmNsZS5zdmcnO1xuaW1wb3J0IHB1bXBTdGF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcHVtcC1zdGF0aW9uLWljb24uc3ZnJztcbmltcG9ydCBjb2xsZWN0b3JJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9tYXAvcGluLXdhdGVyLnN2Zyc7XG5pbXBvcnQgYnJpZ2h0Qmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYnJpZ2h0LWJsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgV1dUUEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL1dXVFAtaWNvbi5zdmcnO1xuaW1wb3J0IHdhdGVySWNvbk5vQmFja2dyb3VuZCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2F0ZXItbm8tYmFja2dyb3VuZC5zdmcnO1xuaW1wb3J0IHdoaXRlUG9pbnQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3doaXRlLXBvaW50LnBuZyc7XG5pbXBvcnQgeyBnZXRQb2ludEljb25CeVR5cGUgfSBmcm9tICcuL1BvaW50SWNvbic7XG5pbXBvcnQgd2F0ZXJSZXVzZUljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL3dhdGVyX3JldXNlLnN2Zyc7XG5pbXBvcnQgeyBzZW5kQW5hbHl0aWNzRXZlbnQgfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGlzQ29sbGVjdG9yRm9jdXNlZCA9IChwb2ludDogSVBvaW50LCBldmVudDogSUV2ZW50KSA9PiB7XG4gIHJldHVybiAoXG4gICAgZXZlbnQ/Lm9ic2VydmF0aW9ucz8ubGVuZ3RoID09PSAxICYmXG4gICAgcG9pbnQuaWQgPT09IGV2ZW50Lm9ic2VydmF0aW9uc1swXS5wb2ludF9pZFxuICApO1xufTtcblxuY29uc3QgYnVpbGRNYW5ob2xlVG9vbHRpcFN0cmluZyA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIGxldCBzdHJpbmcgPSBgJHtwb2ludC5ncm91cC5uYW1lfSBgO1xuXG4gIGlmIChwb2ludElzRmFjdG9yeShwb2ludCkpIHtcbiAgICBzdHJpbmcgKz0gYDxici8+U2VjdG9yOiAke3BvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lfWA7XG4gICAgc3RyaW5nICs9IGA8YnIvPldhdGVyIENvbnN1bXB0aW9uOiAke3BvaW50Lmdyb3VwLndhdGVyX2Rpc2NoYXJnZX1gO1xuICB9IGVsc2Uge1xuICAgIHN0cmluZyA9IGAke3BvaW50Lm5hbWV9YDtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgYnViYmxlRm9yV1dUUCA9IChhcmdzKSA9PiB7XG4gIGNvbnN0IHBvaW50Q3VzdG9tSWNvbjogTC5NYXJrZXIgPSBMLm1hcmtlcihhcmdzLm1hcmtlckxvY2F0aW9uLCB7XG4gICAgaWNvbjogZ2V0SWNvbihhcmdzLnd3dHBQb2ludCwgZmFsc2UpLFxuICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICB9KTtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IGFyZ3Mud3d0cFBvaW50LmlkO1xuICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19oYXNfZGV2aWNlJ10gPSBhcmdzLnd3dHBQb2ludC5oYXNfZGV2aWNlO1xuICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2hhc19zYW1wbGVyJ10gPSBhcmdzLnd3dHBQb2ludC5oYXNfc2FtcGxlcjtcblxuICByZXR1cm4gcG9pbnRDdXN0b21JY29uO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUJ1YmJsZVBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuICBmbG93X3JhdGVfdW5pdCA9ICdnZF91cycsXG4gIGhhbmRsZUNsaWNrPyxcbiAgc2hvd1NhbXBsZXI6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBtYXJrZXJPbk1hcCA9IGxheWVyR3JvdXBcbiAgICAuZ2V0TGF5ZXJzKClcbiAgICAuZmluZCgobGF5ZXIpID0+IGxheWVyLmthbmRvX29iamVjdF9pZCA9PT0gcG9pbnQuaWQpO1xuXG4gIGlmICghbWFya2VyT25NYXApIHtcbiAgICBjb25zdCBzdWJ0aXRsZSA9IHBvaW50SXNGYWN0b3J5KHBvaW50KSA/IHBvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lIDogJyc7XG4gICAgY29uc3QgdHlwZSA9XG4gICAgICBwb2ludC5oYXNfZGV2aWNlIHx8IHBvaW50SXNXV1RQKHBvaW50KVxuICAgICAgICA/IHBvaW50Lmdyb3VwLnR5cGVcbiAgICAgICAgOiAnR3JvdXBzOjpkZWZhdWx0JztcbiAgICBsZXQgcG9pbnRDdXN0b21JY29uOiBMLk1hcmtlciA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBnZXRQb2ludEljb25CeVR5cGUoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBvaW50Lm5hbWUsXG4gICAgICAgIHN1YnRpdGxlLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHNob3dTYW1wbGVyLFxuICAgICAgICBmYWxzZSxcbiAgICAgICksXG4gICAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2hhc19kZXZpY2UnXSA9IHBvaW50Lmhhc19kZXZpY2U7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19oYXNfc2FtcGxlciddID0gcG9pbnQuaGFzX3NhbXBsZXI7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnRIb3ZlcmVkJztcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2ljb25fZGF0YSddID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIHRpdGxlOiBwb2ludC5uYW1lLFxuICAgICAgc3VidGl0bGU6IHN1YnRpdGxlLFxuICAgICAgaGFzSXNzdWVzOiBmYWxzZSxcbiAgICAgIHNob3VsZEluc3RhbGw6IGZhbHNlLFxuICAgIH07XG5cbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gICAgaWYgKHBvaW50SXNGYWN0b3J5KHBvaW50KSkge1xuICAgICAgYmluZFBvcHVwVG9NYXJrZXIocG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgZmxvd19yYXRlX3VuaXQpO1xuICAgIH1cblxuICAgIGhhbmRsZU1hcmtlckV2ZW50cyhtYXAsIHBvaW50LCBwb2ludEN1c3RvbUljb24sIGhhbmRsZUNsaWNrKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hbmhvbGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgcG9pbnRJY29uID0gbmV3IEwuSWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuICBsZXQgbWFuaG9sZUljb246IGFueSA9IG5ldyBMLk1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IHBvaW50SWNvbixcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIG1hbmhvbGVJY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIG1hbmhvbGVJY29uWydrYW5kb19wb2ludF90eXBlJ10gPSAnTWFuaG9sZSc7XG4gIG1hbmhvbGVJY29uWydrYW5kb19oYXNfZGV2aWNlJ10gPSBwb2ludC5oYXNfZGV2aWNlO1xuICBtYW5ob2xlSWNvblsna2FuZG9faGFzX3NhbXBsZXInXSA9IHBvaW50Lmhhc19zYW1wbGVyO1xuICBpZiAoaG92ZXJlZCkgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG4gIGxheWVyR3JvdXAuYWRkTGF5ZXIobWFuaG9sZUljb24pO1xufTtcblxuLy8gKioqQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBpdCBpcyBub3QgdXNlZCBmb3IgbW9yZSB0aGFuIHR3byB5ZWFycyoqKlxuZXhwb3J0IGNvbnN0IG1hdGNoSWNvblRvUG9pbnQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICBzd2l0Y2ggKHBvaW50Lmdyb3VwLnR5cGUpIHtcbiAgICBjYXNlICdHcm91cHM6OkZhY3RvcnknOlxuICAgICAgaWYgKGNvbWJpbmVkRmFjdG9yeUljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkRmFjdG9yeUljb247XG4gICAgY2FzZSAnR3JvdXBzOjpQdW1wU3RhdGlvbic6XG4gICAgICBpZiAoY29tYmluZWRQdW1wU3RhdGlvbkljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JzpcbiAgICAgIGlmIChjb21iaW5lZFdXVFBJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFdXVFBJY29uO1xuXG4gICAgY2FzZSAnR3JvdXBzOjpDb2xsZWN0b3JzJzpcbiAgICAgIGlmIChpc0NvbGxlY3RvckZvY3VzZWQocG9pbnQsIGV2ZW50KSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcblxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLCA0NF0sXG4gICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZENvbGxlY3RvcnNJY29uO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhbmRhcmRCYWNrZ3JvdW5kID0gKFxuICBzZWNvbmRhcnk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgdGhpcmQ6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpbkJsYWNrU2hhZG93LFxuICAgIGljb25TaXplOiBzZWNvbmRhcnkgPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiB5ZWxsb3dDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwbGFudEljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNSwgMzBdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRQdW1wU3RhdGlvbkljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogZ3JlZW5DaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwdW1wU3RhdGlvbkljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNywgMzJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRDb2xsZWN0b3JzSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBjb2xsZWN0b3JJY29uLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICBpY29uQW5jaG9yOiBbMjUsIDUwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkV1dUUEljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogYnJpZ2h0Qmx1ZUNpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IFdXVFBJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzgsIDMxXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc291cmNlO1xuXG4gIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc291cmNlID0gZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF07XG4gIH1cblxuICByZXR1cm4gZXZlbnQgIT09IG51bGwgJiYgc291cmNlICYmIGV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChldmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBzYW1wbGluZ0ljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IGJsdWVDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDE1XSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogc2FtcGxpbmdJY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAxM10gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGxldCB0aGlyZEljb24gPSBmYWxzZTtcbiAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2Uge1xuICAgIHRoaXJkSWNvbiA9IHRydWU7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRoaXJkSWNvbikpO1xuICB9XG5cbiAgc2FtcGxpbmdJY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gdGhpcmRJY29uID8gZmFsc2UgOiBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IHRoaXJkSWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZyc7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmdIb3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gc2Vjb25kYXJ5SWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3RoaXJkJ10gPSBmYWxzZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbic7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb25Ib3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvbnMgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkLFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgc2FtcGxlZFBvaW50SWRzID0gZXZlbnQuc2FtcGxpbmdzLm1hcCgocykgPT4gcy5wb2ludF9pZCk7XG4gIGlmIChcbiAgICBldmVudCAhPT0gbnVsbCAmJlxuICAgIGV2ZW50LnNhbXBsaW5ncy5sZW5ndGggIT09IDAgJiZcbiAgICBzYW1wbGVkUG9pbnRJZHMuaW5jbHVkZXMocG9pbnQuaWQpXG4gICkge1xuICAgIGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50KFxuICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50LCBldmVudCkgIT09IG51bGwsXG4gICAgICBtYXAsXG4gICAgICBwb2ludCxcbiAgICAgIGV2ZW50LFxuICAgICAgaG92ZXJlZCxcbiAgICAgIGxheWVyR3JvdXAsXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvcHVwQ29udGVudCA9IChvYnM6IGFueSwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAob2JzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtwb2ludC5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtwb2ludC5ncm91cC5uYW1lfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInNlY3RvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7b2JzLmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7R3JhcGhJY29ufVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zaXRlLW5hbWVcIj48Yj4ke1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXR5YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtY29udGVudF9fc2V2ZXJpdHktLScgKyBvYnMuc2V2ZXJpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLiR7b2JzLnNldmVyaXR5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2hyXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fZGlzY2hhcmdlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LmZpcnN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImZpcnN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5sYXN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImxhc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfVxufTtcblxuY29uc3QgZ2V0SWNvbiA9IChcbiAgcG9pbnQ6IElQb2ludCxcbiAgY2xpY2tlZDogYm9vbGVhbixcbiAgc3VidGl0bGU/OiBzdHJpbmcsXG4gIHNob3dTYW1wbGVyPyxcbikgPT4ge1xuICBjb25zdCBpc1dXVFAgPSBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnO1xuICBjb25zdCB0eXBlID1cbiAgICBwb2ludC5oYXNfZGV2aWNlIHx8IGlzV1dUUCA/IHBvaW50Lmdyb3VwLnR5cGUgOiAnR3JvdXBzOjpkZWZhdWx0JztcbiAgbGV0IHN1YnRpdGxlVGV4dCA9IHN1YnRpdGxlID8gc3VidGl0bGUgOiBwb2ludC5ncm91cC5zZWN0b3JfbmFtZTtcbiAgaWYgKGlzV1dUUCAmJiAhcG9pbnQuaGFzX2RldmljZSkge1xuICAgIHN1YnRpdGxlVGV4dCArPSBgICgke2kxOG4udChcbiAgICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS51bm1vbml0b3JlZCcsXG4gICAgKX0pYDtcbiAgfVxuICByZXR1cm4gZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgIHR5cGUsXG4gICAgcG9pbnQubmFtZSxcbiAgICBzdWJ0aXRsZVRleHQsXG4gICAgY2xpY2tlZCxcbiAgICAhY2xpY2tlZCxcbiAgICBmYWxzZSxcbiAgICBzaG93U2FtcGxlcixcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRJY29uID0gKGVsZW1lbnQsIGNsaWNrZWQsIHBvaW50LCBzdWJ0aXRsZSA9ICcnKSA9PiB7XG4gIGNvbnN0IHNob3dTYW1wbGVyID0gZWxlbWVudFsna2FuZG9fc2hvd19zYW1wbGVyJ10gfHwgZmFsc2U7XG5cbiAgZWxlbWVudC5zZXRJY29uKGdldEljb24ocG9pbnQsIGNsaWNrZWQsIHN1YnRpdGxlLCBzaG93U2FtcGxlcikpO1xufTtcblxuLy8gcm91bmQgdG8gbmVhcmVzdCB0aG91c2FuZCBpcyB1c2VkIHdoZW4geW91IHdhbnQgdG8gcm91bmQgdGhlIHdhdGVyIGNvbnN1bXB0aW9uIHRvIHRoZSBuZWFyZXN0IHRob3VzYW5kXG4vLyBmb3IgZXhhbXBsZTogMjM0LDU2NyAtPiAyMzUsMDAwXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlV2F0ZXJDb25zdW1wdGlvbiA9IChcbiAgZmxvd19yYXRlX3VuaXQ6IHN0cmluZyxcbiAgd2F0ZXJDb25zdW1wdGlvbjogbnVtYmVyLFxuICByb3VuZF90b19uZWFyZXN0X2s6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICBsZXQgY2FsY3VsYXRlZCA9ICcwJztcblxuICBpZiAod2F0ZXJDb25zdW1wdGlvbiA+IDApIHtcbiAgICBzd2l0Y2ggKGZsb3dfcmF0ZV91bml0KSB7XG4gICAgICBjYXNlICdtM2QnOlxuICAgICAgICBjYWxjdWxhdGVkID0gd2F0ZXJDb25zdW1wdGlvbi50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dkX3VzJzpcbiAgICAgICAgY2FsY3VsYXRlZCA9ICh3YXRlckNvbnN1bXB0aW9uICogMjY0LjE3MikudG9GaXhlZCgyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZF91ayc6XG4gICAgICAgIGNhbGN1bGF0ZWQgPSAod2F0ZXJDb25zdW1wdGlvbiAqIDIxOS45NjkpLnRvRml4ZWQoMik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocm91bmRfdG9fbmVhcmVzdF9rKSB7XG4gICAgcmV0dXJuIHJvdW5kVG9OZWFyZXN0VGhvdXNhbmQocGFyc2VGbG9hdChjYWxjdWxhdGVkKSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGNhbGN1bGF0ZWQpKS50b0xvY2FsZVN0cmluZygpO1xuICB9XG59O1xuXG5jb25zdCByb3VuZFRvTmVhcmVzdFRob3VzYW5kID0gKG51bWJlcikgPT4ge1xuICAvLyBpZihpc0FscmVhZHlSb3VuZGVkKG51bWJlcikpIHtcbiAgLy8gICByZXR1cm4gbnVtYmVyO1xuICAvLyB9XG5cbiAgaWYgKG51bWJlciA8IDEwMDApIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpO1xuICB9XG5cbiAgY29uc3Qgcm91bmRlZFRob3VzYW5kcyA9IE1hdGgucm91bmQobnVtYmVyIC8gMTAwMCk7XG4gIGNvbnN0IHJvdW5kZWRWYWx1ZSA9IHJvdW5kZWRUaG91c2FuZHMgKiAxMDAwO1xuXG4gIHJldHVybiByb3VuZGVkVmFsdWU7XG59O1xuXG4vLyBjb25zdCBpc0FscmVhZHlSb3VuZGVkID0gKG51bWJlcikgPT4ge1xuLy8gICByZXR1cm4gbnVtYmVyID09PSBNYXRoLnJvdW5kKG51bWJlcik7XG4vLyB9XG5cbmV4cG9ydCBjb25zdCB0cmFuc2xhdGVGbG93UmF0ZSA9IChmbG93X3JhdGVfdW5pdCkgPT4ge1xuICByZXR1cm4gaTE4bi50KFxuICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLiR7XG4gICAgICBmbG93X3JhdGVfdW5pdC5pbmNsdWRlcygnZ2QnKSA/ICdnZCcgOiBmbG93X3JhdGVfdW5pdFxuICAgIH1gLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZU1hcmtlckV2ZW50cyA9IChcbiAgbWFwLFxuICBwb2ludCxcbiAgcG9pbnRDdXN0b21JY29uLFxuICBoYW5kbGVDbGljayxcbikgPT4ge1xuICBsZXQgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcblxuICBtYXAub24oJ3pvb21zdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ3BvcHVwY2xvc2UnLCAoKSA9PiB7XG4gICAgLy8gc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgfSk7XG5cbiAgcG9pbnRDdXN0b21JY29uLm9uKCdwb3B1cG9wZW4nLCAoKSA9PiB7XG4gICAgLy8gc2V0SWNvbihwb2ludEN1c3RvbUljb24sIHRydWUsIHBvaW50KTtcbiAgICB0b29sdGlwVmlzaWJsZSA9IHRydWU7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbignbW91c2VvdmVyJywgKCkgPT4ge1xuICAgIGlmICh0b29sdGlwVmlzaWJsZSkgcmV0dXJuO1xuXG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIHRydWUsIHBvaW50KTtcbiAgICB0b29sdGlwVmlzaWJsZSA9IHRydWU7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgaWYgKHBvaW50Q3VzdG9tSWNvbi5pc1BvcHVwT3BlbigpKSByZXR1cm47XG5cbiAgICBzZXRJY29uKHBvaW50Q3VzdG9tSWNvbiwgZmFsc2UsIHBvaW50KTtcbiAgICB0b29sdGlwVmlzaWJsZSA9IGZhbHNlO1xuICB9KTtcblxuICBpZiAodHlwZW9mIGhhbmRsZUNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcG9pbnRDdXN0b21JY29uLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgIGhhbmRsZUNsaWNrKHBvaW50Q3VzdG9tSWNvbi5rYW5kb19vYmplY3RfaWQpO1xuXG4gICAgICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgICAgIHNlbmRBbmFseXRpY3NFdmVudCgnTWFwIFZpZXcgLSBGYWN0b3J5IGNsaWNrZWQnLCAnbWFwJywge1xuICAgICAgICAgIHBvaW50X2lkOiBwb2ludC5pZCxcbiAgICAgICAgICBwb2ludF9uYW1lOiBwb2ludC5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJpbmRQb3B1cFRvTWFya2VyID0gKHBvaW50LCBsYXllckdyb3VwLCBmbG93X3JhdGVfdW5pdCkgPT4ge1xuICBsZXQgY29udGVudCA9IGBcbiAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnQnPlxuICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcic+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9faGVhZGVyX190aXRsZXNfX3RpdGxlJz4ke1xuICAgICAgICAgICAgICAgICAgcG9pbnQubmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX19zdWJ0aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lXG4gICAgICAgICAgICAgICAgfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHknPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtJz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW1fX2ljb24nPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0nJHt3YXRlclJldXNlSWNvbn0nIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXMnPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXNfX3RpdGxlJz5cbiAgICAgICAgICAgICAgICAgICAgJHtnZXRGbG93UmF0ZShwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2UsIGZsb3dfcmF0ZV91bml0KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXNfX3N1YnRpdGxlJz4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgJ3dhdGVyX2Rpc2NoYXJnZScsXG4gICAgICAgICAgICAgICAgICApfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgbGF5ZXJHcm91cC5iaW5kUG9wdXAoY29udGVudCwge1xuICAgIGNsYXNzTmFtZTogJ3BvaW50LW1hcmtlci1wb3B1cCcsXG4gICAgbWluV2lkdGg6ICcyMTRweCcsXG4gICAgbWF4V2lkdGg6ICcyMTRweCcsXG4gICAgY2xvc2VCdXR0b246IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZsb3dSYXRlID0gKFxuICB3YXRlckNvbnN1bXB0aW9uOiBudW1iZXIsXG4gIGZsb3dSYXRlVW5pdDogc3RyaW5nLFxuICBpc1JvdW5kOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgaWYgKHdhdGVyQ29uc3VtcHRpb24gPiAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24oZmxvd1JhdGVVbml0LCB3YXRlckNvbnN1bXB0aW9uLCBpc1JvdW5kKSArXG4gICAgICAnICcgK1xuICAgICAgdHJhbnNsYXRlRmxvd1JhdGUoZmxvd1JhdGVVbml0KVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGkxOG4udCgnZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMudW5rbm93bicpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxheWVyR3JvdXAgPSAobWFwLCBsYXllckdyb3VwKSA9PiB7XG4gIGlmIChtYXAuaGFzTGF5ZXIobGF5ZXJHcm91cCkpIHtcbiAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXJHcm91cCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRMYXllckdyb3VwID0gKG1hcCwgbGF5ZXJHcm91cCkgPT4ge1xuICBpZiAoIW1hcC5oYXNMYXllcihsYXllckdyb3VwKSkge1xuICAgIG1hcC5hZGRMYXllcihsYXllckdyb3VwKTtcbiAgfSBlbHNlIHtcbiAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgbGF5ZXJHcm91cCk7XG4gICAgYWRkTGF5ZXJHcm91cChtYXAsIGxheWVyR3JvdXApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc1dXVFAgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50Jztcbn07XG5cbmV4cG9ydCBjb25zdCBwb2ludElzRmFjdG9yeSA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIHJldHVybiBpc0ZhY3RvcnlUeXBlKHBvaW50Lmdyb3VwLnR5cGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRmFjdG9yeVR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiB0eXBlID09PSAnR3JvdXBzOjpGYWN0b3J5Jztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQTJDLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFHLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFJLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFLLGdCQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFPM0MsSUFBQU0sZ0JBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQXlGLElBQUFTLGFBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFVLFlBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFXLFlBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFZLGdCQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBYSxTQUFB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
|
|
479
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiX3V0aWxzIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmciLCJzdHJpbmciLCJjb25jYXQiLCJncm91cCIsIm5hbWUiLCJwb2ludElzRmFjdG9yeSIsInNlY3Rvcl9uYW1lIiwid2F0ZXJfZGlzY2hhcmdlIiwiYnViYmxlRm9yV1dUUCIsImFyZ3MiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwibWFya2VyTG9jYXRpb24iLCJpY29uIiwiZ2V0SWNvbiIsInd3dHBQb2ludCIsInJpc2VPbkhvdmVyIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJtYXAiLCJob3ZlcmVkIiwibGF5ZXJHcm91cCIsImZsb3dfcmF0ZV91bml0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2siLCJtYXJrZXJPbk1hcCIsImdldExheWVycyIsImZpbmQiLCJsYXllciIsImthbmRvX29iamVjdF9pZCIsInN1YnRpdGxlIiwidHlwZSIsImhhc19kZXZpY2UiLCJwb2ludElzV1dUUCIsImdldFBvaW50SWNvbkJ5VHlwZSIsImhhc19zYW1wbGVyIiwiYWRkTGF5ZXIiLCJiaW5kUG9wdXBUb01hcmtlciIsImhhbmRsZU1hcmtlckV2ZW50cyIsImNyZWF0ZU1hbmhvbGVQb2ludCIsInBvaW50SWNvbiIsIkljb24iLCJpY29uVXJsIiwid2hpdGVQb2ludCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hbmhvbGVJY29uIiwiTWFya2VyIiwiYmluZFRvb2x0aXAiLCJtYXRjaEljb25Ub1BvaW50IiwiY29tYmluZWRGYWN0b3J5SWNvbiIsIm1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlIiwidW5zaGlmdCIsInNlbGVjdGVkQmFja2dyb3VuZCIsIm1hcmtlckJlbG9uZ3NUb1NvdXJjZSIsImJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQiLCJzdGFuZGFyZEJhY2tncm91bmQiLCJjb21iaW5lZFB1bXBTdGF0aW9uSWNvbiIsImNvbWJpbmVkV1dUUEljb24iLCJyZWRQaW5SZWRTaGFkb3ciLCJ3YXRlckljb25Ob0JhY2tncm91bmQiLCJwb3B1cEFuY2hvciIsImNvbWJpbmVkQ29sbGVjdG9yc0ljb24iLCJzZWNvbmRhcnkiLCJ0aGlyZCIsIndoaXRlUGluQmxhY2tTaGFkb3ciLCJ5ZWxsb3dDaXJjbGVVUkwiLCJwbGFudEljb25VUkwiLCJncmVlbkNpcmNsZVVSTCIsInB1bXBTdGF0aW9uSWNvblVSTCIsImNvbGxlY3Rvckljb24iLCJicmlnaHRCbHVlQ2lyY2xlVVJMIiwiV1dUUEljb25VUkwiLCJ3aGl0ZVBpblJlZFNoYWRvdyIsInNvdXJjZSIsInNvdXJjZXMiLCJmaWx0ZXIiLCJzZWxlY3RlZF9zb3VyY2UiLCJjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCIsInNlY29uZGFyeUljb24iLCJzYW1wbGluZ0ljb24iLCJibHVlQ2lyY2xlVVJMIiwic2FtcGxpbmdJY29uVVJMIiwidGhpcmRJY29uIiwiZm9yRWFjaCIsImluZGV4IiwiY3JlYXRlT2JzZXJ2YXRpb25JY29uUG9pbnQiLCJvYnNlcnZhdGlvbkljb24iLCJwaW5rQ2lyY2xlVVJMIiwib2JzZXJ2YXRpb25JY29uVVJMIiwiY3JlYXRlU2FtcGxpbmdJY29ucyIsInNhbXBsZWRQb2ludElkcyIsInNhbXBsaW5ncyIsInMiLCJpbmNsdWRlcyIsInBvcHVwQ29udGVudCIsIm9icyIsIkdyYXBoSWNvbiIsImkxOG4iLCJ0Iiwic2V2ZXJpdHkiLCJjbGlja2VkIiwiaXNXV1RQIiwic3VidGl0bGVUZXh0Iiwic2V0SWNvbiIsImVsZW1lbnQiLCJjYWxjdWxhdGVXYXRlckNvbnN1bXB0aW9uIiwid2F0ZXJDb25zdW1wdGlvbiIsInJvdW5kX3RvX25lYXJlc3RfayIsImNhbGN1bGF0ZWQiLCJ0b0ZpeGVkIiwicm91bmRUb05lYXJlc3RUaG91c2FuZCIsInBhcnNlRmxvYXQiLCJ0b0xvY2FsZVN0cmluZyIsIk1hdGgiLCJyb3VuZCIsIm51bWJlciIsInJvdW5kZWRUaG91c2FuZHMiLCJyb3VuZGVkVmFsdWUiLCJ0cmFuc2xhdGVGbG93UmF0ZSIsInRvb2x0aXBWaXNpYmxlIiwib24iLCJjbG9zZVBvcHVwIiwiaXNQb3B1cE9wZW4iLCJzZW5kQW5hbHl0aWNzRXZlbnQiLCJwb2ludF9uYW1lIiwiY29udGVudCIsIndhdGVyUmV1c2VJY29uIiwiZ2V0Rmxvd1JhdGUiLCJiaW5kUG9wdXAiLCJjbGFzc05hbWUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiY2xvc2VCdXR0b24iLCJmbG93UmF0ZVVuaXQiLCJpc1JvdW5kIiwicmVtb3ZlTGF5ZXJHcm91cCIsImhhc0xheWVyIiwicmVtb3ZlTGF5ZXIiLCJhZGRMYXllckdyb3VwIiwiaXNGYWN0b3J5VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGhJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9Qb2ludEljb24nO1xuaW1wb3J0IHdhdGVyUmV1c2VJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy93YXRlcl9yZXVzZS5zdmcnO1xuaW1wb3J0IHsgc2VuZEFuYWx5dGljc0V2ZW50IH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc3RyaW5nID0gYCR7cG9pbnQuZ3JvdXAubmFtZX0gYDtcblxuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgc3RyaW5nICs9IGA8YnIvPlNlY3RvcjogJHtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1gO1xuICAgIHN0cmluZyArPSBgPGJyLz5XYXRlciBDb25zdW1wdGlvbjogJHtwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2V9YDtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmcgPSBgJHtwb2ludC5uYW1lfWA7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUZvcldXVFAgPSAoYXJncykgPT4ge1xuICBjb25zdCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIoYXJncy5tYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldEljb24oYXJncy53d3RwUG9pbnQsIGZhbHNlKSxcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBhcmdzLnd3dHBQb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG5cbiAgcmV0dXJuIHBvaW50Q3VzdG9tSWNvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVCdWJibGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbiAgZmxvd19yYXRlX3VuaXQgPSAnZ2RfdXMnLFxuICBoYW5kbGVDbGljaz8sXG4pID0+IHtcbiAgY29uc3QgbWFya2VyT25NYXAgPSBsYXllckdyb3VwXG4gICAgLmdldExheWVycygpXG4gICAgLmZpbmQoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQgPT09IHBvaW50LmlkKTtcblxuICBpZiAoIW1hcmtlck9uTWFwKSB7XG4gICAgY29uc3Qgc3VidGl0bGUgPSBwb2ludElzRmFjdG9yeShwb2ludCkgPyBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSA6ICcnO1xuICAgIGNvbnN0IHR5cGUgPVxuICAgICAgcG9pbnQuaGFzX2RldmljZSB8fCBwb2ludElzV1dUUChwb2ludClcbiAgICAgICAgPyBwb2ludC5ncm91cC50eXBlXG4gICAgICAgIDogJ0dyb3Vwczo6ZGVmYXVsdCc7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogTC5NYXJrZXIgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgaWNvbjogZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgICB0eXBlLFxuICAgICAgICBwb2ludC5uYW1lLFxuICAgICAgICBzdWJ0aXRsZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBwb2ludC5oYXNfc2FtcGxlcixcbiAgICAgICksXG4gICAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2hhc19kZXZpY2UnXSA9IHBvaW50Lmhhc19kZXZpY2U7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnRIb3ZlcmVkJztcblxuICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIocG9pbnRDdXN0b21JY29uKTtcbiAgICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgICBiaW5kUG9wdXBUb01hcmtlcihwb2ludCwgcG9pbnRDdXN0b21JY29uLCBmbG93X3JhdGVfdW5pdCk7XG4gICAgfVxuXG4gICAgaGFuZGxlTWFya2VyRXZlbnRzKG1hcCwgcG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgaGFuZGxlQ2xpY2spO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWFuaG9sZVBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIGxldCBwb2ludEljb24gPSBuZXcgTC5JY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBvaW50LFxuICAgIGljb25TaXplOiBbOSwgOV0sXG4gICAgaWNvbkFuY2hvcjogWzQuNSwgNC41XSxcbiAgfSk7XG4gIGxldCBtYW5ob2xlSWNvbjogYW55ID0gbmV3IEwuTWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgaWNvbjogcG9pbnRJY29uLFxuICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICB9KTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vbHRpcFN0cmluZyhwb2ludCkpO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgbWFuaG9sZUljb25bJ2thbmRvX3BvaW50X3R5cGUnXSA9ICdNYW5ob2xlJztcbiAgaWYgKGhvdmVyZWQpIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludEhvdmVyZWQnO1xuICBsYXllckdyb3VwLmFkZExheWVyKG1hbmhvbGVJY29uKTtcbn07XG5cbi8vICoqKkNvbnNpZGVyIHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gaXQgaXMgbm90IHVzZWQgZm9yIG1vcmUgdGhhbiB0d28geWVhcnMqKipcbmV4cG9ydCBjb25zdCBtYXRjaEljb25Ub1BvaW50ID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgc3dpdGNoIChwb2ludC5ncm91cC50eXBlKSB7XG4gICAgY2FzZSAnR3JvdXBzOjpGYWN0b3J5JzpcbiAgICAgIGlmIChjb21iaW5lZEZhY3RvcnlJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZEZhY3RvcnlJY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6UHVtcFN0YXRpb24nOlxuICAgICAgaWYgKGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbjtcbiAgICBjYXNlICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc6XG4gICAgICBpZiAoY29tYmluZWRXV1RQSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRXV1RQSWNvbjtcblxuICAgIGNhc2UgJ0dyb3Vwczo6Q29sbGVjdG9ycyc6XG4gICAgICBpZiAoaXNDb2xsZWN0b3JGb2N1c2VkKHBvaW50LCBldmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcbiAgICAgICAgICAgIGljb25BbmNob3I6IFszMCwgNTJdLFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgTC5pY29uKHtcbiAgICAgICAgICAgIGljb25Vcmw6IHdhdGVySWNvbk5vQmFja2dyb3VuZCxcbiAgICAgICAgICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICAgICAgICAgIGljb25BbmNob3I6IFsyMiwgNDRdLFxuICAgICAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRDb2xsZWN0b3JzSWNvbjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHN0YW5kYXJkQmFja2dyb3VuZCA9IChcbiAgc2Vjb25kYXJ5OiBib29sZWFuID0gZmFsc2UsXG4gIHRoaXJkOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5CbGFja1NoYWRvdyxcbiAgICBpY29uU2l6ZTogc2Vjb25kYXJ5ID8gWzAsIDBdIDogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IHNlY29uZGFyeSAmJiB0aGlyZCA/IFstMiwgMTldIDogc2Vjb25kYXJ5ID8gWy0yLCA0NF0gOiBbMjAsIDQyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkRmFjdG9yeUljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogeWVsbG93Q2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcGxhbnRJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzUsIDMwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkUHVtcFN0YXRpb25JY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGdyZWVuQ2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcHVtcFN0YXRpb25JY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzcsIDMyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkQ29sbGVjdG9yc0ljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogY29sbGVjdG9ySWNvbixcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuXG4gICAgaWNvbkFuY2hvcjogWzI1LCA1MF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZFdXVFBJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGJyaWdodEJsdWVDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBXV1RQSWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFs4LCAzMV0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RlZEJhY2tncm91bmQgPSAoKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHJlZFBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgbGV0IHNvdXJjZTtcblxuICBpZiAoZXZlbnQgIT09IG51bGwgJiYgZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHNvdXJjZSA9IGV2ZW50LnNvdXJjZXMuZmlsdGVyKChzb3VyY2UpID0+IHNvdXJjZS5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50ICE9PSBudWxsICYmIHNvdXJjZSAmJiBldmVudC5zZWxlY3RlZF9zb3VyY2UgPT09IHNvdXJjZS5wb2ludF9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJCZWxvbmdzVG9Tb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAoZXZlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBibHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCAxNV0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHNhbXBsaW5nSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBsZXQgdGhpcmRJY29uID0gZmFsc2U7XG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlyZEljb24gPSB0cnVlO1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uLCB0aGlyZEljb24pKTtcbiAgfVxuXG4gIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fZmV3X2xheWVyX2ljb24nXSA9IHRydWU7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19zZWNvbmRhcnknXSA9IHRoaXJkSWNvbiA/IGZhbHNlIDogc2Vjb25kYXJ5SWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3RoaXJkJ10gPSB0aGlyZEljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmcnO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1NhbXBsaW5nSG92ZXJlZCc7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgb2JzZXJ2YXRpb25JY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBwaW5rQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCA0MF0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IG9ic2VydmF0aW9uSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMzhdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24pKTtcbiAgfVxuXG4gIG9ic2VydmF0aW9uSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fZmV3X2xheWVyX2ljb24nXSA9IHRydWU7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19zZWNvbmRhcnknXSA9IHNlY29uZGFyeUljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb190aGlyZCddID0gZmFsc2U7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb24nO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ09ic2VydmF0aW9uSG92ZXJlZCc7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25zID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbiAgaG92ZXJlZCxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHNhbXBsZWRQb2ludElkcyA9IGV2ZW50LnNhbXBsaW5ncy5tYXAoKHMpID0+IHMucG9pbnRfaWQpO1xuICBpZiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zYW1wbGluZ3MubGVuZ3RoICE9PSAwICYmXG4gICAgc2FtcGxlZFBvaW50SWRzLmluY2x1ZGVzKHBvaW50LmlkKVxuICApIHtcbiAgICBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludChcbiAgICAgIG1hcmtlckxvY2F0aW9uLFxuICAgICAgbWF0Y2hJY29uVG9Qb2ludChwb2ludCwgZXZlbnQpICE9PSBudWxsLFxuICAgICAgbWFwLFxuICAgICAgcG9pbnQsXG4gICAgICBldmVudCxcbiAgICAgIGhvdmVyZWQsXG4gICAgICBsYXllckdyb3VwLFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3B1cENvbnRlbnQgPSAob2JzOiBhbnksIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgaWYgKG9icyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7cG9pbnQuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7cG9pbnQuZ3JvdXAubmFtZX08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke29icy5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0eWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwLWNvbnRlbnRfX3NldmVyaXR5LS0nICsgb2JzLnNldmVyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdGllcy4ke29icy5zZXZlcml0eX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19oclwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2Rpc2NoYXJnZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5maXJzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJmaXJzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcubGFzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJsYXN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH1cbn07XG5cbmNvbnN0IGdldEljb24gPSAocG9pbnQ6IElQb2ludCwgY2xpY2tlZDogYm9vbGVhbiwgc3VidGl0bGU/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaXNXV1RQID0gcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JztcbiAgY29uc3QgdHlwZSA9XG4gICAgcG9pbnQuaGFzX2RldmljZSB8fCBpc1dXVFAgPyBwb2ludC5ncm91cC50eXBlIDogJ0dyb3Vwczo6ZGVmYXVsdCc7XG4gIGxldCBzdWJ0aXRsZVRleHQgPSBzdWJ0aXRsZSA/IHN1YnRpdGxlIDogcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWU7XG4gIGlmIChpc1dXVFAgJiYgIXBvaW50Lmhhc19kZXZpY2UpIHtcbiAgICBzdWJ0aXRsZVRleHQgKz0gYCAoJHtpMThuLnQoXG4gICAgICAnZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnRvcGJhci5xdWFsaXR5LXN1bW1hcnkudW5tb25pdG9yZWQnLFxuICAgICl9KWA7XG4gIH1cbiAgcmV0dXJuIGdldFBvaW50SWNvbkJ5VHlwZSh0eXBlLCBwb2ludC5uYW1lLCBzdWJ0aXRsZVRleHQsIGNsaWNrZWQsICFjbGlja2VkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRJY29uID0gKGVsZW1lbnQsIGNsaWNrZWQsIHBvaW50LCBzdWJ0aXRsZSkgPT4ge1xuICBlbGVtZW50LnNldEljb24oZ2V0SWNvbihwb2ludCwgY2xpY2tlZCwgc3VidGl0bGUpKTtcbn07XG5cbi8vIHJvdW5kIHRvIG5lYXJlc3QgdGhvdXNhbmQgaXMgdXNlZCB3aGVuIHlvdSB3YW50IHRvIHJvdW5kIHRoZSB3YXRlciBjb25zdW1wdGlvbiB0byB0aGUgbmVhcmVzdCB0aG91c2FuZFxuLy8gZm9yIGV4YW1wbGU6IDIzNCw1NjcgLT4gMjM1LDAwMFxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24gPSAoXG4gIGZsb3dfcmF0ZV91bml0OiBzdHJpbmcsXG4gIHdhdGVyQ29uc3VtcHRpb246IG51bWJlcixcbiAgcm91bmRfdG9fbmVhcmVzdF9rOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgbGV0IGNhbGN1bGF0ZWQgPSAnMCc7XG5cbiAgaWYgKHdhdGVyQ29uc3VtcHRpb24gPiAwKSB7XG4gICAgc3dpdGNoIChmbG93X3JhdGVfdW5pdCkge1xuICAgICAgY2FzZSAnbTNkJzpcbiAgICAgICAgY2FsY3VsYXRlZCA9IHdhdGVyQ29uc3VtcHRpb24udG9GaXhlZCgyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZF91cyc6XG4gICAgICAgIGNhbGN1bGF0ZWQgPSAod2F0ZXJDb25zdW1wdGlvbiAqIDI2NC4xNzIpLnRvRml4ZWQoMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ2RfdWsnOlxuICAgICAgICBjYWxjdWxhdGVkID0gKHdhdGVyQ29uc3VtcHRpb24gKiAyMTkuOTY5KS50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHJvdW5kX3RvX25lYXJlc3Rfaykge1xuICAgIHJldHVybiByb3VuZFRvTmVhcmVzdFRob3VzYW5kKHBhcnNlRmxvYXQoY2FsY3VsYXRlZCkpLnRvTG9jYWxlU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChjYWxjdWxhdGVkKSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgfVxufTtcblxuY29uc3Qgcm91bmRUb05lYXJlc3RUaG91c2FuZCA9IChudW1iZXIpID0+IHtcbiAgLy8gaWYoaXNBbHJlYWR5Um91bmRlZChudW1iZXIpKSB7XG4gIC8vICAgcmV0dXJuIG51bWJlcjtcbiAgLy8gfVxuXG4gIGlmIChudW1iZXIgPCAxMDAwKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgfVxuXG4gIGNvbnN0IHJvdW5kZWRUaG91c2FuZHMgPSBNYXRoLnJvdW5kKG51bWJlciAvIDEwMDApO1xuICBjb25zdCByb3VuZGVkVmFsdWUgPSByb3VuZGVkVGhvdXNhbmRzICogMTAwMDtcblxuICByZXR1cm4gcm91bmRlZFZhbHVlO1xufTtcblxuLy8gY29uc3QgaXNBbHJlYWR5Um91bmRlZCA9IChudW1iZXIpID0+IHtcbi8vICAgcmV0dXJuIG51bWJlciA9PT0gTWF0aC5yb3VuZChudW1iZXIpO1xuLy8gfVxuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRlRmxvd1JhdGUgPSAoZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgcmV0dXJuIGkxOG4udChcbiAgICBgZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy4ke1xuICAgICAgZmxvd19yYXRlX3VuaXQuaW5jbHVkZXMoJ2dkJykgPyAnZ2QnIDogZmxvd19yYXRlX3VuaXRcbiAgICB9YCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVNYXJrZXJFdmVudHMgPSAoXG4gIG1hcCxcbiAgcG9pbnQsXG4gIHBvaW50Q3VzdG9tSWNvbixcbiAgaGFuZGxlQ2xpY2ssXG4pID0+IHtcbiAgbGV0IHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG5cbiAgbWFwLm9uKCd6b29tc3RhcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgfSk7XG5cbiAgcG9pbnRDdXN0b21JY29uLm9uKCdwb3B1cGNsb3NlJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCBmYWxzZSwgcG9pbnQpO1xuICAgIHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbigncG9wdXBvcGVuJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICBpZiAodG9vbHRpcFZpc2libGUpIHJldHVybjtcblxuICAgIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgIGlmIChwb2ludEN1c3RvbUljb24uaXNQb3B1cE9wZW4oKSkgcmV0dXJuO1xuXG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVDbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHBvaW50Q3VzdG9tSWNvbi5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBoYW5kbGVDbGljayhwb2ludEN1c3RvbUljb24ua2FuZG9fb2JqZWN0X2lkKTtcblxuICAgICAgaWYgKHBvaW50SXNGYWN0b3J5KHBvaW50KSkge1xuICAgICAgICBzZW5kQW5hbHl0aWNzRXZlbnQoJ01hcCBWaWV3IC0gRmFjdG9yeSBjbGlja2VkJywgJ21hcCcsIHtcbiAgICAgICAgICBwb2ludF9pZDogcG9pbnQuaWQsXG4gICAgICAgICAgcG9pbnRfbmFtZTogcG9pbnQubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBiaW5kUG9wdXBUb01hcmtlciA9IChwb2ludCwgbGF5ZXJHcm91cCwgZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgbGV0IGNvbnRlbnQgPSBgXG4gICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50Jz5cbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXInPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudF9faGVhZGVyX190aXRsZXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX190aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fc3VidGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5Jz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX19pY29uJz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9JyR7d2F0ZXJSZXVzZUljb259JyAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzJz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX190aXRsZSc+XG4gICAgICAgICAgICAgICAgICAgICR7Z2V0Rmxvd1JhdGUocG9pbnQuZ3JvdXAud2F0ZXJfZGlzY2hhcmdlLCBmbG93X3JhdGVfdW5pdCl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX19zdWJ0aXRsZSc+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICd3YXRlcl9kaXNjaGFyZ2UnLFxuICAgICAgICAgICAgICAgICAgKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgO1xuXG4gIGxheWVyR3JvdXAuYmluZFBvcHVwKGNvbnRlbnQsIHtcbiAgICBjbGFzc05hbWU6ICdwb2ludC1tYXJrZXItcG9wdXAnLFxuICAgIG1pbldpZHRoOiAnMjE0cHgnLFxuICAgIG1heFdpZHRoOiAnMjE0cHgnLFxuICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93UmF0ZSA9IChcbiAgd2F0ZXJDb25zdW1wdGlvbjogbnVtYmVyLFxuICBmbG93UmF0ZVVuaXQ6IHN0cmluZyxcbiAgaXNSb3VuZDogYm9vbGVhbiA9IGZhbHNlLFxuKSA9PiB7XG4gIGlmICh3YXRlckNvbnN1bXB0aW9uID4gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBjYWxjdWxhdGVXYXRlckNvbnN1bXB0aW9uKGZsb3dSYXRlVW5pdCwgd2F0ZXJDb25zdW1wdGlvbiwgaXNSb3VuZCkgK1xuICAgICAgJyAnICtcbiAgICAgIHRyYW5zbGF0ZUZsb3dSYXRlKGZsb3dSYXRlVW5pdClcbiAgICApO1xuICB9XG4gIHJldHVybiBpMThuLnQoJ2V2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLnVua25vd24nKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMYXllckdyb3VwID0gKG1hcCwgbGF5ZXJHcm91cCkgPT4ge1xuICBpZiAobWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLnJlbW92ZUxheWVyKGxheWVyR3JvdXApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKCFtYXAuaGFzTGF5ZXIobGF5ZXJHcm91cCkpIHtcbiAgICBtYXAuYWRkTGF5ZXIobGF5ZXJHcm91cCk7XG4gIH0gZWxzZSB7XG4gICAgcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGxheWVyR3JvdXApO1xuICAgIGFkZExheWVyR3JvdXAobWFwLCBsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc0ZhY3RvcnkgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gaXNGYWN0b3J5VHlwZShwb2ludC5ncm91cC50eXBlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0ZhY3RvcnlUeXBlID0gKHR5cGU6IHN0cmluZykgPT4ge1xuICByZXR1cm4gdHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeSc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSyxnQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBTzNDLElBQUFNLGdCQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxrQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUF5RixJQUFBUyxhQUFBLEdBQUFWLHNCQUFBLENB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
|
|
@@ -12,6 +12,7 @@ var _i18n = _interopRequireDefault(require("utilities/i18n"));
|
|
|
12
12
|
// "water_reuse": "Water Reuse",
|
|
13
13
|
// "shorten_collection_lifetime": "Shorten Collection System Lifetime",
|
|
14
14
|
// "pipes_pumps_blockage": "Pipes & Pumps Blockage"
|
|
15
|
+
|
|
15
16
|
var useCases = [{
|
|
16
17
|
name: 'water_reuse',
|
|
17
18
|
value: 6,
|
|
@@ -109,4 +110,4 @@ describe('PoltentialImpact', function () {
|
|
|
109
110
|
expect(queryAllByText('Show Less')).toHaveLength(1);
|
|
110
111
|
});
|
|
111
112
|
});
|
|
112
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfUG90ZW50aWFsSW1wYWN0IiwiX3JlYWN0UmVkdXgiLCJfcmVkdXgiLCJfaTE4biIsInVzZUNhc2VzIiwibmFtZSIsInZhbHVlIiwicGVyY2VudGFnZSIsImluaXRpYWxTdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwibG9jYWxlIiwicmVkdWNlciIsInN0YXRlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwidHlwZSIsInN0b3JlIiwiY3JlYXRlU3RvcmUiLCJhZnRlckVhY2giLCJjbGVhbnVwIiwiZGVzY3JpYmUiLCJ0ZXN0IiwiX3JlbmRlciIsInJlbmRlciIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJQb3RlbnRpYWxJbXBhY3QiLCJ1c2VfY2FzZXMiLCJzaG93X3N0YXRlIiwidG9nZ2xlU2hvdyIsInF1ZXJ5QWxsQnlUZXh0IiwiZXhwZWN0IiwidG9IYXZlTGVuZ3RoIiwiX3JlbmRlcjIiLCJzbGljZSIsImkxOG4iLCJ0IiwiY29uY2F0IiwiX3JlbmRlcjMiLCJlbGVtZW50cyIsInRvQmVUcnV0aHkiLCJfcmVuZGVyNCIsInRvQmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvV2lkZ2V0cy9Nb3N0UG9sbHV0aW5nL2NvbXBvbmVudHMvUG90ZW50aWFsSW1wYWN0LnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIGNsZWFudXAgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFBvdGVudGlhbEltcGFjdCB9IGZyb20gJy4vUG90ZW50aWFsSW1wYWN0JztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuXG4vLyBcInd3dHBfY29zdFwiOiBcIldXVFAgUHJvY2VzcyBDb3N0XCIsXG4vLyBcInNsdWRnZV90cmVhdG1lbnRcIjogXCJTbHVkZ2UgVHJlYXRtZW50XCIsXG4vLyBcIndhdGVyX3JldXNlXCI6IFwiV2F0ZXIgUmV1c2VcIixcbi8vIFwic2hvcnRlbl9jb2xsZWN0aW9uX2xpZmV0aW1lXCI6IFwiU2hvcnRlbiBDb2xsZWN0aW9uIFN5c3RlbSBMaWZldGltZVwiLFxuLy8gXCJwaXBlc19wdW1wc19ibG9ja2FnZVwiOiBcIlBpcGVzICYgUHVtcHMgQmxvY2thZ2VcIlxuXG5jb25zdCB1c2VDYXNlcyA9IFtcbiAge1xuICAgIG5hbWU6ICd3YXRlcl9yZXVzZScsXG4gICAgdmFsdWU6IDYsXG4gICAgcGVyY2VudGFnZTogJzEwJScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnc2x1ZGdlX3RyZWF0bWVudCcsXG4gICAgdmFsdWU6IDMsXG4gICAgcGVyY2VudGFnZTogJzIwJScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnd3d0cF9jb3N0JyxcbiAgICB2YWx1ZTogNixcbiAgICBwZXJjZW50YWdlOiAnMzAlJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdzaG9ydGVuX2NvbGxlY3Rpb25fbGlmZXRpbWUnLFxuICAgIHZhbHVlOiAzLFxuICAgIHBlcmNlbnRhZ2U6ICczMCUnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ3BpcGVzX3B1bXBzX2Jsb2NrYWdlJyxcbiAgICB2YWx1ZTogNixcbiAgICBwZXJjZW50YWdlOiAnMTAlJyxcbiAgfSxcbl07XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgbmF2X2NvbnRleHRfZGF0YToge1xuICAgIG5hdkNvbnRleHQ6IHtcbiAgICAgIGxvY2FsZTogJ2VuLVVTJywgLy8gUmVwbGFjZSB3aXRoIHRoZSBkZXNpcmVkIGxvY2FsZSB2YWx1ZSBmb3IgeW91ciB0ZXN0XG4gICAgfSxcbiAgfSxcbn07XG5cbmNvbnN0IHJlZHVjZXIgPSAoc3RhdGUgPSB7fSwgYWN0aW9uKSA9PiB7XG4gIC8vIEhhbmRsZSBkaWZmZXJlbnQgYWN0aW9uIHR5cGVzIGFuZCB1cGRhdGUgdGhlIHN0YXRlIGFjY29yZGluZ2x5XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5jb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG5cbmFmdGVyRWFjaCgoKSA9PiB7XG4gIGNsZWFudXAoKTtcbn0pO1xuXG5kZXNjcmliZSgnUG9sdGVudGlhbEltcGFjdCcsICgpID0+IHtcbiAgdGVzdCgnRW1wdHkgdXNlIGNhc2VzIGFycmF5JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgcXVlcnlBbGxCeVRleHQgfSA9IHJlbmRlcihcbiAgICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgICA8UG90ZW50aWFsSW1wYWN0XG4gICAgICAgICAgdXNlX2Nhc2VzPXtbXX1cbiAgICAgICAgICBzaG93X3N0YXRlPXtmYWxzZX1cbiAgICAgICAgICB0b2dnbGVTaG93PXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgIDwvUHJvdmlkZXI+LFxuICAgICk7XG5cbiAgICBleHBlY3QocXVlcnlBbGxCeVRleHQoJ1BvdGVudGlhbCBJbXBhY3QnKSkudG9IYXZlTGVuZ3RoKDApO1xuICB9KTtcblxuICB0ZXN0KCdEbyBub3QgU2hvdyBBbGwgd2l0aCBvbmUgdXNlIGNhc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBxdWVyeUFsbEJ5VGV4dCB9ID0gcmVuZGVyKFxuICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgIDxQb3RlbnRpYWxJbXBhY3RcbiAgICAgICAgICB1c2VfY2FzZXM9e3VzZUNhc2VzLnNsaWNlKDAsIDEpfVxuICAgICAgICAgIHNob3dfc3RhdGU9e2ZhbHNlfVxuICAgICAgICAgIHRvZ2dsZVNob3c9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Qcm92aWRlcj4sXG4gICAgKTtcblxuICAgIGV4cGVjdChcbiAgICAgIHF1ZXJ5QWxsQnlUZXh0KFxuICAgICAgICBpMThuLnQoYGRhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC51c2VfY2FzZXMuJHt1c2VDYXNlc1swXS5uYW1lfWApLFxuICAgICAgKSxcbiAgICApLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBleHBlY3QocXVlcnlBbGxCeVRleHQoJ1Nob3cgQWxsJykpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgfSk7XG5cbiAgdGVzdCgnU2hvdyB0aGUgMXN0IHVzZSBjYXNlIGFuZCBcIlNob3cgQWxsICNcIiB3aGVuIG1vcmUgdGhlbiBvbmUgdXNlIGNhc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBxdWVyeUFsbEJ5VGV4dCB9ID0gcmVuZGVyKFxuICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgIDxQb3RlbnRpYWxJbXBhY3RcbiAgICAgICAgICB1c2VfY2FzZXM9e3VzZUNhc2VzLnNsaWNlKDEsIDMpfVxuICAgICAgICAgIHNob3dfc3RhdGU9e2ZhbHNlfVxuICAgICAgICAgIHRvZ2dsZVNob3c9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Qcm92aWRlcj4sXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50cyA9IHF1ZXJ5QWxsQnlUZXh0KFxuICAgICAgaTE4bi50KGBkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudXNlX2Nhc2VzLiR7dXNlQ2FzZXNbMV0ubmFtZX1gKSxcbiAgICApO1xuICAgIGV4cGVjdChlbGVtZW50cykudG9CZVRydXRoeSgpO1xuICAgIGVsZW1lbnRzID0gcXVlcnlBbGxCeVRleHQoXG4gICAgICBpMThuLnQoYGRhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC51c2VfY2FzZXMuJHt1c2VDYXNlc1syXS5uYW1lfWApLFxuICAgICk7XG4gICAgZXhwZWN0KGVsZW1lbnRzKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHF1ZXJ5QWxsQnlUZXh0KCdTaG93IEFsbCAyJykpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG5cbiAgdGVzdCgnU2hvdyB0aGUgbGlzdCBvZiB1c2UgY2FzZXMgYW5kIFwiU2hvdyBMZXNzXCIgd2hlbiBtb3JlIHRoZW4gb25lIHVzZSBjYXNlJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgcXVlcnlBbGxCeVRleHQgfSA9IHJlbmRlcihcbiAgICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgICA8UG90ZW50aWFsSW1wYWN0XG4gICAgICAgICAgdXNlX2Nhc2VzPXt1c2VDYXNlc31cbiAgICAgICAgICBzaG93X3N0YXRlPXt0cnVlfVxuICAgICAgICAgIHRvZ2dsZVNob3c9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Qcm92aWRlcj4sXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50cyA9IHF1ZXJ5QWxsQnlUZXh0KFxuICAgICAgaTE4bi50KGBkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudXNlX2Nhc2VzLiR7dXNlQ2FzZXNbMF0ubmFtZX1gKSxcbiAgICApO1xuICAgIGV4cGVjdChlbGVtZW50cy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgZWxlbWVudHMgPSBxdWVyeUFsbEJ5VGV4dChcbiAgICAgIGkxOG4udChgZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnVzZV9jYXNlcy4ke3VzZUNhc2VzWzFdLm5hbWV9YCksXG4gICAgKTtcbiAgICBleHBlY3QoZWxlbWVudHMubGVuZ3RoKS50b0JlKDEpO1xuICAgIGV4cGVjdChxdWVyeUFsbEJ5VGV4dCgnU2hvdyBMZXNzJykpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFB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
|
|
113
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfUG90ZW50aWFsSW1wYWN0IiwiX3JlYWN0UmVkdXgiLCJfcmVkdXgiLCJfaTE4biIsInVzZUNhc2VzIiwibmFtZSIsInZhbHVlIiwicGVyY2VudGFnZSIsImluaXRpYWxTdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwibG9jYWxlIiwicmVkdWNlciIsInN0YXRlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwidHlwZSIsInN0b3JlIiwiY3JlYXRlU3RvcmUiLCJhZnRlckVhY2giLCJjbGVhbnVwIiwiZGVzY3JpYmUiLCJ0ZXN0IiwiX3JlbmRlciIsInJlbmRlciIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJQb3RlbnRpYWxJbXBhY3QiLCJ1c2VfY2FzZXMiLCJzaG93X3N0YXRlIiwidG9nZ2xlU2hvdyIsInF1ZXJ5QWxsQnlUZXh0IiwiZXhwZWN0IiwidG9IYXZlTGVuZ3RoIiwiX3JlbmRlcjIiLCJzbGljZSIsImkxOG4iLCJ0IiwiY29uY2F0IiwiX3JlbmRlcjMiLCJlbGVtZW50cyIsInRvQmVUcnV0aHkiLCJfcmVuZGVyNCIsInRvQmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvV2lkZ2V0cy9Nb3N0UG9sbHV0aW5nL2NvbXBvbmVudHMvUG90ZW50aWFsSW1wYWN0LnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIGNsZWFudXAgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFBvdGVudGlhbEltcGFjdCB9IGZyb20gJy4vUG90ZW50aWFsSW1wYWN0JztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuXG4vLyBcInd3dHBfY29zdFwiOiBcIldXVFAgUHJvY2VzcyBDb3N0XCIsXG4vLyBcInNsdWRnZV90cmVhdG1lbnRcIjogXCJTbHVkZ2UgVHJlYXRtZW50XCIsXG4vLyBcIndhdGVyX3JldXNlXCI6IFwiV2F0ZXIgUmV1c2VcIixcbi8vIFwic2hvcnRlbl9jb2xsZWN0aW9uX2xpZmV0aW1lXCI6IFwiU2hvcnRlbiBDb2xsZWN0aW9uIFN5c3RlbSBMaWZldGltZVwiLFxuLy8gXCJwaXBlc19wdW1wc19ibG9ja2FnZVwiOiBcIlBpcGVzICYgUHVtcHMgQmxvY2thZ2VcIlxuXG5jb25zdCB1c2VDYXNlcyA9IFtcbiAge1xuICAgIG5hbWU6ICd3YXRlcl9yZXVzZScsXG4gICAgdmFsdWU6IDYsXG4gICAgcGVyY2VudGFnZTogJzEwJScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnc2x1ZGdlX3RyZWF0bWVudCcsXG4gICAgdmFsdWU6IDMsXG4gICAgcGVyY2VudGFnZTogJzIwJScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnd3d0cF9jb3N0JyxcbiAgICB2YWx1ZTogNixcbiAgICBwZXJjZW50YWdlOiAnMzAlJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdzaG9ydGVuX2NvbGxlY3Rpb25fbGlmZXRpbWUnLFxuICAgIHZhbHVlOiAzLFxuICAgIHBlcmNlbnRhZ2U6ICczMCUnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ3BpcGVzX3B1bXBzX2Jsb2NrYWdlJyxcbiAgICB2YWx1ZTogNixcbiAgICBwZXJjZW50YWdlOiAnMTAlJyxcbiAgfSxcbl07XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgbmF2X2NvbnRleHRfZGF0YToge1xuICAgIG5hdkNvbnRleHQ6IHtcbiAgICAgIGxvY2FsZTogJ2VuLVVTJywgLy8gUmVwbGFjZSB3aXRoIHRoZSBkZXNpcmVkIGxvY2FsZSB2YWx1ZSBmb3IgeW91ciB0ZXN0XG4gICAgfSxcbiAgfSxcbn07XG5cbmNvbnN0IHJlZHVjZXIgPSAoc3RhdGUgPSB7fSwgYWN0aW9uKSA9PiB7XG4gIC8vIEhhbmRsZSBkaWZmZXJlbnQgYWN0aW9uIHR5cGVzIGFuZCB1cGRhdGUgdGhlIHN0YXRlIGFjY29yZGluZ2x5XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5jb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG5cbmFmdGVyRWFjaCgoKSA9PiB7XG4gIGNsZWFudXAoKTtcbn0pO1xuXG5kZXNjcmliZSgnUG9sdGVudGlhbEltcGFjdCcsICgpID0+IHtcbiAgdGVzdCgnRW1wdHkgdXNlIGNhc2VzIGFycmF5JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgcXVlcnlBbGxCeVRleHQgfSA9IHJlbmRlcihcbiAgICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgICA8UG90ZW50aWFsSW1wYWN0XG4gICAgICAgICAgdXNlX2Nhc2VzPXtbXX1cbiAgICAgICAgICBzaG93X3N0YXRlPXtmYWxzZX1cbiAgICAgICAgICB0b2dnbGVTaG93PXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgIDwvUHJvdmlkZXI+LFxuICAgICk7XG5cbiAgICBleHBlY3QocXVlcnlBbGxCeVRleHQoJ1BvdGVudGlhbCBJbXBhY3QnKSkudG9IYXZlTGVuZ3RoKDApO1xuICB9KTtcblxuICB0ZXN0KCdEbyBub3QgU2hvdyBBbGwgd2l0aCBvbmUgdXNlIGNhc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBxdWVyeUFsbEJ5VGV4dCB9ID0gcmVuZGVyKFxuICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgIDxQb3RlbnRpYWxJbXBhY3RcbiAgICAgICAgICB1c2VfY2FzZXM9e3VzZUNhc2VzLnNsaWNlKDAsIDEpfVxuICAgICAgICAgIHNob3dfc3RhdGU9e2ZhbHNlfVxuICAgICAgICAgIHRvZ2dsZVNob3c9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Qcm92aWRlcj4sXG4gICAgKTtcblxuICAgIGV4cGVjdChcbiAgICAgIHF1ZXJ5QWxsQnlUZXh0KFxuICAgICAgICBpMThuLnQoYGRhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC51c2VfY2FzZXMuJHt1c2VDYXNlc1swXS5uYW1lfWApLFxuICAgICAgKSxcbiAgICApLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBleHBlY3QocXVlcnlBbGxCeVRleHQoJ1Nob3cgQWxsJykpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgfSk7XG5cbiAgdGVzdCgnU2hvdyB0aGUgMXN0IHVzZSBjYXNlIGFuZCBcIlNob3cgQWxsICNcIiB3aGVuIG1vcmUgdGhlbiBvbmUgdXNlIGNhc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBxdWVyeUFsbEJ5VGV4dCB9ID0gcmVuZGVyKFxuICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgIDxQb3RlbnRpYWxJbXBhY3RcbiAgICAgICAgICB1c2VfY2FzZXM9e3VzZUNhc2VzLnNsaWNlKDEsIDMpfVxuICAgICAgICAgIHNob3dfc3RhdGU9e2ZhbHNlfVxuICAgICAgICAgIHRvZ2dsZVNob3c9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Qcm92aWRlcj4sXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50cyA9IHF1ZXJ5QWxsQnlUZXh0KFxuICAgICAgaTE4bi50KGBkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudXNlX2Nhc2VzLiR7dXNlQ2FzZXNbMV0ubmFtZX1gKSxcbiAgICApO1xuICAgIGV4cGVjdChlbGVtZW50cykudG9CZVRydXRoeSgpO1xuICAgIGVsZW1lbnRzID0gcXVlcnlBbGxCeVRleHQoXG4gICAgICBpMThuLnQoYGRhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC51c2VfY2FzZXMuJHt1c2VDYXNlc1syXS5uYW1lfWApLFxuICAgICk7XG4gICAgZXhwZWN0KGVsZW1lbnRzKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHF1ZXJ5QWxsQnlUZXh0KCdTaG93IEFsbCAyJykpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG5cbiAgdGVzdCgnU2hvdyB0aGUgbGlzdCBvZiB1c2UgY2FzZXMgYW5kIFwiU2hvdyBMZXNzXCIgd2hlbiBtb3JlIHRoZW4gb25lIHVzZSBjYXNlJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgcXVlcnlBbGxCeVRleHQgfSA9IHJlbmRlcihcbiAgICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgICA8UG90ZW50aWFsSW1wYWN0XG4gICAgICAgICAgdXNlX2Nhc2VzPXt1c2VDYXNlc31cbiAgICAgICAgICBzaG93X3N0YXRlPXt0cnVlfVxuICAgICAgICAgIHRvZ2dsZVNob3c9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Qcm92aWRlcj4sXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50cyA9IHF1ZXJ5QWxsQnlUZXh0KFxuICAgICAgaTE4bi50KGBkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudXNlX2Nhc2VzLiR7dXNlQ2FzZXNbMF0ubmFtZX1gKSxcbiAgICApO1xuICAgIGV4cGVjdChlbGVtZW50cy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgZWxlbWVudHMgPSBxdWVyeUFsbEJ5VGV4dChcbiAgICAgIGkxOG4udChgZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnVzZV9jYXNlcy4ke3VzZUNhc2VzWzFdLm5hbWV9YCksXG4gICAgKTtcbiAgICBleHBlY3QoZWxlbWVudHMubGVuZ3RoKS50b0JlKDEpO1xuICAgIGV4cGVjdChxdWVyeUFsbEJ5VGV4dCgnU2hvdyBMZXNzJykpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFB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
|