adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
239 lines (238 loc) • 43.1 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var React = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _rcSelect = _interopRequireWildcard(require("rc-select"));
var _configProvider = require("../config-provider");
var _input = _interopRequireDefault(require("../input"));
var _omit = _interopRequireDefault(require("../_util/omit"));
require("./style");
var _excluded = ["autoHidePopup", "dataSource", "defaultValue", "filterOption", "getPopupContainer", "inputProps", "intent", "leftElement", "placeholder", "rightElement", "size", "theme", "value"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
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); }
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; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
var noop = function noop() {};
var Suggest = function (_React$Component) {
function Suggest(props) {
var _this;
_classCallCheck(this, Suggest);
_this = _callSuper(this, Suggest, [props]);
_this.locked = false;
_this.suggest = void 0;
_this.saveSuggest = function (node) {
if (node) {
_this.suggest = node;
}
};
_this.onDropdownVisibleChange = function (open) {
var _this$props = _this.props,
onDropdownVisibleChange = _this$props.onDropdownVisibleChange,
openProp = _this$props.open;
if (openProp === null) {
_this.setState({
open: open
});
}
if (onDropdownVisibleChange) onDropdownVisibleChange(open);
};
_this.onSearch = function (val) {
var onSearch = _this.props.onSearch;
var open = _this.state.open;
_this.setState({
searchValue: val
});
if (!open) {
_this.setState({
open: true
});
}
if (onSearch) {
onSearch(val);
}
};
var defaultOpen = props.defaultOpen,
defaultValue = props.defaultValue,
_open = props.open,
value = props.value;
var openState;
if (_open !== null) {
openState = _open;
} else if (defaultOpen !== null) {
openState = defaultOpen;
}
_this.state = {
open: openState,
searchValue: (value || defaultValue || "").toString()
};
return _this;
}
_inherits(Suggest, _React$Component);
return _createClass(Suggest, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props2 = this.props,
autoHidePopup = _this$props2.autoHidePopup,
dataSource = _this$props2.dataSource,
defaultValue = _this$props2.defaultValue,
filterOptionProp = _this$props2.filterOption,
getPopupContainer = _this$props2.getPopupContainer,
inputProps = _this$props2.inputProps,
intent = _this$props2.intent,
leftElement = _this$props2.leftElement,
placeholder = _this$props2.placeholder,
rightElement = _this$props2.rightElement,
size = _this$props2.size,
theme = _this$props2.theme,
value = _this$props2.value,
otherProps = _objectWithoutProperties(_this$props2, _excluded);
var _this$state = this.state,
openState = _this$state.open,
searchValue = _this$state.searchValue;
var restProps = (0, _omit["default"])(otherProps, ["defaultOpen", "onSearch", "onDropdownVisibleChange", "open"]);
var selectProps = {};
if (typeof openState === "boolean") {
selectProps.open = openState;
}
if (value !== null) {
selectProps.value = value;
} else {
selectProps.defaultValue = defaultValue;
}
var filterOption = filterOptionProp || function (inputValue, o) {
if (typeof o !== "string") {
return o.props.title.toUpperCase().includes(inputValue.toUpperCase());
}
return o.toUpperCase().includes(inputValue.toUpperCase());
};
var options = dataSource ? dataSource.filter(function (o) {
if (searchValue) {
return filterOption(searchValue, o);
}
return true;
}).map(function (item) {
if (React.isValidElement(item)) {
return item;
}
return React.createElement(_rcSelect.Option, {
key: item,
value: item
}, item);
}) : [];
if (autoHidePopup && !searchValue) {
options = [];
}
return React.createElement(_configProvider.ConfigContext.Consumer, null, function (_ref) {
var getPopupContainerContext = _ref.getPopupContainer;
return React.createElement(_rcSelect["default"], _extends({
mode: "combobox",
menuItemSelectedIcon: null,
dropdownMatchSelectWidth: true,
dropdownClassName: "adui-suggest-dropdown",
defaultActiveFirstOption: true,
getPopupContainer: getPopupContainer || getPopupContainerContext,
onDropdownVisibleChange: _this2.onDropdownVisibleChange,
onSearch: _this2.onSearch,
optionFilterProp: "children",
prefixCls: "adui-suggest",
showSearch: true,
ref: _this2.saveSuggest,
transitionName: "slide-up",
getInputElement: function getInputElement() {
return React.createElement(_input["default"], _extends({
intent: intent,
leftElement: leftElement,
placeholder: placeholder,
rightElement: rightElement,
size: size,
theme: theme
}, inputProps));
}
}, selectProps, restProps), options);
});
}
}]);
}(React.Component);
Suggest.Option = _rcSelect.Option;
Suggest.OptGroup = _rcSelect.OptGroup;
Suggest.propTypes = {
autoHidePopup: _propTypes["default"].bool,
autoFocus: _propTypes["default"].bool,
children: _propTypes["default"].node,
dataSource: _propTypes["default"].array,
defaultOpen: _propTypes["default"].bool,
defaultValue: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
filterOption: _propTypes["default"].func,
getPopupContainer: _propTypes["default"].func,
inputProps: _propTypes["default"].object,
intent: _propTypes["default"].oneOf(["normal", "primary", "success", "warning", "danger"]),
leftElement: _propTypes["default"].node,
notFoundContent: _propTypes["default"].string,
onDropdownVisibleChange: _propTypes["default"].func,
onInputKeyDown: _propTypes["default"].func,
onSearch: _propTypes["default"].func,
onSelect: _propTypes["default"].func,
open: _propTypes["default"].bool,
placeholder: _propTypes["default"].string,
rightElement: _propTypes["default"].node,
size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]),
theme: _propTypes["default"].oneOf([null, "light"]),
value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
};
Suggest.defaultProps = {
autoHidePopup: true,
autoFocus: false,
children: null,
dataSource: [],
defaultOpen: null,
defaultValue: "",
filterOption: undefined,
getPopupContainer: null,
inputProps: {},
intent: "normal",
leftElement: undefined,
notFoundContent: null,
onDropdownVisibleChange: noop,
onInputKeyDown: noop,
onSearch: noop,
onSelect: noop,
open: null,
placeholder: "请选择",
rightElement: undefined,
size: "small",
theme: null,
value: null
};
Suggest.getDerivedStateFromProps = function (_ref2) {
var open = _ref2.open,
value = _ref2.value;
var newState = {};
if (open !== null) {
newState.open = open;
}
if (value !== null) {
newState.searchValue = (value || "").toString();
}
return Object.keys(newState).length > 0 ? newState : null;
};
var _default = exports["default"] = Suggest;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JjU2VsZWN0IiwiX2NvbmZpZ1Byb3ZpZGVyIiwiX2lucHV0IiwiX29taXQiLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIm8iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInMiLCJpbmNsdWRlcyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvdHlwZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwibm9vcCIsIlN1Z2dlc3QiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJfdGhpcyIsImxvY2tlZCIsInN1Z2dlc3QiLCJzYXZlU3VnZ2VzdCIsIm5vZGUiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9wZW4iLCJfdGhpcyRwcm9wcyIsIm9wZW5Qcm9wIiwic2V0U3RhdGUiLCJvblNlYXJjaCIsInZhbCIsInN0YXRlIiwic2VhcmNoVmFsdWUiLCJkZWZhdWx0T3BlbiIsImRlZmF1bHRWYWx1ZSIsIm9wZW5TdGF0ZSIsInRvU3RyaW5nIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMyIiwiYXV0b0hpZGVQb3B1cCIsImRhdGFTb3VyY2UiLCJmaWx0ZXJPcHRpb25Qcm9wIiwiZmlsdGVyT3B0aW9uIiwiZ2V0UG9wdXBDb250YWluZXIiLCJpbnB1dFByb3BzIiwiaW50ZW50IiwibGVmdEVsZW1lbnQiLCJwbGFjZWhvbGRlciIsInJpZ2h0RWxlbWVudCIsInNpemUiLCJ0aGVtZSIsIm90aGVyUHJvcHMiLCJfdGhpcyRzdGF0ZSIsInJlc3RQcm9wcyIsIm9taXQiLCJzZWxlY3RQcm9wcyIsImlucHV0VmFsdWUiLCJ0aXRsZSIsInRvVXBwZXJDYXNlIiwib3B0aW9ucyIsImZpbHRlciIsIm1hcCIsIml0ZW0iLCJpc1ZhbGlkRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJPcHRpb24iLCJDb25maWdDb250ZXh0IiwiQ29uc3VtZXIiLCJfcmVmIiwiZ2V0UG9wdXBDb250YWluZXJDb250ZXh0IiwibW9kZSIsIm1lbnVJdGVtU2VsZWN0ZWRJY29uIiwiZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoIiwiZHJvcGRvd25DbGFzc05hbWUiLCJkZWZhdWx0QWN0aXZlRmlyc3RPcHRpb24iLCJvcHRpb25GaWx0ZXJQcm9wIiwicHJlZml4Q2xzIiwic2hvd1NlYXJjaCIsInJlZiIsInRyYW5zaXRpb25OYW1lIiwiZ2V0SW5wdXRFbGVtZW50IiwiQ29tcG9uZW50IiwiT3B0R3JvdXAiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwiYXV0b0ZvY3VzIiwiY2hpbGRyZW4iLCJhcnJheSIsIm9uZU9mVHlwZSIsInN0cmluZyIsIm51bWJlciIsImZ1bmMiLCJvYmplY3QiLCJvbmVPZiIsIm5vdEZvdW5kQ29udGVudCIsIm9uSW5wdXRLZXlEb3duIiwib25TZWxlY3QiLCJkZWZhdWx0UHJvcHMiLCJ1bmRlZmluZWQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmMiIsIm5ld1N0YXRlIiwia2V5cyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvc3VnZ2VzdC9TdWdnZXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUmNTZWxlY3QsIHsgT3B0aW9uLCBPcHRHcm91cCB9IGZyb20gXCJyYy1zZWxlY3RcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IElucHV0LCB7IElJbnB1dFByb3BzIH0gZnJvbSBcIi4uL2lucHV0XCJcbmltcG9ydCBvbWl0IGZyb20gXCIuLi9fdXRpbC9vbWl0XCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBJU3VnZ2VzdCB7XG4gIGdldFBvcHVwRE9NTm9kZTogKCkgPT4gSFRNTEVsZW1lbnRcbiAgZ2V0SW5wdXRET01Ob2RlOiAoKSA9PiBIVE1MSW5wdXRFbGVtZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU9wdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBrZXk6IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3VnZ2VzdFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDmmK/lkKblnKjmkJzntKLmoYbkuLrnqbrml7bvvIzoh6rliqjpmpDol48gcG9wdXBcbiAgICovXG4gIGF1dG9IaWRlUG9wdXA/OiBib29sZWFuXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvRm9jdXNcbiAgICovXG4gIGF1dG9Gb2N1cz86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgZGVmYXVsdE9wZW4/OiBib29sZWFuIHwgbnVsbFxuICAvKipcbiAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBudWxsXG4gIGRhdGFTb3VyY2U/OiBhbnlbXVxuICAvKipcbiAgICog5o6l5pS2IGlucHV0VmFsdWUgb3B0aW9uIOS4pOS4quWPguaVsO+8jOW9kyBvcHRpb24g56ym5ZCI562b6YCJ5p2h5Lu25pe277yM5bqU6L+U5ZueIHRydWXvvIzlj43kuYvliJnov5Tlm54gZmFsc2VcbiAgICovXG4gIGZpbHRlck9wdGlvbj86IChpbnB1dFZhbHVlOiBzdHJpbmcsIG9wdGlvbjogYW55KSA9PiBib29sZWFuXG4gIC8qKlxuICAgKiDmjIflrprlvLnlh7rlsYLnmoTniLbnuqfvvIzpu5jorqTkuLogZG9jdW1lbnQuYm9keVxuICAgKi9cbiAgZ2V0UG9wdXBDb250YWluZXI/OiBudWxsIHwgKChub2RlOiBIVE1MRWxlbWVudCkgPT4gSFRNTEVsZW1lbnQpXG4gIGlucHV0UHJvcHM/OiBJSW5wdXRQcm9wc1xuICAvKipcbiAgICog57G75Z6LXG4gICAqL1xuICBpbnRlbnQ/OiBcIm5vcm1hbFwiIHwgXCJwcmltYXJ5XCIgfCBcInN1Y2Nlc3NcIiB8IFwid2FybmluZ1wiIHwgXCJkYW5nZXJcIlxuICBsZWZ0RWxlbWVudD86IEpTWC5FbGVtZW50XG4gIG5vdEZvdW5kQ29udGVudD86IHN0cmluZyB8IG51bGxcbiAgb25JbnB1dEtleURvd24/OiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uU2VhcmNoPzogKHZhbDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uU2VsZWN0PzogKHZhbHVlOiBzdHJpbmcsIG9wdGlvbjogSU9wdGlvbikgPT4gdm9pZFxuICBvcGVuPzogbnVsbCB8IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgcmlnaHRFbGVtZW50PzogSlNYLkVsZW1lbnRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog6K6+572u5Li76aKYXG4gICAqL1xuICB0aGVtZT86IG51bGwgfCBcImxpZ2h0XCJcbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1Z2dlc3RTdGF0ZSB7XG4gIG9wZW4/OiBib29sZWFuXG4gIHNlYXJjaFZhbHVlPzogc3RyaW5nXG59XG4vKipcbiAqIOS4i+aLiemAieaLqeWZqOOAglxuICovXG5jbGFzcyBTdWdnZXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElTdWdnZXN0UHJvcHMsIElTdWdnZXN0U3RhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBPcHRpb246IHR5cGVvZiBPcHRpb24gPSBPcHRpb25cblxuICBwdWJsaWMgc3RhdGljIE9wdEdyb3VwOiB0eXBlb2YgT3B0R3JvdXAgPSBPcHRHcm91cFxuXG4gIHB1YmxpYyBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuWcqOaQnOe0ouahhuS4uuepuuaXtu+8jOiHquWKqOmakOiXjyBwb3B1cFxuICAgICAqL1xuICAgIGF1dG9IaWRlUG9wdXA6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgICAqL1xuICAgIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog5a2Q6IqC54K5XG4gICAgICovXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIC8qKlxuICAgICAqIOS4i+aLieWIl+ihqFxuICAgICAqL1xuICAgIGRhdGFTb3VyY2U6IFByb3BUeXBlcy5hcnJheSxcbiAgICAvKipcbiAgICAgKiDlhoXpg6jpqbHliqjvvJrmmK/lkKblsZXlvIBcbiAgICAgKi9cbiAgICBkZWZhdWx0T3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gICAgLyoqXG4gICAgICog5o6l5pS2IGlucHV0VmFsdWUgb3B0aW9uIOS4pOS4quWPguaVsO+8jOW9kyBvcHRpb24g56ym5ZCI562b6YCJ5p2h5Lu25pe277yM5bqU6L+U5ZueIHRydWXvvIzlj43kuYvliJnov5Tlm54gZmFsc2VcbiAgICAgKi9cbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOaMh+WumuW8ueWHuuWxgueahOeItue6p++8jOm7mOiupOS4uiBkb2N1bWVudC5ib2R5XG4gICAgICovXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOS8oOmAkue7mSA8SW5wdXQgLz4g55qEIFByb3BzXG4gICAgICovXG4gICAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAvKipcbiAgICAgKiDnsbvlnotcbiAgICAgKi9cbiAgICBpbnRlbnQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcIm5vcm1hbFwiLFxuICAgICAgXCJwcmltYXJ5XCIsXG4gICAgICBcInN1Y2Nlc3NcIixcbiAgICAgIFwid2FybmluZ1wiLFxuICAgICAgXCJkYW5nZXJcIixcbiAgICBdKSxcbiAgICAvKipcbiAgICAgKiDliY3nva7lhYPntKBcbiAgICAgKi9cbiAgICBsZWZ0RWxlbWVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqXG4gICAgICog5peg5Yy56YWN57uT5p6c5pe255qE5pi+56S65paH5a2XXG4gICAgICovXG4gICAgbm90Rm91bmRDb250ZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOS4i+aLieWxleekuuWPkeeUn+WPmOWMluaXtueahCBoYW5kbGVy77yM5Y+C5pWw77yaYm9vbFxuICAgICAqL1xuICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiBpbnB1dCBrZXkgcHJlc3Mg5pe255qEIGhhbmRsZXIs5aaC5p6c5oOz56aB55So5Zue6L2m6YCJ5oup77yM5Y+v5Lul5bCd6K+V77yaXG4gICAgICBvbklucHV0S2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICovXG4gICAgb25JbnB1dEtleURvd246IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOaQnOe0ouaXtueahCBoYW5kbGVy77yM5Y+C5pWw77yadmFsdWVcbiAgICAgKi9cbiAgICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog6YCJ5oup5pe255qEIGhhbmRsZXLvvIzlj4LmlbDvvJoodmFsdWUsIG9wdGlvbilcbiAgICAgKi9cbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5LuO5aSW6YOo5oyH5a6a5LiL5ouJ5piv5ZCm5bGV5byAXG4gICAgICovXG4gICAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6YCJ5oup5qGG6buY6K6k5paH5a2XXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5ZCO572u5YWD57SgXG4gICAgICovXG4gICAgcmlnaHRFbGVtZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiDorr7nva7lsLrlr7hcbiAgICAgKi9cbiAgICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruS4u+mimFxuICAgICAqL1xuICAgIHRoZW1lOiBQcm9wVHlwZXMub25lT2YoW251bGwsIFwibGlnaHRcIl0pLFxuICAgIC8qKlxuICAgICAqIOS7juWklumDqOaMh+WumuW9k+WJjemAieS4remhueeahOWAvFxuICAgICAqL1xuICAgIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wczogSVN1Z2dlc3RQcm9wcyA9IHtcbiAgICBhdXRvSGlkZVBvcHVwOiB0cnVlLFxuICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgY2hpbGRyZW46IG51bGwsXG4gICAgZGF0YVNvdXJjZTogW10sXG4gICAgZGVmYXVsdE9wZW46IG51bGwsXG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICAgIGZpbHRlck9wdGlvbjogdW5kZWZpbmVkLFxuICAgIGdldFBvcHVwQ29udGFpbmVyOiBudWxsLFxuICAgIGlucHV0UHJvcHM6IHt9LFxuICAgIGludGVudDogXCJub3JtYWxcIixcbiAgICBsZWZ0RWxlbWVudDogdW5kZWZpbmVkLFxuICAgIG5vdEZvdW5kQ29udGVudDogbnVsbCxcbiAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZTogbm9vcCxcbiAgICBvbklucHV0S2V5RG93bjogbm9vcCxcbiAgICBvblNlYXJjaDogbm9vcCxcbiAgICBvblNlbGVjdDogbm9vcCxcbiAgICBvcGVuOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxuICAgIHJpZ2h0RWxlbWVudDogdW5kZWZpbmVkLFxuICAgIHNpemU6IFwic21hbGxcIixcbiAgICB0aGVtZTogbnVsbCxcbiAgICB2YWx1ZTogbnVsbCxcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gKHsgb3BlbiwgdmFsdWUgfTogSVN1Z2dlc3RQcm9wcykgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlOiBJU3VnZ2VzdFN0YXRlID0ge31cbiAgICBpZiAob3BlbiAhPT0gbnVsbCkge1xuICAgICAgbmV3U3RhdGUub3BlbiA9IG9wZW5cbiAgICB9XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICBuZXdTdGF0ZS5zZWFyY2hWYWx1ZSA9ICh2YWx1ZSB8fCBcIlwiKS50b1N0cmluZygpXG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoID4gMCA/IG5ld1N0YXRlIDogbnVsbFxuICB9XG5cbiAgcHVibGljIGxvY2tlZCA9IGZhbHNlXG5cbiAgcHVibGljIHN1Z2dlc3Q6IElTdWdnZXN0XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElTdWdnZXN0UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICBjb25zdCB7IGRlZmF1bHRPcGVuLCBkZWZhdWx0VmFsdWUsIG9wZW4sIHZhbHVlIH0gPSBwcm9wc1xuXG4gICAgbGV0IG9wZW5TdGF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgIGlmIChvcGVuICE9PSBudWxsKSB7XG4gICAgICBvcGVuU3RhdGUgPSBvcGVuXG4gICAgfSBlbHNlIGlmIChkZWZhdWx0T3BlbiAhPT0gbnVsbCkge1xuICAgICAgb3BlblN0YXRlID0gZGVmYXVsdE9wZW5cbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgb3Blbjogb3BlblN0YXRlLFxuICAgICAgc2VhcmNoVmFsdWU6ICh2YWx1ZSB8fCBkZWZhdWx0VmFsdWUgfHwgXCJcIikudG9TdHJpbmcoKSxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZVN1Z2dlc3QgPSAobm9kZTogSVN1Z2dlc3QpID0+IHtcbiAgICBpZiAobm9kZSkge1xuICAgICAgdGhpcy5zdWdnZXN0ID0gbm9kZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSA9IChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgeyBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSwgb3Blbjogb3BlblByb3AgfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChvcGVuUHJvcCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wZW4gfSlcbiAgICB9XG4gICAgaWYgKG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKSBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZShvcGVuKVxuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBvblNlYXJjaCB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgb3BlbiB9ID0gdGhpcy5zdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hWYWx1ZTogdmFsIH0pXG5cbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiB0cnVlIH0pXG4gICAgfVxuICAgIGlmIChvblNlYXJjaCkge1xuICAgICAgb25TZWFyY2godmFsKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXV0b0hpZGVQb3B1cCxcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBmaWx0ZXJPcHRpb246IGZpbHRlck9wdGlvblByb3AsXG4gICAgICBnZXRQb3B1cENvbnRhaW5lcixcbiAgICAgIGlucHV0UHJvcHMsXG4gICAgICBpbnRlbnQsXG4gICAgICBsZWZ0RWxlbWVudCxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmlnaHRFbGVtZW50LFxuICAgICAgc2l6ZSxcbiAgICAgIHRoZW1lLFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHsgb3Blbjogb3BlblN0YXRlLCBzZWFyY2hWYWx1ZSB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgY29uc3QgcmVzdFByb3BzID0gb21pdChvdGhlclByb3BzLCBbXG4gICAgICBcImRlZmF1bHRPcGVuXCIsXG4gICAgICBcIm9uU2VhcmNoXCIsXG4gICAgICBcIm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlXCIsXG4gICAgICBcIm9wZW5cIixcbiAgICBdKVxuXG4gICAgLy8gb3BlblN0YXRlIOWPr+iDveaYryB1bmRlZmluZWQgb3IgbnVsbFxuICAgIGNvbnN0IHNlbGVjdFByb3BzOiB7XG4gICAgICBkZWZhdWx0VmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG4gICAgICBvcGVuPzogYm9vbGVhblxuICAgICAgdmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG4gICAgfSA9IHt9XG4gICAgaWYgKHR5cGVvZiBvcGVuU3RhdGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBzZWxlY3RQcm9wcy5vcGVuID0gb3BlblN0YXRlXG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgc2VsZWN0UHJvcHMudmFsdWUgPSB2YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RQcm9wcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJPcHRpb24gPVxuICAgICAgZmlsdGVyT3B0aW9uUHJvcCB8fFxuICAgICAgKChpbnB1dFZhbHVlOiBzdHJpbmcsIG86IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG8gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gby5wcm9wcy50aXRsZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGlucHV0VmFsdWUudG9VcHBlckNhc2UoKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gby50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGlucHV0VmFsdWUudG9VcHBlckNhc2UoKSlcbiAgICAgIH0pXG5cbiAgICBsZXQgb3B0aW9ucyA9IGRhdGFTb3VyY2VcbiAgICAgID8gZGF0YVNvdXJjZVxuICAgICAgICAgIC5maWx0ZXIoKG8pID0+IHtcbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChpdGVtKSkge1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPE9wdGlvbiBrZXk9e2l0ZW19IHZhbHVlPXtpdGVtfT5cbiAgICAgICAgICAgICAgICB7aXRlbX1cbiAgICAgICAgICAgICAgPC9PcHRpb24+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgIDogW11cblxuICAgIGlmIChhdXRvSGlkZVBvcHVwICYmICFzZWFyY2hWYWx1ZSkge1xuICAgICAgb3B0aW9ucyA9IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb25maWdDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyQ29udGV4dCB9KSA9PiAoXG4gICAgICAgICAgPFJjU2VsZWN0XG4gICAgICAgICAgICBtb2RlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgbWVudUl0ZW1TZWxlY3RlZEljb249e251bGx9XG4gICAgICAgICAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGhcbiAgICAgICAgICAgIGRyb3Bkb3duQ2xhc3NOYW1lPVwiYWR1aS1zdWdnZXN0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIGRlZmF1bHRBY3RpdmVGaXJzdE9wdGlvblxuICAgICAgICAgICAgZ2V0UG9wdXBDb250YWluZXI9e2dldFBvcHVwQ29udGFpbmVyIHx8IGdldFBvcHVwQ29udGFpbmVyQ29udGV4dH1cbiAgICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlfVxuICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2h9XG4gICAgICAgICAgICBvcHRpb25GaWx0ZXJQcm9wPVwiY2hpbGRyZW5cIlxuICAgICAgICAgICAgcHJlZml4Q2xzPVwiYWR1aS1zdWdnZXN0XCJcbiAgICAgICAgICAgIHNob3dTZWFyY2hcbiAgICAgICAgICAgIHJlZj17dGhpcy5zYXZlU3VnZ2VzdH1cbiAgICAgICAgICAgIHRyYW5zaXRpb25OYW1lPVwic2xpZGUtdXBcIlxuICAgICAgICAgICAgZ2V0SW5wdXRFbGVtZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgIGludGVudD17aW50ZW50fVxuICAgICAgICAgICAgICAgIGxlZnRFbGVtZW50PXtsZWZ0RWxlbWVudH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50PXtyaWdodEVsZW1lbnR9XG4gICAgICAgICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgICAgICAgey4uLmlucHV0UHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgey4uLnNlbGVjdFByb3BzfVxuICAgICAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9uc31cbiAgICAgICAgICA8L1JjU2VsZWN0PlxuICAgICAgICApfVxuICAgICAgPC9Db25maWdDb250ZXh0LkNvbnN1bWVyPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTdWdnZXN0XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUFnQixJQUFBTyxTQUFBO0FBQUEsU0FBQUwsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFELHdCQUFBLFlBQUFBLHlCQUFBRixDQUFBLFdBQUFBLENBQUEsR0FBQUssQ0FBQSxHQUFBRCxDQUFBLEtBQUFKLENB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
;