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>

198 lines (197 loc) 33.9 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); } var React = _interopRequireWildcard(require("react")); var _enzyme = require("enzyme"); var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer")); var _ = _interopRequireDefault(require("..")); 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 _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); } window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(function () { return { disconnect: jest.fn(), observe: jest.fn(), unobserve: jest.fn() }; }); var Column = _["default"].Column; var dataSource = [{ key: 0, one: "第一项" }, { key: 1, one: "第二项" }, { key: 2, one: "第三项" }]; var RadioMounter = function (_React$Component) { function RadioMounter() { var _this; _classCallCheck(this, RadioMounter); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, RadioMounter, [].concat(args)); _this.state = { keys: null }; return _this; } _inherits(RadioMounter, _React$Component); return _createClass(RadioMounter, [{ key: "render", value: function render() { var _this2 = this; var keys = this.state.keys; return React.createElement(_["default"], { dataSource: dataSource, selectedRowKeys: keys, selectMultiple: false, onSelectChange: function onSelectChange(args) { return _this2.setState({ keys: args }); } }, React.createElement(Column, { title: "one", dataIndex: "one" })); } }]); }(React.Component); describe("disabled 验证", function () { it("单选", function () { var onSelectChange = jest.fn(); var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { dataSource: dataSource, onSelectChange: onSelectChange, defaultSelectedRowKeys: [1], selectMultiple: false, getSelectProps: function getSelectProps(row) { if (row) { if (row.key === 0 || row.key === 1) { return { disabled: true }; } } return {}; } }, React.createElement(Column, { title: "one", dataIndex: "one" }))); wrapper.find(".adui-radio-indicator").at(0).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1]); wrapper.find(".adui-radio-indicator").at(1).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1]); wrapper.find(".adui-radio-indicator").at(2).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([2]); }); it("多选", function () { var onSelectChange = jest.fn(); var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { dataSource: dataSource, onSelectChange: onSelectChange, defaultSelectedRowKeys: [1, "多余项"], selectMultiple: true, getSelectProps: function getSelectProps(row) { if (row) { if (row.key === 0 || row.key === 1) { return { disabled: true }; } } return {}; } }, React.createElement(Column, { title: "one", dataIndex: "one" }))); wrapper.find(".adui-checkbox-indicator").at(0).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1, "多余项", 2]); wrapper.find(".adui-checkbox-indicator").at(0).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1, "多余项"]); wrapper.find(".adui-checkbox-indicator").at(3).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1, "多余项", 2]); wrapper.find(".adui-checkbox-indicator").at(3).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1, "多余项"]); }); }); describe("base", function () { it("快照核对", function () { var wrapper = _reactTestRenderer["default"].create(React.createElement(_["default"], { dataSource: dataSource, defaultSelectedRowKeys: [1], selectMultiple: false, onSelectChange: function onSelectChange() {} }, React.createElement(Column, { title: "one", dataIndex: "one" }))); expect(wrapper).toMatchSnapshot(); }); it("是否能内部驱动", function () { var onSelectChange = jest.fn(); var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { dataSource: dataSource, onSelectChange: onSelectChange, defaultSelectedRowKeys: [1], selectMultiple: false }, React.createElement(Column, { title: "one", dataIndex: "one" }))); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([1]); wrapper.find(".adui-radio-indicator").at(0).simulate("click"); expect(wrapper.find("Table").state().selectedRowKeys).toEqual([0]); }); it("是否能外部控制", function () { var onSelectChange = jest.fn(); var wrapper0 = (0, _enzyme.mount)(React.createElement(_["default"], { dataSource: dataSource, onSelectChange: onSelectChange, selectedRowKeys: [1], selectMultiple: false }, React.createElement(Column, { title: "one", dataIndex: "one" }))); expect(wrapper0.find("Table").state().selectedRowKeys).toEqual([1]); wrapper0.find(".adui-radio-indicator").at(0).simulate("click"); expect(wrapper0.find("Table").state().selectedRowKeys).toEqual([1]); var wrapper1 = (0, _enzyme.mount)(React.createElement(RadioMounter, null)); expect(wrapper1.find("Table").state().selectedRowKeys).toEqual([]); wrapper1.find(".adui-radio-indicator").at(0).simulate("click"); expect(wrapper1.find("Table").state().selectedRowKeys).toEqual([0]); }); it("是否支持 selectOnRowClick", function () { var onSelectChange = jest.fn(); var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { dataSource: dataSource, defaultSelectedRowKeys: [1], onSelectChange: onSelectChange, selectOnRowClick: true }, React.createElement(Column, { title: "one", dataIndex: "one" }))); wrapper.find('[role="row"]').at(0).simulate("click"); expect(onSelectChange).toHaveBeenCalledWith([1, 0]); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfcmVhY3RUZXN0UmVuZGVyZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiXyIsImUiLCJfX2VzTW9kdWxlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiV2Vha01hcCIsInIiLCJ0IiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jbGFzc0NhbGxDaGVjayIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwibGVuZ3RoIiwibyIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG90eXBlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJ3aW5kb3ciLCJSZXNpemVPYnNlcnZlciIsImplc3QiLCJmbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwiQ29sdW1uIiwiVGFibGUiLCJkYXRhU291cmNlIiwib25lIiwiUmFkaW9Nb3VudGVyIiwiX1JlYWN0JENvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJzdGF0ZSIsImtleXMiLCJyZW5kZXIiLCJfdGhpczIiLCJjcmVhdGVFbGVtZW50Iiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0TXVsdGlwbGUiLCJvblNlbGVjdENoYW5nZSIsInNldFN0YXRlIiwidGl0bGUiLCJkYXRhSW5kZXgiLCJDb21wb25lbnQiLCJkZXNjcmliZSIsIml0Iiwid3JhcHBlciIsIm1vdW50IiwiZGVmYXVsdFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdFByb3BzIiwicm93IiwiZGlzYWJsZWQiLCJmaW5kIiwiYXQiLCJzaW11bGF0ZSIsImV4cGVjdCIsInRvRXF1YWwiLCJUZXN0UmVuZGVyZXIiLCJ0b01hdGNoU25hcHNob3QiLCJ3cmFwcGVyMCIsIndyYXBwZXIxIiwic2VsZWN0T25Sb3dDbGljayIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy90YWJsZS9fX3Rlc3RzX18vc2VsZWN0Um93LnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gXCJlbnp5bWVcIlxuaW1wb3J0IFRlc3RSZW5kZXJlciBmcm9tIFwicmVhY3QtdGVzdC1yZW5kZXJlclwiXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uXCJcblxud2luZG93LlJlc2l6ZU9ic2VydmVyID1cbiAgd2luZG93LlJlc2l6ZU9ic2VydmVyIHx8XG4gIGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBkaXNjb25uZWN0OiBqZXN0LmZuKCksXG4gICAgb2JzZXJ2ZTogamVzdC5mbigpLFxuICAgIHVub2JzZXJ2ZTogamVzdC5mbigpLFxuICB9KSlcblxuY29uc3QgeyBDb2x1bW4gfSA9IFRhYmxlXG5cbmNvbnN0IGRhdGFTb3VyY2UgPSBbXG4gIHtcbiAgICBrZXk6IDAsXG4gICAgb25lOiBcIuesrOS4gOmhuVwiLFxuICB9LFxuICB7XG4gICAga2V5OiAxLFxuICAgIG9uZTogXCLnrKzkuozpoblcIixcbiAgfSxcbiAge1xuICAgIGtleTogMixcbiAgICBvbmU6IFwi56ys5LiJ6aG5XCIsXG4gIH0sXG5dXG5cbmNsYXNzIFJhZGlvTW91bnRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIGtleXM6IG51bGwsXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBrZXlzIH0gPSB0aGlzLnN0YXRlXG4gICAgcmV0dXJuIChcbiAgICAgIDxUYWJsZVxuICAgICAgICBkYXRhU291cmNlPXtkYXRhU291cmNlfVxuICAgICAgICBzZWxlY3RlZFJvd0tleXM9e2tleXN9XG4gICAgICAgIHNlbGVjdE11bHRpcGxlPXtmYWxzZX1cbiAgICAgICAgb25TZWxlY3RDaGFuZ2U9eyhhcmdzKSA9PiB0aGlzLnNldFN0YXRlKHsga2V5czogYXJncyB9KX1cbiAgICAgID5cbiAgICAgICAgPENvbHVtbiB0aXRsZT1cIm9uZVwiIGRhdGFJbmRleD1cIm9uZVwiIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgfVxufVxuXG5kZXNjcmliZShcImRpc2FibGVkIOmqjOivgVwiLCAoKSA9PiB7XG4gIGl0KFwi5Y2V6YCJXCIsICgpID0+IHtcbiAgICBjb25zdCBvblNlbGVjdENoYW5nZSA9IGplc3QuZm4oKVxuICAgIC8qKlxuICAgICAqIOaooeaLn+WJjeS4pOmhueemgeatou+8jOWFtuS4reS4gOS4quS4uuacqumAieS4re+8jOWPpuS4gOS4quS4uuW3sumAieS4rVxuICAgICAqL1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxUYWJsZVxuICAgICAgICBkYXRhU291cmNlPXtkYXRhU291cmNlfVxuICAgICAgICBvblNlbGVjdENoYW5nZT17b25TZWxlY3RDaGFuZ2V9XG4gICAgICAgIGRlZmF1bHRTZWxlY3RlZFJvd0tleXM9e1sxXX1cbiAgICAgICAgc2VsZWN0TXVsdGlwbGU9e2ZhbHNlfVxuICAgICAgICBnZXRTZWxlY3RQcm9wcz17KHJvdykgPT4ge1xuICAgICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICAgIGlmIChyb3cua2V5ID09PSAwIHx8IHJvdy5rZXkgPT09IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge31cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPENvbHVtbiB0aXRsZT1cIm9uZVwiIGRhdGFJbmRleD1cIm9uZVwiIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1yYWRpby1pbmRpY2F0b3JcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJUYWJsZVwiKS5zdGF0ZSgpLnNlbGVjdGVkUm93S2V5cykudG9FcXVhbChbMV0pXG4gICAgd3JhcHBlci5maW5kKFwiLmFkdWktcmFkaW8taW5kaWNhdG9yXCIpLmF0KDEpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiVGFibGVcIikuc3RhdGUoKS5zZWxlY3RlZFJvd0tleXMpLnRvRXF1YWwoWzFdKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXJhZGlvLWluZGljYXRvclwiKS5hdCgyKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFsyXSlcbiAgfSlcblxuICBpdChcIuWkmumAiVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZWxlY3RDaGFuZ2UgPSBqZXN0LmZuKClcbiAgICAvKipcbiAgICAgKiDmqKHmi5/liY3kuKTpobnnpoHmraLvvIzlhbbkuK3kuIDkuKrkuLrmnKrpgInkuK3vvIzlj6bkuIDkuKrkuLrlt7LpgInkuK1cbiAgICAgKi9cbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8VGFibGVcbiAgICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgICAgICAgb25TZWxlY3RDaGFuZ2U9e29uU2VsZWN0Q2hhbmdlfVxuICAgICAgICBkZWZhdWx0U2VsZWN0ZWRSb3dLZXlzPXtbMSwgXCLlpJrkvZnpoblcIl19XG4gICAgICAgIHNlbGVjdE11bHRpcGxlXG4gICAgICAgIGdldFNlbGVjdFByb3BzPXsocm93KSA9PiB7XG4gICAgICAgICAgaWYgKHJvdykge1xuICAgICAgICAgICAgaWYgKHJvdy5rZXkgPT09IDAgfHwgcm93LmtleSA9PT0gMSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8Q29sdW1uIHRpdGxlPVwib25lXCIgZGF0YUluZGV4PVwib25lXCIgLz5cbiAgICAgIDwvVGFibGU+XG4gICAgKVxuICAgIC8vIOWkmumAieaXtuaJvuWIsOeahOesrOS4gOS4quWFg+e0oOaYr+WFqOmAieahhlxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNoZWNrYm94LWluZGljYXRvclwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFtcbiAgICAgIDEsXG4gICAgICBcIuWkmuS9memhuVwiLFxuICAgICAgMixcbiAgICBdKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNoZWNrYm94LWluZGljYXRvclwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFsxLCBcIuWkmuS9memhuVwiXSlcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jaGVja2JveC1pbmRpY2F0b3JcIikuYXQoMykuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJUYWJsZVwiKS5zdGF0ZSgpLnNlbGVjdGVkUm93S2V5cykudG9FcXVhbChbXG4gICAgICAxLFxuICAgICAgXCLlpJrkvZnpoblcIixcbiAgICAgIDIsXG4gICAgXSlcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jaGVja2JveC1pbmRpY2F0b3JcIikuYXQoMykuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJUYWJsZVwiKS5zdGF0ZSgpLnNlbGVjdGVkUm93S2V5cykudG9FcXVhbChbMSwgXCLlpJrkvZnpoblcIl0pXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImJhc2VcIiwgKCkgPT4ge1xuICBpdChcIuW/q+eFp+aguOWvuVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGFibGVcbiAgICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgICAgICAgZGVmYXVsdFNlbGVjdGVkUm93S2V5cz17WzFdfVxuICAgICAgICBzZWxlY3RNdWx0aXBsZT17ZmFsc2V9XG4gICAgICAgIG9uU2VsZWN0Q2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgID5cbiAgICAgICAgPENvbHVtbiB0aXRsZT1cIm9uZVwiIGRhdGFJbmRleD1cIm9uZVwiIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIuaYr+WQpuiDveWGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZWxlY3RDaGFuZ2UgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8VGFibGVcbiAgICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgICAgICAgb25TZWxlY3RDaGFuZ2U9e29uU2VsZWN0Q2hhbmdlfVxuICAgICAgICBkZWZhdWx0U2VsZWN0ZWRSb3dLZXlzPXtbMV19XG4gICAgICAgIHNlbGVjdE11bHRpcGxlPXtmYWxzZX1cbiAgICAgID5cbiAgICAgICAgPENvbHVtbiB0aXRsZT1cIm9uZVwiIGRhdGFJbmRleD1cIm9uZVwiIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiVGFibGVcIikuc3RhdGUoKS5zZWxlY3RlZFJvd0tleXMpLnRvRXF1YWwoWzFdKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXJhZGlvLWluZGljYXRvclwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFswXSlcbiAgfSlcblxuICBpdChcIuaYr+WQpuiDveWklumDqOaOp+WItlwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZWxlY3RDaGFuZ2UgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyMCA9IG1vdW50KFxuICAgICAgPFRhYmxlXG4gICAgICAgIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9XG4gICAgICAgIG9uU2VsZWN0Q2hhbmdlPXtvblNlbGVjdENoYW5nZX1cbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzPXtbMV19XG4gICAgICAgIHNlbGVjdE11bHRpcGxlPXtmYWxzZX1cbiAgICAgID5cbiAgICAgICAgPENvbHVtbiB0aXRsZT1cIm9uZVwiIGRhdGFJbmRleD1cIm9uZVwiIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcjAuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFsxXSlcbiAgICB3cmFwcGVyMC5maW5kKFwiLmFkdWktcmFkaW8taW5kaWNhdG9yXCIpLmF0KDApLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlcjAuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFsxXSlcblxuICAgIGNvbnN0IHdyYXBwZXIxID0gbW91bnQoPFJhZGlvTW91bnRlciAvPilcbiAgICBleHBlY3Qod3JhcHBlcjEuZmluZChcIlRhYmxlXCIpLnN0YXRlKCkuc2VsZWN0ZWRSb3dLZXlzKS50b0VxdWFsKFtdKVxuICAgIHdyYXBwZXIxLmZpbmQoXCIuYWR1aS1yYWRpby1pbmRpY2F0b3JcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyMS5maW5kKFwiVGFibGVcIikuc3RhdGUoKS5zZWxlY3RlZFJvd0tleXMpLnRvRXF1YWwoWzBdKVxuICB9KVxuXG4gIGl0KFwi5piv5ZCm5pSv5oyBIHNlbGVjdE9uUm93Q2xpY2tcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9uU2VsZWN0Q2hhbmdlID0gamVzdC5mbigpXG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAgICAgPFRhYmxlXG4gICAgICAgIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9XG4gICAgICAgIGRlZmF1bHRTZWxlY3RlZFJvd0tleXM9e1sxXX1cbiAgICAgICAgb25TZWxlY3RDaGFuZ2U9e29uU2VsZWN0Q2hhbmdlfVxuICAgICAgICBzZWxlY3RPblJvd0NsaWNrXG4gICAgICA+XG4gICAgICAgIDxDb2x1bW4gdGl0bGU9XCJvbmVcIiBkYXRhSW5kZXg9XCJvbmVcIiAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgd3JhcHBlci5maW5kKCdbcm9sZT1cInJvd1wiXScpLmF0KDApLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qob25TZWxlY3RDaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFsxLCAwXSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxDQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFBc0IsU0FBQUcsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFELHdCQUFBLFlBQUFBLHlCQUFBRixDQUFBLFdBQUFBLENBQUEsR0FBQUssQ0FBQSxHQUFBRCxDQUFBLEtBQUFKLENBQUE7QUFBQSxTQUFBTix3QkFBQU0sQ0FBQSxFQUFBSSxDQUFBLFNBQUFBLENBQUEsSUFBQUosQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxlQUFBQSxDQUFBLGdCQUFBTSxPQUFBLENBQUFOLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUssQ0FBQSxHQUFBSCx3QkFBQSxDQUFBRSxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRSxHQUFBLENBQUFQLENBQUEsVUFBQUssQ0FBQSxDQUFBRyxHQUFBLENBQUFSLENBQUEsT0FBQVMsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFB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