@carto/kepler.gl 0.0.42 → 0.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +711 -0
  2. package/dist/components/common/field-selector.js +62 -17
  3. package/dist/components/common/field-token.js +4 -12
  4. package/dist/components/common/icons/chevron-right.js +69 -0
  5. package/dist/components/common/icons/index.js +9 -1
  6. package/dist/components/common/item-selector/dropdown-list.js +137 -21
  7. package/dist/components/common/item-selector/item-selector-submenu.js +133 -0
  8. package/dist/components/common/item-selector/item-selector.js +7 -4
  9. package/dist/components/common/item-selector/typeahead.js +16 -16
  10. package/dist/components/side-panel/layer-panel/layer-configurator.js +11 -4
  11. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +7 -3
  12. package/dist/constants/default-settings.js +33 -3
  13. package/dist/constants/index.js +7 -1
  14. package/dist/styles/base.js +4 -4
  15. package/package.json +1 -1
  16. package/src/components/common/field-selector.js +62 -21
  17. package/src/components/common/field-token.js +13 -14
  18. package/src/components/common/icons/chevron-right.js +47 -0
  19. package/src/components/common/icons/index.js +1 -0
  20. package/src/components/common/item-selector/dropdown-list.js +135 -36
  21. package/src/components/common/item-selector/item-selector-submenu.js +88 -0
  22. package/src/components/common/item-selector/item-selector.d.ts +2 -1
  23. package/src/components/common/item-selector/item-selector.js +5 -2
  24. package/src/components/common/item-selector/typeahead.js +27 -21
  25. package/src/components/side-panel/layer-panel/layer-configurator.js +17 -1
  26. package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +5 -1
  27. package/src/constants/default-settings.js +51 -0
  28. package/src/constants/index.js +2 -1
  29. package/src/styles/base.js +4 -0
  30. package/umd/keplergl.min.js +25 -25
@@ -9,10 +9,14 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = exports.ListItem = exports.classList = void 0;
11
11
 
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
+
12
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
15
 
14
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
17
 
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
16
20
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
21
 
18
22
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -31,7 +35,17 @@ var _classnames = _interopRequireDefault(require("classnames"));
31
35
 
32
36
  var _styledComponents = _interopRequireDefault(require("styled-components"));
33
37
 
34
- var _templateObject;
38
+ var _itemSelectorSubmenu = _interopRequireDefault(require("./item-selector-submenu"));
39
+
40
+ var _icons = require("../icons");
41
+
42
+ var _defaultSettings = require("../../../constants/default-settings");
43
+
44
+ var _templateObject, _templateObject2, _templateObject3;
45
+
46
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
47
+
48
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
49
 
36
50
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
51
 
@@ -69,26 +83,96 @@ var DropdownListWrapper = _styledComponents["default"].div(_templateObject || (_
69
83
  return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
70
84
  });
71
85
 
86
+ var DropdownListContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n"])));
87
+
88
+ var Item = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n padding-right: 25px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n svg {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n opacity: 0.6;\n }\n &:hover, &.hover {\n svg {\n opacity: 1;\n }\n }\n"])));
89
+
72
90
  var DropdownList = /*#__PURE__*/function (_Component) {
73
91
  (0, _inherits2["default"])(DropdownList, _Component);
74
92
 
75
93
  var _super = _createSuper(DropdownList);
76
94
 
77
95
  function DropdownList() {
96
+ var _this;
97
+
78
98
  (0, _classCallCheck2["default"])(this, DropdownList);
79
- return _super.apply(this, arguments);
99
+
100
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
101
+ args[_key] = arguments[_key];
102
+ }
103
+
104
+ _this = _super.call.apply(_super, [this].concat(args));
105
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
106
+ currentOption: {},
107
+ submenuVisible: false,
108
+ submenuPosition: {}
109
+ });
110
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "hasSubOptions", !!_this.props.subOptions);
111
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "ref", /*#__PURE__*/(0, _react.createRef)());
112
+ return _this;
80
113
  }
81
114
 
82
115
  (0, _createClass2["default"])(DropdownList, [{
116
+ key: "_resetState",
117
+ value: function _resetState(callback) {
118
+ this.setState({
119
+ currentOption: {},
120
+ submenuVisible: false,
121
+ submenuPosition: {}
122
+ }, callback);
123
+ }
124
+ }, {
83
125
  key: "_onClick",
84
- value: function _onClick(result, event) {
85
- event.preventDefault();
86
- this.props.onOptionSelected(result, event);
126
+ value: function _onClick(option, subOption, event) {
127
+ var optionSelected = (0, _typeof2["default"])(option) !== 'object' ? option : _objectSpread(_objectSpread({}, option), {}, {
128
+ selectedAggregator: subOption === null || subOption === void 0 ? void 0 : subOption.id
129
+ });
130
+
131
+ if (this.props.withSubOptions && (subOption !== null && subOption !== void 0 && subOption.id || !option.aggregators) || !this.props.withSubOptions) {
132
+ this.props.onOptionSelected(optionSelected, event);
133
+ }
134
+ }
135
+ }, {
136
+ key: "_onMouseOver",
137
+ value: function _onMouseOver(option, event) {
138
+ var _this2 = this;
139
+
140
+ var el = event.target;
141
+ this.setState(function (previousState) {
142
+ var _this2$ref$current;
143
+
144
+ return {
145
+ currentOption: option,
146
+ submenuVisible: true,
147
+ submenuPosition: {
148
+ top: el.getBoundingClientRect().top,
149
+ left: previousState.submenuPosition.left ? previousState.submenuPosition.left : (_this2$ref$current = _this2.ref.current) === null || _this2$ref$current === void 0 ? void 0 : _this2$ref$current.getBoundingClientRect().right
150
+ }
151
+ };
152
+ });
153
+ }
154
+ }, {
155
+ key: "componentDidUpdate",
156
+ value: function componentDidUpdate(prevProps) {
157
+ if (prevProps.searchEntryValue !== this.props.searchEntryValue) {
158
+ this._resetState();
159
+ }
160
+ }
161
+ }, {
162
+ key: "componentDidMount",
163
+ value: function componentDidMount() {
164
+ var _this$ref$current;
165
+
166
+ this.setState({
167
+ subMenuPosition: {
168
+ left: (_this$ref$current = this.ref.current) === null || _this$ref$current === void 0 ? void 0 : _this$ref$current.getBoundingClientRect().right
169
+ }
170
+ });
87
171
  }
88
172
  }, {
89
173
  key: "render",
90
174
  value: function render() {
91
- var _this = this;
175
+ var _this3 = this;
92
176
 
93
177
  var _this$props = this.props,
94
178
  fixedOptions = _this$props.fixedOptions,
@@ -102,46 +186,74 @@ var DropdownList = /*#__PURE__*/function (_Component) {
102
186
  var valueOffset = Array.isArray(fixedOptions) ? fixedOptions.length : 0; // For some reason onClick is not fired when clicked on an option
103
187
  // onMouseDown is used here as a workaround of #205 and other
104
188
 
105
- return /*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
189
+ return /*#__PURE__*/_react["default"].createElement(DropdownListContainer, {
190
+ onMouseLeave: function onMouseLeave() {
191
+ return _this3._resetState();
192
+ }
193
+ }, /*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
106
194
  className: classList.list,
107
195
  light: light
108
196
  }, this.props.customListHeaderComponent ? /*#__PURE__*/_react["default"].createElement("div", {
109
197
  className: classList.listHeader
110
- }, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null, valueOffset > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
198
+ }, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null, /*#__PURE__*/_react["default"].createElement("div", {
199
+ ref: this.ref
200
+ }, valueOffset > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
111
201
  className: classList.listSection
112
202
  }, fixedOptions.map(function (value, i) {
203
+ var _this3$state$currentO;
204
+
113
205
  return /*#__PURE__*/_react["default"].createElement("div", {
114
206
  className: (0, _classnames["default"])(classList.listItem, {
115
- hover: _this.props.selectionIndex === i,
207
+ active: _this3.props.selectionIndex === i,
208
+ hover: value.id && ((_this3$state$currentO = _this3.state.currentOption) === null || _this3$state$currentO === void 0 ? void 0 : _this3$state$currentO.id) === value.id,
116
209
  fixed: true
117
210
  }),
118
211
  key: "".concat(display(value), "_").concat(i),
119
212
  onMouseDown: function onMouseDown(e) {
120
- return _this._onClick(value, e);
213
+ return !_this3.hasSubOptions && _this3._onClick(value, null, e);
121
214
  },
122
215
  onClick: function onClick(e) {
123
- return _this._onClick(value, e);
216
+ return !_this3.hasSubOptions && _this3._onClick(value, null, e);
217
+ },
218
+ onMouseEnter: function onMouseEnter(e) {
219
+ return _this3._onMouseOver(value, e);
124
220
  }
125
- }, /*#__PURE__*/_react["default"].createElement(_this.props.customListItemComponent, {
221
+ }, /*#__PURE__*/_react["default"].createElement(_this3.props.customListItemComponent, {
126
222
  value: value,
127
223
  displayOption: display
128
224
  }));
129
225
  })) : null, this.props.options.map(function (value, i) {
130
- return /*#__PURE__*/_react["default"].createElement("div", {
226
+ var _this3$state$currentO2;
227
+
228
+ return /*#__PURE__*/_react["default"].createElement(Item, {
131
229
  className: (0, _classnames["default"])(classList.listItem, {
132
- hover: _this.props.selectionIndex === i + valueOffset
230
+ active: _this3.props.selectionIndex === i + valueOffset,
231
+ hover: value.id && ((_this3$state$currentO2 = _this3.state.currentOption) === null || _this3$state$currentO2 === void 0 ? void 0 : _this3$state$currentO2.id) === value.id
133
232
  }),
134
233
  key: "".concat(display(value), "_").concat(i),
135
234
  onMouseDown: function onMouseDown(e) {
136
- return _this._onClick(value, e);
235
+ return !_this3.hasSubOptions && _this3._onClick(value, null, e);
137
236
  },
138
237
  onClick: function onClick(e) {
139
- return _this._onClick(value, e);
238
+ return !_this3.hasSubOptions && _this3._onClick(value, null, e);
239
+ },
240
+ onMouseEnter: function onMouseEnter(e) {
241
+ return _this3._onMouseOver(value, e);
140
242
  }
141
- }, /*#__PURE__*/_react["default"].createElement(_this.props.customListItemComponent, {
243
+ }, /*#__PURE__*/_react["default"].createElement(_this3.props.customListItemComponent, {
142
244
  value: value,
143
245
  displayOption: display
144
- }));
246
+ }), _this3.props.withSubOptions && value.aggregators && /*#__PURE__*/_react["default"].createElement(_icons.ChevronRight, null));
247
+ }))), this.props.withSubOptions && this.state.currentOption && this.state.currentOption.aggregators && /*#__PURE__*/_react["default"].createElement(_itemSelectorSubmenu["default"], {
248
+ position: this.state.submenuPosition,
249
+ options: this.state.currentOption.aggregators.map(function (a) {
250
+ return _defaultSettings.FIELD_AGGREGATORS.find(function (am) {
251
+ return am.id === a;
252
+ });
253
+ }),
254
+ onClick: function onClick(aggregator, e) {
255
+ return _this3._onClick(_this3.state.currentOption, aggregator, e);
256
+ }
145
257
  }));
146
258
  }
147
259
  }]);
