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>
176 lines (175 loc) • 32.4 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); }
var _react = _interopRequireWildcard(require("react"));
var _enzyme = require("enzyme");
var _testUtils = require("react-dom/test-utils");
var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
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 _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 _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 ColorPickerMounter = function (_Component) {
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 = _callSuper(this, ColorPickerMounter, [].concat(args));
_this.state = {
value: "#07C160"
};
return _this;
}
_inherits(ColorPickerMounter, _Component);
return _createClass(ColorPickerMounter, [{
key: "render",
value: function render() {
var _this2 = this;
var value = this.state.value;
return _react["default"].createElement(_["default"], _extends({
value: value,
onChange: function onChange(val) {
return _this2.setState({
value: val
});
}
}, this.props));
}
}]);
}(_react.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 = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
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["default"].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["default"].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["default"].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 = (0, _enzyme.mount)(_react["default"].createElement(ColorPickerMounter, null));
classWrapper.find("button").simulate("click");
jest.advanceTimersByTime(10);
(0, _testUtils.act)(function () {
classWrapper.find(".adui-cp-collapse-header").at(1).simulate("click");
jest.runAllTimers();
classWrapper.update();
});
(0, _testUtils.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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZW56eW1lIiwiX3Rlc3RVdGlscyIsIl9LZXlDb2RlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl8iLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9jbGFzc0NhbGxDaGVjayIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwibyIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG90eXBlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJDb2xvclBpY2tlck1vdW50ZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsInN0YXRlIiwicmVuZGVyIiwiX3RoaXMyIiwiY3JlYXRlRWxlbWVudCIsIm9uQ2hhbmdlIiwidmFsIiwic2V0U3RhdGUiLCJwcm9wcyIsIkNvbXBvbmVudCIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiamVzdCIsInVzZUZha2VUaW1lcnMiLCJFbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZm4iLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsIngiLCJ5IiwidG9KU09OIiwiYWZ0ZXJBbGwiLCJ1c2VSZWFsVGltZXJzIiwiaXQiLCJvbkZpbmlzaENoYW5nZSIsIndyYXBwZXIiLCJtb3VudCIsImRlZmF1bHRWYWx1ZSIsInJlY2VudENvbG9ycyIsImlucHV0IiwiZmluZCIsImF0Iiwic2ltdWxhdGUiLCJ0YXJnZXQiLCJleHBlY3QiLCJ0b0JlIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJhZHZhbmNlVGltZXJzQnlUaW1lIiwiaGVhZDAiLCJoZWFkMSIsImhlYWQyIiwidG9IYXZlTGVuZ3RoIiwia2V5Q29kZSIsIlJJR0hUIiwibWFwIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY2IiLCJjbGFzc1dyYXBwZXIiLCJhY3QiLCJydW5BbGxUaW1lcnMiLCJ1cGRhdGUiLCJtb3VzZW1vdmUiLCJwYWdlWCIsInBhZ2VZIiwibW91c2V1cCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL19fdGVzdHNfXy9ldmVudHMudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgbW91bnQgfSBmcm9tIFwiZW56eW1lXCJcbmltcG9ydCB7IGFjdCB9IGZyb20gXCJyZWFjdC1kb20vdGVzdC11dGlsc1wiXG5pbXBvcnQga2V5Q29kZSBmcm9tIFwicmMtdXRpbC9saWIvS2V5Q29kZVwiXG5pbXBvcnQgQ29sb3JQaWNrZXIgZnJvbSBcIi4uXCJcblxuY2xhc3MgQ29sb3JQaWNrZXJNb3VudGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgdmFsdWU6IFwiIzA3QzE2MFwiLFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGVcbiAgICByZXR1cm4gKFxuICAgICAgPENvbG9yUGlja2VyXG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgb25DaGFuZ2U9eyh2YWwpID0+IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsIH0pfVxuICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgIC8+XG4gICAgKVxuICB9XG59XG5cbmRlc2NyaWJlKFwiQ29sb3JQaWNrZXJcIiwgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlRmFrZVRpbWVycygpXG5cbiAgICAvKipcbiAgICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDAwMDY2NjNcbiAgICAgKiDpgJrov4cgbW9jayBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YO+8jOS5i+WQjui/kOihjOeahOaJgOaciSBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCDpg73kvJrov5Tlm57ov5nlkIzkuIDkuKrlgLzjgIJcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPSBqZXN0LmZuKCgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAxNjAsXG4gICAgICAgIGhlaWdodDogOTAsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICByaWdodDogMCxcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgdG9KU09OOiAoKSA9PiB7fSxcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBqZXN0LnVzZVJlYWxUaW1lcnMoKVxuICB9KVxuXG4gIGl0KFwi5YW25LuW5LqL5Lu26aqM6K+BXCIsICgpID0+IHtcbiAgICBjb25zdCBvbkZpbmlzaENoYW5nZSA9IGplc3QuZm4oKVxuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxDb2xvclBpY2tlclxuICAgICAgICBkZWZhdWx0VmFsdWU9XCIjMDdDMTYwXCJcbiAgICAgICAgb25GaW5pc2hDaGFuZ2U9e29uRmluaXNoQ2hhbmdlfVxuICAgICAgICByZWNlbnRDb2xvcnM9e1tcIiMwMEJCOUNcIl19XG4gICAgICAvPlxuICAgIClcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpLmF0KDApXG5cbiAgICAvLyDpqozor4EgaW5wdXQg5L+u5pS55Li66Z2e5rOV5YC85ZCO77yM5ZyoIGJsdXIg5pe25Lya6YeN572uXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMTFcIiB9IH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcImlucHV0XCIpLmF0KDApLnByb3BzKCkudmFsdWUpLnRvQmUoXCIxMVwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiYmx1clwiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlKS50b0JlKFwiMDdDMTYwXCIpXG5cbiAgICBpbnB1dC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIwMEJCOUNcIiB9IH0pXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJibHVyXCIpXG4gICAgZXhwZWN0KG9uRmluaXNoQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcIiMwMEJCOUNcIilcblxuICAgIHdyYXBwZXIuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgd3JhcHBlci5maW5kKFwiLmFkdWktY3AtcmVjZW50IGlcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLXN0YW5kYXJkIGlcIikuYXQoMTEpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICB3cmFwcGVyLmZpbmQoXCJidXR0b25cIikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIC8vIOetieW+hSAyMDBtc1xuICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgyMDApXG4gICAgZXhwZWN0KG9uRmluaXNoQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcIiM1QkRFQzhcIilcblxuICAgIC8vIOa1i+ivlSBDb2xsYXBzZVxuICAgIHdyYXBwZXIuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8g562J5b6FIDM1MG1zXG4gICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDM1MClcbiAgICBjb25zdCBoZWFkMCA9IHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLWNvbGxhcHNlLWhlYWRlclwiKS5hdCgwKVxuICAgIGNvbnN0IGhlYWQxID0gd3JhcHBlci5maW5kKFwiLmFkdWktY3AtY29sbGFwc2UtaGVhZGVyXCIpLmF0KDEpXG4gICAgY29uc3QgaGVhZDIgPSB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcC1jb2xsYXBzZS1oZWFkZXJcIikuYXQoMilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiLmFkdWktY3AtY29sbGFwc2UtY29udGVudFwiKSkudG9IYXZlTGVuZ3RoKDIpXG4gICAgaGVhZDAuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGhlYWQyLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBoZWFkMS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgaGVhZDIuc2ltdWxhdGUoXCJjbGlja1wiKVxuXG4gICAgd3JhcHBlci5maW5kKFwiU2xpZGVyXCIpLmF0KDApLnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICB3cmFwcGVyXG4gICAgICAuZmluZChcIlNsaWRlclwiKVxuICAgICAgLmF0KDApXG4gICAgICAuZmluZChcIi5hZHVpLXNsaWRlci1oYW5kbGVcIilcbiAgICAgIC5hdCgwKVxuICAgICAgLnNpbXVsYXRlKFwia2V5RG93blwiLCB7IGtleUNvZGU6IGtleUNvZGUuUklHSFQgfSlcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl0pLnRvQmUoXCIjNUJERUNBXCIpXG4gICAgd3JhcHBlci5maW5kKFwiU2xpZGVyXCIpLmF0KDEpLnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICB3cmFwcGVyXG4gICAgICAuZmluZChcIlNsaWRlclwiKVxuICAgICAgLmF0KDEpXG4gICAgICAuZmluZChcIi5hZHVpLXNsaWRlci1oYW5kbGVcIilcbiAgICAgIC5hdCgwKVxuICAgICAgLnNpbXVsYXRlKFwia2V5RG93blwiLCB7IGtleUNvZGU6IGtleUNvZGUuUklHSFQgfSlcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl0pLnRvQmUoXCIjNTlERUNBXCIpXG4gICAgd3JhcHBlci5maW5kKFwiU2xpZGVyXCIpLmF0KDIpLnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICB3cmFwcGVyXG4gICAgICAuZmluZChcIlNsaWRlclwiKVxuICAgICAgLmF0KDIpXG4gICAgICAuZmluZChcIi5hZHVpLXNsaWRlci1oYW5kbGVcIilcbiAgICAgIC5hdCgwKVxuICAgICAgLnNpbXVsYXRlKFwia2V5RG93blwiLCB7IGtleUNvZGU6IGtleUNvZGUuUklHSFQgfSlcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl0pLnRvQmUoXCIjNUFFMENDXCIpXG5cbiAgICBjb25zdCBtYXAgPSB7fVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciA9IGplc3QuZm4oKGV2ZW50LCBjYikgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwW2V2ZW50XSA9IGNiXG4gICAgfSlcblxuICAgIGNvbnN0IGNsYXNzV3JhcHBlciA9IG1vdW50KDxDb2xvclBpY2tlck1vdW50ZXIgLz4pXG5cbiAgICBjbGFzc1dyYXBwZXIuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDEwKVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIGNsYXNzV3JhcHBlci5maW5kKFwiLmFkdWktY3AtY29sbGFwc2UtaGVhZGVyXCIpLmF0KDEpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAgIGplc3QucnVuQWxsVGltZXJzKClcbiAgICAgIGNsYXNzV3JhcHBlci51cGRhdGUoKVxuICAgIH0pXG5cbiAgICBhY3QoKCkgPT4ge1xuICAgICAgY2xhc3NXcmFwcGVyLmZpbmQoXCIuYWR1aS1jcC1wYWxldHRlXCIpLmF0KDApLnNpbXVsYXRlKFwibW91c2VEb3duXCIpXG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hcC5tb3VzZW1vdmUoe30pXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXAubW91c2Vtb3ZlKHsgcGFnZVg6IDEwMDAwLCBwYWdlWTogMCB9KVxuXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICBjbGFzc1dyYXBwZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdChjbGFzc1dyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXNcIl0pLnRvQmUoMTAwKVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwLm1vdXNlbW92ZSh7IHBhZ2VYOiAtMTAwMDAsIHBhZ2VZOiAwIH0pXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICBjbGFzc1dyYXBwZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdChjbGFzc1dyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXNcIl0pLnRvQmUoMClcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hcC5tb3VzZW1vdmUoeyBwYWdlWTogMTAwMDAsIHBhZ2VYOiAwIH0pXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICBjbGFzc1dyYXBwZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdChjbGFzc1dyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLWJcIl0pLnRvQmUoMClcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hcC5tb3VzZW1vdmUoeyBwYWdlWTogLTEwMDAwLCBwYWdlWDogMCB9KVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgY2xhc3NXcmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3QoY2xhc3NXcmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS1iXCJdKS50b0JlKDEwMClcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hcC5tb3VzZXVwKHt9KVxuICAgIH0pXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxDQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFBNEIsU0FBQUksdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxP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
;