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>

193 lines (171 loc) 24.2 kB
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); } 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } import React, { Component } from "react"; import { mount } from "enzyme"; import { act } from "react-dom/test-utils"; import keyCode from "rc-util/lib/KeyCode"; import ColorPicker from ".."; var ColorPickerMounter = function (_Component) { _inherits(ColorPickerMounter, _Component); var _super = _createSuper(ColorPickerMounter); function ColorPickerMounter() { var _this; _classCallCheck(this, ColorPickerMounter); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); _this.state = { value: "#07C160" }; return _this; } _createClass(ColorPickerMounter, [{ key: "render", value: function render() { var _this2 = this; var value = this.state.value; return React.createElement(ColorPicker, _extends({ value: value, onChange: function onChange(val) { return _this2.setState({ value: val }); } }, this.props)); } }]); return ColorPickerMounter; }(Component); describe("ColorPicker", function () { beforeAll(function () { jest.useFakeTimers(); Element.prototype.getBoundingClientRect = jest.fn(function () { return { width: 160, height: 90, top: 0, left: 0, bottom: 0, right: 0, x: 0, y: 0, toJSON: function toJSON() {} }; }); }); afterAll(function () { jest.useRealTimers(); }); it("其他事件验证", function () { var onFinishChange = jest.fn(); var wrapper = mount(React.createElement(ColorPicker, { defaultValue: "#07C160", onFinishChange: onFinishChange, recentColors: ["#00BB9C"] })); var input = wrapper.find("input").at(0); input.simulate("change", { target: { value: "11" } }); expect(wrapper.find("input").at(0).props().value).toBe("11"); input.simulate("blur"); expect(wrapper.find("input").at(0).props().value).toBe("07C160"); input.simulate("change", { target: { value: "00BB9C" } }); input.simulate("blur"); expect(onFinishChange).toHaveBeenCalledWith("#00BB9C"); wrapper.find("button").simulate("click"); wrapper.find(".adui-cp-recent i").at(0).simulate("click"); wrapper.find(".adui-cp-standard i").at(11).simulate("click"); wrapper.find("button").simulate("click"); jest.advanceTimersByTime(200); expect(onFinishChange).toHaveBeenCalledWith("#5BDEC8"); wrapper.find("button").simulate("click"); jest.advanceTimersByTime(350); var head0 = wrapper.find(".adui-cp-collapse-header").at(0); var head1 = wrapper.find(".adui-cp-collapse-header").at(1); var head2 = wrapper.find(".adui-cp-collapse-header").at(2); expect(wrapper.find(".adui-cp-collapse-content")).toHaveLength(2); head0.simulate("click"); head2.simulate("click"); head1.simulate("click"); head2.simulate("click"); wrapper.find("Slider").at(0).simulate("focus"); wrapper.find("Slider").at(0).find(".adui-slider-handle").at(0).simulate("keyDown", { keyCode: keyCode.RIGHT }); expect(wrapper.find(".adui-cp").at(0).props()["data-value"]).toBe("#5BDECA"); wrapper.find("Slider").at(1).simulate("focus"); wrapper.find("Slider").at(1).find(".adui-slider-handle").at(0).simulate("keyDown", { keyCode: keyCode.RIGHT }); expect(wrapper.find(".adui-cp").at(0).props()["data-value"]).toBe("#59DECA"); wrapper.find("Slider").at(2).simulate("focus"); wrapper.find("Slider").at(2).find(".adui-slider-handle").at(0).simulate("keyDown", { keyCode: keyCode.RIGHT }); expect(wrapper.find(".adui-cp").at(0).props()["data-value"]).toBe("#5AE0CC"); var map = {}; window.addEventListener = jest.fn(function (event, cb) { map[event] = cb; }); var classWrapper = mount(React.createElement(ColorPickerMounter, null)); classWrapper.find("button").simulate("click"); jest.advanceTimersByTime(10); act(function () { classWrapper.find(".adui-cp-collapse-header").at(1).simulate("click"); jest.runAllTimers(); classWrapper.update(); }); act(function () { classWrapper.find(".adui-cp-palette").at(0).simulate("mouseDown"); map.mousemove({}); map.mousemove({ pageX: 10000, pageY: 0 }); jest.runAllTimers(); classWrapper.update(); expect(classWrapper.find(".adui-cp").at(0).props()["data-s"]).toBe(100); map.mousemove({ pageX: -10000, pageY: 0 }); jest.runAllTimers(); classWrapper.update(); expect(classWrapper.find(".adui-cp").at(0).props()["data-s"]).toBe(0); map.mousemove({ pageY: 10000, pageX: 0 }); jest.runAllTimers(); classWrapper.update(); expect(classWrapper.find(".adui-cp").at(0).props()["data-b"]).toBe(0); map.mousemove({ pageY: -10000, pageX: 0 }); jest.runAllTimers(); classWrapper.update(); expect(classWrapper.find(".adui-cp").at(0).props()["data-b"]).toBe(100); map.mouseup({}); }); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIm1vdW50IiwiYWN0Iiwia2V5Q29kZSIsIkNvbG9yUGlja2VyIiwiQ29sb3JQaWNrZXJNb3VudGVyIiwic3RhdGUiLCJ2YWx1ZSIsInZhbCIsInNldFN0YXRlIiwicHJvcHMiLCJkZXNjcmliZSIsImJlZm9yZUFsbCIsImplc3QiLCJ1c2VGYWtlVGltZXJzIiwiRWxlbWVudCIsInByb3RvdHlwZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZuIiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJ4IiwieSIsInRvSlNPTiIsImFmdGVyQWxsIiwidXNlUmVhbFRpbWVycyIsIml0Iiwib25GaW5pc2hDaGFuZ2UiLCJ3cmFwcGVyIiwiaW5wdXQiLCJmaW5kIiwiYXQiLCJzaW11bGF0ZSIsInRhcmdldCIsImV4cGVjdCIsInRvQmUiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsImFkdmFuY2VUaW1lcnNCeVRpbWUiLCJoZWFkMCIsImhlYWQxIiwiaGVhZDIiLCJ0b0hhdmVMZW5ndGgiLCJSSUdIVCIsIm1hcCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImNiIiwiY2xhc3NXcmFwcGVyIiwicnVuQWxsVGltZXJzIiwidXBkYXRlIiwibW91c2Vtb3ZlIiwicGFnZVgiLCJwYWdlWSIsIm1vdXNldXAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9fX3Rlc3RzX18vZXZlbnRzLnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IG1vdW50IH0gZnJvbSBcImVuenltZVwiXG5pbXBvcnQgeyBhY3QgfSBmcm9tIFwicmVhY3QtZG9tL3Rlc3QtdXRpbHNcIlxuaW1wb3J0IGtleUNvZGUgZnJvbSBcInJjLXV0aWwvbGliL0tleUNvZGVcIlxuaW1wb3J0IENvbG9yUGlja2VyIGZyb20gXCIuLlwiXG5cbmNsYXNzIENvbG9yUGlja2VyTW91bnRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIHZhbHVlOiBcIiMwN0MxNjBcIixcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnN0YXRlXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xvclBpY2tlclxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIG9uQ2hhbmdlPXsodmFsKSA9PiB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHZhbCB9KX1cbiAgICAgICAgey4uLnRoaXMucHJvcHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxufVxuXG5kZXNjcmliZShcIkNvbG9yUGlja2VyXCIsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBqZXN0LnVzZUZha2VUaW1lcnMoKVxuXG4gICAgLyoqXG4gICAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQwMDA2NjYzXG4gICAgICog6YCa6L+HIG1vY2sgYGdldEJvdW5kaW5nQ2xpZW50UmVjdGDvvIzkuYvlkI7ov5DooYznmoTmiYDmnIkgYGdldEJvdW5kaW5nQ2xpZW50UmVjdGAg6YO95Lya6L+U5Zue6L+Z5ZCM5LiA5Liq5YC844CCXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID0gamVzdC5mbigoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogMTYwLFxuICAgICAgICBoZWlnaHQ6IDkwLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHRvSlNPTjogKCkgPT4ge30sXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBhZnRlckFsbCgoKSA9PiB7XG4gICAgamVzdC51c2VSZWFsVGltZXJzKClcbiAgfSlcblxuICBpdChcIuWFtuS7luS6i+S7tumqjOivgVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25GaW5pc2hDaGFuZ2UgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8Q29sb3JQaWNrZXJcbiAgICAgICAgZGVmYXVsdFZhbHVlPVwiIzA3QzE2MFwiXG4gICAgICAgIG9uRmluaXNoQ2hhbmdlPXtvbkZpbmlzaENoYW5nZX1cbiAgICAgICAgcmVjZW50Q29sb3JzPXtbXCIjMDBCQjlDXCJdfVxuICAgICAgLz5cbiAgICApXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5hdCgwKVxuXG4gICAgLy8g6aqM6K+BIGlucHV0IOS/ruaUueS4uumdnuazleWAvOWQju+8jOWcqCBibHVyIOaXtuS8mumHjee9rlxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjExXCIgfSB9KVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlKS50b0JlKFwiMTFcIilcbiAgICBpbnB1dC5zaW11bGF0ZShcImJsdXJcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZSkudG9CZShcIjA3QzE2MFwiKVxuXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMDBCQjlDXCIgfSB9KVxuICAgIGlucHV0LnNpbXVsYXRlKFwiYmx1clwiKVxuICAgIGV4cGVjdChvbkZpbmlzaENoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXCIjMDBCQjlDXCIpXG5cbiAgICB3cmFwcGVyLmZpbmQoXCJidXR0b25cIikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLXJlY2VudCBpXCIpLmF0KDApLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcC1zdGFuZGFyZCBpXCIpLmF0KDExKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgd3JhcHBlci5maW5kKFwiYnV0dG9uXCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyDnrYnlvoUgMjAwbXNcbiAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoMjAwKVxuICAgIGV4cGVjdChvbkZpbmlzaENoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXCIjNUJERUM4XCIpXG5cbiAgICAvLyDmtYvor5UgQ29sbGFwc2VcbiAgICB3cmFwcGVyLmZpbmQoXCJidXR0b25cIikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIC8vIOetieW+hSAzNTBtc1xuICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgzNTApXG4gICAgY29uc3QgaGVhZDAgPSB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcC1jb2xsYXBzZS1oZWFkZXJcIikuYXQoMClcbiAgICBjb25zdCBoZWFkMSA9IHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLWNvbGxhcHNlLWhlYWRlclwiKS5hdCgxKVxuICAgIGNvbnN0IGhlYWQyID0gd3JhcHBlci5maW5kKFwiLmFkdWktY3AtY29sbGFwc2UtaGVhZGVyXCIpLmF0KDIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLWNvbGxhcHNlLWNvbnRlbnRcIikpLnRvSGF2ZUxlbmd0aCgyKVxuICAgIGhlYWQwLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBoZWFkMi5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgaGVhZDEuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGhlYWQyLnNpbXVsYXRlKFwiY2xpY2tcIilcblxuICAgIHdyYXBwZXIuZmluZChcIlNsaWRlclwiKS5hdCgwKS5zaW11bGF0ZShcImZvY3VzXCIpXG4gICAgd3JhcHBlclxuICAgICAgLmZpbmQoXCJTbGlkZXJcIilcbiAgICAgIC5hdCgwKVxuICAgICAgLmZpbmQoXCIuYWR1aS1zbGlkZXItaGFuZGxlXCIpXG4gICAgICAuYXQoMClcbiAgICAgIC5zaW11bGF0ZShcImtleURvd25cIiwgeyBrZXlDb2RlOiBrZXlDb2RlLlJJR0hUIH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdKS50b0JlKFwiIzVCREVDQVwiKVxuICAgIHdyYXBwZXIuZmluZChcIlNsaWRlclwiKS5hdCgxKS5zaW11bGF0ZShcImZvY3VzXCIpXG4gICAgd3JhcHBlclxuICAgICAgLmZpbmQoXCJTbGlkZXJcIilcbiAgICAgIC5hdCgxKVxuICAgICAgLmZpbmQoXCIuYWR1aS1zbGlkZXItaGFuZGxlXCIpXG4gICAgICAuYXQoMClcbiAgICAgIC5zaW11bGF0ZShcImtleURvd25cIiwgeyBrZXlDb2RlOiBrZXlDb2RlLlJJR0hUIH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdKS50b0JlKFwiIzU5REVDQVwiKVxuICAgIHdyYXBwZXIuZmluZChcIlNsaWRlclwiKS5hdCgyKS5zaW11bGF0ZShcImZvY3VzXCIpXG4gICAgd3JhcHBlclxuICAgICAgLmZpbmQoXCJTbGlkZXJcIilcbiAgICAgIC5hdCgyKVxuICAgICAgLmZpbmQoXCIuYWR1aS1zbGlkZXItaGFuZGxlXCIpXG4gICAgICAuYXQoMClcbiAgICAgIC5zaW11bGF0ZShcImtleURvd25cIiwgeyBrZXlDb2RlOiBrZXlDb2RlLlJJR0hUIH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdKS50b0JlKFwiIzVBRTBDQ1wiKVxuXG4gICAgY29uc3QgbWFwID0ge31cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgPSBqZXN0LmZuKChldmVudCwgY2IpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hcFtldmVudF0gPSBjYlxuICAgIH0pXG5cbiAgICBjb25zdCBjbGFzc1dyYXBwZXIgPSBtb3VudCg8Q29sb3JQaWNrZXJNb3VudGVyIC8+KVxuXG4gICAgY2xhc3NXcmFwcGVyLmZpbmQoXCJidXR0b25cIikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgxMClcblxuICAgIGFjdCgoKSA9PiB7XG4gICAgICBjbGFzc1dyYXBwZXIuZmluZChcIi5hZHVpLWNwLWNvbGxhcHNlLWhlYWRlclwiKS5hdCgxKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICBjbGFzc1dyYXBwZXIudXBkYXRlKClcbiAgICB9KVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIGNsYXNzV3JhcHBlci5maW5kKFwiLmFkdWktY3AtcGFsZXR0ZVwiKS5hdCgwKS5zaW11bGF0ZShcIm1vdXNlRG93blwiKVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXAubW91c2Vtb3ZlKHt9KVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwLm1vdXNlbW92ZSh7IHBhZ2VYOiAxMDAwMCwgcGFnZVk6IDAgfSlcblxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgY2xhc3NXcmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3QoY2xhc3NXcmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS1zXCJdKS50b0JlKDEwMClcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hcC5tb3VzZW1vdmUoeyBwYWdlWDogLTEwMDAwLCBwYWdlWTogMCB9KVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgY2xhc3NXcmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3QoY2xhc3NXcmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS1zXCJdKS50b0JlKDApXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXAubW91c2Vtb3ZlKHsgcGFnZVk6IDEwMDAwLCBwYWdlWDogMCB9KVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgY2xhc3NXcmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3QoY2xhc3NXcmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS1iXCJdKS50b0JlKDApXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXAubW91c2Vtb3ZlKHsgcGFnZVk6IC0xMDAwMCwgcGFnZVg6IDAgfSlcbiAgICAgIGplc3QucnVuQWxsVGltZXJzKClcbiAgICAgIGNsYXNzV3JhcHBlci51cGRhdGUoKVxuICAgICAgZXhwZWN0KGNsYXNzV3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtYlwiXSkudG9CZSgxMDApXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXAubW91c2V1cCh7fSlcbiAgICB9KVxuICB9KVxufSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsS0FBUCxJQUFnQkMsU0FBaEIsUUFBaUMsT0FBakM7QUFDQSxTQUFTQyxLQUFULFFBQXNCLFFBQXRCO0FBQ0EsU0FBU0MsR0FBVCxRQUFvQixzQkFBcEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLHFCQUFwQjtBQUNBLE9BQU9DLFdBQVAsTUFBd0IsSUFBeEI7O0lBRU1DLGtCOzs7Ozs7Ozs7Ozs7Ozs7VUFDSkMsSyxHQUFRO01BQ05DLEtBQUssRUFBRTtJQURELEM7Ozs7OztXQUlSLGtCQUFTO01BQUE7O01BQ1AsSUFBUUEsS0FBUixHQUFrQixLQUFLRCxLQUF2QixDQUFRQyxLQUFSO01BQ0EsT0FDRSxvQkFBQyxXQUFEO1FBQ0UsS0FBSyxFQUFF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