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>

263 lines (211 loc) 29.8 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 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"); var _button = _interopRequireDefault(require("../button")); var _input = _interopRequireDefault(require("../input")); require("./style"); var _excluded = ["align", "className", "current", "defaultCurrent", "disabled", "hideWhenSinglePage", "onChange", "pageSize", "showButtonJumper", "showInputJumper", "size", "theme", "total"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var noop = function noop() {}; var prefix = "adui-pagination"; var Pagination = function Pagination(_ref) { var align = _ref.align, className = _ref.className, currentProp = _ref.current, defaultCurrent = _ref.defaultCurrent, disabled = _ref.disabled, hideWhenSinglePage = _ref.hideWhenSinglePage, onChange = _ref.onChange, pageSize = _ref.pageSize, showButtonJumper = _ref.showButtonJumper, showInputJumper = _ref.showInputJumper, sizeProp = _ref.size, theme = _ref.theme, total = _ref.total, otherProps = _objectWithoutProperties(_ref, _excluded); var _useState = (0, _react.useState)((currentProp !== null ? currentProp : defaultCurrent) || 1), _useState2 = _slicedToArray(_useState, 2), current = _useState2[0], setCurrent = _useState2[1]; var _useState3 = (0, _react.useState)(""), _useState4 = _slicedToArray(_useState3, 2), inputValue = _useState4[0], setInputValue = _useState4[1]; if (currentProp !== null && currentProp !== undefined && current !== currentProp) { setCurrent(currentProp); } var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext); var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), _defineProperty({}, "".concat(prefix, "-").concat(align), align)); (0, _warning["default"])(Number.isInteger(current), "Pagination", "current 值需要是正整数"); (0, _warning["default"])(!(current < 1 || current > Math.ceil((total || 0) / (pageSize || 10)) && current !== 1), "Pagination", "current \u9700\u8981\u65F6\u5728\u6B63\u786E\u8303\u56F4\u5185\u7684\u6B63\u6574\u6570\uFF0Ctotal: ".concat(total, "\uFF0CpageSize\uFF1A").concat(pageSize)); var pageNumber = 1; if (total && pageSize) { pageNumber = Math.max(Math.ceil(total / pageSize), 1); } var prevDisabled = current === 1; var nextDisabled = current === pageNumber; if (pageNumber === 1 && hideWhenSinglePage) { return null; } var handleJump = function handleJump(type) { var newPage; switch (type) { case "first": newPage = 1; break; case "prev": newPage = current - 1; break; case "next": newPage = current + 1; break; case "last": if (total && pageSize) { newPage = Math.max(Math.ceil(total / pageSize), 1); } break; default: } if (newPage && pageSize) { if (currentProp === null) { setCurrent(newPage); } if (onChange) { onChange(newPage, pageSize); } } }; var handleInputJump = function handleInputJump() { var parsevalue = parseInt(inputValue, 10); if (isNaN(parsevalue)) { return; } var value = Math.max(parsevalue, 1); if (total && pageSize) { value = Math.min(value, Math.max(Math.ceil(total / pageSize), 1)); } if (currentProp === null) { setCurrent(value); } if (onChange) { onChange(value, pageSize); } }; return _react["default"].createElement("div", _extends({ className: classSet, "data-current": current }, otherProps), showButtonJumper && _react["default"].createElement(_button["default"], { disabled: disabled, style: { marginRight: "8px" }, leftIcon: "arrow-left-first", size: size, theme: theme, onClick: function onClick() { if (!prevDisabled) handleJump("first"); } }), _react["default"].createElement(_button["default"], { disabled: disabled, leftIcon: "arrow-left", size: size, theme: theme, onClick: function onClick() { if (!prevDisabled) handleJump("prev"); } }), _react["default"].createElement("span", { className: "".concat(prefix, "-text") }, current, " / ", pageNumber), _react["default"].createElement(_button["default"], { disabled: disabled, leftIcon: "arrow-right", size: size, theme: theme, onClick: function onClick() { if (!nextDisabled) handleJump("next"); } }), showButtonJumper && _react["default"].createElement(_button["default"], { disabled: disabled, style: { marginLeft: "8px" }, leftIcon: "arrow-right-last", size: size, theme: theme, onClick: function onClick() { if (!nextDisabled) handleJump("last"); } }), showInputJumper && [_react["default"].createElement(_input["default"], { disabled: disabled, key: 0, className: "".concat(prefix, "-input"), placeholder: "\u9875\u7801", size: size, theme: theme, onChange: function onChange(e) { return setInputValue(e.target.value); }, onPressEnter: handleInputJump }), _react["default"].createElement(_button["default"], { disabled: disabled, key: 1, size: size, theme: theme, onClick: handleInputJump }, "\u8DF3\u8F6C")]); }; Pagination.displayName = "Pagination"; Pagination.propTypes = { align: _propTypes["default"].oneOf(["left", "center", "right"]), className: _propTypes["default"].string, current: _propTypes["default"].number, defaultCurrent: _propTypes["default"].number, disabled: _propTypes["default"].bool, hideWhenSinglePage: _propTypes["default"].bool, onChange: _propTypes["default"].func, pageSize: _propTypes["default"].number, showButtonJumper: _propTypes["default"].bool, showInputJumper: _propTypes["default"].bool, size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), theme: _propTypes["default"].oneOf([null, "light"]), total: _propTypes["default"].number }; Pagination.defaultProps = { align: undefined, className: undefined, current: null, defaultCurrent: 1, disabled: false, hideWhenSinglePage: true, onChange: noop, pageSize: 10, showButtonJumper: false, showInputJumper: false, size: "small", theme: null, total: 0 }; var _default = Pagination; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub29wIiwicHJlZml4IiwiUGFnaW5hdGlvbiIsImFsaWduIiwiY2xhc3NOYW1lIiwiY3VycmVudFByb3AiLCJjdXJyZW50IiwiZGVmYXVsdEN1cnJlbnQiLCJkaXNhYmxlZCIsImhpZGVXaGVuU2luZ2xlUGFnZSIsIm9uQ2hhbmdlIiwicGFnZVNpemUiLCJzaG93QnV0dG9uSnVtcGVyIiwic2hvd0lucHV0SnVtcGVyIiwic2l6ZVByb3AiLCJzaXplIiwidGhlbWUiLCJ0b3RhbCIsIm90aGVyUHJvcHMiLCJ1c2VTdGF0ZSIsInNldEN1cnJlbnQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsInVuZGVmaW5lZCIsInVzZUNvbnRleHQiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbnRleHQiLCJnZXRDb21wdXRlZFNpemUiLCJjbGFzc1NldCIsImNsYXNzTmFtZXMiLCJ3YXJuaW5nIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiTWF0aCIsImNlaWwiLCJwYWdlTnVtYmVyIiwibWF4IiwicHJldkRpc2FibGVkIiwibmV4dERpc2FibGVkIiwiaGFuZGxlSnVtcCIsInR5cGUiLCJuZXdQYWdlIiwiaGFuZGxlSW5wdXRKdW1wIiwicGFyc2V2YWx1ZSIsInBhcnNlSW50IiwiaXNOYU4iLCJ2YWx1ZSIsIm1pbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImUiLCJ0YXJnZXQiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9uZU9mIiwic3RyaW5nIiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJkZWZhdWx0UHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL3BhZ2luYXRpb24vUGFnaW5hdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHdhcm5pbmcgZnJvbSBcIi4uL191dGlsL3dhcm5pbmdcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCwgZ2V0Q29tcHV0ZWRTaXplIH0gZnJvbSBcIi4uL2NvbmZpZy1wcm92aWRlclwiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9idXR0b25cIlxuaW1wb3J0IElucHV0IGZyb20gXCIuLi9pbnB1dFwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5jb25zdCBwcmVmaXggPSBcImFkdWktcGFnaW5hdGlvblwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25Qcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog5a+56b2Q5pa55byPXG4gICAqL1xuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIlxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOW9k+WJjemhteaVsFxuICAgKi9cbiAgY3VycmVudD86IG51bWJlciB8IG51bGxcbiAgLyoqXG4gICAqIOm7mOiupOeahOW9k+WJjemhteaVsFxuICAgKi9cbiAgZGVmYXVsdEN1cnJlbnQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIOaYr+WQpuemgeeUqFxuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiDlj6rmnInkuIDpobXml7YgcmV0dXJuIG51bGxcbiAgICovXG4gIGhpZGVXaGVuU2luZ2xlUGFnZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOW9k+WJjemhteWPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86IChuZXdQYWdlOiBudW1iZXIsIHBhZ2VTaXplPzogbnVtYmVyKSA9PiB2b2lkXG4gIC8qKlxuICAgKiDorr7nva7mr4/pobXmnaHmlbDvvIzpu5jorqQgMTAg5p2hXG4gICAqL1xuICBwYWdlU2l6ZT86IG51bWJlclxuICAvKipcbiAgICog5piv5ZCm5pi+56S66aaW6aG15bC+6aG16Lez6L2s5oyJ6ZKuXG4gICAqL1xuICBzaG93QnV0dG9uSnVtcGVyPzogYm9vbGVhblxuICAvKipcbiAgICog5piv5ZCm5pi+56S66Lez6L2s6L6T5YWl5qGGXG4gICAqL1xuICBzaG93SW5wdXRKdW1wZXI/OiBib29sZWFuXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU/OiBudWxsIHwgXCJsaWdodFwiXG4gIC8qKlxuICAgKiDmlbDmja7mgLvmlbBcbiAgICovXG4gIHRvdGFsPzogbnVtYmVyXG59XG5cbi8qKlxuICog5YiG6aG15Zmo55So5LqO5bCG5aSn6YeP5YaF5a655Lul5YiG6aG15b2i5byP6Ze06ZqU77yM5YiH5o2i6YCJ5oup5p+l55yL44CCXG4gKi9cbmNvbnN0IFBhZ2luYXRpb246IFJlYWN0LkZDPElQYWdpbmF0aW9uUHJvcHM+ID0gKHtcbiAgYWxpZ24sXG4gIGNsYXNzTmFtZSxcbiAgY3VycmVudDogY3VycmVudFByb3AsXG4gIGRlZmF1bHRDdXJyZW50LFxuICBkaXNhYmxlZCxcbiAgaGlkZVdoZW5TaW5nbGVQYWdlLFxuICBvbkNoYW5nZSxcbiAgcGFnZVNpemUsXG4gIHNob3dCdXR0b25KdW1wZXIsXG4gIHNob3dJbnB1dEp1bXBlcixcbiAgc2l6ZTogc2l6ZVByb3AsXG4gIHRoZW1lLFxuICB0b3RhbCxcbiAgLi4ub3RoZXJQcm9wc1xufTogSVBhZ2luYXRpb25Qcm9wcykgPT4ge1xuICBjb25zdCBbY3VycmVudCwgc2V0Q3VycmVudF0gPSB1c2VTdGF0ZTxudW1iZXI+KFxuICAgIChjdXJyZW50UHJvcCAhPT0gbnVsbCA/IGN1cnJlbnRQcm9wIDogZGVmYXVsdEN1cnJlbnQpIHx8IDFcbiAgKVxuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKVxuXG4gIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgaWYgKFxuICAgIGN1cnJlbnRQcm9wICE9PSBudWxsICYmXG4gICAgY3VycmVudFByb3AgIT09IHVuZGVmaW5lZCAmJlxuICAgIGN1cnJlbnQgIT09IGN1cnJlbnRQcm9wXG4gICkge1xuICAgIHNldEN1cnJlbnQoY3VycmVudFByb3ApXG4gIH1cblxuICBjb25zdCB7IHNpemU6IHNpemVDb250ZXh0IH0gPSB1c2VDb250ZXh0KENvbmZpZ0NvbnRleHQpXG4gIGNvbnN0IHNpemUgPSBnZXRDb21wdXRlZFNpemUoc2l6ZVByb3AsIHNpemVDb250ZXh0KVxuXG4gIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICBjbGFzc05hbWUsXG4gICAgYCR7cHJlZml4fS1iYXNlYCxcbiAgICBgJHtwcmVmaXh9LSR7c2l6ZX1gLFxuICAgIHtcbiAgICAgIFtgJHtwcmVmaXh9LSR7YWxpZ259YF06IGFsaWduLFxuICAgIH1cbiAgKVxuXG4gIHdhcm5pbmcoTnVtYmVyLmlzSW50ZWdlcihjdXJyZW50KSwgXCJQYWdpbmF0aW9uXCIsIFwiY3VycmVudCDlgLzpnIDopoHmmK/mraPmlbTmlbBcIilcblxuICB3YXJuaW5nKFxuICAgICEoXG4gICAgICBjdXJyZW50IDwgMSB8fFxuICAgICAgKGN1cnJlbnQgPiBNYXRoLmNlaWwoKHRvdGFsIHx8IDApIC8gKHBhZ2VTaXplIHx8IDEwKSkgJiYgY3VycmVudCAhPT0gMSlcbiAgICApLFxuICAgIFwiUGFnaW5hdGlvblwiLFxuICAgIGBjdXJyZW50IOmcgOimgeaXtuWcqOato+ehruiMg+WbtOWGheeahOato+aVtOaVsO+8jHRvdGFsOiAke3RvdGFsfe+8jHBhZ2VTaXpl77yaJHtwYWdlU2l6ZX1gXG4gIClcblxuICBsZXQgcGFnZU51bWJlciA9IDFcbiAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgcGFnZU51bWJlciA9IE1hdGgubWF4KE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSwgMSlcbiAgfVxuICBjb25zdCBwcmV2RGlzYWJsZWQgPSBjdXJyZW50ID09PSAxXG4gIGNvbnN0IG5leHREaXNhYmxlZCA9IGN1cnJlbnQgPT09IHBhZ2VOdW1iZXJcblxuICBpZiAocGFnZU51bWJlciA9PT0gMSAmJiBoaWRlV2hlblNpbmdsZVBhZ2UpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlSnVtcCA9ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgbmV3UGFnZVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImZpcnN0XCI6XG4gICAgICAgIG5ld1BhZ2UgPSAxXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwicHJldlwiOlxuICAgICAgICBuZXdQYWdlID0gY3VycmVudCAtIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0XCI6XG4gICAgICAgIG5ld1BhZ2UgPSBjdXJyZW50ICsgMVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImxhc3RcIjpcbiAgICAgICAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgICAgICAgbmV3UGFnZSA9IE1hdGgubWF4KE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSwgMSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAobmV3UGFnZSAmJiBwYWdlU2l6ZSkge1xuICAgICAgaWYgKGN1cnJlbnRQcm9wID09PSBudWxsKSB7XG4gICAgICAgIHNldEN1cnJlbnQobmV3UGFnZSlcbiAgICAgIH1cbiAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShuZXdQYWdlLCBwYWdlU2l6ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dEp1bXAgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyc2V2YWx1ZSA9IHBhcnNlSW50KGlucHV0VmFsdWUsIDEwKVxuICAgIGlmIChpc05hTihwYXJzZXZhbHVlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxldCB2YWx1ZSA9IE1hdGgubWF4KHBhcnNldmFsdWUsIDEpXG4gICAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgICB2YWx1ZSA9IE1hdGgubWluKHZhbHVlLCBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpKVxuICAgIH1cbiAgICBpZiAoY3VycmVudFByb3AgPT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnQodmFsdWUpXG4gICAgfVxuICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UodmFsdWUsIHBhZ2VTaXplKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzU2V0fSBkYXRhLWN1cnJlbnQ9e2N1cnJlbnR9IHsuLi5vdGhlclByb3BzfT5cbiAgICAgIHtzaG93QnV0dG9uSnVtcGVyICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogXCI4cHhcIiB9fVxuICAgICAgICAgIGxlZnRJY29uPVwiYXJyb3ctbGVmdC1maXJzdFwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFwcmV2RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJmaXJzdFwiKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGxlZnRJY29uPVwiYXJyb3ctbGVmdFwiXG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIGlmICghcHJldkRpc2FibGVkKSBoYW5kbGVKdW1wKFwicHJldlwiKVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7cHJlZml4fS10ZXh0YH0+XG4gICAgICAgIHtjdXJyZW50fSAvIHtwYWdlTnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGxlZnRJY29uPVwiYXJyb3ctcmlnaHRcIlxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBpZiAoIW5leHREaXNhYmxlZCkgaGFuZGxlSnVtcChcIm5leHRcIilcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICB7c2hvd0J1dHRvbkp1bXBlciAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogXCI4cHhcIiB9fVxuICAgICAgICAgIGxlZnRJY29uPVwiYXJyb3ctcmlnaHQtbGFzdFwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFuZXh0RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJsYXN0XCIpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7c2hvd0lucHV0SnVtcGVyICYmIFtcbiAgICAgICAgPElucHV0XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGtleT17MH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5wdXRgfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6aG156CBXCJcbiAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgb25QcmVzc0VudGVyPXtoYW5kbGVJbnB1dEp1bXB9XG4gICAgICAgIC8+LFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGtleT17MX1cbiAgICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVJbnB1dEp1bXB9XG4gICAgICAgID5cbiAgICAgICAgICDot7PovaxcbiAgICAgICAgPC9CdXR0b24+LFxuICAgICAgXX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5QYWdpbmF0aW9uLmRpc3BsYXlOYW1lID0gXCJQYWdpbmF0aW9uXCJcblxuUGFnaW5hdGlvbi5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiDlr7npvZDmlrnlvI9cbiAgICovXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoW1wibGVmdFwiLCBcImNlbnRlclwiLCBcInJpZ2h0XCJdKSxcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5b2T5YmN6aG15pWwXG4gICAqL1xuICBjdXJyZW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog6buY6K6k55qE5b2T5YmN6aG15pWwXG4gICAqL1xuICBkZWZhdWx0Q3VycmVudDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOaYr+WQpuemgeeUqFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog5Y+q5pyJ5LiA6aG15pe2IHJldHVybiBudWxsXG4gICAqL1xuICBoaWRlV2hlblNpbmdsZVBhZ2U6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog5b2T5YmN6aG15Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOiuvue9ruavj+mhteadoeaVsO+8jOm7mOiupCAxMCDmnaFcbiAgICovXG4gIHBhZ2VTaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5piv5ZCm5pi+56S66aaW6aG15bC+6aG16Lez6L2s5oyJ6ZKuXG4gICAqL1xuICBzaG93QnV0dG9uSnVtcGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuui3s+i9rOi+k+WFpeahhlxuICAgKi9cbiAgc2hvd0lucHV0SnVtcGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZihbbnVsbCwgXCJsaWdodFwiXSksXG4gIC8qKlxuICAgKiDmlbDmja7mgLvmlbBcbiAgICovXG4gIHRvdGFsOiBQcm9wVHlwZXMubnVtYmVyLFxufVxuXG5QYWdpbmF0aW9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgYWxpZ246IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gIGN1cnJlbnQ6IG51bGwsXG4gIGRlZmF1bHRDdXJyZW50OiAxLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGhpZGVXaGVuU2luZ2xlUGFnZTogdHJ1ZSxcbiAgb25DaGFuZ2U6IG5vb3AsXG4gIHBhZ2VTaXplOiAxMCxcbiAgc2hvd0J1dHRvbkp1bXBlcjogZmFsc2UsXG4gIHNob3dJbnB1dEp1bXBlcjogZmFsc2UsXG4gIHNpemU6IFwic21hbGxcIixcbiAgdGhlbWU6IG51bGwsXG4gIHRvdGFsOiAwLFxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxJQUFJLEdBQUcsU0FBUEEsSUFBTyxHQUFNLENBQUUsQ0FBckI7O0FBQ0EsSUFBTUMsTUFBTSxHQUFHLGlCQUFmOztBQTZEQSxJQUFNQyxVQUFzQyxHQUFHLFNBQXpDQSxVQUF5QyxPQWV2QjtFQUFBLElBZHRCQyxLQWNzQixRQWR0QkEsS0Fjc0I7RUFBQSxJQWJ0QkMsU0Fhc0IsUUFidEJBLFNBYXNCO0VBQUEsSUFaYkMsV0FZYSxRQVp0QkMsT0FZc0I7RUFBQSxJQVh0QkMsY0FXc0IsUUFYdEJBLGNBV3NCO0VBQUEsSUFWdEJDLFFBVXNCLFFBVnRCQSxRQVVzQjtFQUFBLElBVHRCQyxrQkFTc0IsUUFUdEJBLGtCQVNzQjtFQUFBLElBUnRCQyxRQVFzQixRQVJ0QkEsUUFRc0I7RUFBQSxJQVB0QkMsUUFPc0IsUUFQdEJBLFFBT3NCO0VBQUEsSUFOdEJDLGdCQU1zQixRQU50QkEsZ0JBTXNCO0VBQUEsSUFMdEJDLGVBS3NCLFFBTHRCQSxlQUtzQjtFQUFBLElBSmhCQyxRQUlnQixRQUp0QkMsSUFJc0I7RUFBQSxJQUh0QkMsS0FHc0IsUUFIdEJBLEtBR3NCO0VBQUEsSUFGdEJDLEtBRXNCLFFBRnRCQSxLQUVzQjtFQUFBLElBRG5CQyxVQUNtQjs7RUFDdEIsZ0JBQThCLElBQUFDLGVBQUEsRUFDNUIsQ0FBQ2QsV0FBVyxLQUFLLElBQWhCLEdBQXVCQSxXQUF2QixHQUFxQ0UsY0FBdEMsS0FBeUQsQ0FEN0IsQ0FBOUI7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