UNPKG

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>

218 lines (217 loc) 44.1 kB
"use strict"; 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 _classnames = _interopRequireDefault(require("classnames")); var _warning = _interopRequireDefault(require("../_util/warning")); var _configProvider = require("../config-provider"); require("./style"); var _excluded = ["autoFocus", "className", "countHanzi", "defaultValue", "disabled", "id", "inputClassName", "inputStyle", "intent", "limit", "name", "onBlur", "onChange", "onFocus", "onKeyDown", "onPressEnter", "onScroll", "placeholder", "required", "resize", "size", "theme", "type", "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 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; } 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) { _defineProperty(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; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, 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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } 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; } var noop = function noop() {}; var prefix = "adui-input"; var Textarea = (0, _react.forwardRef)(function (_ref, ref) { var autoFocus = _ref.autoFocus, className = _ref.className, countHanzi = _ref.countHanzi, defaultValue = _ref.defaultValue, disabled = _ref.disabled, id = _ref.id, inputClassName = _ref.inputClassName, inputStyle = _ref.inputStyle, intent = _ref.intent, limit = _ref.limit, name = _ref.name, onBlur = _ref.onBlur, onChange = _ref.onChange, onFocus = _ref.onFocus, onKeyDown = _ref.onKeyDown, onPressEnter = _ref.onPressEnter, onScroll = _ref.onScroll, placeholder = _ref.placeholder, required = _ref.required, resize = _ref.resize, sizeProp = _ref.size, theme = _ref.theme, type = _ref.type, value = _ref.value, otherProps = _objectWithoutProperties(_ref, _excluded); var _useState = (0, _react.useState)(false), _useState2 = _slicedToArray(_useState, 2), focused = _useState2[0], setFocused = _useState2[1]; var textareaRef = (0, _react.useRef)(null); var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext); var handleChange = function handleChange(e) { if (!disabled && onChange) { var val = e.target.value.replace(/\u0008|\u0009|\u000B|\u000C|\u000D|\u00A0|\u2028|\u2029|\uFEFF/g, ""); onChange(e, val); } }; var handleKeyDown = function handleKeyDown(e) { if (e.key === "Enter" && onPressEnter) { onPressEnter(e); } if (onKeyDown) { onKeyDown(e); } }; var handleBlur = function handleBlur(e) { setFocused(false); if (onBlur) { onBlur(e); } }; var handleFocus = function handleFocus(e) { setFocused(true); if (onFocus) { onFocus(e); } }; var fixControlledValue = function fixControlledValue(val) { if (typeof val === "undefined" || val === null) { return ""; } return val; }; var getFormatStrLeng = function getFormatStrLeng(str) { var len = str.length; var realLength = 0; var charCode = -1; for (var i = 0; i < len; i += 1) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) { realLength += 0.5; } else { realLength += 1; } } return Math.ceil(realLength); }; (0, _react.useImperativeHandle)(ref, function () { return { input: textareaRef === null || textareaRef === void 0 ? void 0 : textareaRef.current, handleChange: handleChange, handleKeyDown: handleKeyDown, handleBlur: handleBlur, handleFocus: handleFocus }; }); var textareaProps = { autoFocus: autoFocus, className: (0, _classnames["default"])("".concat(prefix, "-base"), inputClassName), disabled: disabled, id: id, name: name, onBlur: handleBlur, onChange: handleChange, onFocus: handleFocus, onKeyDown: handleKeyDown, onScroll: onScroll, placeholder: placeholder, ref: textareaRef, required: required, style: _objectSpread({ resize: resize }, inputStyle), type: type }; if (value !== null) { textareaProps.value = fixControlledValue(value); } else { textareaProps.defaultValue = fixControlledValue(defaultValue); } var length; if (limit) { (0, _warning["default"])(resize === "none", "Input.Textarea", "不允许同时使用 prop `limit` 与 prop `resize`"); if (value) { length = countHanzi ? getFormatStrLeng(value) : value.length; } else { (0, _warning["default"])(value !== null, "Input.Textarea", "如果要限制字数,必须从外部控制 value。"); length = 0; } } var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-wrapper"), "".concat(prefix, "-wrapper_textarea"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-").concat(theme), theme), "".concat(prefix, "-resizable"), resize !== "none"), "".concat(prefix, "-disabled"), disabled), "".concat(prefix, "-limited"), !!limit), "".concat(prefix, "-normal"), intent === "normal"), "".concat(prefix, "-primary"), intent === "primary"), "".concat(prefix, "-success"), intent === "success"), "".concat(prefix, "-warning"), intent === "warning"), "".concat(prefix, "-danger"), intent === "danger" || length && limit && length > limit), "".concat(prefix, "-focused"), focused)); return _react["default"].createElement("div", _extends({ className: classSet }, otherProps), _react["default"].createElement("textarea", textareaProps), !!limit && _react["default"].createElement("div", { className: "".concat(prefix, "-limit") }, _react["default"].createElement("span", null, "".concat(length, "/").concat(limit)))); }); Textarea.propTypes = { autoFocus: _propTypes["default"].bool, className: _propTypes["default"].string, countHanzi: _propTypes["default"].bool, defaultValue: _propTypes["default"].string, disabled: _propTypes["default"].bool, id: _propTypes["default"].string, inputClassName: _propTypes["default"].string, inputStyle: _propTypes["default"].object, intent: _propTypes["default"].oneOf(["normal", "primary", "success", "warning", "danger"]), limit: _propTypes["default"].number, name: _propTypes["default"].string, onBlur: _propTypes["default"].func, onChange: _propTypes["default"].func, onFocus: _propTypes["default"].func, onKeyDown: _propTypes["default"].func, onPressEnter: _propTypes["default"].func, onScroll: _propTypes["default"].func, placeholder: _propTypes["default"].string, required: _propTypes["default"].bool, resize: _propTypes["default"].oneOf(["none", "both", "horizontal", "vertical"]), size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), theme: _propTypes["default"].oneOf([null, "light"]), type: _propTypes["default"].string, value: _propTypes["default"].string }; Textarea.defaultProps = { autoFocus: false, className: undefined, countHanzi: true, defaultValue: null, disabled: false, id: null, inputClassName: undefined, inputStyle: {}, intent: "normal", limit: null, name: null, onBlur: noop, onChange: noop, onFocus: noop, onKeyDown: noop, onPressEnter: noop, onScroll: noop, placeholder: "请输入", required: false, resize: "none", size: "small", theme: null, type: null, value: null }; Textarea.displayName = "Textarea"; var _default = exports["default"] = Textarea; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3dhcm5pbmciLCJfY29uZmlnUHJvdmlkZXIiLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImwiLCJpdGVyYXRvciIsImYiLCJuZXh0IiwiZG9uZSIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInMiLCJpbmNsdWRlcyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwibm9vcCIsInByZWZpeCIsIlRleHRhcmVhIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJhdXRvRm9jdXMiLCJjbGFzc05hbWUiLCJjb3VudEhhbnppIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJpZCIsImlucHV0Q2xhc3NOYW1lIiwiaW5wdXRTdHlsZSIsImludGVudCIsImxpbWl0Iiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwib25LZXlEb3duIiwib25QcmVzc0VudGVyIiwib25TY3JvbGwiLCJwbGFjZWhvbGRlciIsInJlcXVpcmVkIiwicmVzaXplIiwic2l6ZVByb3AiLCJzaXplIiwidGhlbWUiLCJ0eXBlIiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImZvY3VzZWQiLCJzZXRGb2N1c2VkIiwidGV4dGFyZWFSZWYiLCJ1c2VSZWYiLCJfdXNlQ29udGV4dCIsInVzZUNvbnRleHQiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbnRleHQiLCJnZXRDb21wdXRlZFNpemUiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJ0YXJnZXQiLCJyZXBsYWNlIiwiaGFuZGxlS2V5RG93biIsImtleSIsImhhbmRsZUJsdXIiLCJoYW5kbGVGb2N1cyIsImZpeENvbnRyb2xsZWRWYWx1ZSIsImdldEZvcm1hdFN0ckxlbmciLCJzdHIiLCJsZW4iLCJyZWFsTGVuZ3RoIiwiY2hhckNvZGUiLCJjaGFyQ29kZUF0IiwiTWF0aCIsImNlaWwiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiaW5wdXQiLCJjdXJyZW50IiwidGV4dGFyZWFQcm9wcyIsImNsYXNzTmFtZXMiLCJjb25jYXQiLCJzdHlsZSIsIndhcm5pbmciLCJjbGFzc1NldCIsImNyZWF0ZUVsZW1lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwic3RyaW5nIiwib2JqZWN0Iiwib25lT2YiLCJudW1iZXIiLCJmdW5jIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwiZGlzcGxheU5hbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL2lucHV0L1RleHRhcmVhLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHdhcm5pbmcgZnJvbSBcIi4uL191dGlsL3dhcm5pbmdcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCwgZ2V0Q29tcHV0ZWRTaXplIH0gZnJvbSBcIi4uL2NvbmZpZy1wcm92aWRlclwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS1pbnB1dFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRleHRhcmVhUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhblxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOaYr+WQpuaMieeFp+S4gOS4quaxieWtl+eulyAyIOWtl+aVsOeahOaWueW8j+mZkOWItumVv+W6plxuICAgKi9cbiAgY291bnRIYW56aT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOi+k+WFpeahhueahCBpZFxuICAgKi9cbiAgaWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDnsbvlnotcbiAgICovXG4gIGludGVudD86IFwibm9ybWFsXCIgfCBcInByaW1hcnlcIiB8IFwic3VjY2Vzc1wiIHwgXCJ3YXJuaW5nXCIgfCBcImRhbmdlclwiXG4gIC8qKlxuICAgKiDkvZznlKjliLAgaW5wdXQg5YWD57Sg55qE57G75ZCNXG4gICAqL1xuICBpbnB1dENsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog5L2c55So5YiwIGlucHV0IOWFg+e0oOeahOagt+W8j1xuICAgKi9cbiAgaW5wdXRTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIOmZkOWItumVv+W6plxuICAgKi9cbiAgbGltaXQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBuYW1lXG4gICAqL1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogYmx1ciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25CbHVyPzogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOWAvOaUueWPmOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PiwgdmFsdWU/OiBzdHJpbmcpID0+IHZvaWRcbiAgLyoqXG4gICAqIGZvY3VzIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkZvY3VzPzogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIGtleWRvd24g5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uS2V5RG93bj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBlbnRlciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25QcmVzc0VudGVyPzogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIHNjcm9sbCDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25TY3JvbGw/OiAoZTogUmVhY3QuVUlFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICogcGxhY2Vob2xkZXJcbiAgICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSByZXF1aXJlZFxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiDmmK/lkKbmlK/mjIHosIPmlbTlpKflsI9cbiAgICovXG4gIHJlc2l6ZT86IFwibm9uZVwiIHwgXCJib3RoXCIgfCBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIlxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gdHlwZVxuICAgKi9cbiAgdHlwZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIOWAvCAtIOWklumDqOaOp+WItlxuICAgKi9cbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsXG59XG5cbi8qKlxuICog6L6T5YWl5Yy65Z+f77yM55So5LqO5aSa6KGM57qv5paH5pys57yW6L6R44CCXG4gKi9cbmNvbnN0IFRleHRhcmVhOiBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICBJVGV4dGFyZWFQcm9wcyAmIFJlYWN0LlJlZkF0dHJpYnV0ZXM8YW55PlxuPiA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBhdXRvRm9jdXMsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb3VudEhhbnppLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpZCxcbiAgICAgIGlucHV0Q2xhc3NOYW1lLFxuICAgICAgaW5wdXRTdHlsZSxcbiAgICAgIGludGVudCxcbiAgICAgIGxpbWl0LFxuICAgICAgbmFtZSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUHJlc3NFbnRlcixcbiAgICAgIG9uU2Nyb2xsLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHJlc2l6ZSxcbiAgICAgIHNpemU6IHNpemVQcm9wLFxuICAgICAgdGhlbWUsXG4gICAgICB0eXBlLFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfTogSVRleHRhcmVhUHJvcHMsXG4gICAgcmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IFtmb2N1c2VkLCBzZXRGb2N1c2VkXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gICAgY29uc3QgdGV4dGFyZWFSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbClcblxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcblxuICAgIGNvbnN0IHNpemUgPSBnZXRDb21wdXRlZFNpemUoc2l6ZVByb3AsIHNpemVDb250ZXh0KVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWRpc2FibGVkICYmIG9uQ2hhbmdlKSB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRyb2wtcmVnZXgsIG1heC1sZW4gKi9cbiAgICAgICAgLy8gMDggQmFja3NwYWNlLCAwOSBUYWIsIDBCIOWeguebtOWItuihqOespiwgMEMg5o2i6aG1LCAwRCDlm57ovaYsIEEwIOS4jemXtOaWreepuuagvCxcbiAgICAgICAgLy8gMjAyOC8yMDI5IOWIhumalOespiwgRkVmZiDlrZfoioLpobrluo/moIforrDjgIJcbiAgICAgICAgY29uc3QgdmFsID0gZS50YXJnZXQudmFsdWUucmVwbGFjZShcbiAgICAgICAgICAvXFx1MDAwOHxcXHUwMDA5fFxcdTAwMEJ8XFx1MDAwQ3xcXHUwMDBEfFxcdTAwQTB8XFx1MjAyOHxcXHUyMDI5fFxcdUZFRkYvZyxcbiAgICAgICAgICBcIlwiXG4gICAgICAgIClcbiAgICAgICAgb25DaGFuZ2UoZSwgdmFsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgJiYgb25QcmVzc0VudGVyKSB7XG4gICAgICAgIG9uUHJlc3NFbnRlcihlKVxuICAgICAgfVxuICAgICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgICBvbktleURvd24oZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICAgIHNldEZvY3VzZWQoZmFsc2UpXG4gICAgICBpZiAob25CbHVyKSB7XG4gICAgICAgIG9uQmx1cihlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICAgIHNldEZvY3VzZWQodHJ1ZSlcbiAgICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICAgIG9uRm9jdXMoZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaXhDb250cm9sbGVkVmFsdWUgPSAodmFsPzogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09IFwidW5kZWZpbmVkXCIgfHwgdmFsID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcIlwiXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgY29uc3QgZ2V0Rm9ybWF0U3RyTGVuZyA9IChzdHI6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbGVuID0gc3RyLmxlbmd0aFxuICAgICAgbGV0IHJlYWxMZW5ndGggPSAwXG4gICAgICBsZXQgY2hhckNvZGUgPSAtMVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICBjaGFyQ29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgICAgIGlmIChjaGFyQ29kZSA+PSAwICYmIGNoYXJDb2RlIDw9IDEyOCkge1xuICAgICAgICAgIHJlYWxMZW5ndGggKz0gMC41XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVhbExlbmd0aCArPSAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLmNlaWwocmVhbExlbmd0aClcbiAgICB9XG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICAgIGlucHV0OiB0ZXh0YXJlYVJlZj8uY3VycmVudCxcbiAgICAgIGhhbmRsZUNoYW5nZSxcbiAgICAgIGhhbmRsZUtleURvd24sXG4gICAgICBoYW5kbGVCbHVyLFxuICAgICAgaGFuZGxlRm9jdXMsXG4gICAgfSkpXG5cbiAgICBjb25zdCB0ZXh0YXJlYVByb3BzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGAke3ByZWZpeH0tYmFzZWAsIGlucHV0Q2xhc3NOYW1lKSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgb25CbHVyOiBoYW5kbGVCbHVyLFxuICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgb25TY3JvbGwsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlZjogdGV4dGFyZWFSZWYsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHN0eWxlOiB7IHJlc2l6ZSwgLi4uaW5wdXRTdHlsZSB9LFxuICAgICAgdHlwZSxcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRleHRhcmVhUHJvcHMudmFsdWUgPSBmaXhDb250cm9sbGVkVmFsdWUodmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRhcmVhUHJvcHMuZGVmYXVsdFZhbHVlID0gZml4Q29udHJvbGxlZFZhbHVlKGRlZmF1bHRWYWx1ZSlcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoXG4gICAgaWYgKGxpbWl0KSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICByZXNpemUgPT09IFwibm9uZVwiLFxuICAgICAgICBcIklucHV0LlRleHRhcmVhXCIsXG4gICAgICAgIFwi5LiN5YWB6K645ZCM5pe25L2/55SoIHByb3AgYGxpbWl0YCDkuI4gcHJvcCBgcmVzaXplYFwiXG4gICAgICApXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGVuZ3RoID0gY291bnRIYW56aSA/IGdldEZvcm1hdFN0ckxlbmcodmFsdWUpIDogdmFsdWUubGVuZ3RoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHZhbHVlICE9PSBudWxsLFxuICAgICAgICAgIFwiSW5wdXQuVGV4dGFyZWFcIixcbiAgICAgICAgICBcIuWmguaenOimgemZkOWItuWtl+aVsO+8jOW/hemhu+S7juWklumDqOaOp+WItiB2YWx1ZeOAglwiXG4gICAgICAgIClcbiAgICAgICAgbGVuZ3RoID0gMFxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0td3JhcHBlcmAsXG4gICAgICBgJHtwcmVmaXh9LXdyYXBwZXJfdGV4dGFyZWFgLFxuICAgICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tJHt0aGVtZX1gXTogdGhlbWUsXG4gICAgICAgIFtgJHtwcmVmaXh9LXJlc2l6YWJsZWBdOiByZXNpemUgIT09IFwibm9uZVwiLFxuICAgICAgICBbYCR7cHJlZml4fS1kaXNhYmxlZGBdOiBkaXNhYmxlZCxcbiAgICAgICAgW2Ake3ByZWZpeH0tbGltaXRlZGBdOiAhIWxpbWl0LFxuICAgICAgICBbYCR7cHJlZml4fS1ub3JtYWxgXTogaW50ZW50ID09PSBcIm5vcm1hbFwiLFxuICAgICAgICBbYCR7cHJlZml4fS1wcmltYXJ5YF06IGludGVudCA9PT0gXCJwcmltYXJ5XCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LXN1Y2Nlc3NgXTogaW50ZW50ID09PSBcInN1Y2Nlc3NcIixcbiAgICAgICAgW2Ake3ByZWZpeH0td2FybmluZ2BdOiBpbnRlbnQgPT09IFwid2FybmluZ1wiLFxuICAgICAgICBbYCR7cHJlZml4fS1kYW5nZXJgXTpcbiAgICAgICAgICBpbnRlbnQgPT09IFwiZGFuZ2VyXCIgfHwgKGxlbmd0aCAmJiBsaW1pdCAmJiBsZW5ndGggPiBsaW1pdCksXG4gICAgICAgIFtgJHtwcmVmaXh9LWZvY3VzZWRgXTogZm9jdXNlZCxcbiAgICAgIH1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzU2V0fSB7Li4ub3RoZXJQcm9wc30+XG4gICAgICAgIDx0ZXh0YXJlYSB7Li4udGV4dGFyZWFQcm9wc30gLz5cbiAgICAgICAgeyEhbGltaXQgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWxpbWl0YH0+XG4gICAgICAgICAgICA8c3Bhbj57YCR7bGVuZ3RofS8ke2xpbWl0fWB9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG4pXG5cblRleHRhcmVhLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgKi9cbiAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5piv5ZCm5oyJ54Wn5LiA5Liq5rGJ5a2X566XIDIg5a2X5pWw55qE5pa55byP6ZmQ5Yi26ZW/5bqmXG4gICAqL1xuICBjb3VudEhhbnppOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDovpPlhaXmoYbnmoQgaWRcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5L2c55So5YiwIGlucHV0IOWFg+e0oOeahOexu+WQjVxuICAgKi9cbiAgaW5wdXRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDkvZznlKjliLAgaW5wdXQg5YWD57Sg55qE5qC35byPXG4gICAqL1xuICBpbnB1dFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICog6K6+572u57G75Z6LXG4gICAqL1xuICBpbnRlbnQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgXCJub3JtYWxcIixcbiAgICBcInByaW1hcnlcIixcbiAgICBcInN1Y2Nlc3NcIixcbiAgICBcIndhcm5pbmdcIixcbiAgICBcImRhbmdlclwiLFxuICBdKSxcbiAgLyoqXG4gICAqIOmZkOWItumVv+W6plxuICAgKi9cbiAgbGltaXQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiB0ZXh0YXJlYSDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBuYW1lXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogYmx1ciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOWAvOaUueWPmOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBmb2N1cyDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBrZXlkb3duIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogZW50ZXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uUHJlc3NFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBzY3JvbGwg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uU2Nyb2xsOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIHBsYWNlaG9sZGVyXG4gICAqL1xuICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIHJlcXVpcmVkXG4gICAqL1xuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDmmK/lkKbmlK/mjIHosIPmlbTlpKflsI9cbiAgICovXG4gIHJlc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm5vbmVcIiwgXCJib3RoXCIsIFwiaG9yaXpvbnRhbFwiLCBcInZlcnRpY2FsXCJdKSxcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZihbbnVsbCwgXCJsaWdodFwiXSksXG4gIC8qKlxuICAgKiB0ZXh0YXJlYSDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSB0eXBlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5YC8IC0g5aSW6YOo5o6n5Yi2XG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbn1cblxuVGV4dGFyZWEuZGVmYXVsdFByb3BzID0ge1xuICBhdXRvRm9jdXM6IGZhbHNlLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgY291bnRIYW56aTogdHJ1ZSxcbiAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGlkOiBudWxsLFxuICBpbnB1dENsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBpbnB1dFN0eWxlOiB7fSxcbiAgaW50ZW50OiBcIm5vcm1hbFwiLFxuICBsaW1pdDogbnVsbCxcbiAgbmFtZTogbnVsbCxcbiAgb25CbHVyOiBub29wLFxuICBvbkNoYW5nZTogbm9vcCxcbiAgb25Gb2N1czogbm9vcCxcbiAgb25LZXlEb3duOiBub29wLFxuICBvblByZXNzRW50ZXI6IG5vb3AsXG4gIG9uU2Nyb2xsOiBub29wLFxuICBwbGFjZWhvbGRlcjogXCLor7fovpPlhaVcIixcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuICByZXNpemU6IFwibm9uZVwiLFxuICBzaXplOiBcInNtYWxsXCIsXG4gIHRoZW1lOiBudWxsLFxuICB0eXBlOiBudWxsLFxuICB2YWx1ZTogbnVsbCxcbn1cblxuVGV4dGFyZWEuZGlzcGxheU5hbWUgPSBcIlRleHRhcmVhXCJcblxuZXhwb3J0IGRlZmF1bHQgVGV4dGFyZWFcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBQSxPQUFBO0FBQWdCLElBQUFNLFNBQUE7QUFBQSxTQUFBSix1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUseUJBQUFGLENBQUEsNkJBQUFHLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUQsd0JBQUEsWUFBQUEseUJBQUFGLENBQUEsV0FBQUEsQ0FBQSxHQUFBSyxDQUFBLEdBQUFELENBQUEsS0FBQUosQ0FBQTtBQUFBLFNBQUFSLHdCQUFBUSxDQUFBLEVBQUFJLENBQUEsU0FBQUEsQ0FBQSxJQUFBSixDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLGVBQUFBLENBQUEsZ0JBQUFNLE9BQUEsQ0FBQU4sQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBSyxDQUFBLEdBQUFILHdCQUFBLENBQUFFLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFFLEdBQUEsQ0FBQVAsQ0FBQSxVQUFBSyxDQUFBLENBQUFHLEdBQUEsQ0FBQVIsQ0FBQSxPQUFBUyxD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