@@ -151,6 +263,7 @@ var DropdownList = /*#__PURE__*/function (_Component) {
151
263
  exports["default"] = DropdownList;
152
264
  (0, _defineProperty2["default"])(DropdownList, "propTypes", {
153
265
  options: _propTypes["default"].arrayOf(_propTypes["default"].any),
266
+ subOptions: _propTypes["default"].arrayOf(_propTypes["default"].any),
154
267
  allowCustomValues: _propTypes["default"].number,
155
268
  customClasses: _propTypes["default"].object,
156
269
  customValues: _propTypes["default"].arrayOf(_propTypes["default"].any),
@@ -162,7 +275,9 @@ exports["default"] = DropdownList;
162
275
  defaultClassNames: _propTypes["default"].bool,
163
276
  areResultsTruncated: _propTypes["default"].bool,
164
277
  resultsTruncatedMessage: _propTypes["default"].string,
165
- listItemComponent: _propTypes["default"].func
278
+ listItemComponent: _propTypes["default"].func,
279
+ searchEntryValue: _propTypes["default"].string,
280
+ withSubOptions: _propTypes["default"].bool
166
281
  });
167
282
  (0, _defineProperty2["default"])(DropdownList, "defaultProps", {
168
283
  customClasses: {},
@@ -173,6 +288,7 @@ exports["default"] = DropdownList;
173
288
  displayOption: defaultDisplay,
174
289
  onOptionSelected: function onOptionSelected() {},
175
290
  defaultClassNames: true,
176
- selectionIndex: null
291
+ selectionIndex: null,
292
+ withSubOptions: false
177
293
  });
178
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QuanMiXSwibmFtZXMiOlsiY2xhc3NMaXN0IiwibGlzdCIsImxpc3RIZWFkZXIiLCJsaXN0U2VjdGlvbiIsImxpc3RJdGVtIiwibGlzdEl0ZW1BbmNob3IiLCJkZWZhdWx0RGlzcGxheSIsImQiLCJMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcExUIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiZHJvcGRvd25MaXN0TFQiLCJkcm9wZG93bkxpc3QiLCJEcm9wZG93bkxpc3QiLCJyZXN1bHQiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwib25PcHRpb25TZWxlY3RlZCIsImZpeGVkT3B0aW9ucyIsImRpc3BsYXkiLCJvcHRpb25zIiwibGVuZ3RoIiwiYWxsb3dDdXN0b21WYWx1ZXMiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJtYXAiLCJpIiwiaG92ZXIiLCJzZWxlY3Rpb25JbmRleCIsImZpeGVkIiwiZSIsIl9vbkNsaWNrIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYXJyYXlPZiIsImFueSIsIm51bWJlciIsImN1c3RvbUNsYXNzZXMiLCJvYmplY3QiLCJjdXN0b21WYWx1ZXMiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIm9uZU9mVHlwZSIsImVsZW1lbnQiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImRlZmF1bHRDbGFzc05hbWVzIiwiYm9vbCIsImFyZVJlc3VsdHNUcnVuY2F0ZWQiLCJyZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZSIsInN0cmlu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QUFFZCxzQkFBVWEsSUFYZDtBQVlqQkUsRUFBQUEsdUJBQXVCLEVBQUVmLHNCQUFVZ0IsTUFabEI7QUFhakJDLEVBQUFBLGlCQUFpQixFQUFFakIsc0JBQVVVO0FBYlosQztpQ0FEQWhDLFksa0JBaUJHO0FBQ3BCMEIsRUFBQUEsYUFBYSxFQUFFLEVBREs7QUFFcEJHLEVBQUFBLHVCQUF1QixFQUFFNUMsUUFGTDtBQUdwQjRCLEVBQUFBLHlCQUF5QixFQUFFLElBSFA7QUFJcEJKLEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEJtQixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQnpDLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQnFCLEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQjhCLEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEJqQixFQUFBQSxjQUFjLEVBQUU7QUFUSSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheX0pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEl0ZW1BbmNob3J9PntkaXNwbGF5T3B0aW9uKHZhbHVlKX08L3NwYW4+XG4pO1xuXG5jb25zdCBEcm9wZG93bkxpc3RXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3JkZXItdG9wOiAxcHggc29saWRcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdCl9O1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25MaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBjdXN0b21DbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGN1c3RvbVZhbHVlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIHNlbGVjdGlvbkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGRpc3BsYXlPcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IFByb3BUeXBlcy5ib29sLFxuICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGxpc3RJdGVtQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuY1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY3VzdG9tQ2xhc3Nlczoge30sXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IDAsXG4gICAgY3VzdG9tVmFsdWVzOiBbXSxcbiAgICBkaXNwbGF5T3B0aW9uOiBkZWZhdWx0RGlzcGxheSxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiAoKSA9PiB7fSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICB9O1xuXG4gIF9vbkNsaWNrKHJlc3VsdCwgZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZChyZXN1bHQsIGV2ZW50KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Zml4ZWRPcHRpb25zLCBsaWdodH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGRpc3BsYXkgPSB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb247XG5cbiAgICAvLyBEb24ndCByZW5kZXIgaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheVxuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zLmxlbmd0aCAmJiB0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzIDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZU9mZnNldCA9IEFycmF5LmlzQXJyYXkoZml4ZWRPcHRpb25zKSA/IGZpeGVkT3B0aW9ucy5sZW5ndGggOiAwO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVhc29uIG9uQ2xpY2sgaXMgbm90IGZpcmVkIHdoZW4gY2xpY2tlZCBvbiBhbiBvcHRpb25cbiAgICAvLyBvbk1vdXNlRG93biBpcyB1c2VkIGhlcmUgYXMgYSB3b3JrYXJvdW5kIG9mICMyMDUgYW5kIG90aGVyXG4gICAgcmV0dXJuIChcbiAgICAgIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9IGxpZ2h0PXtsaWdodH0+XG4gICAgICAgIHt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0SGVhZGVyfT5cbiAgICAgICAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAge3ZhbHVlT2Zmc2V0ID4gMCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RTZWN0aW9ufT5cbiAgICAgICAgICAgIHtmaXhlZE9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGksXG4gICAgICAgICAgICAgICAgICBmaXhlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGkgKyB2YWx1ZU9mZnNldFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QuanMiXSwibmFtZXMiOlsiY2xhc3NMaXN0IiwibGlzdCIsImxpc3RIZWFkZXIiLCJsaXN0U2VjdGlvbiIsImxpc3RJdGVtIiwibGlzdEl0ZW1BbmNob3IiLCJkZWZhdWx0RGlzcGxheSIsImQiLCJMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcExUIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiZHJvcGRvd25MaXN0TFQiLCJkcm9wZG93bkxpc3QiLCJEcm9wZG93bkxpc3RDb250YWluZXIiLCJJdGVtIiwiRHJvcGRvd25MaXN0IiwiY3VycmVudE9wdGlvbiIsInN1Ym1lbnVWaXNpYmxlIiwic3VibWVudVBvc2l0aW9uIiwic3ViT3B0aW9ucyIsImNhbGxiYWNrIiwic2V0U3RhdGUiLCJvcHRpb24iLCJzdWJPcHRpb24iLCJldmVudCIsIm9wdGlvblNlbGVjdGVkIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwiaWQiLCJ3aXRoU3ViT3B0aW9ucyIsImFnZ3JlZ2F0b3JzIiwib25PcHRpb25TZWxlY3RlZCIsImVsIiwidGFyZ2V0IiwicHJldmlvdXNTdGF0ZSIsInRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJyZWYiLCJjdXJyZW50IiwicmlnaHQiLCJwcmV2UHJvcHMiLCJzZWFyY2hFbnRyeVZhbHVlIiwiX3Jlc2V0U3RhdGUiLCJzdWJNZW51UG9zaXRpb24iLCJmaXhlZE9wdGlvbnMiLCJkaXNwbGF5Iiwib3B0aW9ucyIsImxlbmd0aCIsImFsbG93Q3VzdG9tVmFsdWVzIiwidmFsdWVPZmZzZXQiLCJBcnJheSIsImlzQXJyYXkiLCJjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IiwibWFwIiwiaSIsImFjdGl2ZSIsInNlbGVjdGlvbkluZGV4IiwiaG92ZXIiLCJzdGF0ZSIsImZpeGVkIiwiZSIsImhhc1N1Yk9wdGlvbnMiLCJfb25DbGljayIsIl9vbk1vdXNlT3ZlciIsImEiLCJGSUVMRF9BR0dSRUdBVE9SUyIsImZpbmQiLCJhbSIsImFnZ3JlZ2F0b3IiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwiYW55IiwibnVtYmVyIiwiY3VzdG9tQ2xhc3NlcyIsIm9iamVjdCIsImN1c3RvbVZhbHVlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50Iiwib25lT2ZUeXBlIiwiZWxlbWVudCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiZGVmYXVsdENsYXNzTmFtZXMiLCJib29sIiwiYXJlUmVzdWx0c1RydW5jYXRlZCIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwic3RyaW5nIiwibGlzdEl0ZW1Db21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFDdkJDLEVBQUFBLElBQUksRUFBRSxlQURpQjtBQUV2QkMsRUFBQUEsVUFBVSxFQUFFLGNBRlc7QUFHdkJDLEVBQUFBLFdBQVcsRUFBRSxlQUhVO0FBSXZCQyxFQUFBQSxRQUFRLEVBQUUsWUFKYTtBQUt2QkMsRUFBQUEsY0FBYyxFQUFFO0FBTE8sQ0FBbEI7OztBQVFQLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUo7QUFBQSxDQUF4Qjs7QUFDTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVztBQUFBLE1BQUVDLEtBQUYsUUFBRUEsS0FBRjtBQUFBLGdDQUFTQyxhQUFUO0FBQUEsTUFBU0EsYUFBVCxtQ0FBeUJKLGNBQXpCO0FBQUEsc0JBQ3RCO0FBQU0sSUFBQSxTQUFTLEVBQUVOLFNBQVMsQ0FBQ0s7QUFBM0IsS0FBNENLLGFBQWEsQ0FBQ0QsS0FBRCxDQUF6RCxDQURzQjtBQUFBLENBQWpCOzs7O0FBSVAsSUFBTUUsbUJBQW1CLEdBQUdDLDZCQUFPQyxHQUFWLGlLQUNILFVBQUFDLEtBQUs7QUFBQSxTQUN2QkEsS0FBSyxDQUFDQyxLQUFOLEdBQWNELEtBQUssQ0FBQ0UsS0FBTixDQUFZQyxpQkFBMUIsR0FBOENILEtBQUssQ0FBQ0UsS0FBTixDQUFZRSxlQURuQztBQUFBLENBREYsRUFJbkIsVUFBQUosS0FBSztBQUFBLFNBQ0xBLEtBQUssQ0FBQ0MsS0FBTixHQUFjRCxLQUFLLENBQUNFLEtBQU4sQ0FBWUcsdUJBQTFCLEdBQW9ETCxLQUFLLENBQUNFLEtBQU4sQ0FBWUkscUJBRDNEO0FBQUEsQ0FKYyxFQU1yQixVQUFBTixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDQyxLQUFOLEdBQWNELEtBQUssQ0FBQ0UsS0FBTixDQUFZSyxjQUExQixHQUEyQ1AsS0FBSyxDQUFDRSxLQUFOLENBQVlNLFlBQTVEO0FBQUEsQ0FOZ0IsQ0FBekI7O0FBU0EsSUFBTUMscUJBQXFCLEdBQUdYLDZCQUFPQyxHQUFWLGlIQUEzQjs7QUFJQSxJQUFNVyxJQUFJLEdBQUdaLDZCQUFPQyxHQUFWLGdaQUFWOztJQW9CcUJZLFk7Ozs7Ozs7Ozs7Ozs7Ozs4RkFpQ1g7QUFDTkMsTUFBQUEsYUFBYSxFQUFFLEVBRFQ7QUFFTkMsTUFBQUEsY0FBYyxFQUFFLEtBRlY7QUFHTkMsTUFBQUEsZUFBZSxFQUFFO0FBSFgsSztzR0FNUSxDQUFDLENBQUMsTUFBS2QsS0FBTCxDQUFXZSxVO3lHQUV2Qix1Qjs7Ozs7O1dBRU4scUJBQVlDLFFBQVosRUFBc0I7QUFDcEIsV0FBS0MsUUFBTCxDQUFjO0FBQUNMLFFBQUFBLGFBQWEsRUFBRSxFQUFoQjtBQUFvQkMsUUFBQUEsY0FBYyxFQUFFLEtBQXBDO0FBQTJDQyxRQUFBQSxlQUFlLEVBQUU7QUFBNUQsT0FBZCxFQUErRUUsUUFBL0U7QUFDRDs7O1dBRUQsa0JBQVNFLE1BQVQsRUFBaUJDLFNBQWpCLEVBQTRCQyxLQUE1QixFQUFtQztBQUNqQyxVQUFNQyxjQUFjLEdBQ2xCLHlCQUFPSCxNQUFQLE1BQWtCLFFBQWxCLEdBQ0lBLE1BREosbUNBR1NBLE1BSFQ7QUFJTUksUUFBQUEsa0JBQWtCLEVBQUVILFNBQUYsYUFBRUEsU0FBRix1QkFBRUEsU0FBUyxDQUFFSTtBQUpyQyxRQURGOztBQU9BLFVBQ0csS0FBS3ZCLEtBQUwsQ0FBV3dCLGNBQVgsS0FBOEJMLFNBQVMsU0FBVCxJQUFBQSxTQUFTLFdBQVQsSUFBQUEsU0FBUyxDQUFFSSxFQUFYLElBQWlCLENBQUNMLE1BQU0sQ0FBQ08sV0FBdkQsQ0FBRCxJQUNBLENBQUMsS0FBS3pCLEtBQUwsQ0FBV3dCLGNBRmQsRUFHRTtBQUNBLGFBQUt4QixLQUFMLENBQVcwQixnQkFBWCxDQUE0QkwsY0FBNUIsRUFBNENELEtBQTVDO0FBQ0Q7QUFDRjs7O1dBRUQsc0JBQWFGLE1BQWIsRUFBcUJFLEtBQXJCLEVBQTRCO0FBQUE7O0FBQzFCLFVBQU1PLEVBQUUsR0FBR1AsS0FBSyxDQUFDUSxNQUFqQjtBQUNBLFdBQUtYLFFBQUwsQ0FBYyxVQUFDWSxhQUFEO0FBQUE7O0FBQUEsZUFBb0I7QUFDaENqQixVQUFBQSxhQUFhLEVBQUVNLE1BRGlCO0FBRWhDTCxVQUFBQSxjQUFjLEVBQUUsSUFGZ0I7QUFHaENDLFVBQUFBLGVBQWUsRUFBRTtBQUNmZ0IsWUFBQUEsR0FBRyxFQUFFSCxFQUFFLENBQUNJLHFCQUFILEdBQTJCRCxHQURqQjtBQUVmRSxZQUFBQSxJQUFJLEVBQUVILGFBQWEsQ0FBQ2YsZUFBZCxDQUE4QmtCLElBQTlCLEdBQW9DSCxhQUFhLENBQUNmLGVBQWQsQ0FBOEJrQixJQUFsRSx5QkFBeUUsTUFBSSxDQUFDQyxHQUFMLENBQVNDLE9BQWxGLHVEQUF5RSxtQkFBa0JILHFCQUFsQixHQUEwQ0k7QUFGMUc7QUFIZSxTQUFwQjtBQUFBLE9BQWQ7QUFRRDs7O1dBRUQsNEJBQW1CQyxTQUFuQixFQUE4QjtBQUM1QixVQUFJQSxTQUFTLENBQUNDLGdCQUFWLEtBQStCLEtBQUtyQyxLQUFMLENBQVdxQyxnQkFBOUMsRUFBZ0U7QUFDOUQsYUFBS0MsV0FBTDtBQUNEO0FBQ0Y7OztXQUVELDZCQUFvQjtBQUFBOztBQUNsQixXQUFLckIsUUFBTCxDQUFjO0FBQ1pzQixRQUFBQSxlQUFlLEVBQUU7QUFBRVAsVUFBQUEsSUFBSSx1QkFBRSxLQUFLQyxHQUFMLENBQVNDLE9BQVgsc0RBQUUsa0JBQWtCSCxxQkFBbEIsR0FBMENJO0FBQWxEO0FBREwsT0FBZDtBQUdEOzs7V0FFRCxrQkFBUztBQUFBOztBQUFBLHdCQUN1QixLQUFLbkMsS0FENUI7QUFBQSxVQUNBd0MsWUFEQSxlQUNBQSxZQURBO0FBQUEsVUFDY3ZDLEtBRGQsZUFDY0EsS0FEZDtBQUVQLFVBQU13QyxPQUFPLEdBQUcsS0FBS3pDLEtBQUwsQ0FBV0osYUFBM0IsQ0FGTyxDQUlQOztBQUNBLFVBQUksQ0FBQyxLQUFLSSxLQUFMLENBQVcwQyxPQUFYLENBQW1CQyxNQUFwQixJQUE4QixLQUFLM0MsS0FBTCxDQUFXNEMsaUJBQVgsSUFBZ0MsQ0FBbEUsRUFBcUU7QUFDbkUsZUFBTyxLQUFQO0FBQ0Q7O0FBRUQsVUFBTUMsV0FBVyxHQUFHQyxLQUFLLENBQUNDLE9BQU4sQ0FBY1AsWUFBZCxJQUE4QkEsWUFBWSxDQUFDRyxNQUEzQyxHQUFvRCxDQUF4RSxDQVRPLENBV1A7QUFDQTs7QUFDQSwwQkFDRSxnQ0FBQyxxQkFBRDtBQUF1QixRQUFBLFlBQVksRUFBRTtBQUFBLGlCQUFNLE1BQUksQ0FBQ0wsV0FBTCxFQUFOO0FBQUE7QUFBckMsc0JBQ0UsZ0NBQUMsbUJBQUQ7QUFBcUIsUUFBQSxTQUFTLEVBQUVwRCxTQUFTLENBQUNDLElBQTFDO0FBQWdELFFBQUEsS0FBSyxFQUFFYztBQUF2RCxTQUNHLEtBQUtELEtBQUwsQ0FBV2dELHlCQUFYLGdCQUNDO0FBQUssUUFBQSxTQUFTLEVBQUU5RCxTQUFTLENBQUNFO0FBQTFCLHNCQUNFLHFDQUFNLEtBQU4sQ0FBWSx5QkFBWixPQURGLENBREQsR0FJRyxJQUxOLGVBTUU7QUFBSyxRQUFBLEdBQUcsRUFBRSxLQUFLNkM7QUFBZixTQUNHWSxXQUFXLEdBQUcsQ0FBZCxnQkFDQztBQUFLLFFBQUEsU0FBUyxFQUFFM0QsU0FBUyxDQUFDRztBQUExQixTQUNHbUQsWUFBWSxDQUFDUyxHQUFiLENBQWlCLFVBQUN0RCxLQUFELEVBQVF1RCxDQUFSO0FBQUE7O0FBQUEsNEJBQ2hCO0FBQ0UsVUFBQSxTQUFTLEVBQUUsNEJBQVdoRSxTQUFTLENBQUNJLFFBQXJCLEVBQStCO0FBQ3hDNkQsWUFBQUEsTUFBTSxFQUFFLE1BQUksQ0FBQ25ELEtBQUwsQ0FBV29ELGNBQVgsS0FBOEJGLENBREU7QUFFeENHLFlBQUFBLEtBQUssRUFBRTFELEtBQUssQ0FBQzRCLEVBQU4sSUFBYSwwQkFBQSxNQUFJLENBQUMrQixLQUFMLENBQVcxQyxhQUFYLGdGQUEwQlcsRUFBMUIsTUFBaUM1QixLQUFLLENBQUM0QixFQUZuQjtBQUd4Q2dDLFlBQUFBLEtBQUssRUFBRTtBQUhpQyxXQUEvQixDQURiO0FBTUUsVUFBQSxHQUFHLFlBQUtkLE9BQU8sQ0FBQzlDLEtBQUQsQ0FBWixjQUF1QnVELENBQXZCLENBTkw7QUFPRSxVQUFBLFdBQVcsRUFBRSxxQkFBQU0sQ0FBQztBQUFBLG1CQUFJLENBQUMsTUFBSSxDQUFDQyxhQUFOLElBQXVCLE1BQUksQ0FBQ0MsUUFBTCxDQUFjL0QsS0FBZCxFQUFxQixJQUFyQixFQUEyQjZELENBQTNCLENBQTNCO0FBQUEsV0FQaEI7QUFRRSxVQUFBLE9BQU8sRUFBRSxpQkFBQUEsQ0FBQztBQUFBLG1CQUFJLENBQUMsTUFBSSxDQUFDQyxhQUFOLElBQXVCLE1BQUksQ0FBQ0MsUUFBTCxDQUFjL0QsS0FBZCxFQUFxQixJQUFyQixFQUEyQjZELENBQTNCLENBQTNCO0FBQUEsV0FSWjtBQVNFLFVBQUEsWUFBWSxFQUFFLHNCQUFBQSxDQUFDO0FBQUEsbUJBQUksTUFBSSxDQUFDRyxZQUFMLENBQWtCaEUsS0FBbEIsRUFBeUI2RCxDQUF6QixDQUFKO0FBQUE7QUFUakIsd0JBV0UsZ0NBQUMsTUFBRCxDQUFNLEtBQU4sQ0FBWSx1QkFBWjtBQUFvQyxVQUFBLEtBQUssRUFBRTdELEtBQTNDO0FBQWtELFVBQUEsYUFBYSxFQUFFOEM7QUFBakUsVUFYRixDQURnQjtBQUFBLE9BQWpCLENBREgsQ0FERCxHQWtCRyxJQW5CTixFQXFCRyxLQUFLekMsS0FBTCxDQUFXMEMsT0FBWCxDQUFtQk8sR0FBbkIsQ0FBdUIsVUFBQ3RELEtBQUQsRUFBUXVELENBQVI7QUFBQTs7QUFBQSw0QkFDdEIsZ0NBQUMsSUFBRDtBQUNFLFVBQUEsU0FBUyxFQUFFLDRCQUFXaEUsU0FBUyxDQUFDSSxRQUFyQixFQUErQjtBQUN4QzZELFlBQUFBLE1BQU0sRUFBRSxNQUFJLENBQUNuRCxLQUFMLENBQVdvRCxjQUFYLEtBQThCRixDQUFDLEdBQUdMLFdBREY7QUFFeENRLFlBQUFBLEtBQUssRUFBRTFELEtBQUssQ0FBQzRCLEVBQU4sSUFBYSwyQkFBQSxNQUFJLENBQUMrQixLQUFMLENBQVcxQyxhQUFYLGtGQUEwQlcsRUFBMUIsTUFBaUM1QixLQUFLLENBQUM0QjtBQUZuQixXQUEvQixDQURiO0FBS0UsVUFBQSxHQUFHLFlBQUtrQixPQUFPLENBQUM5QyxLQUFELENBQVosY0FBdUJ1RCxDQUF2QixDQUxMO0FBTUUsVUFBQSxXQUFXLEVBQUUscUJBQUFNLENBQUM7QUFBQSxtQkFBSSxDQUFDLE1BQUksQ0FBQ0MsYUFBTixJQUF1QixNQUFJLENBQUNDLFFBQUwsQ0FBYy9ELEtBQWQsRUFBcUIsSUFBckIsRUFBMkI2RCxDQUEzQixDQUEzQjtBQUFBLFdBTmhCO0FBT0UsVUFBQSxPQUFPLEVBQUUsaUJBQUFBLENBQUM7QUFBQSxtQkFBSSxDQUFDLE1BQUksQ0FBQ0MsYUFBTixJQUF1QixNQUFJLENBQUNDLFFBQUwsQ0FBYy9ELEtBQWQsRUFBcUIsSUFBckIsRUFBMkI2RCxDQUEzQixDQUEzQjtBQUFBLFdBUFo7QUFRRSxVQUFBLFlBQVksRUFBRSxzQkFBQUEsQ0FBQztBQUFBLG1CQUFJLE1BQUksQ0FBQ0csWUFBTCxDQUFrQmhFLEtBQWxCLEVBQXlCNkQsQ0FBekIsQ0FBSjtBQUFBO0FBUmpCLHdCQVVFLGdDQUFDLE1BQUQsQ0FBTSxLQUFOLENBQVksdUJBQVo7QUFBb0MsVUFBQSxLQUFLLEVBQUU3RCxLQUEzQztBQUFrRCxVQUFBLGFBQWEsRUFBRThDO0FBQWpFLFVBVkYsRUFXRyxNQUFJLENBQUN6QyxLQUFMLENBQVd3QixjQUFYLElBQTZCN0IsS0FBSyxDQUFDOEIsV0FBbkMsaUJBQWtELGdDQUFDLG1CQUFELE9BWHJELENBRHNCO0FBQUEsT0FBdkIsQ0FyQkgsQ0FORixDQURGLEVBNkNHLEtBQUt6QixLQUFMLENBQVd3QixjQUFYLElBQ0MsS0FBSzhCLEtBQUwsQ0FBVzFDLGFBRFosSUFFQyxLQUFLMEMsS0FBTCxDQUFXMUMsYUFBWCxDQUF5QmEsV0FGMUIsaUJBR0csZ0NBQUMsK0JBQUQ7QUFDRSxRQUFBLFFBQVEsRUFBRSxLQUFLNkIsS0FBTCxDQUFXeEMsZUFEdkI7QUFFRSxRQUFBLE9BQU8sRUFBRSxLQUFLd0MsS0FBTCxDQUFXMUMsYUFBWCxDQUF5QmEsV0FBekIsQ0FBcUN3QixHQUFyQyxDQUF5QyxVQUFBVyxDQUFDO0FBQUEsaUJBQ2pEQyxtQ0FBa0JDLElBQWxCLENBQXVCLFVBQUFDLEVBQUU7QUFBQSxtQkFBSUEsRUFBRSxDQUFDeEMsRUFBSCxLQUFVcUMsQ0FBZDtBQUFBLFdBQXpCLENBRGlEO0FBQUEsU0FBMUMsQ0FGWDtBQUtFLFFBQUEsT0FBTyxFQUFFLGlCQUFDSSxVQUFELEVBQWFSLENBQWI7QUFBQSxpQkFBbUIsTUFBSSxDQUFDRSxRQUFMLENBQWMsTUFBSSxDQUFDSixLQUFMLENBQVcxQyxhQUF6QixFQUF3Q29ELFVBQXhDLEVBQW9EUixDQUFwRCxDQUFuQjtBQUFBO0FBTFgsUUFoRE4sQ0FERjtBQTJERDs7O0VBL0p1Q1MsZ0I7OztpQ0FBckJ0RCxZLGVBQ0E7QUFDakIrQixFQUFBQSxPQUFPLEVBQUV3QixzQkFBVUMsT0FBVixDQUFrQkQsc0JBQVVFLEdBQTVCLENBRFE7QUFFakJyRCxFQUFBQSxVQUFVLEVBQUVtRCxzQkFBVUMsT0FBVixDQUFrQkQsc0JBQVVFLEdBQTVCLENBRks7QUFHakJ4QixFQUFBQSxpQkFBaUIsRUFBRXNCLHNCQUFVRyxNQUhaO0FBSWpCQyxFQUFBQSxhQUFhLEVBQUVKLHNCQUFVSyxNQUpSO0FBS2pCQyxFQUFBQSxZQUFZLEVBQUVOLHNCQUFVQyxPQUFWLENBQWtCRCxzQkFBVUUsR0FBNUIsQ0FMRztBQU1qQkssRUFBQUEsdUJBQXVCLEVBQUVQLHNCQUFVUSxTQUFWLENBQW9CLENBQUNSLHNCQUFVUyxPQUFYLEVBQW9CVCxzQkFBVVUsSUFBOUIsQ0FBcEIsQ0FOUjtBQU9qQjVCLEVBQUFBLHlCQUF5QixFQUFFa0Isc0JBQVVRLFNBQVYsQ0FBb0IsQ0FBQ1Isc0JBQVVTLE9BQVgsRUFBb0JULHNCQUFVVSxJQUE5QixDQUFwQixDQVBWO0FBUWpCeEIsRUFBQUEsY0FBYyxFQUFFYyxzQkFBVUcsTUFSVDtBQVNqQjNDLEVBQUFBLGdCQUFnQixFQUFFd0Msc0JBQVVVLElBVFg7QUFVakJoRixFQUFBQSxhQUFhLEVBQUVzRSxzQkFBVVUsSUFBVixDQUFlQyxVQVZiO0FBV2pCQyxFQUFBQSxpQkFBaUIsRUFBRVosc0JBQVVhLElBWFo7QUFZakJDLEVBQUFBLG1CQUFtQixFQUFFZCxzQkFBVWEsSUFaZDtBQWFqQkUsRUFBQUEsdUJBQXVCLEVBQUVmLHNCQUFVZ0IsTUFibEI7QUFjakJDLEVBQUFBLGlCQUFpQixFQUFFakIsc0JBQVVVLElBZFo7QUFlakJ2QyxFQUFBQSxnQkFBZ0IsRUFBRTZCLHNCQUFVZ0IsTUFmWDtBQWdCakIxRCxFQUFBQSxjQUFjLEVBQUUwQyxzQkFBVWE7QUFoQlQsQztpQ0FEQXBFLFksa0JBb0JHO0FBQ3BCMkQsRUFBQUEsYUFBYSxFQUFFLEVBREs7QUFFcEJHLEVBQUFBLHVCQUF1QixFQUFFL0UsUUFGTDtBQUdwQnNELEVBQUFBLHlCQUF5QixFQUFFLElBSFA7QUFJcEJKLEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEI0QixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQjVFLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQmtDLEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQm9ELEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEIxQixFQUFBQSxjQUFjLEVBQUUsSUFUSTtBQVVwQjVCLEVBQUFBLGNBQWMsRUFBRTtBQVZJLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgSXRlbVNlbGVjdG9yU3VibWVudSBmcm9tICcuL2l0ZW0tc2VsZWN0b3Itc3VibWVudSc7XG5pbXBvcnQge0NoZXZyb25SaWdodH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtGSUVMRF9BR0dSRUdBVE9SU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5leHBvcnQgY29uc3QgY2xhc3NMaXN0ID0ge1xuICBsaXN0OiAnbGlzdC1zZWxlY3RvcicsXG4gIGxpc3RIZWFkZXI6ICdsaXN0X19oZWFkZXInLFxuICBsaXN0U2VjdGlvbjogJ2xpc3RfX3NlY3Rpb24nLFxuICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICBsaXN0SXRlbUFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbn07XG5cbmNvbnN0IGRlZmF1bHREaXNwbGF5ID0gZCA9PiBkO1xuZXhwb3J0IGNvbnN0IExpc3RJdGVtID0gKHt2YWx1ZSwgZGlzcGxheU9wdGlvbiA9IGRlZmF1bHREaXNwbGF5fSkgPT4gKFxuICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0SXRlbUFuY2hvcn0+e2Rpc3BsYXlPcHRpb24odmFsdWUpfTwvc3Bhbj5cbik7XG5cbmNvbnN0IERyb3Bkb3duTGlzdFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZH07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuICAke3Byb3BzID0+IChwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0KX07XG5gO1xuXG5jb25zdCBEcm9wZG93bkxpc3RDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBJdGVtID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHN2ZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gIH1cbiAgJjpob3ZlciwgJi5ob3ZlciB7XG4gICAgc3ZnIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcm9wZG93bkxpc3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIHN1Yk9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGN1c3RvbUNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgc2VsZWN0aW9uSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb25PcHRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogUHJvcFR5cGVzLmJvb2wsXG4gICAgYXJlUmVzdWx0c1RydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGlzdEl0ZW1Db21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNlYXJjaEVudHJ5VmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjdXN0b21DbGFzc2VzOiB7fSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogTGlzdEl0ZW0sXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogMCxcbiAgICBjdXN0b21WYWx1ZXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IGRlZmF1bHREaXNwbGF5LFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6ICgpID0+IHt9LFxuICAgIGRlZmF1bHRDbGFzc05hbWVzOiB0cnVlLFxuICAgIHNlbGVjdGlvbkluZGV4OiBudWxsLFxuICAgIHdpdGhTdWJPcHRpb25zOiBmYWxzZVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGN1cnJlbnRPcHRpb246IHt9LFxuICAgIHN1Ym1lbnVWaXNpYmxlOiBmYWxzZSxcbiAgICBzdWJtZW51UG9zaXRpb246IHt9XG4gIH07XG5cbiAgaGFzU3ViT3B0aW9ucyA9ICEhdGhpcy5wcm9wcy5zdWJPcHRpb25zXG5cbiAgcmVmID0gY3JlYXRlUmVmKCk7XG5cbiAgX3Jlc2V0U3RhdGUoY2FsbGJhY2spIHtcbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50T3B0aW9uOiB7fSwgc3VibWVudVZpc2libGU6IGZhbHNlLCBzdWJtZW51UG9zaXRpb246IHt9fSwgY2FsbGJhY2spO1xuICB9XG5cbiAgX29uQ2xpY2sob3B0aW9uLCBzdWJPcHRpb24sIGV2ZW50KSB7XG4gICAgY29uc3Qgb3B0aW9uU2VsZWN0ZWQgPVxuICAgICAgdHlwZW9mIG9wdGlvbiAhPT0gJ29iamVjdCdcbiAgICAgICAgPyBvcHRpb25cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgICAgICBzZWxlY3RlZEFnZ3JlZ2F0b3I6IHN1Yk9wdGlvbj8uaWRcbiAgICAgICAgICB9O1xuICAgIGlmIChcbiAgICAgICh0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmIChzdWJPcHRpb24/LmlkIHx8ICFvcHRpb24uYWdncmVnYXRvcnMpKSB8fFxuICAgICAgIXRoaXMucHJvcHMud2l0aFN1Yk9wdGlvbnNcbiAgICApIHtcbiAgICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZChvcHRpb25TZWxlY3RlZCwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIF9vbk1vdXNlT3ZlcihvcHRpb24sIGV2ZW50KSB7XG4gICAgY29uc3QgZWwgPSBldmVudC50YXJnZXRcbiAgICB0aGlzLnNldFN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9uLFxuICAgICAgc3VibWVudVZpc2libGU6IHRydWUsXG4gICAgICBzdWJtZW51UG9zaXRpb246IHtcbiAgICAgICAgdG9wOiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsXG4gICAgICAgIGxlZnQ6IHByZXZpb3VzU3RhdGUuc3VibWVudVBvc2l0aW9uLmxlZnQgP3ByZXZpb3VzU3RhdGUuc3VibWVudVBvc2l0aW9uLmxlZnQgOiB0aGlzLnJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodFxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBpZiAocHJldlByb3BzLnNlYXJjaEVudHJ5VmFsdWUgIT09IHRoaXMucHJvcHMuc2VhcmNoRW50cnlWYWx1ZSkge1xuICAgICAgdGhpcy5fcmVzZXRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc3ViTWVudVBvc2l0aW9uOiB7IGxlZnQ6IHRoaXMucmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IH1cbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtmaXhlZE9wdGlvbnMsIGxpZ2h0fSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbjtcblxuICAgIC8vIERvbid0IHJlbmRlciBpZiB0aGVyZSBhcmUgbm8gb3B0aW9ucyB0byBkaXNwbGF5XG4gICAgaWYgKCF0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoICYmIHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgPD0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlT2Zmc2V0ID0gQXJyYXkuaXNBcnJheShmaXhlZE9wdGlvbnMpID8gZml4ZWRPcHRpb25zLmxlbmd0aCA6IDA7XG5cbiAgICAvLyBGb3Igc29tZSByZWFzb24gb25DbGljayBpcyBub3QgZmlyZWQgd2hlbiBjbGlja2VkIG9uIGFuIG9wdGlvblxuICAgIC8vIG9uTW91c2VEb3duIGlzIHVzZWQgaGVyZSBhcyBhIHdvcmthcm91bmQgb2YgIzIwNSBhbmQgb3RoZXJcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duTGlzdENvbnRhaW5lciBvbk1vdXNlTGVhdmU9eygpID0+IHRoaXMuX3Jlc2V0U3RhdGUoKX0+XG4gICAgICAgIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9IGxpZ2h0PXtsaWdodH0+XG4gICAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEhlYWRlcn0+XG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxkaXYgcmVmPXt0aGlzLnJlZn0+XG4gICAgICAgICAgICB7dmFsdWVPZmZzZXQgPiAwID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RTZWN0aW9ufT5cbiAgICAgICAgICAgICAgICB7Zml4ZWRPcHRpb25zLm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSxcbiAgICAgICAgICAgICAgICAgICAgICBob3ZlcjogdmFsdWUuaWQgJiYgKHRoaXMuc3RhdGUuY3VycmVudE9wdGlvbj8uaWQgPT09IHZhbHVlLmlkKSxcbiAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtkaXNwbGF5KHZhbHVlKX1fJHtpfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+ICF0aGlzLmhhc1N1Yk9wdGlvbnMgJiYgdGhpcy5fb25DbGljayh2YWx1ZSwgbnVsbCwgZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXtlID0+IHRoaXMuX29uTW91c2VPdmVyKHZhbHVlLCBlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMuY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8SXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSArIHZhbHVlT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgaG92ZXI6IHZhbHVlLmlkICYmICh0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24/LmlkID09PSB2YWx1ZS5pZClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiAhdGhpcy5oYXNTdWJPcHRpb25zICYmIHRoaXMuX29uQ2xpY2sodmFsdWUsIG51bGwsIGUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2UgPT4gdGhpcy5fb25Nb3VzZU92ZXIodmFsdWUsIGUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRoaXMucHJvcHMuY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmIHZhbHVlLmFnZ3JlZ2F0b3JzICYmIDxDaGV2cm9uUmlnaHQgLz59XG4gICAgICAgICAgICAgIDwvSXRlbT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Ryb3Bkb3duTGlzdFdyYXBwZXI+XG4gICAgICAgIHt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uICYmXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uLmFnZ3JlZ2F0b3JzICYmIChcbiAgICAgICAgICAgIDxJdGVtU2VsZWN0b3JTdWJtZW51XG4gICAgICAgICAgICAgIHBvc2l0aW9uPXt0aGlzLnN0YXRlLnN1Ym1lbnVQb3NpdGlvbn1cbiAgICAgICAgICAgICAgb3B0aW9ucz17dGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uLmFnZ3JlZ2F0b3JzLm1hcChhID0+XG4gICAgICAgICAgICAgICAgRklFTERfQUdHUkVHQVRPUlMuZmluZChhbSA9PiBhbS5pZCA9PT0gYSlcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgb25DbGljaz17KGFnZ3JlZ2F0b3IsIGUpID0+IHRoaXMuX29uQ2xpY2sodGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9uLCBhZ2dyZWdhdG9yLCBlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvRHJvcGRvd25MaXN0Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
27
+
28
+ var _react = _interopRequireWildcard(require("react"));
29
+
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
33
+
34
+ var _templateObject;
35
+
36
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
+
38
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
+
40
+ var ItemSelectorSubmenuStyled = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 5px 0;\n position: fixed;\n min-width: 100px;\n top: ", "px;\n left: ", "px;\n z-index: 999;\n font-weight: 500;\n transform: translateY(", "px);\n ", ";\n background-color: ", ";\n"])), function (props) {
41
+ return props.position.top;
42
+ }, function (props) {
43
+ return props.position.left;
44
+ }, function (props) {
45
+ return props.verticalTranslation;
46
+ }, function (props) {
47
+ return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
48
+ }, function (props) {
49
+ return props.light ? props.theme.dropdownListBgdLT : props.theme.dropdownListBgd;
50
+ });
51
+
52
+ var ItemSelectorSubmenu = /*#__PURE__*/function (_Component) {
53
+ (0, _inherits2["default"])(ItemSelectorSubmenu, _Component);
54
+
55
+ var _super = _createSuper(ItemSelectorSubmenu);
56
+
57
+ function ItemSelectorSubmenu() {
58
+ var _this;
59
+
60
+ (0, _classCallCheck2["default"])(this, ItemSelectorSubmenu);
61
+
62
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
63
+ args[_key] = arguments[_key];
64
+ }
65
+
66
+ _this = _super.call.apply(_super, [this].concat(args));
67
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
68
+ verticalTranslation: 0
69
+ });
70
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "container", /*#__PURE__*/(0, _react.createRef)());
71
+ return _this;
72
+ }
73
+
74
+ (0, _createClass2["default"])(ItemSelectorSubmenu, [{
75
+ key: "_adjustPosition",
76
+ value: function _adjustPosition() {
77
+ var _this2 = this;
78
+
79
+ this.setState({
80
+ verticalTranslation: 0
81
+ }, function () {
82
+ var containerOffsetBottom = window.innerHeight - _this2.container.current.getBoundingClientRect().bottom;
83
+
84
+ if (containerOffsetBottom < 0) {
85
+ _this2.setState({
86
+ verticalTranslation: containerOffsetBottom
87
+ });
88
+ }
89
+ });
90
+ }
91
+ }, {
92
+ key: "componentDidMount",
93
+ value: function componentDidMount() {
94
+ this._adjustPosition();
95
+ }
96
+ }, {
97
+ key: "componentDidUpdate",
98
+ value: function componentDidUpdate(prevProps) {
99
+ if (this.props.position.top !== prevProps.position.top) {
100
+ this._adjustPosition();
101
+ }
102
+ }
103
+ }, {
104
+ key: "render",
105
+ value: function render() {
106
+ var _this3 = this;
107
+
108
+ return /*#__PURE__*/_react["default"].createElement(ItemSelectorSubmenuStyled, {
109
+ position: this.props.position,
110
+ ref: this.container,
111
+ verticalTranslation: this.state.verticalTranslation
112
+ }, this.props.options.map(function (option, i) {
113
+ return /*#__PURE__*/_react["default"].createElement("div", {
114
+ className: "list__item",
115
+ key: i,
116
+ onClick: function onClick(e) {
117
+ return _this3.props.onClick(option, e);
118
+ }
119
+ }, option.displayName);
120
+ }));
121
+ }
122
+ }]);
123
+ return ItemSelectorSubmenu;
124
+ }(_react.Component);
125
+
126
+ (0, _defineProperty2["default"])(ItemSelectorSubmenu, "propTypes", {
127
+ position: _propTypes["default"].object,
128
+ options: _propTypes["default"].array,
129
+ onClick: _propTypes["default"].func
130
+ });
131
+ var _default = ItemSelectorSubmenu;
132
+ exports["default"] = _default;
133
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3Itc3VibWVudS5qcyJdLCJuYW1lcyI6WyJJdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ2ZXJ0aWNhbFRyYW5zbGF0aW9uIiwibGlnaHQiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdExUIiwiZHJvcGRvd25MaXN0IiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJJdGVtU2VsZWN0b3JTdWJtZW51Iiwic2V0U3RhdGUiLCJjb250YWluZXJPZmZzZXRCb3R0b20iLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsImNvbnRhaW5lciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3R0b20iLCJfYWRqdXN0UG9zaXRpb24iLCJwcmV2UHJvcHMiLCJzdGF0ZSIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJpIiwiZSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHQyw2QkFBT0MsR0FBVixrU0FJdEIsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsUUFBTixDQUFlQyxHQUFuQjtBQUFBLENBSmlCLEVBS3JCLFVBQUFGLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLFFBQU4sQ0FBZUUsSUFBbkI7QUFBQSxDQUxnQixFQVFMLFVBQUFILEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNJLG1CQUFWO0FBQUEsQ0FSQSxFQVMzQixVQUFBSixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxLQUFOLEdBQWNMLEtBQUssQ0FBQ00sS0FBTixDQUFZQyxjQUExQixHQUEyQ1AsS0FBSyxDQUFDTSxLQUFOLENBQVlFLFlBQTVEO0FBQUEsQ0FUc0IsRUFVVCxVQUFBUixLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0ssS0FBTixHQUFjTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsaUJBQTFCLEdBQThDVCxLQUFLLENBQUNNLEtBQU4sQ0FBWUksZUFEbkM7QUFBQSxDQVZJLENBQS9COztJQWNNQyxtQjs7Ozs7Ozs7Ozs7Ozs7OzhGQU9JO0FBQ05QLE1BQUFBLG1CQUFtQixFQUFFO0FBRGYsSzsrR0FJSSx1Qjs7Ozs7O1dBRVosMkJBQWtCO0FBQUE7O0FBQ2hCLFdBQUtRLFFBQUwsQ0FBYztBQUFFUixRQUFBQSxtQkFBbUIsRUFBRTtBQUF2QixPQUFkLEVBQTBDLFlBQU07QUFDOUMsWUFBTVMscUJBQXFCLEdBQUdDLE1BQU0sQ0FBQ0MsV0FBUCxHQUFxQixNQUFJLENBQUNDLFNBQUwsQ0FBZUMsT0FBZixDQUF1QkMscUJBQXZCLEdBQStDQyxNQUFsRzs7QUFDQSxZQUFJTixxQkFBcUIsR0FBRyxDQUE1QixFQUErQjtBQUM3QixVQUFBLE1BQUksQ0FBQ0QsUUFBTCxDQUFjO0FBQUVSLFlBQUFBLG1CQUFtQixFQUFFUztBQUF2QixXQUFkO0FBQ0Q7QUFDRixPQUxEO0FBTUQ7OztXQUVELDZCQUFvQjtBQUNsQixXQUFLTyxlQUFMO0FBQ0Q7OztXQUVELDRCQUFtQkMsU0FBbkIsRUFBOEI7QUFDNUIsVUFBSSxLQUFLckIsS0FBTCxDQUFXQyxRQUFYLENBQW9CQyxHQUFwQixLQUE0Qm1CLFNBQVMsQ0FBQ3BCLFFBQVYsQ0FBbUJDLEdBQW5ELEVBQXdEO0FBQ3RELGFBQUtrQixlQUFMO0FBQ0Q7QUFDRjs7O1dBRUQsa0JBQVM7QUFBQTs7QUFDUCwwQkFDRSxnQ0FBQyx5QkFBRDtBQUNFLFFBQUEsUUFBUSxFQUFFLEtBQUtwQixLQUFMLENBQVdDLFFBRHZCO0FBRUUsUUFBQSxHQUFHLEVBQUUsS0FBS2UsU0FGWjtBQUdFLFFBQUEsbUJBQW1CLEVBQUUsS0FBS00sS0FBTCxDQUFXbEI7QUFIbEMsU0FLRyxLQUFLSixLQUFMLENBQVd1QixPQUFYLENBQW1CQyxHQUFuQixDQUF1QixVQUFDQyxNQUFELEVBQVNDLENBQVQ7QUFBQSw0QkFDdEI7QUFBSyxVQUFBLFNBQVMsRUFBQyxZQUFmO0FBQTRCLFVBQUEsR0FBRyxFQUFFQSxDQUFqQztBQUFvQyxVQUFBLE9BQU8sRUFBRSxpQkFBQUMsQ0FBQztBQUFBLG1CQUFJLE1BQUksQ0FBQzNCLEtBQUwsQ0FBVzRCLE9BQVgsQ0FBbUJILE1BQW5CLEVBQTJCRSxDQUEzQixDQUFKO0FBQUE7QUFBOUMsV0FDR0YsTUFBTSxDQUFDSSxXQURWLENBRHNCO0FBQUEsT0FBdkIsQ0FMSCxDQURGO0FBYUQ7OztFQTlDK0JDLGdCOztpQ0FBNUJuQixtQixlQUNlO0FBQ2pCVixFQUFBQSxRQUFRLEVBQUU4QixzQkFBVUMsTUFESDtBQUVqQlQsRUFBQUEsT0FBTyxFQUFFUSxzQkFBVUUsS0FGRjtBQUdqQkwsRUFBQUEsT0FBTyxFQUFFRyxzQkFBVUc7QUFIRixDO2VBZ0ROdkIsbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBJdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogNXB4IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWluLXdpZHRoOiAxMDBweDtcbiAgdG9wOiAke3Byb3BzID0+IHByb3BzLnBvc2l0aW9uLnRvcH1weDtcbiAgbGVmdDogJHtwcm9wcyA9PiBwcm9wcy5wb3NpdGlvbi5sZWZ0fXB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgke3Byb3BzID0+IHByb3BzLnZlcnRpY2FsVHJhbnNsYXRpb259cHgpO1xuICAke3Byb3BzID0+IChwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0KX07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbmBcblxuY2xhc3MgSXRlbVNlbGVjdG9yU3VibWVudSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5LFxuICAgIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICB2ZXJ0aWNhbFRyYW5zbGF0aW9uOiAwXG4gIH1cblxuICBjb250YWluZXIgPSBjcmVhdGVSZWYoKVxuXG4gIF9hZGp1c3RQb3NpdGlvbigpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmVydGljYWxUcmFuc2xhdGlvbjogMCB9LCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXJPZmZzZXRCb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aGlzLmNvbnRhaW5lci5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAgIGlmIChjb250YWluZXJPZmZzZXRCb3R0b20gPCAwKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2ZXJ0aWNhbFRyYW5zbGF0aW9uOiBjb250YWluZXJPZmZzZXRCb3R0b20gfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fYWRqdXN0UG9zaXRpb24oKVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGlmICh0aGlzLnByb3BzLnBvc2l0aW9uLnRvcCAhPT0gcHJldlByb3BzLnBvc2l0aW9uLnRvcCkge1xuICAgICAgdGhpcy5fYWRqdXN0UG9zaXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEl0ZW1TZWxlY3RvclN1Ym1lbnVTdHlsZWRcbiAgICAgICAgcG9zaXRpb249e3RoaXMucHJvcHMucG9zaXRpb259XG4gICAgICAgIHJlZj17dGhpcy5jb250YWluZXJ9XG4gICAgICAgIHZlcnRpY2FsVHJhbnNsYXRpb249e3RoaXMuc3RhdGUudmVydGljYWxUcmFuc2xhdGlvbn1cbiAgICAgID5cbiAgICAgICAge3RoaXMucHJvcHMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGlzdF9faXRlbVwiIGtleT17aX0gb25DbGljaz17ZSA9PiB0aGlzLnByb3BzLm9uQ2xpY2sob3B0aW9uLCBlKX0+XG4gICAgICAgICAgICB7b3B0aW9uLmRpc3BsYXlOYW1lfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvSXRlbVNlbGVjdG9yU3VibWVudVN0eWxlZD5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXRlbVNlbGVjdG9yU3VibWVudTtcbiJdfQ==