@kepler.gl/components 3.1.0-alpha.3 → 3.1.0-alpha.5
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/dist/bottom-widget.d.ts +7 -1
- package/dist/bottom-widget.js +2 -8
- package/dist/common/action-panel.d.ts +5 -6
- package/dist/common/action-panel.js +3 -5
- package/dist/common/animation-control/animation-control.d.ts +2 -1
- package/dist/common/animation-control/animation-control.js +4 -2
- package/dist/common/animation-control/animation-speed-slider.js +21 -7
- package/dist/common/animation-control/floating-time-display.js +1 -1
- package/dist/common/animation-control/play-control.js +11 -13
- package/dist/common/animation-control/playback-controls.d.ts +11 -20
- package/dist/common/animation-control/playback-controls.js +6 -4
- package/dist/common/animation-control/reset-control.js +11 -13
- package/dist/common/animation-control/speed-control.js +10 -12
- package/dist/common/color-legend.d.ts +4 -5
- package/dist/common/color-legend.js +16 -5
- package/dist/common/column-stats-chart.d.ts +9 -3
- package/dist/common/column-stats-chart.js +17 -63
- package/dist/common/data-table/canvas.d.ts +2 -1
- package/dist/common/data-table/index.d.ts +7 -7
- package/dist/common/data-table/index.js +4 -5
- package/dist/common/file-uploader/file-upload-progress.d.ts +4 -4
- package/dist/common/file-uploader/file-upload-progress.js +1 -2
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/file-uploader/upload-button.js +2 -2
- package/dist/common/flex-container.d.ts +8 -3
- package/dist/common/histogram-plot.js +4 -2
- package/dist/common/icon-button.d.ts +7 -4
- package/dist/common/icons/draggable-dots.d.ts +14 -0
- package/dist/common/icons/draggable-dots.js +85 -0
- package/dist/common/icons/horizontal-resize-handle.d.ts +14 -0
- package/dist/common/icons/horizontal-resize-handle.js +59 -0
- package/dist/common/icons/index.d.ts +2 -0
- package/dist/common/icons/index.js +15 -1
- package/dist/common/icons/pin.js +1 -1
- package/dist/common/info-helper.js +2 -2
- package/dist/common/item-selector/chickleted-input.d.ts +21 -17
- package/dist/common/item-selector/chickleted-input.js +3 -3
- package/dist/common/item-selector/dropdown-list.d.ts +12 -12
- package/dist/common/item-selector/dropdown-list.js +1 -2
- package/dist/common/item-selector/dropdown-select.d.ts +8 -4
- package/dist/common/item-selector/dropdown-select.js +2 -2
- package/dist/common/item-selector/item-selector.d.ts +5 -9
- package/dist/common/item-selector/item-selector.js +1 -1
- package/dist/common/item-selector/typeahead.d.ts +20 -6
- package/dist/common/item-selector/typeahead.js +3 -3
- package/dist/common/loading-spinner.d.ts +8 -4
- package/dist/common/loading-spinner.js +1 -1
- package/dist/common/modal.d.ts +12 -12
- package/dist/common/modal.js +3 -3
- package/dist/common/portaled.d.ts +22 -486
- package/dist/common/portaled.js +6 -3
- package/dist/common/range-plot.d.ts +23 -28
- package/dist/common/range-plot.js +38 -29
- package/dist/common/range-slider-timeline.js +1 -2
- package/dist/common/slider/slider-bar-handle.d.ts +5 -0
- package/dist/common/slider/slider-bar-handle.js +2 -2
- package/dist/common/slider/slider-handle.d.ts +9 -0
- package/dist/common/slider/slider-handle.js +3 -3
- package/dist/common/slider/slider.d.ts +2 -2
- package/dist/common/styled-components.d.ts +444 -92
- package/dist/common/styled-components.js +15 -11
- package/dist/common/sync-timeline-control.js +2 -2
- package/dist/common/time-range-slider-time-title.d.ts +4 -0
- package/dist/common/time-range-slider-time-title.js +1 -1
- package/dist/common/time-range-slider.d.ts +7 -3
- package/dist/common/time-range-slider.js +1 -1
- package/dist/common/timeline-slider.d.ts +2 -0
- package/dist/common/timeline-slider.js +1 -1
- package/dist/common/toolbar-item.js +2 -2
- package/dist/common/toolbar.d.ts +5 -3
- package/dist/common/toolbar.js +1 -1
- package/dist/common/vertical-toolbar.d.ts +6 -1
- package/dist/container.js +2 -2
- package/dist/dnd-context.d.ts +1 -1
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +4 -4
- package/dist/effects/effect-manager.d.ts +2 -0
- package/dist/effects/effect-manager.js +10 -10
- package/dist/effects/effect-panel-header.js +5 -5
- package/dist/effects/effect-time-configurator.js +2 -2
- package/dist/effects/effect-time-selector.d.ts +1 -6
- package/dist/effects/effect-time-selector.js +3 -3
- package/dist/effects/effect-type-dropdown-list.js +2 -2
- package/dist/effects/effect-type-list-item.d.ts +1 -10
- package/dist/effects/effect-type-list-item.js +2 -2
- package/dist/effects/effect-type-selector.d.ts +1 -12
- package/dist/effects/effect-type-selector.js +2 -2
- package/dist/effects/timezone-selector.d.ts +1 -9
- package/dist/effects/timezone-selector.js +1 -1
- package/dist/filters/components.d.ts +6 -3
- package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +3 -4
- package/dist/filters/time-widget-top.js +2 -2
- package/dist/filters/types.d.ts +4 -2
- package/dist/filters/types.js +1 -1
- package/dist/geocoder/geocoder.js +2 -2
- package/dist/geocoder-panel.d.ts +6 -0
- package/dist/geocoder-panel.js +1 -1
- package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +3 -2
- package/dist/hooks/use-fetch-vector-tile-metadata.js +33 -18
- package/dist/hooks/use-legend-position.d.ts +36 -0
- package/dist/hooks/use-legend-position.js +147 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +18 -3
- package/dist/kepler-gl.d.ts +44 -5
- package/dist/kepler-gl.js +77 -4
- package/dist/map/layer-hover-info.d.ts +3 -1
- package/dist/map/map-control-panel.js +4 -3
- package/dist/map/map-control-toolbar.d.ts +15 -1
- package/dist/map/map-control-toolbar.js +1 -1
- package/dist/map/map-legend-panel.d.ts +10 -35
- package/dist/map/map-legend-panel.js +234 -128
- package/dist/map/map-legend.d.ts +3 -2
- package/dist/map/map-legend.js +7 -10
- package/dist/map/map-popover.js +16 -11
- package/dist/map-container.d.ts +10 -8
- package/dist/map-container.js +86 -55
- package/dist/modal-container.d.ts +2 -1
- package/dist/modal-container.js +4 -3
- package/dist/modals/add-map-style-modal.d.ts +3 -0
- package/dist/modals/add-map-style-modal.js +58 -10
- package/dist/modals/cloud-components/cloud-item.js +2 -2
- package/dist/modals/cloud-tile.d.ts +6 -1
- package/dist/modals/cloud-tile.js +2 -2
- package/dist/modals/data-table-modal.d.ts +5 -3
- package/dist/modals/data-table-modal.js +3 -3
- package/dist/modals/export-data-modal.js +4 -5
- package/dist/modals/export-map-modal/components.d.ts +5 -3
- package/dist/modals/export-map-modal/export-html-map.js +2 -2
- package/dist/modals/export-map-modal/export-json-map.js +3 -2
- package/dist/modals/modal-dialog.d.ts +3 -1
- package/dist/modals/modal-tabs.js +2 -2
- package/dist/modals/share-map-modal.d.ts +4 -4
- package/dist/modals/storage-map-viewer.js +3 -3
- package/dist/modals/tilesets-modals/common.d.ts +1 -1
- package/dist/modals/tilesets-modals/common.js +1 -1
- package/dist/modals/tilesets-modals/load-data-footer.d.ts +3 -3
- package/dist/modals/tilesets-modals/load-data-footer.js +16 -7
- package/dist/modals/tilesets-modals/load-tileset.js +5 -4
- package/dist/modals/tilesets-modals/tileset-vector-form.js +28 -14
- package/dist/plot-container.js +3 -3
- package/dist/side-panel/add-by-dataset-button.js +4 -1
- package/dist/side-panel/common/dataset-info.js +3 -3
- package/dist/side-panel/common/dataset-title.d.ts +1 -0
- package/dist/side-panel/common/dataset-title.js +5 -4
- package/dist/side-panel/filter-manager.d.ts +2 -2
- package/dist/side-panel/filter-manager.js +1 -1
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +9 -1
- package/dist/side-panel/filter-panel/filter-panel-header.js +24 -9
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +10 -1
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +5 -3
- package/dist/side-panel/layer-panel/aggr-scale-selector.d.ts +2 -1
- package/dist/side-panel/layer-panel/aggr-scale-selector.js +3 -1
- package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +2 -4
- package/dist/side-panel/layer-panel/channel-by-value-selector.js +9 -5
- package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +15 -7
- package/dist/side-panel/layer-panel/color-breaks-panel.js +52 -20
- package/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
- package/dist/side-panel/layer-panel/color-palette.d.ts +9 -4
- package/dist/side-panel/layer-panel/color-palette.js +13 -7
- package/dist/side-panel/layer-panel/color-range-selector.js +2 -2
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +3 -1
- package/dist/side-panel/layer-panel/color-scale-selector.js +82 -37
- package/dist/side-panel/layer-panel/color-selector.d.ts +6 -6
- package/dist/side-panel/layer-panel/color-selector.js +52 -36
- package/dist/side-panel/layer-panel/custom-palette.d.ts +44 -15
- package/dist/side-panel/layer-panel/custom-palette.js +342 -39
- package/dist/side-panel/layer-panel/custom-picker.d.ts +9 -5
- package/dist/side-panel/layer-panel/custom-picker.js +2 -2
- package/dist/side-panel/layer-panel/dimension-scale-selector.js +5 -3
- package/dist/side-panel/layer-panel/layer-column-mode-config.js +1 -1
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +11 -11
- package/dist/side-panel/layer-panel/layer-config-group.js +2 -2
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +7 -7
- package/dist/side-panel/layer-panel/layer-configurator.js +10 -10
- package/dist/side-panel/layer-panel/layer-list.d.ts +2 -0
- package/dist/side-panel/layer-panel/layer-list.js +7 -4
- package/dist/side-panel/layer-panel/layer-panel-header.js +5 -5
- package/dist/side-panel/layer-panel/layer-panel.d.ts +3 -0
- package/dist/side-panel/layer-panel/layer-panel.js +8 -8
- package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +2 -2
- package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +1 -10
- package/dist/side-panel/layer-panel/layer-type-list-item.js +2 -2
- package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -8
- package/dist/side-panel/layer-panel/layer-type-selector.js +1 -1
- package/dist/side-panel/layer-panel/single-color-palette.js +2 -2
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +6 -3
- package/dist/side-panel/map-style-panel/map-style-selector.js +2 -2
- package/dist/side-panel/panel-header-action.js +2 -2
- package/dist/side-panel/panel-header.js +2 -2
- package/dist/side-panel/panel-tab.d.ts +3 -3
- package/dist/side-panel/panel-tab.js +2 -2
- package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
- package/dist/side-panel/panel-view-list-toggle.js +2 -2
- package/dist/side-panel/side-bar.js +2 -2
- package/dist/side-panel.d.ts +1 -1
- package/dist/types.d.ts +6 -7
- package/dist/types.js +1 -1
- package/package.json +23 -22
|
@@ -5,26 +5,38 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = exports.EditableColorRange = exports.DragHandle = exports.DividerLine = exports.DeleteColorStop = exports.CustomPaletteInput = exports.ColorSwatch = exports.ColorPaletteItem = exports.ColorPaletteInput = exports.BottomAction = exports.AddColorStop = void 0;
|
|
8
|
+
exports["default"] = exports.EditableColorRange = exports.DragHandle = exports.DividerLine = exports.DeleteColorStop = exports.CustomPaletteInput = exports.ColorSwatch = exports.ColorPaletteItem = exports.ColorPaletteInput = exports.CategoricalSelector = exports.CategoricalCustomPaletteInput = exports.BottomAction = exports.AddColorStop = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
10
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
16
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
12
17
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
18
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
var _lodash = _interopRequireDefault(require("lodash.uniq"));
|
|
14
20
|
var _reactSortableHoc = require("react-sortable-hoc");
|
|
15
21
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
16
22
|
var _portaled = _interopRequireDefault(require("../../common/portaled"));
|
|
23
|
+
var _styledComponents2 = require("../../common/styled-components");
|
|
24
|
+
var _typeahead = _interopRequireDefault(require("../../common/item-selector/typeahead"));
|
|
25
|
+
var _chickletedInput = _interopRequireDefault(require("../../common/item-selector/chickleted-input"));
|
|
26
|
+
var _dropdownList = _interopRequireWildcard(require("../../common/item-selector/dropdown-list"));
|
|
27
|
+
var _commonUtils = require("@kepler.gl/common-utils");
|
|
17
28
|
var _constants = require("@kepler.gl/constants");
|
|
18
29
|
var _utils = require("@kepler.gl/utils");
|
|
19
30
|
var _icons = require("../../common/icons");
|
|
20
|
-
var _styledComponents2 = require("../../common/styled-components");
|
|
21
31
|
var _customPicker = _interopRequireDefault(require("./custom-picker"));
|
|
22
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13; // SPDX-License-Identifier: MIT
|
|
32
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20; // SPDX-License-Identifier: MIT
|
|
23
33
|
// Copyright contributors to the kepler.gl project
|
|
24
34
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
25
35
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
26
36
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27
37
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
38
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
39
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
28
40
|
/**
|
|
29
41
|
* EditableColorRange
|
|
30
42
|
*/
|
|
@@ -37,7 +49,7 @@ var defaultActionIcons = {
|
|
|
37
49
|
var dragHandleActive = (0, _styledComponents.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .layer__drag-handle {\n color: ", ";\n opacity: 1;\n cursor: move;\n }\n"])), function (props) {
|
|
38
50
|
return props.theme.textColorHl;
|
|
39
51
|
});
|
|
40
|
-
var ColorPaletteItem = exports.ColorPaletteItem = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n padding-top: 2px;\n padding-bottom: 2px;\n z-index: ", ";\n justify-content: space-between;\n\n .custom-palette-input__left {\n display: flex;\n align-items: center;\n }\n\n .custom-palette-input__right {\n display: flex;\n align-items: center;\n padding-right: 6px;\n }\n\n
|
|
52
|
+
var ColorPaletteItem = exports.ColorPaletteItem = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n padding-top: 2px;\n padding-bottom: 2px;\n z-index: ", ";\n justify-content: space-between;\n\n .custom-palette-input__left {\n display: flex;\n align-items: center;\n }\n\n .custom-palette-input__right {\n display: flex;\n align-items: center;\n padding-right: 6px;\n }\n\n &:not(.sorting):not(.disabled) {\n &:hover {\n background-color: ", ";\n ", ";\n }\n }\n\n &.sorting-colors {\n background-color: ", ";\n ", ";\n }\n"])), function (props) {
|
|
41
53
|
return props.theme.dropdownWrapperZ + 1;
|
|
42
54
|
}, function (props) {
|
|
43
55
|
return props.theme.panelBackgroundHover;
|
|
@@ -45,7 +57,7 @@ var ColorPaletteItem = exports.ColorPaletteItem = _styledComponents["default"].d
|
|
|
45
57
|
return props.theme.panelBackgroundHover;
|
|
46
58
|
}, dragHandleActive);
|
|
47
59
|
var StyledDragHandle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n opacity: 0;\n"])));
|
|
48
|
-
var StyledAction = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n svg {\n
|
|
60
|
+
var StyledAction = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n svg {\n &:hover {\n color: ", ";\n }\n }\n\n margin-left: 4px;\n &:hover {\n cursor: pointer;\n }\n"])), function (props) {
|
|
49
61
|
return props.theme.subtextColor;
|
|
50
62
|
}, function (props) {
|
|
51
63
|
return props.theme.subtextColorActive;
|
|
@@ -55,13 +67,16 @@ var DividerLine = exports.DividerLine = _styledComponents["default"].div(_templa
|
|
|
55
67
|
});
|
|
56
68
|
var ColorSwatch = exports.ColorSwatch = _styledComponents["default"].div.attrs({
|
|
57
69
|
className: 'custom-palette__swatch'
|
|
58
|
-
})(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: 32px;\n height: 18px;\n display: inline-block;\n
|
|
70
|
+
})(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: 32px;\n height: 18px;\n display: inline-block;\n &:hover {\n box-shadow: ", ";\n cursor: pointer;\n }\n"])), function (props) {
|
|
59
71
|
return props.color;
|
|
60
72
|
}, function (props) {
|
|
61
73
|
return props.theme.boxShadow;
|
|
62
74
|
});
|
|
63
75
|
var StyledButtonContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 11px;\n display: flex;\n direction: rtl;\n padding: 0 12px;\n"])));
|
|
64
|
-
var
|
|
76
|
+
var StyledAddStepContainer = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 11px;\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n padding: 0 12px;\n color: ", ";\n .addcolor {\n margin-top: 4px;\n }\n"])), function (props) {
|
|
77
|
+
return props.theme.inputColor;
|
|
78
|
+
});
|
|
79
|
+
var StyledInput = (0, _styledComponents["default"])(_styledComponents2.Input)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n text-align: ", ";\n pointer-events: ", ";\n"])), function (props) {
|
|
65
80
|
var _props$width;
|
|
66
81
|
return (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : '100%';
|
|
67
82
|
}, function (props) {
|
|
@@ -70,7 +85,7 @@ var StyledInput = (0, _styledComponents["default"])(_styledComponents2.Input)(_t
|
|
|
70
85
|
}, function (props) {
|
|
71
86
|
return props.disabled ? 'none' : 'all';
|
|
72
87
|
});
|
|
73
|
-
var InputText = _styledComponents["default"].div(
|
|
88
|
+
var InputText = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n background-color: transparent;\n border-color: transparent;\n width: ", ";\n text-align: ", ";\n\n &:hover {\n cursor: auto;\n background-color: transparent;\n border-color: transparent;\n }\n"])), function (props) {
|
|
74
89
|
return props.theme.input;
|
|
75
90
|
}, function (props) {
|
|
76
91
|
var _props$width2;
|
|
@@ -155,11 +170,11 @@ var ColorPaletteInput = exports.ColorPaletteInput = function ColorPaletteInput(_
|
|
|
155
170
|
textAlign: textAlign
|
|
156
171
|
}, value);
|
|
157
172
|
};
|
|
158
|
-
var Dash = _styledComponents["default"].div(
|
|
173
|
+
var Dash = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n width: 6px;\n border-top: 1px solid ", ";\n margin-left: 4px;\n margin-right: 4px;\n"])), function (props) {
|
|
159
174
|
return props.theme.subtextColor;
|
|
160
175
|
});
|
|
161
|
-
var StyledRangeInput = _styledComponents["default"].div(
|
|
162
|
-
var StyledColorHexInput = _styledComponents["default"].div(
|
|
176
|
+
var StyledRangeInput = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-end;\n align-items: center;\n margin-left: 12px;\n"])));
|
|
177
|
+
var StyledColorHexInput = _styledComponents["default"].div(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n"])));
|
|
163
178
|
var EditableColorRange = exports.EditableColorRange = function EditableColorRange(_ref5) {
|
|
164
179
|
var item = _ref5.item,
|
|
165
180
|
isLast = _ref5.isLast,
|
|
@@ -170,21 +185,19 @@ var EditableColorRange = exports.EditableColorRange = function EditableColorRang
|
|
|
170
185
|
var noMaxBound = !Number.isFinite(item.inputs[1]) && isLast;
|
|
171
186
|
var onChangeLeft = (0, _react.useCallback)(function (val) {
|
|
172
187
|
if (editable && editColorMap) editColorMap(parseFloat(val), index - 1);
|
|
173
|
-
return;
|
|
174
188
|
}, [editColorMap, index, editable]);
|
|
175
189
|
var onChangeRight = (0, _react.useCallback)(function (val) {
|
|
176
190
|
if (editable && editColorMap) editColorMap(parseFloat(val), index);
|
|
177
|
-
return;
|
|
178
191
|
}, [editColorMap, index, editable]);
|
|
179
192
|
return /*#__PURE__*/_react["default"].createElement(StyledRangeInput, null, /*#__PURE__*/_react["default"].createElement(ColorPaletteInput, {
|
|
180
|
-
value: noMinBound ? 'Less' : item.inputs[0],
|
|
193
|
+
value: noMinBound ? 'Less' : item.inputs[0].toString(),
|
|
181
194
|
id: "color-palette-input-".concat(index, "-left"),
|
|
182
195
|
width: "50px",
|
|
183
196
|
textAlign: "end",
|
|
184
197
|
editable: noMinBound ? false : editable,
|
|
185
198
|
onChange: onChangeLeft
|
|
186
199
|
}), /*#__PURE__*/_react["default"].createElement(Dash, null), /*#__PURE__*/_react["default"].createElement(ColorPaletteInput, {
|
|
187
|
-
value: noMaxBound ? 'More' : item.inputs[1],
|
|
200
|
+
value: noMaxBound ? 'More' : item.inputs[1].toString(),
|
|
188
201
|
id: "color-palette-input-".concat(index, "-right"),
|
|
189
202
|
width: "50px",
|
|
190
203
|
textAlign: "end",
|
|
@@ -274,9 +287,224 @@ var CustomPaletteInput = exports.CustomPaletteInput = function CustomPaletteInpu
|
|
|
274
287
|
IconComponent: actionIcons["delete"]
|
|
275
288
|
}) : null));
|
|
276
289
|
};
|
|
277
|
-
var
|
|
278
|
-
|
|
279
|
-
|
|
290
|
+
var StyledCategoricalValuePickerWrapper = _styledComponents["default"].div.attrs({
|
|
291
|
+
className: 'categorical-value-picker'
|
|
292
|
+
})(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n width: 150px;\n color: ", ";\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n column-gap: 8px;\n align-items: center;\n cursor: pointer;\n"])), function (props) {
|
|
293
|
+
return props.theme.inputColor;
|
|
294
|
+
});
|
|
295
|
+
var StyledCategoricalValuePicker = _styledComponents["default"].div(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n width: fit-content;\n font-size: 11px;\n border-bottom: ", ";\n cursor: pointer;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n max-width: 100px;\n"])), function (props) {
|
|
296
|
+
return props.noBorder ? '' : '1px dashed';
|
|
297
|
+
});
|
|
298
|
+
var DropdownValuesWrapper = _styledComponents["default"].div(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n border: 0;\n width: 100%;\n left: 0;\n z-index: ", ";\n width: ", "px;\n"])), function (props) {
|
|
299
|
+
return props.theme.dropdownWrapperZ;
|
|
300
|
+
}, function (props) {
|
|
301
|
+
return props.width;
|
|
302
|
+
});
|
|
303
|
+
var SelectedValuesWrapper = (0, _styledComponents["default"])(DropdownValuesWrapper)(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", "px;\n max-height: ", "px;\n overflow: auto;\n\n .custom-palette-chickleted-input {\n padding: 8px;\n background-color: ", ";\n }\n"])), function (props) {
|
|
304
|
+
return props.width;
|
|
305
|
+
}, function (props) {
|
|
306
|
+
return props.height;
|
|
307
|
+
}, function (props) {
|
|
308
|
+
return props.theme.dropdownWrapperZ;
|
|
309
|
+
});
|
|
310
|
+
var StyledDropdownHeader = _styledComponents["default"].div(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n color: ", ";\n padding: 0 8px;\n font-size: 10px;\n\n .button {\n margin: 0;\n padding: 0;\n width: fit-content;\n }\n"])), function (props) {
|
|
311
|
+
return props.theme.inputColor;
|
|
312
|
+
});
|
|
313
|
+
var StyledTooltipContent = _styledComponents["default"].div(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 8px;\n width: 150px;\n box-sizing: border-box;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\n div {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n"])));
|
|
314
|
+
var NUMBER_VALUES_IN_TOOLTIP = 10;
|
|
315
|
+
var CategoricalSelectorContext = /*#__PURE__*/_react["default"].createContext({
|
|
316
|
+
onSelectRest: function onSelectRest() {
|
|
317
|
+
return null;
|
|
318
|
+
},
|
|
319
|
+
onReset: function onReset() {
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
// Categorical values dropdownlist:
|
|
325
|
+
// extending DropdownList and adding 'Select the Rest' and 'Reset' buttons
|
|
326
|
+
var ModifiedDropdownList = /*#__PURE__*/function (_DropdownList) {
|
|
327
|
+
function ModifiedDropdownList(props) {
|
|
328
|
+
(0, _classCallCheck2["default"])(this, ModifiedDropdownList);
|
|
329
|
+
return _callSuper(this, ModifiedDropdownList, [props]);
|
|
330
|
+
}
|
|
331
|
+
(0, _inherits2["default"])(ModifiedDropdownList, _DropdownList);
|
|
332
|
+
return (0, _createClass2["default"])(ModifiedDropdownList, [{
|
|
333
|
+
key: "render",
|
|
334
|
+
value: function render() {
|
|
335
|
+
var _this = this;
|
|
336
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(CategoricalSelectorContext.Consumer, null, function (context) {
|
|
337
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(StyledDropdownHeader, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
|
|
338
|
+
link: true,
|
|
339
|
+
size: "smal",
|
|
340
|
+
onClick: context.onSelectRest
|
|
341
|
+
}, "Select the Rest"), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
|
|
342
|
+
link: true,
|
|
343
|
+
size: "smal",
|
|
344
|
+
onClick: context.onReset
|
|
345
|
+
}, "Reset")), /*#__PURE__*/_react["default"].createElement(DividerLine, null), /*#__PURE__*/_react["default"].createElement(_dropdownList["default"], _this.props));
|
|
346
|
+
}));
|
|
347
|
+
}
|
|
348
|
+
}]);
|
|
349
|
+
}(_dropdownList["default"]);
|
|
350
|
+
// Categorical values selector for editing categorical values
|
|
351
|
+
var CategoricalSelector = exports.CategoricalSelector = function CategoricalSelector(_ref9) {
|
|
352
|
+
var index = _ref9.index,
|
|
353
|
+
selectedValues = _ref9.selectedValues,
|
|
354
|
+
allValues = _ref9.allValues,
|
|
355
|
+
addColorMapValue = _ref9.addColorMapValue,
|
|
356
|
+
removeColorMapValue = _ref9.removeColorMapValue,
|
|
357
|
+
resetColorMapValue = _ref9.resetColorMapValue,
|
|
358
|
+
selectRestColorMapValue = _ref9.selectRestColorMapValue,
|
|
359
|
+
_ref9$editable = _ref9.editable,
|
|
360
|
+
editable = _ref9$editable === void 0 ? true : _ref9$editable;
|
|
361
|
+
var _useState3 = (0, _react.useState)(false),
|
|
362
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
363
|
+
showTypeahead = _useState4[0],
|
|
364
|
+
setShowTypeahead = _useState4[1];
|
|
365
|
+
var onOptionSelected = (0, _react.useCallback)(function (value) {
|
|
366
|
+
var previousSelected = (0, _commonUtils.toArray)(selectedValues);
|
|
367
|
+
var items = (0, _lodash["default"])(previousSelected.concat((0, _commonUtils.toArray)(value)));
|
|
368
|
+
addColorMapValue === null || addColorMapValue === void 0 || addColorMapValue(items, index);
|
|
369
|
+
}, [selectedValues, index, addColorMapValue]);
|
|
370
|
+
var onOpenDropdown = (0, _react.useCallback)(function () {
|
|
371
|
+
setShowTypeahead(true);
|
|
372
|
+
}, []);
|
|
373
|
+
var onCloseDropdown = (0, _react.useCallback)(function () {
|
|
374
|
+
setShowTypeahead(false);
|
|
375
|
+
}, []);
|
|
376
|
+
var onRemoveItem = (0, _react.useCallback)(function (value) {
|
|
377
|
+
removeColorMapValue === null || removeColorMapValue === void 0 || removeColorMapValue(value, index);
|
|
378
|
+
}, [index, removeColorMapValue]);
|
|
379
|
+
var onReset = (0, _react.useCallback)(function () {
|
|
380
|
+
resetColorMapValue === null || resetColorMapValue === void 0 || resetColorMapValue(index);
|
|
381
|
+
setShowTypeahead(false);
|
|
382
|
+
return null;
|
|
383
|
+
}, [resetColorMapValue, index]);
|
|
384
|
+
var onSelectRest = (0, _react.useCallback)(function () {
|
|
385
|
+
selectRestColorMapValue === null || selectRestColorMapValue === void 0 || selectRestColorMapValue(index);
|
|
386
|
+
setShowTypeahead(false);
|
|
387
|
+
return null;
|
|
388
|
+
}, [selectRestColorMapValue, index]);
|
|
389
|
+
return /*#__PURE__*/_react["default"].createElement(StyledCategoricalValuePickerWrapper, null, editable && /*#__PURE__*/_react["default"].createElement(_icons.Add, {
|
|
390
|
+
height: "12px",
|
|
391
|
+
onClick: onOpenDropdown
|
|
392
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledCategoricalValuePicker, {
|
|
393
|
+
noBorder: selectedValues.length === 0 || !editable,
|
|
394
|
+
onClick: onOpenDropdown,
|
|
395
|
+
"data-tip": true,
|
|
396
|
+
"data-for": "category-values-".concat(index)
|
|
397
|
+
}, selectedValues.length === 0 ? 'Add Value' : selectedValues.length === 1 ? selectedValues[0] : "".concat(selectedValues.length, " selected"), selectedValues.length > 1 && /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
|
|
398
|
+
id: "category-values-".concat(index),
|
|
399
|
+
place: "top",
|
|
400
|
+
interactive: true
|
|
401
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledTooltipContent, null, selectedValues.slice(0, NUMBER_VALUES_IN_TOOLTIP).map(function (value, i) {
|
|
402
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
403
|
+
key: i
|
|
404
|
+
}, value);
|
|
405
|
+
}), selectedValues.length > NUMBER_VALUES_IN_TOOLTIP && /*#__PURE__*/_react["default"].createElement("div", null, "...")))), editable && /*#__PURE__*/_react["default"].createElement(_portaled["default"], {
|
|
406
|
+
left: 0,
|
|
407
|
+
top: 0,
|
|
408
|
+
isOpened: showTypeahead,
|
|
409
|
+
onClose: onCloseDropdown
|
|
410
|
+
}, selectedValues.length > 1 && /*#__PURE__*/_react["default"].createElement(SelectedValuesWrapper, {
|
|
411
|
+
width: 250,
|
|
412
|
+
height: 200
|
|
413
|
+
}, /*#__PURE__*/_react["default"].createElement(_chickletedInput["default"], {
|
|
414
|
+
className: 'custom-palette-chickleted-input',
|
|
415
|
+
selectedItems: selectedValues,
|
|
416
|
+
placeholder: '',
|
|
417
|
+
removeItem: onRemoveItem,
|
|
418
|
+
onClick: function onClick() {
|
|
419
|
+
return null;
|
|
420
|
+
},
|
|
421
|
+
CustomChickletComponent: null
|
|
422
|
+
})), /*#__PURE__*/_react["default"].createElement(DropdownValuesWrapper, {
|
|
423
|
+
width: 250
|
|
424
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
425
|
+
style: {
|
|
426
|
+
position: 'relative'
|
|
427
|
+
}
|
|
428
|
+
}, /*#__PURE__*/_react["default"].createElement(CategoricalSelectorContext.Provider, {
|
|
429
|
+
value: {
|
|
430
|
+
onReset: onReset,
|
|
431
|
+
onSelectRest: onSelectRest
|
|
432
|
+
}
|
|
433
|
+
}, /*#__PURE__*/_react["default"].createElement(_typeahead["default"], {
|
|
434
|
+
customClasses: {
|
|
435
|
+
results: 'list-selector',
|
|
436
|
+
input: 'typeahead__input',
|
|
437
|
+
listItem: 'list__item',
|
|
438
|
+
listAnchor: 'list__item__anchor'
|
|
439
|
+
},
|
|
440
|
+
options: allValues,
|
|
441
|
+
placeholder: 'Search',
|
|
442
|
+
onOptionSelected: onOptionSelected,
|
|
443
|
+
customListComponent: ModifiedDropdownList,
|
|
444
|
+
customListItemComponent: _dropdownList.ListItem,
|
|
445
|
+
searchable: true,
|
|
446
|
+
showOptionsWhenEmpty: true,
|
|
447
|
+
selectedItems: selectedValues
|
|
448
|
+
}))))));
|
|
449
|
+
};
|
|
450
|
+
var CategoricalCustomPaletteInput = exports.CategoricalCustomPaletteInput = function CategoricalCustomPaletteInput(_ref10) {
|
|
451
|
+
var index = _ref10.index,
|
|
452
|
+
isSorting = _ref10.isSorting,
|
|
453
|
+
color = _ref10.color,
|
|
454
|
+
colorMap = _ref10.colorMap,
|
|
455
|
+
_ref10$actionIcons = _ref10.actionIcons,
|
|
456
|
+
actionIcons = _ref10$actionIcons === void 0 ? defaultActionIcons : _ref10$actionIcons,
|
|
457
|
+
onDelete = _ref10.onDelete,
|
|
458
|
+
disableDelete = _ref10.disableDelete,
|
|
459
|
+
onAdd = _ref10.onAdd,
|
|
460
|
+
onToggleSketcher = _ref10.onToggleSketcher,
|
|
461
|
+
addColorMapValue = _ref10.addColorMapValue,
|
|
462
|
+
removeColorMapValue = _ref10.removeColorMapValue,
|
|
463
|
+
resetColorMapValue = _ref10.resetColorMapValue,
|
|
464
|
+
selectRestColorMapValue = _ref10.selectRestColorMapValue,
|
|
465
|
+
allValues = _ref10.allValues;
|
|
466
|
+
var selectedValues = (0, _react.useMemo)(function () {
|
|
467
|
+
if (!colorMap || !colorMap[index]) return [];
|
|
468
|
+
var value = colorMap[index][0];
|
|
469
|
+
var values = Array.isArray(value) ? value : value !== null ? [value] : [];
|
|
470
|
+
return values;
|
|
471
|
+
}, [colorMap, index]);
|
|
472
|
+
var onClickSwtach = (0, _react.useCallback)(function () {
|
|
473
|
+
return onToggleSketcher(index);
|
|
474
|
+
}, [onToggleSketcher, index]);
|
|
475
|
+
var onColorDelete = (0, _react.useCallback)(function () {
|
|
476
|
+
return onDelete(index);
|
|
477
|
+
}, [onDelete, index]);
|
|
478
|
+
return /*#__PURE__*/_react["default"].createElement(SortableItem, {
|
|
479
|
+
index: index,
|
|
480
|
+
isSorting: isSorting
|
|
481
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
482
|
+
className: "custom-palette-input__left"
|
|
483
|
+
}, /*#__PURE__*/_react["default"].createElement(DragHandle, {
|
|
484
|
+
className: "layer__drag-handle"
|
|
485
|
+
}, /*#__PURE__*/_react["default"].createElement(actionIcons.sort, {
|
|
486
|
+
height: "20px"
|
|
487
|
+
})), /*#__PURE__*/_react["default"].createElement(ColorSwatch, {
|
|
488
|
+
color: color,
|
|
489
|
+
onClick: onClickSwtach
|
|
490
|
+
}), colorMap && colorMap[index] && /*#__PURE__*/_react["default"].createElement(CategoricalSelector, {
|
|
491
|
+
selectedValues: selectedValues,
|
|
492
|
+
allValues: allValues,
|
|
493
|
+
addColorMapValue: addColorMapValue,
|
|
494
|
+
removeColorMapValue: removeColorMapValue,
|
|
495
|
+
resetColorMapValue: resetColorMapValue,
|
|
496
|
+
selectRestColorMapValue: selectRestColorMapValue,
|
|
497
|
+
index: index
|
|
498
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
499
|
+
className: "custom-palette-input__right"
|
|
500
|
+
}, !disableDelete ? /*#__PURE__*/_react["default"].createElement(DeleteColorStop, {
|
|
501
|
+
onColorDelete: onColorDelete,
|
|
502
|
+
IconComponent: actionIcons["delete"]
|
|
503
|
+
}) : null));
|
|
504
|
+
};
|
|
505
|
+
var BottomAction = exports.BottomAction = function BottomAction(_ref11) {
|
|
506
|
+
var onCancel = _ref11.onCancel,
|
|
507
|
+
onConfirm = _ref11.onConfirm;
|
|
280
508
|
return /*#__PURE__*/_react["default"].createElement(StyledButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
|
|
281
509
|
className: "confirm-apply__button",
|
|
282
510
|
small: true,
|
|
@@ -289,25 +517,26 @@ var BottomAction = exports.BottomAction = function BottomAction(_ref9) {
|
|
|
289
517
|
};
|
|
290
518
|
var StyledCustomPalette = _styledComponents["default"].div.attrs({
|
|
291
519
|
className: 'custom-palette'
|
|
292
|
-
})(
|
|
520
|
+
})(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 8px;\n"])));
|
|
293
521
|
function CustomPaletteFactory() {
|
|
294
|
-
var CustomPalette = function CustomPalette(
|
|
295
|
-
var
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
actionIcons =
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
522
|
+
var CustomPalette = function CustomPalette(_ref12) {
|
|
523
|
+
var ordinalDomain = _ref12.ordinalDomain,
|
|
524
|
+
customPalette = _ref12.customPalette,
|
|
525
|
+
setColorPaletteUI = _ref12.setColorPaletteUI,
|
|
526
|
+
showSketcher = _ref12.showSketcher,
|
|
527
|
+
_ref12$actionIcons = _ref12.actionIcons,
|
|
528
|
+
actionIcons = _ref12$actionIcons === void 0 ? defaultActionIcons : _ref12$actionIcons,
|
|
529
|
+
onCancel = _ref12.onCancel,
|
|
530
|
+
onApply = _ref12.onApply;
|
|
531
|
+
var _useState5 = (0, _react.useState)(false),
|
|
532
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
533
|
+
isSorting = _useState6[0],
|
|
534
|
+
setIsSorting = _useState6[1];
|
|
306
535
|
var colors = customPalette.colors,
|
|
307
536
|
colorMap = customPalette.colorMap;
|
|
308
537
|
var colorBreaks = (0, _react.useMemo)(function () {
|
|
309
|
-
return colorMap ? (0, _utils.colorMapToColorBreaks)(colorMap) : null;
|
|
310
|
-
}, [colorMap]);
|
|
538
|
+
return colorMap ? customPalette.type === 'custom' ? (0, _utils.colorMapToColorBreaks)(colorMap) : (0, _utils.colorMapToCategoricalColorBreaks)(colorMap) : null;
|
|
539
|
+
}, [customPalette.type, colorMap]);
|
|
311
540
|
var onPickerUpdate = (0, _react.useCallback)(function (color) {
|
|
312
541
|
if (color && Number.isFinite(showSketcher)) {
|
|
313
542
|
var newCustomPalette = (0, _utils.updateCustomPaletteColor)(customPalette, Number(showSketcher), color.hex);
|
|
@@ -334,6 +563,9 @@ function CustomPaletteFactory() {
|
|
|
334
563
|
customPalette: newCustomPalette
|
|
335
564
|
});
|
|
336
565
|
}, [customPalette, setColorPaletteUI]);
|
|
566
|
+
var onAddCategoricalStep = (0, _react.useCallback)(function () {
|
|
567
|
+
onAdd(colors.length - 1);
|
|
568
|
+
}, [colors.length, onAdd]);
|
|
337
569
|
var onSwatchClose = (0, _react.useCallback)(function () {
|
|
338
570
|
onToggleSketcher(false);
|
|
339
571
|
}, [onToggleSketcher]);
|
|
@@ -343,9 +575,9 @@ function CustomPaletteFactory() {
|
|
|
343
575
|
onCancel();
|
|
344
576
|
onApply(event);
|
|
345
577
|
}, [onCancel, onApply]);
|
|
346
|
-
var onSortEnd = (0, _react.useCallback)(function (
|
|
347
|
-
var oldIndex =
|
|
348
|
-
newIndex =
|
|
578
|
+
var onSortEnd = (0, _react.useCallback)(function (_ref13) {
|
|
579
|
+
var oldIndex = _ref13.oldIndex,
|
|
580
|
+
newIndex = _ref13.newIndex;
|
|
349
581
|
var newCustomPalette = (0, _utils.sortCustomPaletteColor)(customPalette, oldIndex, newIndex);
|
|
350
582
|
setColorPaletteUI({
|
|
351
583
|
customPalette: newCustomPalette
|
|
@@ -385,6 +617,54 @@ function CustomPaletteFactory() {
|
|
|
385
617
|
})
|
|
386
618
|
});
|
|
387
619
|
}, [setColorPaletteUI, customPalette]);
|
|
620
|
+
|
|
621
|
+
// remove a selected category item from a color map
|
|
622
|
+
var removeCategoricalColorMapValue = (0, _react.useCallback)(function (item, index) {
|
|
623
|
+
if (!colorMap) {
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
setColorPaletteUI({
|
|
627
|
+
customPalette: _objectSpread(_objectSpread({}, customPalette), {}, {
|
|
628
|
+
colorMap: (0, _utils.removeCategoricalValueFromColorMap)(colorMap, item, index)
|
|
629
|
+
})
|
|
630
|
+
});
|
|
631
|
+
}, [setColorPaletteUI, customPalette, colorMap]);
|
|
632
|
+
|
|
633
|
+
// add selected categorical items to a color map
|
|
634
|
+
var addCategoricalColorMapValue = (0, _react.useCallback)(function (items, index) {
|
|
635
|
+
if (!colorMap) {
|
|
636
|
+
return;
|
|
637
|
+
}
|
|
638
|
+
setColorPaletteUI({
|
|
639
|
+
customPalette: _objectSpread(_objectSpread({}, customPalette), {}, {
|
|
640
|
+
colorMap: (0, _utils.addCategoricalValuesToColorMap)(colorMap, items, index)
|
|
641
|
+
})
|
|
642
|
+
});
|
|
643
|
+
}, [setColorPaletteUI, customPalette, colorMap]);
|
|
644
|
+
|
|
645
|
+
// reset a color map
|
|
646
|
+
var resetCategoricalColorMapValue = (0, _react.useCallback)(function (index) {
|
|
647
|
+
if (!colorMap) {
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
setColorPaletteUI({
|
|
651
|
+
customPalette: _objectSpread(_objectSpread({}, customPalette), {}, {
|
|
652
|
+
colorMap: (0, _utils.resetCategoricalColorMapByIndex)(colorMap, index)
|
|
653
|
+
})
|
|
654
|
+
});
|
|
655
|
+
}, [setColorPaletteUI, customPalette, colorMap]);
|
|
656
|
+
|
|
657
|
+
// select the rest values for a color map
|
|
658
|
+
var selectRestCategoricalColorMap = (0, _react.useCallback)(function (index) {
|
|
659
|
+
if (!colorMap) {
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
setColorPaletteUI({
|
|
663
|
+
customPalette: _objectSpread(_objectSpread({}, customPalette), {}, {
|
|
664
|
+
colorMap: (0, _utils.selectRestCategoricalColorMapByIndex)(colorMap, index, ordinalDomain)
|
|
665
|
+
})
|
|
666
|
+
});
|
|
667
|
+
}, [setColorPaletteUI, customPalette, colorMap, ordinalDomain]);
|
|
388
668
|
return /*#__PURE__*/_react["default"].createElement(StyledCustomPalette, null, /*#__PURE__*/_react["default"].createElement(WrappedSortableContainer, {
|
|
389
669
|
className: "custom-palette__sortable-container",
|
|
390
670
|
onSortEnd: onSortEnd,
|
|
@@ -393,7 +673,7 @@ function CustomPaletteFactory() {
|
|
|
393
673
|
helperClass: "sorting-colors",
|
|
394
674
|
useDragHandle: true
|
|
395
675
|
}, colors.map(function (color, index) {
|
|
396
|
-
return /*#__PURE__*/_react["default"].createElement(CustomPaletteInput, {
|
|
676
|
+
return customPalette.type === 'custom' ? /*#__PURE__*/_react["default"].createElement(CustomPaletteInput, {
|
|
397
677
|
key: index,
|
|
398
678
|
colorBreaks: colorBreaks,
|
|
399
679
|
index: index,
|
|
@@ -407,8 +687,31 @@ function CustomPaletteFactory() {
|
|
|
407
687
|
onDelete: onDelete,
|
|
408
688
|
onToggleSketcher: onToggleSketcher,
|
|
409
689
|
editColorMapValue: editColorMapValue
|
|
690
|
+
}) : ordinalDomain && /*#__PURE__*/_react["default"].createElement(CategoricalCustomPaletteInput, {
|
|
691
|
+
key: index,
|
|
692
|
+
colorMap: colorMap,
|
|
693
|
+
index: index,
|
|
694
|
+
isSorting: isSorting,
|
|
695
|
+
color: color,
|
|
696
|
+
actionIcons: actionIcons,
|
|
697
|
+
onAdd: onAdd,
|
|
698
|
+
onDelete: onDelete,
|
|
699
|
+
disableDelete: colors.length <= 2,
|
|
700
|
+
onToggleSketcher: onToggleSketcher,
|
|
701
|
+
addColorMapValue: addCategoricalColorMapValue,
|
|
702
|
+
removeColorMapValue: removeCategoricalColorMapValue,
|
|
703
|
+
resetColorMapValue: resetCategoricalColorMapValue,
|
|
704
|
+
selectRestColorMapValue: selectRestCategoricalColorMap,
|
|
705
|
+
allValues: ordinalDomain
|
|
410
706
|
});
|
|
411
|
-
})), /*#__PURE__*/_react["default"].createElement(
|
|
707
|
+
})), customPalette.type === 'customOrdinal' && /*#__PURE__*/_react["default"].createElement(StyledAddStepContainer, null, /*#__PURE__*/_react["default"].createElement(AddColorStop, {
|
|
708
|
+
onColorAdd: onAddCategoricalStep,
|
|
709
|
+
IconComponent: actionIcons.add
|
|
710
|
+
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
|
|
711
|
+
link: true,
|
|
712
|
+
size: "smal",
|
|
713
|
+
onClick: onAddCategoricalStep
|
|
714
|
+
}, "Add Step")), /*#__PURE__*/_react["default"].createElement(DividerLine, null), /*#__PURE__*/_react["default"].createElement(BottomAction, {
|
|
412
715
|
onCancel: onCancel,
|
|
413
716
|
onConfirm: onConfirm
|
|
414
717
|
}), /*#__PURE__*/_react["default"].createElement(_portaled["default"], {
|
|
@@ -424,4 +727,4 @@ function CustomPaletteFactory() {
|
|
|
424
727
|
return CustomPalette;
|
|
425
728
|
}
|
|
426
729
|
var _default = exports["default"] = CustomPaletteFactory;
|
|
427
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RTb3J0YWJsZUhvYyIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3BvcnRhbGVkIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9pY29ucyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9jdXN0b21QaWNrZXIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX3RlbXBsYXRlT2JqZWN0OSIsIl90ZW1wbGF0ZU9iamVjdDEwIiwiX3RlbXBsYXRlT2JqZWN0MTEiLCJfdGVtcGxhdGVPYmplY3QxMiIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmYXVsdEFjdGlvbkljb25zIiwiVHJhc2giLCJzb3J0IiwiVmVydERvdHMiLCJhZGQiLCJBZGQiLCJkcmFnSGFuZGxlQWN0aXZlIiwiY3NzIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9ySGwiLCJDb2xvclBhbGV0dGVJdGVtIiwiZXhwb3J0cyIsInN0eWxlZCIsImRpdiIsImRyb3Bkb3duV3JhcHBlcloiLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsIlN0eWxlZERyYWdIYW5kbGUiLCJTdHlsZWRBY3Rpb24iLCJzdWJ0ZXh0Q29sb3IiLCJzdWJ0ZXh0Q29sb3JBY3RpdmUiLCJEaXZpZGVyTGluZSIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsIkNvbG9yU3dhdGNoIiwiYXR0cnMiLCJjbGFzc05hbWUiLCJjb2xvciIsImJveFNoYWRvdyIsIlN0eWxlZEJ1dHRvbkNvbnRhaW5lciIsIlN0eWxlZElucHV0IiwiSW5wdXQiLCJfcHJvcHMkd2lkdGgiLCJ3aWR0aCIsIl9wcm9wcyR0ZXh0QWxpZ24iLCJ0ZXh0QWxpZ24iLCJkaXNhYmxlZCIsIklucHV0VGV4dCIsImlucHV0IiwiX3Byb3BzJHdpZHRoMiIsIl9wcm9wcyR0ZXh0QWxpZ24yIiwiU29ydGFibGVJdGVtIiwiU29ydGFibGVFbGVtZW50IiwiX3JlZiIsImNoaWxkcmVuIiwiaXNTb3J0aW5nIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzbmFtZXMiLCJzb3J0aW5nIiwiV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyIiwiU29ydGFibGVDb250YWluZXIiLCJfcmVmMiIsIkRyYWdIYW5kbGUiLCJTb3J0YWJsZUhhbmRsZSIsIl9yZWYzIiwiQ29sb3JQYWxldHRlSW5wdXQiLCJfcmVmNCIsInZhbHVlIiwib25DaGFuZ2UiLCJpZCIsImVkaXRhYmxlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic3RhdGVWYWx1ZSIsInNldFZhbHVlIiwiaW5wdXRSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJvbktleURvd24iLCJ1c2VDYWxsYmFjayIsImtleUNvZGUiLCJLZXlFdmVudCIsIkRPTV9WS19FTlRFUiIsIkRPTV9WS19SRVRVUk4iLCJjdXJyZW50IiwiYmx1ciIsIl9vbkNoYW5nZSIsInRhcmdldCIsIm9uQmx1ciIsInJlZiIsInNlY29uZGFyeSIsIkRhc2giLCJTdHlsZWRSYW5nZUlucHV0IiwiU3R5bGVkQ29sb3JIZXhJbnB1dCIsIkVkaXRhYmxlQ29sb3JSYW5nZSIsIl9yZWY1IiwiaXRlbSIsImlzTGFzdCIsImluZGV4IiwiZWRpdENvbG9yTWFwIiwibm9NaW5Cb3VuZCIsIk51bWJlciIsImlzRmluaXRlIiwiaW5wdXRzIiwibm9NYXhCb3VuZCIsIm9uQ2hhbmdlTGVmdCIsInZhbCIsInBhcnNlRmxvYXQiLCJvbkNoYW5nZVJpZ2h0IiwiY29uY2F0IiwiQWRkQ29sb3JTdG9wIiwiX3JlZjYiLCJvbkNvbG9yQWRkIiwiSWNvbkNvbXBvbmVudCIsIm9uQ2xpY2siLCJoZWlnaHQiLCJEZWxldGVDb2xvclN0b3AiLCJfcmVmNyIsIm9uQ29sb3JEZWxldGUiLCJDdXN0b21QYWxldHRlSW5wdXQiLCJfcmVmOCIsImNvbG9yQnJlYWtzIiwiaW5wdXRDb2xvckhleCIsImVkaXRDb2xvck1hcFZhbHVlIiwiX3JlZjgkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsImRpc2FibGVBcHBlbmQiLCJkaXNhYmxlRGVsZXRlIiwib25EZWxldGUiLCJvbkFkZCIsIm9uVG9nZ2xlU2tldGNoZXIiLCJvbkNsaWNrU3d0YWNoIiwib25Db2xvcklucHV0IiwidiIsInNob3dIZXhJbnB1dCIsInRvVXBwZXJDYXNlIiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJCb3R0b21BY3Rpb24iLCJfcmVmOSIsIm9uQ2FuY2VsIiwib25Db25maXJtIiwiQnV0dG9uIiwic21hbGwiLCJsaW5rIiwiU3R5bGVkQ3VzdG9tUGFsZXR0ZSIsIkN1c3RvbVBhbGV0dGVGYWN0b3J5IiwiQ3VzdG9tUGFsZXR0ZSIsIl9yZWYxMCIsImN1c3RvbVBhbGV0dGUiLCJzZXRDb2xvclBhbGV0dGVVSSIsInNob3dTa2V0Y2hlciIsIl9yZWYxMCRhY3Rpb25JY29ucyIsIm9uQXBwbHkiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldElzU29ydGluZyIsImNvbG9ycyIsImNvbG9yTWFwIiwidXNlTWVtbyIsImNvbG9yTWFwVG9Db2xvckJyZWFrcyIsIm9uUGlja2VyVXBkYXRlIiwibmV3Q3VzdG9tUGFsZXR0ZSIsInVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvciIsImhleCIsInJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvciIsImFkZEN1c3RvbVBhbGV0dGVDb2xvciIsIm9uU3dhdGNoQ2xvc2UiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwib25Tb3J0RW5kIiwiX3JlZjExIiwib2xkSW5kZXgiLCJuZXdJbmRleCIsInNvcnRDdXN0b21QYWxldHRlQ29sb3IiLCJvblNvcnRTdGFydCIsIm5ld0NvbG9yTWFwIiwibWFwIiwiY20iLCJicmVha3MiLCJzbGljZSIsImIiLCJzb3J0ZWROZXdDb2xvck1hcCIsImxvY2tBeGlzIiwiaGVscGVyQ2xhc3MiLCJ1c2VEcmFnSGFuZGxlIiwia2V5IiwiaXNPcGVuZWQiLCJsZWZ0IiwidG9wIiwib25DbG9zZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY3VzdG9tLXBhbGV0dGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIEVsZW1lbnRUeXBlLFxuICBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZVxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBTb3J0YWJsZUNvbnRhaW5lcixcbiAgU29ydGFibGVDb250YWluZXJQcm9wcyxcbiAgU29ydGFibGVFbGVtZW50LFxuICBTb3J0YWJsZUVsZW1lbnRQcm9wcyxcbiAgU29ydGFibGVIYW5kbGVcbn0gZnJvbSAncmVhY3Qtc29ydGFibGUtaG9jJztcbmltcG9ydCBzdHlsZWQsIHtTdHlsZWRDb21wb25lbnQsIGNzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFBvcnRhbGVkIGZyb20gJy4uLy4uL2NvbW1vbi9wb3J0YWxlZCc7XG5cbmltcG9ydCB7S2V5RXZlbnR9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Q29sb3JNYXAsIENvbG9yVUksIEhleENvbG9yLCBOZXN0ZWRQYXJ0aWFsfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Y29sb3JNYXBUb0NvbG9yQnJlYWtzLCBpc051bWVyaWNDb2xvckJyZWFrc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1xuICBhZGRDdXN0b21QYWxldHRlQ29sb3IsXG4gIHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcixcbiAgc29ydEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtDb2xvckJyZWFrLCBDb2xvckJyZWFrT3JkaW5hbH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FkZCwgVHJhc2gsIFZlcnREb3RzfSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtCdXR0b24sIElucHV0fSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEN1c3RvbVBpY2tlciBmcm9tICcuL2N1c3RvbS1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBFbGVtZW50VHlwZTtcbiAgc29ydDogRWxlbWVudFR5cGU7XG4gIGFkZDogRWxlbWVudFR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBFZGl0Q29sb3JNYXBGdW5jID0gKHY6IG51bWJlciwgaTogbnVtYmVyKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgU2V0Q29sb3JVSUZ1bmMgPSAobmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+KSA9PiB2b2lkO1xuXG4vKipcbiAqIEVkaXRhYmxlQ29sb3JSYW5nZVxuICovXG5leHBvcnQgdHlwZSBFZGl0YWJsZUNvbG9yUmFuZ2VQcm9wcyA9IHtcbiAgaXRlbTogQ29sb3JCcmVhaztcbiAgaXNMYXN0OiBib29sZWFuO1xuICBpbmRleDogbnVtYmVyO1xuICBlZGl0Q29sb3JNYXA/OiBFZGl0Q29sb3JNYXBGdW5jO1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVQcm9wcyA9IHtcbiAgY3VzdG9tUGFsZXR0ZTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddO1xuICBzZXRDb2xvclBhbGV0dGVVSTogU2V0Q29sb3JVSUZ1bmM7XG4gIHNob3dTa2V0Y2hlcjogbnVtYmVyIHwgYm9vbGVhbjtcbiAgYWN0aW9uSWNvbnM/OiBBY3Rpb25JY29ucztcbiAgb25BcHBseTogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbiAgY29sb3I6IEhleENvbG9yO1xuICBjb2xvckJyZWFrczogQ29sb3JCcmVha09yZGluYWxbXSB8IENvbG9yQnJlYWtbXSB8IG51bGw7XG4gIGlucHV0Q29sb3JIZXg6IChpbmRleDogbnVtYmVyLCB2OiBIZXhDb2xvcikgPT4gdm9pZDtcbiAgZWRpdENvbG9yTWFwVmFsdWU6IEVkaXRDb2xvck1hcEZ1bmM7XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIGRpc2FibGVBcHBlbmQ/OiBib29sZWFuO1xuICBkaXNhYmxlRGVsZXRlPzogYm9vbGVhbjtcbiAgb25EZWxldGU6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvbkFkZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlU2tldGNoZXI6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xufTtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICBkZWxldGU6IFRyYXNoLFxuICBzb3J0OiBWZXJ0RG90cyxcbiAgYWRkOiBBZGRcbn07XG5cbmNvbnN0IGRyYWdIYW5kbGVBY3RpdmUgPSBjc3NgXG4gIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGN1cnNvcjogbW92ZTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENvbG9yUGFsZXR0ZUl0ZW0gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogMnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclogKyAxfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgfVxuXG4gIDpub3QoLnNvcnRpbmcpOm5vdCguZGlzYWJsZWQpIHtcbiAgICA6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgICAke2RyYWdIYW5kbGVBY3RpdmV9O1xuICAgIH1cbiAgfVxuXG4gICYuc29ydGluZy1jb2xvcnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuYDtcblxuY29uc3QgU3R5bGVkQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgc3ZnIHtcbiAgICA6aG92ZXIge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yQWN0aXZlfTtcbiAgICB9XG4gIH1cblxuICBtYXJnaW4tbGVmdDogNHB4O1xuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IERpdmlkZXJMaW5lID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgbWFyZ2luLXRvcDogOHB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbG9yU3dhdGNoID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2N1c3RvbS1wYWxldHRlX19zd2F0Y2gnXG59KWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvcn07XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b25Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAxMXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBkaXJlY3Rpb246IHJ0bDtcbiAgcGFkZGluZzogMCAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoXG4gIElucHV0IGFzIFN0eWxlZENvbXBvbmVudDwnaW5wdXQnLCBhbnksIHt3aWR0aDogc3RyaW5nOyB0ZXh0QWxpZ246IHN0cmluZzsgZGlzYWJsZWQ6IGJvb2xlYW59LCBhbnk+XG4pYFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aCA/PyAnMTAwJSd9O1xuICB0ZXh0LWFsaWduOiAke3Byb3BzID0+IHByb3BzLnRleHRBbGlnbiA/PyAnZW5kJ307XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnKX07XG5gO1xuXG5jb25zdCBJbnB1dFRleHQgPSBzdHlsZWQuZGl2PHt3aWR0aDogc3RyaW5nOyB0ZXh0QWxpZ246IHN0cmluZ30+YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRoID8/ICcxMDAlJ307XG4gIHRleHQtYWxpZ246ICR7cHJvcHMgPT4gcHJvcHMudGV4dEFsaWduID8/ICdlbmQnfTtcblxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5gO1xuXG50eXBlIFNvcnRhYmxlSXRlbVByb3BzID0gU29ydGFibGVFbGVtZW50UHJvcHMgJiB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFNvcnRhYmxlSXRlbSA9IFNvcnRhYmxlRWxlbWVudDxTb3J0YWJsZUl0ZW1Qcm9wcz4oKHtjaGlsZHJlbiwgaXNTb3J0aW5nfSkgPT4gKFxuICA8Q29sb3JQYWxldHRlSXRlbSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2N1c3RvbS1wYWxldHRlX19zb3J0YWJsZS1pdGVtcycsIHtzb3J0aW5nOiBpc1NvcnRpbmd9KX0+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbG9yUGFsZXR0ZUl0ZW0+XG4pKTtcblxudHlwZSBXcmFwcGVkU29ydGFibGVDb250YWluZXJQcm9wcyA9IFNvcnRhYmxlQ29udGFpbmVyUHJvcHMgJiB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG4vLyBUT0RPOiBTaG91bGQgY2xhc3NOYW1lIGJlIGFwcGxpZWQgdG8gdGhlIGRpdiBoZXJlP1xuY29uc3QgV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyID0gU29ydGFibGVDb250YWluZXI8V3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyUHJvcHM+KFxuICAoe2NoaWxkcmVuLCBjbGFzc05hbWV9KSA9PiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57Y2hpbGRyZW59PC9kaXY+XG4pO1xuXG50eXBlIERyYWdIYW5kbGVQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtjbGFzc05hbWU/OiBzdHJpbmc7IGxpc3RlbmVycz86IHVua25vd259PjtcblxuZXhwb3J0IGNvbnN0IERyYWdIYW5kbGUgPSBTb3J0YWJsZUhhbmRsZTxEcmFnSGFuZGxlUHJvcHM+KCh7Y2xhc3NOYW1lLCBjaGlsZHJlbn0pID0+IChcbiAgPFN0eWxlZERyYWdIYW5kbGUgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntjaGlsZHJlbn08L1N0eWxlZERyYWdIYW5kbGU+XG4pKTtcblxuZXhwb3J0IGNvbnN0IENvbG9yUGFsZXR0ZUlucHV0ID0gKHt2YWx1ZSwgb25DaGFuZ2UsIGlkLCB3aWR0aCwgdGV4dEFsaWduLCBlZGl0YWJsZX0pID0+IHtcbiAgY29uc3QgW3N0YXRlVmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKHZhbHVlKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0VmFsdWUodmFsdWUpO1xuICB9LCBbdmFsdWVdKTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICBlID0+IHtcbiAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX0VOVEVSOlxuICAgICAgICBjYXNlIEtleUV2ZW50LkRPTV9WS19SRVRVUk46XG4gICAgICAgICAgb25DaGFuZ2Uoc3RhdGVWYWx1ZSk7XG4gICAgICAgICAgaWYgKGlucHV0UmVmICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBpbnB1dFJlZj8uY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBzdGF0ZVZhbHVlXVxuICApO1xuXG4gIGNvbnN0IF9vbkNoYW5nZSA9IHVzZUNhbGxiYWNrKGUgPT4gc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpLCBbc2V0VmFsdWVdKTtcbiAgY29uc3Qgb25CbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4gb25DaGFuZ2Uoc3RhdGVWYWx1ZSksIFtvbkNoYW5nZSwgc3RhdGVWYWx1ZV0pO1xuXG4gIHJldHVybiBlZGl0YWJsZSA/IChcbiAgICA8U3R5bGVkSW5wdXRcbiAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1oZXhfX2lucHV0XCJcbiAgICAgIHZhbHVlPXtzdGF0ZVZhbHVlfVxuICAgICAgb25DaGFuZ2U9e19vbkNoYW5nZX1cbiAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICBpZD17aWR9XG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICB0ZXh0QWxpZ249e3RleHRBbGlnbn1cbiAgICAgIHNlY29uZGFyeVxuICAgIC8+XG4gICkgOiAoXG4gICAgPElucHV0VGV4dCBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1oZXhfX2lucHV0X190ZXh0XCIgd2lkdGg9e3dpZHRofSB0ZXh0QWxpZ249e3RleHRBbGlnbn0+XG4gICAgICB7dmFsdWV9XG4gICAgPC9JbnB1dFRleHQ+XG4gICk7XG59O1xuXG5jb25zdCBEYXNoID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDZweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgbWFyZ2luLXJpZ2h0OiA0cHg7XG5gO1xuXG5jb25zdCBTdHlsZWRSYW5nZUlucHV0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRDb2xvckhleElucHV0ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgRWRpdGFibGVDb2xvclJhbmdlOiBSZWFjdC5GQzxFZGl0YWJsZUNvbG9yUmFuZ2VQcm9wcz4gPSAoe1xuICBpdGVtLFxuICBpc0xhc3QsXG4gIGluZGV4LFxuICBlZGl0Q29sb3JNYXAsXG4gIGVkaXRhYmxlXG59KSA9PiB7XG4gIGNvbnN0IG5vTWluQm91bmQgPSAhTnVtYmVyLmlzRmluaXRlKGl0ZW0uaW5wdXRzWzBdKSAmJiBpbmRleCA9PT0gMDtcbiAgY29uc3Qgbm9NYXhCb3VuZCA9ICFOdW1iZXIuaXNGaW5pdGUoaXRlbS5pbnB1dHNbMV0pICYmIGlzTGFzdDtcbiAgY29uc3Qgb25DaGFuZ2VMZWZ0ID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsID0+IHtcbiAgICAgIGlmIChlZGl0YWJsZSAmJiBlZGl0Q29sb3JNYXApIGVkaXRDb2xvck1hcChwYXJzZUZsb2F0KHZhbCksIGluZGV4IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfSxcbiAgICBbZWRpdENvbG9yTWFwLCBpbmRleCwgZWRpdGFibGVdXG4gICk7XG4gIGNvbnN0IG9uQ2hhbmdlUmlnaHQgPSB1c2VDYWxsYmFjayhcbiAgICB2YWwgPT4ge1xuICAgICAgaWYgKGVkaXRhYmxlICYmIGVkaXRDb2xvck1hcCkgZWRpdENvbG9yTWFwKHBhcnNlRmxvYXQodmFsKSwgaW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgW2VkaXRDb2xvck1hcCwgaW5kZXgsIGVkaXRhYmxlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFJhbmdlSW5wdXQ+XG4gICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgdmFsdWU9e25vTWluQm91bmQgPyAnTGVzcycgOiBpdGVtLmlucHV0c1swXX1cbiAgICAgICAgaWQ9e2Bjb2xvci1wYWxldHRlLWlucHV0LSR7aW5kZXh9LWxlZnRgfVxuICAgICAgICB3aWR0aD1cIjUwcHhcIlxuICAgICAgICB0ZXh0QWxpZ249XCJlbmRcIlxuICAgICAgICBlZGl0YWJsZT17bm9NaW5Cb3VuZCA/IGZhbHNlIDogZWRpdGFibGV9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUxlZnR9XG4gICAgICAvPlxuICAgICAgPERhc2ggLz5cbiAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICB2YWx1ZT17bm9NYXhCb3VuZCA/ICdNb3JlJyA6IGl0ZW0uaW5wdXRzWzFdfVxuICAgICAgICBpZD17YGNvbG9yLXBhbGV0dGUtaW5wdXQtJHtpbmRleH0tcmlnaHRgfVxuICAgICAgICB3aWR0aD1cIjUwcHhcIlxuICAgICAgICB0ZXh0QWxpZ249XCJlbmRcIlxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VSaWdodH1cbiAgICAgICAgZWRpdGFibGU9e25vTWF4Qm91bmQgPyBmYWxzZSA6IGVkaXRhYmxlfVxuICAgICAgLz5cbiAgICA8L1N0eWxlZFJhbmdlSW5wdXQ+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQWRkQ29sb3JTdG9wID0gKHtvbkNvbG9yQWRkLCBJY29uQ29tcG9uZW50fSkgPT4gKFxuICA8U3R5bGVkQWN0aW9uIG9uQ2xpY2s9e29uQ29sb3JBZGR9IGNsYXNzTmFtZT1cImFkZGNvbG9yXCI+XG4gICAgPEljb25Db21wb25lbnQgaGVpZ2h0PVwiMTRweFwiIC8+XG4gIDwvU3R5bGVkQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbG9yU3RvcCA9ICh7b25Db2xvckRlbGV0ZSwgSWNvbkNvbXBvbmVudH0pID0+IChcbiAgPFN0eWxlZEFjdGlvbiBvbkNsaWNrPXtvbkNvbG9yRGVsZXRlfSBjbGFzc05hbWU9XCJ0cmFzaGJpblwiPlxuICAgIDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE0cHhcIiAvPlxuICA8L1N0eWxlZEFjdGlvbj5cbik7XG5cbmV4cG9ydCBjb25zdCBDdXN0b21QYWxldHRlSW5wdXQ6IFJlYWN0LkZDPEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBpc1NvcnRpbmcsXG4gIGNvbG9yLFxuICBjb2xvckJyZWFrcyxcbiAgaW5wdXRDb2xvckhleCxcbiAgZWRpdENvbG9yTWFwVmFsdWUsXG4gIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICBkaXNhYmxlQXBwZW5kLFxuICBkaXNhYmxlRGVsZXRlLFxuICBvbkRlbGV0ZSxcbiAgb25BZGQsXG4gIG9uVG9nZ2xlU2tldGNoZXJcbn0pID0+IHtcbiAgY29uc3Qgb25DbGlja1N3dGFjaCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uVG9nZ2xlU2tldGNoZXIoaW5kZXgpLCBbb25Ub2dnbGVTa2V0Y2hlciwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvcklucHV0ID0gdXNlQ2FsbGJhY2sodiA9PiBpbnB1dENvbG9ySGV4KGluZGV4LCB2KSwgW2lucHV0Q29sb3JIZXgsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JEZWxldGUgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkRlbGV0ZShpbmRleCksIFtvbkRlbGV0ZSwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvckFkZCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uQWRkKGluZGV4KSwgW29uQWRkLCBpbmRleF0pO1xuICBjb25zdCBzaG93SGV4SW5wdXQgPSAhY29sb3JCcmVha3M7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ydGFibGVJdGVtIGluZGV4PXtpbmRleH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICA8RHJhZ0hhbmRsZSBjbGFzc05hbWU9XCJsYXllcl9fZHJhZy1oYW5kbGVcIj5cbiAgICAgICAgICA8YWN0aW9uSWNvbnMuc29ydCBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICA8Q29sb3JTd2F0Y2ggY29sb3I9e2NvbG9yfSBvbkNsaWNrPXtvbkNsaWNrU3d0YWNofSAvPlxuICAgICAgICB7c2hvd0hleElucHV0ID8gKFxuICAgICAgICAgIDxTdHlsZWRDb2xvckhleElucHV0PlxuICAgICAgICAgICAgPENvbG9yUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXtjb2xvci50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25Db2xvcklucHV0fVxuICAgICAgICAgICAgICBpZD17YGlucHV0LWxheWVyLWxhYmVsLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgZWRpdGFibGVcbiAgICAgICAgICAgICAgdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiNzBweFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkQ29sb3JIZXhJbnB1dD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHtpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrcykgPyAoXG4gICAgICAgICAgPEVkaXRhYmxlQ29sb3JSYW5nZVxuICAgICAgICAgICAgaXRlbT17Y29sb3JCcmVha3NbaW5kZXhdfVxuICAgICAgICAgICAgaXNMYXN0PXtpbmRleCA9PT0gY29sb3JCcmVha3MubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIGVkaXRDb2xvck1hcD17ZWRpdENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICBlZGl0YWJsZVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICB7IWRpc2FibGVBcHBlbmQgPyAoXG4gICAgICAgICAgPEFkZENvbG9yU3RvcCBvbkNvbG9yQWRkPXtvbkNvbG9yQWRkfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5hZGR9IC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWRpc2FibGVEZWxldGUgPyAoXG4gICAgICAgICAgPERlbGV0ZUNvbG9yU3RvcCBvbkNvbG9yRGVsZXRlPXtvbkNvbG9yRGVsZXRlfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5kZWxldGV9IC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQm90dG9tQWN0aW9uID0gKHtvbkNhbmNlbCwgb25Db25maXJtfSkgPT4gKFxuICA8U3R5bGVkQnV0dG9uQ29udGFpbmVyPlxuICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiY29uZmlybS1hcHBseV9fYnV0dG9uXCIgc21hbGwgb25DbGljaz17b25Db25maXJtfT5cbiAgICAgIENvbmZpcm1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uIGxpbmsgc21hbGwgb25DbGljaz17b25DYW5jZWx9PlxuICAgICAgQ2FuY2VsXG4gICAgPC9CdXR0b24+XG4gIDwvU3R5bGVkQnV0dG9uQ29udGFpbmVyPlxuKTtcblxuY29uc3QgU3R5bGVkQ3VzdG9tUGFsZXR0ZSA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjdXN0b20tcGFsZXR0ZSdcbn0pYFxuICBtYXJnaW4tdG9wOiA4cHg7XG5gO1xuXG5mdW5jdGlvbiBDdXN0b21QYWxldHRlRmFjdG9yeSgpOiBSZWFjdC5GQzxDdXN0b21QYWxldHRlUHJvcHM+IHtcbiAgY29uc3QgQ3VzdG9tUGFsZXR0ZTogUmVhY3QuRkM8Q3VzdG9tUGFsZXR0ZVByb3BzPiA9ICh7XG4gICAgY3VzdG9tUGFsZXR0ZSxcbiAgICBzZXRDb2xvclBhbGV0dGVVSSxcbiAgICBzaG93U2tldGNoZXIsXG4gICAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gICAgb25DYW5jZWwsXG4gICAgb25BcHBseVxuICB9KSA9PiB7XG4gICAgY29uc3QgW2lzU29ydGluZywgc2V0SXNTb3J0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB7Y29sb3JzLCBjb2xvck1hcH0gPSBjdXN0b21QYWxldHRlO1xuICAgIGNvbnN0IGNvbG9yQnJlYWtzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IChjb2xvck1hcCA/IGNvbG9yTWFwVG9Db2xvckJyZWFrcyhjb2xvck1hcCkgOiBudWxsKSxcbiAgICAgIFtjb2xvck1hcF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25QaWNrZXJVcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGNvbG9yID0+IHtcbiAgICAgICAgaWYgKGNvbG9yICYmIE51bWJlci5pc0Zpbml0ZShzaG93U2tldGNoZXIpKSB7XG4gICAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvcihcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBOdW1iZXIoc2hvd1NrZXRjaGVyKSxcbiAgICAgICAgICAgIGNvbG9yLmhleFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNob3dTa2V0Y2hlciwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcbiAgICBjb25zdCBvblRvZ2dsZVNrZXRjaGVyID0gdXNlQ2FsbGJhY2soXG4gICAgICB2YWwgPT4ge1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgc2hvd1NrZXRjaGVyOiB2YWxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG4gICAgY29uc3Qgb25EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25BZGQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgLy8gYWRkIGNvbG9yIGF0IHRoZSBlbmRcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IGFkZEN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Td2F0Y2hDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIG9uVG9nZ2xlU2tldGNoZXIoZmFsc2UpO1xuICAgIH0sIFtvblRvZ2dsZVNrZXRjaGVyXSk7XG5cbiAgICBjb25zdCBvbkNvbmZpcm0gPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2FuY2VsKCk7XG4gICAgICAgIG9uQXBwbHkoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIFtvbkNhbmNlbCwgb25BcHBseV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Tb3J0RW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICAoe29sZEluZGV4LCBuZXdJbmRleH0pID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHNvcnRDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgfSk7XG4gICAgICAgIHNldElzU29ydGluZyhmYWxzZSk7XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNldENvbG9yUGFsZXR0ZVVJLCBzZXRJc1NvcnRpbmddXG4gICAgKTtcblxuICAgIGNvbnN0IG9uU29ydFN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0SXNTb3J0aW5nKHRydWUpO1xuICAgIH0sIFtzZXRJc1NvcnRpbmddKTtcblxuICAgIGNvbnN0IGlucHV0Q29sb3JIZXggPSB1c2VDYWxsYmFjayhcbiAgICAgIChpbmRleCwgdmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICAvLyBzZXRDb2xvcnMobmV3Q29sb3JzKTtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG5cbiAgICBjb25zdCBlZGl0Q29sb3JNYXBWYWx1ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWN1c3RvbVBhbGV0dGUuY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q29sb3JNYXAgPSBjdXN0b21QYWxldHRlLmNvbG9yTWFwLm1hcChcbiAgICAgICAgICAoY20sIGkpID0+IChpID09PSBpbmRleCA/IFt2YWx1ZSwgY21bMV1dIDogY20pIGFzIFtzdHJpbmcsIHN0cmluZ11cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBzb3J0IHRoZSB1c2VyIGlucHV0cyBpbiBjYXNlIHRoZSBicmVhayB2YWx1ZXMgYXJlIG5vdCBvcmRlcmVkXG4gICAgICAgIGNvbnN0IGJyZWFrcyA9IG5ld0NvbG9yTWFwXG4gICAgICAgICAgLm1hcChjbSA9PiBjbVswXSBhcyBzdHJpbmcgfCBudWxsKVxuICAgICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpKVxuICAgICAgICAgIC5jb25jYXQobnVsbCk7XG4gICAgICAgIGNvbnN0IHNvcnRlZE5ld0NvbG9yTWFwOiBDb2xvck1hcCA9IG5ld0NvbG9yTWFwLm1hcCgoY20sIGkpID0+IFticmVha3NbaV0sIGNtWzFdXSk7XG5cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogc29ydGVkTmV3Q29sb3JNYXBcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZV1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRDdXN0b21QYWxldHRlPlxuICAgICAgICA8V3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGVfX3NvcnRhYmxlLWNvbnRhaW5lclwiXG4gICAgICAgICAgb25Tb3J0RW5kPXtvblNvcnRFbmR9XG4gICAgICAgICAgb25Tb3J0U3RhcnQ9e29uU29ydFN0YXJ0fVxuICAgICAgICAgIGxvY2tBeGlzPVwieVwiXG4gICAgICAgICAgaGVscGVyQ2xhc3M9XCJzb3J0aW5nLWNvbG9yc1wiXG4gICAgICAgICAgdXNlRHJhZ0hhbmRsZVxuICAgICAgICA+XG4gICAgICAgICAge2NvbG9ycy5tYXAoKGNvbG9yLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEN1c3RvbVBhbGV0dGVJbnB1dFxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBjb2xvckJyZWFrcz17Y29sb3JCcmVha3N9XG4gICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgaXNTb3J0aW5nPXtpc1NvcnRpbmd9XG4gICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgaW5wdXRDb2xvckhleD17aW5wdXRDb2xvckhleH1cbiAgICAgICAgICAgICAgZGlzYWJsZUFwcGVuZD17Y29sb3JzLmxlbmd0aCA+PSAyMH1cbiAgICAgICAgICAgICAgZGlzYWJsZURlbGV0ZT17Y29sb3JzLmxlbmd0aCA8PSAyfVxuICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAgIG9uQWRkPXtvbkFkZH1cbiAgICAgICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgICAgICBvblRvZ2dsZVNrZXRjaGVyPXtvblRvZ2dsZVNrZXRjaGVyfVxuICAgICAgICAgICAgICBlZGl0Q29sb3JNYXBWYWx1ZT17ZWRpdENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1dyYXBwZWRTb3J0YWJsZUNvbnRhaW5lcj5cbiAgICAgICAgPERpdmlkZXJMaW5lIC8+XG4gICAgICAgIHsvKiBDYW5jZWwgb3IgQ29uZmlybSBCdXR0b25zICovfVxuICAgICAgICA8Qm90dG9tQWN0aW9uIG9uQ2FuY2VsPXtvbkNhbmNlbH0gb25Db25maXJtPXtvbkNvbmZpcm19IC8+XG4gICAgICAgIDxQb3J0YWxlZCBpc09wZW5lZD17c2hvd1NrZXRjaGVyICE9PSBmYWxzZX0gbGVmdD17MjgwfSB0b3A9ey0zMDB9IG9uQ2xvc2U9e29uU3dhdGNoQ2xvc2V9PlxuICAgICAgICAgIDxDdXN0b21QaWNrZXIgY29sb3I9e2NvbG9yc1tOdW1iZXIoc2hvd1NrZXRjaGVyKV19IG9uQ2hhbmdlPXtvblBpY2tlclVwZGF0ZX0gLz5cbiAgICAgICAgPC9Qb3J0YWxlZD5cbiAgICAgIDwvU3R5bGVkQ3VzdG9tUGFsZXR0ZT5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBDdXN0b21QYWxldHRlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21QYWxldHRlRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFTQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBT0EsSUFBQUksaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQVFBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxhQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFBMkMsSUFBQVcsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQW5DM0M7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxD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RUFBQyxHQUFHO01BQ1pDLFdBQVcsRUFBQyxnQkFBZ0I7TUFDNUJDLGFBQWE7SUFBQSxHQUVaN0IsTUFBTSxDQUFDcUIsR0FBRyxDQUFDLFVBQUM5SSxLQUFLLEVBQUUrRCxLQUFLO01BQUEsb0JBQ3ZCcEosTUFBQSxZQUFBd0csYUFBQSxDQUFDaUUsa0JBQWtCO1FBQ2pCbUUsR0FBRyxFQUFFeEYsS0FBTTtRQUNYdUIsV0FBVyxFQUFFQSxXQUFZO1FBQ3pCdkIsS0FBSyxFQUFFQSxLQUFNO1FBQ2I3QyxTQUFTLEVBQUVBLFNBQVU7UUFDckJsQixLQUFLLEVBQUVBLEtBQU07UUFDYnVGLGFBQWEsRUFBRUEsYUFBYztRQUM3QkksYUFBYSxFQUFFOEIsTUFBTSxDQUFDekosTUFBTSxJQUFJLEVBQUc7UUFDbkM0SCxhQUFhLEVBQUU2QixNQUFNLENBQUN6SixNQUFNLElBQUksQ0FBRTtRQUNsQzBILFdBQVcsRUFBRUEsV0FBWTtRQUN6QkksS0FBSyxFQUFFQSxLQUFNO1FBQ2JELFFBQVEsRUFBRUEsUUFBUztRQUNuQkUsZ0JBQWdCLEVBQUVBLGdCQUFpQjtRQUNuQ1AsaUJBQWlCLEVBQUVBO01BQWtCLENBQ3RDLENBQUM7SUFBQSxDQUNILENBQ3VCLENBQUMsZUFDM0I3SyxNQUFBLFlBQUF3RyxhQUFBLENBQUN4QixXQUFXLE1BQUUsQ0FBQyxlQUVmaEYsTUFBQSxZQUFBd0csYUFBQSxDQUFDbUYsWUFBWTtNQUFDRSxRQUFRLEVBQUVBLFFBQVM7TUFBQ0MsU0FBUyxFQUFFQTtJQUFVLENBQUUsQ0FBQyxlQUMxRDlMLE1BQUEsWUFBQXdHLGFBQUEsQ0FBQ3BHLFNBQUEsV0FBUTtNQUFDeU8sUUFBUSxFQUFFckMsWUFBWSxLQUFLLEtBQU07TUFBQ3NDLElBQUksRUFBRSxHQUFJO01BQUNDLEdBQUcsRUFBRSxDQUFDLEdBQUk7TUFBQ0MsT0FBTyxFQUFFeEI7SUFBYyxnQkFDdkZ4TixNQUFBLFlBQUF3RyxhQUFBLENBQUMvRixhQUFBLFdBQVk7TUFBQzRFLEtBQUssRUFBRXlILE1BQU0sQ0FBQ3ZELE1BQU0sQ0FBQ2lELFlBQVksQ0FBQyxDQUFFO01BQUNwRixRQUFRLEVBQUU4RjtJQUFlLENBQUUsQ0FDdEUsQ0FDUyxDQUFDO0VBRTFCLENBQUM7RUFFRCxPQUFPZCxhQUFhO0FBQ3RCO0FBQUMsSUFBQTZDLFFBQUEsR0FBQTFLLE9BQUEsY0FFYzRILG9CQUFvQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
730
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfbG9kYXNoIiwiX3JlYWN0U29ydGFibGVIb2MiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9wb3J0YWxlZCIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl90eXBlYWhlYWQiLCJfY2hpY2tsZXRlZElucHV0IiwiX2Ryb3Bkb3duTGlzdCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfaWNvbnMiLCJfY3VzdG9tUGlja2VyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfdGVtcGxhdGVPYmplY3Q3IiwiX3RlbXBsYXRlT2JqZWN0OCIsIl90ZW1wbGF0ZU9iamVjdDkiLCJfdGVtcGxhdGVPYmplY3QxMCIsIl90ZW1wbGF0ZU9iamVjdDExIiwiX3RlbXBsYXRlT2JqZWN0MTIiLCJfdGVtcGxhdGVPYmplY3QxMyIsIl90ZW1wbGF0ZU9iamVjdDE0IiwiX3RlbXBsYXRlT2JqZWN0MTUiLCJfdGVtcGxhdGVPYmplY3QxNiIsIl90ZW1wbGF0ZU9iamVjdDE3IiwiX3RlbXBsYXRlT2JqZWN0MTgiLCJfdGVtcGxhdGVPYmplY3QxOSIsIl90ZW1wbGF0ZU9iamVjdDIwIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJUcmFzaCIsInNvcnQiLCJWZXJ0RG90cyIsImFkZCIsIkFkZCIsImRyYWdIYW5kbGVBY3RpdmUiLCJjc3MiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JIbCIsIkNvbG9yUGFsZXR0ZUl0ZW0iLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiZHJvcGRvd25XcmFwcGVyWiIsInBhbmVsQmFja2dyb3VuZEhvdmVyIiwiU3R5bGVkRHJhZ0hhbmRsZSIsIlN0eWxlZEFjdGlvbiIsInN1YnRleHRDb2xvciIsInN1YnRleHRDb2xvckFjdGl2ZSIsIkRpdmlkZXJMaW5lIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiQ29sb3JTd2F0Y2giLCJhdHRycyIsImNsYXNzTmFtZSIsImNvbG9yIiwiYm94U2hhZG93IiwiU3R5bGVkQnV0dG9uQ29udGFpbmVyIiwiU3R5bGVkQWRkU3RlcENvbnRhaW5lciIsImlucHV0Q29sb3IiLCJTdHlsZWRJbnB1dCIsIklucHV0IiwiX3Byb3BzJHdpZHRoIiwid2lkdGgiLCJfcHJvcHMkdGV4dEFsaWduIiwidGV4dEFsaWduIiwiZGlzYWJsZWQiLCJJbnB1dFRleHQiLCJpbnB1dCIsIl9wcm9wcyR3aWR0aDIiLCJfcHJvcHMkdGV4dEFsaWduMiIsIlNvcnRhYmxlSXRlbSIsIlNvcnRhYmxlRWxlbWVudCIsIl9yZWYiLCJjaGlsZHJlbiIsImlzU29ydGluZyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc25hbWVzIiwic29ydGluZyIsIldyYXBwZWRTb3J0YWJsZUNvbnRhaW5lciIsIlNvcnRhYmxlQ29udGFpbmVyIiwiX3JlZjIiLCJEcmFnSGFuZGxlIiwiU29ydGFibGVIYW5kbGUiLCJfcmVmMyIsIkNvbG9yUGFsZXR0ZUlucHV0IiwiX3JlZjQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiaWQiLCJlZGl0YWJsZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInN0YXRlVmFsdWUiLCJzZXRWYWx1ZSIsImlucHV0UmVmIiwidXNlUmVmIiwidXNlRWZmZWN0Iiwib25LZXlEb3duIiwidXNlQ2FsbGJhY2siLCJrZXlDb2RlIiwiS2V5RXZlbnQiLCJET01fVktfRU5URVIiLCJET01fVktfUkVUVVJOIiwiY3VycmVudCIsImJsdXIiLCJfb25DaGFuZ2UiLCJ0YXJnZXQiLCJvbkJsdXIiLCJyZWYiLCJzZWNvbmRhcnkiLCJEYXNoIiwiU3R5bGVkUmFuZ2VJbnB1dCIsIlN0eWxlZENvbG9ySGV4SW5wdXQiLCJFZGl0YWJsZUNvbG9yUmFuZ2UiLCJfcmVmNSIsIml0ZW0iLCJpc0xhc3QiLCJpbmRleCIsImVkaXRDb2xvck1hcCIsIm5vTWluQm91bmQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImlucHV0cyIsIm5vTWF4Qm91bmQiLCJvbkNoYW5nZUxlZnQiLCJ2YWwiLCJwYXJzZUZsb2F0Iiwib25DaGFuZ2VSaWdodCIsInRvU3RyaW5nIiwiY29uY2F0IiwiQWRkQ29sb3JTdG9wIiwiX3JlZjYiLCJvbkNvbG9yQWRkIiwiSWNvbkNvbXBvbmVudCIsIm9uQ2xpY2siLCJoZWlnaHQiLCJEZWxldGVDb2xvclN0b3AiLCJfcmVmNyIsIm9uQ29sb3JEZWxldGUiLCJDdXN0b21QYWxldHRlSW5wdXQiLCJfcmVmOCIsImNvbG9yQnJlYWtzIiwiaW5wdXRDb2xvckhleCIsImVkaXRDb2xvck1hcFZhbHVlIiwiX3JlZjgkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsImRpc2FibGVBcHBlbmQiLCJkaXNhYmxlRGVsZXRlIiwib25EZWxldGUiLCJvbkFkZCIsIm9uVG9nZ2xlU2tldGNoZXIiLCJvbkNsaWNrU3d0YWNoIiwib25Db2xvcklucHV0IiwidiIsInNob3dIZXhJbnB1dCIsInRvVXBwZXJDYXNlIiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciIsIlN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXIiLCJub0JvcmRlciIsIkRyb3Bkb3duVmFsdWVzV3JhcHBlciIsIlNlbGVjdGVkVmFsdWVzV3JhcHBlciIsIlN0eWxlZERyb3Bkb3duSGVhZGVyIiwiU3R5bGVkVG9vbHRpcENvbnRlbnQiLCJOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAiLCJDYXRlZ29yaWNhbFNlbGVjdG9yQ29udGV4dCIsIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsIm9uU2VsZWN0UmVzdCIsIm9uUmVzZXQiLCJNb2RpZmllZERyb3Bkb3duTGlzdCIsIl9Ecm9wZG93bkxpc3QiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJyZW5kZXIiLCJfdGhpcyIsIkZyYWdtZW50IiwiQ29uc3VtZXIiLCJjb250ZXh0IiwiQnV0dG9uIiwibGluayIsInNpemUiLCJEcm9wZG93bkxpc3QiLCJDYXRlZ29yaWNhbFNlbGVjdG9yIiwiX3JlZjkiLCJzZWxlY3RlZFZhbHVlcyIsImFsbFZhbHVlcyIsImFkZENvbG9yTWFwVmFsdWUiLCJyZW1vdmVDb2xvck1hcFZhbHVlIiwicmVzZXRDb2xvck1hcFZhbHVlIiwic2VsZWN0UmVzdENvbG9yTWFwVmFsdWUiLCJfcmVmOSRlZGl0YWJsZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2hvd1R5cGVhaGVhZCIsInNldFNob3dUeXBlYWhlYWQiLCJvbk9wdGlvblNlbGVjdGVkIiwicHJldmlvdXNTZWxlY3RlZCIsInRvQXJyYXkiLCJpdGVtcyIsInVuaXEiLCJvbk9wZW5Ecm9wZG93biIsIm9uQ2xvc2VEcm9wZG93biIsIm9uUmVtb3ZlSXRlbSIsIlRvb2x0aXAiLCJwbGFjZSIsImludGVyYWN0aXZlIiwic2xpY2UiLCJtYXAiLCJsZWZ0IiwidG9wIiwiaXNPcGVuZWQiLCJvbkNsb3NlIiwic2VsZWN0ZWRJdGVtcyIsInBsYWNlaG9sZGVyIiwicmVtb3ZlSXRlbSIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50Iiwic3R5bGUiLCJwb3NpdGlvbiIsIlByb3ZpZGVyIiwiY3VzdG9tQ2xhc3NlcyIsInJlc3VsdHMiLCJsaXN0SXRlbSIsImxpc3RBbmNob3IiLCJvcHRpb25zIiwiY3VzdG9tTGlzdENvbXBvbmVudCIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiTGlzdEl0ZW0iLCJzZWFyY2hhYmxlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dCIsIl9yZWYxMCIsImNvbG9yTWFwIiwiX3JlZjEwJGFjdGlvbkljb25zIiwidXNlTWVtbyIsInZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsIkJvdHRvbUFjdGlvbiIsIl9yZWYxMSIsIm9uQ2FuY2VsIiwib25Db25maXJtIiwic21hbGwiLCJTdHlsZWRDdXN0b21QYWxldHRlIiwiQ3VzdG9tUGFsZXR0ZUZhY3RvcnkiLCJDdXN0b21QYWxldHRlIiwiX3JlZjEyIiwib3JkaW5hbERvbWFpbiIsImN1c3RvbVBhbGV0dGUiLCJzZXRDb2xvclBhbGV0dGVVSSIsInNob3dTa2V0Y2hlciIsIl9yZWYxMiRhY3Rpb25JY29ucyIsIm9uQXBwbHkiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNldElzU29ydGluZyIsImNvbG9ycyIsInR5cGUiLCJjb2xvck1hcFRvQ29sb3JCcmVha3MiLCJjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyIsIm9uUGlja2VyVXBkYXRlIiwibmV3Q3VzdG9tUGFsZXR0ZSIsInVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvciIsImhleCIsInJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvciIsImFkZEN1c3RvbVBhbGV0dGVDb2xvciIsIm9uQWRkQ2F0ZWdvcmljYWxTdGVwIiwib25Td2F0Y2hDbG9zZSIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJvblNvcnRFbmQiLCJfcmVmMTMiLCJvbGRJbmRleCIsIm5ld0luZGV4Iiwic29ydEN1c3RvbVBhbGV0dGVDb2xvciIsIm9uU29ydFN0YXJ0IiwibmV3Q29sb3JNYXAiLCJjbSIsImJyZWFrcyIsImIiLCJzb3J0ZWROZXdDb2xvck1hcCIsInJlbW92ZUNhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAiLCJhZGRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUiLCJhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAiLCJyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcCIsInNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsImxvY2tBeGlzIiwiaGVscGVyQ2xhc3MiLCJ1c2VEcmFnSGFuZGxlIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jdXN0b20tcGFsZXR0ZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgRWxlbWVudFR5cGUsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC51bmlxJztcbmltcG9ydCB7XG4gIFNvcnRhYmxlQ29udGFpbmVyLFxuICBTb3J0YWJsZUNvbnRhaW5lclByb3BzLFxuICBTb3J0YWJsZUVsZW1lbnQsXG4gIFNvcnRhYmxlRWxlbWVudFByb3BzLFxuICBTb3J0YWJsZUhhbmRsZVxufSBmcm9tICdyZWFjdC1zb3J0YWJsZS1ob2MnO1xuaW1wb3J0IHN0eWxlZCwge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFBvcnRhbGVkIGZyb20gJy4uLy4uL2NvbW1vbi9wb3J0YWxlZCc7XG5pbXBvcnQge1Rvb2x0aXB9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgVHlwZWFoZWFkIGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL3R5cGVhaGVhZCc7XG5pbXBvcnQgQ2hpY2tsZXRlZElucHV0IGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IERyb3Bkb3duTGlzdCwge0xpc3RJdGVtfSBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0tleUV2ZW50fSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0NvbG9yTWFwLCBDb2xvclVJLCBIZXhDb2xvciwgTmVzdGVkUGFydGlhbH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAsXG4gIGFkZEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIGNvbG9yTWFwVG9Db2xvckJyZWFrcyxcbiAgaXNOdW1lcmljQ29sb3JCcmVha3MsXG4gIHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgsXG4gIHJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAsXG4gIHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcixcbiAgc2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4LFxuICBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yLFxuICB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3Jcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0NvbG9yQnJlYWssIENvbG9yQnJlYWtPcmRpbmFsfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QWRkLCBUcmFzaCwgVmVydERvdHN9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge0J1dHRvbiwgSW5wdXR9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgQ3VzdG9tUGlja2VyIGZyb20gJy4vY3VzdG9tLXBpY2tlcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkljb25zID0ge1xuICBkZWxldGU6IEVsZW1lbnRUeXBlO1xuICBzb3J0OiBFbGVtZW50VHlwZTtcbiAgYWRkOiBFbGVtZW50VHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEVkaXRDb2xvck1hcEZ1bmMgPSAodjogbnVtYmVyLCBpOiBudW1iZXIpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBTZXRDb2xvclVJRnVuYyA9IChuZXdDb25maWc6IE5lc3RlZFBhcnRpYWw8Q29sb3JVST4pID0+IHZvaWQ7XG5cbi8qKlxuICogRWRpdGFibGVDb2xvclJhbmdlXG4gKi9cbmV4cG9ydCB0eXBlIEVkaXRhYmxlQ29sb3JSYW5nZVByb3BzID0ge1xuICBpdGVtOiBDb2xvckJyZWFrO1xuICBpc0xhc3Q6IGJvb2xlYW47XG4gIGluZGV4OiBudW1iZXI7XG4gIGVkaXRDb2xvck1hcD86IEVkaXRDb2xvck1hcEZ1bmM7XG4gIGVkaXRhYmxlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tUGFsZXR0ZVByb3BzID0ge1xuICBjdXN0b21QYWxldHRlOiBDb2xvclVJWydjdXN0b21QYWxldHRlJ107XG4gIHNldENvbG9yUGFsZXR0ZVVJOiBTZXRDb2xvclVJRnVuYztcbiAgc2hvd1NrZXRjaGVyOiBudW1iZXIgfCBib29sZWFuO1xuICBvcmRpbmFsRG9tYWluPzogc3RyaW5nW10gfCBudW1iZXJbXTtcbiAgYWN0aW9uSWNvbnM/OiBBY3Rpb25JY29ucztcbiAgb25BcHBseTogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbiAgY29sb3I6IEhleENvbG9yO1xuICBjb2xvckJyZWFrczogQ29sb3JCcmVha09yZGluYWxbXSB8IENvbG9yQnJlYWtbXSB8IG51bGw7XG4gIGlucHV0Q29sb3JIZXg6IChpbmRleDogbnVtYmVyLCB2OiBIZXhDb2xvcikgPT4gdm9pZDtcbiAgZWRpdENvbG9yTWFwVmFsdWU6IEVkaXRDb2xvck1hcEZ1bmM7XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIGRpc2FibGVBcHBlbmQ/OiBib29sZWFuO1xuICBkaXNhYmxlRGVsZXRlPzogYm9vbGVhbjtcbiAgb25EZWxldGU6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvbkFkZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlU2tldGNoZXI6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xufTtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICBkZWxldGU6IFRyYXNoLFxuICBzb3J0OiBWZXJ0RG90cyxcbiAgYWRkOiBBZGRcbn07XG5cbmNvbnN0IGRyYWdIYW5kbGVBY3RpdmUgPSBjc3NgXG4gIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGN1cnNvcjogbW92ZTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENvbG9yUGFsZXR0ZUl0ZW0gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogMnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclogKyAxfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgfVxuXG4gICY6bm90KC5zb3J0aW5nKTpub3QoLmRpc2FibGVkKSB7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZEhvdmVyfTtcbiAgICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gICAgfVxuICB9XG5cbiAgJi5zb3J0aW5nLWNvbG9ycyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgJHtkcmFnSGFuZGxlQWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJhZ0hhbmRsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG5gO1xuXG5jb25zdCBTdHlsZWRBY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICBzdmcge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yQWN0aXZlfTtcbiAgICB9XG4gIH1cblxuICBtYXJnaW4tbGVmdDogNHB4O1xuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGVyTGluZSA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcH07XG4gIG1hcmdpbi10b3A6IDhweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclN3YXRjaCA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjdXN0b20tcGFsZXR0ZV9fc3dhdGNoJ1xufSlgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3J9O1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICY6aG92ZXIge1xuICAgIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZEJ1dHRvbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDExcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGRpcmVjdGlvbjogcnRsO1xuICBwYWRkaW5nOiAwIDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRBZGRTdGVwQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTFweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwIDEycHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Q29sb3J9O1xuICAuYWRkY29sb3Ige1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpPHt3aWR0aDogc3RyaW5nOyB0ZXh0QWxpZ246IHN0cmluZ30+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aCA/PyAnMTAwJSd9O1xuICB0ZXh0LWFsaWduOiAke3Byb3BzID0+IHByb3BzLnRleHRBbGlnbiA/PyAnZW5kJ307XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnKX07XG5gO1xuXG5jb25zdCBJbnB1dFRleHQgPSBzdHlsZWQuZGl2PHt3aWR0aDogc3RyaW5nOyB0ZXh0QWxpZ246IHN0cmluZ30+YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRoID8/ICcxMDAlJ307XG4gIHRleHQtYWxpZ246ICR7cHJvcHMgPT4gcHJvcHMudGV4dEFsaWduID8/ICdlbmQnfTtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuYDtcblxudHlwZSBTb3J0YWJsZUl0ZW1Qcm9wcyA9IFNvcnRhYmxlRWxlbWVudFByb3BzICYge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG59O1xuXG5jb25zdCBTb3J0YWJsZUl0ZW0gPSBTb3J0YWJsZUVsZW1lbnQ8U29ydGFibGVJdGVtUHJvcHM+KCh7Y2hpbGRyZW4sIGlzU29ydGluZ30pID0+IChcbiAgPENvbG9yUGFsZXR0ZUl0ZW0gY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjdXN0b20tcGFsZXR0ZV9fc29ydGFibGUtaXRlbXMnLCB7c29ydGluZzogaXNTb3J0aW5nfSl9PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db2xvclBhbGV0dGVJdGVtPlxuKSk7XG5cbnR5cGUgV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyUHJvcHMgPSBTb3J0YWJsZUNvbnRhaW5lclByb3BzICYge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuLy8gVE9ETzogU2hvdWxkIGNsYXNzTmFtZSBiZSBhcHBsaWVkIHRvIHRoZSBkaXYgaGVyZT9cbmNvbnN0IFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lciA9IFNvcnRhYmxlQ29udGFpbmVyPFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lclByb3BzPihcbiAgKHtjaGlsZHJlbiwgY2xhc3NOYW1lfSkgPT4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2NoaWxkcmVufTwvZGl2PlxuKTtcblxudHlwZSBEcmFnSGFuZGxlUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7Y2xhc3NOYW1lPzogc3RyaW5nOyBsaXN0ZW5lcnM/OiB1bmtub3dufT47XG5cbmV4cG9ydCBjb25zdCBEcmFnSGFuZGxlID0gU29ydGFibGVIYW5kbGU8RHJhZ0hhbmRsZVByb3BzPigoe2NsYXNzTmFtZSwgY2hpbGRyZW59KSA9PiAoXG4gIDxTdHlsZWREcmFnSGFuZGxlIGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57Y2hpbGRyZW59PC9TdHlsZWREcmFnSGFuZGxlPlxuKSk7XG5cbmV4cG9ydCB0eXBlIENvbG9yUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gIG9uQ2hhbmdlOiAodmFsOiB1bmtub3duKSA9PiB2b2lkO1xuICBpZDogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICB0ZXh0QWxpZ246IHN0cmluZztcbiAgZWRpdGFibGU6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgQ29sb3JQYWxldHRlSW5wdXQgPSAoe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICB3aWR0aCxcbiAgdGV4dEFsaWduLFxuICBlZGl0YWJsZVxufTogQ29sb3JQYWxldHRlSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCBbc3RhdGVWYWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUodmFsdWUpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZSh2YWx1ZSk7XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIGUgPT4ge1xuICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBLZXlFdmVudC5ET01fVktfRU5URVI6XG4gICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX1JFVFVSTjpcbiAgICAgICAgICBvbkNoYW5nZShzdGF0ZVZhbHVlKTtcbiAgICAgICAgICBpZiAoaW5wdXRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlucHV0UmVmPy5jdXJyZW50LmJsdXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIHN0YXRlVmFsdWVdXG4gICk7XG5cbiAgY29uc3QgX29uQ2hhbmdlID0gdXNlQ2FsbGJhY2soZSA9PiBzZXRWYWx1ZShlLnRhcmdldC52YWx1ZSksIFtzZXRWYWx1ZV0pO1xuICBjb25zdCBvbkJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkNoYW5nZShzdGF0ZVZhbHVlKSwgW29uQ2hhbmdlLCBzdGF0ZVZhbHVlXSk7XG5cbiAgcmV0dXJuIGVkaXRhYmxlID8gKFxuICAgIDxTdHlsZWRJbnB1dFxuICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgIGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWhleF9faW5wdXRcIlxuICAgICAgdmFsdWU9e3N0YXRlVmFsdWV9XG4gICAgICBvbkNoYW5nZT17X29uQ2hhbmdlfVxuICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgIGlkPXtpZH1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIHRleHRBbGlnbj17dGV4dEFsaWdufVxuICAgICAgc2Vjb25kYXJ5XG4gICAgLz5cbiAgKSA6IChcbiAgICA8SW5wdXRUZXh0IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWhleF9faW5wdXRfX3RleHRcIiB3aWR0aD17d2lkdGh9IHRleHRBbGlnbj17dGV4dEFsaWdufT5cbiAgICAgIHt2YWx1ZX1cbiAgICA8L0lucHV0VGV4dD5cbiAgKTtcbn07XG5cbmNvbnN0IERhc2ggPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogNnB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFJhbmdlSW5wdXQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogMTJweDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbG9ySGV4SW5wdXQgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tbGVmdDogMTJweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBFZGl0YWJsZUNvbG9yUmFuZ2U6IFJlYWN0LkZDPEVkaXRhYmxlQ29sb3JSYW5nZVByb3BzPiA9ICh7XG4gIGl0ZW0sXG4gIGlzTGFzdCxcbiAgaW5kZXgsXG4gIGVkaXRDb2xvck1hcCxcbiAgZWRpdGFibGVcbn0pID0+IHtcbiAgY29uc3Qgbm9NaW5Cb3VuZCA9ICFOdW1iZXIuaXNGaW5pdGUoaXRlbS5pbnB1dHNbMF0pICYmIGluZGV4ID09PSAwO1xuICBjb25zdCBub01heEJvdW5kID0gIU51bWJlci5pc0Zpbml0ZShpdGVtLmlucHV0c1sxXSkgJiYgaXNMYXN0O1xuICBjb25zdCBvbkNoYW5nZUxlZnQgPSB1c2VDYWxsYmFjayhcbiAgICB2YWwgPT4ge1xuICAgICAgaWYgKGVkaXRhYmxlICYmIGVkaXRDb2xvck1hcCkgZWRpdENvbG9yTWFwKHBhcnNlRmxvYXQodmFsKSwgaW5kZXggLSAxKTtcbiAgICB9LFxuICAgIFtlZGl0Q29sb3JNYXAsIGluZGV4LCBlZGl0YWJsZV1cbiAgKTtcbiAgY29uc3Qgb25DaGFuZ2VSaWdodCA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbCA9PiB7XG4gICAgICBpZiAoZWRpdGFibGUgJiYgZWRpdENvbG9yTWFwKSBlZGl0Q29sb3JNYXAocGFyc2VGbG9hdCh2YWwpLCBpbmRleCk7XG4gICAgfSxcbiAgICBbZWRpdENvbG9yTWFwLCBpbmRleCwgZWRpdGFibGVdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUmFuZ2VJbnB1dD5cbiAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICB2YWx1ZT17bm9NaW5Cb3VuZCA/ICdMZXNzJyA6IGl0ZW0uaW5wdXRzWzBdLnRvU3RyaW5nKCl9XG4gICAgICAgIGlkPXtgY29sb3ItcGFsZXR0ZS1pbnB1dC0ke2luZGV4fS1sZWZ0YH1cbiAgICAgICAgd2lkdGg9XCI1MHB4XCJcbiAgICAgICAgdGV4dEFsaWduPVwiZW5kXCJcbiAgICAgICAgZWRpdGFibGU9e25vTWluQm91bmQgPyBmYWxzZSA6IGVkaXRhYmxlfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VMZWZ0fVxuICAgICAgLz5cbiAgICAgIDxEYXNoIC8+XG4gICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgdmFsdWU9e25vTWF4Qm91bmQgPyAnTW9yZScgOiBpdGVtLmlucHV0c1sxXS50b1N0cmluZygpfVxuICAgICAgICBpZD17YGNvbG9yLXBhbGV0dGUtaW5wdXQtJHtpbmRleH0tcmlnaHRgfVxuICAgICAgICB3aWR0aD1cIjUwcHhcIlxuICAgICAgICB0ZXh0QWxpZ249XCJlbmRcIlxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VSaWdodH1cbiAgICAgICAgZWRpdGFibGU9e25vTWF4Qm91bmQgPyBmYWxzZSA6IGVkaXRhYmxlfVxuICAgICAgLz5cbiAgICA8L1N0eWxlZFJhbmdlSW5wdXQ+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQWRkQ29sb3JTdG9wID0gKHtvbkNvbG9yQWRkLCBJY29uQ29tcG9uZW50fSkgPT4gKFxuICA8U3R5bGVkQWN0aW9uIG9uQ2xpY2s9e29uQ29sb3JBZGR9IGNsYXNzTmFtZT1cImFkZGNvbG9yXCI+XG4gICAgPEljb25Db21wb25lbnQgaGVpZ2h0PVwiMTRweFwiIC8+XG4gIDwvU3R5bGVkQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbG9yU3RvcCA9ICh7b25Db2xvckRlbGV0ZSwgSWNvbkNvbXBvbmVudH0pID0+IChcbiAgPFN0eWxlZEFjdGlvbiBvbkNsaWNrPXtvbkNvbG9yRGVsZXRlfSBjbGFzc05hbWU9XCJ0cmFzaGJpblwiPlxuICAgIDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE0cHhcIiAvPlxuICA8L1N0eWxlZEFjdGlvbj5cbik7XG5cbmV4cG9ydCBjb25zdCBDdXN0b21QYWxldHRlSW5wdXQ6IFJlYWN0LkZDPEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBpc1NvcnRpbmcsXG4gIGNvbG9yLFxuICBjb2xvckJyZWFrcyxcbiAgaW5wdXRDb2xvckhleCxcbiAgZWRpdENvbG9yTWFwVmFsdWUsXG4gIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICBkaXNhYmxlQXBwZW5kLFxuICBkaXNhYmxlRGVsZXRlLFxuICBvbkRlbGV0ZSxcbiAgb25BZGQsXG4gIG9uVG9nZ2xlU2tldGNoZXJcbn0pID0+IHtcbiAgY29uc3Qgb25DbGlja1N3dGFjaCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uVG9nZ2xlU2tldGNoZXIoaW5kZXgpLCBbb25Ub2dnbGVTa2V0Y2hlciwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvcklucHV0ID0gdXNlQ2FsbGJhY2sodiA9PiBpbnB1dENvbG9ySGV4KGluZGV4LCB2KSwgW2lucHV0Q29sb3JIZXgsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JEZWxldGUgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkRlbGV0ZShpbmRleCksIFtvbkRlbGV0ZSwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvckFkZCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uQWRkKGluZGV4KSwgW29uQWRkLCBpbmRleF0pO1xuICBjb25zdCBzaG93SGV4SW5wdXQgPSAhY29sb3JCcmVha3M7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ydGFibGVJdGVtIGluZGV4PXtpbmRleH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICA8RHJhZ0hhbmRsZSBjbGFzc05hbWU9XCJsYXllcl9fZHJhZy1oYW5kbGVcIj5cbiAgICAgICAgICA8YWN0aW9uSWNvbnMuc29ydCBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICA8Q29sb3JTd2F0Y2ggY29sb3I9e2NvbG9yfSBvbkNsaWNrPXtvbkNsaWNrU3d0YWNofSAvPlxuICAgICAgICB7c2hvd0hleElucHV0ID8gKFxuICAgICAgICAgIDxTdHlsZWRDb2xvckhleElucHV0PlxuICAgICAgICAgICAgPENvbG9yUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXtjb2xvci50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25Db2xvcklucHV0fVxuICAgICAgICAgICAgICBpZD17YGlucHV0LWxheWVyLWxhYmVsLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgZWRpdGFibGVcbiAgICAgICAgICAgICAgdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiNzBweFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkQ29sb3JIZXhJbnB1dD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHtpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrcykgPyAoXG4gICAgICAgICAgPEVkaXRhYmxlQ29sb3JSYW5nZVxuICAgICAgICAgICAgaXRlbT17Y29sb3JCcmVha3NbaW5kZXhdfVxuICAgICAgICAgICAgaXNMYXN0PXtpbmRleCA9PT0gY29sb3JCcmVha3MubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIGVkaXRDb2xvck1hcD17ZWRpdENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICBlZGl0YWJsZVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICB7IWRpc2FibGVBcHBlbmQgPyAoXG4gICAgICAgICAgPEFkZENvbG9yU3RvcCBvbkNvbG9yQWRkPXtvbkNvbG9yQWRkfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5hZGR9IC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWRpc2FibGVEZWxldGUgPyAoXG4gICAgICAgICAgPERlbGV0ZUNvbG9yU3RvcCBvbkNvbG9yRGVsZXRlPXtvbkNvbG9yRGVsZXRlfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5kZWxldGV9IC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjYXRlZ29yaWNhbC12YWx1ZS1waWNrZXInXG59KWBcbiAgd2lkdGg6IDE1MHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgY29sdW1uLWdhcDogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuXG50eXBlIFN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJQcm9wcyA9IHtub0JvcmRlcjogYm9vbGVhbn07XG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyID0gc3R5bGVkLmRpdjxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyUHJvcHM+YFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgYm9yZGVyLWJvdHRvbTogJHtwcm9wcyA9PiAocHJvcHMubm9Cb3JkZXIgPyAnJyA6ICcxcHggZGFzaGVkJyl9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtd2lkdGg6IDEwMHB4O1xuYDtcblxudHlwZSBEcm9wZG93blZhbHVlc1dyYXBwZXJQcm9wcyA9IHt3aWR0aDogbnVtYmVyfTtcbmNvbnN0IERyb3Bkb3duVmFsdWVzV3JhcHBlciA9IHN0eWxlZC5kaXY8RHJvcGRvd25WYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclp9O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbmA7XG5cbnR5cGUgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHMgPSB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xuY29uc3QgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyID0gc3R5bGVkKERyb3Bkb3duVmFsdWVzV3JhcHBlcik8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgbWF4LWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1jaGlja2xldGVkLWlucHV0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJvcGRvd25IZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Q29sb3J9O1xuICBwYWRkaW5nOiAwIDhweDtcbiAgZm9udC1zaXplOiAxMHB4O1xuXG4gIC5idXR0b24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkVG9vbHRpcENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA4cHg7XG4gIHdpZHRoOiAxNTBweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuXG4gIGRpdiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5gO1xuXG5jb25zdCBOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAgPSAxMDtcblxuY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb25TZWxlY3RSZXN0OiAoKSA9PiBudWxsLFxuICBvblJlc2V0OiAoKSA9PiBudWxsXG59KTtcblxuLy8gQ2F0ZWdvcmljYWwgdmFsdWVzIGRyb3Bkb3dubGlzdDpcbi8vIGV4dGVuZGluZyBEcm9wZG93bkxpc3QgYW5kIGFkZGluZyAnU2VsZWN0IHRoZSBSZXN0JyBhbmQgJ1Jlc2V0JyBidXR0b25zXG5jbGFzcyBNb2RpZmllZERyb3Bkb3duTGlzdCBleHRlbmRzIERyb3Bkb3duTGlzdCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAge2NvbnRleHQgPT4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFN0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25TZWxlY3RSZXN0fT5cbiAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgUmVzdFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25SZXNldH0+XG4gICAgICAgICAgICAgICAgICBSZXNldFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICA8RGl2aWRlckxpbmUgLz5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTGlzdCB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2VsZWN0ZWRWYWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBudWxsKVtdO1xuICBhbGxWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFkZENvbG9yTWFwVmFsdWU/OiAodjogKG51bWJlciB8IHN0cmluZyB8IG51bGwpW10sIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT86ICh2OiBudW1iZXIgfCBzdHJpbmcsIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVzZXRDb2xvck1hcFZhbHVlPzogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/OiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG59O1xuXG4vLyBDYXRlZ29yaWNhbCB2YWx1ZXMgc2VsZWN0b3IgZm9yIGVkaXRpbmcgY2F0ZWdvcmljYWwgdmFsdWVzXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvcjogUmVhY3QuRkM8Q2F0ZWdvcmljYWxTZWxlY3RvclByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBzZWxlY3RlZFZhbHVlcyxcbiAgYWxsVmFsdWVzLFxuICBhZGRDb2xvck1hcFZhbHVlLFxuICByZW1vdmVDb2xvck1hcFZhbHVlLFxuICByZXNldENvbG9yTWFwVmFsdWUsXG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlLFxuICBlZGl0YWJsZSA9IHRydWVcbn06IENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1R5cGVhaGVhZCwgc2V0U2hvd1R5cGVhaGVhZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25PcHRpb25TZWxlY3RlZCA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KHZhbHVlKSkpO1xuICAgICAgYWRkQ29sb3JNYXBWYWx1ZT8uKGl0ZW1zLCBpbmRleCk7XG4gICAgfSxcbiAgICBbc2VsZWN0ZWRWYWx1ZXMsIGluZGV4LCBhZGRDb2xvck1hcFZhbHVlXVxuICApO1xuXG4gIGNvbnN0IG9uT3BlbkRyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dUeXBlYWhlYWQodHJ1ZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkNsb3NlRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblJlbW92ZUl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICByZW1vdmVDb2xvck1hcFZhbHVlPy4odmFsdWUsIGluZGV4KTtcbiAgICB9LFxuICAgIFtpbmRleCwgcmVtb3ZlQ29sb3JNYXBWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBvblJlc2V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJlc2V0Q29sb3JNYXBWYWx1ZT8uKGluZGV4KTtcbiAgICBzZXRTaG93VHlwZWFoZWFkKGZhbHNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW3Jlc2V0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICBjb25zdCBvblNlbGVjdFJlc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/LihpbmRleCk7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlcj5cbiAgICAgIHtlZGl0YWJsZSAmJiA8QWRkIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXtvbk9wZW5Ecm9wZG93bn0gLz59XG4gICAgICA8U3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclxuICAgICAgICBub0JvcmRlcj17c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwIHx8ICFlZGl0YWJsZX1cbiAgICAgICAgb25DbGljaz17b25PcGVuRHJvcGRvd259XG4gICAgICAgIGRhdGEtdGlwXG4gICAgICAgIGRhdGEtZm9yPXtgY2F0ZWdvcnktdmFsdWVzLSR7aW5kZXh9YH1cbiAgICAgID5cbiAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gJ0FkZCBWYWx1ZSdcbiAgICAgICAgICA6IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgID8gc2VsZWN0ZWRWYWx1ZXNbMF1cbiAgICAgICAgICA6IGAke3NlbGVjdGVkVmFsdWVzLmxlbmd0aH0gc2VsZWN0ZWRgfVxuICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgaWQ9e2BjYXRlZ29yeS12YWx1ZXMtJHtpbmRleH1gfSBwbGFjZT1cInRvcFwiIGludGVyYWN0aXZlPXt0cnVlfT5cbiAgICAgICAgICAgIDxTdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNsaWNlKDAsIE5VTUJFUl9WQUxVRVNfSU5fVE9PTFRJUCkubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfT57dmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gTlVNQkVSX1ZBTFVFU19JTl9UT09MVElQICYmIDxkaXY+Li4uPC9kaXY+fVxuICAgICAgICAgICAgPC9TdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgKFxuICAgICAgICA8UG9ydGFsZWQgbGVmdD17MH0gdG9wPXswfSBpc09wZW5lZD17c2hvd1R5cGVhaGVhZH0gb25DbG9zZT17b25DbG9zZURyb3Bkb3dufT5cbiAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICA8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyIHdpZHRoPXsyNTB9IGhlaWdodD17MjAwfT5cbiAgICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2N1c3RvbS1wYWxldHRlLWNoaWNrbGV0ZWQtaW5wdXQnfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnJ31cbiAgICAgICAgICAgICAgICByZW1vdmVJdGVtPXtvblJlbW92ZUl0ZW19XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPERyb3Bkb3duVmFsdWVzV3JhcHBlciB3aWR0aD17MjUwfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgb25SZXNldCxcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0UmVzdFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjdXN0b21DbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6ICd0eXBlYWhlYWRfX2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXthbGxWYWx1ZXN9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17J1NlYXJjaCd9XG4gICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvbk9wdGlvblNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdENvbXBvbmVudD17TW9kaWZpZWREcm9wZG93bkxpc3R9XG4gICAgICAgICAgICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17TGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgc2hvd09wdGlvbnNXaGVuRW1wdHlcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0Ryb3Bkb3duVmFsdWVzV3JhcHBlcj5cbiAgICAgICAgPC9Qb3J0YWxlZD5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbiAgY29sb3I6IEhleENvbG9yO1xuICBjb2xvck1hcD86IENvbG9yTWFwIHwgbnVsbDtcbiAgYWRkQ29sb3JNYXBWYWx1ZTogKHY6IChudW1iZXIgfCBzdHJpbmcgfCBudWxsKVtdLCBpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlbW92ZUNvbG9yTWFwVmFsdWU6ICh2OiBudW1iZXIgfCBzdHJpbmcsIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVzZXRDb2xvck1hcFZhbHVlOiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZTogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aW9uSWNvbnM/OiBBY3Rpb25JY29ucztcbiAgb25EZWxldGU6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvbkFkZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlU2tldGNoZXI6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhbGxWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGRpc2FibGVEZWxldGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0OiBSZWFjdC5GQzxDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBpc1NvcnRpbmcsXG4gIGNvbG9yLFxuICBjb2xvck1hcCxcbiAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gIG9uRGVsZXRlLFxuICBkaXNhYmxlRGVsZXRlLFxuICBvbkFkZCxcbiAgb25Ub2dnbGVTa2V0Y2hlcixcbiAgYWRkQ29sb3JNYXBWYWx1ZSxcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZSxcbiAgcmVzZXRDb2xvck1hcFZhbHVlLFxuICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSxcbiAgYWxsVmFsdWVzXG59OiBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IHNlbGVjdGVkVmFsdWVzOiAobnVtYmVyIHwgc3RyaW5nIHwgbnVsbClbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghY29sb3JNYXAgfHwgIWNvbG9yTWFwW2luZGV4XSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHZhbHVlID0gY29sb3JNYXBbaW5kZXhdWzBdO1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSAhPT0gbnVsbCA/IFt2YWx1ZV0gOiBbXTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LCBbY29sb3JNYXAsIGluZGV4XSk7XG5cbiAgY29uc3Qgb25DbGlja1N3dGFjaCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uVG9nZ2xlU2tldGNoZXIoaW5kZXgpLCBbb25Ub2dnbGVTa2V0Y2hlciwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvckRlbGV0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IG9uRGVsZXRlKGluZGV4KSwgW29uRGVsZXRlLCBpbmRleF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFNvcnRhYmxlSXRlbSBpbmRleD17aW5kZXh9IGlzU29ydGluZz17aXNTb3J0aW5nfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaW5wdXRfX2xlZnRcIj5cbiAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCI+XG4gICAgICAgICAgPGFjdGlvbkljb25zLnNvcnQgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgIDwvRHJhZ0hhbmRsZT5cbiAgICAgICAgPENvbG9yU3dhdGNoIGNvbG9yPXtjb2xvcn0gb25DbGljaz17b25DbGlja1N3dGFjaH0gLz5cbiAgICAgICAge2NvbG9yTWFwICYmIGNvbG9yTWFwW2luZGV4XSAmJiAoXG4gICAgICAgICAgPENhdGVnb3JpY2FsU2VsZWN0b3JcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgICAgIGFsbFZhbHVlcz17YWxsVmFsdWVzfVxuICAgICAgICAgICAgYWRkQ29sb3JNYXBWYWx1ZT17YWRkQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgIHJlbW92ZUNvbG9yTWFwVmFsdWU9e3JlbW92ZUNvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICByZXNldENvbG9yTWFwVmFsdWU9e3Jlc2V0Q29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPXtzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICB7IWRpc2FibGVEZWxldGUgPyAoXG4gICAgICAgICAgPERlbGV0ZUNvbG9yU3RvcCBvbkNvbG9yRGVsZXRlPXtvbkNvbG9yRGVsZXRlfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5kZWxldGV9IC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQm90dG9tQWN0aW9uID0gKHtvbkNhbmNlbCwgb25Db25maXJtfSkgPT4gKFxuICA8U3R5bGVkQnV0dG9uQ29udGFpbmVyPlxuICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiY29uZmlybS1hcHBseV9fYnV0dG9uXCIgc21hbGwgb25DbGljaz17b25Db25maXJtfT5cbiAgICAgIENvbmZpcm1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uIGxpbmsgc21hbGwgb25DbGljaz17b25DYW5jZWx9PlxuICAgICAgQ2FuY2VsXG4gICAgPC9CdXR0b24+XG4gIDwvU3R5bGVkQnV0dG9uQ29udGFpbmVyPlxuKTtcblxuY29uc3QgU3R5bGVkQ3VzdG9tUGFsZXR0ZSA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjdXN0b20tcGFsZXR0ZSdcbn0pYFxuICBtYXJnaW4tdG9wOiA4cHg7XG5gO1xuXG5mdW5jdGlvbiBDdXN0b21QYWxldHRlRmFjdG9yeSgpOiBSZWFjdC5GQzxDdXN0b21QYWxldHRlUHJvcHM+IHtcbiAgY29uc3QgQ3VzdG9tUGFsZXR0ZTogUmVhY3QuRkM8Q3VzdG9tUGFsZXR0ZVByb3BzPiA9ICh7XG4gICAgb3JkaW5hbERvbWFpbixcbiAgICBjdXN0b21QYWxldHRlLFxuICAgIHNldENvbG9yUGFsZXR0ZVVJLFxuICAgIHNob3dTa2V0Y2hlcixcbiAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgICBvbkNhbmNlbCxcbiAgICBvbkFwcGx5XG4gIH0pID0+IHtcbiAgICBjb25zdCBbaXNTb3J0aW5nLCBzZXRJc1NvcnRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHtjb2xvcnMsIGNvbG9yTWFwfSA9IGN1c3RvbVBhbGV0dGU7XG4gICAgY29uc3QgY29sb3JCcmVha3MgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgY29sb3JNYXBcbiAgICAgICAgICA/IGN1c3RvbVBhbGV0dGUudHlwZSA9PT0gJ2N1c3RvbSdcbiAgICAgICAgICAgID8gY29sb3JNYXBUb0NvbG9yQnJlYWtzKGNvbG9yTWFwKVxuICAgICAgICAgICAgOiBjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyhjb2xvck1hcClcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBbY3VzdG9tUGFsZXR0ZS50eXBlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25QaWNrZXJVcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGNvbG9yID0+IHtcbiAgICAgICAgaWYgKGNvbG9yICYmIE51bWJlci5pc0Zpbml0ZShzaG93U2tldGNoZXIpKSB7XG4gICAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvcihcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBOdW1iZXIoc2hvd1NrZXRjaGVyKSxcbiAgICAgICAgICAgIGNvbG9yLmhleFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNob3dTa2V0Y2hlciwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcbiAgICBjb25zdCBvblRvZ2dsZVNrZXRjaGVyID0gdXNlQ2FsbGJhY2soXG4gICAgICB2YWwgPT4ge1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgc2hvd1NrZXRjaGVyOiB2YWxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG4gICAgY29uc3Qgb25EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25BZGQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgLy8gYWRkIGNvbG9yIGF0IHRoZSBlbmRcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IGFkZEN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25BZGRDYXRlZ29yaWNhbFN0ZXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvbkFkZChjb2xvcnMubGVuZ3RoIC0gMSk7XG4gICAgfSwgW2NvbG9ycy5sZW5ndGgsIG9uQWRkXSk7XG5cbiAgICBjb25zdCBvblN3YXRjaENsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25Ub2dnbGVTa2V0Y2hlcihmYWxzZSk7XG4gICAgfSwgW29uVG9nZ2xlU2tldGNoZXJdKTtcblxuICAgIGNvbnN0IG9uQ29uZmlybSA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25DYW5jZWwoKTtcbiAgICAgICAgb25BcHBseShldmVudCk7XG4gICAgICB9LFxuICAgICAgW29uQ2FuY2VsLCBvbkFwcGx5XVxuICAgICk7XG5cbiAgICBjb25zdCBvblNvcnRFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAgICh7b2xkSW5kZXgsIG5ld0luZGV4fSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gc29ydEN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0SXNTb3J0aW5nKGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUksIHNldElzU29ydGluZ11cbiAgICApO1xuXG4gICAgY29uc3Qgb25Tb3J0U3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc1NvcnRpbmcodHJ1ZSk7XG4gICAgfSwgW3NldElzU29ydGluZ10pO1xuXG4gICAgY29uc3QgaW5wdXRDb2xvckhleCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGluZGV4LCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIC8vIHNldENvbG9ycyhuZXdDb2xvcnMpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IGVkaXRDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY3VzdG9tUGFsZXR0ZS5jb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2xvck1hcCA9IGN1c3RvbVBhbGV0dGUuY29sb3JNYXAubWFwKFxuICAgICAgICAgIChjbSwgaSkgPT4gKGkgPT09IGluZGV4ID8gW3ZhbHVlLCBjbVsxXV0gOiBjbSkgYXMgW3N0cmluZywgc3RyaW5nXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHNvcnQgdGhlIHVzZXIgaW5wdXRzIGluIGNhc2UgdGhlIGJyZWFrIHZhbHVlcyBhcmUgbm90IG9yZGVyZWRcbiAgICAgICAgY29uc3QgYnJlYWtzID0gbmV3Q29sb3JNYXBcbiAgICAgICAgICAubWFwKGNtID0+IGNtWzBdIGFzIHN0cmluZyB8IG51bGwpXG4gICAgICAgICAgLnNsaWNlKDAsIC0xKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYSkgLSBOdW1iZXIoYikpXG4gICAgICAgICAgLmNvbmNhdChudWxsKTtcbiAgICAgICAgY29uc3Qgc29ydGVkTmV3Q29sb3JNYXA6IENvbG9yTWFwID0gbmV3Q29sb3JNYXAubWFwKChjbSwgaSkgPT4gW2JyZWFrc1tpXSwgY21bMV1dKTtcblxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiBzb3J0ZWROZXdDb2xvck1hcFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlXVxuICAgICk7XG5cbiAgICAvLyByZW1vdmUgYSBzZWxlY3RlZCBjYXRlZ29yeSBpdGVtIGZyb20gYSBjb2xvciBtYXBcbiAgICBjb25zdCByZW1vdmVDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IHJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAoY29sb3JNYXAsIGl0ZW0sIGluZGV4KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgLy8gYWRkIHNlbGVjdGVkIGNhdGVnb3JpY2FsIGl0ZW1zIHRvIGEgY29sb3IgbWFwXG4gICAgY29uc3QgYWRkQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoaXRlbXMsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwKGNvbG9yTWFwLCBpdGVtcywgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyByZXNldCBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcCwgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyBzZWxlY3QgdGhlIHJlc3QgdmFsdWVzIGZvciBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogc2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4KGNvbG9yTWFwLCBpbmRleCwgb3JkaW5hbERvbWFpbilcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZSwgY29sb3JNYXAsIG9yZGluYWxEb21haW5dXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQ3VzdG9tUGFsZXR0ZT5cbiAgICAgICAgPFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlX19zb3J0YWJsZS1jb250YWluZXJcIlxuICAgICAgICAgIG9uU29ydEVuZD17b25Tb3J0RW5kfVxuICAgICAgICAgIG9uU29ydFN0YXJ0PXtvblNvcnRTdGFydH1cbiAgICAgICAgICBsb2NrQXhpcz1cInlcIlxuICAgICAgICAgIGhlbHBlckNsYXNzPVwic29ydGluZy1jb2xvcnNcIlxuICAgICAgICAgIHVzZURyYWdIYW5kbGVcbiAgICAgICAgPlxuICAgICAgICAgIHtjb2xvcnMubWFwKChjb2xvciwgaW5kZXgpID0+XG4gICAgICAgICAgICBjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b20nID8gKFxuICAgICAgICAgICAgICA8Q3VzdG9tUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBjb2xvckJyZWFrcz17Y29sb3JCcmVha3N9XG4gICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgIGlzU29ydGluZz17aXNTb3J0aW5nfVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICBpbnB1dENvbG9ySGV4PXtpbnB1dENvbG9ySGV4fVxuICAgICAgICAgICAgICAgIGRpc2FibGVBcHBlbmQ9e2NvbG9ycy5sZW5ndGggPj0gMjB9XG4gICAgICAgICAgICAgICAgZGlzYWJsZURlbGV0ZT17Y29sb3JzLmxlbmd0aCA8PSAyfVxuICAgICAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAgICAgICBvbkFkZD17b25BZGR9XG4gICAgICAgICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgICAgICAgIG9uVG9nZ2xlU2tldGNoZXI9e29uVG9nZ2xlU2tldGNoZXJ9XG4gICAgICAgICAgICAgICAgZWRpdENvbG9yTWFwVmFsdWU9e2VkaXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgb3JkaW5hbERvbWFpbiAmJiAoXG4gICAgICAgICAgICAgICAgPENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgY29sb3JNYXA9e2NvbG9yTWFwfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgaXNTb3J0aW5nPXtpc1NvcnRpbmd9XG4gICAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAgICAgICBvbkFkZD17b25BZGR9XG4gICAgICAgICAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRGVsZXRlPXtjb2xvcnMubGVuZ3RoIDw9IDJ9XG4gICAgICAgICAgICAgICAgICBvblRvZ2dsZVNrZXRjaGVyPXtvblRvZ2dsZVNrZXRjaGVyfVxuICAgICAgICAgICAgICAgICAgYWRkQ29sb3JNYXBWYWx1ZT17YWRkQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT17cmVtb3ZlQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgcmVzZXRDb2xvck1hcFZhbHVlPXtyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPXtzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcH1cbiAgICAgICAgICAgICAgICAgIGFsbFZhbHVlcz17b3JkaW5hbERvbWFpbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9XcmFwcGVkU29ydGFibGVDb250YWluZXI+XG4gICAgICAgIHtjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b21PcmRpbmFsJyAmJiAoXG4gICAgICAgICAgPFN0eWxlZEFkZFN0ZXBDb250YWluZXI+XG4gICAgICAgICAgICA8QWRkQ29sb3JTdG9wIG9uQ29sb3JBZGQ9e29uQWRkQ2F0ZWdvcmljYWxTdGVwfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5hZGR9IC8+XG4gICAgICAgICAgICA8QnV0dG9uIGxpbmsgc2l6ZT1cInNtYWxcIiBvbkNsaWNrPXtvbkFkZENhdGVnb3JpY2FsU3RlcH0+XG4gICAgICAgICAgICAgIEFkZCBTdGVwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1N0eWxlZEFkZFN0ZXBDb250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxEaXZpZGVyTGluZSAvPlxuICAgICAgICB7LyogQ2FuY2VsIG9yIENvbmZpcm0gQnV0dG9ucyAqL31cbiAgICAgICAgPEJvdHRvbUFjdGlvbiBvbkNhbmNlbD17b25DYW5jZWx9IG9uQ29uZmlybT17b25Db25maXJtfSAvPlxuICAgICAgICA8UG9ydGFsZWQgaXNPcGVuZWQ9e3Nob3dTa2V0Y2hlciAhPT0gZmFsc2V9IGxlZnQ9ezI4MH0gdG9wPXstMzAwfSBvbkNsb3NlPXtvblN3YXRjaENsb3NlfT5cbiAgICAgICAgICA8Q3VzdG9tUGlja2VyIGNvbG9yPXtjb2xvcnNbTnVtYmVyKHNob3dTa2V0Y2hlcildfSBvbkNoYW5nZT17b25QaWNrZXJVcGRhdGV9IC8+XG4gICAgICAgIDwvUG9ydGFsZWQ+XG4gICAgICA8L1N0eWxlZEN1c3RvbVBhbGV0dGU+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gQ3VzdG9tUGFsZXR0ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tUGFsZXR0ZUZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFTQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBSixPQUFBO0FBT0EsSUFBQUssaUJBQUEsR0FBQUgsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsYUFBQSxHQUFBUix1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksVUFBQSxHQUFBWixPQUFBO0FBRUEsSUFBQWEsTUFBQSxHQUFBYixPQUFBO0FBY0EsSUFBQWMsTUFBQSxHQUFBZCxPQUFBO0FBRUEsSUFBQWUsYUFBQSxHQUFBaEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxJQUFBZ0IsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxn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
|