PageSourceSearch

https://www.invisahoteles.com/static/corporativa/js/corporativa-home.min.js?v=10614a4163284ab1885e28057a861bb5

js invisahoteles.com collected 2026-09-29 16:57:23 UTC 946,568 bytes, 11,541 lines download raw bytes

1(()=>{var T=Object.create;var U=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var l=(g,n)=>U(g,"name",{value:n,configurable:!0});var Z=(g,n)=>()=>(n||g((n={exports:{}}).exports,n),n.exports);var f=(g,n,t,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let I of k(n))!D.call(g,I)&&I!==t&&U(g,I,{get:()=>n[I],enumerable:!(e=H(n,I))||e.enumerable});return g};var c=(g,n,t)=>(t=g!=null?T(O(g)):{},f(n||!g||!g.__esModule?U(t,"default",{value:g,enumerable:!0}):t,g));var Q=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.shoppingCartTop=n():g.shoppingCartTop=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"c");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})},n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/juan.vera/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=209)}([function(module,exports){eval(`// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
2var global = module.exports = typeof window != 'undefined' && window.Math == Math
3  ? window : typeof self != 'undefined' && self.Math == Math ? self
4  // eslint-disable-next-line no-new-func
5  : Function('return this')();
6if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
7
8//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ==
9//# sourceURL=webpack-internal:///0
10`)},function(module,exports,__webpack_require__){eval(`var store = __webpack_require__(23)('wks');
11var uid = __webpack_require__(24);
12var Symbol = __webpack_require__(0).Symbol;
13var USE_SYMBOL = typeof Symbol == 'function';
14
15var $exports = module.exports = function (name) {
16  return store[name] || (store[name] =
17    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
18};
19
20$exports.store = store;
21
22//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcz83NTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksbUJBQU8sQ0FBQyxFQUFXO0FBQy9CLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
23//# sourceURL=webpack-internal:///1
24`)},function(module,exports){eval(`var core = module.exports = { version: '2.6.11' };
25if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
26
27//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsdUNBQXVDIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjExJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
28//# sourceURL=webpack-internal:///2
29`)},function(module,exports,__webpack_require__){eval(`// Thank's IE8 for his funny defineProperty
30module.exports = !__webpack_require__(11)(function () {
31  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
32});
33
34//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxFQUFVO0FBQ3BDLGlDQUFpQyxRQUFRLG1CQUFtQixVQUFVLEVBQUUsRUFBRTtBQUM
vendor: 9,082 bytes, lines 34-130
34xRSxDQUFDIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
35//# sourceURL=webpack-internal:///3
36`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5);
37var IE8_DOM_DEFINE = __webpack_require__(26);
38var toPrimitive = __webpack_require__(27);
39var dP = Object.defineProperty;
40
41exports.f = __webpack_require__(3) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
42  anObject(O);
43  P = toPrimitive(P, true);
44  anObject(Attributes);
45  if (IE8_DOM_DEFINE) try {
46    return dP(O, P, Attributes);
47  } catch (e) { /* empty */ }
48  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
49  if ('value' in Attributes) O[P] = Attributes.value;
50  return O;
51};
52
53//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLHFCQUFxQixtQkFBTyxDQUFDLEVBQW1CO0FBQ2hELGtCQUFrQixtQkFBTyxDQUFDLEVBQWlCO0FBQzNDOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxDQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxZQUFZO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
54//# sourceURL=webpack-internal:///4
55`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7);
56module.exports = function (it) {
57  if (!isObject(it)) throw TypeError(it + ' is not an object!');
58  return it;
59};
60
61//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
62//# sourceURL=webpack-internal:///5
63`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4);
64var createDesc = __webpack_require__(12);
65module.exports = __webpack_require__(3) ? function (object, key, value) {
66  return dP.f(object, key, createDesc(1, value));
67} : function (object, key, value) {
68  object[key] = value;
69  return object;
70};
71
72//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixpQkFBaUIsbUJBQU8sQ0FBQyxFQUFrQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFnQjtBQUN6QztBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
73//# sourceURL=webpack-internal:///6
74`)},function(module,exports){eval(`module.exports = function (it) {
75  return typeof it === 'object' ? it !== null : typeof it === 'function';
76};
77
78//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
79//# sourceURL=webpack-internal:///7
80`)},function(module,exports){eval(`var hasOwnProperty = {}.hasOwnProperty;
81module.exports = function (it, key) {
82  return hasOwnProperty.call(it, key);
83};
84
85//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EiLCJmaWxlIjoiOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
86//# sourceURL=webpack-internal:///8
87`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0);
88var core = __webpack_require__(2);
89var ctx = __webpack_require__(13);
90var hide = __webpack_require__(6);
91var has = __webpack_require__(8);
92var PROTOTYPE = 'prototype';
93
94var $export = function (type, name, source) {
95  var IS_FORCED = type & $export.F;
96  var IS_GLOBAL = type & $export.G;
97  var IS_STATIC = type & $export.S;
98  var IS_PROTO = type & $export.P;
99  var IS_BIND = type & $export.B;
100  var IS_WRAP = type & $export.W;
101  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
102  var expProto = exports[PROTOTYPE];
103  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
104  var key, own, out;
105  if (IS_GLOBAL) source = name;
106  for (key in source) {
107    // contains in native
108    own = !IS_FORCED && target && target[key] !== undefined;
109    if (own && has(exports, key)) continue;
110    // export native or passed
111    out = own ? target[key] : source[key];
112    // prevent global pollution for namespaces
113    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
114    // bind timers to global for call from export context
115    : IS_BIND && own ? ctx(out, global)
116    // wrap global constructors for prevent change them in library
117    : IS_WRAP && target[key] == out ? (function (C) {
118      var F = function (a, b, c) {
119        if (this instanceof C) {
120          switch (arguments.length) {
121            case 0: return new C();
122            case 1: return new C(a);
123            case 2: return new C(a, b);
124          } return new C(a, b, c);
125        } return C.apply(this, arguments);
126      };
127      F[PROTOTYPE] = C[PROTOTYPE];
128      return F;
129    // make static versions for prototype methods
130    }
130)(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
131    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
132    if (IS_PROTO) {
133      (exports.virtual || (exports.virtual = {}))[key] = out;
134      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
135      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
136    }
137  }
138};
139// type bitmap
140$export.F = 1;   // forced
141$export.G = 2;   // global
142$export.S = 4;   // static
143$export.P = 8;   // proto
144$export.B = 16;  // bind
145$export.W = 32;  // wrap
146$export.U = 64;  // safe
147$export.R = 128; // real proto method for \`library\`
148module.exports = $export;
149
150//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGdCQUFnQjtBQUNoQiIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcm
150UgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2Y
150XIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
151//# sourceURL=webpack-internal:///9
152`)},function(module,exports){eval(`module.exports = {};
153
154//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
155//# sourceURL=webpack-internal:///10
156`)},function(module,exports){eval(`module.exports = function (exec) {
157  try {
158    return !!exec();
159  } catch (e) {
160    return true;
161  }
162};
163
164//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ==
165//# sourceURL=webpack-internal:///11
166`)},function(module,exports){eval(`module.exports = function (bitmap, value) {
167  return {
168    enumerable: !(bitmap & 1),
169    configurable: !(bitmap & 2),
170    writable: !(bitmap & 4),
171    value: value
172  };
173};
174
175//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
176//# sourceURL=webpack-internal:///12
177`)},function(module,exports,__webpack_require__){eval(`// optional / simple c
177ontext binding
178var aFunction = __webpack_require__(19);
179module.exports = function (fn, that, length) {
180  aFunction(fn);
181  if (that === undefined) return fn;
182  switch (length) {
183    case 1: return function (a) {
184      return fn.call(that, a);
185    };
186    case 2: return function (a, b) {
187      return fn.call(that, a, b);
188    };
189    case 3: return function (a, b, c) {
190      return fn.call(that, a, b, c);
191    };
192  }
193  return function (/* ...args */) {
194    return fn.apply(that, arguments);
195  };
196};
197
198//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
199//# sourceURL=webpack-internal:///13
200`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7);
201var document = __webpack_require__(0).document;
202// typeof document.createElement is 'object' in old IE
203var is = isObject(document) && isObject(document.createElement);
204module.exports = function (it) {
205  return is ? document.createElement(it) : {};
206};
207
208//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ==
209//# sourceURL=webpack-internal:///14
210`)},function(module,exports){eval(`// 7.2.1 RequireObjectCoercible(argument)
211module.exports = function (it) {
212  if (it == undefined) throw TypeError("Can't call method on  " + it);
213  return it;
214};
215
216//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
217//# sourceURL=webpack-internal:///15
218`)},function(module,exports){eval(`// 7.1.4 ToInteger
219var ceil = Math.ceil;
220var floor = Math.floor;
221module.exports = function (it) {
222  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
223};
224
225//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
226//# sourceURL=webpack-internal:///16
227`)},function(module,exports,__webpack_require__){eval(`var shared = __webpack_require__(23)('keys');
228var uid = __webpack_require__(24);
229module.exports = function (key) {
230  return shared[key] || (shared[key] = uid(key));
231};
232
233//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsRUFBVztBQUNoQyxVQUFVLG1CQUFPLENBQUMsRUFBUTtBQUMxQjtBQUNBO0FBQ0EiLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
234//# sourceURL=webpack-internal:///17
235`)},function(module,exports,__webpack_require__){eval(`// to indexed object, toObject with fallback for non-array-like ES3 strings
236var IObject = __webpack_require__(35);
237var defined = __webpack_require__(15);
238module.exports = function (it) {
239  return IObject(defined(it));
240};
241
242//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDO0FBQ0E7QUFDQSIsImZpbGUiOiIxO
242C5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
243//# sourceURL=webpack-internal:///18
244`)},function(module,exports){eval(`module.exports = function (it) {
245  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
246  return it;
247};
248
249//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
250//# sourceURL=webpack-internal:///19
251`)},function(module,exports){eval(`var toString = {}.toString;
252
253module.exports = function (it) {
254  return toString.call(it).slice(8, -1);
255};
256
257//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
258//# sourceURL=webpack-internal:///20
259`)},function(module,exports){eval(`module.exports = true;
260
261//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIyMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
262//# sourceURL=webpack-internal:///21
263`)},function(module,exports,__webpack_require__){eval(`var def = __webpack_require__(4).f;
264var has = __webpack_require__(8);
265var TAG = __webpack_require__(1)('toStringTag');
266
267module.exports = function (it, tag, stat) {
268  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
269};
270
271//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQWM7QUFDaEMsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsVUFBVSxtQkFBTyxDQUFDLENBQVE7O0FBRTFCO0FBQ0Esb0VBQW9FLGlDQUFpQztBQUNyRyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 6,621 bytes, lines 271-322
271IDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
272//# sourceURL=webpack-internal:///22
273`)},function(module,exports,__webpack_require__){eval(`var core = __webpack_require__(2);
274var global = __webpack_require__(0);
275var SHARED = '__core-js_shared__';
276var store = global[SHARED] || (global[SHARED] = {});
277
278(module.exports = function (key, value) {
279  return store[key] || (store[key] = value !== undefined ? value : {});
280})('versions', []).push({
281  version: core.version,
282  mode: __webpack_require__(21) ? 'pure' : 'global',
283  copyright: '\xA9 2019 Denis Pushkarev (zloirock.ru)'
284});
285
286//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLHFFQUFxRTtBQUNyRSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLG1CQUFPLENBQUMsRUFBWTtBQUM1QjtBQUNBLENBQUMiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
287//# sourceURL=webpack-internal:///23
288`)},function(module,exports){eval(`var id = 0;
289var px = Math.random();
290module.exports = function (key) {
291  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
292};
293
294//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
295//# sourceURL=webpack-internal:///24
296`)},function(module,exports){eval(`// IE 8- don't enum bug keys
297module.exports = (
298  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
299).split(',');
300
301//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
302//# sourceURL=webpack-internal:///25
303`)},function(module,exports,__webpack_require__){eval(`module.exports = !__webpack_require__(3) && !__webpack_require__(11)(function () {
304  return Object.defineProperty(__webpack_require__(14)('div'), 'a', { get: function () { return 7; } }).a != 7;
305});
306
307//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsQ0FBZ0IsTUFBTSxtQkFBTyxDQUFDLEVBQVU7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsRUFBZSxnQkFBZ0IsbUJBQW1CLFVBQVUsRUFBRSxFQUFFO0FBQ3ZHLENBQUMiLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
308//# sourceURL=webpack-internal:///26
309`)},function(module,exports,__webpack_require__){eval(`// 7.1.1 ToPrimitive(input [, PreferredType])
310var isObject = __webpack_require__(7);
311// instead of the ES6 spec version, we didn't implement @@toPrimitive case
312// and the second argument - flag - preferred type is a string
313module.exports = function (it, S) {
314  if (!isObject(it)) return it;
315  var fn, val;
316  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
317  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
318  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
319  throw TypeError("Can't convert object to primitive value");
320};
321
322//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLENBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eX
vendor: 10,429 bytes, lines 322-431
322BlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
323//# sourceURL=webpack-internal:///27
324`)},function(module,exports,__webpack_require__){eval(`// 7.1.15 ToLength
325var toInteger = __webpack_require__(16);
326var min = Math.min;
327module.exports = function (it) {
328  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
329};
330
331//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
332//# sourceURL=webpack-internal:///28
333`)},function(module,exports,__webpack_require__){eval(`// 7.1.13 ToObject(argument)
334var defined = __webpack_require__(15);
335module.exports = function (it) {
336  return Object(defined(it));
337};
338
339//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
340//# sourceURL=webpack-internal:///29
341`)},function(module,exports,__webpack_require__){"use strict";eval(`
342var $at = __webpack_require__(50)(true);
343
344// 21.1.3.27 String.prototype[@@iterator]()
345__webpack_require__(31)(String, 'String', function (iterated) {
346  this._t = String(iterated); // target
347  this._i = 0;                // next index
348// 21.1.5.2.1 %StringIteratorPrototype%.next()
349}, function () {
350  var O = this._t;
351  var index = this._i;
352  var point;
353  if (index >= O.length) return { value: undefined, done: true };
354  point = $at(O, index);
355  this._i += point.length;
356  return { value: point, done: false };
357});
358
359//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsVUFBVSxtQkFBTyxDQUFDLEVBQWM7O0FBRWhDO0FBQ0EsbUJBQU8sQ0FBQyxFQUFnQjtBQUN4Qiw2QkFBNkI7QUFDN0IsY0FBYztBQUNkO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsVUFBVTtBQUNWLENBQUMiLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
360//# sourceURL=webpack-internal:///30
361`)},function(module,exports,__webpack_require__){"use strict";eval(`
362var LIBRARY = __webpack_require__(21);
363var $export = __webpack_require__(9);
364var redefine = __webpack_require__(45);
365var hide = __webpack_require__(6);
366var Iterators = __webpack_require__(10);
367var $iterCreate = __webpack_require__(46);
368var setToStringTag = __webpack_require__(22);
369var getPrototypeOf = __webpack_require__(49);
370var ITERATOR = __webpack_require__(1)('iterator');
371var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o \`next\`
372var FF_ITERATOR = '@@iterator';
373var KEYS = 'keys';
374var VALUES = 'values';
375
376var returnThis = function () { return this; };
377
378module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
379  $iterCreate(Constructor, NAME, next);
380  var getMethod = function (kind) {
381    if (!BUGGY && kind in proto) return proto[kind];
382    switch (kind) {
383      case KEYS: return function keys() { return new Constructor(this, kind); };
384      case VALUES: return function values() { return new Constructor(this, kind); };
385    } return function entries() { return new Constructor(this, kind); };
386  };
387  var TAG = NAME + ' Iterator';
388  var DEF_VALUES = DEFAULT == VALUES;
389  var VALUES_BUG = false;
390  var proto = Base.prototype;
391  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
392  var $default = $native || getMethod(DEFAULT);
393  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
394  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
395  var methods, key, IteratorPrototype;
396  // Fix native
397  if ($anyNative) {
398    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
399    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
400      // Set @@toStringTag to native iterators
401      setToStringTag(IteratorPrototype, TAG, true);
402      // fix for some old engines
403      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
404    }
405  }
406  // fix Array#{values, @@iterator}.name in V8 / FF
407  if (DEF_VALUES && $native && $native.name !== VALUES) {
408    VALUES_BUG = true;
409    $default = function values() { return $native.call(this); };
410  }
411  // Define iterator
412  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
413    hide(proto, ITERATOR, $default);
414  }
415  // Plug for library
416  Iterators[NAME] = $default;
417  Iterators[TAG] = returnThis;
418  if (DEFAULT) {
419    methods = {
420      values: DEF_VALUES ? $default : getMethod(VALUES),
421      keys: IS_SET ? $default : getMethod(KEYS),
422      entries: $entries
423    };
424    if (FORCED) for (key in methods) {
425      if (!(key in proto)) redefine(proto, key, methods[key]);
426    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
427  }
428  return methods;
429};
430
431//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixjQUFjLG1CQUFPLENBQUMsRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMsRUFBYTtBQUNwQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWdCO0FBQzFDLHFCQUFxQixtQkFBTyxDQUFDLEVBQXNCO0FBQ25ELHFCQUFxQixtQkFBTyxDQUFDLEVBQWU7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsYUFBYTs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvQ0FBb0M7QUFDN0UsNkNBQTZDLG9DQUFvQztBQUNqRixLQUFLLDRCQUE0QixvQ0FBb0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtQkFBbUI7QUFDbkM7QUFDQTtBQUNBLGtDQUFrQywyQkFBMkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybi
vendor: 4,651 bytes, lines 431-457
431BmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
432//# sourceURL=webpack-internal:///31
433`)},function(module,exports,__webpack_require__){eval(`// getting tag from 19.1.3.6 Object.prototype.toString()
434var cof = __webpack_require__(20);
435var TAG = __webpack_require__(1)('toStringTag');
436// ES3 wrong here
437var ARG = cof(function () { return arguments; }()) == 'Arguments';
438
439// fallback for IE11 Script Access Denied error
440var tryGet = function (it, key) {
441  try {
442    return it[key];
443  } catch (e) { /* empty */ }
444};
445
446module.exports = function (it) {
447  var O, T, B;
448  return it === undefined ? 'Undefined' : it === null ? 'Null'
449    // @@toStringTag case
450    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
451    // builtinTag case
452    : ARG ? cof(O)
453    // ES3 arguments fallback
454    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
455};
456
457//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCO0FBQ0EsMkJBQTJCLGtCQUFrQixFQUFFOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsWUFBWTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybi
457BpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanNcbi8vIG1vZHVsZSBpZCA9IDMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
458//# sourceURL=webpack-internal:///32
459`)},function(module,exports,__webpack_require__){"use strict";eval(`
460
461exports.__esModule = true;
462
463exports.default = function (instance, Constructor) {
464  if (!(instance instanceof Constructor)) {
465    throw new TypeError("Cannot call a class as a function");
466  }
467};
468//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQgNiA3IDggOSAxMCAxMSAxMiAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
469//# sourceURL=webpack-internal:///33
470`)},function(module,exports,__webpack_require__){"use strict";eval(`
471
472exports.__esModule = true;
473
474var _defineProperty = __webpack_require__(37);
475
476var _defineProperty2 = _interopRequireDefault(_defineProperty);
477
478function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
479
480exports.default = function () {
481  function defineProperties(target, props) {
482    for (var i = 0; i < props.length; i++) {
483      var descriptor = props[i];
484      descriptor.enumerable = descriptor.enumerable || false;
485      descriptor.configurable = true;
486      if ("value" in descriptor) descriptor.writable = true;
487      (0, _defineProperty2.default)(target, descriptor.key, descriptor);
488    }
489  }
490
491  return function (Constructor, protoProps, staticProps) {
492    if (protoProps) defineProperties(Constructor.prototype, protoProps);
493    if (staticProps) defineProperties(Constructor, staticProps);
494    return Constructor;
495  };
496}();
497//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7O0FBRUEsc0JBQXNCLG1CQUFPLENBQUMsRUFBbUM7O0FBRWpFOztBQUVBLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci
49753cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDExIDEyIDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ==
498//# sourceURL=webpack-internal:///34
499`)},function(module,exports,__webpack_require__){eval(`// fallback for non-array-like ES3 and non-enumerable old V8 strings
500var cof = __webpack_require__(20);
501// eslint-disable-next-line no-prototype-builtins
502module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
503  return cof(it) == 'String' ? it.split('') : Object(it);
504};
505
506//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
507//# sourceURL=webpack-internal:///35
508`)},function(module,exports,__webpack_require__){eval(`var classof = __webpack_require__(32);
509var ITERATOR = __webpack_require__(1)('iterator');
510var Iterators = __webpack_require__(10);
511module.exports = __webpack_require__(2).getIteratorMethod = function (it) {
512  if (it != undefined) return it[ITERATOR]
513    || it['@@iterator']
514    || Iterators[classof(it)];
515};
516
517//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
518//# sourceURL=webpack-internal:///36
519`)},function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(38), __esModule: true };
520//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsWUFBWSxtQkFBTyxDQUFDLEVBQTJDIiwiZmlsZSI6IjM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDEx
520IDEyIDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ==
521//# sourceURL=webpack-internal:///37
522`)},function(module,exports,__webpack_require__){eval(`__webpack_require__(39);
523var $Object = __webpack_require__(2).Object;
524module.exports = function defineProperty(it, key, desc) {
525  return $Object.defineProperty(it, key, desc);
526};
527
528//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBTyxDQUFDLEVBQTBDO0FBQ2xELGNBQWMsbUJBQU8sQ0FBQyxDQUFxQjtBQUMzQztBQUNBO0FBQ0EiLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQgNiA3IDggOSAxMCAxMSAxMiAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0=
529//# sourceURL=webpack-internal:///38
530`)},function(module,exports,__webpack_require__){eval(`var $export = __webpack_require__(9);
531// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
532$export($export.S + $export.F * !__webpack_require__(3), 'Object', { defineProperty: __webpack_require__(4).f });
533
534//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQztBQUNBLGlDQUFpQyxtQkFBTyxDQUFDLENBQWdCLGNBQWMsaUJBQWlCLG1CQUFPLENBQUMsQ0FBYyxLQUFLIiwiZmlsZSI6IjM5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDIgMyA0IDYgNyA4IDkgMTAgMTEgMTIgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9
535//# sourceURL=webpack-internal:///39
536`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.14 / 15.2.3.14 Object.keys(O)
537var $keys = __webpack_require__(42);
538var enumBugKeys = __webpack_require__(25);
539
540module.exports = Object.keys || function keys(O) {
541  return $keys(O, enumBugKeys);
542};
543
544//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxZQUFZLG1CQUFPLENBQUMsRUFBeUI7QUFDN0Msa0JBQWtCLG1CQUFPLENBQUMsRUFBa0I7O0FBRTVDO0FBQ0E7QUFDQSIsImZpbGUiOiI0MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
545//# sourceURL=webpack-internal:///40
546`)},function(module,exports,__webpack_require__){eval(`var document = __webpack_require__(0).document;
547module.exports = document && document.documentElement;
548
549//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQyIsImZpbGUiOiI0MS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qc1xuLy8gbW9kdWxlIGlkID0gN
vendor: 4,791 bytes, lines 549-595
549DFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
550//# sourceURL=webpack-internal:///41
551`)},function(module,exports,__webpack_require__){eval(`var has = __webpack_require__(8);
552var toIObject = __webpack_require__(18);
553var arrayIndexOf = __webpack_require__(43)(false);
554var IE_PROTO = __webpack_require__(17)('IE_PROTO');
555
556module.exports = function (object, names) {
557  var O = toIObject(object);
558  var i = 0;
559  var result = [];
560  var key;
561  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
562  // Don't enum bug & hidden keys
563  while (names.length > i) if (has(O, key = names[i++])) {
564    ~arrayIndexOf(result, key) || result.push(key);
565  }
566  return result;
567};
568
569//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QyxtQkFBbUIsbUJBQU8sQ0FBQyxFQUFtQjtBQUM5QyxlQUFlLG1CQUFPLENBQUMsRUFBZTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
570//# sourceURL=webpack-internal:///42
571`)},function(module,exports,__webpack_require__){eval(`// false -> Array#indexOf
572// true  -> Array#includes
573var toIObject = __webpack_require__(18);
574var toLength = __webpack_require__(28);
575var toAbsoluteIndex = __webpack_require__(44);
576module.exports = function (IS_INCLUDES) {
577  return function ($this, el, fromIndex) {
578    var O = toIObject($this);
579    var length = toLength(O.length);
580    var index = toAbsoluteIndex(fromIndex, length);
581    var value;
582    // Array#includes uses SameValueZero equality algorithm
583    // eslint-disable-next-line no-self-compare
584    if (IS_INCLUDES && el != el) while (length > index) {
585      value = O[index++];
586      // eslint-disable-next-line no-self-compare
587      if (value != value) return true;
588    // Array#indexOf ignores holes, Array#includes - not
589    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
590      if (O[index] === el) return IS_INCLUDES || index || 0;
591    } return !IS_INCLUDES && -1;
592  };
593};
594
595//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLEVBQWM7QUFDckMsc0JBQXNCLG1CQUFPLENBQUMsRUFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFlBQVksZUFBZTtBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZX
595hPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
596//# sourceURL=webpack-internal:///43
597`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16);
598var max = Math.max;
599var min = Math.min;
600module.exports = function (index, length) {
601  index = toInteger(index);
602  return index < 0 ? max(index + length, 0) : min(index, length);
603};
604
605//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
606//# sourceURL=webpack-internal:///44
607`)},function(module,exports,__webpack_require__){eval(`module.exports = __webpack_require__(6);
608
609//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsQ0FBUyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSA0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
610//# sourceURL=webpack-internal:///45
611`)},function(module,exports,__webpack_require__){"use strict";eval(`
612var create = __webpack_require__(47);
613var descriptor = __webpack_require__(12);
614var setToStringTag = __webpack_require__(22);
615var IteratorPrototype = {};
616
617// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
618__webpack_require__(6)(IteratorPrototype, __webpack_require__(1)('iterator'), function () { return this; });
619
620module.exports = function (Constructor, NAME, next) {
621  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
622  setToStringTag(Constructor, NAME + ' Iterator');
623};
624
625//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixhQUFhLG1CQUFPLENBQUMsRUFBa0I7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsRUFBa0I7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMsRUFBc0I7QUFDbkQ7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLENBQVMscUJBQXFCLG1CQUFPLENBQUMsQ0FBUSw0QkFBNEIsYUFBYSxFQUFFOztBQUVqRztBQUNBLHFEQUFxRCw0QkFBNEI7QUFDakY7QUFDQSIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 8,933 bytes, lines 625-713
625IDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
626//# sourceURL=webpack-internal:///46
627`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
628var anObject = __webpack_require__(5);
629var dPs = __webpack_require__(48);
630var enumBugKeys = __webpack_require__(25);
631var IE_PROTO = __webpack_require__(17)('IE_PROTO');
632var Empty = function () { /* empty */ };
633var PROTOTYPE = 'prototype';
634
635// Create object with fake \`null\` prototype: use iframe Object with cleared prototype
636var createDict = function () {
637  // Thrash, waste and sodomy: IE GC bug
638  var iframe = __webpack_require__(14)('iframe');
639  var i = enumBugKeys.length;
640  var lt = '<';
641  var gt = '>';
642  var iframeDocument;
643  iframe.style.display = 'none';
644  __webpack_require__(41).appendChild(iframe);
645  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
646  // createDict = iframe.contentWindow.Object;
647  // html.removeChild(iframe);
648  iframeDocument = iframe.contentWindow.document;
649  iframeDocument.open();
650  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
651  iframeDocument.close();
652  createDict = iframeDocument.F;
653  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
654  return createDict();
655};
656
657module.exports = Object.create || function create(O, Properties) {
658  var result;
659  if (O !== null) {
660    Empty[PROTOTYPE] = anObject(O);
661    result = new Empty();
662    Empty[PROTOTYPE] = null;
663    // add "__proto__" for Object.getPrototypeOf polyfill
664    result[IE_PROTO] = O;
665  } else result = createDict();
666  return Properties === undefined ? result : dPs(result, Properties);
667};
668
669//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLFVBQVUsbUJBQU8sQ0FBQyxFQUFlO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWtCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsRUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLEVBQVM7QUFDbkIsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiI0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
670//# sourceURL=webpack-internal:///47
671`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4);
672var anObject = __webpack_require__(5);
673var getKeys = __webpack_require__(40);
674
675module.exports = __webpack_require__(3) ? Object.defineProperties : function defineProperties(O, Properties) {
676  anObject(O);
677  var keys = getKeys(Properties);
678  var length = keys.length;
679  var i = 0;
680  var P;
681  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
682  return O;
683};
684
685//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxjQUFjLG1CQUFPLENBQUMsRUFBZ0I7O0FBRXRDLGlCQUFpQixtQkFBTyxDQUFDLENBQWdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0=
686//# sourceURL=webpack-internal:///48
687`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
688var has = __webpack_require__(8);
689var toObject = __webpack_require__(29);
690var IE_PROTO = __webpack_require__(17)('IE_PROTO');
691var ObjectProto = Object.prototype;
692
693module.exports = Object.getPrototypeOf || function (O) {
694  O = toObject(O);
695  if (has(O, IE_PROTO)) return O[IE_PROTO];
696  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
697    return O.constructor.prototype;
698  } return O instanceof Object ? ObjectProto : null;
699};
700
701//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyxFQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ==
702//# sourceURL=webpack-internal:///49
703`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16);
704var defined = __webpack_require__(15);
705// true  -> String#at
706// false -> String#codePointAt
707module.exports = function (TO_STRING) {
708  return function (that, pos) {
709    var s = String(defined(that));
710    var i = toInteger(pos);
711    var l = s.length;
712    var a, b;
713    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
vendor: 4,872 bytes, lines 714-747
714    a = s.charCodeAt(i);
715    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
716      ? TO_STRING ? s.charAt(i) : a
717      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
718  };
719};
720
721//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanNcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9
722//# sourceURL=webpack-internal:///50
723`)},,function(module,exports,__webpack_require__){eval(`// call something on iterator step with safe closing on error
724var anObject = __webpack_require__(5);
725module.exports = function (iterator, fn, value, entries) {
726  try {
727    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
728  // 7.4.6 IteratorClose(iterator, completion)
729  } catch (e) {
730    var ret = iterator['return'];
731    if (ret !== undefined) anObject(ret.call(iterator));
732    throw e;
733  }
734};
735
736//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLENBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDExIDEyIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==
737//# sourceURL=webpack-internal:///52
738`)},function(module,exports,__webpack_require__){eval(`// check on default Array iterator
739var Iterators = __webpack_require__(10);
740var ITERATOR = __webpack_require__(1)('iterator');
741var ArrayProto = Array.prototype;
742
743module.exports = function (it) {
744  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
745};
746
747//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0I7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qc1xuLy8gbW9kdWxlIGlkID0gNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDEx
vendor: 7,377 bytes, lines 747-831
747IDEyIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==
748//# sourceURL=webpack-internal:///53
749`)},function(module,exports,__webpack_require__){eval(`var ITERATOR = __webpack_require__(1)('iterator');
750var SAFE_CLOSING = false;
751
752try {
753  var riter = [7][ITERATOR]();
754  riter['return'] = function () { SAFE_CLOSING = true; };
755  // eslint-disable-next-line no-throw-literal
756  Array.from(riter, function () { throw 2; });
757} catch (e) { /* empty */ }
758
759module.exports = function (exec, skipClosing) {
760  if (!skipClosing && !SAFE_CLOSING) return false;
761  var safe = false;
762  try {
763    var arr = [7];
764    var iter = arr[ITERATOR]();
765    iter.next = function () { return { done: safe = true }; };
766    arr[ITERATOR] = function () { return iter; };
767    exec(arr);
768  } catch (e) { /* empty */ }
769  return safe;
770};
771
772//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0I7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQSxpQ0FBaUMsU0FBUyxFQUFFO0FBQzVDLENBQUMsWUFBWTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxxQkFBcUI7QUFDM0QsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQSxHQUFHLFlBQVk7QUFDZjtBQUNBIiwiZmlsZSI6IjU0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDExIDEyIDE0Il0sInNvdXJjZVJvb3QiOiIifQ==
773//# sourceURL=webpack-internal:///54
774`)},,function(module,exports,__webpack_require__){eval(`__webpack_require__(63);
775var global = __webpack_require__(0);
776var hide = __webpack_require__(6);
777var Iterators = __webpack_require__(10);
778var TO_STRING_TAG = __webpack_require__(1)('toStringTag');
779
780var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
781  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
782  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
783  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
784  'TextTrackList,TouchList').split(',');
785
786for (var i = 0; i < DOMIterables.length; i++) {
787  var NAME = DOMIterables[i];
788  var Collection = global[NAME];
789  var proto = Collection && Collection.prototype;
790  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
791  Iterators[NAME] = Iterators.Array;
792}
793
794//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsRUFBc0I7QUFDOUIsYUFBYSxtQkFBTyxDQUFDLENBQVc7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLENBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxDQUFROztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxMyAxNSJdLCJzb3VyY2VSb290IjoiIn0=
795//# sourceURL=webpack-internal:///56
796`)},,,,,,,function(module,exports,__webpack_require__){"use strict";eval(`
797var addToUnscopables = __webpack_require__(64);
798var step = __webpack_require__(65);
799var Iterators = __webpack_require__(10);
800var toIObject = __webpack_require__(18);
801
802// 22.1.3.4 Array.prototype.entries()
803// 22.1.3.13 Array.prototype.keys()
804// 22.1.3.29 Array.prototype.values()
805// 22.1.3.30 Array.prototype[@@iterator]()
806module.exports = __webpack_require__(31)(Array, 'Array', function (iterated, kind) {
807  this._t = toIObject(iterated); // target
808  this._i = 0;                   // next index
809  this._k = kind;                // kind
810// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
811}, function () {
812  var O = this._t;
813  var kind = this._k;
814  var index = this._i++;
815  if (!O || index >= O.length) {
816    this._t = undefined;
817    return step(1);
818  }
819  if (kind == 'keys') return step(0, index);
820  if (kind == 'values') return step(0, O[index]);
821  return step(0, [index, O[index]]);
822}, 'values');
823
824// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
825Iterators.Arguments = Iterators.Array;
826
827addToUnscopables('keys');
828addToUnscopables('values');
829addToUnscopables('entries');
830
831//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix1QkFBdUIsbUJBQU8sQ0FBQyxFQUF1QjtBQUN0RCxXQUFXLG1CQUFPLENBQUMsRUFBYztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsRUFBZ0I7QUFDekMsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxpQkFBaUI7QUFDakI7QU
vendor: 12,552 bytes, lines 831-961
831FDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTMgMTUiXSwic291cmNlUm9vdCI6IiJ9
832//# sourceURL=webpack-internal:///63
833`)},function(module,exports){eval(`module.exports = function () { /* empty */ };
834
835//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QiIsImZpbGUiOiI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTMgMTUiXSwic291cmNlUm9vdCI6IiJ9
836//# sourceURL=webpack-internal:///64
837`)},function(module,exports){eval(`module.exports = function (done, value) {
838  return { value: value, done: !!done };
839};
840
841//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsVUFBVTtBQUNWIiwiZmlsZSI6IjY1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxMyAxNSJdLCJzb3VyY2VSb290IjoiIn0=
842//# sourceURL=webpack-internal:///65
843`)},,,,function(module,exports,__webpack_require__){"use strict";eval(`
844// 25.4.1.5 NewPromiseCapability(C)
845var aFunction = __webpack_require__(19);
846
847function PromiseCapability(C) {
848  var resolve, reject;
849  this.promise = new C(function ($$resolve, $$reject) {
850    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
851    resolve = $$resolve;
852    reject = $$reject;
853  });
854  this.resolve = aFunction(resolve);
855  this.reject = aFunction(reject);
856}
857
858module.exports.f = function (C) {
859  return new PromiseCapability(C);
860};
861
862//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
863//# sourceURL=webpack-internal:///69
864`)},,function(module,exports,__webpack_require__){eval(`// 7.3.20 SpeciesConstructor(O, defaultConstructor)
865var anObject = __webpack_require__(5);
866var aFunction = __webpack_require__(19);
867var SPECIES = __webpack_require__(1)('species');
868module.exports = function (O, D) {
869  var C = anObject(O).constructor;
870  var S;
871  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
872};
873
874//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLENBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI3MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDIgMyA0Il0sInNvdXJjZVJvb3QiOiIifQ==
875//# sourceURL=webpack-internal:///71
876`)},function(module,exports,__webpack_require__){eval(`var ctx = __webpack_require__(13);
877var invoke = __webpack_require__(101);
878var html = __webpack_require__(41);
879var cel = __webpack_require__(14);
880var global = __webpack_require__(0);
881var process = global.process;
882var setTask = global.setImmediate;
883var clearTask = global.clearImmediate;
884var MessageChannel = global.MessageChannel;
885var Dispatch = global.Dispatch;
886var counter = 0;
887var queue = {};
888var ONREADYSTATECHANGE = 'onreadystatechange';
889var defer, channel, port;
890var run = function () {
891  var id = +this;
892  // eslint-disable-next-line no-prototype-builtins
893  if (queue.hasOwnProperty(id)) {
894    var fn = queue[id];
895    delete queue[id];
896    fn();
897  }
898};
899var listener = function (event) {
900  run.call(event.data);
901};
902// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
903if (!setTask || !clearTask) {
904  setTask = function setImmediate(fn) {
905    var args = [];
906    var i = 1;
907    while (arguments.length > i) args.push(arguments[i++]);
908    queue[++counter] = function () {
909      // eslint-disable-next-line no-new-func
910      invoke(typeof fn == 'function' ? fn : Function(fn), args);
911    };
912    defer(counter);
913    return counter;
914  };
915  clearTask = function clearImmediate(id) {
916    delete queue[id];
917  };
918  // Node.js 0.8-
919  if (__webpack_require__(20)(process) == 'process') {
920    defer = function (id) {
921      process.nextTick(ctx(run, id, 1));
922    };
923  // Sphere (JS game engine) Dispatch API
924  } else if (Dispatch && Dispatch.now) {
925    defer = function (id) {
926      Dispatch.now(ctx(run, id, 1));
927    };
928  // Browsers with MessageChannel, includes WebWorkers
929  } else if (MessageChannel) {
930    channel = new MessageChannel();
931    port = channel.port2;
932    channel.port1.onmessage = listener;
933    defer = ctx(port.postMessage, port, 1);
934  // Browsers with postMessage, skip WebWorkers
935  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
936  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
937    defer = function (id) {
938      global.postMessage(id + '', '*');
939    };
940    global.addEventListener('message', listener, false);
941  // IE8-
942  } else if (ONREADYSTATECHANGE in cel('script')) {
943    defer = function (id) {
944      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
945        html.removeChild(this);
946        run.call(id);
947      };
948    };
949  // Rest old browsers
950  } else {
951    defer = function (id) {
952      setTimeout(ctx(run, id, 1), 0);
953    };
954  }
955}
956module.exports = {
957  set: setTask,
958  clear: clearTask
959};
960
961//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVLG1CQUFPLENBQUMsRUFBUTtBQUMxQixhQUFhLG1CQUFPLENBQUMsR0FBVztBQUNoQyxXQUFXLG1CQUFPLENBQUMsRUFBUztBQUM1QixVQUFVLG1CQUFPLENBQUMsRUFBZTtBQUNqQyxhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtQkFBTyxDQUFDLEVBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjcyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUp
961IERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdF
961IGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
962//# sourceURL=webpack-internal:///72
963`)},function(module,exports){eval(`module.exports = function (exec) {
964  try {
965    return { e: false, v: exec() };
966  } catch (e) {
967    return { e: true, v: e };
968  }
969};
970
971//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLEdBQUc7QUFDSCxZQUFZO0FBQ1o7QUFDQSIsImZpbGUiOiI3My5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcGVyZm9ybS5qc1xuLy8gbW9kdWxlIGlkID0gNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
972//# sourceURL=webpack-internal:///73
973`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5);
974var isObject = __webpack_require__(7);
975var newPromiseCapability = __webpack_require__(69);
976
977module.exports = function (C, x) {
978  anObject(C);
979  if (isObject(x) && x.constructor === C) return x;
980  var promiseCapability = newPromiseCapability.f(C);
981  var resolve = promiseCapability.resolve;
982  resolve(x);
983  return promiseCapability.promise;
984};
985
986//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLDJCQUEyQixtQkFBTyxDQUFDLEVBQTJCOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ijc0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
987//# sourceURL=webpack-internal:///74
988`)},,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(96), __esModule: true };
989//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsWUFBWSxtQkFBTyxDQUFDLEVBQTRCIiwiZmlsZSI6Ijk1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2VcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
990//# sourceURL=webpack-internal:///95
991`)},function(module,exports,__webpack_require__){eval(`__webpack_require__(97);
992__webpack_require__(30);
993__webpack_require__(56);
994__webpack_require__(98);
995__webpack_require__(106);
996__webpack_require__(107);
997module.exports = __webpack_require__(2).Promise;
998
999//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQk
vendor: 13,345 bytes, lines 999-1291
999FBTyxDQUFDLEVBQWlDO0FBQ3pDLG1CQUFPLENBQUMsRUFBZ0M7QUFDeEMsbUJBQU8sQ0FBQyxFQUE2QjtBQUNyQyxtQkFBTyxDQUFDLEVBQXdCO0FBQ2hDLG1CQUFPLENBQUMsR0FBZ0M7QUFDeEMsbUJBQU8sQ0FBQyxHQUE0QjtBQUNwQyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFrQiIsImZpbGUiOiI5Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5wcm9taXNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnByb21pc2UudHJ5Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvX2NvcmUnKS5Qcm9taXNlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanNcbi8vIG1vZHVsZSBpZCA9IDk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
1000//# sourceURL=webpack-internal:///96
1001`)},function(module,exports){eval(`
1002//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbXSwic291cmNlUm9vdCI6IiJ9
1003//# sourceURL=webpack-internal:///97
1004`)},function(module,exports,__webpack_require__){"use strict";eval(`
1005var LIBRARY = __webpack_require__(21);
1006var global = __webpack_require__(0);
1007var ctx = __webpack_require__(13);
1008var classof = __webpack_require__(32);
1009var $export = __webpack_require__(9);
1010var isObject = __webpack_require__(7);
1011var aFunction = __webpack_require__(19);
1012var anInstance = __webpack_require__(99);
1013var forOf = __webpack_require__(100);
1014var speciesConstructor = __webpack_require__(71);
1015var task = __webpack_require__(72).set;
1016var microtask = __webpack_require__(102)();
1017var newPromiseCapabilityModule = __webpack_require__(69);
1018var perform = __webpack_require__(73);
1019var userAgent = __webpack_require__(103);
1020var promiseResolve = __webpack_require__(74);
1021var PROMISE = 'Promise';
1022var TypeError = global.TypeError;
1023var process = global.process;
1024var versions = process && process.versions;
1025var v8 = versions && versions.v8 || '';
1026var $Promise = global[PROMISE];
1027var isNode = classof(process) == 'process';
1028var empty = function () { /* empty */ };
1029var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
1030var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
1031
1032var USE_NATIVE = !!function () {
1033  try {
1034    // correct subclassing with @@species support
1035    var promise = $Promise.resolve(1);
1036    var FakePromise = (promise.constructor = {})[__webpack_require__(1)('species')] = function (exec) {
1037      exec(empty, empty);
1038    };
1039    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
1040    return (isNode || typeof PromiseRejectionEvent == 'function')
1041      && promise.then(empty) instanceof FakePromise
1042      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
1043      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
1044      // we can't detect it synchronously, so just check versions
1045      && v8.indexOf('6.6') !== 0
1046      && userAgent.indexOf('Chrome/66') === -1;
1047  } catch (e) { /* empty */ }
1048}();
1049
1050// helpers
1051var isThenable = function (it) {
1052  var then;
1053  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
1054};
1055var notify = function (promise, isReject) {
1056  if (promise._n) return;
1057  promise._n = true;
1058  var chain = promise._c;
1059  microtask(function () {
1060    var value = promise._v;
1061    var ok = promise._s == 1;
1062    var i = 0;
1063    var run = function (reaction) {
1064      var handler = ok ? reaction.ok : reaction.fail;
1065      var resolve = reaction.resolve;
1066      var reject = reaction.reject;
1067      var domain = reaction.domain;
1068      var result, then, exited;
1069      try {
1070        if (handler) {
1071          if (!ok) {
1072            if (promise._h == 2) onHandleUnhandled(promise);
1073            promise._h = 1;
1074          }
1075          if (handler === true) result = value;
1076          else {
1077            if (domain) domain.enter();
1078            result = handler(value); // may throw
1079            if (domain) {
1080              domain.exit();
1081              exited = true;
1082            }
1083          }
1084          if (result === reaction.promise) {
1085            reject(TypeError('Promise-chain cycle'));
1086          } else if (then = isThenable(result)) {
1087            then.call(result, resolve, reject);
1088          } else resolve(result);
1089        } else reject(value);
1090      } catch (e) {
1091        if (domain && !exited) domain.exit();
1092        reject(e);
1093      }
1094    };
1095    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
1096    promise._c = [];
1097    promise._n = false;
1098    if (isReject && !promise._h) onUnhandled(promise);
1099  });
1100};
1101var onUnhandled = function (promise) {
1102  task.call(global, function () {
1103    var value = promise._v;
1104    var unhandled = isUnhandled(promise);
1105    var result, handler, console;
1106    if (unhandled) {
1107      result = perform(function () {
1108        if (isNode) {
1109          process.emit('unhandledRejection', value, promise);
1110        } else if (handler = global.onunhandledrejection) {
1111          handler({ promise: promise, reason: value });
1112        } else if ((console = global.console) && console.error) {
1113          console.error('Unhandled promise rejection', value);
1114        }
1115      });
1116      // Browsers should not trigger \`rejectionHandled\` event if it was handled here, NodeJS - should
1117      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
1118    } promise._a = undefined;
1119    if (unhandled && result.e) throw result.v;
1120  });
1121};
1122var isUnhandled = function (promise) {
1123  return promise._h !== 1 && (promise._a || promise._c).length === 0;
1124};
1125var onHandleUnhandled = function (promise) {
1126  task.call(global, function () {
1127    var handler;
1128    if (isNode) {
1129      process.emit('rejectionHandled', promise);
1130    } else if (handler = global.onrejectionhandled) {
1131      handler({ promise: promise, reason: promise._v });
1132    }
1133  });
1134};
1135var $reject = function (value) {
1136  var promise = this;
1137  if (promise._d) return;
1138  promise._d = true;
1139  promise = promise._w || promise; // unwrap
1140  promise._v = value;
1141  promise._s = 2;
1142  if (!promise._a) promise._a = promise._c.slice();
1143  notify(promise, true);
1144};
1145var $resolve = function (value) {
1146  var promise = this;
1147  var then;
1148  if (promise._d) return;
1149  promise._d = true;
1150  promise = promise._w || promise; // unwrap
1151  try {
1152    if (promise === value) throw TypeError("Promise can't be resolved itself");
1153    if (then = isThenable(value)) {
1154      microtask(function () {
1155        var wrapper = { _w: promise, _d: false }; // wrap
1156        try {
1157          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
1158        } catch (e) {
1159          $reject.call(wrapper, e);
1160        }
1161      });
1162    } else {
1163      promise._v = value;
1164      promise._s = 1;
1165      notify(promise, false);
1166    }
1167  } catch (e) {
1168    $reject.call({ _w: promise, _d: false }, e); // wrap
1169  }
1170};
1171
1172// constructor polyfill
1173if (!USE_NATIVE) {
1174  // 25.4.3.1 Promise(executor)
1175  $Promise = function Promise(executor) {
1176    anInstance(this, $Promise, PROMISE, '_h');
1177    aFunction(executor);
1178    Internal.call(this);
1179    try {
1180      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
1181    } catch (err) {
1182      $reject.call(this, err);
1183    }
1184  };
1185  // eslint-disable-next-line no-unused-vars
1186  Internal = function Promise(executor) {
1187    this._c = [];             // <- awaiting reactions
1188    this._a = undefined;      // <- checked in isUnhandled reactions
1189    this._s = 0;              // <- state
1190    this._d = false;          // <- done
1191    this._v = undefined;      // <- value
1192    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
1193    this._n = false;          // <- notify
1194  };
1195  Internal.prototype = __webpack_require__(104)($Promise.prototype, {
1196    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
1197    then: function then(onFulfilled, onRejected) {
1198      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
1199      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
1200      reaction.fail = typeof onRejected == 'function' && onRejected;
1201      reaction.domain = isNode ? process.domain : undefined;
1202      this._c.push(reaction);
1203      if (this._a) this._a.push(reaction);
1204      if (this._s) notify(this, false);
1205      return reaction.promise;
1206    },
1207    // 25.4.5.1 Promise.prototype.catch(onRejected)
1208    'catch': function (onRejected) {
1209      return this.then(undefined, onRejected);
1210    }
1211  });
1212  OwnPromiseCapability = function () {
1213    var promise = new Internal();
1214    this.promise = promise;
1215    this.resolve = ctx($resolve, promise, 1);
1216    this.reject = ctx($reject, promise, 1);
1217  };
1218  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
1219    return C === $Promise || C === Wrapper
1220      ? new OwnPromiseCapability(C)
1221      : newGenericPromiseCapability(C);
1222  };
1223}
1224
1225$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
1226__webpack_require__(22)($Promise, PROMISE);
1227__webpack_require__(105)(PROMISE);
1228Wrapper = __webpack_require__(2)[PROMISE];
1229
1230// statics
1231$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
1232  // 25.4.4.5 Promise.reject(r)
1233  reject: function reject(r) {
1234    var capability = newPromiseCapability(this);
1235    var $$reject = capability.reject;
1236    $$reject(r);
1237    return capability.promise;
1238  }
1239});
1240$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
1241  // 25.4.4.6 Promise.resolve(x)
1242  resolve: function resolve(x) {
1243    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
1244  }
1245});
1246$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(54)(function (iter) {
1247  $Promise.all(iter)['catch'](empty);
1248})), PROMISE, {
1249  // 25.4.4.1 Promise.all(iterable)
1250  all: function all(iterable) {
1251    var C = this;
1252    var capability = newPromiseCapability(C);
1253    var resolve = capability.resolve;
1254    var reject = capability.reject;
1255    var result = perform(function () {
1256      var values = [];
1257      var index = 0;
1258      var remaining = 1;
1259      forOf(iterable, false, function (promise) {
1260        var $index = index++;
1261        var alreadyCalled = false;
1262        values.push(undefined);
1263        remaining++;
1264        C.resolve(promise).then(function (value) {
1265          if (alreadyCalled) return;
1266          alreadyCalled = true;
1267          values[$index] = value;
1268          --remaining || resolve(values);
1269        }, reject);
1270      });
1271      --remaining || resolve(values);
1272    });
1273    if (result.e) reject(result.v);
1274    return capability.promise;
1275  },
1276  // 25.4.4.4 Promise.race(iterable)
1277  race: function race(iterable) {
1278    var C = this;
1279    var capability = newPromiseCapability(C);
1280    var reject = capability.reject;
1281    var result = perform(function () {
1282      forOf(iterable, false, function (promise) {
1283        C.resolve(promise).then(capability.resolve, reject);
1284      });
1285    });
1286    if (result.e) reject(result.v);
1287    return capability.promise;
1288  }
1289});
1290
1291//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxDQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsRUFBZ0I7QUFDekMsWUFBWSxtQkFBTyxDQUFDLEdBQVc7QUFDL0IseUJBQXlCLG1CQUFPLENBQUMsRUFBd0I7QUFDekQsV0FBVyxtQkFBTyxDQUFDLEVBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsR0FBYztBQUN0QyxpQ0FBaUMsbUJBQU8sQ0FBQyxFQUEyQjtBQUNwRSxjQUFjLG1CQUFPLENBQUMsRUFBWTtBQUNsQyxnQkFBZ0IsbUJBQU8sQ0FBQyxHQUFlO0FBQ3ZDLHFCQUFxQixtQkFBTyxDQUFDLEVBQW9CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRSxtQkFBTyxDQUFDLENBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLFlBQVk7QUFDZixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG1CQUFtQixrQ0FBa0M7QUFDckQsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZUFBZSx1Q0FBdUM7QUFDdEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwQkFBMEI7QUFDakQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxrQkFBa0IseUJBQXlCLEtBQUs7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQix3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtB
1291QUNwQix3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtBQUNwQjtBQUNBLHVCQUF1QixtQkFBTyxDQUFDLEdBQWlCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBMEQsb0JBQW9CO0FBQzlFLG1CQUFPLENBQUMsRUFBc0I7QUFDOUIsbUJBQU8sQ0FBQyxHQUFnQjtBQUN4QixVQUFVLG1CQUFPLENBQUMsQ0FBUzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsZ0RBQWdELG1CQUFPLENBQUMsRUFBZ0I7QUFDeEU7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ijk4LmpzIiwic291cmNlc0NvbnRlbnQiOls
vendor: 13,467 bytes, line 1291
1291iJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52OCB8fCAnJztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpXG4gICAgICAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2VcbiAgICAgIC8vIHY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgICAgLy8gd2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgICAgICYmIHY4LmluZGV4T2YoJzYuNicpICE9PSAwXG4gICAgICAmJiB1c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lLzY2JykgPT09IC0xO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG
vendor: 8,081 bytes, lines 1291-1363
12915cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
1292//# sourceURL=webpack-internal:///98
1293`)},function(module,exports){eval(`module.exports = function (it, Constructor, name, forbiddenField) {
1294  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
1295    throw TypeError(name + ': incorrect invocation!');
1296  } return it;
1297};
1298
1299//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6Ijk5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
1300//# sourceURL=webpack-internal:///99
1301`)},function(module,exports,__webpack_require__){eval(`var ctx = __webpack_require__(13);
1302var call = __webpack_require__(52);
1303var isArrayIter = __webpack_require__(53);
1304var anObject = __webpack_require__(5);
1305var toLength = __webpack_require__(28);
1306var getIterFn = __webpack_require__(36);
1307var BREAK = {};
1308var RETURN = {};
1309var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
1310  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
1311  var f = ctx(fn, that, entries ? 2 : 1);
1312  var index = 0;
1313  var length, step, iterator, result;
1314  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
1315  // fast case for arrays with default iterator
1316  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
1317    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
1318    if (result === BREAK || result === RETURN) return result;
1319  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
1320    result = call(iterator, f, step.value, entries);
1321    if (result === BREAK || result === RETURN) return result;
1322  }
1323};
1324exports.BREAK = BREAK;
1325exports.RETURN = RETURN;
1326
1327//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxFQUFjO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWtCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxFQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLEVBQTRCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxpQkFBaUIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLGdCQUFnQjtBQUNuRjtBQUNBO0FBQ0EsR0FBRyw0Q0FBNEMsZ0NBQWdDO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
1328//# sourceURL=webpack-internal:///100
1329`)},function(module,exports){eval(`// fast apply, http://jsperf.lnkit.com/fast-apply/5
1330module.exports = function (fn, args, that) {
1331  var un = that === undefined;
1332  switch (args.length) {
1333    case 0: return un ? fn()
1334                      : fn.call(that);
1335    case 1: return un ? fn(args[0])
1336                      : fn.call(that, args[0]);
1337    case 2: return un ? fn(args[0], args[1])
1338                      : fn.call(that, args[0], args[1]);
1339    case 3: return un ? fn(args[0], args[1], args[2])
1340                      : fn.call(that, args[0], args[1], args[2]);
1341    case 4: return un ? fn(args[0], args[1], args[2], args[3])
1342                      : fn.call(that, args[0], args[1], args[2], args[3]);
1343  } return fn.apply(that, args);
1344};
1345
1346//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiMTAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qc1xuLy8gbW9kdWxlIGlkID0gMTAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
1347//# sourceURL=webpack-internal:///101
1348`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0);
1349var macrotask = __webpack_require__(72).set;
1350var Observer = global.MutationObserver || global.WebKitMutationObserver;
1351var process = global.process;
1352var Promise = global.Promise;
1353var isNode = __webpack_require__(20)(process) == 'process';
1354
1355module.exports = function () {
1356  var head, last, notify;
1357
1358  var flush = function () {
1359    var parent, fn;
1360    if (isNode && (parent = process.domain)) parent.exit();
1361    while (head) {
1362      fn = head.fn;
1363      head = head.next;
vendor: 2,874 bytes, lines 1364-1418
1364      try {
1365        fn();
1366      } catch (e) {
1367        if (head) notify();
1368        else last = undefined;
1369        throw e;
1370      }
1371    } last = undefined;
1372    if (parent) parent.enter();
1373  };
1374
1375  // Node.js
1376  if (isNode) {
1377    notify = function () {
1378      process.nextTick(flush);
1379    };
1380  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
1381  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
1382    var toggle = true;
1383    var node = document.createTextNode('');
1384    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
1385    notify = function () {
1386      node.data = toggle = !toggle;
1387    };
1388  // environments with maybe non-completely correct, but existent Promise
1389  } else if (Promise && Promise.resolve) {
1390    // Promise.resolve without an argument throws an error in LG WebOS 2
1391    var promise = Promise.resolve(undefined);
1392    notify = function () {
1393      promise.then(flush);
1394    };
1395  // for other environments - macrotask based on:
1396  // - setImmediate
1397  // - MessageChannel
1398  // - window.postMessag
1399  // - onreadystatechange
1400  // - setTimeout
1401  } else {
1402    notify = function () {
1403      // strange IE + webpack dev server bug - use .call(global)
1404      macrotask.call(global, flush);
1405    };
1406  }
1407
1408  return function (fn) {
1409    var task = { fn: fn, next: undefined };
1410    if (last) last.next = task;
1411    if (!head) {
1412      head = task;
1413      notify();
1414    } last = task;
1415  };
1416};
1417
1418//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLGdCQUFnQixtQkFBTyxDQUFDLEVBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtQkFBTyxDQUFDLEVBQVE7O0FBRTdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLHNCQUFzQixFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjEwMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjt
1418cbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMTAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
1419//# sourceURL=webpack-internal:///102
1420`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0);
1421var navigator = global.navigator;
1422
1423module.exports = navigator && navigator.userAgent || '';
1424
1425//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanM/ODk0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQzs7QUFFQSIsImZpbGUiOiIxMDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
1426//# sourceURL=webpack-internal:///103
1427`)},function(module,exports,__webpack_require__){eval(`var hide = __webpack_require__(6);
1428module.exports = function (target, src, safe) {
1429  for (var key in src) {
1430    if (safe && target[key]) target[key] = src[key];
1431    else hide(target, key, src[key]);
1432  } return target;
1433};
1434
1435//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6IjEwNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybi
1435B0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9
1436//# sourceURL=webpack-internal:///104
1437`)},function(module,exports,__webpack_require__){"use strict";eval(`
1438var global = __webpack_require__(0);
1439var core = __webpack_require__(2);
1440var dP = __webpack_require__(4);
1441var DESCRIPTORS = __webpack_require__(3);
1442var SPECIES = __webpack_require__(1)('species');
1443
1444module.exports = function (KEY) {
1445  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
1446  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
1447    configurable: true,
1448    get: function () { return this; }
1449  });
1450};
1451
1452//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixrQkFBa0IsbUJBQU8sQ0FBQyxDQUFnQjtBQUMxQyxjQUFjLG1CQUFPLENBQUMsQ0FBUTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQyxHQUFHO0FBQ0giLCJmaWxlIjoiMTA1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcm
vendor: 4,385 bytes, lines 1452-1490
1452UgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDIgMyA0Il0sInNvdXJjZVJvb3QiOiIifQ==
1453//# sourceURL=webpack-internal:///105
1454`)},function(module,exports,__webpack_require__){"use strict";eval(`// https://github.com/tc39/proposal-promise-finally
1455
1456var $export = __webpack_require__(9);
1457var core = __webpack_require__(2);
1458var global = __webpack_require__(0);
1459var speciesConstructor = __webpack_require__(71);
1460var promiseResolve = __webpack_require__(74);
1461
1462$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
1463  var C = speciesConstructor(this, core.Promise || global.Promise);
1464  var isFunction = typeof onFinally == 'function';
1465  return this.then(
1466    isFunction ? function (x) {
1467      return promiseResolve(C, onFinally()).then(function () { return x; });
1468    } : onFinally,
1469    isFunction ? function (e) {
1470      return promiseResolve(C, onFinally()).then(function () { throw e; });
1471    } : onFinally
1472  );
1473} });
1474
1475//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ2E7QUFDYixjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQyx5QkFBeUIsbUJBQU8sQ0FBQyxFQUF3QjtBQUN6RCxxQkFBcUIsbUJBQU8sQ0FBQyxFQUFvQjs7QUFFakQsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELFVBQVUsRUFBRTtBQUMxRSxLQUFLO0FBQ0w7QUFDQSw4REFBOEQsU0FBUyxFQUFFO0FBQ3pFLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRSIsImZpbGUiOiIxMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
1476//# sourceURL=webpack-internal:///106
1477`)},function(module,exports,__webpack_require__){"use strict";eval(`
1478// https://github.com/tc39/proposal-promise-try
1479var $export = __webpack_require__(9);
1480var newPromiseCapability = __webpack_require__(69);
1481var perform = __webpack_require__(73);
1482
1483$export($export.S, 'Promise', { 'try': function (callbackfn) {
1484  var promiseCapability = newPromiseCapability.f(this);
1485  var result = perform(callbackfn);
1486  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
1487  return promiseCapability.promise;
1488} });
1489
1490//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxDQUFXO0FBQ2pDLDJCQUEyQixtQk
1490FBTyxDQUFDLEVBQTJCO0FBQzlELGNBQWMsbUJBQU8sQ0FBQyxFQUFZOztBQUVsQywrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUUiLCJmaWxlIjoiMTA3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDdcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0=
1491//# sourceURL=webpack-internal:///107
1492`)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(g,n,t){g.exports=t(210)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
1493/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__ = __webpack_require__(95);
1494/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__);
1495/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(33);
1496/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);
1497/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(34);
1498/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__);
1499
1500
1501
1502
1503var Shopping = function () {
1504  function Shopping(url, elemento, velo) {
1505    __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Shopping);
1506
1507    this.url = window.location.protocol + '//' + window.location.host + url;
1508    this.myBooking = elemento;
1509    this.shoppingCartVelo = velo;
1510    this.shoppingCartClose = 'carrito-top__close';
1511    this.shoppingWrap = null;
1512    this.init();
1513  }
1514
1515  __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(Shopping, [{
1516    key: 'init',
1517    value: function init() {
1518      var _this = this;
1519
1520      document.addEventListener('click', function (event) {
1521        var select = event.target;
1522        if (select.classList.contains(_this.myBooking)) {
1523          _this.createModal();
1524        }
1525
1526        if (select.classList.contains(_this.shoppingCartVelo) || select.classList.contains(_this.shoppingCartClose)) {
1527          _this.closeModal(_this.shoppingCartVelo);
1528        }
1529      });
1530
1531      document.addEventListener('keyup', function (event) {
1532        if (event.key === 'Escape') {
1533          _this.closeModal(_this.shoppingCartVelo);
1534        }
1535      });
1536    }
1537  }, {
1538    key: 'createModal',
1539    value: function createModal() {
1540      var bodyGeneric = document.querySelector('body');
1541      var overlay = 'div';
1542      overlay = document.createElement(overlay);
1543      overlay.id = 'bc_carrito_top_velo';
1544      overlay.className = this.shoppingCartVelo;
1545      overlay.style.height = document.documentElement.clientHeight + 300 + 'px';
1546      document.body.appendChild(overlay);
1547      bodyGeneric.style.overflow = 'hidden';
1548
1549      this.shoppingCartConection();
1550    }
1551  }, {
1552    key: 'shoppingCartConection',
1553    value: function shoppingCartConection() {
1554      fetch(this.url).then(this.shoppingCartHtml).catch(function (error) {
1555        console.log('Error making the request: ' + error);
1556      });
1557    }
1558  }, {
1559    key: 'shoppingCartHtml',
1560    value: function shoppingCartHtml(response) {
1561      if (response.ok) {
1562        response.text().then(function (text) {
1563          document.body.insertAdjacentHTML('beforeend', text);
1564        });
1565      } else {
1566        return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a.reject(response.statusText);
1567      }
1568    }
1569  }, {
1570    key: 'closeModal',
1571    value: function closeModal(item) {
1572      var bodyGeneric = document.querySelector('body');
1573      var element = document.querySelector('.' + item);
1574      this.shoppingWrap = document.querySelector('.carrito-top__wrap');
1575
1576      if (element && this.shoppingWrap) {
1577        element.remove();
1578        this.shoppingWrap.remove();
1579        bodyGeneric.removeAttribute('style');
1580      }
1581    }
1582  }]);
1583
1584  return Shopping;
1585}();
1586
1587/* harmony default export */ __webpack_exports__["default"] = (Shopping);
1588
1589
1590document.addEventListener('DOMContentLoaded', function () {
1591  var elementShoppingCart = document.querySelector('.mireserva').dataset.url;
1592  new Shopping(elementShoppingCart, 'mireserva', 'carrito-top__velo');
1593});
1594//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvc2hvcHBpbmdfY2FydF90b3AuanM/YWQ3YSJdLCJuYW1lcyI6WyJTaG9wcGluZyIsInVybCIsImVsZW1lbnRvIiwidmVsbyIsIndpbmRvdyIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwibXlCb29raW5nIiwic2hvcHBpbmdDYXJ0VmVsbyIsInNob3BwaW5nQ2FydENsb3NlIiwic2hvcHBpbmdXcmFwIiwiaW5pdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50Iiwic2VsZWN0IiwidGFyZ2V0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJjcmVhdGVNb2RhbCIsImNsb3NlTW9kYWwiLCJrZXkiLCJib2R5R2VuZXJpYyIsInF1ZXJ5U2VsZWN0b3IiLCJvdmVybGF5IiwiY3JlYXRlRWxlbWVudCIsImlkIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJoZWlnaHQiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRIZWlnaHQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJvdmVyZmxvdyIsInNob3BwaW5nQ2FydENvbmVjdGlvbiIsImZldGNoIiwidGhlbiIsInNob3BwaW5nQ2FydEh0bWwiLCJ
1594jYXRjaCIsImVycm9yIiwiY29uc29sZSIsImxvZyIsInJlc3BvbnNlIiwib2siLCJ0ZXh0IiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwicmVqZWN0Iiwic3RhdHVzVGV4dCIsIml0ZW0iLCJlbGVtZW50IiwicmVtb3ZlIiwicmVtb3ZlQXR0cmlidXRlIiwiZWxlbWVudFNob3BwaW5nQ2FydCIsImRhdGFzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQXFCQSxRO0FBQ25CLG9CQUFhQyxHQUFiLEVBQWtCQyxRQUFsQixFQUE0QkMsSUFBNUIsRUFBa0M7QUFBQTs7QUFDaEMsU0FBS0YsR0FBTCxHQUFjRyxPQUFPQyxRQUFQLENBQWdCQyxRQUE5QixVQUEyQ0YsT0FBT0MsUUFBUCxDQUFnQkUsSUFBM0QsR0FBa0VOLEdBQWxFO0FBQ0EsU0FBS08sU0FBTCxHQUFpQk4sUUFBakI7QUFDQSxTQUFLTyxnQkFBTCxHQUF3Qk4sSUFBeEI7QUFDQSxTQUFLTyxpQkFBTCxHQUF5QixvQkFBekI7QUFDQSxTQUFLQyxZQUFMLEdBQW9CLElBQXBCO0FBQ0EsU0FBS0MsSUFBTDtBQUNEOzs7OzJCQUVPO0FBQUE7O0FBQ05DLGVBQVNDLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DLFVBQUNDLEtBQUQsRUFBVztBQUM1QyxZQUFNQyxTQUFTRCxNQUFNRSxNQUFyQjtBQUNBLFlBQUlELE9BQU9FLFNBQVAsQ0FBaUJDLFFBQWpCLENBQTBCLE1BQUtYLFNBQS9CLENBQUosRUFBK0M7QUFDN0MsZ0JBQUtZLFdBQUw7QUFDRDs7QUFFRCxZQUFJSixPQUFPRSxTQUFQLENBQWlCQyxRQUFqQixDQUEwQixNQUFLVixnQkFBL0IsS0FDQU8sT0FBT0UsU0FBUCxDQUFpQkMsUUFBakIsQ0FBMEIsTUFBS1QsaUJBQS9CLENBREosRUFDdUQ7QUFDckQsZ0JBQUtXLFVBQUwsQ0FBZ0IsTUFBS1osZ0JBQXJCO0FBQ0Q7QUFDRixPQVZEOztBQVlBSSxlQUFTQyxnQkFBVCxDQUEwQixPQUExQixFQUFtQyxVQUFDQyxLQUFELEVBQVc7QUFDNUMsWUFBSUEsTUFBTU8sR0FBTixLQUFjLFFBQWxCLEVBQTRCO0FBQzFCLGdCQUFLRCxVQUFMLENBQWdCLE1BQUtaLGdCQUFyQjtBQUNEO0FBQ0YsT0FKRDtBQUtEOzs7a0NBRWM7QUFDYixVQUFNYyxjQUFjVixTQUFTVyxhQUFULENBQXVCLE1BQXZCLENBQXBCO0FBQ0EsVUFBSUMsVUFBVSxLQUFkO0FBQ0FBLGdCQUFVWixTQUFTYSxhQUFULENBQXVCRCxPQUF2QixDQUFWO0FBQ0FBLGNBQVFFLEVBQVIsR0FBYSxxQkFBYjtBQUNBRixjQUFRRyxTQUFSLEdBQW9CLEtBQUtuQixnQkFBekI7QUFDQWdCLGNBQVFJLEtBQVIsQ0FBY0MsTUFBZCxHQUEwQmpCLFNBQVNrQixlQUFULENBQXlCQyxZQUF6QixHQUF3QyxHQUFsRTtBQUNBbkIsZUFBU29CLElBQVQsQ0FBY0MsV0FBZCxDQUEwQlQsT0FBMUI7QUFDQUYsa0JBQVlNLEtBQVosQ0FBa0JNLFFBQWxCLEdBQTZCLFFBQTdCOztBQUVBLFdBQUtDLHFCQUFMO0FBQ0Q7Ozs0Q0FFd0I7QUFDdkJDLFlBQU0sS0FBS3BDLEdBQVgsRUFDR3FDLElBREgsQ0FDUSxLQUFLQyxnQkFEYixFQUVHQyxLQUZILENBRVMsVUFBQ0MsS0FBRCxFQUFXO0FBQ2hCQyxnQkFBUUMsR0FBUixDQUFZLCtCQUErQkYsS0FBM0M7QUFDRCxPQUpIO0FBS0Q7OztxQ0FFaUJHLFEsRUFBVTtBQUMxQixVQUFJQSxTQUFTQyxFQUFiLEVBQWlCO0FBQ2ZELGlCQUFTRSxJQUFULEdBQWdCUixJQUFoQixDQUFxQixVQUFDUSxJQUFELEVBQVU7QUFDN0JqQyxtQkFBU29CLElBQVQsQ0FBY2Msa0JBQWQsQ0FBaUMsV0FBakMsRUFBOENELElBQTlDO0FBQ0QsU0FGRDtBQUdELE9BSkQsTUFJTztBQUNMLGVBQU8sc0VBQVFFLE1BQVIsQ0FBZUosU0FBU0ssVUFBeEIsQ0FBUDtBQUNEO0FBQ0Y7OzsrQkFFV0MsSSxFQUFNO0FBQ2hCLFVBQU0zQixjQUFjVixTQUFTVyxhQUFULENBQXVCLE1BQXZCLENBQXBCO0FBQ0EsVUFBTTJCLFVBQVV0QyxTQUFTVyxhQUFULENBQXVCLE1BQU0wQixJQUE3QixDQUFoQjtBQUNBLFdBQUt2QyxZQUFMLEdBQW9CRSxTQUFTVyxhQUFULENBQXVCLG9CQUF2QixDQUFwQjs7QUFFQSxVQUFJMkIsV0FBVyxLQUFLeEMsWUFBcEIsRUFBa0M7QUFDaEN3QyxnQkFBUUMsTUFBUjtBQUNBLGFBQUt6QyxZQUFMLENBQWtCeUMsTUFBbEI7QUFDQTdCLG9CQUFZOEIsZUFBWixDQUE0QixPQUE1QjtBQUNEO0FBQ0Y7Ozs7OztBQXZFa0JyRCx1RTs7O0FBMEVyQmEsU0FBU0MsZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLFlBQU07QUFDbEQsTUFBTXdDLHNCQUFzQnpDLFNBQVNXLGFBQVQsQ0FBdUIsWUFBdkIsRUFBcUMrQixPQUFyQyxDQUE2Q3RELEdBQXpFO0FBQ0EsTUFBSUQsUUFBSixDQUFhc0QsbUJBQWIsRUFBa0MsV0FBbEMsRUFBK0MsbUJBQS9DO0FBQ0QsQ0FIRCIsImZpbGUiOiIyMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9wcGluZyB7XG4gIGNvbnN0cnVjdG9yICh1cmwsIGVsZW1lbnRvLCB2ZWxvKSB7XG4gICAgdGhpcy51cmwgPSBgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fSR7dXJsfWBcbiAgICB0aGlzLm15Qm9va2luZyA9IGVsZW1lbnRvXG4gICAgdGhpcy5zaG9wcGluZ0NhcnRWZWxvID0gdmVsb1xuICAgIHRoaXMuc2hvcHBpbmdDYXJ0Q2xvc2UgPSAnY2Fycml0by10b3BfX2Nsb3NlJ1xuICAgIHRoaXMuc2hvcHBpbmdXcmFwID0gbnVsbFxuICAgIHRoaXMuaW5pdCgpXG4gIH1cblxuICBpbml0ICgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ID0gZXZlbnQudGFyZ2V0XG4gICAgICBpZiAoc2VsZWN0LmNsYXNzTGlzdC5jb250YWlucyh0aGlzLm15Qm9va2luZykpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVNb2RhbCgpXG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3QuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuc2hvcHBpbmdDYXJ0VmVsbykgfHxcbiAgICAgICAgICBzZWxlY3QuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuc2hvcHBpbmdDYXJ0Q2xvc2UpKSB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNob3BwaW5nQ2FydFZlbG8pXG4gICAgICB9XG4gICAgfSlcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwodGhpcy5zaG9wcGluZ0NhcnRWZWxvKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjcmVhdGVNb2RhbCAoKSB7XG4gICAgY29uc3QgYm9keUdlbmVyaWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JylcbiAgICBsZXQgb3ZlcmxheSA9ICdkaXYnXG4gICAgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob3ZlcmxheSlcbiAgICBvdmVybGF5LmlkID0gJ2JjX2NhcnJpdG9fdG9wX3ZlbG8nXG4gICAgb3ZlcmxheS5jbGFzc05hbWUgPSB0aGlzLnNob3BwaW5nQ2FydFZlbG9cbiAgICBvdmVybGF5LnN0eWxlLmhlaWdodCA9IGAke2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKyAzMDB9cHhgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KVxuICAgIGJvZHlHZW5lcmljLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgI
1594HRoaXMuc2hvcHBpbmdDYXJ0Q29uZWN0aW9uKClcbiAgfVxuXG4gIHNob3BwaW5nQ2FydENvbmVjdGlvbiAoKSB7XG4gICAgZmV0Y2godGhpcy51cmwpXG4gICAgICAudGhlbih0aGlzLnNob3BwaW5nQ2FydEh0bWwpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBtYWtpbmcgdGhlIHJlcXVlc3Q6ICcgKyBlcnJvcilcbiAgICAgIH0pXG4gIH1cblxuICBzaG9wcGluZ0NhcnRIdG1sIChyZXNwb25zZSkge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oKHRleHQpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIHRleHQpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICB9XG4gIH1cblxuICBjbG9zZU1vZGFsIChpdGVtKSB7XG4gICAgY29uc3QgYm9keUdlbmVyaWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JylcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBpdGVtKVxuICAgIHRoaXMuc2hvcHBpbmdXcmFwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNhcnJpdG8tdG9wX193cmFwJylcblxuICAgIGlmIChlbGVtZW50ICYmIHRoaXMuc2hvcHBpbmdXcmFwKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZSgpXG4gICAgICB0aGlzLnNob3BwaW5nV3JhcC5yZW1vdmUoKVxuICAgICAgYm9keUdlbmVyaWMucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpXG4gICAgfVxuICB9XG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRTaG9wcGluZ0NhcnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWlyZXNlcnZhJykuZGF0YXNldC51cmxcbiAgbmV3IFNob3BwaW5nKGVsZW1lbnRTaG9wcGluZ0NhcnQsICdtaXJlc2VydmEnLCAnY2Fycml0by10b3BfX3ZlbG8nKVxufSlcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy91dGlscy9zaG9wcGluZ19jYXJ0X3RvcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=
1595//# sourceURL=webpack-internal:///210
1596`)}])})});var a=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.dropdown=n():g.dropdown=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"e");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})},n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/juan.vera/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=199)}({199:function(g,n,t){g.exports=t(200)},200:function(module,exports){eval(`var dropdown = document.querySelectorAll('.dropdown');
1597var dropdownOpen = 'dropdown--open';
1598
1599var removeClassList = function removeClassList(elementSelect) {
1600  dropdown.forEach(function (element) {
1601    if (element !== elementSelect) element.classList.remove(dropdownOpen);
1602  });
1603};
1604
1605document.addEventListener('click', function (event) {
1606  var select = event.target;
1607  var dropdownLink = select.closest('.dropdown__link');
1608
1609  if (dropdownLink) {
1610    var dropdownContainer = dropdownLink.closest('.dropdown');
1611    dropdownContainer.classList.toggle(dropdownOpen);
1612
1613    removeClassList(dropdownContainer);
1614  }
1615});
1616//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3VibW9kdWxlcy9kcm9wZG93bi9hcmEvZGVmYXVsdC5qcz8zZTQ5Il0sIm5hbWVzIjpbImRyb3Bkb3duIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZHJvcGRvd25PcGVuIiwicmVtb3ZlQ2xhc3NMaXN0IiwiZWxlbWVudFNlbGVjdCIsImZvckVhY2giLCJlbGVtZW50IiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50Iiwic2VsZWN0IiwidGFyZ2V0IiwiZHJvcGRvd25MaW5rIiwiY2xvc2VzdCIsImRyb3Bkb3duQ29udGFpbmVyIiwidG9nZ2xlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxXQUFXQyxTQUFTQyxnQkFBVCxDQUEwQixXQUExQixDQUFqQjtBQUNBLElBQU1DLGVBQWUsZ0JBQXJCOztBQUVBLElBQU1DLGtCQUFrQixTQUFsQkEsZUFBa0IsQ0FBQ0MsYUFBRCxFQUFtQjtBQUN6Q0wsV0FBU00sT0FBVCxDQUFpQixtQkFBVztBQUMxQixRQUFJQyxZQUFZRixhQUFoQixFQUErQkUsUUFBUUMsU0FBUixDQUFrQkMsTUFBbEIsQ0FBeUJOLFlBQXpCO0FBQ2hDLEdBRkQ7QUFHRCxDQUpEOztBQU1BRixTQUFTUyxnQkFBVCxDQUEwQixPQUExQixFQUFtQyxVQUFDQyxLQUFELEVBQVc7QUFDNUMsTUFBSUMsU0FBU0QsTUFBTUUsTUFBbkI7QUFDQSxNQUFNQyxlQUFlRixPQUFPRyxPQUFQLENBQWUsaUJBQWYsQ0FBckI7O0FBRUEsTUFBSUQsWUFBSixFQUFrQjtBQUNoQixRQUFNRSxvQkFBb0JGLGFBQWFDLE9BQWIsQ0FBcUIsV0FBckIsQ0FBMUI7QUFDQUMsc0JBQWtCUixTQUFsQixDQUE0QlMsTUFBNUIsQ0FBbUNkLFlBQW5DOztBQUVBQyxvQkFBZ0JZLGlCQUFoQjtBQUNEO0FBQ0YsQ0FWRCIsImZpbGUiOiIyMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkcm9wZG93biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpXG5jb25zdCBkcm9wZG93bk9wZW4gPSAnZHJvcGRvd24tLW9wZW4nXG5cbmNvbnN0IHJlbW92ZUNsYXNzTGlzdCA9IChlbGVtZW50U2VsZWN0KSA9PiB7XG4gIGRyb3Bkb3duLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgaWYgKGVsZW1lbnQgIT09IGVsZW1lbnRTZWxlY3QpIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShkcm9wZG93bk9wZW4pXG4gIH0pXG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gIGxldCBzZWxlY3QgPSBldmVudC50YXJnZXRcbiAgY29uc3QgZHJvcGRvd25MaW5rID0gc2VsZWN0LmNsb3Nlc3QoJy5kcm9wZG93bl9fbGluaycpXG5cbiAgaWYgKGRyb3Bkb3duTGluaykge1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyID0gZHJvcGRvd25MaW5rLmNsb3Nlc3QoJy5kcm9wZG93bicpXG4gICAgZHJvcGRvd25Db250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZShkcm9wZG93bk9wZW4pXG5cbiAgICByZW1vdmVDbGFzc0xpc3QoZHJvcGRvd25Db250YWluZXIpXG4gIH1cbn0pXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvc3VibW9kdWxlcy9kcm9wZG93bi9hcmEvZGVmYXVsdC5qcyJdLCJzb3VyY2VSb290IjoiIn0=
1617//# sourceURL=webpack-internal:///200
1618`)}})})});var s=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.lazy=n():g.lazy=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"Q");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})}
1618,n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/juan.vera/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=205)}({205:function(g,n,t){g.exports=t(206)},206:function(module,exports){eval(`var isIntersecting = function isIntersecting(entry) {
1619  return entry.isIntersecting; // true (dentro de la pantalla)
1620};
1621
1622var loadImage = function loadImage(entry) {
1623  var image = entry.target;
1624  if (image.parentElement.tagName === 'PICTURE') {
1625    var sources = image.parentElement.querySelectorAll('source');
1626    sources.forEach(function (source) {
1627      source.srcset = source.getAttribute('data-srcset');
1628    });
1629  }
1630  image.src = image.dataset.src;
1631  image.classList.remove('lazyestload');
1632  observer.unobserve(image); // dejar de observar
1633};
1634
1635var observer = new IntersectionObserver(function (entries) {
1636  entries.filter(isIntersecting).forEach(loadImage);
1637});
1638
1639var registerImage = function registerImage(img) {
1640  observer.observe(img);
1641};
1642
1643document.addEventListener('DOMContentLoaded', function () {
1644  var images = document.querySelectorAll('img.lazyestload');
1645  images.forEach(function (img) {
1646    return registerImage(img);
1647  });
1648});
1649//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvbGF6eS5qcz82OTdhIl0sIm5hbWVzIjpbImlzSW50ZXJzZWN0aW5nIiwiZW50cnkiLCJsb2FkSW1hZ2UiLCJpbWFnZSIsInRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJ0YWdOYW1lIiwic291cmNlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwic291cmNlIiwic3Jjc2V0IiwiZ2V0QXR0cmlidXRlIiwic3JjIiwiZGF0YXNldCIsImNsYXNzTGlzdCIsInJlbW92ZSIsIm9ic2VydmVyIiwidW5vYnNlcnZlIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZmlsdGVyIiwicmVnaXN0ZXJJbWFnZSIsImltZyIsIm9ic2VydmUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpbWFnZXMiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsS0FBRCxFQUFXO0FBQ2hDLFNBQU9BLE1BQU1ELGNBQWIsQ0FEZ0MsQ0FDSjtBQUM3QixDQUZEOztBQUlBLElBQU1FLFlBQVksU0FBWkEsU0FBWSxDQUFDRCxLQUFELEVBQVc7QUFDM0IsTUFBTUUsUUFBUUYsTUFBTUcsTUFBcEI7QUFDQSxNQUFJRCxNQUFNRSxhQUFOLENBQW9CQyxPQUFwQixLQUFnQyxTQUFwQyxFQUErQztBQUM3QyxRQUFNQyxVQUFVSixNQUFNRSxhQUFOLENBQW9CRyxnQkFBcEIsQ0FBcUMsUUFBckMsQ0FBaEI7QUFDQUQsWUFBUUUsT0FBUixDQUFnQixrQkFBVTtBQUN4QkMsYUFBT0MsTUFBUCxHQUFnQkQsT0FBT0UsWUFBUCxDQUFvQixhQUFwQixDQUFoQjtBQUNELEtBRkQ7QUFHRDtBQUNEVCxRQUFNVSxHQUFOLEdBQVlWLE1BQU1XLE9BQU4sQ0FBY0QsR0FBMUI7QUFDQVYsUUFBTVksU0FBTixDQUFnQkMsTUFBaEIsQ0FBdUIsYUFBdkI7QUFDQUMsV0FBU0MsU0FBVCxDQUFtQmYsS0FBbkIsRUFWMkIsQ0FVRDtBQUMzQixDQVhEOztBQWFBLElBQU1jLFdBQVcsSUFBSUUsb0JBQUosQ0FBeUIsVUFBQ0MsT0FBRCxFQUFhO0FBQ3JEQSxVQUNHQyxNQURILENBQ1VyQixjQURWLEVBRUdTLE9BRkgsQ0FFV1AsU0FGWDtBQUdELENBSmdCLENBQWpCOztBQU1BLElBQU1vQixnQkFBZ0IsU0FBaEJBLGFBQWdCLENBQUNDLEdBQUQsRUFBUztBQUM3Qk4sV0FBU08sT0FBVCxDQUFpQkQsR0FBakI7QUFDRCxDQUZEOztBQUlBRSxTQUFTQyxnQkFBVCxDQUEwQixrQkFBMUIsRUFBOEMsWUFBTTtBQUNsRCxNQUFNQyxTQUFTRixTQUFTakIsZ0JBQVQsQ0FBMEIsaUJBQTFCLENBQWY7QUFDQW1CLFNBQU9sQixPQUFQLENBQWU7QUFBQSxXQUFPYSxjQUFjQyxHQUFkLENBQVA7QUFBQSxHQUFmO0FBQ0QsQ0FIRCIsImZpbGUiOiIyMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc0ludGVyc2VjdGluZyA9IChlbnRyeSkgPT4ge1xuICByZXR1cm4gZW50cnkuaXNJbnRlcnNlY3RpbmcgLy8gdHJ1ZSAoZGVudHJvIGRlIGxhIHBhbnRhbGxhKVxufVxuXG5jb25zdCBsb2FkSW1hZ2UgPSAoZW50cnkpID0+IHtcbiAgY29uc3QgaW1hZ2UgPSBlbnRyeS50YXJnZXRcbiAgaWYgKGltYWdlLnBhcmVudEVsZW1lbnQudGFnTmFtZSA9PT0gJ1BJQ1RVUkUnKSB7XG4gICAgY29uc3Qgc291cmNlcyA9IGltYWdlLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc291cmNlJylcbiAgICBzb3VyY2VzLmZvckVhY2goc291cmNlID0+IHtcbiAgICAgIHNvdXJjZS5zcmNzZXQgPSBzb3VyY2UuZ2V0QXR0cmlidXRlKCdkYXRhLXNyY3NldCcpXG4gICAgfSlcbiAgfVxuICBpbWFnZS5zcmMgPSBpbWFnZS5kYXRhc2V0LnNyY1xuICBpbWFnZS5jbGFzc0xpc3QucmVtb3ZlKCdsYXp5ZXN0bG9hZCcpXG4gIG9ic2VydmVyLnVub2JzZXJ2ZShpbWFnZSkgLy8gZGVqYXIgZGUgb2JzZXJ2YXJcbn1cblxuY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgZW50cmllc1xuICAgIC5maWx0ZXIoaXNJbnRlcnNlY3RpbmcpXG4gICAgLmZvckVhY2gobG9hZEltYWdlKVxufSlcblxuY29uc3QgcmVnaXN0ZXJJbWFnZSA9IChpbWcpID0+IHtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShpbWcpXG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gIGNvbnN0IGltYWdlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZy5sYXp5ZXN0bG9hZCcpXG4gIGltYWdlcy5mb3JFYWNoKGltZyA9PiByZWdpc3RlckltYWdlKGltZykpXG59KVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL3V0aWxzL2xhenkuanMiXSwic291cmNlUm9vdCI6IiJ9
1650//# sourceURL=webpack-internal:///206
1651`)}})})});var d=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.splide=n():g.splide=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"I");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})}
1651,n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/yulieth.quintero/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=222)}([function(module,exports){eval(`// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1652var global = module.exports = typeof window != 'undefined' && window.Math == Math
1653  ? window : typeof self != 'undefined' && self.Math == Math ? self
1654  // eslint-disable-next-line no-new-func
1655  : Function('return this')();
1656if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
1657
1658//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIl0sInNvdXJjZVJvb3QiOiIifQ==
1659//# sourceURL=webpack-internal:///0
1660`)},function(module,exports,__webpack_require__){eval(`var store = __webpack_require__(23)('wks');
1661var uid = __webpack_require__(24);
1662var Symbol = __webpack_require__(0).Symbol;
1663var USE_SYMBOL = typeof Symbol == 'function';
1664
1665var $exports = module.exports = function (name) {
1666  return store[name] || (store[name] =
1667    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
1668};
1669
1670$exports.store = store;
1671
1672//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcz83NTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksbUJBQU8sQ0FBQyxFQUFXO0FBQy9CLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1673//# sourceURL=webpack-internal:///1
1674`)},function(module,exports){eval(`var core = module.exports = { version: '2.6.11' };
1675if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
1676
1677//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsdUNBQXVDIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjExJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1678//# sourceURL=webpack-internal:///2
1679`)},function(module,exports,__webpack_require__){eval(`// Thank's IE8 for his funny defineProperty
1680module.exports = !__webpack_require__(11)(function () {
1681  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
1682});
1683
1684//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxFQUFVO0FBQ3BDLGlDQUFpQyxRQUFRLG1CQUFtQixVQUFVLEVBQUUsRUFBRTtBQUM
vendor: 9,082 bytes, lines 1684-1780
1684xRSxDQUFDIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9
1685//# sourceURL=webpack-internal:///3
1686`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5);
1687var IE8_DOM_DEFINE = __webpack_require__(26);
1688var toPrimitive = __webpack_require__(27);
1689var dP = Object.defineProperty;
1690
1691exports.f = __webpack_require__(3) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
1692  anObject(O);
1693  P = toPrimitive(P, true);
1694  anObject(Attributes);
1695  if (IE8_DOM_DEFINE) try {
1696    return dP(O, P, Attributes);
1697  } catch (e) { /* empty */ }
1698  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
1699  if ('value' in Attributes) O[P] = Attributes.value;
1700  return O;
1701};
1702
1703//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLHFCQUFxQixtQkFBTyxDQUFDLEVBQW1CO0FBQ2hELGtCQUFrQixtQkFBTyxDQUFDLEVBQWlCO0FBQzNDOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxDQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxZQUFZO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1704//# sourceURL=webpack-internal:///4
1705`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7);
1706module.exports = function (it) {
1707  if (!isObject(it)) throw TypeError(it + ' is not an object!');
1708  return it;
1709};
1710
1711//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1712//# sourceURL=webpack-internal:///5
1713`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4);
1714var createDesc = __webpack_require__(12);
1715module.exports = __webpack_require__(3) ? function (object, key, value) {
1716  return dP.f(object, key, createDesc(1, value));
1717} : function (object, key, value) {
1718  object[key] = value;
1719  return object;
1720};
1721
1722//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixpQkFBaUIsbUJBQU8sQ0FBQyxFQUFrQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFnQjtBQUN6QztBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1723//# sourceURL=webpack-internal:///6
1724`)},function(module,exports){eval(`module.exports = function (it) {
1725  return typeof it === 'object' ? it !== null : typeof it === 'function';
1726};
1727
1728//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1729//# sourceURL=webpack-internal:///7
1730`)},function(module,exports){eval(`var hasOwnProperty = {}.hasOwnProperty;
1731module.exports = function (it, key) {
1732  return hasOwnProperty.call(it, key);
1733};
1734
1735//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EiLCJmaWxlIjoiOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1736//# sourceURL=webpack-internal:///8
1737`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0);
1738var core = __webpack_require__(2);
1739var ctx = __webpack_require__(13);
1740var hide = __webpack_require__(6);
1741var has = __webpack_require__(8);
1742var PROTOTYPE = 'prototype';
1743
1744var $export = function (type, name, source) {
1745  var IS_FORCED = type & $export.F;
1746  var IS_GLOBAL = type & $export.G;
1747  var IS_STATIC = type & $export.S;
1748  var IS_PROTO = type & $export.P;
1749  var IS_BIND = type & $export.B;
1750  var IS_WRAP = type & $export.W;
1751  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1752  var expProto = exports[PROTOTYPE];
1753  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
1754  var key, own, out;
1755  if (IS_GLOBAL) source = name;
1756  for (key in source) {
1757    // contains in native
1758    own = !IS_FORCED && target && target[key] !== undefined;
1759    if (own && has(exports, key)) continue;
1760    // export native or passed
1761    out = own ? target[key] : source[key];
1762    // prevent global pollution for namespaces
1763    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
1764    // bind timers to global for call from export context
1765    : IS_BIND && own ? ctx(out, global)
1766    // wrap global constructors for prevent change them in library
1767    : IS_WRAP && target[key] == out ? (function (C) {
1768      var F = function (a, b, c) {
1769        if (this instanceof C) {
1770          switch (arguments.length) {
1771            case 0: return new C();
1772            case 1: return new C(a);
1773            case 2: return new C(a, b);
1774          } return new C(a, b, c);
1775        } return C.apply(this, arguments);
1776      };
1777      F[PROTOTYPE] = C[PROTOTYPE];
1778      return F;
1779    // make static versions for prototype methods
1780    }
1780)(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1781    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
1782    if (IS_PROTO) {
1783      (exports.virtual || (exports.virtual = {}))[key] = out;
1784      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
1785      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
1786    }
1787  }
1788};
1789// type bitmap
1790$export.F = 1;   // forced
1791$export.G = 2;   // global
1792$export.S = 4;   // static
1793$export.P = 8;   // proto
1794$export.B = 16;  // bind
1795$export.W = 32;  // wrap
1796$export.U = 64;  // safe
1797$export.R = 128; // real proto method for \`library\`
1798module.exports = $export;
1799
1800//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGdCQUFnQjtBQUNoQiIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcm
1800UgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2Y
1800XIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0=
1801//# sourceURL=webpack-internal:///9
1802`)},function(module,exports){eval(`module.exports = {};
1803
1804//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1805//# sourceURL=webpack-internal:///10
1806`)},function(module,exports){eval(`module.exports = function (exec) {
1807  try {
1808    return !!exec();
1809  } catch (e) {
1810    return true;
1811  }
1812};
1813
1814//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIl0sInNvdXJjZVJvb3QiOiIifQ==
1815//# sourceURL=webpack-internal:///11
1816`)},function(module,exports){eval(`module.exports = function (bitmap, value) {
1817  return {
1818    enumerable: !(bitmap & 1),
1819    configurable: !(bitmap & 2),
1820    writable: !(bitmap & 4),
1821    value: value
1822  };
1823};
1824
1825//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9
1826//# sourceURL=webpack-internal:///12
1827`)},function(module,exports,__webpack_require__){eval(`// optional / simple c
1827ontext binding
1828var aFunction = __webpack_require__(19);
1829module.exports = function (fn, that, length) {
1830  aFunction(fn);
1831  if (that === undefined) return fn;
1832  switch (length) {
1833    case 1: return function (a) {
1834      return fn.call(that, a);
1835    };
1836    case 2: return function (a, b) {
1837      return fn.call(that, a, b);
1838    };
1839    case 3: return function (a, b, c) {
1840      return fn.call(that, a, b, c);
1841    };
1842  }
1843  return function (/* ...args */) {
1844    return fn.apply(that, arguments);
1845  };
1846};
1847
1848//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9
1849//# sourceURL=webpack-internal:///13
1850`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7);
1851var document = __webpack_require__(0).document;
1852// typeof document.createElement is 'object' in old IE
1853var is = isObject(document) && isObject(document.createElement);
1854module.exports = function (it) {
1855  return is ? document.createElement(it) : {};
1856};
1857
1858//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIl0sInNvdXJjZVJvb3QiOiIifQ==
1859//# sourceURL=webpack-internal:///14
1860`)},function(module,exports){eval(`// 7.2.1 RequireObjectCoercible(argument)
1861module.exports = function (it) {
1862  if (it == undefined) throw TypeError("Can't call method on  " + it);
1863  return it;
1864};
1865
1866//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1867//# sourceURL=webpack-internal:///15
1868`)},function(module,exports){eval(`// 7.1.4 ToInteger
1869var ceil = Math.ceil;
1870var floor = Math.floor;
1871module.exports = function (it) {
1872  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1873};
1874
1875//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1876//# sourceURL=webpack-internal:///16
1877`)},function(module,exports,__webpack_require__){eval(`var shared = __webpack_require__(23)('keys');
1878var uid = __webpack_require__(24);
1879module.exports = function (key) {
1880  return shared[key] || (shared[key] = uid(key));
1881};
1882
1883//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsRUFBVztBQUNoQyxVQUFVLG1CQUFPLENBQUMsRUFBUTtBQUMxQjtBQUNBO0FBQ0EiLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1884//# sourceURL=webpack-internal:///17
1885`)},function(module,exports,__webpack_require__){eval(`// to indexed object, toObject with fallback for non-array-like ES3 strings
1886var IObject = __webpack_require__(36);
1887var defined = __webpack_require__(15);
1888module.exports = function (it) {
1889  return IObject(defined(it));
1890};
1891
1892//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDO0FBQ0E7QUFDQSIsImZpbGUiOiIxO
1892C5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
1893//# sourceURL=webpack-internal:///18
1894`)},function(module,exports){eval(`module.exports = function (it) {
1895  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
1896  return it;
1897};
1898
1899//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9
1900//# sourceURL=webpack-internal:///19
1901`)},function(module,exports){eval(`var toString = {}.toString;
1902
1903module.exports = function (it) {
1904  return toString.call(it).slice(8, -1);
1905};
1906
1907//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
1908//# sourceURL=webpack-internal:///20
1909`)},function(module,exports){eval(`module.exports = true;
1910
1911//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIyMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1912//# sourceURL=webpack-internal:///21
1913`)},function(module,exports,__webpack_require__){eval(`var def = __webpack_require__(4).f;
1914var has = __webpack_require__(8);
1915var TAG = __webpack_require__(1)('toStringTag');
1916
1917module.exports = function (it, tag, stat) {
1918  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
1919};
1920
1921//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQWM7QUFDaEMsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsVUFBVSxtQkFBTyxDQUFDLENBQVE7O0FBRTFCO0FBQ0Esb0VBQW9FLGlDQUFpQztBQUNyRyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 6,621 bytes, lines 1921-1972
1921IDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
1922//# sourceURL=webpack-internal:///22
1923`)},function(module,exports,__webpack_require__){eval(`var core = __webpack_require__(2);
1924var global = __webpack_require__(0);
1925var SHARED = '__core-js_shared__';
1926var store = global[SHARED] || (global[SHARED] = {});
1927
1928(module.exports = function (key, value) {
1929  return store[key] || (store[key] = value !== undefined ? value : {});
1930})('versions', []).push({
1931  version: core.version,
1932  mode: __webpack_require__(21) ? 'pure' : 'global',
1933  copyright: '\xA9 2019 Denis Pushkarev (zloirock.ru)'
1934});
1935
1936//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLHFFQUFxRTtBQUNyRSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLG1CQUFPLENBQUMsRUFBWTtBQUM1QjtBQUNBLENBQUMiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
1937//# sourceURL=webpack-internal:///23
1938`)},function(module,exports){eval(`var id = 0;
1939var px = Math.random();
1940module.exports = function (key) {
1941  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
1942};
1943
1944//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
1945//# sourceURL=webpack-internal:///24
1946`)},function(module,exports){eval(`// IE 8- don't enum bug keys
1947module.exports = (
1948  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
1949).split(',');
1950
1951//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
1952//# sourceURL=webpack-internal:///25
1953`)},function(module,exports,__webpack_require__){eval(`module.exports = !__webpack_require__(3) && !__webpack_require__(11)(function () {
1954  return Object.defineProperty(__webpack_require__(14)('div'), 'a', { get: function () { return 7; } }).a != 7;
1955});
1956
1957//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsQ0FBZ0IsTUFBTSxtQkFBTyxDQUFDLEVBQVU7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsRUFBZSxnQkFBZ0IsbUJBQW1CLFVBQVUsRUFBRSxFQUFFO0FBQ3ZHLENBQUMiLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9
1958//# sourceURL=webpack-internal:///26
1959`)},function(module,exports,__webpack_require__){eval(`// 7.1.1 ToPrimitive(input [, PreferredType])
1960var isObject = __webpack_require__(7);
1961// instead of the ES6 spec version, we didn't implement @@toPrimitive case
1962// and the second argument - flag - preferred type is a string
1963module.exports = function (it, S) {
1964  if (!isObject(it)) return it;
1965  var fn, val;
1966  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1967  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1968  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1969  throw TypeError("Can't convert object to primitive value");
1970};
1971
1972//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLENBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eX
vendor: 10,430 bytes, lines 1972-2081
1972BlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9
1973//# sourceURL=webpack-internal:///27
1974`)},function(module,exports,__webpack_require__){eval(`// 7.1.15 ToLength
1975var toInteger = __webpack_require__(16);
1976var min = Math.min;
1977module.exports = function (it) {
1978  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
1979};
1980
1981//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1982//# sourceURL=webpack-internal:///28
1983`)},function(module,exports,__webpack_require__){eval(`// 7.1.13 ToObject(argument)
1984var defined = __webpack_require__(15);
1985module.exports = function (it) {
1986  return Object(defined(it));
1987};
1988
1989//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
1990//# sourceURL=webpack-internal:///29
1991`)},,function(module,exports,__webpack_require__){"use strict";eval(`
1992var $at = __webpack_require__(51)(true);
1993
1994// 21.1.3.27 String.prototype[@@iterator]()
1995__webpack_require__(32)(String, 'String', function (iterated) {
1996  this._t = String(iterated); // target
1997  this._i = 0;                // next index
1998// 21.1.5.2.1 %StringIteratorPrototype%.next()
1999}, function () {
2000  var O = this._t;
2001  var index = this._i;
2002  var point;
2003  if (index >= O.length) return { value: undefined, done: true };
2004  point = $at(O, index);
2005  this._i += point.length;
2006  return { value: point, done: false };
2007});
2008
2009//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsVUFBVSxtQkFBTyxDQUFDLEVBQWM7O0FBRWhDO0FBQ0EsbUJBQU8sQ0FBQyxFQUFnQjtBQUN4Qiw2QkFBNkI7QUFDN0IsY0FBYztBQUNkO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsVUFBVTtBQUNWLENBQUMiLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
2010//# sourceURL=webpack-internal:///31
2011`)},function(module,exports,__webpack_require__){"use strict";eval(`
2012var LIBRARY = __webpack_require__(21);
2013var $export = __webpack_require__(9);
2014var redefine = __webpack_require__(46);
2015var hide = __webpack_require__(6);
2016var Iterators = __webpack_require__(10);
2017var $iterCreate = __webpack_require__(47);
2018var setToStringTag = __webpack_require__(22);
2019var getPrototypeOf = __webpack_require__(50);
2020var ITERATOR = __webpack_require__(1)('iterator');
2021var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o \`next\`
2022var FF_ITERATOR = '@@iterator';
2023var KEYS = 'keys';
2024var VALUES = 'values';
2025
2026var returnThis = function () { return this; };
2027
2028module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
2029  $iterCreate(Constructor, NAME, next);
2030  var getMethod = function (kind) {
2031    if (!BUGGY && kind in proto) return proto[kind];
2032    switch (kind) {
2033      case KEYS: return function keys() { return new Constructor(this, kind); };
2034      case VALUES: return function values() { return new Constructor(this, kind); };
2035    } return function entries() { return new Constructor(this, kind); };
2036  };
2037  var TAG = NAME + ' Iterator';
2038  var DEF_VALUES = DEFAULT == VALUES;
2039  var VALUES_BUG = false;
2040  var proto = Base.prototype;
2041  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
2042  var $default = $native || getMethod(DEFAULT);
2043  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
2044  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
2045  var methods, key, IteratorPrototype;
2046  // Fix native
2047  if ($anyNative) {
2048    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
2049    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
2050      // Set @@toStringTag to native iterators
2051      setToStringTag(IteratorPrototype, TAG, true);
2052      // fix for some old engines
2053      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
2054    }
2055  }
2056  // fix Array#{values, @@iterator}.name in V8 / FF
2057  if (DEF_VALUES && $native && $native.name !== VALUES) {
2058    VALUES_BUG = true;
2059    $default = function values() { return $native.call(this); };
2060  }
2061  // Define iterator
2062  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
2063    hide(proto, ITERATOR, $default);
2064  }
2065  // Plug for library
2066  Iterators[NAME] = $default;
2067  Iterators[TAG] = returnThis;
2068  if (DEFAULT) {
2069    methods = {
2070      values: DEF_VALUES ? $default : getMethod(VALUES),
2071      keys: IS_SET ? $default : getMethod(KEYS),
2072      entries: $entries
2073    };
2074    if (FORCED) for (key in methods) {
2075      if (!(key in proto)) redefine(proto, key, methods[key]);
2076    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
2077  }
2078  return methods;
2079};
2080
2081//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixjQUFjLG1CQUFPLENBQUMsRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMsRUFBYTtBQUNwQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWdCO0FBQzFDLHFCQUFxQixtQkFBTyxDQUFDLEVBQXNCO0FBQ25ELHFCQUFxQixtQkFBTyxDQUFDLEVBQWU7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsYUFBYTs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvQ0FBb0M7QUFDN0UsNkNBQTZDLG9DQUFvQztBQUNqRixLQUFLLDRCQUE0QixvQ0FBb0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtQkFBbUI7QUFDbkM7QUFDQTtBQUNBLGtDQUFrQywyQkFBMkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybi
vendor: 8,998 bytes, lines 2081-2137
2081BmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2082//# sourceURL=webpack-internal:///32
2083`)},function(module,exports,__webpack_require__){eval(`// getting tag from 19.1.3.6 Object.prototype.toString()
2084var cof = __webpack_require__(20);
2085var TAG = __webpack_require__(1)('toStringTag');
2086// ES3 wrong here
2087var ARG = cof(function () { return arguments; }()) == 'Arguments';
2088
2089// fallback for IE11 Script Access Denied error
2090var tryGet = function (it, key) {
2091  try {
2092    return it[key];
2093  } catch (e) { /* empty */ }
2094};
2095
2096module.exports = function (it) {
2097  var O, T, B;
2098  return it === undefined ? 'Undefined' : it === null ? 'Null'
2099    // @@toStringTag case
2100    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
2101    // builtinTag case
2102    : ARG ? cof(O)
2103    // ES3 arguments fallback
2104    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
2105};
2106
2107//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCO0FBQ0EsMkJBQTJCLGtCQUFrQixFQUFFOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsWUFBWTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
2108//# sourceURL=webpack-internal:///33
2109`)},,,function(module,exports,__webpack_require__){eval(`// fallback for non-array-like ES3 and non-enumerable old V8 strings
2110var cof = __webpack_require__(20);
2111// eslint-disable-next-line no-prototype-builtins
2112module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
2113  return cof(it) == 'String' ? it.split('') : Object(it);
2114};
2115
2116//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
2117//# sourceURL=webpack-internal:///36
2118`)},function(module,exports,__webpack_require__){eval(`var classof = __webpack_require__(33);
2119var ITERATOR = __webpack_require__(1)('iterator');
2120var Iterators = __webpack_require__(10);
2121module.exports = __webpack_require__(2).getIteratorMethod = function (it) {
2122  if (it != undefined) return it[ITERATOR]
2123    || it['@@iterator']
2124    || Iterators[classof(it)];
2125};
2126
2127//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
2128//# sourceURL=webpack-internal:///37
2129`)},,,,function(module,exports,__webpack_require__){eval(`// 19.1.2.14 / 15.2.3.14 Object.keys(O)
2130var $keys = __webpack_require__(43);
2131var enumBugKeys = __webpack_require__(25);
2132
2133module.exports = Object.keys || function keys(O) {
2134  return $keys(O, enumBugKeys);
2135};
2136
2137//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxZQUFZLG1CQUFPLENBQUMsRUFBeUI7QUFDN0Msa0JBQWtCLG1CQUFPLENBQUMsRUFB
2137a0I7O0FBRTVDO0FBQ0E7QUFDQSIsImZpbGUiOiI0MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2138//# sourceURL=webpack-internal:///41
2139`)},function(module,exports,__webpack_require__){eval(`var document = __webpack_require__(0).document;
2140module.exports = document && document.documentElement;
2141
2142//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQyIsImZpbGUiOiI0Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2143//# sourceURL=webpack-internal:///42
2144`)},function(module,exports,__webpack_require__){eval(`var has = __webpack_require__(8);
2145var toIObject = __webpack_require__(18);
2146var arrayIndexOf = __webpack_require__(44)(false);
2147var IE_PROTO = __webpack_require__(17)('IE_PROTO');
2148
2149module.exports = function (object, names) {
2150  var O = toIObject(object);
2151  var i = 0;
2152  var result = [];
2153  var key;
2154  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
2155  // Don't enum bug & hidden keys
2156  while (names.length > i) if (has(O, key = names[i++])) {
2157    ~arrayIndexOf(result, key) || result.push(key);
2158  }
2159  return result;
2160};
2161
2162//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QyxtQkFBbUIsbUJBQU8sQ0FBQyxFQUFtQjtBQUM5QyxlQUFlLG1CQUFPLENBQUMsRUFBZTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2163//# sourceURL=webpack-internal:///43
2164`)},function(module,exports,__webpack_require__){eval(`// false -> Array#indexOf
2165// true  -> Array#includes
2166var toIObject = __webpack_require__(18);
2167var toLength = __webpack_require__(28);
2168var toAbsoluteIndex = __webpack_require__(45);
2169module.exports = function (IS_INCLUDES) {
2170  return function ($this, el, fromIndex) {
2171    var O = toIObject($this);
2172    var length = toLength(O.length);
2173    var index = toAbsoluteIndex(fromIndex, length);
2174    var value;
2175    // Array#includes uses SameValueZero equality algorithm
2176    // eslint-disable-next-line no-self-compare
2177    if (IS_INCLUDES && el != el) while (length > index) {
2178      value = O[index++];
2179      // eslint-disable-next-line no-self-compare
2180      if (value != value) return true;
2181    // Array#indexOf ignores holes, Array#includes - not
2182    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
2183      if (O[index] === el) return IS_INCLUDES || index || 0;
2184    } return !IS_INCLUDES && -1;
2185  };
2186};
2187
2188//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLEVBQWM7QUFDckMsc0JBQXNCLG1CQUFPLENBQUMsRUFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFlBQVksZUFBZTtBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjQ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2189//# sourceURL=webpack-internal:///44
2190`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16);
2191var max = Math.max;
2192var min = Math.min;
2193module.exports = function (index, length) {
2194  index = toInteger(index);
2195  return index < 0 ? max(index + length, 0) : min(index, length);
2196};
2197
2198//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
2199//# sourceURL=webpack-internal:///45
2200`)},function(module,exports,__webpack_require__){eval(`module.exports = __webpack_require__(6);
2201
2202//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsQ0FBUyIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 4,313 bytes, lines 2202-2262
2202IDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
2203//# sourceURL=webpack-internal:///46
2204`)},function(module,exports,__webpack_require__){"use strict";eval(`
2205var create = __webpack_require__(48);
2206var descriptor = __webpack_require__(12);
2207var setToStringTag = __webpack_require__(22);
2208var IteratorPrototype = {};
2209
2210// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
2211__webpack_require__(6)(IteratorPrototype, __webpack_require__(1)('iterator'), function () { return this; });
2212
2213module.exports = function (Constructor, NAME, next) {
2214  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
2215  setToStringTag(Constructor, NAME + ' Iterator');
2216};
2217
2218//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixhQUFhLG1CQUFPLENBQUMsRUFBa0I7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsRUFBa0I7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMsRUFBc0I7QUFDbkQ7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLENBQVMscUJBQXFCLG1CQUFPLENBQUMsQ0FBUSw0QkFBNEIsYUFBYSxFQUFFOztBQUVqRztBQUNBLHFEQUFxRCw0QkFBNEI7QUFDakY7QUFDQSIsImZpbGUiOiI0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
2219//# sourceURL=webpack-internal:///47
2220`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
2221var anObject = __webpack_require__(5);
2222var dPs = __webpack_require__(49);
2223var enumBugKeys = __webpack_require__(25);
2224var IE_PROTO = __webpack_require__(17)('IE_PROTO');
2225var Empty = function () { /* empty */ };
2226var PROTOTYPE = 'prototype';
2227
2228// Create object with fake \`null\` prototype: use iframe Object with cleared prototype
2229var createDict = function () {
2230  // Thrash, waste and sodomy: IE GC bug
2231  var iframe = __webpack_require__(14)('iframe');
2232  var i = enumBugKeys.length;
2233  var lt = '<';
2234  var gt = '>';
2235  var iframeDocument;
2236  iframe.style.display = 'none';
2237  __webpack_require__(42).appendChild(iframe);
2238  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
2239  // createDict = iframe.contentWindow.Object;
2240  // html.removeChild(iframe);
2241  iframeDocument = iframe.contentWindow.document;
2242  iframeDocument.open();
2243  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2244  iframeDocument.close();
2245  createDict = iframeDocument.F;
2246  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
2247  return createDict();
2248};
2249
2250module.exports = Object.create || function create(O, Properties) {
2251  var result;
2252  if (O !== null) {
2253    Empty[PROTOTYPE] = anObject(O);
2254    result = new Empty();
2255    Empty[PROTOTYPE] = null;
2256    // add "__proto__" for Object.getPrototypeOf polyfill
2257    result[IE_PROTO] = O;
2258  } else result = createDict();
2259  return Properties === undefined ? result : dPs(result, Properties);
2260};
2261
2262//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLFVBQVUsbUJBQU8sQ0FBQyxFQUFlO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWtCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsRUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLEVBQVM7QU
2262FDbkIsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiI0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
2263//# sourceURL=webpack-internal:///48
2264`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4);
2265var anObject = __webpack_require__(5);
2266var getKeys = __webpack_require__(41);
2267
2268module.exports = __webpack_require__(3) ? Object.defineProperties : function defineProperties(O, Properties) {
2269  anObject(O);
2270  var keys = getKeys(Properties);
2271  var length = keys.length;
2272  var i = 0;
2273  var P;
2274  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
2275  return O;
2276};
2277
2278//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxjQUFjLG1CQUFPLENBQUMsRUFBZ0I7O0FBRXRDLGlCQUFpQixtQkFBTyxDQUFDLENBQWdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gN
2278Dlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2279//# sourceURL=webpack-internal:///49
2280`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
2281var has = __webpack_require__(8);
2282var toObject = __webpack_require__(29);
2283var IE_PROTO = __webpack_require__(17)('IE_PROTO');
2284var ObjectProto = Object.prototype;
2285
2286module.exports = Object.getPrototypeOf || function (O) {
2287  O = toObject(O);
2288  if (has(O, IE_PROTO)) return O[IE_PROTO];
2289  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
2290    return O.constructor.prototype;
2291  } return O instanceof Object ? ObjectProto : null;
2292};
2293
2294//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyxFQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
2295//# sourceURL=webpack-internal:///50
2296`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16);
2297var defined = __webpack_require__(15);
2298// true  -> String#at
2299// false -> String#codePointAt
2300module.exports = function (TO_STRING) {
2301  return function (that, pos) {
2302    var s = String(defined(that));
2303    var i = toInteger(pos);
2304    var l = s.length;
2305    var a, b;
2306    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
2307    a = s.charCodeAt(i);
2308    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
2309      ? TO_STRING ? s.charAt(i) : a
2310      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
2311  };
2312};
2313
2314//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanNcbi8vIG1vZHVsZSBpZCA9IDUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9
2315//# sourceURL=webpack-internal:///51
2316`)},,,,function(module,exports){eval(`var g;\r
2317\r
2318// This works in non-strict mode\r
2319g = (function() {\r
2320	return this;\r
2321})();\r
2322\r
2323try {\r
2324	// This works if eval is allowed (see CSP)\r
2325	g = g || Function("return this")() || (1,eval)("this");\r
2326} catch(e) {\r
2327	// This works if the window reference is available\r
2328	if(typeof window === "object")\r
2329		g = window;\r
2330}\r
2331\r
2332// g can still be undefined, but nothing to do about it...\r
2333// We return undefined, instead of nothing here, so it's\r
2334// easier to handle this case. if(!global) { ...}\r
2335\r
2336module.exports = g;\r
2337
2338//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzPzM2OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QU
2338FFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUMiLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDU1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA1IDEzIDI1Il0sInNvdXJjZVJvb3QiOiIifQ==
2339//# sourceURL=webpack-internal:///55
2340`)},,function(module,exports,__webpack_require__){eval(`__webpack_require__(64);
2341var global = __webpack_require__(0);
2342var hide = __webpack_require__(6);
2343var Iterators = __webpack_require__(10);
2344var TO_STRING_TAG = __webpack_require__(1)('toStringTag');
2345
2346var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
2347  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
2348  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
2349  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
2350  'TextTrackList,TouchList').split(',');
2351
2352for (var i = 0; i < DOMIterables.length; i++) {
2353  var NAME = DOMIterables[i];
2354  var Collection = global[NAME];
2355  var proto = Collection && Collection.prototype;
2356  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
2357  Iterators[NAME] = Iterators.Array;
2358}
2359
2360//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsRUFBc0I7QUFDOUIsYUFBYSxtQkFBTyxDQUFDLENBQVc7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLENBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxDQUFROztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxNCAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2361//# sourceURL=webpack-internal:///57
2362`)},,,,function(module,exports){eval(`
vendor: 5,419 bytes, lines 2362-2546
2362// shim for using process in browser
2363var process = module.exports = {};
2364
2365// cached from whatever global is present so that test runners that stub it
2366// don't break things.  But we need to wrap it in a try catch in case it is
2367// wrapped in strict mode code which doesn't define any globals.  It's inside a
2368// function because try/catches deoptimize in certain engines.
2369
2370var cachedSetTimeout;
2371var cachedClearTimeout;
2372
2373function defaultSetTimout() {
2374    throw new Error('setTimeout has not been defined');
2375}
2376function defaultClearTimeout () {
2377    throw new Error('clearTimeout has not been defined');
2378}
2379(function () {
2380    try {
2381        if (typeof setTimeout === 'function') {
2382            cachedSetTimeout = setTimeout;
2383        } else {
2384            cachedSetTimeout = defaultSetTimout;
2385        }
2386    } catch (e) {
2387        cachedSetTimeout = defaultSetTimout;
2388    }
2389    try {
2390        if (typeof clearTimeout === 'function') {
2391            cachedClearTimeout = clearTimeout;
2392        } else {
2393            cachedClearTimeout = defaultClearTimeout;
2394        }
2395    } catch (e) {
2396        cachedClearTimeout = defaultClearTimeout;
2397    }
2398} ())
2399function runTimeout(fun) {
2400    if (cachedSetTimeout === setTimeout) {
2401        //normal enviroments in sane situations
2402        return setTimeout(fun, 0);
2403    }
2404    // if setTimeout wasn't available but was latter defined
2405    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
2406        cachedSetTimeout = setTimeout;
2407        return setTimeout(fun, 0);
2408    }
2409    try {
2410        // when when somebody has screwed with setTimeout but no I.E. maddness
2411        return cachedSetTimeout(fun, 0);
2412    } catch(e){
2413        try {
2414            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
2415            return cachedSetTimeout.call(null, fun, 0);
2416        } catch(e){
2417            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
2418            return cachedSetTimeout.call(this, fun, 0);
2419        }
2420    }
2421
2422
2423}
2424function runClearTimeout(marker) {
2425    if (cachedClearTimeout === clearTimeout) {
2426        //normal enviroments in sane situations
2427        return clearTimeout(marker);
2428    }
2429    // if clearTimeout wasn't available but was latter defined
2430    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
2431        cachedClearTimeout = clearTimeout;
2432        return clearTimeout(marker);
2433    }
2434    try {
2435        // when when somebody has screwed with setTimeout but no I.E. maddness
2436        return cachedClearTimeout(marker);
2437    } catch (e){
2438        try {
2439            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
2440            return cachedClearTimeout.call(null, marker);
2441        } catch (e){
2442            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
2443            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
2444            return cachedClearTimeout.call(this, marker);
2445        }
2446    }
2447
2448
2449
2450}
2451var queue = [];
2452var draining = false;
2453var currentQueue;
2454var queueIndex = -1;
2455
2456function cleanUpNextTick() {
2457    if (!draining || !currentQueue) {
2458        return;
2459    }
2460    draining = false;
2461    if (currentQueue.length) {
2462        queue = currentQueue.concat(queue);
2463    } else {
2464        queueIndex = -1;
2465    }
2466    if (queue.length) {
2467        drainQueue();
2468    }
2469}
2470
2471function drainQueue() {
2472    if (draining) {
2473        return;
2474    }
2475    var timeout = runTimeout(cleanUpNextTick);
2476    draining = true;
2477
2478    var len = queue.length;
2479    while(len) {
2480        currentQueue = queue;
2481        queue = [];
2482        while (++queueIndex < len) {
2483            if (currentQueue) {
2484                currentQueue[queueIndex].run();
2485            }
2486        }
2487        queueIndex = -1;
2488        len = queue.length;
2489    }
2490    currentQueue = null;
2491    draining = false;
2492    runClearTimeout(timeout);
2493}
2494
2495process.nextTick = function (fun) {
2496    var args = new Array(arguments.length - 1);
2497    if (arguments.length > 1) {
2498        for (var i = 1; i < arguments.length; i++) {
2499            args[i - 1] = arguments[i];
2500        }
2501    }
2502    queue.push(new Item(fun, args));
2503    if (queue.length === 1 && !draining) {
2504        runTimeout(drainQueue);
2505    }
2506};
2507
2508// v8 likes predictible objects
2509function Item(fun, array) {
2510    this.fun = fun;
2511    this.array = array;
2512}
2513Item.prototype.run = function () {
2514    this.fun.apply(null, this.array);
2515};
2516process.title = 'browser';
2517process.browser = true;
2518process.env = {};
2519process.argv = [];
2520process.version = ''; // empty string to avoid regexp issues
2521process.versions = {};
2522
2523function noop() {}
2524
2525process.on = noop;
2526process.addListener = noop;
2527process.once = noop;
2528process.off = noop;
2529process.removeListener = noop;
2530process.removeAllListeners = noop;
2531process.emit = noop;
2532process.prependListener = noop;
2533process.prependOnceListener = noop;
2534
2535process.listeners = function (name) { return [] }
2536
2537process.binding = function (name) {
2538    throw new Error('process.binding is not supported');
2539};
2540
2541process.cwd = function () { return '/' };
2542process.chdir = function (dir) {
2543    throw new Error('process.chdir is not supported');
2544};
2545process.umask = function() { return 0; };
2546
2547//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzPzViNjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsVUFBVSIsImZpbGUiOiI2MS5qcyIsInNvdXJjZXNDb250ZW50Ijpb
vendor: 7,470 bytes, line 2547
2547Ii8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG
vendor: 2,771 bytes, lines 2547-2587
25475cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA1IDEzIDI1Il0sInNvdXJjZVJvb3QiOiIifQ==
2548//# sourceURL=webpack-internal:///61
2549`)},,function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(68), __esModule: true };
2550//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2dldC1pdGVyYXRvci5qcz8wNGVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixZQUFZLG1CQUFPLENBQUMsRUFBaUMiLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2dldC1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA1IDE0IDE2Il0sInNvdXJjZVJvb3QiOiIifQ==
2551//# sourceURL=webpack-internal:///63
2552`)},function(module,exports,__webpack_require__){"use strict";eval(`
2553var addToUnscopables = __webpack_require__(65);
2554var step = __webpack_require__(66);
2555var Iterators = __webpack_require__(10);
2556var toIObject = __webpack_require__(18);
2557
2558// 22.1.3.4 Array.prototype.entries()
2559// 22.1.3.13 Array.prototype.keys()
2560// 22.1.3.29 Array.prototype.values()
2561// 22.1.3.30 Array.prototype[@@iterator]()
2562module.exports = __webpack_require__(32)(Array, 'Array', function (iterated, kind) {
2563  this._t = toIObject(iterated); // target
2564  this._i = 0;                   // next index
2565  this._k = kind;                // kind
2566// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
2567}, function () {
2568  var O = this._t;
2569  var kind = this._k;
2570  var index = this._i++;
2571  if (!O || index >= O.length) {
2572    this._t = undefined;
2573    return step(1);
2574  }
2575  if (kind == 'keys') return step(0, index);
2576  if (kind == 'values') return step(0, O[index]);
2577  return step(0, [index, O[index]]);
2578}, 'values');
2579
2580// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
2581Iterators.Arguments = Iterators.Array;
2582
2583addToUnscopables('keys');
2584addToUnscopables('values');
2585addToUnscopables('entries');
2586
2587//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix1QkFBdUIsbUJBQU8sQ0FBQyxFQUF1QjtBQUN0RCxXQUFXLG1CQUFPLENBQUMsRUFBYztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsRUFBZ0I7QUFDekMsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxpQkFBaUI7QUFDakI7QU
2587FDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTQgMTYiXSwic291cmNlUm9vdCI6IiJ9
2588//# sourceURL=webpack-internal:///64
2589`)},function(module,exports){eval(`module.exports = function () { /* empty */ };
2590
2591//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QiIsImZpbGUiOiI2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTQgMTYiXSwic291cmNlUm9vdCI6IiJ9
2592//# sourceURL=webpack-internal:///65
2593`)},function(module,exports){eval(`module.exports = function (done, value) {
2594  return { value: value, done: !!done };
2595};
2596
2597//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsVUFBVTtBQUNWIiwiZmlsZSI6IjY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxNCAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2598//# sourceURL=webpack-internal:///66
2599`)},,function(module,exports,__webpack_require__){eval(`__webpack_require__(57);
2600__webpack_require__(31);
2601module.exports = __webpack_require__(69);
2602
2603//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvci5qcz83ZjE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsRUFBNkI7QUFDckMsbUJBQU8sQ0FBQyxFQUFnQztBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQyxFQUE4QiIsImZpbGUiOiI2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9nZXQtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNSAxNCAxNiJdLCJzb3VyY2VSb290IjoiIn0=
2604//# sourceURL=webpack-internal:///68
2605`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5);
2606var get = __webpack_require__(37);
2607module.exports = __webpack_require__(2).getIterator = function (it) {
2608  var iterFn = get(it);
2609  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
2610  return anObject(iterFn.call(it));
2611};
2612
2613//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanM/ODNjNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxVQUFVLG1CQUFPLENBQUMsRUFBNEI7QU
vendor: 4,164 bytes, lines 2613-2680
2613FDOUMsaUJBQWlCLG1CQUFPLENBQUMsQ0FBUztBQUNsQztBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldCA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvciA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXRlckZuID0gZ2V0KGl0KTtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIHJldHVybiBhbk9iamVjdChpdGVyRm4uY2FsbChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA2OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDUgMTQgMTYiXSwic291cmNlUm9vdCI6IiJ9
2614//# sourceURL=webpack-internal:///69
2615`)},,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval(`/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
2616            (typeof self !== "undefined" && self) ||
2617            window;
2618var apply = Function.prototype.apply;
2619
2620// DOM APIs, for completeness
2621
2622exports.setTimeout = function() {
2623  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
2624};
2625exports.setInterval = function() {
2626  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
2627};
2628exports.clearTimeout =
2629exports.clearInterval = function(timeout) {
2630  if (timeout) {
2631    timeout.close();
2632  }
2633};
2634
2635function Timeout(id, clearFn) {
2636  this._id = id;
2637  this._clearFn = clearFn;
2638}
2639Timeout.prototype.unref = Timeout.prototype.ref = function() {};
2640Timeout.prototype.close = function() {
2641  this._clearFn.call(scope, this._id);
2642};
2643
2644// Does not start the time, just sets up the members needed.
2645exports.enroll = function(item, msecs) {
2646  clearTimeout(item._idleTimeoutId);
2647  item._idleTimeout = msecs;
2648};
2649
2650exports.unenroll = function(item) {
2651  clearTimeout(item._idleTimeoutId);
2652  item._idleTimeout = -1;
2653};
2654
2655exports._unrefActive = exports.active = function(item) {
2656  clearTimeout(item._idleTimeoutId);
2657
2658  var msecs = item._idleTimeout;
2659  if (msecs >= 0) {
2660    item._idleTimeoutId = setTimeout(function onTimeout() {
2661      if (item._onTimeout)
2662        item._onTimeout();
2663    }, msecs);
2664  }
2665};
2666
2667// setimmediate attaches itself to the global object
2668__webpack_require__(88);
2669// On some exotic environments, it's not clear which object \`setimmediate\` was
2670// able to install onto.  Search each possibility in the same order as the
2671// \`setimmediate\` library.
2672exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
2673                       (typeof global !== "undefined" && global.setImmediate) ||
2674                       (this && this.setImmediate);
2675exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
2676                         (typeof global !== "undefined" && global.clearImmediate) ||
2677                         (this && this.clearImmediate);
2678
2679/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(55)))
2680//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcz9kN2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLEVBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ijg3LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHNjb3BlID0gKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsKSB8fFxuICAgICAgICAgICAgKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYpIHx8XG4gICAgICAgICAgICB3aW5kb3c7XG52YXIgYXBwbHkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG5cbi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzXG5cbmV4cG9ydHMuc2V0VGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJUaW1lb3V0KTtcbn07XG5leHBvcnRzLnNldEludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybi
vendor: 4,883 bytes, lines 2680-2753
2680BuZXcgVGltZW91dChhcHBseS5jYWxsKHNldEludGVydmFsLCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJJbnRlcnZhbCk7XG59O1xuZXhwb3J0cy5jbGVhclRpbWVvdXQgPVxuZXhwb3J0cy5jbGVhckludGVydmFsID0gZnVuY3Rpb24odGltZW91dCkge1xuICBpZiAodGltZW91dCkge1xuICAgIHRpbWVvdXQuY2xvc2UoKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gVGltZW91dChpZCwgY2xlYXJGbikge1xuICB0aGlzLl9pZCA9IGlkO1xuICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjtcbn1cblRpbWVvdXQucHJvdG90eXBlLnVucmVmID0gVGltZW91dC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oKSB7fTtcblRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2NsZWFyRm4uY2FsbChzY29wZSwgdGhpcy5faWQpO1xufTtcblxuLy8gRG9lcyBub3Qgc3RhcnQgdGhlIHRpbWUsIGp1c3Qgc2V0cyB1cCB0aGUgbWVtYmVycyBuZWVkZWQuXG5leHBvcnRzLmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0sIG1zZWNzKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2Vjcztcbn07XG5cbmV4cG9ydHMudW5lbnJvbGwgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSAtMTtcbn07XG5cbmV4cG9ydHMuX3VucmVmQWN0aXZlID0gZXhwb3J0cy5hY3RpdmUgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcblxuICB2YXIgbXNlY3MgPSBpdGVtLl9pZGxlVGltZW91dDtcbiAgaWYgKG1zZWNzID49IDApIHtcbiAgICBpdGVtLl9pZGxlVGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiBvblRpbWVvdXQoKSB7XG4gICAgICBpZiAoaXRlbS5fb25UaW1lb3V0KVxuICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTtcbiAgICB9LCBtc2Vjcyk7XG4gIH1cbn07XG5cbi8vIHNldGltbWVkaWF0ZSBhdHRhY2hlcyBpdHNlbGYgdG8gdGhlIGdsb2JhbCBvYmplY3RcbnJlcXVpcmUoXCJzZXRpbW1lZGlhdGVcIik7XG4vLyBPbiBzb21lIGV4b3RpYyBlbnZpcm9ubWVudHMsIGl0J3Mgbm90IGNsZWFyIHdoaWNoIG9iamVjdCBgc2V0aW1tZWRpYXRlYCB3YXNcbi8vIGFibGUgdG8gaW5zdGFsbCBvbnRvLiAgU2VhcmNoIGVhY2ggcG9zc2liaWxpdHkgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlXG4vLyBgc2V0aW1tZWRpYXRlYCBsaWJyYXJ5LlxuZXhwb3J0cy5zZXRJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5zZXRJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5zZXRJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICh0aGlzICYmIHRoaXMuc2V0SW1tZWRpYXRlKTtcbmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwuY2xlYXJJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5jbGVhckltbWVkaWF0ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy90aW1lcnMtYnJvd3NlcmlmeS9tYWluLmpzXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSA1IDI1Il0sInNvdXJjZVJvb3QiOiIifQ==
2681//# sourceURL=webpack-internal:///87
2682`)},function(module,exports,__webpack_require__){eval(`/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
2683    "use strict";
2684
2685    if (global.setImmediate) {
2686        return;
2687    }
2688
2689    var nextHandle = 1; // Spec says greater than zero
2690    var tasksByHandle = {};
2691    var currentlyRunningATask = false;
2692    var doc = global.document;
2693    var registerImmediate;
2694
2695    function setImmediate(callback) {
2696      // Callback can either be a function or a string
2697      if (typeof callback !== "function") {
2698        callback = new Function("" + callback);
2699      }
2700      // Copy function arguments
2701      var args = new Array(arguments.length - 1);
2702      for (var i = 0; i < args.length; i++) {
2703          args[i] = arguments[i + 1];
2704      }
2705      // Store and register the task
2706      var task = { callback: callback, args: args };
2707      tasksByHandle[nextHandle] = task;
2708      registerImmediate(nextHandle);
2709      return nextHandle++;
2710    }
2711
2712    function clearImmediate(handle) {
2713        delete tasksByHandle[handle];
2714    }
2715
2716    function run(task) {
2717        var callback = task.callback;
2718        var args = task.args;
2719        switch (args.length) {
2720        case 0:
2721            callback();
2722            break;
2723        case 1:
2724            callback(args[0]);
2725            break;
2726        case 2:
2727            callback(args[0], args[1]);
2728            break;
2729        case 3:
2730            callback(args[0], args[1], args[2]);
2731            break;
2732        default:
2733            callback.apply(undefined, args);
2734            break;
2735        }
2736    }
2737
2738    function runIfPresent(handle) {
2739        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
2740        // So if we're currently running a task, we'll need to delay this invocation.
2741        if (currentlyRunningATask) {
2742            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
2743            // "too much recursion" error.
2744            setTimeout(runIfPresent, 0, handle);
2745        } else {
2746            var task = tasksByHandle[handle];
2747            if (task) {
2748                currentlyRunningATask = true;
2749                try {
2750                    run(task);
2751                } finally {
2752                    clearImmediate(handle);
2753                    currentlyRunningATask = false;
vendor: 4,583 bytes, lines 2754-2870
2754                }
2755            }
2756        }
2757    }
2758
2759    function installNextTickImplementation() {
2760        registerImmediate = function(handle) {
2761            process.nextTick(function () { runIfPresent(handle); });
2762        };
2763    }
2764
2765    function canUsePostMessage() {
2766        // The test against \`importScripts\` prevents this implementation from being installed inside a web worker,
2767        // where \`global.postMessage\` means something completely different and can't be used for this purpose.
2768        if (global.postMessage && !global.importScripts) {
2769            var postMessageIsAsynchronous = true;
2770            var oldOnMessage = global.onmessage;
2771            global.onmessage = function() {
2772                postMessageIsAsynchronous = false;
2773            };
2774            global.postMessage("", "*");
2775            global.onmessage = oldOnMessage;
2776            return postMessageIsAsynchronous;
2777        }
2778    }
2779
2780    function installPostMessageImplementation() {
2781        // Installs an event handler on \`global\` for the \`message\` event: see
2782        // * https://developer.mozilla.org/en/DOM/window.postMessage
2783        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
2784
2785        var messagePrefix = "setImmediate$" + Math.random() + "$";
2786        var onGlobalMessage = function(event) {
2787            if (event.source === global &&
2788                typeof event.data === "string" &&
2789                event.data.indexOf(messagePrefix) === 0) {
2790                runIfPresent(+event.data.slice(messagePrefix.length));
2791            }
2792        };
2793
2794        if (global.addEventListener) {
2795            global.addEventListener("message", onGlobalMessage, false);
2796        } else {
2797            global.attachEvent("onmessage", onGlobalMessage);
2798        }
2799
2800        registerImmediate = function(handle) {
2801            global.postMessage(messagePrefix + handle, "*");
2802        };
2803    }
2804
2805    function installMessageChannelImplementation() {
2806        var channel = new MessageChannel();
2807        channel.port1.onmessage = function(event) {
2808            var handle = event.data;
2809            runIfPresent(handle);
2810        };
2811
2812        registerImmediate = function(handle) {
2813            channel.port2.postMessage(handle);
2814        };
2815    }
2816
2817    function installReadyStateChangeImplementation() {
2818        var html = doc.documentElement;
2819        registerImmediate = function(handle) {
2820            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
2821            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
2822            var script = doc.createElement("script");
2823            script.onreadystatechange = function () {
2824                runIfPresent(handle);
2825                script.onreadystatechange = null;
2826                html.removeChild(script);
2827                script = null;
2828            };
2829            html.appendChild(script);
2830        };
2831    }
2832
2833    function installSetTimeoutImplementation() {
2834        registerImmediate = function(handle) {
2835            setTimeout(runIfPresent, 0, handle);
2836        };
2837    }
2838
2839    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
2840    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
2841    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
2842
2843    // Don't get fooled by e.g. browserify environments.
2844    if ({}.toString.call(global.process) === "[object process]") {
2845        // For Node.js before 0.9
2846        installNextTickImplementation();
2847
2848    } else if (canUsePostMessage()) {
2849        // For non-IE10 modern browsers
2850        installPostMessageImplementation();
2851
2852    } else if (global.MessageChannel) {
2853        // For web workers, where supported
2854        installMessageChannelImplementation();
2855
2856    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
2857        // For IE 6\u20138
2858        installReadyStateChangeImplementation();
2859
2860    } else {
2861        // For older browsers
2862        installSetTimeoutImplementation();
2863    }
2864
2865    attachTo.setImmediate = setImmediate;
2866    attachTo.clearImmediate = clearImmediate;
2867}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
2868
2869/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(55), __webpack_require__(61)))
2870//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcz85YjJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0F
2870BRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxzQkFBc0IsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiI4OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCB1bmRlZmluZWQpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIGlmIChnbG9iYWwuc2V0SW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV4dEhhbmRsZSA9IDE7IC8vIFNwZWMgc2F5cyBncmVhdGVyIHRoYW4gemVyb1xuICAgIHZhciB0YXNrc0J5SGFuZGxlID0ge307XG4gICAgdmFyIGN1cnJlbnRseVJ1bm5pbmdBVGFzayA9IGZhbHNlO1xuICAgIHZhciBkb2MgPSBnbG9iYWwuZG9jdW1lbnQ7XG4gICAgdmFyIHJlZ2lzdGVySW1tZWRpYXRlO1xuXG4gICAgZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGNhbGxiYWNrKSB7XG4gICAgICAvLyBDYWxsYmFjayBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmdcbiAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWxsYmFjayA9IG5ldyBGdW5jdGlvbihcIlwiICsgY2FsbGJhY2spO1xuICAgICAgfVxuICAgICAgLy8gQ29weSBmdW5jdGlvbiBhcmd1bWVudHNcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDFdO1xuICAgICAgfVxuICAgICAgLy8gU3RvcmUgYW5kIHJlZ2lzdGVyIHRoZSB0YXNrXG4gICAgICB2Y
2870XIgdGFzayA9IHsgY2FsbGJhY2s6IGNhbGxiYWNrLCBhcmdzOiBhcmdzIH07XG4gICAgICB0YXNrc0J5SGFuZGxlW25leHRIYW5kbGVdID0gdGFzaztcbiAgICAgIHJlZ2lzdGVySW1tZWRpYXRlKG5leHRIYW5kbGUpO1xuICAgICAgcmV0dXJuIG5leHRIYW5kbGUrKztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShoYW5kbGUpIHtcbiAgICAgICAgZGVsZXRlIHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW4odGFzaykge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSB0YXNrLmNhbGxiYWNrO1xuICAgICAgICB2YXIgYXJncyA9IHRhc2suYXJncztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjYWxsYmFjay5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5JZlByZXNlbnQoaGFuZGxlKSB7XG4gICAgICAgIC8vIEZyb20gdGhlIHNwZWM6IFwiV2FpdCB1bnRpbCBhbnkgaW52b2NhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gc3RhcnRlZCBiZWZvcmUgdGhpcyBvbmUgaGF2ZSBjb21wbGV0ZWQuXCJcbiAgICAgICAgLy8gU28gaWYgd2UncmUgY3VycmVudGx5IHJ1bm5pbmcgYSB0YXNrLCB3ZSdsbCBuZWVkIHRvIGRlbGF5IHRoaXMgaW52b2NhdGlvbi5cbiAgICAgICAgaWYgKGN1cnJlbnRseVJ1bm5pbmdBVGFzaykge1xuICAgICAgICAgICAgLy8gRGVsYXkgYnkgZG9pbmcgYSBzZXRUaW1lb3V0LiBzZXRJbW1lZGlhdGUgd2FzIHRyaWVkIGluc3RlYWQsIGJ1dCBpbiBGaXJlZm94IDcgaXQgZ2VuZXJhdGVkIGFcbiAgICAgICAgICAgIC8vIFwidG9vIG11Y2ggcmVjdXJzaW9uXCIgZXJyb3IuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0YXNrID0gdGFza3NCeUhhbmRsZVtoYW5kbGVdO1xuICAgICAgICAgICAgaWYgKHRhc2spIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bih0YXNrKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckltbWVkaWF0ZShoYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkgeyBydW5JZlByZXNlbnQoaGFuZGxlKTsgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuVXNlUG9zdE1lc3NhZ2UoKSB7XG4gICAgICAgIC8vIFRoZSB0ZXN0IGFnYWluc3QgYGltcG9ydFNjcmlwdHNgIHByZXZlbnRzIHRoaXMgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyBpbnN0YWxsZWQgaW5zaWRlIGEgd2ViIHdvcmtlcixcbiAgICAgICAgLy8gd2hlcmUgYGdsb2JhbC5wb3N0TWVzc2FnZWAgbWVhbnMgc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFuZCBjYW4ndCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgICAgIGlmIChnbG9iYWwucG9zdE1lc3NhZ2UgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgICAgICAgICB2Y
2870XIgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgb2xkT25NZXNzYWdlID0gZ2xvYmFsLm9ubWVzc2FnZTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzID0gZmFsc2U7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKFwiXCIsIFwiKlwiKTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBvbGRPbk1lc3NhZ2U7XG4gICAgICAgICAgICByZXR1cm4gcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICAvLyBJbnN0YWxscyBhbiBldmVudCBoYW5kbGVyIG9uIGBnbG9iYWxgIGZvciB0aGUgYG1lc3NhZ2VgIGV2ZW50OiBzZWVcbiAgICAgICAgLy8gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9ET00vd2luZG93LnBvc3RNZXNzYWdlXG4gICAgICAgIC8vICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbXMuaHRtbCNjcm9zc0RvY3VtZW50TWVzc2FnZXNcblxuICAgICAgICB2YXIgbWVzc2FnZVByZWZpeCA9IFwic2V0SW1tZWRpYXRlJFwiICsgTWF0aC5yYW5kb20oKSArIFwiJFwiO1xuICAgICAgICB2YXIgb25HbG9iYWxNZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2UgPT09IGdsb2JhbCAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBldmVudC5kYXRhID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleE9mKG1lc3NhZ2VQcmVmaXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KCtldmVudC5kYXRhLnNsaWNlKG1lc3NhZ2VQcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgb25HbG9iYWxNZXNzYWdlLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnbG9iYWwuYXR0YWNoRXZlbnQoXCJvbm1lc3NhZ2VcIiwgb25HbG9iYWxNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBnbG9iYWwucG9zdE1lc3NhZ2UobWVzc2FnZVByZWZpeCArIGhhbmRsZSwgXCIqXCIpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxNZXNzYWdlQ2hhbm5lbEltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICB2Y
2870XIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlID0gZXZlbnQuZGF0YTtcbiAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKGhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGh0bWwgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgPHNjcmlwdD4gZWxlbWVudDsgaXRzIHJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQgd2lsbCBiZSBmaXJlZCBhc3luY2hyb25vdXNseSBvbmNlIGl0IGlzIGluc2VydGVkXG4gICAgICAgICAgICAvLyBpbnRvIHRoZSBkb2N1bWVudC4gRG8gc28sIHRodXMgcXVldWluZyB1cCB0aGUgdGFzay4gUmVtZW1iZXIgdG8gY2xlYW4gdXAgb25jZSBpdCdzIGJlZW4gY2FsbGVkLlxuICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFNldFRpbWVvdXRJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIElmIHN1cHBvcnRlZCwgd2Ugc2hvdWxkIGF0dGFjaCB0byB0aGUgcHJvdG90eXBlIG9mIGdsb2JhbCwgc2luY2UgdGhhdCBpcyB3aGVyZSBzZXRUaW1lb3V0IGV0IGFsLiBsaXZlLlxuICAgIHZhciBhdHRhY2hUbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsKTtcbiAgICBhdHRhY2hUbyA9IGF0dGFjaFRvICYmIGF0dGFjaFRvLnNldFRpbWVvdXQgPyBhdHRhY2hUbyA6IGdsb2JhbDtcblxuICAgIC8vIERvbid0IGdldCBmb29sZWQgYnkgZS5nLiBicm93c2VyaWZ5IGVudmlyb25tZW50cy5cbiAgICBpZiAoe30udG9TdHJpbmcuY2FsbChnbG9iYWwucHJvY2VzcykgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiKSB7XG4gICAgICAgIC8vIEZvciBOb2RlLmpzIGJlZm9yZSAwLjlcbiAgICAgICAgaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoY2FuVXNlUG9zdE1lc3NhZ2UoKSkge1xuICAgICAgICAvLyBGb3Igbm9uLUlFMTAgbW9kZXJuIGJyb3dzZXJzXG4gICAgICAgIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGdsb2JhbC5NZXNzYWdlQ2hhbm5lbCkge1xuICAgICAgICAvLyBGb3Igd2ViIHdvcmtlcnMsIHdoZXJlIHN1cHBvcnRlZFxuICAgICAgICBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChkb2MgJiYgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIiBpbiBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSkge1xuICAgICAgICAvLyBGb3IgSUUgNuKAkzhcbiAgICAgICAgaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIG9sZGVyIGJyb3dzZXJzXG4gICAgICAgIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKTtcbiAgICB9XG5cbiAgICBhdHRhY2hUby5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGU7XG4gICAgYXR0YWNoVG8uY2xlYXJJbW1lZGlhdGUgPSBjbGVhckltbWVkaWF0ZTtcbn0odHlwZW9mIHNlbGYgPT09IFwidW5kZWZpbmVkXCIgPyB0eXBlb2YgZ2xvYmFsID09PSBcInVuZGVmaW5lZFwiID8gdGhpcyA6IGdsb2JhbCA6IHNlbGYpKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3NldGltbWVkaWF0ZS9zZXRJbW1lZGlhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDg4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDUgMjUiXSwic291cmNlUm9vdCI6IiJ9
2871//# sourceURL=webpack-internal:///88
2872`)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* unused harmony export CLASSES */
2873/* unused harmony export CLASS_ACTIVE */
2874/* unused harmony export CLASS_ARROW */
2875/* unused harmony export CLASS_ARROWS */
2876/* unused harmony export CLASS_ARROW_NEXT */
2877/* unused harmony export CLASS_ARROW_PREV */
2878/* unused harmony export CLASS_CLONE */
2879/* unused harmony export CLASS_CONTAINER */
2880/* unused harmony export CLASS_FOCUS_IN */
2881/* unused harmony export CLASS_INITIALIZED */
2882/* unused harmony export CLASS_LIST */
2883/* unused harmony export CLASS_LOADING */
2884/* unused harmony export CLASS_NEXT */
2885/* unused harmony export CLASS_OVERFLOW */
2886/* unused harmony export CLASS_PAGINATION */
2887/* unused harmony export CLASS_PAGINATION_PAGE */
2888/* unused harmony export CLASS_PREV */
2889/* unused harmony export CLASS_PROGRESS */
2890/* unused harmony export CLASS_PROGRESS_BAR */
2891/* unused harmony export CLASS_ROOT */
2892/* unused harmony export CLASS_SLIDE */
2893/* unused harmony export CLASS_SPINNER */
2894/* unused harmony export CLASS_SR */
2895/* unused harmony export CLASS_TOGGLE */
2896/* unused harmony export CLASS_TOGGLE_PAUSE */
2897/* unused harmony export CLASS_TOGGLE_PLAY */
2898/* unused harmony export CLASS_TRACK */
2899/* unused harmony export CLASS_VISIBLE */
2900/* unused harmony export DEFAULTS */
2901/* unused harmony export EVENT_ACTIVE */
2902/* unused harmony export EVENT_ARROWS_MOUNTED */
2903/* unused harmony export EVENT_ARROWS_UPDATED */
2904/* unused harmony export EVENT_AUTOPLAY_PAUSE */
2905/* unused harmony export EVENT_AUTOPLAY_PLAY */
2906/* unused harmony export EVENT_AUTOPLAY_PLAYING */
2907/* unused harmony export EVENT_CLICK */
2908/* unused harmony export EVENT_DESTROY */
2909/* unused harmony export EVENT_DRAG */
2910/* unused harmony export EVENT_DRAGGED */
2911/* unused harmony export EVENT_DRAGGING */
2912/* unused harmony export EVENT_END_INDEX_CHANGED */
2913/* unused harmony export EVENT_HIDDEN */
2914/* unused harmony export EVENT_INACTIVE */
2915/* unused harmony export EVENT_LAZYLOAD_LOADED */
2916/* unused harmony export EVENT_MOUNTED */
2917/* unused harmony export EVENT_MOVE */
2918/* unused harmony export EVENT_MOVED */
2919/* unused harmony export EVENT_NAVIGATION_MOUNTED */
2920/* unused harmony export EVENT_OVERFLOW */
2921/* unused harmony export EVENT_PAGINATION_MOUNTED */
2922/* unused harmony export EVENT_PAGINATION_UPDATED */
2923/* unused harmony export EVENT_READY */
2924/* unused harmony export EVENT_REFRESH */
2925/* unused harmony export EVENT_RESIZE */
2926/* unused harmony export EVENT_RESIZED */
2927/* unused harmony export EVENT_SCROLL */
2928/* unused harmony export EVENT_SCROLLED */
2929/* unused harmony export EVENT_SHIFTED */
2930/* unused harmony export EVENT_SLIDE_KEYDOWN */
2931/* unused harmony export EVENT_UPDATED */
2932/* unused harmony export EVENT_VISIBLE */
2933/* unused harmony export EventBinder */
2934/* unused harmony export EventInterface */
2935/* unused harmony export FADE */
2936/* unused harmony export LOOP */
2937/* unused harmony export LTR */
2938/* unused harmony export RTL */
2939/* unused harmony export RequestInterval */
2940/* unused harmony export SLIDE */
2941/* unused harmony export STATUS_CLASSES */
2942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Splide; });
2943/* unused harmony export SplideRenderer */
2944/* unused harmony export State */
2945/* unused harmony export TTB */
2946/* unused harmony export Throttle */
2947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Splide; });
vendor: 42,360 bytes, lines 2948-4575
2948function _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); } }
2949
2950function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
2951
2952/*!
2953 * Splide.js
2954 * Version  : 4.1.4
2955 * License  : MIT
2956 * Copyright: 2022 Naotoshi Fujita
2957 */
2958var MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)";
2959var CREATED = 1;
2960var MOUNTED = 2;
2961var IDLE = 3;
2962var MOVING = 4;
2963var SCROLLING = 5;
2964var DRAGGING = 6;
2965var DESTROYED = 7;
2966var STATES = {
2967  CREATED: CREATED,
2968  MOUNTED: MOUNTED,
2969  IDLE: IDLE,
2970  MOVING: MOVING,
2971  SCROLLING: SCROLLING,
2972  DRAGGING: DRAGGING,
2973  DESTROYED: DESTROYED
2974};
2975
2976function empty(array) {
2977  array.length = 0;
2978}
2979
2980function slice(arrayLike, start, end) {
2981  return Array.prototype.slice.call(arrayLike, start, end);
2982}
2983
2984function apply(func) {
2985  return func.bind.apply(func, [null].concat(slice(arguments, 1)));
2986}
2987
2988var nextTick = setTimeout;
2989
2990var noop = function noop() {};
2991
2992function raf(func) {
2993  return requestAnimationFrame(func);
2994}
2995
2996function typeOf(type, subject) {
2997  return typeof subject === type;
2998}
2999
3000function isObject(subject) {
3001  return !isNull(subject) && typeOf("object", subject);
3002}
3003
3004var isArray = Array.isArray;
3005var isFunction = apply(typeOf, "function");
3006var isString = apply(typeOf, "string");
3007var isUndefined = apply(typeOf, "undefined");
3008
3009function isNull(subject) {
3010  return subject === null;
3011}
3012
3013function isHTMLElement(subject) {
3014  try {
3015    return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;
3016  } catch (e) {
3017    return false;
3018  }
3019}
3020
3021function toArray(value) {
3022  return isArray(value) ? value : [value];
3023}
3024
3025function forEach(values, iteratee) {
3026  toArray(values).forEach(iteratee);
3027}
3028
3029function includes(array, value) {
3030  return array.indexOf(value) > -1;
3031}
3032
3033function push(array, items) {
3034  array.push.apply(array, toArray(items));
3035  return array;
3036}
3037
3038function toggleClass(elm, classes, add) {
3039  if (elm) {
3040    forEach(classes, function (name) {
3041      if (name) {
3042        elm.classList[add ? "add" : "remove"](name);
3043      }
3044    });
3045  }
3046}
3047
3048function addClass(elm, classes) {
3049  toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true);
3050}
3051
3052function append(parent, children) {
3053  forEach(children, parent.appendChild.bind(parent));
3054}
3055
3056function before(nodes, ref) {
3057  forEach(nodes, function (node) {
3058    var parent = (ref || node).parentNode;
3059
3060    if (parent) {
3061      parent.insertBefore(node, ref);
3062    }
3063  });
3064}
3065
3066function matches(elm, selector) {
3067  return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector);
3068}
3069
3070function children(parent, selector) {
3071  var children2 = parent ? slice(parent.children) : [];
3072  return selector ? children2.filter(function (child) {
3073    return matches(child, selector);
3074  }) : children2;
3075}
3076
3077function child(parent, selector) {
3078  return selector ? children(parent, selector)[0] : parent.firstElementChild;
3079}
3080
3081var ownKeys = Object.keys;
3082
3083function forOwn(object, iteratee, right) {
3084  if (object) {
3085    (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {
3086      key !== "__proto__" && iteratee(object[key], key);
3087    });
3088  }
3089
3090  return object;
3091}
3092
3093function assign(object) {
3094  slice(arguments, 1).forEach(function (source) {
3095    forOwn(source, function (value, key) {
3096      object[key] = source[key];
3097    });
3098  });
3099  return object;
3100}
3101
3102function merge(object) {
3103  slice(arguments, 1).forEach(function (source) {
3104    forOwn(source, function (value, key) {
3105      if (isArray(value)) {
3106        object[key] = value.slice();
3107      } else if (isObject(value)) {
3108        object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
3109      } else {
3110        object[key] = value;
3111      }
3112    });
3113  });
3114  return object;
3115}
3116
3117function omit(object, keys) {
3118  forEach(keys || ownKeys(object), function (key) {
3119    delete object[key];
3120  });
3121}
3122
3123function removeAttribute(elms, attrs) {
3124  forEach(elms, function (elm) {
3125    forEach(attrs, function (attr) {
3126      elm && elm.removeAttribute(attr);
3127    });
3128  });
3129}
3130
3131function setAttribute(elms, attrs, value) {
3132  if (isObject(attrs)) {
3133    forOwn(attrs, function (value2, name) {
3134      setAttribute(elms, name, value2);
3135    });
3136  } else {
3137    forEach(elms, function (elm) {
3138      isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));
3139    });
3140  }
3141}
3142
3143function create(tag, attrs, parent) {
3144  var elm = document.createElement(tag);
3145
3146  if (attrs) {
3147    isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);
3148  }
3149
3150  parent && append(parent, elm);
3151  return elm;
3152}
3153
3154function style(elm, prop, value) {
3155  if (isUndefined(value)) {
3156    return getComputedStyle(elm)[prop];
3157  }
3158
3159  if (!isNull(value)) {
3160    elm.style[prop] = "" + value;
3161  }
3162}
3163
3164function display(elm, display2) {
3165  style(elm, "display", display2);
3166}
3167
3168function focus(elm) {
3169  elm["setActive"] && elm["setActive"]() || elm.focus({
3170    preventScroll: true
3171  });
3172}
3173
3174function getAttribute(elm, attr) {
3175  return elm.getAttribute(attr);
3176}
3177
3178function hasClass(elm, className) {
3179  return elm && elm.classList.contains(className);
3180}
3181
3182function rect(target) {
3183  return target.getBoundingClientRect();
3184}
3185
3186function remove(nodes) {
3187  forEach(nodes, function (node) {
3188    if (node && node.parentNode) {
3189      node.parentNode.removeChild(node);
3190    }
3191  });
3192}
3193
3194function parseHtml(html) {
3195  return child(new DOMParser().parseFromString(html, "text/html").body);
3196}
3197
3198function prevent(e, stopPropagation) {
3199  e.preventDefault();
3200
3201  if (stopPropagation) {
3202    e.stopPropagation();
3203    e.stopImmediatePropagation();
3204  }
3205}
3206
3207function query(parent, selector) {
3208  return parent && parent.querySelector(selector);
3209}
3210
3211function queryAll(parent, selector) {
3212  return selector ? slice(parent.querySelectorAll(selector)) : [];
3213}
3214
3215function removeClass(elm, classes) {
3216  toggleClass(elm, classes, false);
3217}
3218
3219function timeOf(e) {
3220  return e.timeStamp;
3221}
3222
3223function unit(value) {
3224  return isString(value) ? value : value ? value + "px" : "";
3225}
3226
3227var PROJECT_CODE = "splide";
3228var DATA_ATTRIBUTE = "data-" + PROJECT_CODE;
3229
3230function assert(condition, message) {
3231  if (!condition) {
3232    throw new Error("[" + PROJECT_CODE + "] " + (message || ""));
3233  }
3234}
3235
3236var min = Math.min,
3237    max = Math.max,
3238    floor = Math.floor,
3239    ceil = Math.ceil,
3240    abs = Math.abs;
3241
3242function approximatelyEqual(x, y, epsilon) {
3243  return abs(x - y) < epsilon;
3244}
3245
3246function between(number, x, y, exclusive) {
3247  var minimum = min(x, y);
3248  var maximum = max(x, y);
3249  return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;
3250}
3251
3252function clamp(number, x, y) {
3253  var minimum = min(x, y);
3254  var maximum = max(x, y);
3255  return min(max(minimum, number), maximum);
3256}
3257
3258function sign(x) {
3259  return +(x > 0) - +(x < 0);
3260}
3261
3262function camelToKebab(string) {
3263  return string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
3264}
3265
3266function format(string, replacements) {
3267  forEach(replacements, function (replacement) {
3268    string = string.replace("%s", "" + replacement);
3269  });
3270  return string;
3271}
3272
3273function pad(number) {
3274  return number < 10 ? "0" + number : "" + number;
3275}
3276
3277var ids = {};
3278
3279function uniqueId(prefix) {
3280  return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);
3281}
3282
3283function EventBinder() {
3284  var listeners = [];
3285
3286  function bind(targets, events, callback, options) {
3287    forEachEvent(targets, events, function (target, event, namespace) {
3288      var isEventTarget = ("addEventListener" in target);
3289      var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback);
3290      isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback);
3291      listeners.push([target, event, namespace, callback, remover]);
3292    });
3293  }
3294
3295  function unbind(targets, events, callback) {
3296    forEachEvent(targets, events, function (target, event, namespace) {
3297      listeners = listeners.filter(function (listener) {
3298        if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {
3299          listener[4]();
3300          return false;
3301        }
3302
3303        return true;
3304      });
3305    });
3306  }
3307
3308  function dispatch(target, type, detail) {
3309    var e;
3310    var bubbles = true;
3311
3312    if (typeof CustomEvent === "function") {
3313      e = new CustomEvent(type, {
3314        bubbles: bubbles,
3315        detail: detail
3316      });
3317    } else {
3318      e = document.createEvent("CustomEvent");
3319      e.initCustomEvent(type, bubbles, false, detail);
3320    }
3321
3322    target.dispatchEvent(e);
3323    return e;
3324  }
3325
3326  function forEachEvent(targets, events, iteratee) {
3327    forEach(targets, function (target) {
3328      target && forEach(events, function (events2) {
3329        events2.split(" ").forEach(function (eventNS) {
3330          var fragment = eventNS.split(".");
3331          iteratee(target, fragment[0], fragment[1]);
3332        });
3333      });
3334    });
3335  }
3336
3337  function destroy() {
3338    listeners.forEach(function (data) {
3339      data[4]();
3340    });
3341    empty(listeners);
3342  }
3343
3344  return {
3345    bind: bind,
3346    unbind: unbind,
3347    dispatch: dispatch,
3348    destroy: destroy
3349  };
3350}
3351
3352var EVENT_MOUNTED = "mounted";
3353var EVENT_READY = "ready";
3354var EVENT_MOVE = "move";
3355var EVENT_MOVED = "moved";
3356var EVENT_CLICK = "click";
3357var EVENT_ACTIVE = "active";
3358var EVENT_INACTIVE = "inactive";
3359var EVENT_VISIBLE = "visible";
3360var EVENT_HIDDEN = "hidden";
3361var EVENT_REFRESH = "refresh";
3362var EVENT_UPDATED = "updated";
3363var EVENT_RESIZE = "resize";
3364var EVENT_RESIZED = "resized";
3365var EVENT_DRAG = "drag";
3366var EVENT_DRAGGING = "dragging";
3367var EVENT_DRAGGED = "dragged";
3368var EVENT_SCROLL = "scroll";
3369var EVENT_SCROLLED = "scrolled";
3370var EVENT_OVERFLOW = "overflow";
3371var EVENT_DESTROY = "destroy";
3372var EVENT_ARROWS_MOUNTED = "arrows:mounted";
3373var EVENT_ARROWS_UPDATED = "arrows:updated";
3374var EVENT_PAGINATION_MOUNTED = "pagination:mounted";
3375var EVENT_PAGINATION_UPDATED = "pagination:updated";
3376var EVENT_NAVIGATION_MOUNTED = "navigation:mounted";
3377var EVENT_AUTOPLAY_PLAY = "autoplay:play";
3378var EVENT_AUTOPLAY_PLAYING = "autoplay:playing";
3379var EVENT_AUTOPLAY_PAUSE = "autoplay:pause";
3380var EVENT_LAZYLOAD_LOADED = "lazyload:loaded";
3381var EVENT_SLIDE_KEYDOWN = "sk";
3382var EVENT_SHIFTED = "sh";
3383var EVENT_END_INDEX_CHANGED = "ei";
3384
3385function EventInterface(Splide2) {
3386  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
3387  var binder = EventBinder();
3388
3389  function on(events, callback) {
3390    binder.bind(bus, toArray(events).join(" "), function (e) {
3391      callback.apply(callback, isArray(e.detail) ? e.detail : []);
3392    });
3393  }
3394
3395  function emit(event) {
3396    binder.dispatch(bus, event, slice(arguments, 1));
3397  }
3398
3399  if (Splide2) {
3400    Splide2.event.on(EVENT_DESTROY, binder.destroy);
3401  }
3402
3403  return assign(binder, {
3404    bus: bus,
3405    on: on,
3406    off: apply(binder.unbind, bus),
3407    emit: emit
3408  });
3409}
3410
3411function RequestInterval(interval, onInterval, onUpdate, limit) {
3412  var now = Date.now;
3413  var startTime;
3414  var rate = 0;
3415  var id;
3416  var paused = true;
3417  var count = 0;
3418
3419  function update() {
3420    if (!paused) {
3421      rate = interval ? min((now() - startTime) / interval, 1) : 1;
3422      onUpdate && onUpdate(rate);
3423
3424      if (rate >= 1) {
3425        onInterval();
3426        startTime = now();
3427
3428        if (limit && ++count >= limit) {
3429          return pause();
3430        }
3431      }
3432
3433      id = raf(update);
3434    }
3435  }
3436
3437  function start(resume) {
3438    resume || cancel();
3439    startTime = now() - (resume ? rate * interval : 0);
3440    paused = false;
3441    id = raf(update);
3442  }
3443
3444  function pause() {
3445    paused = true;
3446  }
3447
3448  function rewind() {
3449    startTime = now();
3450    rate = 0;
3451
3452    if (onUpdate) {
3453      onUpdate(rate);
3454    }
3455  }
3456
3457  function cancel() {
3458    id && cancelAnimationFrame(id);
3459    rate = 0;
3460    id = 0;
3461    paused = true;
3462  }
3463
3464  function set(time) {
3465    interval = time;
3466  }
3467
3468  function isPaused() {
3469    return paused;
3470  }
3471
3472  return {
3473    start: start,
3474    rewind: rewind,
3475    pause: pause,
3476    cancel: cancel,
3477    set: set,
3478    isPaused: isPaused
3479  };
3480}
3481
3482function State(initialState) {
3483  var state = initialState;
3484
3485  function set(value) {
3486    state = value;
3487  }
3488
3489  function is(states) {
3490    return includes(toArray(states), state);
3491  }
3492
3493  return {
3494    set: set,
3495    is: is
3496  };
3497}
3498
3499function Throttle(func, duration) {
3500  var interval = RequestInterval(duration || 0, func, null, 1);
3501  return function () {
3502    interval.isPaused() && interval.start();
3503  };
3504}
3505
3506function Media(Splide2, Components2, options) {
3507  var state = Splide2.state;
3508  var breakpoints = options.breakpoints || {};
3509  var reducedMotion = options.reducedMotion || {};
3510  var binder = EventBinder();
3511  var queries = [];
3512
3513  function setup() {
3514    var isMin = options.mediaQuery === "min";
3515    ownKeys(breakpoints).sort(function (n, m) {
3516      return isMin ? +n - +m : +m - +n;
3517    }).forEach(function (key) {
3518      register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)");
3519    });
3520    register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);
3521    update();
3522  }
3523
3524  function destroy(completely) {
3525    if (completely) {
3526      binder.destroy();
3527    }
3528  }
3529
3530  function register(options2, query) {
3531    var queryList = matchMedia(query);
3532    binder.bind(queryList, "change", update);
3533    queries.push([options2, queryList]);
3534  }
3535
3536  function update() {
3537    var destroyed = state.is(DESTROYED);
3538    var direction = options.direction;
3539    var merged = queries.reduce(function (merged2, entry) {
3540      return merge(merged2, entry[1].matches ? entry[0] : {});
3541    }, {});
3542    omit(options);
3543    set(merged);
3544
3545    if (options.destroy) {
3546      Splide2.destroy(options.destroy === "completely");
3547    } else if (destroyed) {
3548      destroy(true);
3549      Splide2.mount();
3550    } else {
3551      direction !== options.direction && Splide2.refresh();
3552    }
3553  }
3554
3555  function reduce(enable) {
3556    if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {
3557      enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));
3558    }
3559  }
3560
3561  function set(opts, base, notify) {
3562    merge(options, opts);
3563    base && merge(Object.getPrototypeOf(options), opts);
3564
3565    if (notify || !state.is(CREATED)) {
3566      Splide2.emit(EVENT_UPDATED, options);
3567    }
3568  }
3569
3570  return {
3571    setup: setup,
3572    destroy: destroy,
3573    reduce: reduce,
3574    set: set
3575  };
3576}
3577
3578var ARROW = "Arrow";
3579var ARROW_LEFT = ARROW + "Left";
3580var ARROW_RIGHT = ARROW + "Right";
3581var ARROW_UP = ARROW + "Up";
3582var ARROW_DOWN = ARROW + "Down";
3583var LTR = "ltr";
3584var RTL = "rtl";
3585var TTB = "ttb";
3586var ORIENTATION_MAP = {
3587  width: ["height"],
3588  left: ["top", "right"],
3589  right: ["bottom", "left"],
3590  x: ["y"],
3591  X: ["Y"],
3592  Y: ["X"],
3593  ArrowLeft: [ARROW_UP, ARROW_RIGHT],
3594  ArrowRight: [ARROW_DOWN, ARROW_LEFT]
3595};
3596
3597function Direction(Splide2, Components2, options) {
3598  function resolve(prop, axisOnly, direction) {
3599    direction = direction || options.direction;
3600    var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;
3601    return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {
3602      var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;
3603      return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;
3604    });
3605  }
3606
3607  function orient(value) {
3608    return value * (options.direction === RTL ? 1 : -1);
3609  }
3610
3611  return {
3612    resolve: resolve,
3613    orient: orient
3614  };
3615}
3616
3617var ROLE = "role";
3618var TAB_INDEX = "tabindex";
3619var DISABLED = "disabled";
3620var ARIA_PREFIX = "aria-";
3621var ARIA_CONTROLS = ARIA_PREFIX + "controls";
3622var ARIA_CURRENT = ARIA_PREFIX + "current";
3623var ARIA_SELECTED = ARIA_PREFIX + "selected";
3624var ARIA_LABEL = ARIA_PREFIX + "label";
3625var ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby";
3626var ARIA_HIDDEN = ARIA_PREFIX + "hidden";
3627var ARIA_ORIENTATION = ARIA_PREFIX + "orientation";
3628var ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription";
3629var ARIA_LIVE = ARIA_PREFIX + "live";
3630var ARIA_BUSY = ARIA_PREFIX + "busy";
3631var ARIA_ATOMIC = ARIA_PREFIX + "atomic";
3632var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];
3633var CLASS_PREFIX = PROJECT_CODE + "__";
3634var STATUS_CLASS_PREFIX = "is-";
3635var CLASS_ROOT = PROJECT_CODE;
3636var CLASS_TRACK = CLASS_PREFIX + "track";
3637var CLASS_LIST = CLASS_PREFIX + "list";
3638var CLASS_SLIDE = CLASS_PREFIX + "slide";
3639var CLASS_CLONE = CLASS_SLIDE + "--clone";
3640var CLASS_CONTAINER = CLASS_SLIDE + "__container";
3641var CLASS_ARROWS = CLASS_PREFIX + "arrows";
3642var CLASS_ARROW = CLASS_PREFIX + "arrow";
3643var CLASS_ARROW_PREV = CLASS_ARROW + "--prev";
3644var CLASS_ARROW_NEXT = CLASS_ARROW + "--next";
3645var CLASS_PAGINATION = CLASS_PREFIX + "pagination";
3646var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page";
3647var CLASS_PROGRESS = CLASS_PREFIX + "progress";
3648var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar";
3649var CLASS_TOGGLE = CLASS_PREFIX + "toggle";
3650var CLASS_TOGGLE_PLAY = CLASS_TOGGLE + "__play";
3651var CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + "__pause";
3652var CLASS_SPINNER = CLASS_PREFIX + "spinner";
3653var CLASS_SR = CLASS_PREFIX + "sr";
3654var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized";
3655var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active";
3656var CLASS_PREV = STATUS_CLASS_PREFIX + "prev";
3657var CLASS_NEXT = STATUS_CLASS_PREFIX + "next";
3658var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible";
3659var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading";
3660var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in";
3661var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow";
3662var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];
3663var CLASSES = {
3664  slide: CLASS_SLIDE,
3665  clone: CLASS_CLONE,
3666  arrows: CLASS_ARROWS,
3667  arrow: CLASS_ARROW,
3668  prev: CLASS_ARROW_PREV,
3669  next: CLASS_ARROW_NEXT,
3670  pagination: CLASS_PAGINATION,
3671  page: CLASS_PAGINATION_PAGE,
3672  spinner: CLASS_SPINNER
3673};
3674
3675function closest(from, selector) {
3676  if (isFunction(from.closest)) {
3677    return from.closest(selector);
3678  }
3679
3680  var elm = from;
3681
3682  while (elm && elm.nodeType === 1) {
3683    if (matches(elm, selector)) {
3684      break;
3685    }
3686
3687    elm = elm.parentElement;
3688  }
3689
3690  return elm;
3691}
3692
3693var FRICTION = 5;
3694var LOG_INTERVAL = 200;
3695var POINTER_DOWN_EVENTS = "touchstart mousedown";
3696var POINTER_MOVE_EVENTS = "touchmove mousemove";
3697var POINTER_UP_EVENTS = "touchend touchcancel mouseup click";
3698
3699function Elements(Splide2, Components2, options) {
3700  var _EventInterface = EventInterface(Splide2),
3701      on = _EventInterface.on,
3702      bind = _EventInterface.bind;
3703
3704  var root = Splide2.root;
3705  var i18n = options.i18n;
3706  var elements = {};
3707  var slides = [];
3708  var rootClasses = [];
3709  var trackClasses = [];
3710  var track;
3711  var list;
3712  var isUsingKey;
3713
3714  function setup() {
3715    collect();
3716    init();
3717    update();
3718  }
3719
3720  function mount() {
3721    on(EVENT_REFRESH, destroy);
3722    on(EVENT_REFRESH, setup);
3723    on(EVENT_UPDATED, update);
3724    bind(document, POINTER_DOWN_EVENTS + " keydown", function (e) {
3725      isUsingKey = e.type === "keydown";
3726    }, {
3727      capture: true
3728    });
3729    bind(root, "focusin", function () {
3730      toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);
3731    });
3732  }
3733
3734  function destroy(completely) {
3735    var attrs = ALL_ATTRIBUTES.concat("style");
3736    empty(slides);
3737    removeClass(root, rootClasses);
3738    removeClass(track, trackClasses);
3739    removeAttribute([track, list], attrs);
3740    removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]);
3741  }
3742
3743  function update() {
3744    removeClass(root, rootClasses);
3745    removeClass(track, trackClasses);
3746    rootClasses = getClasses(CLASS_ROOT);
3747    trackClasses = getClasses(CLASS_TRACK);
3748    addClass(root, rootClasses);
3749    addClass(track, trackClasses);
3750    setAttribute(root, ARIA_LABEL, options.label);
3751    setAttribute(root, ARIA_LABELLEDBY, options.labelledby);
3752  }
3753
3754  function collect() {
3755    track = find("." + CLASS_TRACK);
3756    list = child(track, "." + CLASS_LIST);
3757    assert(track && list, "A track/list element is missing.");
3758    push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")"));
3759    forOwn({
3760      arrows: CLASS_ARROWS,
3761      pagination: CLASS_PAGINATION,
3762      prev: CLASS_ARROW_PREV,
3763      next: CLASS_ARROW_NEXT,
3764      bar: CLASS_PROGRESS_BAR,
3765      toggle: CLASS_TOGGLE
3766    }, function (className, key) {
3767      elements[key] = find("." + className);
3768    });
3769    assign(elements, {
3770      root: root,
3771      track: track,
3772      list: list,
3773      slides: slides
3774    });
3775  }
3776
3777  function init() {
3778    var id = root.id || uniqueId(PROJECT_CODE);
3779    var role = options.role;
3780    root.id = id;
3781    track.id = track.id || id + "-track";
3782    list.id = list.id || id + "-list";
3783
3784    if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) {
3785      setAttribute(root, ROLE, role);
3786    }
3787
3788    setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);
3789    setAttribute(list, ROLE, "presentation");
3790  }
3791
3792  function find(selector) {
3793    var elm = query(root, selector);
3794    return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0;
3795  }
3796
3797  function getClasses(base) {
3798    return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE];
3799  }
3800
3801  return assign(elements, {
3802    setup: setup,
3803    mount: mount,
3804    destroy: destroy
3805  });
3806}
3807
3808var SLIDE = "slide";
3809var LOOP = "loop";
3810var FADE = "fade";
3811
3812function Slide$1(Splide2, index, slideIndex, slide) {
3813  var event = EventInterface(Splide2);
3814  var on = event.on,
3815      emit = event.emit,
3816      bind = event.bind;
3817  var Components = Splide2.Components,
3818      root = Splide2.root,
3819      options = Splide2.options;
3820  var isNavigation = options.isNavigation,
3821      updateOnMove = options.updateOnMove,
3822      i18n = options.i18n,
3823      pagination = options.pagination,
3824      slideFocus = options.slideFocus;
3825  var resolve = Components.Direction.resolve;
3826  var styles = getAttribute(slide, "style");
3827  var label = getAttribute(slide, ARIA_LABEL);
3828  var isClone = slideIndex > -1;
3829  var container = child(slide, "." + CLASS_CONTAINER);
3830  var destroyed;
3831
3832  function mount() {
3833    if (!isClone) {
3834      slide.id = root.id + "-slide" + pad(index + 1);
3835      setAttribute(slide, ROLE, pagination ? "tabpanel" : "group");
3836      setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);
3837      setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));
3838    }
3839
3840    listen();
3841  }
3842
3843  function listen() {
3844    bind(slide, "click", apply(emit, EVENT_CLICK, self));
3845    bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self));
3846    on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);
3847    on(EVENT_NAVIGATION_MOUNTED, initNavigation);
3848
3849    if (updateOnMove) {
3850      on(EVENT_MOVE, onMove);
3851    }
3852  }
3853
3854  function destroy() {
3855    destroyed = true;
3856    event.destroy();
3857    removeClass(slide, STATUS_CLASSES);
3858    removeAttribute(slide, ALL_ATTRIBUTES);
3859    setAttribute(slide, "style", styles);
3860    setAttribute(slide, ARIA_LABEL, label || "");
3861  }
3862
3863  function initNavigation() {
3864    var controls = Splide2.splides.map(function (target) {
3865      var Slide2 = target.splide.Components.Slides.getAt(index);
3866      return Slide2 ? Slide2.slide.id : "";
3867    }).join(" ");
3868    setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));
3869    setAttribute(slide, ARIA_CONTROLS, controls);
3870    setAttribute(slide, ROLE, slideFocus ? "button" : "");
3871    slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);
3872  }
3873
3874  function onMove() {
3875    if (!destroyed) {
3876      update();
3877    }
3878  }
3879
3880  function update() {
3881    if (!destroyed) {
3882      var curr = Splide2.index;
3883      updateActivity();
3884      updateVisibility();
3885      toggleClass(slide, CLASS_PREV, index === curr - 1);
3886      toggleClass(slide, CLASS_NEXT, index === curr + 1);
3887    }
3888  }
3889
3890  function updateActivity() {
3891    var active = isActive();
3892
3893    if (active !== hasClass(slide, CLASS_ACTIVE)) {
3894      toggleClass(slide, CLASS_ACTIVE, active);
3895      setAttribute(slide, ARIA_CURRENT, isNavigation && active || "");
3896      emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);
3897    }
3898  }
3899
3900  function updateVisibility() {
3901    var visible = isVisible();
3902    var hidden = !visible && (!isActive() || isClone);
3903
3904    if (!Splide2.state.is([MOVING, SCROLLING])) {
3905      setAttribute(slide, ARIA_HIDDEN, hidden || "");
3906    }
3907
3908    setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : "");
3909
3910    if (slideFocus) {
3911      setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);
3912    }
3913
3914    if (visible !== hasClass(slide, CLASS_VISIBLE)) {
3915      toggleClass(slide, CLASS_VISIBLE, visible);
3916      emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);
3917    }
3918
3919    if (!visible && document.activeElement === slide) {
3920      var Slide2 = Components.Slides.getAt(Splide2.index);
3921      Slide2 && focus(Slide2.slide);
3922    }
3923  }
3924
3925  function style$1(prop, value, useContainer) {
3926    style(useContainer && container || slide, prop, value);
3927  }
3928
3929  function isActive() {
3930    var curr = Splide2.index;
3931    return curr === index || options.cloneStatus && curr === slideIndex;
3932  }
3933
3934  function isVisible() {
3935    if (Splide2.is(FADE)) {
3936      return isActive();
3937    }
3938
3939    var trackRect = rect(Components.Elements.track);
3940    var slideRect = rect(slide);
3941    var left = resolve("left", true);
3942    var right = resolve("right", true);
3943    return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);
3944  }
3945
3946  function isWithin(from, distance) {
3947    var diff = abs(from - index);
3948
3949    if (!isClone && (options.rewind || Splide2.is(LOOP))) {
3950      diff = min(diff, Splide2.length - diff);
3951    }
3952
3953    return diff <= distance;
3954  }
3955
3956  var self = {
3957    index: index,
3958    slideIndex: slideIndex,
3959    slide: slide,
3960    container: container,
3961    isClone: isClone,
3962    mount: mount,
3963    destroy: destroy,
3964    update: update,
3965    style: style$1,
3966    isWithin: isWithin
3967  };
3968  return self;
3969}
3970
3971function Slides(Splide2, Components2, options) {
3972  var _EventInterface2 = EventInterface(Splide2),
3973      on = _EventInterface2.on,
3974      emit = _EventInterface2.emit,
3975      bind = _EventInterface2.bind;
3976
3977  var _Components2$Elements = Components2.Elements,
3978      slides = _Components2$Elements.slides,
3979      list = _Components2$Elements.list;
3980  var Slides2 = [];
3981
3982  function mount() {
3983    init();
3984    on(EVENT_REFRESH, destroy);
3985    on(EVENT_REFRESH, init);
3986  }
3987
3988  function init() {
3989    slides.forEach(function (slide, index) {
3990      register(slide, index, -1);
3991    });
3992  }
3993
3994  function destroy() {
3995    forEach$1(function (Slide2) {
3996      Slide2.destroy();
3997    });
3998    empty(Slides2);
3999  }
4000
4001  function update() {
4002    forEach$1(function (Slide2) {
4003      Slide2.update();
4004    });
4005  }
4006
4007  function register(slide, index, slideIndex) {
4008    var object = Slide$1(Splide2, index, slideIndex, slide);
4009    object.mount();
4010    Slides2.push(object);
4011    Slides2.sort(function (Slide1, Slide2) {
4012      return Slide1.index - Slide2.index;
4013    });
4014  }
4015
4016  function get(excludeClones) {
4017    return excludeClones ? filter(function (Slide2) {
4018      return !Slide2.isClone;
4019    }) : Slides2;
4020  }
4021
4022  function getIn(page) {
4023    var Controller = Components2.Controller;
4024    var index = Controller.toIndex(page);
4025    var max = Controller.hasFocus() ? 1 : options.perPage;
4026    return filter(function (Slide2) {
4027      return between(Slide2.index, index, index + max - 1);
4028    });
4029  }
4030
4031  function getAt(index) {
4032    return filter(index)[0];
4033  }
4034
4035  function add(items, index) {
4036    forEach(items, function (slide) {
4037      if (isString(slide)) {
4038        slide = parseHtml(slide);
4039      }
4040
4041      if (isHTMLElement(slide)) {
4042        var ref = slides[index];
4043        ref ? before(slide, ref) : append(list, slide);
4044        addClass(slide, options.classes.slide);
4045        observeImages(slide, apply(emit, EVENT_RESIZE));
4046      }
4047    });
4048    emit(EVENT_REFRESH);
4049  }
4050
4051  function remove$1(matcher) {
4052    remove(filter(matcher).map(function (Slide2) {
4053      return Slide2.slide;
4054    }));
4055    emit(EVENT_REFRESH);
4056  }
4057
4058  function forEach$1(iteratee, excludeClones) {
4059    get(excludeClones).forEach(iteratee);
4060  }
4061
4062  function filter(matcher) {
4063    return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {
4064      return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);
4065    });
4066  }
4067
4068  function style(prop, value, useContainer) {
4069    forEach$1(function (Slide2) {
4070      Slide2.style(prop, value, useContainer);
4071    });
4072  }
4073
4074  function observeImages(elm, callback) {
4075    var images = queryAll(elm, "img");
4076    var length = images.length;
4077
4078    if (length) {
4079      images.forEach(function (img) {
4080        bind(img, "load error", function () {
4081          if (! --length) {
4082            callback();
4083          }
4084        });
4085      });
4086    } else {
4087      callback();
4088    }
4089  }
4090
4091  function getLength(excludeClones) {
4092    return excludeClones ? slides.length : Slides2.length;
4093  }
4094
4095  function isEnough() {
4096    return Slides2.length > options.perPage;
4097  }
4098
4099  return {
4100    mount: mount,
4101    destroy: destroy,
4102    update: update,
4103    register: register,
4104    get: get,
4105    getIn: getIn,
4106    getAt: getAt,
4107    add: add,
4108    remove: remove$1,
4109    forEach: forEach$1,
4110    filter: filter,
4111    style: style,
4112    getLength: getLength,
4113    isEnough: isEnough
4114  };
4115}
4116
4117function Layout(Splide2, Components2, options) {
4118  var _EventInterface3 = EventInterface(Splide2),
4119      on = _EventInterface3.on,
4120      bind = _EventInterface3.bind,
4121      emit = _EventInterface3.emit;
4122
4123  var Slides = Components2.Slides;
4124  var resolve = Components2.Direction.resolve;
4125  var _Components2$Elements2 = Components2.Elements,
4126      root = _Components2$Elements2.root,
4127      track = _Components2$Elements2.track,
4128      list = _Components2$Elements2.list;
4129  var getAt = Slides.getAt,
4130      styleSlides = Slides.style;
4131  var vertical;
4132  var rootRect;
4133  var overflow;
4134
4135  function mount() {
4136    init();
4137    bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE)));
4138    on([EVENT_UPDATED, EVENT_REFRESH], init);
4139    on(EVENT_RESIZE, resize);
4140  }
4141
4142  function init() {
4143    vertical = options.direction === TTB;
4144    style(root, "maxWidth", unit(options.width));
4145    style(track, resolve("paddingLeft"), cssPadding(false));
4146    style(track, resolve("paddingRight"), cssPadding(true));
4147    resize(true);
4148  }
4149
4150  function resize(force) {
4151    var newRect = rect(root);
4152
4153    if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {
4154      style(track, "height", cssTrackHeight());
4155      styleSlides(resolve("marginRight"), unit(options.gap));
4156      styleSlides("width", cssSlideWidth());
4157      styleSlides("height", cssSlideHeight(), true);
4158      rootRect = newRect;
4159      emit(EVENT_RESIZED);
4160
4161      if (overflow !== (overflow = isOverflow())) {
4162        toggleClass(root, CLASS_OVERFLOW, overflow);
4163        emit(EVENT_OVERFLOW, overflow);
4164      }
4165    }
4166  }
4167
4168  function cssPadding(right) {
4169    var padding = options.padding;
4170    var prop = resolve(right ? "right" : "left");
4171    return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px";
4172  }
4173
4174  function cssTrackHeight() {
4175    var height = "";
4176
4177    if (vertical) {
4178      height = cssHeight();
4179      assert(height, "height or heightRatio is missing.");
4180      height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")";
4181    }
4182
4183    return height;
4184  }
4185
4186  function cssHeight() {
4187    return unit(options.height || rect(list).width * options.heightRatio);
4188  }
4189
4190  function cssSlideWidth() {
4191    return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize());
4192  }
4193
4194  function cssSlideHeight() {
4195    return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());
4196  }
4197
4198  function cssSlideSize() {
4199    var gap = unit(options.gap);
4200    return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")";
4201  }
4202
4203  function listSize() {
4204    return rect(list)[resolve("width")];
4205  }
4206
4207  function slideSize(index, withoutGap) {
4208    var Slide = getAt(index || 0);
4209    return Slide ? rect(Slide.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0;
4210  }
4211
4212  function totalSize(index, withoutGap) {
4213    var Slide = getAt(index);
4214
4215    if (Slide) {
4216      var right = rect(Slide.slide)[resolve("right")];
4217      var left = rect(list)[resolve("left")];
4218      return abs(right - left) + (withoutGap ? 0 : getGap());
4219    }
4220
4221    return 0;
4222  }
4223
4224  function sliderSize(withoutGap) {
4225    return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);
4226  }
4227
4228  function getGap() {
4229    var Slide = getAt(0);
4230    return Slide && parseFloat(style(Slide.slide, resolve("marginRight"))) || 0;
4231  }
4232
4233  function getPadding(right) {
4234    return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0;
4235  }
4236
4237  function isOverflow() {
4238    return Splide2.is(FADE) || sliderSize(true) > listSize();
4239  }
4240
4241  return {
4242    mount: mount,
4243    resize: resize,
4244    listSize: listSize,
4245    slideSize: slideSize,
4246    sliderSize: sliderSize,
4247    totalSize: totalSize,
4248    getPadding: getPadding,
4249    isOverflow: isOverflow
4250  };
4251}
4252
4253var MULTIPLIER = 2;
4254
4255function Clones(Splide2, Components2, options) {
4256  var event = EventInterface(Splide2);
4257  var on = event.on;
4258  var Elements = Components2.Elements,
4259      Slides = Components2.Slides;
4260  var resolve = Components2.Direction.resolve;
4261  var clones = [];
4262  var cloneCount;
4263
4264  function mount() {
4265    on(EVENT_REFRESH, remount);
4266    on([EVENT_UPDATED, EVENT_RESIZE], observe);
4267
4268    if (cloneCount = computeCloneCount()) {
4269      generate(cloneCount);
4270      Components2.Layout.resize(true);
4271    }
4272  }
4273
4274  function remount() {
4275    destroy();
4276    mount();
4277  }
4278
4279  function destroy() {
4280    remove(clones);
4281    empty(clones);
4282    event.destroy();
4283  }
4284
4285  function observe() {
4286    var count = computeCloneCount();
4287
4288    if (cloneCount !== count) {
4289      if (cloneCount < count || !count) {
4290        event.emit(EVENT_REFRESH);
4291      }
4292    }
4293  }
4294
4295  function generate(count) {
4296    var slides = Slides.get().slice();
4297    var length = slides.length;
4298
4299    if (length) {
4300      while (slides.length < count) {
4301        push(slides, slides);
4302      }
4303
4304      push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {
4305        var isHead = index < count;
4306        var clone = cloneDeep(Slide.slide, index);
4307        isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);
4308        push(clones, clone);
4309        Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);
4310      });
4311    }
4312  }
4313
4314  function cloneDeep(elm, index) {
4315    var clone = elm.cloneNode(true);
4316    addClass(clone, options.classes.clone);
4317    clone.id = Splide2.root.id + "-clone" + pad(index + 1);
4318    return clone;
4319  }
4320
4321  function computeCloneCount() {
4322    var clones2 = options.clones;
4323
4324    if (!Splide2.is(LOOP)) {
4325      clones2 = 0;
4326    } else if (isUndefined(clones2)) {
4327      var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0);
4328      var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize);
4329      clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER;
4330    }
4331
4332    return clones2;
4333  }
4334
4335  return {
4336    mount: mount,
4337    destroy: destroy
4338  };
4339}
4340
4341function Move(Splide2, Components2, options) {
4342  var _EventInterface4 = EventInterface(Splide2),
4343      on = _EventInterface4.on,
4344      emit = _EventInterface4.emit;
4345
4346  var set = Splide2.state.set;
4347  var _Components2$Layout = Components2.Layout,
4348      slideSize = _Components2$Layout.slideSize,
4349      getPadding = _Components2$Layout.getPadding,
4350      totalSize = _Components2$Layout.totalSize,
4351      listSize = _Components2$Layout.listSize,
4352      sliderSize = _Components2$Layout.sliderSize;
4353  var _Components2$Directio = Components2.Direction,
4354      resolve = _Components2$Directio.resolve,
4355      orient = _Components2$Directio.orient;
4356  var _Components2$Elements3 = Components2.Elements,
4357      list = _Components2$Elements3.list,
4358      track = _Components2$Elements3.track;
4359  var Transition;
4360
4361  function mount() {
4362    Transition = Components2.Transition;
4363    on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);
4364  }
4365
4366  function reposition() {
4367    if (!Components2.Controller.isBusy()) {
4368      Components2.Scroll.cancel();
4369      jump(Splide2.index);
4370      Components2.Slides.update();
4371    }
4372  }
4373
4374  function move(dest, index, prev, callback) {
4375    if (dest !== index && canShift(dest > prev)) {
4376      cancel();
4377      translate(shift(getPosition(), dest > prev), true);
4378    }
4379
4380    set(MOVING);
4381    emit(EVENT_MOVE, index, prev, dest);
4382    Transition.start(index, function () {
4383      set(IDLE);
4384      emit(EVENT_MOVED, index, prev, dest);
4385      callback && callback();
4386    });
4387  }
4388
4389  function jump(index) {
4390    translate(toPosition(index, true));
4391  }
4392
4393  function translate(position, preventLoop) {
4394    if (!Splide2.is(FADE)) {
4395      var destination = preventLoop ? position : loop(position);
4396      style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)");
4397      position !== destination && emit(EVENT_SHIFTED);
4398    }
4399  }
4400
4401  function loop(position) {
4402    if (Splide2.is(LOOP)) {
4403      var index = toIndex(position);
4404      var exceededMax = index > Components2.Controller.getEnd();
4405      var exceededMin = index < 0;
4406
4407      if (exceededMin || exceededMax) {
4408        position = shift(position, exceededMax);
4409      }
4410    }
4411
4412    return position;
4413  }
4414
4415  function shift(position, backwards) {
4416    var excess = position - getLimit(backwards);
4417    var size = sliderSize();
4418    position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);
4419    return position;
4420  }
4421
4422  function cancel() {
4423    translate(getPosition(), true);
4424    Transition.cancel();
4425  }
4426
4427  function toIndex(position) {
4428    var Slides = Components2.Slides.get();
4429    var index = 0;
4430    var minDistance = Infinity;
4431
4432    for (var i = 0; i < Slides.length; i++) {
4433      var slideIndex = Slides[i].index;
4434      var distance = abs(toPosition(slideIndex, true) - position);
4435
4436      if (distance <= minDistance) {
4437        minDistance = distance;
4438        index = slideIndex;
4439      } else {
4440        break;
4441      }
4442    }
4443
4444    return index;
4445  }
4446
4447  function toPosition(index, trimming) {
4448    var position = orient(totalSize(index - 1) - offset(index));
4449    return trimming ? trim(position) : position;
4450  }
4451
4452  function getPosition() {
4453    var left = resolve("left");
4454    return rect(list)[left] - rect(track)[left] + orient(getPadding(false));
4455  }
4456
4457  function trim(position) {
4458    if (options.trimSpace && Splide2.is(SLIDE)) {
4459      position = clamp(position, 0, orient(sliderSize(true) - listSize()));
4460    }
4461
4462    return position;
4463  }
4464
4465  function offset(index) {
4466    var focus = options.focus;
4467    return focus === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;
4468  }
4469
4470  function getLimit(max) {
4471    return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);
4472  }
4473
4474  function canShift(backwards) {
4475    var shifted = orient(shift(getPosition(), backwards));
4476    return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")];
4477  }
4478
4479  function exceededLimit(max, position) {
4480    position = isUndefined(position) ? getPosition() : position;
4481    var exceededMin = max !== true && orient(position) < orient(getLimit(false));
4482    var exceededMax = max !== false && orient(position) > orient(getLimit(true));
4483    return exceededMin || exceededMax;
4484  }
4485
4486  return {
4487    mount: mount,
4488    move: move,
4489    jump: jump,
4490    translate: translate,
4491    shift: shift,
4492    cancel: cancel,
4493    toIndex: toIndex,
4494    toPosition: toPosition,
4495    getPosition: getPosition,
4496    getLimit: getLimit,
4497    exceededLimit: exceededLimit,
4498    reposition: reposition
4499  };
4500}
4501
4502function Controller(Splide2, Components2, options) {
4503  var _EventInterface5 = EventInterface(Splide2),
4504      on = _EventInterface5.on,
4505      emit = _EventInterface5.emit;
4506
4507  var Move = Components2.Move;
4508  var getPosition = Move.getPosition,
4509      getLimit = Move.getLimit,
4510      toPosition = Move.toPosition;
4511  var _Components2$Slides = Components2.Slides,
4512      isEnough = _Components2$Slides.isEnough,
4513      getLength = _Components2$Slides.getLength;
4514  var omitEnd = options.omitEnd;
4515  var isLoop = Splide2.is(LOOP);
4516  var isSlide = Splide2.is(SLIDE);
4517  var getNext = apply(getAdjacent, false);
4518  var getPrev = apply(getAdjacent, true);
4519  var currIndex = options.start || 0;
4520  var endIndex;
4521  var prevIndex = currIndex;
4522  var slideCount;
4523  var perMove;
4524  var perPage;
4525
4526  function mount() {
4527    init();
4528    on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);
4529    on(EVENT_RESIZED, onResized);
4530  }
4531
4532  function init() {
4533    slideCount = getLength(true);
4534    perMove = options.perMove;
4535    perPage = options.perPage;
4536    endIndex = getEnd();
4537    var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);
4538
4539    if (index !== currIndex) {
4540      currIndex = index;
4541      Move.reposition();
4542    }
4543  }
4544
4545  function onResized() {
4546    if (endIndex !== getEnd()) {
4547      emit(EVENT_END_INDEX_CHANGED);
4548    }
4549  }
4550
4551  function go(control, allowSameIndex, callback) {
4552    if (!isBusy()) {
4553      var dest = parse(control);
4554      var index = loop(dest);
4555
4556      if (index > -1 && (allowSameIndex || index !== currIndex)) {
4557        setIndex(index);
4558        Move.move(dest, index, prevIndex, callback);
4559      }
4560    }
4561  }
4562
4563  function scroll(destination, duration, snap, callback) {
4564    Components2.Scroll.scroll(destination, duration, snap, function () {
4565      var index = loop(Move.toIndex(getPosition()));
4566      setIndex(omitEnd ? min(index, endIndex) : index);
4567      callback && callback();
4568    });
4569  }
4570
4571  function parse(control) {
4572    var index = currIndex;
4573
4574    if (isString(control)) {
4575      var _ref = control.match(/([+\
vendor: 10,171 bytes, lines 4575-4965
4575\-<>])(\\d+)?/) || [],
4576          indicator = _ref[1],
4577          number = _ref[2];
4578
4579      if (indicator === "+" || indicator === "-") {
4580        index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex);
4581      } else if (indicator === ">") {
4582        index = number ? toIndex(+number) : getNext(true);
4583      } else if (indicator === "<") {
4584        index = getPrev(true);
4585      }
4586    } else {
4587      index = isLoop ? control : clamp(control, 0, endIndex);
4588    }
4589
4590    return index;
4591  }
4592
4593  function getAdjacent(prev, destination) {
4594    var number = perMove || (hasFocus() ? 1 : perPage);
4595    var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));
4596
4597    if (dest === -1 && isSlide) {
4598      if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {
4599        return prev ? 0 : endIndex;
4600      }
4601    }
4602
4603    return destination ? dest : loop(dest);
4604  }
4605
4606  function computeDestIndex(dest, from, snapPage) {
4607    if (isEnough() || hasFocus()) {
4608      var index = computeMovableDestIndex(dest);
4609
4610      if (index !== dest) {
4611        from = dest;
4612        dest = index;
4613        snapPage = false;
4614      }
4615
4616      if (dest < 0 || dest > endIndex) {
4617        if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {
4618          dest = toIndex(toPage(dest));
4619        } else {
4620          if (isLoop) {
4621            dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;
4622          } else if (options.rewind) {
4623            dest = dest < 0 ? endIndex : 0;
4624          } else {
4625            dest = -1;
4626          }
4627        }
4628      } else {
4629        if (snapPage && dest !== from) {
4630          dest = toIndex(toPage(from) + (dest < from ? -1 : 1));
4631        }
4632      }
4633    } else {
4634      dest = -1;
4635    }
4636
4637    return dest;
4638  }
4639
4640  function computeMovableDestIndex(dest) {
4641    if (isSlide && options.trimSpace === "move" && dest !== currIndex) {
4642      var position = getPosition();
4643
4644      while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {
4645        dest < currIndex ? --dest : ++dest;
4646      }
4647    }
4648
4649    return dest;
4650  }
4651
4652  function loop(index) {
4653    return isLoop ? (index + slideCount) % slideCount || 0 : index;
4654  }
4655
4656  function getEnd() {
4657    var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);
4658
4659    while (omitEnd && end-- > 0) {
4660      if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {
4661        end++;
4662        break;
4663      }
4664    }
4665
4666    return clamp(end, 0, slideCount - 1);
4667  }
4668
4669  function toIndex(page) {
4670    return clamp(hasFocus() ? page : perPage * page, 0, endIndex);
4671  }
4672
4673  function toPage(index) {
4674    return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);
4675  }
4676
4677  function toDest(destination) {
4678    var closest = Move.toIndex(destination);
4679    return isSlide ? clamp(closest, 0, endIndex) : closest;
4680  }
4681
4682  function setIndex(index) {
4683    if (index !== currIndex) {
4684      prevIndex = currIndex;
4685      currIndex = index;
4686    }
4687  }
4688
4689  function getIndex(prev) {
4690    return prev ? prevIndex : currIndex;
4691  }
4692
4693  function hasFocus() {
4694    return !isUndefined(options.focus) || options.isNavigation;
4695  }
4696
4697  function isBusy() {
4698    return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;
4699  }
4700
4701  return {
4702    mount: mount,
4703    go: go,
4704    scroll: scroll,
4705    getNext: getNext,
4706    getPrev: getPrev,
4707    getAdjacent: getAdjacent,
4708    getEnd: getEnd,
4709    setIndex: setIndex,
4710    getIndex: getIndex,
4711    toIndex: toIndex,
4712    toPage: toPage,
4713    toDest: toDest,
4714    hasFocus: hasFocus,
4715    isBusy: isBusy
4716  };
4717}
4718
4719var XML_NAME_SPACE = "http://www.w3.org/2000/svg";
4720var PATH = "m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z";
4721var SIZE = 40;
4722
4723function Arrows(Splide2, Components2, options) {
4724  var event = EventInterface(Splide2);
4725  var on = event.on,
4726      bind = event.bind,
4727      emit = event.emit;
4728  var classes = options.classes,
4729      i18n = options.i18n;
4730  var Elements = Components2.Elements,
4731      Controller = Components2.Controller;
4732  var placeholder = Elements.arrows,
4733      track = Elements.track;
4734  var wrapper = placeholder;
4735  var prev = Elements.prev;
4736  var next = Elements.next;
4737  var created;
4738  var wrapperClasses;
4739  var arrows = {};
4740
4741  function mount() {
4742    init();
4743    on(EVENT_UPDATED, remount);
4744  }
4745
4746  function remount() {
4747    destroy();
4748    mount();
4749  }
4750
4751  function init() {
4752    var enabled = options.arrows;
4753
4754    if (enabled && !(prev && next)) {
4755      createArrows();
4756    }
4757
4758    if (prev && next) {
4759      assign(arrows, {
4760        prev: prev,
4761        next: next
4762      });
4763      display(wrapper, enabled ? "" : "none");
4764      addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction);
4765
4766      if (enabled) {
4767        listen();
4768        update();
4769        setAttribute([prev, next], ARIA_CONTROLS, track.id);
4770        emit(EVENT_ARROWS_MOUNTED, prev, next);
4771      }
4772    }
4773  }
4774
4775  function destroy() {
4776    event.destroy();
4777    removeClass(wrapper, wrapperClasses);
4778
4779    if (created) {
4780      remove(placeholder ? [prev, next] : wrapper);
4781      prev = next = null;
4782    } else {
4783      removeAttribute([prev, next], ALL_ATTRIBUTES);
4784    }
4785  }
4786
4787  function listen() {
4788    on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);
4789    bind(next, "click", apply(go, ">"));
4790    bind(prev, "click", apply(go, "<"));
4791  }
4792
4793  function go(control) {
4794    Controller.go(control, true);
4795  }
4796
4797  function createArrows() {
4798    wrapper = placeholder || create("div", classes.arrows);
4799    prev = createArrow(true);
4800    next = createArrow(false);
4801    created = true;
4802    append(wrapper, [prev, next]);
4803    !placeholder && before(wrapper, track);
4804  }
4805
4806  function createArrow(prev2) {
4807    var arrow = "<button class=\\"" + classes.arrow + " " + (prev2 ? classes.prev : classes.next) + "\\" type=\\"button\\"><svg xmlns=\\"" + XML_NAME_SPACE + "\\" viewBox=\\"0 0 " + SIZE + " " + SIZE + "\\" width=\\"" + SIZE + "\\" height=\\"" + SIZE + "\\" focusable=\\"false\\"><path d=\\"" + (options.arrowPath || PATH) + "\\" />";
4808    return parseHtml(arrow);
4809  }
4810
4811  function update() {
4812    if (prev && next) {
4813      var index = Splide2.index;
4814      var prevIndex = Controller.getPrev();
4815      var nextIndex = Controller.getNext();
4816      var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;
4817      var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;
4818      prev.disabled = prevIndex < 0;
4819      next.disabled = nextIndex < 0;
4820      setAttribute(prev, ARIA_LABEL, prevLabel);
4821      setAttribute(next, ARIA_LABEL, nextLabel);
4822      emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);
4823    }
4824  }
4825
4826  return {
4827    arrows: arrows,
4828    mount: mount,
4829    destroy: destroy,
4830    update: update
4831  };
4832}
4833
4834var INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval";
4835
4836function Autoplay(Splide2, Components2, options) {
4837  var _EventInterface6 = EventInterface(Splide2),
4838      on = _EventInterface6.on,
4839      bind = _EventInterface6.bind,
4840      emit = _EventInterface6.emit;
4841
4842  var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame);
4843  var isPaused = interval.isPaused;
4844  var Elements = Components2.Elements,
4845      _Components2$Elements4 = Components2.Elements,
4846      root = _Components2$Elements4.root,
4847      toggle = _Components2$Elements4.toggle;
4848  var autoplay = options.autoplay;
4849  var hovered;
4850  var focused;
4851  var stopped = autoplay === "pause";
4852
4853  function mount() {
4854    if (autoplay) {
4855      listen();
4856      toggle && setAttribute(toggle, ARIA_CONTROLS, Elements.track.id);
4857      stopped || play();
4858      update();
4859    }
4860  }
4861
4862  function listen() {
4863    if (options.pauseOnHover) {
4864      bind(root, "mouseenter mouseleave", function (e) {
4865        hovered = e.type === "mouseenter";
4866        autoToggle();
4867      });
4868    }
4869
4870    if (options.pauseOnFocus) {
4871      bind(root, "focusin focusout", function (e) {
4872        focused = e.type === "focusin";
4873        autoToggle();
4874      });
4875    }
4876
4877    if (toggle) {
4878      bind(toggle, "click", function () {
4879        stopped ? play() : pause(true);
4880      });
4881    }
4882
4883    on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind);
4884    on(EVENT_MOVE, onMove);
4885  }
4886
4887  function play() {
4888    if (isPaused() && Components2.Slides.isEnough()) {
4889      interval.start(!options.resetProgress);
4890      focused = hovered = stopped = false;
4891      update();
4892      emit(EVENT_AUTOPLAY_PLAY);
4893    }
4894  }
4895
4896  function pause(stop) {
4897    if (stop === void 0) {
4898      stop = true;
4899    }
4900
4901    stopped = !!stop;
4902    update();
4903
4904    if (!isPaused()) {
4905      interval.pause();
4906      emit(EVENT_AUTOPLAY_PAUSE);
4907    }
4908  }
4909
4910  function autoToggle() {
4911    if (!stopped) {
4912      hovered || focused ? pause(false) : play();
4913    }
4914  }
4915
4916  function update() {
4917    if (toggle) {
4918      toggleClass(toggle, CLASS_ACTIVE, !stopped);
4919      setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? "play" : "pause"]);
4920    }
4921  }
4922
4923  function onAnimationFrame(rate) {
4924    var bar = Elements.bar;
4925    bar && style(bar, "width", rate * 100 + "%");
4926    emit(EVENT_AUTOPLAY_PLAYING, rate);
4927  }
4928
4929  function onMove(index) {
4930    var Slide = Components2.Slides.getAt(index);
4931    interval.set(Slide && +getAttribute(Slide.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval);
4932  }
4933
4934  return {
4935    mount: mount,
4936    destroy: interval.cancel,
4937    play: play,
4938    pause: pause,
4939    isPaused: isPaused
4940  };
4941}
4942
4943function Cover(Splide2, Components2, options) {
4944  var _EventInterface7 = EventInterface(Splide2),
4945      on = _EventInterface7.on;
4946
4947  function mount() {
4948    if (options.cover) {
4949      on(EVENT_LAZYLOAD_LOADED, apply(toggle, true));
4950      on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true));
4951    }
4952  }
4953
4954  function cover(cover2) {
4955    Components2.Slides.forEach(function (Slide) {
4956      var img = child(Slide.container || Slide.slide, "img");
4957
4958      if (img && img.src) {
4959        toggle(cover2, img, Slide);
4960      }
4961    });
4962  }
4963
4964  function toggle(cover2, img, Slide) {
4965    Slide.style("background", cover2 ? "center/cover no-repeat url(\\"" + img.src + "\
vendor: 37,645 bytes, lines 4965-6424
4965\")" : "", true);
4966    display(img, cover2 ? "none" : "");
4967  }
4968
4969  return {
4970    mount: mount,
4971    destroy: apply(cover, false)
4972  };
4973}
4974
4975var BOUNCE_DIFF_THRESHOLD = 10;
4976var BOUNCE_DURATION = 600;
4977var FRICTION_FACTOR = 0.6;
4978var BASE_VELOCITY = 1.5;
4979var MIN_DURATION = 800;
4980
4981function Scroll(Splide2, Components2, options) {
4982  var _EventInterface8 = EventInterface(Splide2),
4983      on = _EventInterface8.on,
4984      emit = _EventInterface8.emit;
4985
4986  var set = Splide2.state.set;
4987  var Move = Components2.Move;
4988  var getPosition = Move.getPosition,
4989      getLimit = Move.getLimit,
4990      exceededLimit = Move.exceededLimit,
4991      translate = Move.translate;
4992  var isSlide = Splide2.is(SLIDE);
4993  var interval;
4994  var callback;
4995  var friction = 1;
4996
4997  function mount() {
4998    on(EVENT_MOVE, clear);
4999    on([EVENT_UPDATED, EVENT_REFRESH], cancel);
5000  }
5001
5002  function scroll(destination, duration, snap, onScrolled, noConstrain) {
5003    var from = getPosition();
5004    clear();
5005
5006    if (snap && (!isSlide || !exceededLimit())) {
5007      var size = Components2.Layout.sliderSize();
5008      var offset = sign(destination) * size * floor(abs(destination) / size) || 0;
5009      destination = Move.toPosition(Components2.Controller.toDest(destination % size)) + offset;
5010    }
5011
5012    var noDistance = approximatelyEqual(from, destination, 1);
5013    friction = 1;
5014    duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION);
5015    callback = onScrolled;
5016    interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1);
5017    set(SCROLLING);
5018    emit(EVENT_SCROLL);
5019    interval.start();
5020  }
5021
5022  function onEnd() {
5023    set(IDLE);
5024    callback && callback();
5025    emit(EVENT_SCROLLED);
5026  }
5027
5028  function update(from, to, noConstrain, rate) {
5029    var position = getPosition();
5030    var target = from + (to - from) * easing(rate);
5031    var diff = (target - position) * friction;
5032    translate(position + diff);
5033
5034    if (isSlide && !noConstrain && exceededLimit()) {
5035      friction *= FRICTION_FACTOR;
5036
5037      if (abs(diff) < BOUNCE_DIFF_THRESHOLD) {
5038        scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true);
5039      }
5040    }
5041  }
5042
5043  function clear() {
5044    if (interval) {
5045      interval.cancel();
5046    }
5047  }
5048
5049  function cancel() {
5050    if (interval && !interval.isPaused()) {
5051      clear();
5052      onEnd();
5053    }
5054  }
5055
5056  function easing(t) {
5057    var easingFunc = options.easingFunc;
5058    return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4);
5059  }
5060
5061  return {
5062    mount: mount,
5063    destroy: clear,
5064    scroll: scroll,
5065    cancel: cancel
5066  };
5067}
5068
5069var SCROLL_LISTENER_OPTIONS = {
5070  passive: false,
5071  capture: true
5072};
5073
5074function Drag(Splide2, Components2, options) {
5075  var _EventInterface9 = EventInterface(Splide2),
5076      on = _EventInterface9.on,
5077      emit = _EventInterface9.emit,
5078      bind = _EventInterface9.bind,
5079      unbind = _EventInterface9.unbind;
5080
5081  var state = Splide2.state;
5082  var Move = Components2.Move,
5083      Scroll = Components2.Scroll,
5084      Controller = Components2.Controller,
5085      track = Components2.Elements.track,
5086      reduce = Components2.Media.reduce;
5087  var _Components2$Directio2 = Components2.Direction,
5088      resolve = _Components2$Directio2.resolve,
5089      orient = _Components2$Directio2.orient;
5090  var getPosition = Move.getPosition,
5091      exceededLimit = Move.exceededLimit;
5092  var basePosition;
5093  var baseEvent;
5094  var prevBaseEvent;
5095  var isFree;
5096  var dragging;
5097  var exceeded = false;
5098  var clickPrevented;
5099  var disabled;
5100  var target;
5101
5102  function mount() {
5103    bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS);
5104    bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS);
5105    bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS);
5106    bind(track, "click", onClick, {
5107      capture: true
5108    });
5109    bind(track, "dragstart", prevent);
5110    on([EVENT_MOUNTED, EVENT_UPDATED], init);
5111  }
5112
5113  function init() {
5114    var drag = options.drag;
5115    disable(!drag);
5116    isFree = drag === "free";
5117  }
5118
5119  function onPointerDown(e) {
5120    clickPrevented = false;
5121
5122    if (!disabled) {
5123      var isTouch = isTouchEvent(e);
5124
5125      if (isDraggable(e.target) && (isTouch || !e.button)) {
5126        if (!Controller.isBusy()) {
5127          target = isTouch ? track : window;
5128          dragging = state.is([MOVING, SCROLLING]);
5129          prevBaseEvent = null;
5130          bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS);
5131          bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS);
5132          Move.cancel();
5133          Scroll.cancel();
5134          save(e);
5135        } else {
5136          prevent(e, true);
5137        }
5138      }
5139    }
5140  }
5141
5142  function onPointerMove(e) {
5143    if (!state.is(DRAGGING)) {
5144      state.set(DRAGGING);
5145      emit(EVENT_DRAG);
5146    }
5147
5148    if (e.cancelable) {
5149      if (dragging) {
5150        Move.translate(basePosition + constrain(diffCoord(e)));
5151        var expired = diffTime(e) > LOG_INTERVAL;
5152        var hasExceeded = exceeded !== (exceeded = exceededLimit());
5153
5154        if (expired || hasExceeded) {
5155          save(e);
5156        }
5157
5158        clickPrevented = true;
5159        emit(EVENT_DRAGGING);
5160        prevent(e);
5161      } else if (isSliderDirection(e)) {
5162        dragging = shouldStart(e);
5163        prevent(e);
5164      }
5165    }
5166  }
5167
5168  function onPointerUp(e) {
5169    if (state.is(DRAGGING)) {
5170      state.set(IDLE);
5171      emit(EVENT_DRAGGED);
5172    }
5173
5174    if (dragging) {
5175      move(e);
5176      prevent(e);
5177    }
5178
5179    unbind(target, POINTER_MOVE_EVENTS, onPointerMove);
5180    unbind(target, POINTER_UP_EVENTS, onPointerUp);
5181    dragging = false;
5182  }
5183
5184  function onClick(e) {
5185    if (!disabled && clickPrevented) {
5186      prevent(e, true);
5187    }
5188  }
5189
5190  function save(e) {
5191    prevBaseEvent = baseEvent;
5192    baseEvent = e;
5193    basePosition = getPosition();
5194  }
5195
5196  function move(e) {
5197    var velocity = computeVelocity(e);
5198    var destination = computeDestination(velocity);
5199    var rewind = options.rewind && options.rewindByDrag;
5200    reduce(false);
5201
5202    if (isFree) {
5203      Controller.scroll(destination, 0, options.snap);
5204    } else if (Splide2.is(FADE)) {
5205      Controller.go(orient(sign(velocity)) < 0 ? rewind ? "<" : "-" : rewind ? ">" : "+");
5206    } else if (Splide2.is(SLIDE) && exceeded && rewind) {
5207      Controller.go(exceededLimit(true) ? ">" : "<");
5208    } else {
5209      Controller.go(Controller.toDest(destination), true);
5210    }
5211
5212    reduce(true);
5213  }
5214
5215  function shouldStart(e) {
5216    var thresholds = options.dragMinThreshold;
5217    var isObj = isObject(thresholds);
5218    var mouse = isObj && thresholds.mouse || 0;
5219    var touch = (isObj ? thresholds.touch : +thresholds) || 10;
5220    return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse);
5221  }
5222
5223  function isSliderDirection(e) {
5224    return abs(diffCoord(e)) > abs(diffCoord(e, true));
5225  }
5226
5227  function computeVelocity(e) {
5228    if (Splide2.is(LOOP) || !exceeded) {
5229      var time = diffTime(e);
5230
5231      if (time && time < LOG_INTERVAL) {
5232        return diffCoord(e) / time;
5233      }
5234    }
5235
5236    return 0;
5237  }
5238
5239  function computeDestination(velocity) {
5240    return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1));
5241  }
5242
5243  function diffCoord(e, orthogonal) {
5244    return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal);
5245  }
5246
5247  function diffTime(e) {
5248    return timeOf(e) - timeOf(getBaseEvent(e));
5249  }
5250
5251  function getBaseEvent(e) {
5252    return baseEvent === e && prevBaseEvent || baseEvent;
5253  }
5254
5255  function coordOf(e, orthogonal) {
5256    return (isTouchEvent(e) ? e.changedTouches[0] : e)["page" + resolve(orthogonal ? "Y" : "X")];
5257  }
5258
5259  function constrain(diff) {
5260    return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1);
5261  }
5262
5263  function isDraggable(target2) {
5264    var noDrag = options.noDrag;
5265    return !matches(target2, "." + CLASS_PAGINATION_PAGE + ", ." + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag));
5266  }
5267
5268  function isTouchEvent(e) {
5269    return typeof TouchEvent !== "undefined" && e instanceof TouchEvent;
5270  }
5271
5272  function isDragging() {
5273    return dragging;
5274  }
5275
5276  function disable(value) {
5277    disabled = value;
5278  }
5279
5280  return {
5281    mount: mount,
5282    disable: disable,
5283    isDragging: isDragging
5284  };
5285}
5286
5287var NORMALIZATION_MAP = {
5288  Spacebar: " ",
5289  Right: ARROW_RIGHT,
5290  Left: ARROW_LEFT,
5291  Up: ARROW_UP,
5292  Down: ARROW_DOWN
5293};
5294
5295function normalizeKey(key) {
5296  key = isString(key) ? key : key.key;
5297  return NORMALIZATION_MAP[key] || key;
5298}
5299
5300var KEYBOARD_EVENT = "keydown";
5301
5302function Keyboard(Splide2, Components2, options) {
5303  var _EventInterface10 = EventInterface(Splide2),
5304      on = _EventInterface10.on,
5305      bind = _EventInterface10.bind,
5306      unbind = _EventInterface10.unbind;
5307
5308  var root = Splide2.root;
5309  var resolve = Components2.Direction.resolve;
5310  var target;
5311  var disabled;
5312
5313  function mount() {
5314    init();
5315    on(EVENT_UPDATED, destroy);
5316    on(EVENT_UPDATED, init);
5317    on(EVENT_MOVE, onMove);
5318  }
5319
5320  function init() {
5321    var keyboard = options.keyboard;
5322
5323    if (keyboard) {
5324      target = keyboard === "global" ? window : root;
5325      bind(target, KEYBOARD_EVENT, onKeydown);
5326    }
5327  }
5328
5329  function destroy() {
5330    unbind(target, KEYBOARD_EVENT);
5331  }
5332
5333  function disable(value) {
5334    disabled = value;
5335  }
5336
5337  function onMove() {
5338    var _disabled = disabled;
5339    disabled = true;
5340    nextTick(function () {
5341      disabled = _disabled;
5342    });
5343  }
5344
5345  function onKeydown(e) {
5346    if (!disabled) {
5347      var key = normalizeKey(e);
5348
5349      if (key === resolve(ARROW_LEFT)) {
5350        Splide2.go("<");
5351      } else if (key === resolve(ARROW_RIGHT)) {
5352        Splide2.go(">");
5353      }
5354    }
5355  }
5356
5357  return {
5358    mount: mount,
5359    destroy: destroy,
5360    disable: disable
5361  };
5362}
5363
5364var SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-lazy";
5365var SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset";
5366var IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]";
5367
5368function LazyLoad(Splide2, Components2, options) {
5369  var _EventInterface11 = EventInterface(Splide2),
5370      on = _EventInterface11.on,
5371      off = _EventInterface11.off,
5372      bind = _EventInterface11.bind,
5373      emit = _EventInterface11.emit;
5374
5375  var isSequential = options.lazyLoad === "sequential";
5376  var events = [EVENT_MOVED, EVENT_SCROLLED];
5377  var entries = [];
5378
5379  function mount() {
5380    if (options.lazyLoad) {
5381      init();
5382      on(EVENT_REFRESH, init);
5383    }
5384  }
5385
5386  function init() {
5387    empty(entries);
5388    register();
5389
5390    if (isSequential) {
5391      loadNext();
5392    } else {
5393      off(events);
5394      on(events, check);
5395      check();
5396    }
5397  }
5398
5399  function register() {
5400    Components2.Slides.forEach(function (Slide) {
5401      queryAll(Slide.slide, IMAGE_SELECTOR).forEach(function (img) {
5402        var src = getAttribute(img, SRC_DATA_ATTRIBUTE);
5403        var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE);
5404
5405        if (src !== img.src || srcset !== img.srcset) {
5406          var className = options.classes.spinner;
5407          var parent = img.parentElement;
5408          var spinner = child(parent, "." + className) || create("span", className, parent);
5409          entries.push([img, Slide, spinner]);
5410          img.src || display(img, "none");
5411        }
5412      });
5413    });
5414  }
5415
5416  function check() {
5417    entries = entries.filter(function (data) {
5418      var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1;
5419      return data[1].isWithin(Splide2.index, distance) ? load(data) : true;
5420    });
5421    entries.length || off(events);
5422  }
5423
5424  function load(data) {
5425    var img = data[0];
5426    addClass(data[1].slide, CLASS_LOADING);
5427    bind(img, "load error", apply(onLoad, data));
5428    setAttribute(img, "src", getAttribute(img, SRC_DATA_ATTRIBUTE));
5429    setAttribute(img, "srcset", getAttribute(img, SRCSET_DATA_ATTRIBUTE));
5430    removeAttribute(img, SRC_DATA_ATTRIBUTE);
5431    removeAttribute(img, SRCSET_DATA_ATTRIBUTE);
5432  }
5433
5434  function onLoad(data, e) {
5435    var img = data[0],
5436        Slide = data[1];
5437    removeClass(Slide.slide, CLASS_LOADING);
5438
5439    if (e.type !== "error") {
5440      remove(data[2]);
5441      display(img, "");
5442      emit(EVENT_LAZYLOAD_LOADED, img, Slide);
5443      emit(EVENT_RESIZE);
5444    }
5445
5446    isSequential && loadNext();
5447  }
5448
5449  function loadNext() {
5450    entries.length && load(entries.shift());
5451  }
5452
5453  return {
5454    mount: mount,
5455    destroy: apply(empty, entries),
5456    check: check
5457  };
5458}
5459
5460function Pagination(Splide2, Components2, options) {
5461  var event = EventInterface(Splide2);
5462  var on = event.on,
5463      emit = event.emit,
5464      bind = event.bind;
5465  var Slides = Components2.Slides,
5466      Elements = Components2.Elements,
5467      Controller = Components2.Controller;
5468  var hasFocus = Controller.hasFocus,
5469      getIndex = Controller.getIndex,
5470      go = Controller.go;
5471  var resolve = Components2.Direction.resolve;
5472  var placeholder = Elements.pagination;
5473  var items = [];
5474  var list;
5475  var paginationClasses;
5476
5477  function mount() {
5478    destroy();
5479    on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);
5480    var enabled = options.pagination;
5481    placeholder && display(placeholder, enabled ? "" : "none");
5482
5483    if (enabled) {
5484      on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update);
5485      createPagination();
5486      update();
5487      emit(EVENT_PAGINATION_MOUNTED, {
5488        list: list,
5489        items: items
5490      }, getAt(Splide2.index));
5491    }
5492  }
5493
5494  function destroy() {
5495    if (list) {
5496      remove(placeholder ? slice(list.children) : list);
5497      removeClass(list, paginationClasses);
5498      empty(items);
5499      list = null;
5500    }
5501
5502    event.destroy();
5503  }
5504
5505  function createPagination() {
5506    var length = Splide2.length;
5507    var classes = options.classes,
5508        i18n = options.i18n,
5509        perPage = options.perPage;
5510    var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage);
5511    list = placeholder || create("ul", classes.pagination, Elements.track.parentElement);
5512    addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection());
5513    setAttribute(list, ROLE, "tablist");
5514    setAttribute(list, ARIA_LABEL, i18n.select);
5515    setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? "vertical" : "");
5516
5517    for (var i = 0; i < max; i++) {
5518      var li = create("li", null, list);
5519      var button = create("button", {
5520        class: classes.page,
5521        type: "button"
5522      }, li);
5523      var controls = Slides.getIn(i).map(function (Slide) {
5524        return Slide.slide.id;
5525      });
5526      var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX;
5527      bind(button, "click", apply(onClick, i));
5528
5529      if (options.paginationKeyboard) {
5530        bind(button, "keydown", apply(onKeydown, i));
5531      }
5532
5533      setAttribute(li, ROLE, "presentation");
5534      setAttribute(button, ROLE, "tab");
5535      setAttribute(button, ARIA_CONTROLS, controls.join(" "));
5536      setAttribute(button, ARIA_LABEL, format(text, i + 1));
5537      setAttribute(button, TAB_INDEX, -1);
5538      items.push({
5539        li: li,
5540        button: button,
5541        page: i
5542      });
5543    }
5544  }
5545
5546  function onClick(page) {
5547    go(">" + page, true);
5548  }
5549
5550  function onKeydown(page, e) {
5551    var length = items.length;
5552    var key = normalizeKey(e);
5553    var dir = getDirection();
5554    var nextPage = -1;
5555
5556    if (key === resolve(ARROW_RIGHT, false, dir)) {
5557      nextPage = ++page % length;
5558    } else if (key === resolve(ARROW_LEFT, false, dir)) {
5559      nextPage = (--page + length) % length;
5560    } else if (key === "Home") {
5561      nextPage = 0;
5562    } else if (key === "End") {
5563      nextPage = length - 1;
5564    }
5565
5566    var item = items[nextPage];
5567
5568    if (item) {
5569      focus(item.button);
5570      go(">" + nextPage);
5571      prevent(e, true);
5572    }
5573  }
5574
5575  function getDirection() {
5576    return options.paginationDirection || options.direction;
5577  }
5578
5579  function getAt(index) {
5580    return items[Controller.toPage(index)];
5581  }
5582
5583  function update() {
5584    var prev = getAt(getIndex(true));
5585    var curr = getAt(getIndex());
5586
5587    if (prev) {
5588      var button = prev.button;
5589      removeClass(button, CLASS_ACTIVE);
5590      removeAttribute(button, ARIA_SELECTED);
5591      setAttribute(button, TAB_INDEX, -1);
5592    }
5593
5594    if (curr) {
5595      var _button = curr.button;
5596      addClass(_button, CLASS_ACTIVE);
5597      setAttribute(_button, ARIA_SELECTED, true);
5598      setAttribute(_button, TAB_INDEX, "");
5599    }
5600
5601    emit(EVENT_PAGINATION_UPDATED, {
5602      list: list,
5603      items: items
5604    }, prev, curr);
5605  }
5606
5607  return {
5608    items: items,
5609    mount: mount,
5610    destroy: destroy,
5611    getAt: getAt,
5612    update: update
5613  };
5614}
5615
5616var TRIGGER_KEYS = [" ", "Enter"];
5617
5618function Sync(Splide2, Components2, options) {
5619  var isNavigation = options.isNavigation,
5620      slideFocus = options.slideFocus;
5621  var events = [];
5622
5623  function mount() {
5624    Splide2.splides.forEach(function (target) {
5625      if (!target.isParent) {
5626        sync(Splide2, target.splide);
5627        sync(target.splide, Splide2);
5628      }
5629    });
5630
5631    if (isNavigation) {
5632      navigate();
5633    }
5634  }
5635
5636  function destroy() {
5637    events.forEach(function (event) {
5638      event.destroy();
5639    });
5640    empty(events);
5641  }
5642
5643  function remount() {
5644    destroy();
5645    mount();
5646  }
5647
5648  function sync(splide, target) {
5649    var event = EventInterface(splide);
5650    event.on(EVENT_MOVE, function (index, prev, dest) {
5651      target.go(target.is(LOOP) ? dest : index);
5652    });
5653    events.push(event);
5654  }
5655
5656  function navigate() {
5657    var event = EventInterface(Splide2);
5658    var on = event.on;
5659    on(EVENT_CLICK, onClick);
5660    on(EVENT_SLIDE_KEYDOWN, onKeydown);
5661    on([EVENT_MOUNTED, EVENT_UPDATED], update);
5662    events.push(event);
5663    event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides);
5664  }
5665
5666  function update() {
5667    setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? "vertical" : "");
5668  }
5669
5670  function onClick(Slide) {
5671    Splide2.go(Slide.index);
5672  }
5673
5674  function onKeydown(Slide, e) {
5675    if (includes(TRIGGER_KEYS, normalizeKey(e))) {
5676      onClick(Slide);
5677      prevent(e);
5678    }
5679  }
5680
5681  return {
5682    setup: apply(Components2.Media.set, {
5683      slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
5684    }, true),
5685    mount: mount,
5686    destroy: destroy,
5687    remount: remount
5688  };
5689}
5690
5691function Wheel(Splide2, Components2, options) {
5692  var _EventInterface12 = EventInterface(Splide2),
5693      bind = _EventInterface12.bind;
5694
5695  var lastTime = 0;
5696
5697  function mount() {
5698    if (options.wheel) {
5699      bind(Components2.Elements.track, "wheel", onWheel, SCROLL_LISTENER_OPTIONS);
5700    }
5701  }
5702
5703  function onWheel(e) {
5704    if (e.cancelable) {
5705      var deltaY = e.deltaY;
5706      var backwards = deltaY < 0;
5707      var timeStamp = timeOf(e);
5708
5709      var _min = options.wheelMinThreshold || 0;
5710
5711      var sleep = options.wheelSleep || 0;
5712
5713      if (abs(deltaY) > _min && timeStamp - lastTime > sleep) {
5714        Splide2.go(backwards ? "<" : ">");
5715        lastTime = timeStamp;
5716      }
5717
5718      shouldPrevent(backwards) && prevent(e);
5719    }
5720  }
5721
5722  function shouldPrevent(backwards) {
5723    return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1;
5724  }
5725
5726  return {
5727    mount: mount
5728  };
5729}
5730
5731var SR_REMOVAL_DELAY = 90;
5732
5733function Live(Splide2, Components2, options) {
5734  var _EventInterface13 = EventInterface(Splide2),
5735      on = _EventInterface13.on;
5736
5737  var track = Components2.Elements.track;
5738  var enabled = options.live && !options.isNavigation;
5739  var sr = create("span", CLASS_SR);
5740  var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false));
5741
5742  function mount() {
5743    if (enabled) {
5744      disable(!Components2.Autoplay.isPaused());
5745      setAttribute(track, ARIA_ATOMIC, true);
5746      sr.textContent = "\\u2026";
5747      on(EVENT_AUTOPLAY_PLAY, apply(disable, true));
5748      on(EVENT_AUTOPLAY_PAUSE, apply(disable, false));
5749      on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true));
5750    }
5751  }
5752
5753  function toggle(active) {
5754    setAttribute(track, ARIA_BUSY, active);
5755
5756    if (active) {
5757      append(track, sr);
5758      interval.start();
5759    } else {
5760      remove(sr);
5761      interval.cancel();
5762    }
5763  }
5764
5765  function destroy() {
5766    removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]);
5767    remove(sr);
5768  }
5769
5770  function disable(disabled) {
5771    if (enabled) {
5772      setAttribute(track, ARIA_LIVE, disabled ? "off" : "polite");
5773    }
5774  }
5775
5776  return {
5777    mount: mount,
5778    disable: disable,
5779    destroy: destroy
5780  };
5781}
5782
5783var ComponentConstructors = /*#__PURE__*/Object.freeze({
5784  __proto__: null,
5785  Media: Media,
5786  Direction: Direction,
5787  Elements: Elements,
5788  Slides: Slides,
5789  Layout: Layout,
5790  Clones: Clones,
5791  Move: Move,
5792  Controller: Controller,
5793  Arrows: Arrows,
5794  Autoplay: Autoplay,
5795  Cover: Cover,
5796  Scroll: Scroll,
5797  Drag: Drag,
5798  Keyboard: Keyboard,
5799  LazyLoad: LazyLoad,
5800  Pagination: Pagination,
5801  Sync: Sync,
5802  Wheel: Wheel,
5803  Live: Live
5804});
5805var I18N = {
5806  prev: "Previous slide",
5807  next: "Next slide",
5808  first: "Go to first slide",
5809  last: "Go to last slide",
5810  slideX: "Go to slide %s",
5811  pageX: "Go to page %s",
5812  play: "Start autoplay",
5813  pause: "Pause autoplay",
5814  carousel: "carousel",
5815  slide: "slide",
5816  select: "Select a slide to show",
5817  slideLabel: "%s of %s"
5818};
5819var DEFAULTS = {
5820  type: "slide",
5821  role: "region",
5822  speed: 400,
5823  perPage: 1,
5824  cloneStatus: true,
5825  arrows: true,
5826  pagination: true,
5827  paginationKeyboard: true,
5828  interval: 5e3,
5829  pauseOnHover: true,
5830  pauseOnFocus: true,
5831  resetProgress: true,
5832  easing: "cubic-bezier(0.25, 1, 0.5, 1)",
5833  drag: true,
5834  direction: "ltr",
5835  trimSpace: true,
5836  focusableNodes: "a, button, textarea, input, select, iframe",
5837  live: true,
5838  classes: CLASSES,
5839  i18n: I18N,
5840  reducedMotion: {
5841    speed: 0,
5842    rewindSpeed: 0,
5843    autoplay: "pause"
5844  }
5845};
5846
5847function Fade(Splide2, Components2, options) {
5848  var Slides = Components2.Slides;
5849
5850  function mount() {
5851    EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);
5852  }
5853
5854  function init() {
5855    Slides.forEach(function (Slide) {
5856      Slide.style("transform", "translateX(-" + 100 * Slide.index + "%)");
5857    });
5858  }
5859
5860  function start(index, done) {
5861    Slides.style("transition", "opacity " + options.speed + "ms " + options.easing);
5862    nextTick(done);
5863  }
5864
5865  return {
5866    mount: mount,
5867    start: start,
5868    cancel: noop
5869  };
5870}
5871
5872function Slide(Splide2, Components2, options) {
5873  var Move = Components2.Move,
5874      Controller = Components2.Controller,
5875      Scroll = Components2.Scroll;
5876  var list = Components2.Elements.list;
5877  var transition = apply(style, list, "transition");
5878  var endCallback;
5879
5880  function mount() {
5881    EventInterface(Splide2).bind(list, "transitionend", function (e) {
5882      if (e.target === list && endCallback) {
5883        cancel();
5884        endCallback();
5885      }
5886    });
5887  }
5888
5889  function start(index, done) {
5890    var destination = Move.toPosition(index, true);
5891    var position = Move.getPosition();
5892    var speed = getSpeed(index);
5893
5894    if (abs(destination - position) >= 1 && speed >= 1) {
5895      if (options.useScroll) {
5896        Scroll.scroll(destination, speed, false, done);
5897      } else {
5898        transition("transform " + speed + "ms " + options.easing);
5899        Move.translate(destination, true);
5900        endCallback = done;
5901      }
5902    } else {
5903      Move.jump(index);
5904      done();
5905    }
5906  }
5907
5908  function cancel() {
5909    transition("");
5910    Scroll.cancel();
5911  }
5912
5913  function getSpeed(index) {
5914    var rewindSpeed = options.rewindSpeed;
5915
5916    if (Splide2.is(SLIDE) && rewindSpeed) {
5917      var prev = Controller.getIndex(true);
5918      var end = Controller.getEnd();
5919
5920      if (prev === 0 && index >= end || prev >= end && index === 0) {
5921        return rewindSpeed;
5922      }
5923    }
5924
5925    return options.speed;
5926  }
5927
5928  return {
5929    mount: mount,
5930    start: start,
5931    cancel: cancel
5932  };
5933}
5934
5935var _Splide = /*#__PURE__*/function () {
5936  function _Splide(target, options) {
5937    this.event = EventInterface();
5938    this.Components = {};
5939    this.state = State(CREATED);
5940    this.splides = [];
5941    this._o = {};
5942    this._E = {};
5943    var root = isString(target) ? query(document, target) : target;
5944    assert(root, root + " is invalid.");
5945    this.root = root;
5946    options = merge({
5947      label: getAttribute(root, ARIA_LABEL) || "",
5948      labelledby: getAttribute(root, ARIA_LABELLEDBY) || ""
5949    }, DEFAULTS, _Splide.defaults, options || {});
5950
5951    try {
5952      merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE)));
5953    } catch (e) {
5954      assert(false, "Invalid JSON");
5955    }
5956
5957    this._o = Object.create(merge({}, options));
5958  }
5959
5960  var _proto = _Splide.prototype;
5961
5962  _proto.mount = function mount(Extensions, Transition) {
5963    var _this = this;
5964
5965    var state = this.state,
5966        Components2 = this.Components;
5967    assert(state.is([CREATED, DESTROYED]), "Already mounted!");
5968    state.set(CREATED);
5969    this._C = Components2;
5970    this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide);
5971    this._E = Extensions || this._E;
5972    var Constructors = assign({}, ComponentConstructors, this._E, {
5973      Transition: this._T
5974    });
5975    forOwn(Constructors, function (Component, key) {
5976      var component = Component(_this, Components2, _this._o);
5977      Components2[key] = component;
5978      component.setup && component.setup();
5979    });
5980    forOwn(Components2, function (component) {
5981      component.mount && component.mount();
5982    });
5983    this.emit(EVENT_MOUNTED);
5984    addClass(this.root, CLASS_INITIALIZED);
5985    state.set(IDLE);
5986    this.emit(EVENT_READY);
5987    return this;
5988  };
5989
5990  _proto.sync = function sync(splide) {
5991    this.splides.push({
5992      splide: splide
5993    });
5994    splide.splides.push({
5995      splide: this,
5996      isParent: true
5997    });
5998
5999    if (this.state.is(IDLE)) {
6000      this._C.Sync.remount();
6001
6002      splide.Components.Sync.remount();
6003    }
6004
6005    return this;
6006  };
6007
6008  _proto.go = function go(control) {
6009    this._C.Controller.go(control);
6010
6011    return this;
6012  };
6013
6014  _proto.on = function on(events, callback) {
6015    this.event.on(events, callback);
6016    return this;
6017  };
6018
6019  _proto.off = function off(events) {
6020    this.event.off(events);
6021    return this;
6022  };
6023
6024  _proto.emit = function emit(event) {
6025    var _this$event;
6026
6027    (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1)));
6028
6029    return this;
6030  };
6031
6032  _proto.add = function add(slides, index) {
6033    this._C.Slides.add(slides, index);
6034
6035    return this;
6036  };
6037
6038  _proto.remove = function remove(matcher) {
6039    this._C.Slides.remove(matcher);
6040
6041    return this;
6042  };
6043
6044  _proto.is = function is(type) {
6045    return this._o.type === type;
6046  };
6047
6048  _proto.refresh = function refresh() {
6049    this.emit(EVENT_REFRESH);
6050    return this;
6051  };
6052
6053  _proto.destroy = function destroy(completely) {
6054    if (completely === void 0) {
6055      completely = true;
6056    }
6057
6058    var event = this.event,
6059        state = this.state;
6060
6061    if (state.is(CREATED)) {
6062      EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely));
6063    } else {
6064      forOwn(this._C, function (component) {
6065        component.destroy && component.destroy(completely);
6066      }, true);
6067      event.emit(EVENT_DESTROY);
6068      event.destroy();
6069      completely && empty(this.splides);
6070      state.set(DESTROYED);
6071    }
6072
6073    return this;
6074  };
6075
6076  _createClass(_Splide, [{
6077    key: "options",
6078    get: function get() {
6079      return this._o;
6080    },
6081    set: function set(options) {
6082      this._C.Media.set(options, true, true);
6083    }
6084  }, {
6085    key: "length",
6086    get: function get() {
6087      return this._C.Slides.getLength(true);
6088    }
6089  }, {
6090    key: "index",
6091    get: function get() {
6092      return this._C.Controller.getIndex();
6093    }
6094  }]);
6095
6096  return _Splide;
6097}();
6098
6099var Splide = _Splide;
6100Splide.defaults = {};
6101Splide.STATES = STATES;
6102var CLASS_RENDERED = "is-rendered";
6103var RENDERER_DEFAULT_CONFIG = {
6104  listTag: "ul",
6105  slideTag: "li"
6106};
6107
6108var Style = /*#__PURE__*/function () {
6109  function Style(id, options) {
6110    this.styles = {};
6111    this.id = id;
6112    this.options = options;
6113  }
6114
6115  var _proto2 = Style.prototype;
6116
6117  _proto2.rule = function rule(selector, prop, value, breakpoint) {
6118    breakpoint = breakpoint || "default";
6119    var selectors = this.styles[breakpoint] = this.styles[breakpoint] || {};
6120    var styles = selectors[selector] = selectors[selector] || {};
6121    styles[prop] = value;
6122  };
6123
6124  _proto2.build = function build() {
6125    var _this2 = this;
6126
6127    var css = "";
6128
6129    if (this.styles.default) {
6130      css += this.buildSelectors(this.styles.default);
6131    }
6132
6133    Object.keys(this.styles).sort(function (n, m) {
6134      return _this2.options.mediaQuery === "min" ? +n - +m : +m - +n;
6135    }).forEach(function (breakpoint) {
6136      if (breakpoint !== "default") {
6137        css += "@media screen and (max-width: " + breakpoint + "px) {";
6138        css += _this2.buildSelectors(_this2.styles[breakpoint]);
6139        css += "}";
6140      }
6141    });
6142    return css;
6143  };
6144
6145  _proto2.buildSelectors = function buildSelectors(selectors) {
6146    var _this3 = this;
6147
6148    var css = "";
6149    forOwn(selectors, function (styles, selector) {
6150      selector = ("#" + _this3.id + " " + selector).trim();
6151      css += selector + " {";
6152      forOwn(styles, function (value, prop) {
6153        if (value || value === 0) {
6154          css += prop + ": " + value + ";";
6155        }
6156      });
6157      css += "}";
6158    });
6159    return css;
6160  };
6161
6162  return Style;
6163}();
6164
6165var SplideRenderer = /*#__PURE__*/function () {
6166  function SplideRenderer(contents, options, config, defaults) {
6167    this.slides = [];
6168    this.options = {};
6169    this.breakpoints = [];
6170    merge(DEFAULTS, defaults || {});
6171    merge(merge(this.options, DEFAULTS), options || {});
6172    this.contents = contents;
6173    this.config = assign({}, RENDERER_DEFAULT_CONFIG, config || {});
6174    this.id = this.config.id || uniqueId("splide");
6175    this.Style = new Style(this.id, this.options);
6176    this.Direction = Direction(null, null, this.options);
6177    assert(this.contents.length, "Provide at least 1 content.");
6178    this.init();
6179  }
6180
6181  SplideRenderer.clean = function clean(splide) {
6182    var _EventInterface14 = EventInterface(splide),
6183        on = _EventInterface14.on;
6184
6185    var root = splide.root;
6186    var clones = queryAll(root, "." + CLASS_CLONE);
6187    on(EVENT_MOUNTED, function () {
6188      remove(child(root, "style"));
6189    });
6190    remove(clones);
6191  };
6192
6193  var _proto3 = SplideRenderer.prototype;
6194
6195  _proto3.init = function init() {
6196    this.parseBreakpoints();
6197    this.initSlides();
6198    this.registerRootStyles();
6199    this.registerTrackStyles();
6200    this.registerSlideStyles();
6201    this.registerListStyles();
6202  };
6203
6204  _proto3.initSlides = function initSlides() {
6205    var _this4 = this;
6206
6207    push(this.slides, this.contents.map(function (content, index) {
6208      content = isString(content) ? {
6209        html: content
6210      } : content;
6211      content.styles = content.styles || {};
6212      content.attrs = content.attrs || {};
6213
6214      _this4.cover(content);
6215
6216      var classes = _this4.options.classes.slide + " " + (index === 0 ? CLASS_ACTIVE : "");
6217      assign(content.attrs, {
6218        class: (classes + " " + (content.attrs.class || "")).trim(),
6219        style: _this4.buildStyles(content.styles)
6220      });
6221      return content;
6222    }));
6223
6224    if (this.isLoop()) {
6225      this.generateClones(this.slides);
6226    }
6227  };
6228
6229  _proto3.registerRootStyles = function registerRootStyles() {
6230    var _this5 = this;
6231
6232    this.breakpoints.forEach(function (_ref2) {
6233      var width = _ref2[0],
6234          options = _ref2[1];
6235
6236      _this5.Style.rule(" ", "max-width", unit(options.width), width);
6237    });
6238  };
6239
6240  _proto3.registerTrackStyles = function registerTrackStyles() {
6241    var _this6 = this;
6242
6243    var Style2 = this.Style;
6244    var selector = "." + CLASS_TRACK;
6245    this.breakpoints.forEach(function (_ref3) {
6246      var width = _ref3[0],
6247          options = _ref3[1];
6248      Style2.rule(selector, _this6.resolve("paddingLeft"), _this6.cssPadding(options, false), width);
6249      Style2.rule(selector, _this6.resolve("paddingRight"), _this6.cssPadding(options, true), width);
6250      Style2.rule(selector, "height", _this6.cssTrackHeight(options), width);
6251    });
6252  };
6253
6254  _proto3.registerListStyles = function registerListStyles() {
6255    var _this7 = this;
6256
6257    var Style2 = this.Style;
6258    var selector = "." + CLASS_LIST;
6259    this.breakpoints.forEach(function (_ref4) {
6260      var width = _ref4[0],
6261          options = _ref4[1];
6262      Style2.rule(selector, "transform", _this7.buildTranslate(options), width);
6263
6264      if (!_this7.cssSlideHeight(options)) {
6265        Style2.rule(selector, "aspect-ratio", _this7.cssAspectRatio(options), width);
6266      }
6267    });
6268  };
6269
6270  _proto3.registerSlideStyles = function registerSlideStyles() {
6271    var _this8 = this;
6272
6273    var Style2 = this.Style;
6274    var selector = "." + CLASS_SLIDE;
6275    this.breakpoints.forEach(function (_ref5) {
6276      var width = _ref5[0],
6277          options = _ref5[1];
6278      Style2.rule(selector, "width", _this8.cssSlideWidth(options), width);
6279      Style2.rule(selector, "height", _this8.cssSlideHeight(options) || "100%", width);
6280      Style2.rule(selector, _this8.resolve("marginRight"), unit(options.gap) || "0px", width);
6281      Style2.rule(selector + " > img", "display", options.cover ? "none" : "inline", width);
6282    });
6283  };
6284
6285  _proto3.buildTranslate = function buildTranslate(options) {
6286    var _this$Direction = this.Direction,
6287        resolve = _this$Direction.resolve,
6288        orient = _this$Direction.orient;
6289    var values = [];
6290    values.push(this.cssOffsetClones(options));
6291    values.push(this.cssOffsetGaps(options));
6292
6293    if (this.isCenter(options)) {
6294      values.push(this.buildCssValue(orient(-50), "%"));
6295      values.push.apply(values, this.cssOffsetCenter(options));
6296    }
6297
6298    return values.filter(Boolean).map(function (value) {
6299      return "translate" + resolve("X") + "(" + value + ")";
6300    }).join(" ");
6301  };
6302
6303  _proto3.cssOffsetClones = function cssOffsetClones(options) {
6304    var _this$Direction2 = this.Direction,
6305        resolve = _this$Direction2.resolve,
6306        orient = _this$Direction2.orient;
6307    var cloneCount = this.getCloneCount();
6308
6309    if (this.isFixedWidth(options)) {
6310      var _this$parseCssValue = this.parseCssValue(options[resolve("fixedWidth")]),
6311          value = _this$parseCssValue.value,
6312          unit2 = _this$parseCssValue.unit;
6313
6314      return this.buildCssValue(orient(value) * cloneCount, unit2);
6315    }
6316
6317    var percent = 100 * cloneCount / options.perPage;
6318    return orient(percent) + "%";
6319  };
6320
6321  _proto3.cssOffsetCenter = function cssOffsetCenter(options) {
6322    var _this$Direction3 = this.Direction,
6323        resolve = _this$Direction3.resolve,
6324        orient = _this$Direction3.orient;
6325
6326    if (this.isFixedWidth(options)) {
6327      var _this$parseCssValue2 = this.parseCssValue(options[resolve("fixedWidth")]),
6328          value = _this$parseCssValue2.value,
6329          unit2 = _this$parseCssValue2.unit;
6330
6331      return [this.buildCssValue(orient(value / 2), unit2)];
6332    }
6333
6334    var values = [];
6335    var perPage = options.perPage,
6336        gap = options.gap;
6337    values.push(orient(50 / perPage) + "%");
6338
6339    if (gap) {
6340      var _this$parseCssValue3 = this.parseCssValue(gap),
6341          _value = _this$parseCssValue3.value,
6342          _unit = _this$parseCssValue3.unit;
6343
6344      var gapOffset = (_value / perPage - _value) / 2;
6345      values.push(this.buildCssValue(orient(gapOffset), _unit));
6346    }
6347
6348    return values;
6349  };
6350
6351  _proto3.cssOffsetGaps = function cssOffsetGaps(options) {
6352    var cloneCount = this.getCloneCount();
6353
6354    if (cloneCount && options.gap) {
6355      var orient = this.Direction.orient;
6356
6357      var _this$parseCssValue4 = this.parseCssValue(options.gap),
6358          value = _this$parseCssValue4.value,
6359          unit2 = _this$parseCssValue4.unit;
6360
6361      if (this.isFixedWidth(options)) {
6362        return this.buildCssValue(orient(value * cloneCount), unit2);
6363      }
6364
6365      var perPage = options.perPage;
6366      var gaps = cloneCount / perPage;
6367      return this.buildCssValue(orient(gaps * value), unit2);
6368    }
6369
6370    return "";
6371  };
6372
6373  _proto3.resolve = function resolve(prop) {
6374    return camelToKebab(this.Direction.resolve(prop));
6375  };
6376
6377  _proto3.cssPadding = function cssPadding(options, right) {
6378    var padding = options.padding;
6379    var prop = this.Direction.resolve(right ? "right" : "left", true);
6380    return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px";
6381  };
6382
6383  _proto3.cssTrackHeight = function cssTrackHeight(options) {
6384    var height = "";
6385
6386    if (this.isVertical()) {
6387      height = this.cssHeight(options);
6388      assert(height, '"height" is missing.');
6389      height = "calc(" + height + " - " + this.cssPadding(options, false) + " - " + this.cssPadding(options, true) + ")";
6390    }
6391
6392    return height;
6393  };
6394
6395  _proto3.cssHeight = function cssHeight(options) {
6396    return unit(options.height);
6397  };
6398
6399  _proto3.cssSlideWidth = function cssSlideWidth(options) {
6400    return options.autoWidth ? "" : unit(options.fixedWidth) || (this.isVertical() ? "" : this.cssSlideSize(options));
6401  };
6402
6403  _proto3.cssSlideHeight = function cssSlideHeight(options) {
6404    return unit(options.fixedHeight) || (this.isVertical() ? options.autoHeight ? "" : this.cssSlideSize(options) : this.cssHeight(options));
6405  };
6406
6407  _proto3.cssSlideSize = function cssSlideSize(options) {
6408    var gap = unit(options.gap);
6409    return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")";
6410  };
6411
6412  _proto3.cssAspectRatio = function cssAspectRatio(options) {
6413    var heightRatio = options.heightRatio;
6414    return heightRatio ? "" + 1 / heightRatio : "";
6415  };
6416
6417  _proto3.buildCssValue = function buildCssValue(value, unit2) {
6418    return "" + value + unit2;
6419  };
6420
6421  _proto3.parseCssValue = function parseCssValue(value) {
6422    if (isString(value)) {
6423      var number = parseFloat(value) || 0;
6424      var unit2 = value.replace(/\
6424\d*(\\.\\d*)?/, "") || "px";
6425      return {
6426        value: number,
6427        unit: unit2
6428      };
6429    }
6430
6431    return {
6432      value: value,
6433      unit: "px"
6434    };
6435  };
6436
vendor: 6,657 bytes, lines 6437-6625
6437  _proto3.parseBreakpoints = function parseBreakpoints() {
6438    var _this9 = this;
6439
6440    var breakpoints = this.options.breakpoints;
6441    this.breakpoints.push(["default", this.options]);
6442
6443    if (breakpoints) {
6444      forOwn(breakpoints, function (options, width) {
6445        _this9.breakpoints.push([width, merge(merge({}, _this9.options), options)]);
6446      });
6447    }
6448  };
6449
6450  _proto3.isFixedWidth = function isFixedWidth(options) {
6451    return !!options[this.Direction.resolve("fixedWidth")];
6452  };
6453
6454  _proto3.isLoop = function isLoop() {
6455    return this.options.type === LOOP;
6456  };
6457
6458  _proto3.isCenter = function isCenter(options) {
6459    if (options.focus === "center") {
6460      if (this.isLoop()) {
6461        return true;
6462      }
6463
6464      if (this.options.type === SLIDE) {
6465        return !this.options.trimSpace;
6466      }
6467    }
6468
6469    return false;
6470  };
6471
6472  _proto3.isVertical = function isVertical() {
6473    return this.options.direction === TTB;
6474  };
6475
6476  _proto3.buildClasses = function buildClasses() {
6477    var options = this.options;
6478    return [CLASS_ROOT, CLASS_ROOT + "--" + options.type, CLASS_ROOT + "--" + options.direction, options.drag && CLASS_ROOT + "--draggable", options.isNavigation && CLASS_ROOT + "--nav", CLASS_ACTIVE, !this.config.hidden && CLASS_RENDERED].filter(Boolean).join(" ");
6479  };
6480
6481  _proto3.buildAttrs = function buildAttrs(attrs) {
6482    var attr = "";
6483    forOwn(attrs, function (value, key) {
6484      attr += value ? " " + camelToKebab(key) + "=\\"" + value + "\\"" : "";
6485    });
6486    return attr.trim();
6487  };
6488
6489  _proto3.buildStyles = function buildStyles(styles) {
6490    var style = "";
6491    forOwn(styles, function (value, key) {
6492      style += " " + camelToKebab(key) + ":" + value + ";";
6493    });
6494    return style.trim();
6495  };
6496
6497  _proto3.renderSlides = function renderSlides() {
6498    var _this10 = this;
6499
6500    var tag = this.config.slideTag;
6501    return this.slides.map(function (content) {
6502      return "<" + tag + " " + _this10.buildAttrs(content.attrs) + ">" + (content.html || "") + "</" + tag + ">";
6503    }).join("");
6504  };
6505
6506  _proto3.cover = function cover(content) {
6507    var styles = content.styles,
6508        _content$html = content.html,
6509        html = _content$html === void 0 ? "" : _content$html;
6510
6511    if (this.options.cover && !this.options.lazyLoad) {
6512      var src = html.match(/<img.*?src\\s*=\\s*(['"])(.+?)\\1.*?>/);
6513
6514      if (src && src[2]) {
6515        styles.background = "center/cover no-repeat url('" + src[2] + "')";
6516      }
6517    }
6518  };
6519
6520  _proto3.generateClones = function generateClones(contents) {
6521    var classes = this.options.classes;
6522    var count = this.getCloneCount();
6523    var slides = contents.slice();
6524
6525    while (slides.length < count) {
6526      push(slides, slides);
6527    }
6528
6529    push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) {
6530      var attrs = assign({}, content.attrs, {
6531        class: content.attrs.class + " " + classes.clone
6532      });
6533      var clone = assign({}, content, {
6534        attrs: attrs
6535      });
6536      index < count ? contents.unshift(clone) : contents.push(clone);
6537    });
6538  };
6539
6540  _proto3.getCloneCount = function getCloneCount() {
6541    if (this.isLoop()) {
6542      var options = this.options;
6543
6544      if (options.clones) {
6545        return options.clones;
6546      }
6547
6548      var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) {
6549        var options2 = _ref6[1];
6550        return options2.perPage;
6551      }));
6552      return perPage * ((options.flickMaxPages || 1) + 1);
6553    }
6554
6555    return 0;
6556  };
6557
6558  _proto3.renderArrows = function renderArrows() {
6559    var html = "";
6560    html += "<div class=\\"" + this.options.classes.arrows + "\\">";
6561    html += this.renderArrow(true);
6562    html += this.renderArrow(false);
6563    html += "</div>";
6564    return html;
6565  };
6566
6567  _proto3.renderArrow = function renderArrow(prev) {
6568    var _this$options = this.options,
6569        classes = _this$options.classes,
6570        i18n = _this$options.i18n;
6571    var attrs = {
6572      class: classes.arrow + " " + (prev ? classes.prev : classes.next),
6573      type: "button",
6574      ariaLabel: prev ? i18n.prev : i18n.next
6575    };
6576    return "<button " + this.buildAttrs(attrs) + "><svg xmlns=\\"" + XML_NAME_SPACE + "\\" viewBox=\\"0 0 " + SIZE + " " + SIZE + "\\" width=\\"" + SIZE + "\\" height=\\"" + SIZE + "\\"><path d=\\"" + (this.options.arrowPath || PATH) + "\\" /></svg></button>";
6577  };
6578
6579  _proto3.html = function html() {
6580    var _this$config = this.config,
6581        rootClass = _this$config.rootClass,
6582        listTag = _this$config.listTag,
6583        arrows = _this$config.arrows,
6584        beforeTrack = _this$config.beforeTrack,
6585        afterTrack = _this$config.afterTrack,
6586        slider = _this$config.slider,
6587        beforeSlider = _this$config.beforeSlider,
6588        afterSlider = _this$config.afterSlider;
6589    var html = "";
6590    html += "<div id=\\"" + this.id + "\\" class=\\"" + this.buildClasses() + " " + (rootClass || "") + "\\">";
6591    html += "<style>" + this.Style.build() + "</style>";
6592
6593    if (slider) {
6594      html += beforeSlider || "";
6595      html += "<div class=\\"splide__slider\\">";
6596    }
6597
6598    html += beforeTrack || "";
6599
6600    if (arrows) {
6601      html += this.renderArrows();
6602    }
6603
6604    html += "<div class=\\"splide__track\\">";
6605    html += "<" + listTag + " class=\\"splide__list\\">";
6606    html += this.renderSlides();
6607    html += "</" + listTag + ">";
6608    html += "</div>";
6609    html += afterTrack || "";
6610
6611    if (slider) {
6612      html += "</div>";
6613      html += afterSlider || "";
6614    }
6615
6616    html += "</div>";
6617    return html;
6618  };
6619
6620  return SplideRenderer;
6621}();
6622
6623
6624
6625//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS9kaXN0L2pzL3NwbGlkZS5lc20uanM/ZDIxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFOztBQUUzVCw2REFBNkQsc0VBQXNFLDhEQUE4RCxrREFBa0Qsa0JBQWtCLEVBQUUsb0JBQW9COztBQUUzUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0F
6625BRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw4QkFBOEIsMENBQTBDO0FBQ3hFLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVELEtBQUssSUFBSTtBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0F
6625BRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
6625QUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
6625QUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0F
6625BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSywyQ0FBMkM7O0FBRWhEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxvQ0FBb0M7QUFDcEM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHFFQUFxRTtBQUNyRTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQSxPQUFPO0FBQ1AsZUFBZTtBQUNmLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDLHNEQUFzRDtBQUN0RDtBQUNBLDJCQUEyQix1Q0FBdUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNEQUFzRDtBQUN0RCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0F
6625BRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLE9BQU87QUFDUCwyQkFBMkI7QUFDM0I7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRTBvQyIsImZpbGUiOiIxNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci
662553cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbi8qIVxuICogU3BsaWRlLmpzXG4gKiBWZXJzaW9uICA6IDQuMS40XG4gKiBMaWNlbnNlICA6IE1JVFxuICogQ29weXJpZ2h0OiAyMDIyIE5hb3Rvc2hpIEZ1aml0YVxuICovXG52YXIgTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTiA9IFwiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSlcIjtcbnZhciBDUkVBVEVEID0gMTtcbnZhciBNT1VOVEVEID0gMjtcbnZhciBJRExFID0gMztcbnZhciBNT1ZJTkcgPSA0O1xudmFyIFNDUk9MTElORyA9IDU7XG52YXIgRFJBR0dJTkcgPSA2O1xudmFyIERFU1RST1lFRCA9IDc7XG52YXIgU1RBVEVTID0ge1xuICBDUkVBVEVEOiBDUkVBVEVELFxuICBNT1VOVEVEOiBNT1VOVEVELFxuICBJRExFOiBJRExFLFxuICBNT1ZJTkc6IE1PVklORyxcbiAgU0NST0xMSU5HOiBTQ1JPTExJTkcsXG4gIERSQUdHSU5HOiBEUkFHR0lORyxcbiAgREVTVFJPWUVEOiBERVNUUk9ZRURcbn07XG5cbmZ1bmN0aW9uIGVtcHR5KGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UoYXJndW1lbnRzLCAxKSkpO1xufVxuXG52YXIgbmV4dFRpY2sgPSBzZXRUaW1lb3V0O1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuZnVuY3Rpb24gcmFmKGZ1bmMpIHtcbiAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xudmFyIGlzRnVuY3Rpb24gPSBhcHBseSh0eXBlT2YsIFwiZnVuY3Rpb25cIik7XG52YXIgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xudmFyIGlzVW5kZWZpbmVkID0gYXBwbHkodHlwZU9mLCBcInVuZGVmaW5lZFwiKTtcblxuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQoc3ViamVjdCkge1xuICB0cnkge1xuICAgIHJldHVybiBzdWJqZWN0IGluc3RhbmNlb2YgKHN1YmplY3Qub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLkhUTUxFbGVtZW50O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgaXRlcmF0ZWUpIHtcbiAgdG9BcnJheSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpID4gLTE7XG59XG5cbmZ1bmN0aW9uIHB1c2goYXJyYXksIGl0ZW1zKSB7XG4gIGFycmF5LnB1c2guYXBwbHkoYXJyYXksIHRvQXJyYXkoaXRlbXMpKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGFkZCkge1xuICBpZiAoZWxtKSB7XG4gICAgZm9yRWFjaChjbGFzc2VzLCBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgZWxtLmNsYXNzTGlzdFthZGQgPyBcImFkZFwiIDogXCJyZW1vdmVcIl0obmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhc3MoZWxtLCBjbGFzc2VzKSB7XG4gIHRvZ2dsZUNsYXNzKGVsbSwgaXNTdHJpbmcoY2xhc3NlcykgPyBjbGFzc2VzLnNwbGl0KFwiIFwiKSA6IGNsYXNzZXMsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmQocGFyZW50LCBjaGlsZHJlbikge1xuICBmb3JFYWNoKGNoaWxkcmVuLCBwYXJlbnQuYXBwZW5kQ2hpbGQuYmluZChwYXJlbnQpKTtcbn1cblxuZnVuY3Rpb24gYmVmb3JlKG5vZGVzLCByZWYpIHtcbiAgZm9yRWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgcGFyZW50ID0gKHJlZiB8fCBub2RlKS5wYXJlbnROb2RlO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMoZWxtLCBzZWxlY3Rvcikge1xuICByZXR1cm4gaXNIVE1MRWxlbWVudChlbG0pICYmIChlbG1bXCJtc01hdGNoZXNTZWxlY3RvclwiXSB8fCBlbG0ubWF0Y2hlcykuY2FsbChlbG0sIHNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW4ocGFyZW50LCBzZWxlY3Rvcikge1xuICB2YXIgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBtYXRjaGVzKGNoaWxkLCBzZWxlY3Rvcik7XG4gIH0pIDogY2hpbGRyZW4yO1xufVxuXG5mdW5jdGlvbiBjaGlsZChwYXJlbnQsIHNlbGVjdG9yKSB7XG4gIHJldHVybi
6625BzZWxlY3RvciA/IGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpWzBdIDogcGFyZW50LmZpcnN0RWxlbWVudENoaWxkO1xufVxuXG52YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIChyaWdodCA/IG93bktleXMob2JqZWN0KS5yZXZlcnNlKCkgOiBvd25LZXlzKG9iamVjdCkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAga2V5ICE9PSBcIl9fcHJvdG9fX1wiICYmIGl0ZXJhdGVlKG9iamVjdFtrZXldLCBrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduKG9iamVjdCkge1xuICBzbGljZShhcmd1bWVudHMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGZvck93bihzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gbWVyZ2Uob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IG1lcmdlKHt9LCBpc09iamVjdChvYmplY3Rba2V5XSkgPyBvYmplY3Rba2V5XSA6IHt9LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gb21pdChvYmplY3QsIGtleXMpIHtcbiAgZm9yRWFjaChrZXlzIHx8IG93bktleXMob2JqZWN0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgIGRlbGV0ZSBvYmplY3Rba2V5XTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUF0dHJpYnV0ZShlbG1zLCBhdHRycykge1xuICBmb3JFYWNoKGVsbXMsIGZ1bmN0aW9uIChlbG0pIHtcbiAgICBmb3JFYWNoKGF0dHJzLCBmdW5jdGlvbiAoYXR0cikge1xuICAgICAgZWxtICYmIGVsbS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGUoZWxtcywgYXR0cnMsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChhdHRycykpIHtcbiAgICBmb3JPd24oYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZTIsIG5hbWUpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShlbG1zLCBuYW1lLCB2YWx1ZTIpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGZvckVhY2goZWxtcywgZnVuY3Rpb24gKGVsbSkge1xuICAgICAgaXNOdWxsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gXCJcIiA/IHJlbW92ZUF0dHJpYnV0ZShlbG0sIGF0dHJzKSA6IGVsbS5zZXRBdHRyaWJ1dGUoYXR0cnMsIFN0cmluZyh2YWx1ZSkpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZSh0YWcsIGF0dHJzLCBwYXJlbnQpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcblxuICBpZiAoYXR0cnMpIHtcbiAgICBpc1N0cmluZyhhdHRycykgPyBhZGRDbGFzcyhlbG0sIGF0dHJzKSA6IHNldEF0dHJpYnV0ZShlbG0sIGF0dHJzKTtcbiAgfVxuXG4gIHBhcmVudCAmJiBhcHBlbmQocGFyZW50LCBlbG0pO1xuICByZXR1cm4gZWxtO1xufVxuXG5mdW5jdGlvbiBzdHlsZShlbG0sIHByb3AsIHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbG0pW3Byb3BdO1xuICB9XG5cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gXCJcIiArIHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BsYXkoZWxtLCBkaXNwbGF5Mikge1xuICBzdHlsZShlbG0sIFwiZGlzcGxheVwiLCBkaXNwbGF5Mik7XG59XG5cbmZ1bmN0aW9uIGZvY3VzKGVsbSkge1xuICBlbG1bXCJzZXRBY3RpdmVcIl0gJiYgZWxtW1wic2V0QWN0aXZlXCJdKCkgfHwgZWxtLmZvY3VzKHtcbiAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxtLCBhdHRyKSB7XG4gIHJldHVybiBlbG0uZ2V0QXR0cmlidXRlKGF0dHIpO1xufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVjdCh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGNoaWxkKG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgXCJ0ZXh0L2h0bWxcIikuYm9keSk7XG59XG5cbmZ1bmN0aW9uIHByZXZlbnQoZSwgc3RvcFByb3BhZ2F0aW9uKSB7XG4gIGUucHJldmVudERlZmF1bHQoKTtcblxuICBpZiAoc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5KHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5QWxsKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID8gc2xpY2UocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKSA6IFtdO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBjbGFzc2VzLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHRpbWVPZihlKSB7XG4gIHJldHVybi
6625BlLnRpbWVTdGFtcDtcbn1cblxuZnVuY3Rpb24gdW5pdCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IHZhbHVlICsgXCJweFwiIDogXCJcIjtcbn1cblxudmFyIFBST0pFQ1RfQ09ERSA9IFwic3BsaWRlXCI7XG52YXIgREFUQV9BVFRSSUJVVEUgPSBcImRhdGEtXCIgKyBQUk9KRUNUX0NPREU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJbXCIgKyBQUk9KRUNUX0NPREUgKyBcIl0gXCIgKyAobWVzc2FnZSB8fCBcIlwiKSk7XG4gIH1cbn1cblxudmFyIG1pbiA9IE1hdGgubWluLFxuICAgIG1heCA9IE1hdGgubWF4LFxuICAgIGZsb29yID0gTWF0aC5mbG9vcixcbiAgICBjZWlsID0gTWF0aC5jZWlsLFxuICAgIGFicyA9IE1hdGguYWJzO1xuXG5mdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwoeCwgeSwgZXBzaWxvbikge1xuICByZXR1cm4gYWJzKHggLSB5KSA8IGVwc2lsb247XG59XG5cbmZ1bmN0aW9uIGJldHdlZW4obnVtYmVyLCB4LCB5LCBleGNsdXNpdmUpIHtcbiAgdmFyIG1pbmltdW0gPSBtaW4oeCwgeSk7XG4gIHZhciBtYXhpbXVtID0gbWF4KHgsIHkpO1xuICByZXR1cm4gZXhjbHVzaXZlID8gbWluaW11bSA8IG51bWJlciAmJiBudW1iZXIgPCBtYXhpbXVtIDogbWluaW11bSA8PSBudW1iZXIgJiYgbnVtYmVyIDw9IG1heGltdW07XG59XG5cbmZ1bmN0aW9uIGNsYW1wKG51bWJlciwgeCwgeSkge1xuICB2YXIgbWluaW11bSA9IG1pbih4LCB5KTtcbiAgdmFyIG1heGltdW0gPSBtYXgoeCwgeSk7XG4gIHJldHVybiBtaW4obWF4KG1pbmltdW0sIG51bWJlciksIG1heGltdW0pO1xufVxuXG5mdW5jdGlvbiBzaWduKHgpIHtcbiAgcmV0dXJuICsoeCA+IDApIC0gKyh4IDwgMCk7XG59XG5cbmZ1bmN0aW9uIGNhbWVsVG9LZWJhYihzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdChzdHJpbmcsIHJlcGxhY2VtZW50cykge1xuICBmb3JFYWNoKHJlcGxhY2VtZW50cywgZnVuY3Rpb24gKHJlcGxhY2VtZW50KSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoXCIlc1wiLCBcIlwiICsgcmVwbGFjZW1lbnQpO1xuICB9KTtcbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGFkKG51bWJlcikge1xuICByZXR1cm4gbnVtYmVyIDwgMTAgPyBcIjBcIiArIG51bWJlciA6IFwiXCIgKyBudW1iZXI7XG59XG5cbnZhciBpZHMgPSB7fTtcblxuZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KSB7XG4gIHJldHVybiBcIlwiICsgcHJlZml4ICsgcGFkKGlkc1twcmVmaXhdID0gKGlkc1twcmVmaXhdIHx8IDApICsgMSk7XG59XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2godGFyZ2V0cywgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ICYmIGZvckVhY2goZXZlbnRzLCBmdW5jdGlvbiAoZXZlbnRzMikge1xuICAgICAgICBldmVudHMyLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudE5TKSB7XG4gICAgICAgICAgdmFyIGZyYWdtZW50ID0gZXZlbnROUy5zcGxpdChcIi5cIik7XG4gICAgICAgICAgaXRlcmF0ZWUodGFyZ2V0LCBmcmFnbWVudFswXSwgZnJhZ21lbn
6625RbMV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgZGF0YVs0XSgpO1xuICAgIH0pO1xuICAgIGVtcHR5KGxpc3RlbmVycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmQ6IGJpbmQsXG4gICAgdW5iaW5kOiB1bmJpbmQsXG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cblxudmFyIEVWRU5UX01PVU5URUQgPSBcIm1vdW50ZWRcIjtcbnZhciBFVkVOVF9SRUFEWSA9IFwicmVhZHlcIjtcbnZhciBFVkVOVF9NT1ZFID0gXCJtb3ZlXCI7XG52YXIgRVZFTlRfTU9WRUQgPSBcIm1vdmVkXCI7XG52YXIgRVZFTlRfQ0xJQ0sgPSBcImNsaWNrXCI7XG52YXIgRVZFTlRfQUNUSVZFID0gXCJhY3RpdmVcIjtcbnZhciBFVkVOVF9JTkFDVElWRSA9IFwiaW5hY3RpdmVcIjtcbnZhciBFVkVOVF9WSVNJQkxFID0gXCJ2aXNpYmxlXCI7XG52YXIgRVZFTlRfSElEREVOID0gXCJoaWRkZW5cIjtcbnZhciBFVkVOVF9SRUZSRVNIID0gXCJyZWZyZXNoXCI7XG52YXIgRVZFTlRfVVBEQVRFRCA9IFwidXBkYXRlZFwiO1xudmFyIEVWRU5UX1JFU0laRSA9IFwicmVzaXplXCI7XG52YXIgRVZFTlRfUkVTSVpFRCA9IFwicmVzaXplZFwiO1xudmFyIEVWRU5UX0RSQUcgPSBcImRyYWdcIjtcbnZhciBFVkVOVF9EUkFHR0lORyA9IFwiZHJhZ2dpbmdcIjtcbnZhciBFVkVOVF9EUkFHR0VEID0gXCJkcmFnZ2VkXCI7XG52YXIgRVZFTlRfU0NST0xMID0gXCJzY3JvbGxcIjtcbnZhciBFVkVOVF9TQ1JPTExFRCA9IFwic2Nyb2xsZWRcIjtcbnZhciBFVkVOVF9PVkVSRkxPVyA9IFwib3ZlcmZsb3dcIjtcbnZhciBFVkVOVF9ERVNUUk9ZID0gXCJkZXN0cm95XCI7XG52YXIgRVZFTlRfQVJST1dTX01PVU5URUQgPSBcImFycm93czptb3VudGVkXCI7XG52YXIgRVZFTlRfQVJST1dTX1VQREFURUQgPSBcImFycm93czp1cGRhdGVkXCI7XG52YXIgRVZFTlRfUEFHSU5BVElPTl9NT1VOVEVEID0gXCJwYWdpbmF0aW9uOm1vdW50ZWRcIjtcbnZhciBFVkVOVF9QQUdJTkFUSU9OX1VQREFURUQgPSBcInBhZ2luYXRpb246dXBkYXRlZFwiO1xudmFyIEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCA9IFwibmF2aWdhdGlvbjptb3VudGVkXCI7XG52YXIgRVZFTlRfQVVUT1BMQVlfUExBWSA9IFwiYXV0b3BsYXk6cGxheVwiO1xudmFyIEVWRU5UX0FVVE9QTEFZX1BMQVlJTkcgPSBcImF1dG9wbGF5OnBsYXlpbmdcIjtcbnZhciBFVkVOVF9BVVRPUExBWV9QQVVTRSA9IFwiYXV0b3BsYXk6cGF1c2VcIjtcbnZhciBFVkVOVF9MQVpZTE9BRF9MT0FERUQgPSBcImxhenlsb2FkOmxvYWRlZFwiO1xudmFyIEVWRU5UX1NMSURFX0tFWURPV04gPSBcInNrXCI7XG52YXIgRVZFTlRfU0hJRlRFRCA9IFwic2hcIjtcbnZhciBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCA9IFwiZWlcIjtcblxuZnVuY3Rpb24gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikge1xuICB2YXIgYnVzID0gU3BsaWRlMiA/IFNwbGlkZTIuZXZlbnQuYnVzIDogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcblxuICBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgYmluZGVyLmJpbmQoYnVzLCB0b0FycmF5KGV2ZW50cykuam9pbihcIiBcIiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgaXNBcnJheShlLmRldGFpbCkgPyBlLmRldGFpbCA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXQoZXZlbnQpIHtcbiAgICBiaW5kZXIuZGlzcGF0Y2goYnVzLCBldmVudCwgc2xpY2UoYXJndW1lbnRzLCAxKSk7XG4gIH1cblxuICBpZiAoU3BsaWRlMikge1xuICAgIFNwbGlkZTIuZXZlbnQub24oRVZFTlRfREVTVFJPWSwgYmluZGVyLmRlc3Ryb3kpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbihiaW5kZXIsIHtcbiAgICBidXM6IGJ1cyxcbiAgICBvbjogb24sXG4gICAgb2ZmOiBhcHBseShiaW5kZXIudW5iaW5kLCBidXMpLFxuICAgIGVtaXQ6IGVtaXRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RJbnRlcnZhbChpbnRlcnZhbCwgb25JbnRlcnZhbCwgb25VcGRhdGUsIGxpbWl0KSB7XG4gIHZhciBub3cgPSBEYXRlLm5vdztcbiAgdmFyIHN0YXJ0VGltZTtcbiAgdmFyIHJhdGUgPSAwO1xuICB2YXIgaWQ7XG4gIHZhciBwYXVzZWQgPSB0cnVlO1xuICB2YXIgY291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXBhdXNlZCkge1xuICAgICAgcmF0ZSA9IGludGVydmFsID8gbWluKChub3coKSAtIHN0YXJ0VGltZSkgLyBpbnRlcnZhbCwgMSkgOiAxO1xuICAgICAgb25VcGRhdGUgJiYgb25VcGRhdGUocmF0ZSk7XG5cbiAgICAgIGlmIChyYXRlID49IDEpIHtcbiAgICAgICAgb25JbnRlcnZhbCgpO1xuICAgICAgICBzdGFydFRpbWUgPSBub3coKTtcblxuICAgICAgICBpZiAobGltaXQgJiYgKytjb3VudCA+PSBsaW1pdCkge1xuICAgICAgICAgIHJldHVybiBwYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlkID0gcmFmKHVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQocmVzdW1lKSB7XG4gICAgcmVzdW1lIHx8IGNhbmNlbCgpO1xuICAgIHN0YXJ0VGltZSA9IG5vdygpIC0gKHJlc3VtZSA/IHJhdGUgKiBpbnRlcnZhbCA6IDApO1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGlkID0gcmFmKHVwZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgIHN0YXJ0VGltZSA9IG5vdygpO1xuICAgIHJhdGUgPSAwO1xuXG4gICAgaWYgKG9uVXBkYXRlKSB7XG4gICAgICBvblVwZGF0ZShyYXRlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgIHJhdGUgPSAwO1xuICAgIGlkID0gMDtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0KHRpbWUpIHtcbiAgICBpbnRlcnZhbCA9IHRpbWU7XG4gIH1cblxuICBmdW5jdGlvbiBpc1BhdXNlZCgpIHtcbiAgICByZXR1cm4gcGF1c2VkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgcmV3aW5kOiByZXdpbmQsXG4gICAgcGF1c2U6IHBhdXNlLFxuICAgIGNhbmNlbDogY2FuY2VsLFxuICAgIHNldDogc2V0LFxuICAgIGlzUGF1c2VkOiBpc1BhdXNlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBTdGF0ZShpbml0aWFsU3RhdGUpIHtcbiAgdmFyIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuXG4gIGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgIHN0YXRlID0gdmFsdWU7XG4gIH1cblxuICBmdW5jdGlvbiBpcyhzdGF0ZXMpIHtcbiAgICByZXR1cm4gaW5jbHVkZXModG9BcnJheShzdGF0ZXMpLCBzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNldDogc2V0LFxuICAgIGlzOiBpc1xuICB9O1xufVxuXG5mdW5jdGlvbiBUaHJvdHRsZShmdW5jLCBkdXJhdGlvbikge1xuICB2YXIgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24gfHwgMCwgZnVuYywgbnVsbCwgMSk7XG4gIHJldHVybi
6625BmdW5jdGlvbiAoKSB7XG4gICAgaW50ZXJ2YWwuaXNQYXVzZWQoKSAmJiBpbnRlcnZhbC5zdGFydCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBNZWRpYShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSBTcGxpZGUyLnN0YXRlO1xuICB2YXIgYnJlYWtwb2ludHMgPSBvcHRpb25zLmJyZWFrcG9pbnRzIHx8IHt9O1xuICB2YXIgcmVkdWNlZE1vdGlvbiA9IG9wdGlvbnMucmVkdWNlZE1vdGlvbiB8fCB7fTtcbiAgdmFyIGJpbmRlciA9IEV2ZW50QmluZGVyKCk7XG4gIHZhciBxdWVyaWVzID0gW107XG5cbiAgZnVuY3Rpb24gc2V0dXAoKSB7XG4gICAgdmFyIGlzTWluID0gb3B0aW9ucy5tZWRpYVF1ZXJ5ID09PSBcIm1pblwiO1xuICAgIG93bktleXMoYnJlYWtwb2ludHMpLnNvcnQoZnVuY3Rpb24gKG4sIG0pIHtcbiAgICAgIHJldHVybiBpc01pbiA/ICtuIC0gK20gOiArbSAtICtuO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmVnaXN0ZXIoYnJlYWtwb2ludHNba2V5XSwgXCIoXCIgKyAoaXNNaW4gPyBcIm1pblwiIDogXCJtYXhcIikgKyBcIi13aWR0aDpcIiArIGtleSArIFwicHgpXCIpO1xuICAgIH0pO1xuICAgIHJlZ2lzdGVyKHJlZHVjZWRNb3Rpb24sIE1FRElBX1BSRUZFUlNfUkVEVUNFRF9NT1RJT04pO1xuICAgIHVwZGF0ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveShjb21wbGV0ZWx5KSB7XG4gICAgaWYgKGNvbXBsZXRlbHkpIHtcbiAgICAgIGJpbmRlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXIob3B0aW9uczIsIHF1ZXJ5KSB7XG4gICAgdmFyIHF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGJpbmRlci5iaW5kKHF1ZXJ5TGlzdCwgXCJjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICBxdWVyaWVzLnB1c2goW29wdGlvbnMyLCBxdWVyeUxpc3RdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICB2YXIgZGVzdHJveWVkID0gc3RhdGUuaXMoREVTVFJPWUVEKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb247XG4gICAgdmFyIG1lcmdlZCA9IHF1ZXJpZXMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQyLCBlbnRyeSkge1xuICAgICAgcmV0dXJuIG1lcmdlKG1lcmdlZDIsIGVudHJ5WzFdLm1hdGNoZXMgPyBlbnRyeVswXSA6IHt9KTtcbiAgICB9LCB7fSk7XG4gICAgb21pdChvcHRpb25zKTtcbiAgICBzZXQobWVyZ2VkKTtcblxuICAgIGlmIChvcHRpb25zLmRlc3Ryb3kpIHtcbiAgICAgIFNwbGlkZTIuZGVzdHJveShvcHRpb25zLmRlc3Ryb3kgPT09IFwiY29tcGxldGVseVwiKTtcbiAgICB9IGVsc2UgaWYgKGRlc3Ryb3llZCkge1xuICAgICAgZGVzdHJveSh0cnVlKTtcbiAgICAgIFNwbGlkZTIubW91bnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlyZWN0aW9uICE9PSBvcHRpb25zLmRpcmVjdGlvbiAmJiBTcGxpZGUyLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWR1Y2UoZW5hYmxlKSB7XG4gICAgaWYgKG1hdGNoTWVkaWEoTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTikubWF0Y2hlcykge1xuICAgICAgZW5hYmxlID8gbWVyZ2Uob3B0aW9ucywgcmVkdWNlZE1vdGlvbikgOiBvbWl0KG9wdGlvbnMsIG93bktleXMocmVkdWNlZE1vdGlvbikpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNldChvcHRzLCBiYXNlLCBub3RpZnkpIHtcbiAgICBtZXJnZShvcHRpb25zLCBvcHRzKTtcbiAgICBiYXNlICYmIG1lcmdlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvcHRpb25zKSwgb3B0cyk7XG5cbiAgICBpZiAobm90aWZ5IHx8ICFzdGF0ZS5pcyhDUkVBVEVEKSkge1xuICAgICAgU3BsaWRlMi5lbWl0KEVWRU5UX1VQREFURUQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0dXA6IHNldHVwLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgcmVkdWNlOiByZWR1Y2UsXG4gICAgc2V0OiBzZXRcbiAgfTtcbn1cblxudmFyIEFSUk9XID0gXCJBcnJvd1wiO1xudmFyIEFSUk9XX0xFRlQgPSBBUlJPVyArIFwiTGVmdFwiO1xudmFyIEFSUk9XX1JJR0hUID0gQVJST1cgKyBcIlJpZ2h0XCI7XG52YXIgQVJST1dfVVAgPSBBUlJPVyArIFwiVXBcIjtcbnZhciBBUlJPV19ET1dOID0gQVJST1cgKyBcIkRvd25cIjtcbnZhciBMVFIgPSBcImx0clwiO1xudmFyIFJUTCA9IFwicnRsXCI7XG52YXIgVFRCID0gXCJ0dGJcIjtcbnZhciBPUklFTlRBVElPTl9NQVAgPSB7XG4gIHdpZHRoOiBbXCJoZWlnaHRcIl0sXG4gIGxlZnQ6IFtcInRvcFwiLCBcInJpZ2h0XCJdLFxuICByaWdodDogW1wiYm90dG9tXCIsIFwibGVmdFwiXSxcbiAgeDogW1wieVwiXSxcbiAgWDogW1wiWVwiXSxcbiAgWTogW1wiWFwiXSxcbiAgQXJyb3dMZWZ0OiBbQVJST1dfVVAsIEFSUk9XX1JJR0hUXSxcbiAgQXJyb3dSaWdodDogW0FSUk9XX0RPV04sIEFSUk9XX0xFRlRdXG59O1xuXG5mdW5jdGlvbiBEaXJlY3Rpb24oU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgZnVuY3Rpb24gcmVzb2x2ZShwcm9wLCBheGlzT25seSwgZGlyZWN0aW9uKSB7XG4gICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IG9wdGlvbnMuZGlyZWN0aW9uO1xuICAgIHZhciBpbmRleCA9IGRpcmVjdGlvbiA9PT0gUlRMICYmICFheGlzT25seSA/IDEgOiBkaXJlY3Rpb24gPT09IFRUQiA/IDAgOiAtMTtcbiAgICByZXR1cm4gT1JJRU5UQVRJT05fTUFQW3Byb3BdICYmIE9SSUVOVEFUSU9OX01BUFtwcm9wXVtpbmRleF0gfHwgcHJvcC5yZXBsYWNlKC93aWR0aHxsZWZ0fHJpZ2h0L2ksIGZ1bmN0aW9uIChtYXRjaCwgb2Zmc2V0KSB7XG4gICAgICB2Y
6625XIgcmVwbGFjZW1lbnQgPSBPUklFTlRBVElPTl9NQVBbbWF0Y2gudG9Mb3dlckNhc2UoKV1baW5kZXhdIHx8IG1hdGNoO1xuICAgICAgcmV0dXJuIG9mZnNldCA+IDAgPyByZXBsYWNlbWVudC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHJlcGxhY2VtZW50LnNsaWNlKDEpIDogcmVwbGFjZW1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvcmllbnQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgKiAob3B0aW9ucy5kaXJlY3Rpb24gPT09IFJUTCA/IDEgOiAtMSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgb3JpZW50OiBvcmllbnRcbiAgfTtcbn1cblxudmFyIFJPTEUgPSBcInJvbGVcIjtcbnZhciBUQUJfSU5ERVggPSBcInRhYmluZGV4XCI7XG52YXIgRElTQUJMRUQgPSBcImRpc2FibGVkXCI7XG52YXIgQVJJQV9QUkVGSVggPSBcImFyaWEtXCI7XG52YXIgQVJJQV9DT05UUk9MUyA9IEFSSUFfUFJFRklYICsgXCJjb250cm9sc1wiO1xudmFyIEFSSUFfQ1VSUkVOVCA9IEFSSUFfUFJFRklYICsgXCJjdXJyZW50XCI7XG52YXIgQVJJQV9TRUxFQ1RFRCA9IEFSSUFfUFJFRklYICsgXCJzZWxlY3RlZFwiO1xudmFyIEFSSUFfTEFCRUwgPSBBUklBX1BSRUZJWCArIFwibGFiZWxcIjtcbnZhciBBUklBX0xBQkVMTEVEQlkgPSBBUklBX1BSRUZJWCArIFwibGFiZWxsZWRieVwiO1xudmFyIEFSSUFfSElEREVOID0gQVJJQV9QUkVGSVggKyBcImhpZGRlblwiO1xudmFyIEFSSUFfT1JJRU5UQVRJT04gPSBBUklBX1BSRUZJWCArIFwib3JpZW50YXRpb25cIjtcbnZhciBBUklBX1JPTEVERVNDUklQVElPTiA9IEFSSUFfUFJFRklYICsgXCJyb2xlZGVzY3JpcHRpb25cIjtcbnZhciBBUklBX0xJVkUgPSBBUklBX1BSRUZJWCArIFwibGl2ZVwiO1xudmFyIEFSSUFfQlVTWSA9IEFSSUFfUFJFRklYICsgXCJidXN5XCI7XG52YXIgQVJJQV9BVE9NSUMgPSBBUklBX1BSRUZJWCArIFwiYXRvbWljXCI7XG52YXIgQUxMX0FUVFJJQlVURVMgPSBbUk9MRSwgVEFCX0lOREVYLCBESVNBQkxFRCwgQVJJQV9DT05UUk9MUywgQVJJQV9DVVJSRU5ULCBBUklBX0xBQkVMLCBBUklBX0xBQkVMTEVEQlksIEFSSUFfSElEREVOLCBBUklBX09SSUVOVEFUSU9OLCBBUklBX1JPTEVERVNDUklQVElPTl07XG52YXIgQ0xBU1NfUFJFRklYID0gUFJPSkVDVF9DT0RFICsgXCJfX1wiO1xudmFyIFNUQVRVU19DTEFTU19QUkVGSVggPSBcImlzLVwiO1xudmFyIENMQVNTX1JPT1QgPSBQUk9KRUNUX0NPREU7XG52YXIgQ0xBU1NfVFJBQ0sgPSBDTEFTU19QUkVGSVggKyBcInRyYWNrXCI7XG52YXIgQ0xBU1NfTElTVCA9IENMQVNTX1BSRUZJWCArIFwibGlzdFwiO1xudmFyIENMQVNTX1NMSURFID0gQ0xBU1NfUFJFRklYICsgXCJzbGlkZVwiO1xudmFyIENMQVNTX0NMT05FID0gQ0xBU1NfU0xJREUgKyBcIi0tY2xvbmVcIjtcbnZhciBDTEFTU19DT05UQUlORVIgPSBDTEFTU19TTElERSArIFwiX19jb250YWluZXJcIjtcbnZhciBDTEFTU19BUlJPV1MgPSBDTEFTU19QUkVGSVggKyBcImFycm93c1wiO1xudmFyIENMQVNTX0FSUk9XID0gQ0xBU1NfUFJFRklYICsgXCJhcnJvd1wiO1xudmFyIENMQVNTX0FSUk9XX1BSRVYgPSBDTEFTU19BUlJPVyArIFwiLS1wcmV2XCI7XG52YXIgQ0xBU1NfQVJST1dfTkVYVCA9IENMQVNTX0FSUk9XICsgXCItLW5leHRcIjtcbnZhciBDTEFTU19QQUdJTkFUSU9OID0gQ0xBU1NfUFJFRklYICsgXCJwYWdpbmF0aW9uXCI7XG52YXIgQ0xBU1NfUEFHSU5BVElPTl9QQUdFID0gQ0xBU1NfUEFHSU5BVElPTiArIFwiX19wYWdlXCI7XG52YXIgQ0xBU1NfUFJPR1JFU1MgPSBDTEFTU19QUkVGSVggKyBcInByb2dyZXNzXCI7XG52YXIgQ0xBU1NfUFJPR1JFU1NfQkFSID0gQ0xBU1NfUFJPR1JFU1MgKyBcIl9fYmFyXCI7XG52YXIgQ0xBU1NfVE9HR0xFID0gQ0xBU1NfUFJFRklYICsgXCJ0b2dnbGVcIjtcbnZhciBDTEFTU19UT0dHTEVfUExBWSA9IENMQVNTX1RPR0dMRSArIFwiX19wbGF5XCI7XG52YXIgQ0xBU1NfVE9HR0xFX1BBVVNFID0gQ0xBU1NfVE9HR0xFICsgXCJfX3BhdXNlXCI7XG52YXIgQ0xBU1NfU1BJTk5FUiA9IENMQVNTX1BSRUZJWCArIFwic3Bpbm5lclwiO1xudmFyIENMQVNTX1NSID0gQ0xBU1NfUFJFRklYICsgXCJzclwiO1xudmFyIENMQVNTX0lOSVRJQUxJWkVEID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwiaW5pdGlhbGl6ZWRcIjtcbnZhciBDTEFTU19BQ1RJVkUgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJhY3RpdmVcIjtcbnZhciBDTEFTU19QUkVWID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwicHJldlwiO1xudmFyIENMQVNTX05FWFQgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJuZXh0XCI7XG52YXIgQ0xBU1NfVklTSUJMRSA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcInZpc2libGVcIjtcbnZhciBDTEFTU19MT0FESU5HID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwibG9hZGluZ1wiO1xudmFyIENMQVNTX0ZPQ1VTX0lOID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwiZm9jdXMtaW5cIjtcbnZhciBDTEFTU19PVkVSRkxP
6625VyA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcIm92ZXJmbG93XCI7XG52YXIgU1RBVFVTX0NMQVNTRVMgPSBbQ0xBU1NfQUNUSVZFLCBDTEFTU19WSVNJQkxFLCBDTEFTU19QUkVWLCBDTEFTU19ORVhULCBDTEFTU19MT0FESU5HLCBDTEFTU19GT0NVU19JTiwgQ0xBU1NfT1ZFUkZMT1ddO1xudmFyIENMQVNTRVMgPSB7XG4gIHNsaWRlOiBDTEFTU19TTElERSxcbiAgY2xvbmU6IENMQVNTX0NMT05FLFxuICBhcnJvd3M6IENMQVNTX0FSUk9XUyxcbiAgYXJyb3c6IENMQVNTX0FSUk9XLFxuICBwcmV2OiBDTEFTU19BUlJPV19QUkVWLFxuICBuZXh0OiBDTEFTU19BUlJPV19ORVhULFxuICBwYWdpbmF0aW9uOiBDTEFTU19QQUdJTkFUSU9OLFxuICBwYWdlOiBDTEFTU19QQUdJTkFUSU9OX1BBR0UsXG4gIHNwaW5uZXI6IENMQVNTX1NQSU5ORVJcbn07XG5cbmZ1bmN0aW9uIGNsb3Nlc3QoZnJvbSwgc2VsZWN0b3IpIHtcbiAgaWYgKGlzRnVuY3Rpb24oZnJvbS5jbG9zZXN0KSkge1xuICAgIHJldHVybiBmcm9tLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICB9XG5cbiAgdmFyIGVsbSA9IGZyb207XG5cbiAgd2hpbGUgKGVsbSAmJiBlbG0ubm9kZVR5cGUgPT09IDEpIHtcbiAgICBpZiAobWF0Y2hlcyhlbG0sIHNlbGVjdG9yKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWxtID0gZWxtLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZWxtO1xufVxuXG52YXIgRlJJQ1RJT04gPSA1O1xudmFyIExPR19JTlRFUlZBTCA9IDIwMDtcbnZhciBQT0lOVEVSX0RPV05fRVZFTlRTID0gXCJ0b3VjaHN0YXJ0IG1vdXNlZG93blwiO1xudmFyIFBPSU5URVJfTU9WRV9FVkVOVFMgPSBcInRvdWNobW92ZSBtb3VzZW1vdmVcIjtcbnZhciBQT0lOVEVSX1VQX0VWRU5UUyA9IFwidG91Y2hlbmQgdG91Y2hjYW5jZWwgbW91c2V1cCBjbGlja1wiO1xuXG5mdW5jdGlvbiBFbGVtZW50cyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZS5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UuYmluZDtcblxuICB2YXIgcm9vdCA9IFNwbGlkZTIucm9vdDtcbiAgdmFyIGkxOG4gPSBvcHRpb25zLmkxOG47XG4gIHZhciBlbGVtZW50cyA9IHt9O1xuICB2YXIgc2xpZGVzID0gW107XG4gIHZhciByb290Q2xhc3NlcyA9IFtdO1xuICB2YXIgdHJhY2tDbGFzc2VzID0gW107XG4gIHZhciB0cmFjaztcbiAgdmFyIGxpc3Q7XG4gIHZhciBpc1VzaW5nS2V5O1xuXG4gIGZ1bmN0aW9uIHNldHVwKCkge1xuICAgIGNvbGxlY3QoKTtcbiAgICBpbml0KCk7XG4gICAgdXBkYXRlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBkZXN0cm95KTtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBzZXR1cCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgdXBkYXRlKTtcbiAgICBiaW5kKGRvY3VtZW50LCBQT0lOVEVSX0RPV05fRVZFTlRTICsgXCIga2V5ZG93blwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaXNVc2luZ0tleSA9IGUudHlwZSA9PT0gXCJrZXlkb3duXCI7XG4gICAgfSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgIH0pO1xuICAgIGJpbmQocm9vdCwgXCJmb2N1c2luXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHJvb3QsIENMQVNTX0ZPQ1VTX0lOLCAhIWlzVXNpbmdLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveShjb21wbGV0ZWx5KSB7XG4gICAgdmFyIGF0dHJzID0gQUxMX0FUVFJJQlVURVMuY29uY2F0KFwic3R5bGVcIik7XG4gICAgZW1wdHkoc2xpZGVzKTtcbiAgICByZW1vdmVDbGFzcyhyb290LCByb290Q2xhc3Nlcyk7XG4gICAgcmVtb3ZlQ2xhc3ModHJhY2ssIHRyYWNrQ2xhc3Nlcyk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKFt0cmFjaywgbGlzdF0sIGF0dHJzKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUocm9vdCwgY29tcGxldGVseSA/IGF0dHJzIDogW1wic3R5bGVcIiwgQVJJQV9ST0xFREVTQ1JJUFRJT05dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICByZW1vdmVDbGFzcyhyb290LCByb290Q2xhc3Nlcyk7XG4gICAgcmVtb3ZlQ2xhc3ModHJhY2ssIHRyYWNrQ2xhc3Nlcyk7XG4gICAgcm9vdENsYXNzZXMgPSBnZXRDbGFzc2VzKENMQVNTX1JPT1QpO1xuICAgIHRyYWNrQ2xhc3NlcyA9IGdldENsYXNzZXMoQ0xBU1NfVFJBQ0spO1xuICAgIGFkZENsYXNzKHJvb3QsIHJvb3RDbGFzc2VzKTtcbiAgICBhZGRDbGFzcyh0cmFjaywgdHJhY2tDbGFzc2VzKTtcbiAgICBzZXRBdHRyaWJ1dGUocm9vdCwgQVJJQV9MQUJFTCwgb3B0aW9ucy5sYWJlbCk7XG4gICAgc2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUxMRURCWSwgb3B0aW9ucy5sYWJlbGxlZGJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbGxlY3QoKSB7XG4gICAgdHJhY2sgPSBmaW5kKFwiLlwiICsgQ0xBU1NfVFJBQ0spO1xuICAgIGxpc3QgPSBjaGlsZCh0cmFjaywgXCIuXCIgKyBDTEFTU19MSVNUKTtcbiAgICBhc3NlcnQodHJhY2sgJiYgbGlzdCwgXCJBIHRyYWNrL2xpc3QgZWxlbWVudCBpcyBtaXNzaW5nLlwiKTtcbiAgICBwdXNoKHNsaWRlcywgY2hpbGRyZW4obGlzdCwgXCIuXCIgKyBDTEFTU19TTElERSArIFwiOm5vdCguXCIgKyBDTEFTU19DTE9ORSArIFwiKVwiKSk7XG4gICAgZm9yT3duKHtcbiAgICAgIGFycm93czogQ0xBU1NfQVJST1dTLFxuICAgICAgcGFnaW5hdGlvbjogQ0xBU1NfUEFHSU5BVElPTixcbiAgICAgIHByZXY6IENMQVNTX0FSUk9XX1BSRVYsXG4gICAgICBuZXh0OiBDTEFTU19BUlJPV19ORVhULFxuICAgICAgYmFyOiBDTEFTU19QUk9HUkVTU19CQVIsXG4gICAgICB0b2dnbGU6IENMQVNTX1RPR0dMRVxuICAgIH0sIGZ1bmN0aW9uIChjbGFzc05hbWUsIGtleSkge1xuICAgICAgZWxlbWVudHNba2V5XSA9IGZpbmQoXCIuXCIgKyBjbGFzc05hbWUpO1xuICAgIH0pO1xuICAgIGFzc2lnbihlbGVtZW50cywge1xuICAgICAgcm9vdDogcm9vdCxcbiAgICAgIHRyYWNrOiB0cmFjayxcbiAgICAgIGxpc3Q6IGxpc3QsXG4gICAgICBzbGlkZXM6IHNsaWRlc1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgaWQgPSByb290LmlkIHx8IHVuaXF1ZUlkKFBST0pFQ1RfQ09ERSk7XG4gICAgdmFyIHJvbGUgPSBvcHRpb25zLnJvbGU7XG4gICAgcm9vdC5pZCA9IGlkO1xuICAgIHRyYWNrLmlkID0gdHJhY2suaWQgfHwgaWQgKyBcIi10cmFja1wiO1xuICAgIGxpc3QuaWQgPSBsaXN0LmlkIHx8IGlkICsgXCItbGlzdFwiO1xuXG4gICAgaWYgKCFnZXRBdHRyaWJ1dGUocm9vdCwgUk9MRSkgJiYgcm9vdC50YWdOYW1lICE9PSBcIlNFQ1RJT05cIiAmJiByb2xlKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUocm9vdCwgUk9MRSwgcm9sZSk7XG4gICAgfVxuXG4gICAgc2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfUk9MRURFU0NSSVBUSU9OLCBpMThuLmNhcm91c2VsKTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgUk9MRSwgXCJwcmVzZW50YXRpb25cIik7XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kKHNlbGVjdG9yKSB7XG4gICAgdmFyIGVsbSA9IHF1ZXJ5KHJvb3QsIHNlbGVjdG9yKTtcbiAgICByZXR1cm4gZWxtICYmIGNsb3Nlc3QoZWxtLCBcIi5cIiArIENMQVNTX1JPT1QpID09PSByb290ID8gZWxtIDogdm9pZCAwO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q2xhc3NlcyhiYXNlKSB7XG4gICAgcmV0dXJuIFtiYXNlICsgXCItLVwiICsgb3B0aW9ucy50eXBlLCBiYXNlICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24sIG9wdGlvbnMuZHJhZyAmJiBiYXNlICsgXCItLWRyYWdnYWJsZVwiLCBvcHRpb25zLmlzTmF2aWdhdGlvbiAmJiBiYXNlICsgXCItLW5hdlwiLCBiYXNlID09PSBDTEFTU19ST09UICYmIENMQVNTX0FDVElWRV07XG4gIH1cblxuICByZXR1cm4gYXNzaWduKGVsZW1lbnRzLCB7XG4gICAgc2V0dXA6IHNldHVwLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95XG4gIH0pO1xufVxuXG52YXIgU0xJREUgPSBcInNsaWRlXCI7XG52YXIgTE9PUCA9IFwibG9vcFwiO1xudmFyIEZBREUgPSBcImZhZGVcIjtcblxuZnVuY3Rpb24gU2xpZGUkMShTcGxpZGUyLCBpbmRleCwgc2xpZGVJbmRleCwgc2xpZGUpIHtcbiAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIHZhciBvbiA9IGV2ZW50Lm9uLFxuICAgICAgZW1pdCA9IGV2ZW50LmVtaXQsXG4gICAgICBiaW5kID0gZXZlbnQuYmluZDtcbiAgdmFyIENvbXBvbmVudHMgPSBTcGxpZGUyLkNvbXBvbmVudHMsXG4gICAgICByb290ID0gU3BsaWRlMi5yb290LFxuICAgICAgb3B0aW9ucyA9IFNwbGlkZTIub3B0aW9ucztcbiAgdmFyIGlzTmF2aWdhdGlvbiA9IG9wdGlvbnMuaXNOYXZpZ2F0aW9uLFxuICAgICAgdXBkYXRlT25Nb3ZlID0gb3B0aW9ucy51cGRhdGVPbk1vdmUsXG4gICAgICBpMThuID0gb3B0aW9ucy5pMThuLFxuICAgICAgcGFnaW5hdGlvbiA9IG9wdGlvbnMucGFnaW5hdGlvbixcbiAgICAgIHNsaWRlRm9jdXMgPSBvcHRpb25zLnNsaWRlRm9jdXM7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50cy5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIHN0eWxlcyA9IGdldEF0dHJpYnV0ZShzbGlkZSwgXCJzdHlsZVwiKTtcbiAgdmFyIGxhYmVsID0gZ2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMKTtcbiAgdmFyIGlzQ2xvbmUgPSBzbGlkZUluZGV4ID4gLTE7XG4gIHZhciBjb250YWluZXIgPSBjaGlsZChzbGlkZSwgXCIuXCIgKyBDTEFTU19DT05UQUlORVIpO1xuICB2YXIgZGVzdHJveWVkO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmICghaXNDbG9uZSkge1xuICAgICAgc2xpZGUuaWQgPSByb290LmlkICsgXCItc2xpZGVcIiArIHBhZChpbmRleCArIDEpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBST0xFLCBwYWdpbmF0aW9uID8gXCJ0YWJwYW5lbFwiIDogXCJncm91cFwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9ST0xFREVTQ1JJUFRJT04sIGkxOG4uc2xpZGUpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMLCBsYWJlbCB8fCBmb3JtYXQoaTE4bi5zbGlkZUxhYmVsLCBbaW5kZXggKyAxLCBTcGxpZGUyLmxlbmd0aF0pKTtcbiAgICB9XG5cbiAgICBsaXN0ZW4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgICBiaW5kKHNsaWRlLCBcImNsaWNrXCIsIGFwcGx5KGVtaXQsIEVWRU5UX0NMSUNLLCBzZWxmKSk7XG4gICAgYmluZChzbGlkZSwgXCJrZXlkb3duXCIsIGFwcGx5KGVtaXQsIEVWRU5UX1NMSURFX0tFWURPV04sIHNlbGYpKTtcbiAgICBvbihbRVZFTlRfTU9WRUQsIEVWRU5UX1NISU
6625ZURUQsIEVWRU5UX1NDUk9MTEVEXSwgdXBkYXRlKTtcbiAgICBvbihFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQsIGluaXROYXZpZ2F0aW9uKTtcblxuICAgIGlmICh1cGRhdGVPbk1vdmUpIHtcbiAgICAgIG9uKEVWRU5UX01PVkUsIG9uTW92ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgICByZW1vdmVDbGFzcyhzbGlkZSwgU1RBVFVTX0NMQVNTRVMpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShzbGlkZSwgQUxMX0FUVFJJQlVURVMpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgXCJzdHlsZVwiLCBzdHlsZXMpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9MQUJFTCwgbGFiZWwgfHwgXCJcIik7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0TmF2aWdhdGlvbigpIHtcbiAgICB2YXIgY29udHJvbHMgPSBTcGxpZGUyLnNwbGlkZXMubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgIHZhciBTbGlkZTIgPSB0YXJnZXQuc3BsaWRlLkNvbXBvbmVudHMuU2xpZGVzLmdldEF0KGluZGV4KTtcbiAgICAgIHJldHVybiBTbGlkZTIgPyBTbGlkZTIuc2xpZGUuaWQgOiBcIlwiO1xuICAgIH0pLmpvaW4oXCIgXCIpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9MQUJFTCwgZm9ybWF0KGkxOG4uc2xpZGVYLCAoaXNDbG9uZSA/IHNsaWRlSW5kZXggOiBpbmRleCkgKyAxKSk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0NPTlRST0xTLCBjb250cm9scyk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBST0xFLCBzbGlkZUZvY3VzID8gXCJidXR0b25cIiA6IFwiXCIpO1xuICAgIHNsaWRlRm9jdXMgJiYgcmVtb3ZlQXR0cmlidXRlKHNsaWRlLCBBUklBX1JPTEVERVNDUklQVElPTik7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdmUoKSB7XG4gICAgaWYgKCFkZXN0cm95ZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIWRlc3Ryb3llZCkge1xuICAgICAgdmFyIGN1cnIgPSBTcGxpZGUyLmluZGV4O1xuICAgICAgdXBkYXRlQWN0aXZpdHkoKTtcbiAgICAgIHVwZGF0ZVZpc2liaWxpdHkoKTtcbiAgICAgIHRvZ2dsZUNsYXNzKHNsaWRlLCBDTEFTU19QUkVWLCBpbmRleCA9PT0gY3VyciAtIDEpO1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX05FWFQsIGluZGV4ID09PSBjdXJyICsgMSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQWN0aXZpdHkoKSB7XG4gICAgdmFyIGFjdGl2ZSA9IGlzQWN0aXZlKCk7XG5cbiAgICBpZiAoYWN0aXZlICE9PSBoYXNDbGFzcyhzbGlkZSwgQ0xBU1NfQUNUSVZFKSkge1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX0FDVElWRSwgYWN0aXZlKTtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9DVVJSRU5ULCBpc05hdmlnYXRpb24gJiYgYWN0aXZlIHx8IFwiXCIpO1xuICAgICAgZW1pdChhY3RpdmUgPyBFVkVOVF9BQ1RJVkUgOiBFVkVOVF9JTkFDVElWRSwgc2VsZik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmlzaWJpbGl0eSgpIHtcbiAgICB2YXIgdmlzaWJsZSA9IGlzVmlzaWJsZSgpO1xuICAgIHZhciBoaWRkZW4gPSAhdmlzaWJsZSAmJiAoIWlzQWN0aXZlKCkgfHwgaXNDbG9uZSk7XG5cbiAgICBpZiAoIVNwbGlkZTIuc3RhdGUuaXMoW01PVklORywgU0NST0xMSU5HXSkpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9ISURERU4sIGhpZGRlbiB8fCBcIlwiKTtcbiAgICB9XG5cbiAgICBzZXRBdHRyaWJ1dGUocXVlcnlBbGwoc2xpZGUsIG9wdGlvbnMuZm9jdXNhYmxlTm9kZXMgfHwgXCJcIiksIFRBQl9JTkRFWCwgaGlkZGVuID8gLTEgOiBcIlwiKTtcblxuICAgIGlmIChzbGlkZUZvY3VzKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIFRBQl9JTkRFWCwgaGlkZGVuID8gLTEgOiAwKTtcbiAgICB9XG5cbiAgICBpZiAodmlzaWJsZSAhPT0gaGFzQ2xhc3Moc2xpZGUsIENMQVNTX1ZJU0lCTEUpKSB7XG4gICAgICB0b2dnbGVDbGFzcyhzbGlkZSwgQ0xBU1NfVklTSUJMRSwgdmlzaWJsZSk7XG4gICAgICBlbWl0KHZpc2libGUgPyBFVkVOVF9WSVNJQkxFIDogRVZFTlRfSElEREVOLCBzZWxmKTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2libGUgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gc2xpZGUpIHtcbiAgICAgIHZhciBTbGlkZTIgPSBDb21wb25lbnRzLlNsaWRlcy5nZXRBdChTcGxpZGUyLmluZGV4KTtcbiAgICAgIFNsaWRlMiAmJiBmb2N1cyhTbGlkZTIuc2xpZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0eWxlJDEocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcikge1xuICAgIHN0eWxlKHVzZUNvbnRhaW5lciAmJiBjb250YWluZXIgfHwgc2xpZGUsIHByb3AsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgIHZhciBjdXJyID0gU3BsaWRlMi5pbmRleDtcbiAgICByZXR1cm4gY3VyciA9PT0gaW5kZXggfHwgb3B0aW9ucy5jbG9uZVN0YXR1cyAmJiBjdXJyID09PSBzbGlkZUluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gaXNWaXNpYmxlKCkge1xuICAgIGlmIChTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICByZXR1cm4gaXNBY3RpdmUoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJhY2tSZWN0ID0gcmVjdChDb21wb25lbnRzLkVsZW1lbnRzLnRyYWNrKTtcbiAgICB2YXIgc2xpZGVSZWN0ID0gcmVjdChzbGlkZSk7XG4gICAgdmFyIGxlZnQgPSByZXNvbHZlKFwibGVmdFwiLCB0cnVlKTtcbiAgICB2YXIgcmlnaHQgPSByZXNvbHZlKFwicmlnaHRcIiwgdHJ1ZSk7XG4gICAgcmV0dXJuIGZsb29yKHRyYWNrUmVjdFtsZWZ0XSkgPD0gY2VpbChzbGlkZVJlY3RbbGVmdF0pICYmIGZsb29yKHNsaWRlUmVjdFtyaWdodF0pIDw9IGNlaWwodHJhY2tSZWN0W3JpZ2h0XSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1dpdGhpbihmcm9tLCBkaXN0YW5jZSkge1xuICAgIHZhciBkaWZmID0gYWJzKGZyb20gLSBpbmRleCk7XG5cbiAgICBpZiAoIWlzQ2xvbmUgJiYgKG9wdGlvbnMucmV3aW5kIHx8IFNwbGlkZTIuaXMoTE9PUCkpKSB7XG4gICAgICBkaWZmID0gbWluKGRpZmYsIFNwbGlkZTIubGVuZ3RoIC0gZGlmZik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmYgPD0gZGlzdGFuY2U7XG4gIH1cblxuICB2Y
6625XIgc2VsZiA9IHtcbiAgICBpbmRleDogaW5kZXgsXG4gICAgc2xpZGVJbmRleDogc2xpZGVJbmRleCxcbiAgICBzbGlkZTogc2xpZGUsXG4gICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgaXNDbG9uZTogaXNDbG9uZSxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICB1cGRhdGU6IHVwZGF0ZSxcbiAgICBzdHlsZTogc3R5bGUkMSxcbiAgICBpc1dpdGhpbjogaXNXaXRoaW5cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbmZ1bmN0aW9uIFNsaWRlcyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMiA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UyLm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTIuZW1pdCxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UyLmJpbmQ7XG5cbiAgdmFyIF9Db21wb25lbnRzMiRFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgc2xpZGVzID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzLnNsaWRlcyxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMubGlzdDtcbiAgdmFyIFNsaWRlczIgPSBbXTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfUkVGUkVTSCwgZGVzdHJveSk7XG4gICAgb24oRVZFTlRfUkVGUkVTSCwgaW5pdCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaW5kZXgpIHtcbiAgICAgIHJlZ2lzdGVyKHNsaWRlLCBpbmRleCwgLTEpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBmb3JFYWNoJDEoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgU2xpZGUyLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICBlbXB0eShTbGlkZXMyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBmb3JFYWNoJDEoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgU2xpZGUyLnVwZGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXIoc2xpZGUsIGluZGV4LCBzbGlkZUluZGV4KSB7XG4gICAgdmFyIG9iamVjdCA9IFNsaWRlJDEoU3BsaWRlMiwgaW5kZXgsIHNsaWRlSW5kZXgsIHNsaWRlKTtcbiAgICBvYmplY3QubW91bnQoKTtcbiAgICBTbGlkZXMyLnB1c2gob2JqZWN0KTtcbiAgICBTbGlkZXMyLnNvcnQoZnVuY3Rpb24gKFNsaWRlMSwgU2xpZGUyKSB7XG4gICAgICByZXR1cm4gU2xpZGUxLmluZGV4IC0gU2xpZGUyLmluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KGV4Y2x1ZGVDbG9uZXMpIHtcbiAgICByZXR1cm4gZXhjbHVkZUNsb25lcyA/IGZpbHRlcihmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gIVNsaWRlMi5pc0Nsb25lO1xuICAgIH0pIDogU2xpZGVzMjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEluKHBhZ2UpIHtcbiAgICB2YXIgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gICAgdmFyIGluZGV4ID0gQ29udHJvbGxlci50b0luZGV4KHBhZ2UpO1xuICAgIHZhciBtYXggPSBDb250cm9sbGVyLmhhc0ZvY3VzKCkgPyAxIDogb3B0aW9ucy5wZXJQYWdlO1xuICAgIHJldHVybiBmaWx0ZXIoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgcmV0dXJuIGJldHdlZW4oU2xpZGUyLmluZGV4LCBpbmRleCwgaW5kZXggKyBtYXggLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgcmV0dXJuIGZpbHRlcihpbmRleClbMF07XG4gIH1cblxuICBmdW5jdGlvbiBhZGQoaXRlbXMsIGluZGV4KSB7XG4gICAgZm9yRWFjaChpdGVtcywgZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICBpZiAoaXNTdHJpbmcoc2xpZGUpKSB7XG4gICAgICAgIHNsaWRlID0gcGFyc2VIdG1sKHNsaWRlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoc2xpZGUpKSB7XG4gICAgICAgIHZhciByZWYgPSBzbGlkZXNbaW5kZXhdO1xuICAgICAgICByZWYgPyBiZWZvcmUoc2xpZGUsIHJlZikgOiBhcHBlbmQobGlzdCwgc2xpZGUpO1xuICAgICAgICBhZGRDbGFzcyhzbGlkZSwgb3B0aW9ucy5jbGFzc2VzLnNsaWRlKTtcbiAgICAgICAgb2JzZXJ2ZUltYWdlcyhzbGlkZSwgYXBwbHkoZW1pdCwgRVZFTlRfUkVTSVpFKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZSQxKG1hdGNoZXIpIHtcbiAgICByZW1vdmUoZmlsdGVyKG1hdGNoZXIpLm1hcChmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gU2xpZGUyLnNsaWRlO1xuICAgIH0pKTtcbiAgICBlbWl0KEVWRU5UX1JFRlJFU0gpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yRWFjaCQxKGl0ZXJhdGVlLCBleGNsdWRlQ2xvbmVzKSB7XG4gICAgZ2V0KGV4Y2x1ZGVDbG9uZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gZmlsdGVyKG1hdGNoZXIpIHtcbiAgICByZXR1cm4gU2xpZGVzMi5maWx0ZXIoaXNGdW5jdGlvbihtYXRjaGVyKSA/IG1hdGNoZXIgOiBmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gaXNTdHJpbmcobWF0Y2hlcikgPyBtYXRjaGVzKFNsaWRlMi5zbGlkZSwgbWF0Y2hlcikgOiBpbmNsdWRlcyh0b0FycmF5KG1hdGNoZXIpLCBTbGlkZTIuaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc3R5bGUocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcikge1xuICAgIGZvckVhY2gkMShmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICBTbGlkZTIuc3R5bGUocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvYnNlcnZlSW1hZ2VzKGVsbSwgY2FsbGJhY2spIHtcbiAgICB2YXIgaW1hZ2VzID0gcXVlcnlBbGwoZWxtLCBcImltZ1wiKTtcbiAgICB2YXIgbGVuZ3RoID0gaW1hZ2VzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGgpIHtcbiAgICAgIGltYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgYmluZChpbWcsIFwibG9h
6625ZCBlcnJvclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCEgLS1sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExlbmd0aChleGNsdWRlQ2xvbmVzKSB7XG4gICAgcmV0dXJuIGV4Y2x1ZGVDbG9uZXMgPyBzbGlkZXMubGVuZ3RoIDogU2xpZGVzMi5sZW5ndGg7XG4gIH1cblxuICBmdW5jdGlvbiBpc0Vub3VnaCgpIHtcbiAgICByZXR1cm4gU2xpZGVzMi5sZW5ndGggPiBvcHRpb25zLnBlclBhZ2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlLFxuICAgIHJlZ2lzdGVyOiByZWdpc3RlcixcbiAgICBnZXQ6IGdldCxcbiAgICBnZXRJbjogZ2V0SW4sXG4gICAgZ2V0QXQ6IGdldEF0LFxuICAgIGFkZDogYWRkLFxuICAgIHJlbW92ZTogcmVtb3ZlJDEsXG4gICAgZm9yRWFjaDogZm9yRWFjaCQxLFxuICAgIGZpbHRlcjogZmlsdGVyLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICBnZXRMZW5ndGg6IGdldExlbmd0aCxcbiAgICBpc0Vub3VnaDogaXNFbm91Z2hcbiAgfTtcbn1cblxuZnVuY3Rpb24gTGF5b3V0KFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UzID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTMub24sXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMy5iaW5kLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTMuZW1pdDtcblxuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgX0NvbXBvbmVudHMyJEVsZW1lbnRzMiA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgcm9vdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czIucm9vdCxcbiAgICAgIHRyYWNrID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzMi50cmFjayxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMyLmxpc3Q7XG4gIHZhciBnZXRBdCA9IFNsaWRlcy5nZXRBdCxcbiAgICAgIHN0eWxlU2xpZGVzID0gU2xpZGVzLnN0eWxlO1xuICB2YXIgdmVydGljYWw7XG4gIHZhciByb290UmVjdDtcbiAgdmFyIG92ZXJmbG93O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGluaXQoKTtcbiAgICBiaW5kKHdpbmRvdywgXCJyZXNpemUgbG9hZFwiLCBUaHJvdHRsZShhcHBseShlbWl0LCBFVkVOVF9SRVNJWkUpKSk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBpbml0KTtcbiAgICBvbihFVkVOVF9SRVNJWkUsIHJlc2l6ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHZlcnRpY2FsID0gb3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQjtcbiAgICBzdHlsZShyb290LCBcIm1heFdpZHRoXCIsIHVuaXQob3B0aW9ucy53aWR0aCkpO1xuICAgIHN0eWxlKHRyYWNrLCByZXNvbHZlKFwicGFkZGluZ0xlZnRcIiksIGNzc1BhZGRpbmcoZmFsc2UpKTtcbiAgICBzdHlsZSh0cmFjaywgcmVzb2x2ZShcInBhZGRpbmdSaWdodFwiKSwgY3NzUGFkZGluZyh0cnVlKSk7XG4gICAgcmVzaXplKHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzaXplKGZvcmNlKSB7XG4gICAgdmFyIG5ld1JlY3QgPSByZWN0KHJvb3QpO1xuXG4gICAgaWYgKGZvcmNlIHx8IHJvb3RSZWN0LndpZHRoICE9PSBuZXdSZWN0LndpZHRoIHx8IHJvb3RSZWN0LmhlaWdodCAhPT0gbmV3UmVjdC5oZWlnaHQpIHtcbiAgICAgIHN0eWxlKHRyYWNrLCBcImhlaWdodFwiLCBjc3NUcmFja0hlaWdodCgpKTtcbiAgICAgIHN0eWxlU2xpZGVzKHJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSwgdW5pdChvcHRpb25zLmdhcCkpO1xuICAgICAgc3R5bGVTbGlkZXMoXCJ3aWR0aFwiLCBjc3NTbGlkZVdpZHRoKCkpO1xuICAgICAgc3R5bGVTbGlkZXMoXCJoZWlnaHRcIiwgY3NzU2xpZGVIZWlnaHQoKSwgdHJ1ZSk7XG4gICAgICByb290UmVjdCA9IG5ld1JlY3Q7XG4gICAgICBlbWl0KEVWRU5UX1JFU0laRUQpO1xuXG4gICAgICBpZiAob3ZlcmZsb3cgIT09IChvdmVyZmxvdyA9IGlzT3ZlcmZsb3coKSkpIHtcbiAgICAgICAgdG9nZ2xlQ2xhc3Mocm9vdCwgQ0xBU1NfT1ZFUkZMT1csIG92ZXJmbG93KTtcbiAgICAgICAgZW1pdChFVkVOVF9PVkVSRkxPVywgb3ZlcmZsb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1BhZGRpbmcocmlnaHQpIHtcbiAgICB2YXIgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZztcbiAgICB2YXIgcHJvcCA9IHJlc29sdmUocmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIik7XG4gICAgcmV0dXJuIHBhZGRpbmcgJiYgdW5pdChwYWRkaW5nW3Byb3BdIHx8IChpc09iamVjdChwYWRkaW5nKSA/IDAgOiBwYWRkaW5nKSkgfHwgXCIwcHhcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1RyYWNrSGVpZ2h0KCkge1xuICAgIHZhciBoZWlnaHQgPSBcIlwiO1xuXG4gICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICBoZWlnaHQgPSBjc3NIZWlnaHQoKTtcbiAgICAgIGFzc2VydChoZWlnaHQsIFwiaGVpZ2h0IG9yIGhlaWdodFJhdGlvIGlzIG1pc3NpbmcuXCIpO1xuICAgICAgaGVpZ2h0ID0gXCJjYWxjKFwiICsgaGVpZ2h0ICsgXCIgLSBcIiArIGNzc1BhZGRpbmcoZmFsc2UpICsgXCIgLSBcIiArIGNzc1BhZGRpbmcodHJ1ZSkgKyBcIilcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzSGVpZ2h0KCkge1xuICAgIHJldHVybiB1bml0KG9wdGlvbnMuaGVpZ2h0IHx8IHJlY3QobGlzdCkud2lkdGggKiBvcHRpb25zLmhlaWdodFJhdGlvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1NsaWRlV2lkdGgoKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b1dpZHRoID8gbnVsbCA6IHVuaXQob3B0aW9ucy5maXhlZFdpZHRoKSB8fCAodmVydGljYWwgPyBcIlwiIDogY3NzU2xpZGVTaXplKCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5maXhlZEhlaWdodCkgfHwgKHZlcnRpY2FsID8gb3B0aW9ucy5hdXRv
6625SGVpZ2h0ID8gbnVsbCA6IGNzc1NsaWRlU2l6ZSgpIDogY3NzSGVpZ2h0KCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVTaXplKCkge1xuICAgIHZhciBnYXAgPSB1bml0KG9wdGlvbnMuZ2FwKTtcbiAgICByZXR1cm4gXCJjYWxjKCgxMDAlXCIgKyAoZ2FwICYmIFwiICsgXCIgKyBnYXApICsgXCIpL1wiICsgKG9wdGlvbnMucGVyUGFnZSB8fCAxKSArIChnYXAgJiYgXCIgLSBcIiArIGdhcCkgKyBcIilcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RTaXplKCkge1xuICAgIHJldHVybiByZWN0KGxpc3QpW3Jlc29sdmUoXCJ3aWR0aFwiKV07XG4gIH1cblxuICBmdW5jdGlvbiBzbGlkZVNpemUoaW5kZXgsIHdpdGhvdXRHYXApIHtcbiAgICB2YXIgU2xpZGUgPSBnZXRBdChpbmRleCB8fCAwKTtcbiAgICByZXR1cm4gU2xpZGUgPyByZWN0KFNsaWRlLnNsaWRlKVtyZXNvbHZlKFwid2lkdGhcIildICsgKHdpdGhvdXRHYXAgPyAwIDogZ2V0R2FwKCkpIDogMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdGFsU2l6ZShpbmRleCwgd2l0aG91dEdhcCkge1xuICAgIHZhciBTbGlkZSA9IGdldEF0KGluZGV4KTtcblxuICAgIGlmIChTbGlkZSkge1xuICAgICAgdmFyIHJpZ2h0ID0gcmVjdChTbGlkZS5zbGlkZSlbcmVzb2x2ZShcInJpZ2h0XCIpXTtcbiAgICAgIHZhciBsZWZ0ID0gcmVjdChsaXN0KVtyZXNvbHZlKFwibGVmdFwiKV07XG4gICAgICByZXR1cm4gYWJzKHJpZ2h0IC0gbGVmdCkgKyAod2l0aG91dEdhcCA/IDAgOiBnZXRHYXAoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmdW5jdGlvbiBzbGlkZXJTaXplKHdpdGhvdXRHYXApIHtcbiAgICByZXR1cm4gdG90YWxTaXplKFNwbGlkZTIubGVuZ3RoIC0gMSkgLSB0b3RhbFNpemUoMCkgKyBzbGlkZVNpemUoMCwgd2l0aG91dEdhcCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRHYXAoKSB7XG4gICAgdmFyIFNsaWRlID0gZ2V0QXQoMCk7XG4gICAgcmV0dXJuIFNsaWRlICYmIHBhcnNlRmxvYXQoc3R5bGUoU2xpZGUuc2xpZGUsIHJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSkpIHx8IDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQYWRkaW5nKHJpZ2h0KSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3R5bGUodHJhY2ssIHJlc29sdmUoXCJwYWRkaW5nXCIgKyAocmlnaHQgPyBcIlJpZ2h0XCIgOiBcIkxlZnRcIikpKSkgfHwgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzT3ZlcmZsb3coKSB7XG4gICAgcmV0dXJuIFNwbGlkZTIuaXMoRkFERSkgfHwgc2xpZGVyU2l6ZSh0cnVlKSA+IGxpc3RTaXplKCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICByZXNpemU6IHJlc2l6ZSxcbiAgICBsaXN0U2l6ZTogbGlzdFNpemUsXG4gICAgc2xpZGVTaXplOiBzbGlkZVNpemUsXG4gICAgc2xpZGVyU2l6ZTogc2xpZGVyU2l6ZSxcbiAgICB0b3RhbFNpemU6IHRvdGFsU2l6ZSxcbiAgICBnZXRQYWRkaW5nOiBnZXRQYWRkaW5nLFxuICAgIGlzT3ZlcmZsb3c6IGlzT3ZlcmZsb3dcbiAgfTtcbn1cblxudmFyIE1VTFRJUExJRVIgPSAyO1xuXG5mdW5jdGlvbiBDbG9uZXMoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIHZhciBvbiA9IGV2ZW50Lm9uO1xuICB2YXIgRWxlbWVudHMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcztcbiAgdmFyIHJlc29sdmUgPSBDb21wb25lbnRzMi5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIGNsb25lcyA9IFtdO1xuICB2YXIgY2xvbmVDb3VudDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9SRUZSRVNILCByZW1vdW50KTtcbiAgICBvbihbRVZFTlRfVVBEQVRFRCwgRVZFTlRfUkVTSVpFXSwgb2JzZXJ2ZSk7XG5cbiAgICBpZiAoY2xvbmVDb3VudCA9IGNvbXB1dGVDbG9uZUNvdW50KCkpIHtcbiAgICAgIGdlbmVyYXRlKGNsb25lQ291bnQpO1xuICAgICAgQ29tcG9uZW50czIuTGF5b3V0LnJlc2l6ZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdW50KCkge1xuICAgIGRlc3Ryb3koKTtcbiAgICBtb3VudCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICByZW1vdmUoY2xvbmVzKTtcbiAgICBlbXB0eShjbG9uZXMpO1xuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9ic2VydmUoKSB7XG4gICAgdmFyIGNvdW50ID0gY29tcHV0ZUNsb25lQ291bnQoKTtcblxuICAgIGlmIChjbG9uZUNvdW50ICE9PSBjb3VudCkge1xuICAgICAgaWYgKGNsb25lQ291bnQgPCBjb3VudCB8fCAhY291bnQpIHtcbiAgICAgICAgZXZlbnQuZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZW5lcmF0ZShjb3VudCkge1xuICAgIHZhciBzbGlkZXMgPSBTbGlkZXMuZ2V0KCkuc2xpY2UoKTtcbiAgICB2YXIgbGVuZ3RoID0gc2xpZGVzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGgpIHtcbiAgICAgIHdoaWxlIChzbGlkZXMubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgICAgcHVzaChzbGlkZXMsIHNsaWRlcyk7XG4gICAgICB9XG5cbiAgICAgIHB1c2goc2xpZGVzLnNsaWNlKC1jb3VudCksIHNsaWRlcy5zbGljZSgwLCBjb3VudCkpLmZvckVhY2goZnVuY3Rpb24gKFNsaWRlLCBpbmRleCkge1xuICAgICAgICB2Y
6625XIgaXNIZWFkID0gaW5kZXggPCBjb3VudDtcbiAgICAgICAgdmFyIGNsb25lID0gY2xvbmVEZWVwKFNsaWRlLnNsaWRlLCBpbmRleCk7XG4gICAgICAgIGlzSGVhZCA/IGJlZm9yZShjbG9uZSwgc2xpZGVzWzBdLnNsaWRlKSA6IGFwcGVuZChFbGVtZW50cy5saXN0LCBjbG9uZSk7XG4gICAgICAgIHB1c2goY2xvbmVzLCBjbG9uZSk7XG4gICAgICAgIFNsaWRlcy5yZWdpc3RlcihjbG9uZSwgaW5kZXggLSBjb3VudCArIChpc0hlYWQgPyAwIDogbGVuZ3RoKSwgU2xpZGUuaW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvbmVEZWVwKGVsbSwgaW5kZXgpIHtcbiAgICB2YXIgY2xvbmUgPSBlbG0uY2xvbmVOb2RlKHRydWUpO1xuICAgIGFkZENsYXNzKGNsb25lLCBvcHRpb25zLmNsYXNzZXMuY2xvbmUpO1xuICAgIGNsb25lLmlkID0gU3BsaWRlMi5yb290LmlkICsgXCItY2xvbmVcIiArIHBhZChpbmRleCArIDEpO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVDbG9uZUNvdW50KCkge1xuICAgIHZhciBjbG9uZXMyID0gb3B0aW9ucy5jbG9uZXM7XG5cbiAgICBpZiAoIVNwbGlkZTIuaXMoTE9PUCkpIHtcbiAgICAgIGNsb25lczIgPSAwO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoY2xvbmVzMikpIHtcbiAgICAgIHZhciBmaXhlZFNpemUgPSBvcHRpb25zW3Jlc29sdmUoXCJmaXhlZFdpZHRoXCIpXSAmJiBDb21wb25lbnRzMi5MYXlvdXQuc2xpZGVTaXplKDApO1xuICAgICAgdmFyIGZpeGVkQ291bnQgPSBmaXhlZFNpemUgJiYgY2VpbChyZWN0KEVsZW1lbnRzLnRyYWNrKVtyZXNvbHZlKFwid2lkdGhcIildIC8gZml4ZWRTaXplKTtcbiAgICAgIGNsb25lczIgPSBmaXhlZENvdW50IHx8IG9wdGlvbnNbcmVzb2x2ZShcImF1dG9XaWR0aFwiKV0gJiYgU3BsaWRlMi5sZW5ndGggfHwgb3B0aW9ucy5wZXJQYWdlICogTVVMVElQTElFUjtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmVzMjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cblxuZnVuY3Rpb24gTW92ZShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlNCA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U0Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTQuZW1pdDtcblxuICB2YXIgc2V0ID0gU3BsaWRlMi5zdGF0ZS5zZXQ7XG4gIHZhciBfQ29tcG9uZW50czIkTGF5b3V0ID0gQ29tcG9uZW50czIuTGF5b3V0LFxuICAgICAgc2xpZGVTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5zbGlkZVNpemUsXG4gICAgICBnZXRQYWRkaW5nID0gX0NvbXBvbmVudHMyJExheW91dC5nZXRQYWRkaW5nLFxuICAgICAgdG90YWxTaXplID0gX0NvbXBvbmVudHMyJExheW91dC50b3RhbFNpemUsXG4gICAgICBsaXN0U2l6ZSA9IF9Db21wb25lbnRzMiRMYXlvdXQubGlzdFNpemUsXG4gICAgICBzbGlkZXJTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5zbGlkZXJTaXplO1xuICB2YXIgX0NvbXBvbmVudHMyJERpcmVjdGlvID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLFxuICAgICAgcmVzb2x2ZSA9IF9Db21wb25lbnRzMiREaXJlY3Rpby5yZXNvbHZlLFxuICAgICAgb3JpZW50ID0gX0NvbXBvbmVudHMyJERpcmVjdGlvLm9yaWVudDtcbiAgdmFyIF9Db21wb25lbnRzMiRFbGVtZW50czMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMzLmxpc3QsXG4gICAgICB0cmFjayA9IF9Db21wb25lbnRzMiRFbGVtZW50czMudHJhY2s7XG4gIHZhciBUcmFuc2l0aW9uO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIFRyYW5zaXRpb24gPSBDb21wb25lbnRzMi5UcmFuc2l0aW9uO1xuICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9SRVNJWkVELCBFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNIXSwgcmVwb3NpdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiByZXBvc2l0aW9uKCkge1xuICAgIGlmICghQ29tcG9uZW50czIuQ29udHJvbGxlci5pc0J1c3koKSkge1xuICAgICAgQ29tcG9uZW50czIuU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAganVtcChTcGxpZGUyLmluZGV4KTtcbiAgICAgIENvbXBvbmVudHMyLlNsaWRlcy51cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlKGRlc3QsIGluZGV4LCBwcmV2LCBjYWxsYmFjaykge1xuICAgIGlmIChkZXN0ICE9PSBpbmRleCAmJiBjYW5TaGlmdChkZXN0ID4gcHJldikpIHtcbiAgICAgIGNhbmNlbCgpO1xuICAgICAgdHJhbnNsYXRlKHNoaWZ0KGdldFBvc2l0aW9uKCksIGRlc3QgPiBwcmV2KSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2V0KE1PVklORyk7XG4gICAgZW1pdChFVkVOVF9NT1ZFLCBpbmRleCwgcHJldiwgZGVzdCk7XG4gICAgVHJhbnNpdGlvbi5zdGFydChpbmRleCwgZnVuY3Rpb24gKCkge1xuICAgICAgc2V0KElETEUpO1xuICAgICAgZW1pdChFVkVOVF9NT1ZFRCwgaW5kZXgsIHByZXYsIGRlc3QpO1xuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bXAoaW5kZXgpIHtcbiAgICB0cmFuc2xhdGUodG9Qb3NpdGlvbihpbmRleCwgdHJ1ZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHBvc2l0aW9uLCBwcmV2ZW50TG9vcCkge1xuICAgIGlmICghU3BsaWRlMi5pcyhGQURFKSkge1xuICAgICAgdmFyIGRlc3RpbmF0aW9uID0gcHJldmVudExvb3AgPyBwb3NpdGlvbiA6IGxvb3AocG9zaXRpb24pO1xuICAgICAgc3R5bGUobGlzdCwgXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGVcIiArIHJlc29sdmUoXCJYXCIpICsgXCIoXCIgKyBkZXN0aW5hdGlvbiArIFwicHgpXCIpO1xuICAgICAgcG9zaXRpb24gIT09IGRlc3RpbmF0aW9uICYmIGVtaXQoRVZFTlRfU0hJRlRFRCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbG9vcChwb3NpdGlvbikge1xuICAgIGlmIChTcGxpZGUyLmlzKExPT1ApKSB7XG4gICAgICB2Y
6625XIgaW5kZXggPSB0b0luZGV4KHBvc2l0aW9uKTtcbiAgICAgIHZhciBleGNlZWRlZE1heCA9IGluZGV4ID4gQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRFbmQoKTtcbiAgICAgIHZhciBleGNlZWRlZE1pbiA9IGluZGV4IDwgMDtcblxuICAgICAgaWYgKGV4Y2VlZGVkTWluIHx8IGV4Y2VlZGVkTWF4KSB7XG4gICAgICAgIHBvc2l0aW9uID0gc2hpZnQocG9zaXRpb24sIGV4Y2VlZGVkTWF4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBzaGlmdChwb3NpdGlvbiwgYmFja3dhcmRzKSB7XG4gICAgdmFyIGV4Y2VzcyA9IHBvc2l0aW9uIC0gZ2V0TGltaXQoYmFja3dhcmRzKTtcbiAgICB2YXIgc2l6ZSA9IHNsaWRlclNpemUoKTtcbiAgICBwb3NpdGlvbiAtPSBvcmllbnQoc2l6ZSAqIChjZWlsKGFicyhleGNlc3MpIC8gc2l6ZSkgfHwgMSkpICogKGJhY2t3YXJkcyA/IDEgOiAtMSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIHRyYW5zbGF0ZShnZXRQb3NpdGlvbigpLCB0cnVlKTtcbiAgICBUcmFuc2l0aW9uLmNhbmNlbCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9JbmRleChwb3NpdGlvbikge1xuICAgIHZhciBTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMuZ2V0KCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgU2xpZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
6625XIgc2xpZGVJbmRleCA9IFNsaWRlc1tpXS5pbmRleDtcbiAgICAgIHZhciBkaXN0YW5jZSA9IGFicyh0b1Bvc2l0aW9uKHNsaWRlSW5kZXgsIHRydWUpIC0gcG9zaXRpb24pO1xuXG4gICAgICBpZiAoZGlzdGFuY2UgPD0gbWluRGlzdGFuY2UpIHtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgICAgaW5kZXggPSBzbGlkZUluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gdG9Qb3NpdGlvbihpbmRleCwgdHJpbW1pbmcpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBvcmllbnQodG90YWxTaXplKGluZGV4IC0gMSkgLSBvZmZzZXQoaW5kZXgpKTtcbiAgICByZXR1cm4gdHJpbW1pbmcgPyB0cmltKHBvc2l0aW9uKSA6IHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgdmFyIGxlZnQgPSByZXNvbHZlKFwibGVmdFwiKTtcbiAgICByZXR1cm4gcmVjdChsaXN0KVtsZWZ0XSAtIHJlY3QodHJhY2spW2xlZnRdICsgb3JpZW50KGdldFBhZGRpbmcoZmFsc2UpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyaW0ocG9zaXRpb24pIHtcbiAgICBpZiAob3B0aW9ucy50cmltU3BhY2UgJiYgU3BsaWRlMi5pcyhTTElERSkpIHtcbiAgICAgIHBvc2l0aW9uID0gY2xhbXAocG9zaXRpb24sIDAsIG9yaWVudChzbGlkZXJTaXplKHRydWUpIC0gbGlzdFNpemUoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9mZnNldChpbmRleCkge1xuICAgIHZhciBmb2N1cyA9IG9wdGlvbnMuZm9jdXM7XG4gICAgcmV0dXJuIGZvY3VzID09PSBcImNlbnRlclwiID8gKGxpc3RTaXplKCkgLSBzbGlkZVNpemUoaW5kZXgsIHRydWUpKSAvIDIgOiArZm9jdXMgKiBzbGlkZVNpemUoaW5kZXgpIHx8IDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMaW1pdChtYXgpIHtcbiAgICByZXR1cm4gdG9Qb3NpdGlvbihtYXggPyBDb21wb25lbnRzMi5Db250cm9sbGVyLmdldEVuZCgpIDogMCwgISFvcHRpb25zLnRyaW1TcGFjZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5TaGlmdChiYWNrd2FyZHMpIHtcbiAgICB2YXIgc2hpZnRlZCA9IG9yaWVudChzaGlmdChnZXRQb3NpdGlvbigpLCBiYWNrd2FyZHMpKTtcbiAgICByZXR1cm4gYmFja3dhcmRzID8gc2hpZnRlZCA+PSAwIDogc2hpZnRlZCA8PSBsaXN0W3Jlc29sdmUoXCJzY3JvbGxXaWR0aFwiKV0gLSByZWN0KHRyYWNrKVtyZXNvbHZlKFwid2lkdGhcIildO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhjZWVkZWRMaW1pdChtYXgsIHBvc2l0aW9uKSB7XG4gICAgcG9zaXRpb24gPSBpc1VuZGVmaW5lZChwb3NpdGlvbikgPyBnZXRQb3NpdGlvbigpIDogcG9zaXRpb247XG4gICAgdmFyIGV4Y2VlZGVkTWluID0gbWF4ICE9PSB0cnVlICYmIG9yaWVudChwb3NpdGlvbikgPCBvcmllbnQoZ2V0TGltaXQoZmFsc2UpKTtcbiAgICB2YXIgZXhjZWVkZWRNYXggPSBtYXggIT09IGZhbHNlICYmIG9yaWVudChwb3NpdGlvbikgPiBvcmllbnQoZ2V0TGltaXQodHJ1ZSkpO1xuICAgIHJldHVybiBleGNlZWRlZE1pbiB8fCBleGNlZWRlZE1heDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIG1vdmU6IG1vdmUsXG4gICAganVtcDoganVtcCxcbiAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICBzaGlmdDogc2hpZnQsXG4gICAgY2FuY2VsOiBjYW5jZWwsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICB0b1Bvc2l0aW9uOiB0b1Bvc2l0aW9uLFxuICAgIGdldFBvc2l0aW9uOiBnZXRQb3NpdGlvbixcbiAgICBnZXRMaW1pdDogZ2V0TGltaXQsXG4gICAgZXhjZWVkZWRMaW1pdDogZXhjZWVkZWRMaW1pdCxcbiAgICByZXBvc2l0aW9uOiByZXBvc2l0aW9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIENvbnRyb2xsZXIoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTUgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNS5vbixcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2U1LmVtaXQ7XG5cbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlO1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZ2V0TGltaXQgPSBNb3ZlLmdldExpbWl0LFxuICAgICAgdG9Qb3NpdGlvbiA9IE1vdmUudG9Qb3NpdGlvbjtcbiAgdmFyIF9Db21wb25lbnRzMiRTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMsXG4gICAgICBpc0Vub3VnaCA9IF9Db21wb25lbnRzMiRTbGlkZXMuaXNFbm91Z2gsXG4gICAgICBnZXRMZW5ndGggPSBfQ29tcG9uZW50czIkU2xpZGVzLmdldExlbmd0aDtcbiAgdmFyIG9taXRFbmQgPSBvcHRpb25zLm9taXRFbmQ7XG4gIHZhciBpc0xvb3AgPSBTcGxpZGUyLmlzKExPT1ApO1xuICB2YXIgaXNTbGlkZSA9IFNwbGlkZTIuaXMoU0xJREUpO1xuICB2YXIgZ2V0TmV4dCA9IGFwcGx5KGdldEFkamFjZW50LCBmYWxzZSk7XG4gIHZhciBnZXRQcmV2ID0gYXBwbHkoZ2V0QWRqYWNlbnQsIHRydWUpO1xuICB2YXIgY3VyckluZGV4ID0gb3B0aW9ucy5zdGFydCB8fCAwO1xuICB2YXIgZW5kSW5kZXg7XG4gIHZhciBwcmV2SW5kZXggPSBjdXJySW5kZXg7XG4gIHZhciBzbGlkZUNvdW50O1xuICB2YXIgcGVyTW92ZTtcbiAgdmFyIHBlclBhZ2U7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKFtFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNILCBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRF0sIGluaXQpO1xuICAgIG9uKEVWRU5UX1JFU0laRUQsIG9uUmVzaXplZCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHNsaWRlQ291bnQgPSBnZXRMZW5ndGgodHJ1ZSk7XG4gICAgcGVyTW92ZSA9IG9wdGlvbnMucGVyTW92ZTtcbiAgICBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgIGVuZEluZGV4ID0gZ2V0RW5kKCk7XG4gICAgdmFyIGluZGV4ID0gY2xhbXAoY3VyckluZGV4LCAwLCBvbWl0RW5kID8gZW5kSW5kZXggOiBzbGlkZUNvdW50IC0gMSk7XG5cbiAgICBpZiAoaW5kZXggIT09IGN1cnJJbmRleCkge1xuICAgICAgY3VyckluZGV4ID0gaW5kZXg7XG4gICAgICBNb3ZlLnJlcG9zaXRpb24oKTtcbiAgICB9XG4gI
6625H1cblxuICBmdW5jdGlvbiBvblJlc2l6ZWQoKSB7XG4gICAgaWYgKGVuZEluZGV4ICE9PSBnZXRFbmQoKSkge1xuICAgICAgZW1pdChFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ28oY29udHJvbCwgYWxsb3dTYW1lSW5kZXgsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFpc0J1c3koKSkge1xuICAgICAgdmFyIGRlc3QgPSBwYXJzZShjb250cm9sKTtcbiAgICAgIHZhciBpbmRleCA9IGxvb3AoZGVzdCk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xICYmIChhbGxvd1NhbWVJbmRleCB8fCBpbmRleCAhPT0gY3VyckluZGV4KSkge1xuICAgICAgICBzZXRJbmRleChpbmRleCk7XG4gICAgICAgIE1vdmUubW92ZShkZXN0LCBpbmRleCwgcHJldkluZGV4LCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgY2FsbGJhY2spIHtcbiAgICBDb21wb25lbnRzMi5TY3JvbGwuc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGluZGV4ID0gbG9vcChNb3ZlLnRvSW5kZXgoZ2V0UG9zaXRpb24oKSkpO1xuICAgICAgc2V0SW5kZXgob21pdEVuZCA/IG1pbihpbmRleCwgZW5kSW5kZXgpIDogaW5kZXgpO1xuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlKGNvbnRyb2wpIHtcbiAgICB2YXIgaW5kZXggPSBjdXJySW5kZXg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udHJvbCkpIHtcbiAgICAgIHZhciBfcmVmID0gY29udHJvbC5tYXRjaCgvKFsrXFwtPD5dKShcXGQrKT8vKSB8fCBbXSxcbiAgICAgICAgICBpbmRpY2F0b3IgPSBfcmVmWzFdLFxuICAgICAgICAgIG51bWJlciA9IF9yZWZbMl07XG5cbiAgICAgIGlmIChpbmRpY2F0b3IgPT09IFwiK1wiIHx8IGluZGljYXRvciA9PT0gXCItXCIpIHtcbiAgICAgICAgaW5kZXggPSBjb21wdXRlRGVzdEluZGV4KGN1cnJJbmRleCArICsoXCJcIiArIGluZGljYXRvciArICgrbnVtYmVyIHx8IDEpKSwgY3VyckluZGV4KTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kaWNhdG9yID09PSBcIj5cIikge1xuICAgICAgICBpbmRleCA9IG51bWJlciA/IHRvSW5kZXgoK251bWJlcikgOiBnZXROZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRpY2F0b3IgPT09IFwiPFwiKSB7XG4gICAgICAgIGluZGV4ID0gZ2V0UHJldih0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXggPSBpc0xvb3AgPyBjb250cm9sIDogY2xhbXAoY29udHJvbCwgMCwgZW5kSW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFkamFjZW50KHByZXYsIGRlc3RpbmF0aW9uKSB7XG4gICAgdmFyIG51bWJlciA9IHBlck1vdmUgfHwgKGhhc0ZvY3VzKCkgPyAxIDogcGVyUGFnZSk7XG4gICAgdmFyIGRlc3QgPSBjb21wdXRlRGVzdEluZGV4KGN1cnJJbmRleCArIG51bWJlciAqIChwcmV2ID8gLTEgOiAxKSwgY3VyckluZGV4LCAhKHBlck1vdmUgfHwgaGFzRm9jdXMoKSkpO1xuXG4gICAgaWYgKGRlc3QgPT09IC0xICYmIGlzU2xpZGUpIHtcbiAgICAgIGlmICghYXBwcm94aW1hdGVseUVxdWFsKGdldFBvc2l0aW9uKCksIGdldExpbWl0KCFwcmV2KSwgMSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXYgPyAwIDogZW5kSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uID8gZGVzdCA6IGxvb3AoZGVzdCk7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlRGVzdEluZGV4KGRlc3QsIGZyb20sIHNuYXBQYWdlKSB7XG4gICAgaWYgKGlzRW5vdWdoKCkgfHwgaGFzRm9jdXMoKSkge1xuICAgICAgdmFyIGluZGV4ID0gY29tcHV0ZU1vdmFibGVEZXN0SW5kZXgoZGVzdCk7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gZGVzdCkge1xuICAgICAgICBmcm9tID0gZGVzdDtcbiAgICAgICAgZGVzdCA9IGluZGV4O1xuICAgICAgICBzbmFwUGFnZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzdCA8IDAgfHwgZGVzdCA+IGVuZEluZGV4KSB7XG4gICAgICAgIGlmICghcGVyTW92ZSAmJiAoYmV0d2VlbigwLCBkZXN0LCBmcm9tLCB0cnVlKSB8fCBiZXR3ZWVuKGVuZEluZGV4LCBmcm9tLCBkZXN0LCB0cnVlKSkpIHtcbiAgICAgICAgICBkZXN0ID0gdG9JbmRleCh0b1BhZ2UoZGVzdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0xvb3ApIHtcbiAgICAgICAgICAgIGRlc3QgPSBzbmFwUGFnZSA/IGRlc3QgPCAwID8gLShzbGlkZUNvdW50ICUgcGVyUGFnZSB8fCBwZXJQYWdlKSA6IHNsaWRlQ291bnQgOiBkZXN0O1xuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZXdpbmQpIHtcbiAgICAgICAgICAgIGRlc3QgPSBkZXN0IDwgMCA/IGVuZEluZGV4IDogMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVzdCA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNuYXBQYWdlICYmIGRlc3QgIT09IGZyb20pIHtcbiAgICAgICAgICBkZXN0ID0gdG9JbmRleCh0b1BhZ2UoZnJvbSkgKyAoZGVzdCA8IGZyb20gPyAtMSA6IDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZXN0ID0gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlTW92YWJsZURlc3RJbmRleChkZXN0KSB7XG4gICAgaWYgKGlzU2xpZGUgJiYgb3B0aW9ucy50cmltU3BhY2UgPT09IFwibW92ZVwiICYmIGRlc3QgIT09IGN1cnJJbmRleCkge1xuICAgICAgdmFyIHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uID09PSB0b1Bvc2l0aW9uKGRlc3QsIHRydWUpICYmIGJldHdlZW4oZGVzdCwgMCwgU3BsaWRlMi5sZW5ndGggLSAxLCAhb3B0aW9ucy5yZXdpbmQpKSB7XG4gICAgICAgIGRlc3QgPCBjdXJySW5kZXggPyAtLWRlc3QgOiArK2Rlc3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBsb29wKGluZGV4KSB7XG4gICAgcmV0dXJuIGlzTG9vcCA/IChpbmRleCArIHNsaWRlQ291bnQpICUgc2xpZGVDb3VudCB8fCAwIDogaW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRFbmQoKSB7XG4gICAgdmFyIGVuZCA9IHNsaWRlQ291bnQgLSAoaGFzRm9jdXMoKSB8fCBpc0xvb3AgJiYgcGVyTW92ZSA/IDEgOiBwZXJQYWdlKTtcblxuICAgI
6625HdoaWxlIChvbWl0RW5kICYmIGVuZC0tID4gMCkge1xuICAgICAgaWYgKHRvUG9zaXRpb24oc2xpZGVDb3VudCAtIDEsIHRydWUpICE9PSB0b1Bvc2l0aW9uKGVuZCwgdHJ1ZSkpIHtcbiAgICAgICAgZW5kKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFtcChlbmQsIDAsIHNsaWRlQ291bnQgLSAxKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvSW5kZXgocGFnZSkge1xuICAgIHJldHVybiBjbGFtcChoYXNGb2N1cygpID8gcGFnZSA6IHBlclBhZ2UgKiBwYWdlLCAwLCBlbmRJbmRleCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b1BhZ2UoaW5kZXgpIHtcbiAgICByZXR1cm4gaGFzRm9jdXMoKSA/IG1pbihpbmRleCwgZW5kSW5kZXgpIDogZmxvb3IoKGluZGV4ID49IGVuZEluZGV4ID8gc2xpZGVDb3VudCAtIDEgOiBpbmRleCkgLyBwZXJQYWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvRGVzdChkZXN0aW5hdGlvbikge1xuICAgIHZhciBjbG9zZXN0ID0gTW92ZS50b0luZGV4KGRlc3RpbmF0aW9uKTtcbiAgICByZXR1cm4gaXNTbGlkZSA/IGNsYW1wKGNsb3Nlc3QsIDAsIGVuZEluZGV4KSA6IGNsb3Nlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRJbmRleChpbmRleCkge1xuICAgIGlmIChpbmRleCAhPT0gY3VyckluZGV4KSB7XG4gICAgICBwcmV2SW5kZXggPSBjdXJySW5kZXg7XG4gICAgICBjdXJySW5kZXggPSBpbmRleDtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRJbmRleChwcmV2KSB7XG4gICAgcmV0dXJuIHByZXYgPyBwcmV2SW5kZXggOiBjdXJySW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBoYXNGb2N1cygpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKG9wdGlvbnMuZm9jdXMpIHx8IG9wdGlvbnMuaXNOYXZpZ2F0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNCdXN5KCkge1xuICAgIHJldHVybiBTcGxpZGUyLnN0YXRlLmlzKFtNT1ZJTkcsIFNDUk9MTElOR10pICYmICEhb3B0aW9ucy53YWl0Rm9yVHJhbnNpdGlvbjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGdvOiBnbyxcbiAgICBzY3JvbGw6IHNjcm9sbCxcbiAgICBnZXROZXh0OiBnZXROZXh0LFxuICAgIGdldFByZXY6IGdldFByZXYsXG4gICAgZ2V0QWRqYWNlbnQ6IGdldEFkamFjZW50LFxuICAgIGdldEVuZDogZ2V0RW5kLFxuICAgIHNldEluZGV4OiBzZXRJbmRleCxcbiAgICBnZXRJbmRleDogZ2V0SW5kZXgsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICB0b1BhZ2U6IHRvUGFnZSxcbiAgICB0b0Rlc3Q6IHRvRGVzdCxcbiAgICBoYXNGb2N1czogaGFzRm9jdXMsXG4gICAgaXNCdXN5OiBpc0J1c3lcbiAgfTtcbn1cblxudmFyIFhNTF9OQU1FX1NQQUNFID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xudmFyIFBBVEggPSBcIm0xNS41IDAuOTMyLTQuMyA0LjM4IDE0LjUgMTQuNi0xNC41IDE0LjUgNC4zIDQuNCAxNC42LTE0LjYgNC40LTQuMy00LjQtNC40LTE0LjYtMTQuNnpcIjtcbnZhciBTSVpFID0gNDA7XG5cbmZ1bmN0aW9uIEFycm93cyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBiaW5kID0gZXZlbnQuYmluZCxcbiAgICAgIGVtaXQgPSBldmVudC5lbWl0O1xuICB2YXIgY2xhc3NlcyA9IG9wdGlvbnMuY2xhc3NlcyxcbiAgICAgIGkxOG4gPSBvcHRpb25zLmkxOG47XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gIHZhciBwbGFjZWhvbGRlciA9IEVsZW1lbnRzLmFycm93cyxcbiAgICAgIHRyYWNrID0gRWxlbWVudHMudHJhY2s7XG4gIHZhciB3cmFwcGVyID0gcGxhY2Vob2xkZXI7XG4gIHZhciBwcmV2ID0gRWxlbWVudHMucHJldjtcbiAgdmFyIG5leHQgPSBFbGVtZW50cy5uZXh0O1xuICB2YXIgY3JlYXRlZDtcbiAgdmFyIHdyYXBwZXJDbGFzc2VzO1xuICB2YXIgYXJyb3dzID0ge307XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKEVWRU5UX1VQREFURUQsIHJlbW91bnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIGVuYWJsZWQgPSBvcHRpb25zLmFycm93cztcblxuICAgIGlmIChlbmFibGVkICYmICEocHJldiAmJiBuZXh0KSkge1xuICAgICAgY3JlYXRlQXJyb3dzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgYXNzaWduKGFycm93cywge1xuICAgICAgICBwcmV2OiBwcmV2LFxuICAgICAgICBuZXh0OiBuZXh0XG4gICAgICB9KTtcbiAgICAgIGRpc3BsYXkod3JhcHBlciwgZW5hYmxlZCA/IFwiXCIgOiBcIm5vbmVcIik7XG4gICAgICBhZGRDbGFzcyh3cmFwcGVyLCB3cmFwcGVyQ2xhc3NlcyA9IENMQVNTX0FSUk9XUyArIFwiLS1cIiArIG9wdGlvbnMuZGlyZWN0aW9uKTtcblxuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgbGlzdGVuKCk7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICBzZXRBdHRyaWJ1dGUoW3ByZXYsIG5leHRdLCBBUklBX0NPTlRST0xTLCB0cmFjay5pZCk7XG4gICAgICAgIGVtaXQoRVZFTlRfQVJST1dTX01PVU5URUQsIHByZXYsIG5leHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgZXZlbnQuZGVzdHJveSgpO1xuICAgIHJlbW92ZUNsYXNzKHdyYXBwZXIsIHdyYXBwZXJDbGFzc2VzKTtcblxuICAgIGlmIChjcmVhdGVkKSB7XG4gICAgICByZW1vdmUocGxhY2Vob2xkZXIgPyBbcHJldiwgbmV4dF0gOiB3cmFwcGVyKTtcbiAgICAgIHByZXYgPSBuZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQXR0cmlidXRlKFtwcmV2LCBuZXh0XSwgQUxMX0FUVFJJQlVURVMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfTU9WRUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX1NDUk9MTEVELCBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRF0sIHVwZGF0ZSk7XG4gICAgYmluZChuZXh0LCBcImNsaWNrXCIsIGFwcGx5KGdvLCBcIj5cIikpO1xuICAgIGJpbmQocHJldiwgXCJjbGlja1wiLCBhcHBseShnbywgXCI8XCIpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKGNvbnRyb2wpIHtcbiAgICBDb250cm9sbGVyLmdvKGNvbnRyb2wsIHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyb3dzKCkge1xuICAgIHdyYXBwZXIgPSBwbGFjZWhvbGRlciB8fCBjcmVhdGUoXCJkaXZcIiwgY2xhc3Nlcy5hcnJvd3MpO1xuICAgIHByZXYgPSBjcmVhdGVBcnJvdyh0cnVlKTtcbiAgICBuZXh0ID0gY3JlYXRlQXJyb3coZmFsc2UpO1xuICAgIGNyZWF0ZWQgPSB0cnVlO1xuICAgIGFwcGVuZCh3cmFwcGVyLCBbcHJldiwgbmV4dF0pO1xuICAgICFwbGFjZWhvbGRlciAmJiBiZWZvcmUo
6625d3JhcHBlciwgdHJhY2spO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyb3cocHJldjIpIHtcbiAgICB2YXIgYXJyb3cgPSBcIjxidXR0b24gY2xhc3M9XFxcIlwiICsgY2xhc3Nlcy5hcnJvdyArIFwiIFwiICsgKHByZXYyID8gY2xhc3Nlcy5wcmV2IDogY2xhc3Nlcy5uZXh0KSArIFwiXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiPjxzdmcgeG1sbnM9XFxcIlwiICsgWE1MX05BTUVfU1BBQ0UgKyBcIlxcXCIgdmlld0JveD1cXFwiMCAwIFwiICsgU0laRSArIFwiIFwiICsgU0laRSArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiPjxwYXRoIGQ9XFxcIlwiICsgKG9wdGlvbnMuYXJyb3dQYXRoIHx8IFBBVEgpICsgXCJcXFwiIC8+XCI7XG4gICAgcmV0dXJuIHBhcnNlSHRtbChhcnJvdyk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgdmFyIGluZGV4ID0gU3BsaWRlMi5pbmRleDtcbiAgICAgIHZhciBwcmV2SW5kZXggPSBDb250cm9sbGVyLmdldFByZXYoKTtcbiAgICAgIHZhciBuZXh0SW5kZXggPSBDb250cm9sbGVyLmdldE5leHQoKTtcbiAgICAgIHZhciBwcmV2TGFiZWwgPSBwcmV2SW5kZXggPiAtMSAmJiBpbmRleCA8IHByZXZJbmRleCA/IGkxOG4ubGFzdCA6IGkxOG4ucHJldjtcbiAgICAgIHZhciBuZXh0TGFiZWwgPSBuZXh0SW5kZXggPiAtMSAmJiBpbmRleCA+IG5leHRJbmRleCA/IGkxOG4uZmlyc3QgOiBpMThuLm5leHQ7XG4gICAgICBwcmV2LmRpc2FibGVkID0gcHJldkluZGV4IDwgMDtcbiAgICAgIG5leHQuZGlzYWJsZWQgPSBuZXh0SW5kZXggPCAwO1xuICAgICAgc2V0QXR0cmlidXRlKHByZXYsIEFSSUFfTEFCRUwsIHByZXZMYWJlbCk7XG4gICAgICBzZXRBdHRyaWJ1dGUobmV4dCwgQVJJQV9MQUJFTCwgbmV4dExhYmVsKTtcbiAgICAgIGVtaXQoRVZFTlRfQVJST1dTX1VQREFURUQsIHByZXYsIG5leHQsIHByZXZJbmRleCwgbmV4dEluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFycm93czogYXJyb3dzLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlXG4gIH07XG59XG5cbnZhciBJTlRFUlZBTF9EQVRBX0FUVFJJQlVURSA9IERBVEFfQVRUUklCVVRFICsgXCItaW50ZXJ2YWxcIjtcblxuZnVuY3Rpb24gQXV0b3BsYXkoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTYgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNi5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2U2LmJpbmQsXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlNi5lbWl0O1xuXG4gIHZhciBpbnRlcnZhbCA9IFJlcXVlc3RJbnRlcnZhbChvcHRpb25zLmludGVydmFsLCBTcGxpZGUyLmdvLmJpbmQoU3BsaWRlMiwgXCI+XCIpLCBvbkFuaW1hdGlvbkZyYW1lKTtcbiAgdmFyIGlzUGF1c2VkID0gaW50ZXJ2YWwuaXNQYXVzZWQ7XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgX0NvbXBvbmVudHMyJEVsZW1lbnRzNCA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgcm9vdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czQucm9vdCxcbiAgICAgIHRvZ2dsZSA9IF9Db21wb25lbnRzMiRFbGVtZW50czQudG9nZ2xlO1xuICB2YXIgYXV0b3BsYXkgPSBvcHRpb25zLmF1dG9wbGF5O1xuICB2YXIgaG92ZXJlZDtcbiAgdmFyIGZvY3VzZWQ7XG4gIHZhciBzdG9wcGVkID0gYXV0b3BsYXkgPT09IFwicGF1c2VcIjtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAoYXV0b3BsYXkpIHtcbiAgICAgIGxpc3RlbigpO1xuICAgICAgdG9nZ2xlICYmIHNldEF0dHJpYnV0ZSh0b2dnbGUsIEFSSUFfQ09OVFJPTFMsIEVsZW1lbnRzLnRyYWNrLmlkKTtcbiAgICAgIHN0b3BwZWQgfHwgcGxheSgpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgIGlmIChvcHRpb25zLnBhdXNlT25Ib3Zlcikge1xuICAgICAgYmluZChyb290LCBcIm1vdXNlZW50ZXIgbW91c2VsZWF2ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBob3ZlcmVkID0gZS50eXBlID09PSBcIm1vdXNlZW50ZXJcIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF1c2VPbkZvY3VzKSB7XG4gICAgICBiaW5kKHJvb3QsIFwiZm9jdXNpbiBmb2N1c291dFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBmb2N1c2VkID0gZS50eXBlID09PSBcImZvY3VzaW5cIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRvZ2dsZSkge1xuICAgICAgYmluZCh0b2dnbGUsIFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBzdG9wcGVkID8gcGxheSgpIDogcGF1c2UodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBvbihbRVZFTlRfTU9WRSwgRVZFTlRfU0NST0xMLCBFVkVOVF9SRUZSRVNIXSwgaW50ZXJ2YWwucmV3aW5kKTtcbiAgICBvbihFVkVOVF9NT1ZFLCBvbk1vdmUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGxheSgpIHtcbiAgICBpZiAoaXNQYXVzZWQoKSAmJiBDb21wb25lbnRzMi5TbGlkZXMuaXNFbm91Z2goKSkge1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoIW9wdGlvbnMucmVzZXRQcm9ncmVzcyk7XG4gICAgICBmb2N1c2VkID0gaG92ZXJlZCA9IHN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgZW1pdChFVkVOVF9BVVRPUExBWV9QTEFZKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZShzdG9wKSB7XG4gICAgaWYgKHN0b3AgPT09IHZvaWQgMCkge1xuICAgICAgc3RvcCA9IHRydWU7XG4gICAgfVxuXG4gICAgc3RvcHBlZCA9ICEhc3RvcDtcbiAgICB1cGRhdGUoKTtcblxuICAgIGlmICghaXNQYXVzZWQoKSkge1xuICAgICAgaW50ZXJ2YWwucGF1c2UoKTtcbiAgICAgIGVtaXQoRVZFTlRfQVVUT1BMQVlfUEFVU0UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGF1dG9Ub2dnbGUoKSB7XG4gICAgaWYgKCFzdG9wcGVkKSB7XG4gICAgICBob3ZlcmVkIHx8IGZvY3VzZWQgPyBwYXVzZShmYWxzZSkgOiBwbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmICh0b2dnbGUpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHRvZ2dsZSwgQ0xBU1NfQUNUSVZFLCAhc3RvcHBlZCk7XG4gICAgICBzZXRBdHRyaWJ1dGUodG9nZ2xlLCBBUklBX0xBQkVMLCBvcHRpb25zLmkxOG5bc3RvcHBlZCA/IFwicGxheVwiIDogXCJwYXVzZVwiXSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25BbmltYXRpb25GcmFtZShyYXRlKSB7XG4gICAgdmFyIGJhciA9IEVsZW1lbnRzLmJhcjtcbiAgICBiYXIgJiYgc3R5bGUoYmFyLCBcIndpZHRoXCIsIHJhdGUgKiAxMDAgKyBcIiVcIik7XG4gICAgZW1pdChFVkVOVF9BVVRPUExBWV9QTEFZSU5HLCByYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW92ZShpbmRleCkge1xuICAgIHZhciBTbGlkZSA9IENvbXBvbmVudHMyLlNsaWRlcy5nZXRBdChpbmRleCk7XG4gICAgaW50ZXJ2YWwuc2V0KFNsaWRlICYmICtnZXR
6625BdHRyaWJ1dGUoU2xpZGUuc2xpZGUsIElOVEVSVkFMX0RBVEFfQVRUUklCVVRFKSB8fCBvcHRpb25zLmludGVydmFsKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGludGVydmFsLmNhbmNlbCxcbiAgICBwbGF5OiBwbGF5LFxuICAgIHBhdXNlOiBwYXVzZSxcbiAgICBpc1BhdXNlZDogaXNQYXVzZWRcbiAgfTtcbn1cblxuZnVuY3Rpb24gQ292ZXIoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTcgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNy5vbjtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAob3B0aW9ucy5jb3Zlcikge1xuICAgICAgb24oRVZFTlRfTEFaWUxPQURfTE9BREVELCBhcHBseSh0b2dnbGUsIHRydWUpKTtcbiAgICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNIXSwgYXBwbHkoY292ZXIsIHRydWUpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb3Zlcihjb3ZlcjIpIHtcbiAgICBDb21wb25lbnRzMi5TbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIHZhciBpbWcgPSBjaGlsZChTbGlkZS5jb250YWluZXIgfHwgU2xpZGUuc2xpZGUsIFwiaW1nXCIpO1xuXG4gICAgICBpZiAoaW1nICYmIGltZy5zcmMpIHtcbiAgICAgICAgdG9nZ2xlKGNvdmVyMiwgaW1nLCBTbGlkZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2dnbGUoY292ZXIyLCBpbWcsIFNsaWRlKSB7XG4gICAgU2xpZGUuc3R5bGUoXCJiYWNrZ3JvdW5kXCIsIGNvdmVyMiA/IFwiY2VudGVyL2NvdmVyIG5vLXJlcGVhdCB1cmwoXFxcIlwiICsgaW1nLnNyYyArIFwiXFxcIilcIiA6IFwiXCIsIHRydWUpO1xuICAgIGRpc3BsYXkoaW1nLCBjb3ZlcjIgPyBcIm5vbmVcIiA6IFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogYXBwbHkoY292ZXIsIGZhbHNlKVxuICB9O1xufVxuXG52YXIgQk9VTkNFX0RJRkZfVEhSRVNIT0xEID0gMTA7XG52YXIgQk9VTkNFX0RVUkFUSU9OID0gNjAwO1xudmFyIEZSSUNUSU9OX0ZBQ1RPUiA9IDAuNjtcbnZhciBCQVNFX1ZFTE9DSVRZID0gMS41O1xudmFyIE1JTl9EVVJBVElPTiA9IDgwMDtcblxuZnVuY3Rpb24gU2Nyb2xsKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2U4ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTgub24sXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlOC5lbWl0O1xuXG4gIHZhciBzZXQgPSBTcGxpZGUyLnN0YXRlLnNldDtcbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlO1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZ2V0TGltaXQgPSBNb3ZlLmdldExpbWl0LFxuICAgICAgZXhjZWVkZWRMaW1pdCA9IE1vdmUuZXhjZWVkZWRMaW1pdCxcbiAgICAgIHRyYW5zbGF0ZSA9IE1vdmUudHJhbnNsYXRlO1xuICB2YXIgaXNTbGlkZSA9IFNwbGlkZTIuaXMoU0xJREUpO1xuICB2YXIgaW50ZXJ2YWw7XG4gIHZhciBjYWxsYmFjaztcbiAgdmFyIGZyaWN0aW9uID0gMTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9NT1ZFLCBjbGVhcik7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBjYW5jZWwpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgb25TY3JvbGxlZCwgbm9Db25zdHJhaW4pIHtcbiAgICB2YXIgZnJvbSA9IGdldFBvc2l0aW9uKCk7XG4gICAgY2xlYXIoKTtcblxuICAgIGlmIChzbmFwICYmICghaXNTbGlkZSB8fCAhZXhjZWVkZWRMaW1pdCgpKSkge1xuICAgICAgdmFyIHNpemUgPSBDb21wb25lbnRzMi5MYXlvdXQuc2xpZGVyU2l6ZSgpO1xuICAgICAgdmFyIG9mZnNldCA9IHNpZ24oZGVzdGluYXRpb24pICogc2l6ZSAqIGZsb29yKGFicyhkZXN0aW5
6625hdGlvbikgLyBzaXplKSB8fCAwO1xuICAgICAgZGVzdGluYXRpb24gPSBNb3ZlLnRvUG9zaXRpb24oQ29tcG9uZW50czIuQ29udHJvbGxlci50b0Rlc3QoZGVzdGluYXRpb24gJSBzaXplKSkgKyBvZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIG5vRGlzdGFuY2UgPSBhcHByb3hpbWF0ZWx5RXF1YWwoZnJvbSwgZGVzdGluYXRpb24sIDEpO1xuICAgIGZyaWN0aW9uID0gMTtcbiAgICBkdXJhdGlvbiA9IG5vRGlzdGFuY2UgPyAwIDogZHVyYXRpb24gfHwgbWF4KGFicyhkZXN0aW5hdGlvbiAtIGZyb20pIC8gQkFTRV9WRUxPQ0lUWSwgTUlOX0RVUkFUSU9OKTtcbiAgICBjYWxsYmFjayA9IG9uU2Nyb2xsZWQ7XG4gICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24sIG9uRW5kLCBhcHBseSh1cGRhdGUsIGZyb20sIGRlc3RpbmF0aW9uLCBub0NvbnN0cmFpbiksIDEpO1xuICAgIHNldChTQ1JPTExJTkcpO1xuICAgIGVtaXQoRVZFTlRfU0NST0xMKTtcbiAgICBpbnRlcnZhbC5zdGFydCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FbmQoKSB7XG4gICAgc2V0KElETEUpO1xuICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgZW1pdChFVkVOVF9TQ1JPTExFRCk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoZnJvbSwgdG8sIG5vQ29uc3RyYWluLCByYXRlKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcbiAgICB2YXIgdGFyZ2V0ID0gZnJvbSArICh0byAtIGZyb20pICogZWFzaW5nKHJhdGUpO1xuICAgIHZhciBkaWZmID0gKHRhcmdldCAtIHBvc2l0aW9uKSAqIGZyaWN0aW9uO1xuICAgIHRyYW5zbGF0ZShwb3NpdGlvbiArIGRpZmYpO1xuXG4gICAgaWYgKGlzU2xpZGUgJiYgIW5vQ29uc3RyYWluICYmIGV4Y2VlZGVkTGltaXQoKSkge1xuICAgICAgZnJpY3Rpb24gKj0gRlJJQ1RJT05fRkFDVE9SO1xuXG4gICAgICBpZiAoYWJzKGRpZmYpIDwgQk9VTkNFX0RJRkZfVEhSRVNIT0xEKSB7XG4gICAgICAgIHNjcm9sbChnZXRMaW1pdChleGNlZWRlZExpbWl0KHRydWUpKSwgQk9VTkNFX0RVUkFUSU9OLCBmYWxzZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIGlmIChpbnRlcnZhbCkge1xuICAgICAgaW50ZXJ2YWwuY2FuY2VsKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmIChpbnRlcnZhbCAmJiAhaW50ZXJ2YWwuaXNQYXVzZWQoKSkge1xuICAgICAgY2xlYXIoKTtcbiAgICAgIG9uRW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZWFzaW5nKHQpIHtcbiAgICB2YXIgZWFzaW5nRnVuYyA9IG9wdGlvbnMuZWFzaW5nRnVuYztcbiAgICByZXR1cm4gZWFzaW5nRnVuYyA/IGVhc2luZ0Z1bmModCkgOiAxIC0gTWF0aC5wb3coMSAtIHQsIDQpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogY2xlYXIsXG4gICAgc2Nyb2xsOiBzY3JvbGwsXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn1cblxudmFyIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TID0ge1xuICBwYXNzaXZlOiBmYWxzZSxcbiAgY2FwdHVyZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gRHJhZyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlOSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U5Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTkuZW1pdCxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2U5LmJpbmQsXG4gICAgICB1bmJpbmQgPSBfRXZlbnRJbnRlcmZhY2U5LnVuYmluZDtcblxuICB2YXIgc3RhdGUgPSBTcGxpZGUyLnN0YXRlO1xuICB2YXIgTW92ZSA9IENvbXBvbmVudHMyLk1vdmUsXG4gICAgICBTY3JvbGwgPSBDb21wb25lbnRzMi5TY3JvbGwsXG4gICAgICBDb250cm9sbGVyID0gQ29tcG9uZW50czIuQ29udHJvbGxlcixcbiAgICAgIHRyYWNrID0gQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2ssXG4gICAgICByZWR1Y2UgPSBDb21wb25lbnRzMi5NZWRpYS5yZWR1Y2U7XG4gIHZhciBfQ29tcG9uZW50czIkRGlyZWN0aW8yID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLFxuICAgICAgcmVzb2x2ZSA9IF9Db21wb25lbnRzMiREaXJlY3RpbzIucmVzb2x2ZSxcbiAgICAgIG9yaWVudCA9IF9Db21wb25lbnRzMiREaXJlY3RpbzIub3JpZW50O1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZXhjZWVkZWRMaW1pdCA9IE1vdmUuZXhjZWVkZWRMaW1pdDtcbiAgdmFyIGJhc2VQb3NpdGlvbjtcbiAgdmFyIGJhc2VFdmVudDtcbiAgdmFyIHByZXZCYXNlRXZlbnQ7XG4gIHZhciBpc0ZyZWU7XG4gIHZhciBkcmFnZ2luZztcbiAgdmFyIGV4Y2VlZGVkID0gZmFsc2U7XG4gIHZhciBjbGlja1ByZXZlbn
6625RlZDtcbiAgdmFyIGRpc2FibGVkO1xuICB2YXIgdGFyZ2V0O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfTU9WRV9FVkVOVFMsIG5vb3AsIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICBiaW5kKHRyYWNrLCBQT0lOVEVSX1VQX0VWRU5UUywgbm9vcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfRE9XTl9FVkVOVFMsIG9uUG9pbnRlckRvd24sIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICBiaW5kKHRyYWNrLCBcImNsaWNrXCIsIG9uQ2xpY2ssIHtcbiAgICAgIGNhcHR1cmU6IHRydWVcbiAgICB9KTtcbiAgICBiaW5kKHRyYWNrLCBcImRyYWdzdGFydFwiLCBwcmV2ZW50KTtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfVVBEQVRFRF0sIGluaXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgZHJhZyA9IG9wdGlvbnMuZHJhZztcbiAgICBkaXNhYmxlKCFkcmFnKTtcbiAgICBpc0ZyZWUgPSBkcmFnID09PSBcImZyZWVcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlckRvd24oZSkge1xuICAgIGNsaWNrUHJldmVudGVkID0gZmFsc2U7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB2YXIgaXNUb3VjaCA9IGlzVG91Y2hFdmVudChlKTtcblxuICAgICAgaWYgKGlzRHJhZ2dhYmxlKGUudGFyZ2V0KSAmJiAoaXNUb3VjaCB8fCAhZS5idXR0b24pKSB7XG4gICAgICAgIGlmICghQ29udHJvbGxlci5pc0J1c3koKSkge1xuICAgICAgICAgIHRhcmdldCA9IGlzVG91Y2ggPyB0cmFjayA6IHdpbmRvdztcbiAgICAgICAgICBkcmFnZ2luZyA9IHN0YXRlLmlzKFtNT1ZJTkcsIFNDUk9MTElOR10pO1xuICAgICAgICAgIHByZXZCYXNlRXZlbnQgPSBudWxsO1xuICAgICAgICAgIGJpbmQodGFyZ2V0LCBQT0lOVEVSX01PVkVfRVZFTlRTLCBvblBvaW50ZXJNb3ZlLCBTQ1JPTExfTElTVEVORVJfT1BUSU9OUyk7XG4gICAgICAgICAgYmluZCh0YXJnZXQsIFBPSU5URVJfVVBfRVZFTlRTLCBvblBvaW50ZXJVcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgICAgICAgIE1vdmUuY2FuY2VsKCk7XG4gICAgICAgICAgU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAgICAgIHNhdmUoZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlck1vdmUoZSkge1xuICAgIGlmICghc3RhdGUuaXMoRFJBR0dJTkcpKSB7XG4gICAgICBzdGF0ZS5zZXQoRFJBR0dJTkcpO1xuICAgICAgZW1pdChFVkVOVF9EUkFHKTtcbiAgICB9XG5cbiAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICBpZiAoZHJhZ2dpbmcpIHtcbiAgICAgICAgTW92ZS50cmFuc2xhdGUoYmFzZVBvc2l0aW9uICsgY29uc3RyYWluKGRpZmZDb29yZChlKSkpO1xuICAgICAgICB2Y
6625XIgZXhwaXJlZCA9IGRpZmZUaW1lKGUpID4gTE9HX0lOVEVSVkFMO1xuICAgICAgICB2YXIgaGFzRXhjZWVkZWQgPSBleGNlZWRlZCAhPT0gKGV4Y2VlZGVkID0gZXhjZWVkZWRMaW1pdCgpKTtcblxuICAgICAgICBpZiAoZXhwaXJlZCB8fCBoYXNFeGNlZWRlZCkge1xuICAgICAgICAgIHNhdmUoZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjbGlja1ByZXZlbnRlZCA9IHRydWU7XG4gICAgICAgIGVtaXQoRVZFTlRfRFJBR0dJTkcpO1xuICAgICAgICBwcmV2ZW50KGUpO1xuICAgICAgfSBlbHNlIGlmIChpc1NsaWRlckRpcmVjdGlvbihlKSkge1xuICAgICAgICBkcmFnZ2luZyA9IHNob3VsZFN0YXJ0KGUpO1xuICAgICAgICBwcmV2ZW50KGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGUpIHtcbiAgICBpZiAoc3RhdGUuaXMoRFJBR0dJTkcpKSB7XG4gICAgICBzdGF0ZS5zZXQoSURMRSk7XG4gICAgICBlbWl0KEVWRU5UX0RSQUdHRUQpO1xuICAgIH1cblxuICAgIGlmIChkcmFnZ2luZykge1xuICAgICAgbW92ZShlKTtcbiAgICAgIHByZXZlbnQoZSk7XG4gICAgfVxuXG4gICAgdW5iaW5kKHRhcmdldCwgUE9JTlRFUl9NT1ZFX0VWRU5UUywgb25Qb2ludGVyTW92ZSk7XG4gICAgdW5iaW5kKHRhcmdldCwgUE9JTlRFUl9VUF9FVkVOVFMsIG9uUG9pbnRlclVwKTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgaWYgKCFkaXNhYmxlZCAmJiBjbGlja1ByZXZlbnRlZCkge1xuICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlKGUpIHtcbiAgICBwcmV2QmFzZUV2ZW50ID0gYmFzZUV2ZW50O1xuICAgIGJhc2VFdmVudCA9IGU7XG4gICAgYmFzZVBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdmUoZSkge1xuICAgIHZhciB2ZWxvY2l0eSA9IGNvbXB1dGVWZWxvY2l0eShlKTtcbiAgICB2YXIgZGVzdGluYXRpb24gPSBjb21wdXRlRGVzdGluYXRpb24odmVsb2NpdHkpO1xuICAgIHZhciByZXdpbmQgPSBvcHRpb25zLnJld2luZCAmJiBvcHRpb25zLnJld2luZEJ5RHJhZztcbiAgICByZWR1Y2UoZmFsc2UpO1xuXG4gICAgaWYgKGlzRnJlZSkge1xuICAgICAgQ29udHJvbGxlci5zY3JvbGwoZGVzdGluYXRpb24sIDAsIG9wdGlvbnMuc25hcCk7XG4gICAgfSBlbHNlIGlmIChTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICBDb250cm9sbGVyLmdvKG9yaWVudChzaWduKHZlbG9jaXR5KSkgPCAwID8gcmV3aW5kID8gXCI8XCIgOiBcIi1cIiA6IHJld2luZCA/IFwiPlwiIDogXCIrXCIpO1xuICAgIH0gZWxzZSBpZiAoU3BsaWRlMi5pcyhTTElERSkgJiYgZXhjZWVkZWQgJiYgcmV3aW5kKSB7XG4gICAgICBDb250cm9sbGVyLmdvKGV4Y2VlZGVkTGltaXQodHJ1ZSkgPyBcIj5cIiA6IFwiPFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29udHJvbGxlci5nbyhDb250cm9sbGVyLnRvRGVzdChkZXN0aW5hdGlvbiksIHRydWUpO1xuICAgIH1cblxuICAgIHJlZHVjZSh0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFN0YXJ0KGUpIHtcbiAgICB2YXIgdGhyZXNob2xkcyA9IG9wdGlvbnMuZHJhZ01pblRocmVzaG9sZDtcbiAgICB2YXIgaXNPYmogPSBpc09iamVjdCh0aHJlc2hvbGRzKTtcbiAgICB2YXIgbW91c2UgPSBpc09iaiAmJiB0aHJlc2hvbGRzLm1vdXNlIHx8IDA7XG4gICAgdmFyIHRvdWNoID0gKGlzT2JqID8gdGhyZXNob2xkcy50b3VjaCA6ICt0aHJlc2hvbGRzKSB8fCAxMDtcbiAgICByZXR1cm4gYWJzKGRpZmZDb29yZChlKSkgPiAoaXNUb3VjaEV2ZW50KGUpID8gdG91Y2ggOiBtb3VzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1NsaWRlckRpcmVjdGlvbihlKSB7XG4gICAgcmV0dXJuIGFicyhkaWZmQ29vcmQoZSkpID4gYWJzKGRpZmZDb29yZChlLCB0cnVlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlVmVsb2NpdHkoZSkge1xuICAgIGlmIChTcGxpZGUyLmlzKExPT1ApIHx8ICFleGNlZWRlZCkge1xuICAgICAgdmFyIHRpbWUgPSBkaWZmVGltZShlKTtcblxuICAgICAgaWYgKHRpbWUgJiYgdGltZSA8IExPR19JTlRFUlZBTCkge1xuICAgICAgICByZXR1cm4gZGlmZkNvb3JkKGUpIC8gdGltZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVEZXN0aW5hdGlvbih2ZWxvY2l0eSkge1xuICAgIHJldHVybiBnZXRQb3NpdGlvbigpICsgc2lnbih2ZWxvY2l0eSkgKiBtaW4oYWJzKHZlbG9jaXR5KSAqIChvcHRpb25zLmZsaWNrUG93ZXIgfHwgNjAwKSwgaXNGcmVlID8gSW5maW5pdHkgOiBDb21wb25lbnRzMi5MYXlvdXQubGlzdFNpemUoKSAqIChvcHRpb25zLmZsaWNrTWF4UGFnZXMgfHwgMSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlmZkNvb3JkKGUsIG9ydGhvZ29uYWwpIHtcbiAgICByZXR1cm4gY29vcmRPZihlLCBvcnRob2dvbmFsKSAtIGNvb3JkT2YoZ2V0QmFzZUV2ZW50KGUpLCBvcnRob2dvbmFsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpZmZUaW1lKGUpIHtcbiAgICByZXR1cm4gdGltZU9mKGUpIC0gdGltZU9mKGdldEJhc2VFdmVudChlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCYXNlRXZlbnQoZSkge1xuICAgIHJldHVybiBiYXNlRXZlbnQgPT09IGUgJiYgcHJldkJhc2VFdmVudCB8fCBiYXNlRXZlbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBjb29yZE9mKGUsIG9ydGhvZ29uYWwpIHtcbiAgICByZXR1cm4gKGlzVG91Y2hFdmVudChlKSA/IGUuY2hhbmdlZFRvdWNoZXNbMF0gOiBlKVtcInBhZ2VcIiArIHJlc29sdmUob3J0aG9nb25hbCA/IFwiWVwiIDogXCJYXCIpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN0cmFpbihkaWZmKSB7XG4gICAgcmV0dXJuIGRpZmYgLyAoZXhjZWVkZWQgJiYgU3BsaWRlMi5pcyhTTElERSkgPyBGUklDVElPTiA6IDEpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNEcmFnZ2FibGUodGFyZ2V0Mikge1xuICAgIHZhciBub0RyYWcgPSBvcHRpb25zLm5vRHJhZztcbiAgICByZXR1cm4gIW1hdGNoZXModGFyZ2V0MiwgXCIuXCIgKyBDTEFTU19QQUdJTkFUSU9OX1BBR0UgKyBcIiwgLlwiICsgQ0xBU1NfQVJST1cpICYmICghbm9EcmFnIHx8ICFtYXRjaGVzKHRhcmdldDIsIG5vRHJhZykpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNUb3VjaEV2ZW50KGUpIHtcbiAgICByZXR1cm4gdHlwZW9mIFRvdWNoRXZlbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgZSBpbnN0YW5jZW9mIFRvdWNoRXZlbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBpc0RyYWdnaW5nKCkge1xuICAgIHJldHVybi
6625BkcmFnZ2luZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUodmFsdWUpIHtcbiAgICBkaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGlzYWJsZTogZGlzYWJsZSxcbiAgICBpc0RyYWdnaW5nOiBpc0RyYWdnaW5nXG4gIH07XG59XG5cbnZhciBOT1JNQUxJWkFUSU9OX01BUCA9IHtcbiAgU3BhY2ViYXI6IFwiIFwiLFxuICBSaWdodDogQVJST1dfUklHSFQsXG4gIExlZnQ6IEFSUk9XX0xFRlQsXG4gIFVwOiBBUlJPV19VUCxcbiAgRG93bjogQVJST1dfRE9XTlxufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplS2V5KGtleSkge1xuICBrZXkgPSBpc1N0cmluZyhrZXkpID8ga2V5IDoga2V5LmtleTtcbiAgcmV0dXJuIE5PUk1BTElaQVRJT05fTUFQW2tleV0gfHwga2V5O1xufVxuXG52YXIgS0VZQk9BUkRfRVZFTlQgPSBcImtleWRvd25cIjtcblxuZnVuY3Rpb24gS2V5Ym9hcmQoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTEwID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTEwLm9uLFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTEwLmJpbmQsXG4gICAgICB1bmJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMC51bmJpbmQ7XG5cbiAgdmFyIHJvb3QgPSBTcGxpZGUyLnJvb3Q7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLnJlc29sdmU7XG4gIHZhciB0YXJnZXQ7XG4gIHZhciBkaXNhYmxlZDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgZGVzdHJveSk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgaW5pdCk7XG4gICAgb24oRVZFTlRfTU9WRSwgb25Nb3ZlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIGtleWJvYXJkID0gb3B0aW9ucy5rZXlib2FyZDtcblxuICAgIGlmIChrZXlib2FyZCkge1xuICAgICAgdGFyZ2V0ID0ga2V5Ym9hcmQgPT09IFwiZ2xvYmFsXCIgPyB3aW5kb3cgOiByb290O1xuICAgICAgYmluZCh0YXJnZXQsIEtFWUJPQVJEX0VWRU5ULCBvbktleWRvd24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdW5iaW5kKHRhcmdldCwgS0VZQk9BUkRfRVZFTlQpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzYWJsZSh2YWx1ZSkge1xuICAgIGRpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdmUoKSB7XG4gICAgdmFyIF9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICBuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBkaXNhYmxlZCA9IF9kaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5ZG93bihlKSB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleShlKTtcblxuICAgICAgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19MRUZUKSkge1xuICAgICAgICBTcGxpZGUyLmdvKFwiPFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSByZXNvbHZlKEFSUk9XX1JJR0hUKSkge1xuICAgICAgICBTcGxpZGUyLmdvKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIGRpc2FibGU6IGRpc2FibGVcbiAgfTtcbn1cblxudmFyIFNSQ19EQVRBX0FUVFJJQlVURSA9IERBVEFfQVRUUklCVVRFICsgXCItbGF6eVwiO1xudmFyIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSA9IFNSQ19EQVRBX0FUVFJJQlVURSArIFwiLXNyY3NldFwiO1xudmFyIElNQUdFX1NFTEVDVE9SID0gXCJbXCIgKyBTUkNfREFUQV9BVFRSSUJVVEUgKyBcIl0sIFtcIiArIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSArIFwiXVwiO1xuXG5mdW5jdGlvbiBMYXp5TG9hZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTEgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlMTEub24sXG4gICAgICBvZmYgPSBfRXZlbnRJbnRlcmZhY2UxMS5vZmYsXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMTEuYmluZCxcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2UxMS5lbWl0O1xuXG4gIHZhciBpc1NlcXVlbnRpYWwgPSBvcHRpb25zLmxhenlMb2FkID09PSBcInNlcXVlbnRpYWxcIjtcbiAgdmFyIGV2ZW50cyA9IFtFVkVOVF9NT1ZFRCwgRVZFTlRfU0NST0xMRURdO1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChvcHRpb25zLmxhenlMb2FkKSB7XG4gICAgICBpbml0KCk7XG4gICAgICBvbihFVkVOVF9SRUZSRVNILCBpbml0KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGVtcHR5KGVudHJpZXMpO1xuICAgIHJlZ2lzdGVyKCk7XG5cbiAgICBpZiAoaXNTZXF1ZW50aWFsKSB7XG4gICAgICBsb2FkTmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmYoZXZlbnRzKTtcbiAgICAgIG9uKGV2ZW50cywgY2hlY2spO1xuICAgICAgY2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlcigpIHtcbiAgICBDb21wb25lbnRzMi5TbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIHF1ZXJ5QWxsKFNsaWRlLnNsaWRlLCBJTUFHRV9TRUxFQ1RPUikuZm9yRWFjaChmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBzcmMgPSBnZXRBdHRyaWJ1dGUoaW1nLCBTUkNfREFUQV9BVFRSSUJVVEUpO1xuICAgICAgICB2Y
6625XIgc3Jjc2V0ID0gZ2V0QXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKTtcblxuICAgICAgICBpZiAoc3JjICE9PSBpbWcuc3JjIHx8IHNyY3NldCAhPT0gaW1nLnNyY3NldCkge1xuICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzZXMuc3Bpbm5lcjtcbiAgICAgICAgICB2YXIgcGFyZW50ID0gaW1nLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgdmFyIHNwaW5uZXIgPSBjaGlsZChwYXJlbnQsIFwiLlwiICsgY2xhc3NOYW1lKSB8fCBjcmVhdGUoXCJzcGFuXCIsIGNsYXNzTmFtZSwgcGFyZW50KTtcbiAgICAgICAgICBlbnRyaWVzLnB1c2goW2ltZywgU2xpZGUsIHNwaW5uZXJdKTtcbiAgICAgICAgICBpbWcuc3JjIHx8IGRpc3BsYXkoaW1nLCBcIm5vbmVcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2soKSB7XG4gICAgZW50cmllcyA9IGVudHJpZXMuZmlsdGVyKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICB2YXIgZGlzdGFuY2UgPSBvcHRpb25zLnBlclBhZ2UgKiAoKG9wdGlvbnMucHJlbG9hZFBhZ2VzIHx8IDEpICsgMSkgLSAxO1xuICAgICAgcmV0dXJuIGRhdGFbMV0uaXNXaXRoaW4oU3BsaWRlMi5pbmRleCwgZGlzdGFuY2UpID8gbG9hZChkYXRhKSA6IHRydWU7XG4gICAgfSk7XG4gICAgZW50cmllcy5sZW5ndGggfHwgb2ZmKGV2ZW50cyk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2FkKGRhdGEpIHtcbiAgICB2YXIgaW1nID0gZGF0YVswXTtcbiAgICBhZGRDbGFzcyhkYXRhWzFdLnNsaWRlLCBDTEFTU19MT0FESU5HKTtcbiAgICBiaW5kKGltZywgXCJsb2FkIGVycm9yXCIsIGFwcGx5KG9uTG9hZCwgZGF0YSkpO1xuICAgIHNldEF0dHJpYnV0ZShpbWcsIFwic3JjXCIsIGdldEF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSkpO1xuICAgIHNldEF0dHJpYnV0ZShpbWcsIFwic3Jjc2V0XCIsIGdldEF0dHJpYnV0ZShpbWcsIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSkpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTG9hZChkYXRhLCBlKSB7XG4gICAgdmFyIGltZyA9IGRhdGFbMF0sXG4gICAgICAgIFNsaWRlID0gZGF0YVsxXTtcbiAgICByZW1vdmVDbGFzcyhTbGlkZS5zbGlkZSwgQ0xBU1NfTE9BRElORyk7XG5cbiAgICBpZiAoZS50eXBlICE9PSBcImVycm9yXCIpIHtcbiAgICAgIHJlbW92ZShkYXRhWzJdKTtcbiAgICAgIGRpc3BsYXkoaW1nLCBcIlwiKTtcbiAgICAgIGVtaXQoRVZFTlRfTEFaWUxPQURfTE9BREVELCBpbWcsIFNsaWRlKTtcbiAgICAgIGVtaXQoRVZFTlRfUkVTSVpFKTtcbiAgICB9XG5cbiAgICBpc1NlcXVlbnRpYWwgJiYgbG9hZE5leHQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvYWROZXh0KCkge1xuICAgIGVudHJpZXMubGVuZ3RoICYmIGxvYWQoZW50cmllcy5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGFwcGx5KGVtcHR5LCBlbnRyaWVzKSxcbiAgICBjaGVjazogY2hlY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gUGFnaW5hdGlvbihTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBlbWl0ID0gZXZlbnQuZW1pdCxcbiAgICAgIGJpbmQgPSBldmVudC5iaW5kO1xuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzLFxuICAgICAgRWxlbWVudHMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyO1xuICB2YXIgaGFzRm9jdXMgPSBDb250cm9sbGVyLmhhc0ZvY3VzLFxuICAgICAgZ2V0SW5kZXggPSBDb250cm9sbGVyLmdldEluZGV4LFxuICAgICAgZ28gPSBDb250cm9sbGVyLmdvO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgcGxhY2Vob2xkZXIgPSBFbGVtZW50cy5wYWdpbmF0aW9uO1xuICB2YXIgaXRlbXMgPSBbXTtcbiAgdmFyIGxpc3Q7XG4gIHZhciBwYWdpbmF0aW9uQ2xhc3NlcztcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEXSwgbW91bnQpO1xuICAgIHZhciBlbmFibGVkID0gb3B0aW9ucy5wYWdpbmF0aW9uO1xuICAgIHBsYWNlaG9sZGVyICYmIGRpc3BsYXkocGxhY2Vob2xkZXIsIGVuYWJsZWQgPyBcIlwiIDogXCJub25lXCIpO1xuXG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIG9uKFtFVkVOVF9NT1ZFLCBFVkVOVF9TQ1JPTEwsIEVWRU5UX1NDUk9MTEVEXSwgdXBkYXRlKTtcbiAgICAgIGNyZWF0ZVBhZ2luYXRpb24oKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgZW1pdChFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQsIHtcbiAgICAgICAgbGlzdDogbGlzdCxcbiAgICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgICB9LCBnZXRBdChTcGxpZGUyLmluZGV4KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAobGlzdCkge1xuICAgICAgcmVtb3ZlKHBsYWNlaG9sZGVyID8gc2xpY2UobGlzdC5jaGlsZHJlbikgOiBsaXN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKGxpc3QsIHBhZ2luYXRpb25DbGFzc2VzKTtcbiAgICAgIGVtcHR5KGl0ZW1zKTtcbiAgICAgIGxpc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb24oKSB7XG4gICAgdmFyIGxlbmd0aCA9IFNwbGlkZTIubGVuZ3RoO1xuICAgIHZhciBjbGFzc2VzID0gb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgICBpMThuID0gb3B0aW9ucy5pMThuLFxuICAgICAgICBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgIHZhciBtYXggPSBoYXNGb2N1cygpID8gQ29udHJvbGxlci5nZXRFbmQoKSArIDEgOiBjZWlsKGxlbmd0aCAvIHBlclBhZ2UpO1xuICAgIGxpc3QgPSBwbGFjZWhvbGRlciB8fCBjcmVhdGUoXCJ1bFwiLCBjbGFzc2VzLnBhZ2luYXRpb24sIEVsZW1lbnRzLnRyYWNrLnBhcmVudEVsZW1lbnQpO1xuICAgIGFkZENsYXNzKGxpc3QsIHBhZ2luYXRpb25DbGFzc2VzID0gQ0xBU1NfUEFHSU5BVElPTiArIFwiLS1cIiArIGdldERpcmVjdGlvbigpKTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgUk9MRSwgXCJ0YWJsaXN0XCIpO1xuICAgIHNldEF0dHJpYnV0ZShsaXN0LCBBUklBX0xBQkVMLCBpMThuLnNlbGVjdCk7XG4gICAgc2V0QXR0cmlidXRlKGxpc3QsIEFSSUFfT1JJRU5UQVRJT04sIGdldERpcmVjdGlvbigpID09PSBUVEIgPyBcInZlcnRpY2FsXCIgOiBcIlwiKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICAgIHZhciBsaSA9IGNyZWF0ZShcImxpXCIsIG51bGwsIGxpc3QpO1xuICAgICAgdmFyIGJ1dHRvbiA9IGNyZWF0ZShcImJ1dHRvblwiLCB7XG4gICAgICAgIGNsYXNzOiBjbGFzc2VzLnBhZ2UsXG4gICAgICAgI
6625HR5cGU6IFwiYnV0dG9uXCJcbiAgICAgIH0sIGxpKTtcbiAgICAgIHZhciBjb250cm9scyA9IFNsaWRlcy5nZXRJbihpKS5tYXAoZnVuY3Rpb24gKFNsaWRlKSB7XG4gICAgICAgIHJldHVybiBTbGlkZS5zbGlkZS5pZDtcbiAgICAgIH0pO1xuICAgICAgdmFyIHRleHQgPSAhaGFzRm9jdXMoKSAmJiBwZXJQYWdlID4gMSA/IGkxOG4ucGFnZVggOiBpMThuLnNsaWRlWDtcbiAgICAgIGJpbmQoYnV0dG9uLCBcImNsaWNrXCIsIGFwcGx5KG9uQ2xpY2ssIGkpKTtcblxuICAgICAgaWYgKG9wdGlvbnMucGFnaW5hdGlvbktleWJvYXJkKSB7XG4gICAgICAgIGJpbmQoYnV0dG9uLCBcImtleWRvd25cIiwgYXBwbHkob25LZXlkb3duLCBpKSk7XG4gICAgICB9XG5cbiAgICAgIHNldEF0dHJpYnV0ZShsaSwgUk9MRSwgXCJwcmVzZW50YXRpb25cIik7XG4gICAgICBzZXRBdHRyaWJ1dGUoYnV0dG9uLCBST0xFLCBcInRhYlwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIEFSSUFfQ09OVFJPTFMsIGNvbnRyb2xzLmpvaW4oXCIgXCIpKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIEFSSUFfTEFCRUwsIGZvcm1hdCh0ZXh0LCBpICsgMSkpO1xuICAgICAgc2V0QXR0cmlidXRlKGJ1dHRvbiwgVEFCX0lOREVYLCAtMSk7XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgbGk6IGxpLFxuICAgICAgICBidXR0b246IGJ1dHRvbixcbiAgICAgICAgcGFnZTogaVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhwYWdlKSB7XG4gICAgZ28oXCI+XCIgKyBwYWdlLCB0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5ZG93bihwYWdlLCBlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5KGUpO1xuICAgIHZhciBkaXIgPSBnZXREaXJlY3Rpb24oKTtcbiAgICB2YXIgbmV4dFBhZ2UgPSAtMTtcblxuICAgIGlmIChrZXkgPT09IHJlc29sdmUoQVJST1dfUklHSFQsIGZhbHNlLCBkaXIpKSB7XG4gICAgICBuZXh0UGFnZSA9ICsrcGFnZSAlIGxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19MRUZULCBmYWxzZSwgZGlyKSkge1xuICAgICAgbmV4dFBhZ2UgPSAoLS1wYWdlICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJIb21lXCIpIHtcbiAgICAgIG5leHRQYWdlID0gMDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJFbmRcIikge1xuICAgICAgbmV4dFBhZ2UgPSBsZW5ndGggLSAxO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gaXRlbXNbbmV4dFBhZ2VdO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGZvY3VzKGl0ZW0uYnV0dG9uKTtcbiAgICAgIGdvKFwiPlwiICsgbmV4dFBhZ2UpO1xuICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXREaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucGFnaW5hdGlvbkRpcmVjdGlvbiB8fCBvcHRpb25zLmRpcmVjdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgcmV0dXJuIGl0ZW1zW0NvbnRyb2xsZXIudG9QYWdlKGluZGV4KV07XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgdmFyIHByZXYgPSBnZXRBdChnZXRJbmRleCh0cnVlKSk7XG4gICAgdmFyIGN1cnIgPSBnZXRBdChnZXRJbmRleCgpKTtcblxuICAgIGlmIChwcmV2KSB7XG4gICAgICB2Y
6625XIgYnV0dG9uID0gcHJldi5idXR0b247XG4gICAgICByZW1vdmVDbGFzcyhidXR0b24sIENMQVNTX0FDVElWRSk7XG4gICAgICByZW1vdmVBdHRyaWJ1dGUoYnV0dG9uLCBBUklBX1NFTEVDVEVEKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIFRBQl9JTkRFWCwgLTEpO1xuICAgIH1cblxuICAgIGlmIChjdXJyKSB7XG4gICAgICB2YXIgX2J1dHRvbiA9IGN1cnIuYnV0dG9uO1xuICAgICAgYWRkQ2xhc3MoX2J1dHRvbiwgQ0xBU1NfQUNUSVZFKTtcbiAgICAgIHNldEF0dHJpYnV0ZShfYnV0dG9uLCBBUklBX1NFTEVDVEVELCB0cnVlKTtcbiAgICAgIHNldEF0dHJpYnV0ZShfYnV0dG9uLCBUQUJfSU5ERVgsIFwiXCIpO1xuICAgIH1cblxuICAgIGVtaXQoRVZFTlRfUEFHSU5BVElPTl9VUERBVEVELCB7XG4gICAgICBsaXN0OiBsaXN0LFxuICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgfSwgcHJldiwgY3Vycik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGl0ZW1zOiBpdGVtcyxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICBnZXRBdDogZ2V0QXQsXG4gICAgdXBkYXRlOiB1cGRhdGVcbiAgfTtcbn1cblxudmFyIFRSSUdHRVJfS0VZUyA9IFtcIiBcIiwgXCJFbnRlclwiXTtcblxuZnVuY3Rpb24gU3luYyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgaXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5pc05hdmlnYXRpb24sXG4gICAgICBzbGlkZUZvY3VzID0gb3B0aW9ucy5zbGlkZUZvY3VzO1xuICB2YXIgZXZlbnRzID0gW107XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgU3BsaWRlMi5zcGxpZGVzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgaWYgKCF0YXJnZXQuaXNQYXJlbnQpIHtcbiAgICAgICAgc3luYyhTcGxpZGUyLCB0YXJnZXQuc3BsaWRlKTtcbiAgICAgICAgc3luYyh0YXJnZXQuc3BsaWRlLCBTcGxpZGUyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpc05hdmlnYXRpb24pIHtcbiAgICAgIG5hdmlnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICBlbXB0eShldmVudHMpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN5bmMoc3BsaWRlLCB0YXJnZXQpIHtcbiAgICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShzcGxpZGUpO1xuICAgIGV2ZW50Lm9uKEVWRU5UX01PVkUsIGZ1bmN0aW9uIChpbmRleCwgcHJldiwgZGVzdCkge1xuICAgICAgdGFyZ2V0LmdvKHRhcmdldC5pcyhMT09QKSA/IGRlc3QgOiBpbmRleCk7XG4gICAgfSk7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbmF2aWdhdGUoKSB7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gICAgdmFyIG9uID0gZXZlbnQub247XG4gICAgb24oRVZFTlRfQ0xJQ0ssIG9uQ2xpY2spO1xuICAgIG9uKEVWRU5UX1NMSURFX0tFWURPV04sIG9uS2V5ZG93bik7XG4gICAgb24oW0VWRU5UX01PVU5URUQsIEVWRU5UX1VQREFURURdLCB1cGRhdGUpO1xuICAgIGV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICBldmVudC5lbWl0KEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCwgU3BsaWRlMi5zcGxpZGVzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBzZXRBdHRyaWJ1dGUoQ29tcG9uZW50czIuRWxlbWVudHMubGlzdCwgQVJJQV9PUklFTlRBVElPTiwgb3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQiA/IFwidmVydGljYWxcIiA6IFwiXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhTbGlkZSkge1xuICAgIFNwbGlkZTIuZ28oU2xpZGUuaW5kZXgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25LZXlkb3duKFNsaWRlLCBlKSB7XG4gICAgaWYgKGluY2x1ZGVzKFRSSUdHRVJfS0VZUywgbm9ybWFsaXplS2V5KGUpKSkge1xuICAgICAgb25DbGljayhTbGlkZSk7XG4gICAgICBwcmV2ZW50KGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0dXA6IGFwcGx5KENvbXBvbmVudHMyLk1lZGlhLnNldCwge1xuICAgICAgc2xpZGVGb2N1czogaXNVbmRlZmluZWQoc2xpZGVGb2N1cykgPyBpc05hdmlnYXRpb24gOiBzbGlkZUZvY3VzXG4gICAgfSwgdHJ1ZSksXG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgcmVtb3VudDogcmVtb3VudFxuICB9O1xufVxuXG5mdW5jdGlvbiBXaGVlbChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTIgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMi5iaW5kO1xuXG4gIHZhciBsYXN0VGltZSA9IDA7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKG9wdGlvbnMud2hlZWwpIHtcbiAgICAgIGJpbmQoQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2ssIFwid2hlZWxcIiwgb25XaGVlbCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgIGlmIChlLmNhbmNlbGFibG
6625UpIHtcbiAgICAgIHZhciBkZWx0YVkgPSBlLmRlbHRhWTtcbiAgICAgIHZhciBiYWNrd2FyZHMgPSBkZWx0YVkgPCAwO1xuICAgICAgdmFyIHRpbWVTdGFtcCA9IHRpbWVPZihlKTtcblxuICAgICAgdmFyIF9taW4gPSBvcHRpb25zLndoZWVsTWluVGhyZXNob2xkIHx8IDA7XG5cbiAgICAgIHZhciBzbGVlcCA9IG9wdGlvbnMud2hlZWxTbGVlcCB8fCAwO1xuXG4gICAgICBpZiAoYWJzKGRlbHRhWSkgPiBfbWluICYmIHRpbWVTdGFtcCAtIGxhc3RUaW1lID4gc2xlZXApIHtcbiAgICAgICAgU3BsaWRlMi5nbyhiYWNrd2FyZHMgPyBcIjxcIiA6IFwiPlwiKTtcbiAgICAgICAgbGFzdFRpbWUgPSB0aW1lU3RhbXA7XG4gICAgICB9XG5cbiAgICAgIHNob3VsZFByZXZlbnQoYmFja3dhcmRzKSAmJiBwcmV2ZW50KGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFByZXZlbnQoYmFja3dhcmRzKSB7XG4gICAgcmV0dXJuICFvcHRpb25zLnJlbGVhc2VXaGVlbCB8fCBTcGxpZGUyLnN0YXRlLmlzKE1PVklORykgfHwgQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRBZGphY2VudChiYWNrd2FyZHMpICE9PSAtMTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50XG4gIH07XG59XG5cbnZhciBTUl9SRU1PVkFMX0RFTEFZID0gOTA7XG5cbmZ1bmN0aW9uIExpdmUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTEzID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTEzLm9uO1xuXG4gIHZhciB0cmFjayA9IENvbXBvbmVudHMyLkVsZW1lbnRzLnRyYWNrO1xuICB2YXIgZW5hYmxlZCA9IG9wdGlvbnMubGl2ZSAmJiAhb3B0aW9ucy5pc05hdmlnYXRpb247XG4gIHZhciBzciA9IGNyZWF0ZShcInNwYW5cIiwgQ0xBU1NfU1IpO1xuICB2YXIgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoU1JfUkVNT1ZBTF9ERUxBWSwgYXBwbHkodG9nZ2xlLCBmYWxzZSkpO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBkaXNhYmxlKCFDb21wb25lbnRzMi5BdXRvcGxheS5pc1BhdXNlZCgpKTtcbiAgICAgIHNldEF0dHJpYnV0ZSh0cmFjaywgQVJJQV9BVE9NSUMsIHRydWUpO1xuICAgICAgc3IudGV4dENvbnRlbnQgPSBcIlxcdTIwMjZcIjtcbiAgICAgIG9uKEVWRU5UX0FVVE9QTEFZX1BMQVksIGFwcGx5KGRpc2FibGUsIHRydWUpKTtcbiAgICAgIG9uKEVWRU5UX0FVVE9QTEFZX1BBVVNFLCBhcHBseShkaXNhYmxlLCBmYWxzZSkpO1xuICAgICAgb24oW0VWRU5UX01PVkVELCBFVkVOVF9TQ1JPTExFRF0sIGFwcGx5KHRvZ2dsZSwgdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvZ2dsZShhY3RpdmUpIHtcbiAgICBzZXRBdHRyaWJ1dGUodHJhY2ssIEFSSUFfQlVTWSwgYWN0aXZlKTtcblxuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGFwcGVuZCh0cmFjaywgc3IpO1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKHNyKTtcbiAgICAgIGludGVydmFsLmNhbmNlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgcmVtb3ZlQXR0cmlidXRlKHRyYWNrLCBbQVJJQV9MSVZFLCBBUklBX0FUT01JQywgQVJJQV9CVVNZXSk7XG4gICAgcmVtb3ZlKHNyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUoZGlzYWJsZWQpIHtcbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgc2V0QXR0cmlidXRlKHRyYWNrLCBBUklBX0xJVkUsIGRpc2FibGVkID8gXCJvZmZcIiA6IFwicG9saXRlXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRpc2FibGU6IGRpc2FibGUsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG52YXIgQ29tcG9uZW50Q29uc3RydWN0b3JzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIE1lZGlhOiBNZWRpYSxcbiAgRGlyZWN0aW9uOiBEaXJlY3Rpb24sXG4gIEVsZW1lbnRzOiBFbGVtZW50cyxcbiAgU2xpZGVzOiBTbGlkZXMsXG4gIExheW91dDogTGF5b3V0LFxuICBDbG9uZXM6IENsb25lcyxcbiAgTW92ZTogTW92ZSxcbiAgQ29udHJvbGxlcjogQ29udHJvbGxlcixcbiAgQXJyb3dzOiBBcnJvd3MsXG4gIEF1dG9wbGF5OiBBdXRvcGxheSxcbiAgQ292ZXI6IENvdmVyLFxuICBTY3JvbGw6IFNjcm9sbCxcbiAgRHJhZzogRHJhZyxcbiAgS2V5Ym9hcmQ6IEtleWJvYXJkLFxuICBMYXp5TG9hZDogTGF6eUxvYWQsXG4gIFBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gIFN5bmM6IFN5bmMsXG4gIFdoZWVsOiBXaGVlbCxcbiAgTGl2ZTogTGl2ZVxufSk7XG52YXIgSTE4TiA9IHtcbiAgcHJldjogXCJQcmV2aW91cyBzbGlkZVwiLFxuICBuZXh0OiBcIk5leHQgc2xpZGVcIixcbiAgZmlyc3Q6IFwiR28gdG8gZmlyc3Qgc2xpZGVcIixcbiAgbGFzdDogXCJHbyB0byBsYXN0IHNsaWRlXCIsXG4gIHNsaWRlWDogXCJHbyB0byBzbGlkZSAlc1wiLFxuICBwYWdlWDogXCJHbyB0byBwYWdlICVzXCIsXG4gIHBsYXk6IFwiU3RhcnQgYXV0b3BsYXlcIixcbiAgcGF1c2U6IFwiUGF1c2UgYXV0b3BsYXlcIixcbiAgY2Fyb3VzZWw6IFwiY2Fyb3VzZWxcIixcbiAgc2xpZGU6IFwic2xpZGVcIixcbiAgc2VsZWN0OiBcIlNlbGVjdCBhIHNsaWRlIHRvIHNob3dcIixcbiAgc2xpZGVMYWJlbDogXCIlcyBvZiAlc1wiXG59O1xudmFyIERFRkFVTFRTID0ge1xuICB0eXBlOiBcInNsaWRlXCIsXG4gIHJvbGU6IFwicmVnaW9uXCIsXG4gIHNwZWVkOiA0MDAsXG4gIHBlclBhZ2U6IDEsXG4gIGNsb25lU3RhdHVzOiB0cnVlLFxuICBhcnJvd3M6IHRydWUsXG4gIHBhZ2luYXRpb246IHRydWUsXG4gIHBhZ2luYXRpb25LZXlib2FyZDogdHJ1ZSxcbiAgaW50ZXJ2YWw6IDVlMyxcbiAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICBwYXVzZU9uRm9jdXM6IHRydWUsXG4gIHJlc2V0UHJvZ3Jlc3M6IHRydWUsXG4gIGVhc2luZzogXCJjdWJpYy1iZXppZXIoMC4yNSwgMSwgMC41LCAxKVwiLFxuICBkcmFnOiB0cnVlLFxuICBkaXJlY3Rpb246IFwibHRyXCIsXG4gIHRyaW1TcGFjZTogdHJ1ZSxcbiAgZm9jdXNhYmxlTm9kZXM6IFwiYSwgYnV0dG9uLCB0ZXh0YXJlYSwgaW5wdXQsIHNlbGVjdCwgaWZyYW1lXCIsXG4gIGxpdmU6IHRydWUsXG4gIGNsYXNzZXM6IENMQVNTRVMsXG4gIGkxOG46IEkxOE4sXG4gIHJlZHVjZWRNb3Rpb246IHtcbiAgICBzcGVlZDogMCxcbiAgICByZXdpbmRTcGVlZDogMCxcbiAgICBhdXRvcGxheTogXCJwYXVzZVwiXG4gIH1cbn07XG5cbmZ1bmN0aW9uIEZhZGUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcztcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBFdmVudEludGVyZmFjZShTcGxpZGUyKS5vbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfUkVGUkVTSF0sIGluaXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICBTbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIFNsaWRlLnN0eWxlKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlWCgtXCIgKyAxMDAgKiBTbGlkZS5pbmRleCArIFwiJSlcIik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChpbmRleCwgZG9uZSkge1xuICAgIFNsaWRlcy5zdHlsZShcInRyYW5zaXRpb25cIiwgXCJvcGFjaXR5IFwiICsgb3B0aW9ucy5zcGVlZCArIFwibXMgXCIgKyBvcHRpb25zLmVhc2luZyk7XG4gICAgbmV4dFRpY2soZG9uZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBzdGFydDogc3RhcnQsXG4gICAgY2FuY2VsOiBub29wXG4gIH07XG59XG5cbmZ1bmN0aW9uIFNsaWRlKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBNb3ZlID0gQ29tcG9uZW50czIuTW92ZSxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyLFxuICAgICAgU2Nyb2xsID0gQ29tcG9uZW50czIuU2Nyb2xsO1xuICB2YXIgbGlzdCA9IENvbXBvbmVudHMyLkVsZW1lbnRzLmxpc3Q7XG4gIHZhciB0cmFuc2l0aW9uID0gYXBwbHkoc3R5bGUsIGxpc3QsIFwidHJhbnNpdGlvblwiKTtcbiAgdmFyIGVuZENhbGxiYWNrO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLmJpbmQobGlzdCwgXCJ0cmFuc2l0aW9uZW5kXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS50YXJnZXQgPT09IGxpc3QgJiYgZW5kQ2FsbGJhY2spIHtcbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIGVuZENhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChpbmRleCwgZG9uZSkge1xuICAgIHZhciBkZXN0aW5
6625hdGlvbiA9IE1vdmUudG9Qb3NpdGlvbihpbmRleCwgdHJ1ZSk7XG4gICAgdmFyIHBvc2l0aW9uID0gTW92ZS5nZXRQb3NpdGlvbigpO1xuICAgIHZhciBzcGVlZCA9IGdldFNwZWVkKGluZGV4KTtcblxuICAgIGlmIChhYnMoZGVzdGluYXRpb24gLSBwb3NpdGlvbikgPj0gMSAmJiBzcGVlZCA+PSAxKSB7XG4gICAgICBpZiAob3B0aW9ucy51c2VTY3JvbGwpIHtcbiAgICAgICAgU2Nyb2xsLnNjcm9sbChkZXN0aW5hdGlvbiwgc3BlZWQsIGZhbHNlLCBkb25lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zaXRpb24oXCJ0cmFuc2Zvcm0gXCIgKyBzcGVlZCArIFwibXMgXCIgKyBvcHRpb25zLmVhc2luZyk7XG4gICAgICAgIE1vdmUudHJhbnNsYXRlKGRlc3RpbmF0aW9uLCB0cnVlKTtcbiAgICAgICAgZW5kQ2FsbGJhY2sgPSBkb25lO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBNb3ZlLmp1bXAoaW5kZXgpO1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICB0cmFuc2l0aW9uKFwiXCIpO1xuICAgIFNjcm9sbC5jYW5jZWwoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFNwZWVkKGluZGV4KSB7XG4gICAgdmFyIHJld2luZFNwZWVkID0gb3B0aW9ucy5yZXdpbmRTcGVlZDtcblxuICAgIGlmIChTcGxpZGUyLmlzKFNMSURFKSAmJiByZXdpbmRTcGVlZCkge1xuICAgICAgdmFyIHByZXYgPSBDb250cm9sbGVyLmdldEluZGV4KHRydWUpO1xuICAgICAgdmFyIGVuZCA9IENvbnRyb2xsZXIuZ2V0RW5kKCk7XG5cbiAgICAgIGlmIChwcmV2ID09PSAwICYmIGluZGV4ID49IGVuZCB8fCBwcmV2ID49IGVuZCAmJiBpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmV3aW5kU3BlZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnMuc3BlZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBzdGFydDogc3RhcnQsXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn1cblxudmFyIF9TcGxpZGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBfU3BsaWRlKHRhcmdldCwgb3B0aW9ucykge1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZSgpO1xuICAgIHRoaXMuQ29tcG9uZW50cyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSBTdGF0ZShDUkVBVEVEKTtcbiAgICB0aGlzLnNwbGlkZXMgPSBbXTtcbiAgICB0aGlzLl9vID0ge307XG4gICAgdGhpcy5fRSA9IHt9O1xuICAgIHZhciByb290ID0gaXNTdHJpbmcodGFyZ2V0KSA/IHF1ZXJ5KGRvY3VtZW50LCB0YXJnZXQpIDogdGFyZ2V0O1xuICAgIGFzc2VydChyb290LCByb290ICsgXCIgaXMgaW52YWxpZC5cIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICBvcHRpb25zID0gbWVyZ2Uoe1xuICAgICAgbGFiZWw6IGdldEF0dHJpYnV0ZShyb290LCBBUklBX0xBQkVMKSB8fCBcIlwiLFxuICAgICAgbGFiZWxsZWRieTogZ2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUxMRURCWSkgfHwgXCJcIlxuICAgIH0sIERFRkFVTFRTLCBfU3BsaWRlLmRlZmF1bHRzLCBvcHRpb25zIHx8IHt9KTtcblxuICAgIHRyeSB7XG4gICAgICBtZXJnZShvcHRpb25zLCBKU09OLnBhcnNlKGdldEF0dHJpYnV0ZShyb290LCBEQVRBX0FUVFJJQlVURSkpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsIFwiSW52YWxpZCBKU09OXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX28gPSBPYmplY3QuY3JlYXRlKG1lcmdlKHt9LCBvcHRpb25zKSk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gX1NwbGlkZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLm1vdW50ID0gZnVuY3Rpb24gbW91bnQoRXh0ZW5zaW9ucywgVHJhbnNpdGlvbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBDb21wb25lbnRzMiA9IHRoaXMuQ29tcG9uZW50cztcbiAgICBhc3NlcnQoc3RhdGUuaXMoW0NSRUFURUQsIERFU1RST1lFRF0pLCBcIkFscmVhZHkgbW91bnRlZCFcIik7XG4gICAgc3RhdGUuc2V0KENSRUFURUQpO1xuICAgIHRoaXMuX0MgPSBDb21wb25lbnRzMjtcbiAgICB0aGlzLl9UID0gVHJhbnNpdGlvbiB8fCB0aGlzLl9UIHx8ICh0aGlzLmlzKEZBREUpID8gRmFkZSA6IFNsaWRlKTtcbiAgICB0aGlzLl9FID0gRXh0ZW5zaW9ucyB8fCB0aGlzLl9FO1xuICAgIHZhciBDb25zdHJ1Y3RvcnMgPSBhc3NpZ24oe30sIENvbXBvbmVudENvbnN0cnVjdG9ycywgdGhpcy5fRSwge1xuICAgICAgVHJhbnNpdGlvbjogdGhpcy5fVFxuICAgIH0pO1xuICAgIGZvck93bihDb25zdHJ1Y3RvcnMsIGZ1bmN0aW9uIChDb21wb25lbnQsIGtleSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IENvbXBvbmVudChfdGhpcywgQ29tcG9uZW50czIsIF90aGlzLl9vKTtcbiAgICAgIENvbXBvbmVudHMyW2tleV0gPSBjb21wb25lbnQ7XG4gICAgICBjb21wb25lbnQuc2V0dXAgJiYgY29tcG9uZW50LnNldHVwKCk7XG4gICAgfSk7XG4gICAgZm9yT3duKENvbXBvbmVudHMyLCBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICBjb21wb25lbnQubW91bnQgJiYgY29tcG9uZW50Lm1vdW50KCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KEVWRU5UX01PVU5URUQpO1xuICAgIGFkZENsYXNzKHRoaXMucm9vdCwgQ0xBU1NfSU5JVElBTElaRUQpO1xuICAgIHN0YXRlLnNldChJRExFKTtcbiAgICB0aGlzLmVtaXQoRVZFTlRfUkVBRFkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5zeW5jID0gZnVuY3Rpb24gc3luYyhzcGxpZGUpIHtcbiAgICB0aGlzLnNwbGlkZXMucHVzaCh7XG4gICAgICBzcGxpZGU6IHNwbGlkZVxuICAgIH0pO1xuICAgIHNwbGlkZS5zcGxpZGVzLnB1c2goe1xuICAgICAgc3BsaWRlOiB0aGlzLFxuICAgICAgaXNQYXJlbnQ6IHRydWVcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmlzKElETEUpKSB7XG4gICAgICB0aGlzLl9DLlN5bmMucmVtb3VudCgpO1xuXG4gICAgICBzcGxpZGUuQ29tcG9uZW50cy5TeW5jLnJlbW91bnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uZ28gPSBmdW5jdGlvbiBnbyhjb250cm9sKSB7XG4gICAgdGhpcy5fQy5Db250cm9sbGVyLmdvKGNvbnRyb2wpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLm9uID0gZnVuY3Rpb24gb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZXZlbnQub24oZXZlbnRzLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLm9mZiA9IGZ1bmN0aW9uIG9mZihldmVudHMpIHtcbiAgICB0aGlzLmV2ZW50Lm9mZihldmVudHMpO1xuICAgIHJldHVybi
6625B0aGlzO1xuICB9O1xuXG4gIF9wcm90by5lbWl0ID0gZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIHZhciBfdGhpcyRldmVudDtcblxuICAgIChfdGhpcyRldmVudCA9IHRoaXMuZXZlbnQpLmVtaXQuYXBwbHkoX3RoaXMkZXZlbnQsIFtldmVudF0uY29uY2F0KHNsaWNlKGFyZ3VtZW50cywgMSkpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5hZGQgPSBmdW5jdGlvbiBhZGQoc2xpZGVzLCBpbmRleCkge1xuICAgIHRoaXMuX0MuU2xpZGVzLmFkZChzbGlkZXMsIGluZGV4KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUobWF0Y2hlcikge1xuICAgIHRoaXMuX0MuU2xpZGVzLnJlbW92ZShtYXRjaGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5pcyA9IGZ1bmN0aW9uIGlzKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5fby50eXBlID09PSB0eXBlO1xuICB9O1xuXG4gIF9wcm90by5yZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICB0aGlzLmVtaXQoRVZFTlRfUkVGUkVTSCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95KGNvbXBsZXRlbHkpIHtcbiAgICBpZiAoY29tcGxldGVseSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wbGV0ZWx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgZXZlbnQgPSB0aGlzLmV2ZW50LFxuICAgICAgICBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICBpZiAoc3RhdGUuaXMoQ1JFQVRFRCkpIHtcbiAgICAgIEV2ZW50SW50ZXJmYWNlKHRoaXMpLm9uKEVWRU5UX1JFQURZLCB0aGlzLmRlc3Ryb3kuYmluZCh0aGlzLCBjb21wbGV0ZWx5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck93bih0aGlzLl9DLCBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudC5kZXN0cm95ICYmIGNvbXBvbmVudC5kZXN0cm95KGNvbXBsZXRlbHkpO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBldmVudC5lbWl0KEVWRU5UX0RFU1RST1kpO1xuICAgICAgZXZlbnQuZGVzdHJveSgpO1xuICAgICAgY29tcGxldGVseSAmJiBlbXB0eSh0aGlzLnNwbGlkZXMpO1xuICAgICAgc3RhdGUuc2V0KERFU1RST1lFRCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX2NyZWF0ZUNsYXNzKF9TcGxpZGUsIFt7XG4gICAga2V5OiBcIm9wdGlvbnNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQob3B0aW9ucykge1xuICAgICAgdGhpcy5fQy5NZWRpYS5zZXQob3B0aW9ucywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxlbmd0aFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX0MuU2xpZGVzLmdldExlbmd0aCh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5kZXhcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9DLkNvbnRyb2xsZXIuZ2V0SW5kZXgoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gX1NwbGlkZTtcbn0oKTtcblxudmFyIFNwbGlkZSA9IF9TcGxpZGU7XG5TcGxpZGUuZGVmYXVsdHMgPSB7fTtcblNwbGlkZS5TVEFURVMgPSBTVEFURVM7XG52YXIgQ0xBU1NfUkVOREVSRUQgPSBcImlzLXJlbmRlcmVkXCI7XG52YXIgUkVOREVSRVJfREVGQVVMVF9DT05GSUcgPSB7XG4gIGxpc3RUYWc6IFwidWxcIixcbiAgc2xpZGVUYWc6IFwibGlcIlxufTtcblxudmFyIFN0eWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3R5bGUoaWQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHt9O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgdmFyIF9wcm90bzIgPSBTdHlsZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5ydWxlID0gZnVuY3Rpb24gcnVsZShzZWxlY3RvciwgcHJvcCwgdmFsdWUsIGJyZWFrcG9pbnQpIHtcbiAgICBicmVha3BvaW50ID0gYnJlYWtwb2ludCB8fCBcImRlZmF1bHRcIjtcbiAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5zdHlsZXNbYnJlYWtwb2ludF0gPSB0aGlzLnN0eWxlc1ticmVha3BvaW50XSB8fCB7fTtcbiAgICB2YXIgc3R5bGVzID0gc2VsZWN0b3JzW3NlbGVjdG9yXSA9IHNlbGVjdG9yc1tzZWxlY3Rvcl0gfHwge307XG4gICAgc3R5bGVzW3Byb3BdID0gdmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvMi5idWlsZCA9IGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5zdHlsZXMuZGVmYXVsdCkge1xuICAgICAgY3NzICs9IHRoaXMuYnVpbGRTZWxlY3RvcnModGhpcy5zdHlsZXMuZGVmYXVsdCk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXModGhpcy5zdHlsZXMpLnNvcnQoZnVuY3Rpb24gKG4sIG0pIHtcbiAgICAgIHJldHVybiBfdGhpczIub3B0aW9ucy5tZWRpYVF1ZXJ5ID09PSBcIm1pblwiID8gK24gLSArbSA6ICttIC0gK247XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoYnJlYWtwb2ludCkge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgIT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgIGNzcyArPSBcIkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiICsgYnJlYWtwb2ludCArIFwicHgpIHtcIjtcbiAgICAgICAgY3NzICs9IF90aGlzMi5idWlsZFNlbGVjdG9ycyhfdGhpczIuc3R5bGVzW2JyZWFrcG9pbnRdKTtcbiAgICAgICAgY3NzICs9IFwifVwiO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjc3M7XG4gIH07XG5cbiAgX3Byb3RvMi5idWlsZFNlbGVjdG9ycyA9IGZ1bmN0aW9uIGJ1aWxkU2VsZWN0b3JzKHNlbGVjdG9ycykge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGNzcyA9IFwiXCI7XG4gICAgZm9yT3duKHNlbGVjdG9ycywgZnVuY3Rpb24gKHN0eWxlcywgc2VsZWN0b3IpIHtcbiAgICAgIHNlbGVjdG9yID0gKFwiI1wiICsgX3RoaXMzLmlkICsgXCIgXCIgKyBzZWxlY3RvcikudHJpbSgpO1xuICAgICAgY3NzICs9IHNlbGVjdG9yICsgXCIge1wiO1xuICAgICAgZm9yT3duKHN0eWxlcywgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7XG4gICAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIGNzcyArPSBwcm9wICsgXCI6IFwiICsgdmFsdWUgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjc3MgKz0gXCJ9XCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNzcztcbiAgfTtcblxuICByZXR1cm4gU3R5bGU7XG59KCk7XG5cbnZhciBTcGxpZGVSZW5kZXJlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNwbGlkZVJlbmRlcmVyKGNvbnRlbn
6625RzLCBvcHRpb25zLCBjb25maWcsIGRlZmF1bHRzKSB7XG4gICAgdGhpcy5zbGlkZXMgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmJyZWFrcG9pbnRzID0gW107XG4gICAgbWVyZ2UoREVGQVVMVFMsIGRlZmF1bHRzIHx8IHt9KTtcbiAgICBtZXJnZShtZXJnZSh0aGlzLm9wdGlvbnMsIERFRkFVTFRTKSwgb3B0aW9ucyB8fCB7fSk7XG4gICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgIHRoaXMuY29uZmlnID0gYXNzaWduKHt9LCBSRU5ERVJFUl9ERUZBVUxUX0NPTkZJRywgY29uZmlnIHx8IHt9KTtcbiAgICB0aGlzLmlkID0gdGhpcy5jb25maWcuaWQgfHwgdW5pcXVlSWQoXCJzcGxpZGVcIik7XG4gICAgdGhpcy5TdHlsZSA9IG5ldyBTdHlsZSh0aGlzLmlkLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuRGlyZWN0aW9uID0gRGlyZWN0aW9uKG51bGwsIG51bGwsIHRoaXMub3B0aW9ucyk7XG4gICAgYXNzZXJ0KHRoaXMuY29udGVudHMubGVuZ3RoLCBcIlByb3ZpZGUgYXQgbGVhc3QgMSBjb250ZW50LlwiKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIFNwbGlkZVJlbmRlcmVyLmNsZWFuID0gZnVuY3Rpb24gY2xlYW4oc3BsaWRlKSB7XG4gICAgdmFyIF9FdmVudEludGVyZmFjZTE0ID0gRXZlbnRJbnRlcmZhY2Uoc3BsaWRlKSxcbiAgICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UxNC5vbjtcblxuICAgIHZhciByb290ID0gc3BsaWRlLnJvb3Q7XG4gICAgdmFyIGNsb25lcyA9IHF1ZXJ5QWxsKHJvb3QsIFwiLlwiICsgQ0xBU1NfQ0xPTkUpO1xuICAgIG9uKEVWRU5UX01PVU5URUQsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZShjaGlsZChyb290LCBcInN0eWxlXCIpKTtcbiAgICB9KTtcbiAgICByZW1vdmUoY2xvbmVzKTtcbiAgfTtcblxuICB2YXIgX3Byb3RvMyA9IFNwbGlkZVJlbmRlcmVyLnByb3RvdHlwZTtcblxuICBfcHJvdG8zLmluaXQgPSBmdW5jdGlvbiBpbml0KCkge1xuICAgIHRoaXMucGFyc2VCcmVha3BvaW50cygpO1xuICAgIHRoaXMuaW5pdFNsaWRlcygpO1xuICAgIHRoaXMucmVnaXN0ZXJSb290U3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclRyYWNrU3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclNsaWRlU3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3Rlckxpc3RTdHlsZXMoKTtcbiAgfTtcblxuICBfcHJvdG8zLmluaXRTbGlkZXMgPSBmdW5jdGlvbiBpbml0U2xpZGVzKCkge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgcHVzaCh0aGlzLnNsaWRlcywgdGhpcy5jb250ZW50cy5tYXAoZnVuY3Rpb24gKGNvbnRlbnQsIGluZGV4KSB7XG4gICAgICBjb250ZW50ID0gaXNTdHJpbmcoY29udGVudCkgPyB7XG4gICAgICAgIGh0bWw6IGNvbnRlbnRcbiAgICAgIH0gOiBjb250ZW50O1xuICAgICAgY29udGVudC5zdHlsZXMgPSBjb250ZW50LnN0eWxlcyB8fCB7fTtcbiAgICAgIGNvbnRlbnQuYXR0cnMgPSBjb250ZW50LmF0dHJzIHx8IHt9O1xuXG4gICAgICBfdGhpczQuY292ZXIoY29udGVudCk7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gX3RoaXM0Lm9wdGlvbnMuY2xhc3Nlcy5zbGlkZSArIFwiIFwiICsgKGluZGV4ID09PSAwID8gQ0xBU1NfQUNUSVZF
6625IDogXCJcIik7XG4gICAgICBhc3NpZ24oY29udGVudC5hdHRycywge1xuICAgICAgICBjbGFzczogKGNsYXNzZXMgKyBcIiBcIiArIChjb250ZW50LmF0dHJzLmNsYXNzIHx8IFwiXCIpKS50cmltKCksXG4gICAgICAgIHN0eWxlOiBfdGhpczQuYnVpbGRTdHlsZXMoY29udGVudC5zdHlsZXMpXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pKTtcblxuICAgIGlmICh0aGlzLmlzTG9vcCgpKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlQ2xvbmVzKHRoaXMuc2xpZGVzKTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclJvb3RTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclJvb3RTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmMlswXSxcbiAgICAgICAgICBvcHRpb25zID0gX3JlZjJbMV07XG5cbiAgICAgIF90aGlzNS5TdHlsZS5ydWxlKFwiIFwiLCBcIm1heC13aWR0aFwiLCB1bml0KG9wdGlvbnMud2lkdGgpLCB3aWR0aCk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclRyYWNrU3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJUcmFja1N0eWxlcygpIHtcbiAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgIHZhciBTdHlsZTIgPSB0aGlzLlN0eWxlO1xuICAgIHZhciBzZWxlY3RvciA9IFwiLlwiICsgQ0xBU1NfVFJBQ0s7XG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZjNbMF0sXG4gICAgICAgICAgb3B0aW9ucyA9IF9yZWYzWzFdO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIF90aGlzNi5yZXNvbHZlKFwicGFkZGluZ0xlZnRcIiksIF90aGlzNi5jc3NQYWRkaW5nKG9wdGlvbnMsIGZhbHNlKSwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIF90aGlzNi5yZXNvbHZlKFwicGFkZGluZ1JpZ2h0XCIpLCBfdGhpczYuY3NzUGFkZGluZyhvcHRpb25zLCB0cnVlKSwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwiaGVpZ2h0XCIsIF90aGlzNi5jc3NUcmFja0hlaWdodChvcHRpb25zKSwgd2lkdGgpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMucmVnaXN0ZXJMaXN0U3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJMaXN0U3R5bGVzKCkge1xuICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgdmFyIFN0eWxlMiA9IHRoaXMuU3R5bGU7XG4gICAgdmFyIHNlbGVjdG9yID0gXCIuXCIgKyBDTEFTU19MSVNUO1xuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY0WzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmNFsxXTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcInRyYW5zZm9ybVwiLCBfdGhpczcuYnVpbGRUcmFuc2xhdGUob3B0aW9ucyksIHdpZHRoKTtcblxuICAgICAgaWYgKCFfdGhpczcuY3NzU2xpZGVIZWlnaHQob3B0aW9ucykpIHtcbiAgICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwiYXNwZWN0LXJhdGlvXCIsIF90aGlzNy5jc3NBc3BlY3RSYXRpbyhvcHRpb25zKSwgd2lkdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMucmVnaXN0ZXJTbGlkZVN0eWxlcyA9IGZ1bmN0aW9uIHJlZ2lzdGVyU2xpZGVTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICB2YXIgU3R5bGUyID0gdGhpcy5TdHlsZTtcbiAgICB2YXIgc2VsZWN0b3IgPSBcIi5cIiArIENMQVNTX1NMSURFO1xuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY1WzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmNVsxXTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcIndpZHRoXCIsIF90aGlzOC5jc3NTbGlkZVdpZHRoKG9wdGlvbnMpLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgXCJoZWlnaHRcIiwgX3RoaXM4LmNzc1NsaWRlSGVpZ2h0KG9wdGlvbnMpIHx8IFwiMTAwJVwiLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgX3RoaXM4LnJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSwgdW5pdChvcHRpb25zLmdhcCkgfHwgXCIwcHhcIiwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IgKyBcIiA+IGltZ1wiLCBcImRpc3BsYXlcIiwgb3B0aW9ucy5jb3ZlciA/IFwibm9uZVwiIDogXCJpbmxpbmVcIiwgd2lkdGgpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRUcmFuc2xhdGUgPSBmdW5jdGlvbiBidWlsZFRyYW5zbGF0ZShvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzJERpcmVjdGlvbiA9IHRoaXMuRGlyZWN0aW9uLFxuICAgICAgICByZXNvbHZlID0gX3RoaXMkRGlyZWN0aW9uLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbi5vcmllbnQ7XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhbHVlcy5wdXNoKHRoaXMuY3NzT2Zmc2V0Q2xvbmVzKG9wdGlvbnMpKTtcbiAgICB2YWx1ZXMucHVzaCh0aGlzLmNzc09mZnNldEdhcHMob3B0aW9ucykpO1xuXG4gICAgaWYgKHRoaXMuaXNDZW50ZXIob3B0aW9ucykpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQoLTUwKSwgXCIlXCIpKTtcbiAgICAgIHZhbHVlcy5wdXNoLmFwcGx5KHZhbHVlcywgdGhpcy5jc3NPZmZzZXRDZW50ZXIob3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKEJvb2xlYW4pLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBcInRyYW5zbGF0ZVwiICsgcmVzb2x2ZShcIlhcIikgKyBcIihcIiArIHZhbHVlICsgXCIpXCI7XG4gICAgfSkuam9pbihcIiBcIik7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NPZmZzZXRDbG9uZXMgPSBmdW5jdGlvbiBjc3NPZmZzZXRDbG9uZXMob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyREaXJlY3Rpb24yID0gdGh
6625pcy5EaXJlY3Rpb24sXG4gICAgICAgIHJlc29sdmUgPSBfdGhpcyREaXJlY3Rpb24yLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbjIub3JpZW50O1xuICAgIHZhciBjbG9uZUNvdW50ID0gdGhpcy5nZXRDbG9uZUNvdW50KCk7XG5cbiAgICBpZiAodGhpcy5pc0ZpeGVkV2lkdGgob3B0aW9ucykpIHtcbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUudmFsdWUsXG4gICAgICAgICAgdW5pdDIgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlLnVuaXQ7XG5cbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlKSAqIGNsb25lQ291bnQsIHVuaXQyKTtcbiAgICB9XG5cbiAgICB2YXIgcGVyY2VudCA9IDEwMCAqIGNsb25lQ291bnQgLyBvcHRpb25zLnBlclBhZ2U7XG4gICAgcmV0dXJuIG9yaWVudChwZXJjZW50KSArIFwiJVwiO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzT2Zmc2V0Q2VudGVyID0gZnVuY3Rpb24gY3NzT2Zmc2V0Q2VudGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMkRGlyZWN0aW9uMyA9IHRoaXMuRGlyZWN0aW9uLFxuICAgICAgICByZXNvbHZlID0gX3RoaXMkRGlyZWN0aW9uMy5yZXNvbHZlLFxuICAgICAgICBvcmllbnQgPSBfdGhpcyREaXJlY3Rpb24zLm9yaWVudDtcblxuICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgdmFyIF90aGlzJHBhcnNlQ3NzVmFsdWUyID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUyLnZhbHVlLFxuICAgICAgICAgIHVuaXQyID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTIudW5pdDtcblxuICAgICAgcmV0dXJuIFt0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlIC8gMiksIHVuaXQyKV07XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhciBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlLFxuICAgICAgICBnYXAgPSBvcHRpb25zLmdhcDtcbiAgICB2YWx1ZXMucHVzaChvcmllbnQoNTAgLyBwZXJQYWdlKSArIFwiJVwiKTtcblxuICAgIGlmIChnYXApIHtcbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlMyA9IHRoaXMucGFyc2VDc3NWYWx1ZShnYXApLFxuICAgICAgICAgIF92YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUzLnZhbHVlLFxuICAgICAgICAgIF91bml0ID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTMudW5pdDtcblxuICAgICAgdmFyIGdhcE9mZnNldCA9IChfdmFsdWUgLyBwZXJQYWdlIC0gX3ZhbHVlKSAvIDI7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KGdhcE9mZnNldCksIF91bml0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfTtcblxuICBfcHJvdG8zLmNzc09mZnNldEdhcHMgPSBmdW5jdGlvbiBjc3NPZmZzZXRHYXBzKG9wdGlvbnMpIHtcbiAgICB2YXIgY2xvbmVDb3VudCA9IHRoaXMuZ2V0Q2xvbmVDb3VudCgpO1xuXG4gICAgaWYgKGNsb25lQ291bnQgJiYgb3B0aW9ucy5nYXApIHtcbiAgICAgIHZhciBvcmllbnQgPSB0aGlzLkRpcmVjdGlvbi5vcmllbnQ7XG5cbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlNCA9IHRoaXMucGFyc2VDc3NWYWx1ZShvcHRpb25zLmdhcCksXG4gICAgICAgICAgdmFsdWUgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlNC52YWx1ZSxcbiAgICAgICAgICB1bml0MiA9IF90aGlzJHBhcnNlQ3NzVmFsdWU0LnVuaXQ7XG5cbiAgICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZENzc1ZhbHVlKG9yaWVudCh2YWx1ZSAqIGNsb25lQ291bnQpLCB1bml0Mik7XG4gICAgICB9XG5cbiAgICAgIHZhciBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgICAgdmFyIGdhcHMgPSBjbG9uZUNvdW50IC8gcGVyUGFnZTtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KGdhcHMgKiB2YWx1ZSksIHVuaXQyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICBfcHJvdG8zLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHByb3ApIHtcbiAgICByZXR1cm4gY2FtZWxUb0tlYmFiKHRoaXMuRGlyZWN0aW9uLnJlc29sdmUocHJvcCkpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzUGFkZGluZyA9IGZ1bmN0aW9uIGNzc1BhZGRpbmcob3B0aW9ucywgcmlnaHQpIHtcbiAgICB2YXIgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZztcbiAgICB2YXIgcHJvcCA9IHRoaXMuRGlyZWN0aW9uLnJlc29sdmUocmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIiwgdHJ1ZSk7XG4gICAgcmV0dXJuIHBhZGRpbmcgJiYgdW5pdChwYWRkaW5nW3Byb3BdIHx8IChpc09iamVjdChwYWRkaW5nKSA/IDAgOiBwYWRkaW5nKSkgfHwgXCIwcHhcIjtcbiAgfTtcblxuICBfcHJvdG8zLmNzc1RyYWNrSGVpZ2h0ID0gZnVuY3Rpb24gY3NzVHJhY2tIZWlnaHQob3B0aW9ucykge1xuICAgIHZhciBoZWlnaHQgPSBcIlwiO1xuXG4gICAgaWYgKHRoaXMuaXNWZXJ0aWNhbCgpKSB7XG4gICAgICBoZWlnaHQgPSB0aGlzLmNzc0hlaWdodChvcHRpb25zKTtcbiAgICAgIGFzc2VydChoZWlnaHQsICdcImhlaWdodFwiIGlzIG1pc3NpbmcuJyk7XG4gICAgICBoZWlnaHQgPSBcImNhbGMoXCIgKyBoZWlnaHQgKyBcIiAtIFwiICsgdGhpcy5jc3NQYWRkaW5nKG9wdGlvbnMsIGZhbHNlKSArIFwiIC0gXCIgKyB0aGlzLmNzc1BhZGRpbmcob3B0aW9ucywgdHJ1ZSkgKyBcIilcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9O1xuXG4gIF9wcm90bzMuY3NzSGVpZ2h0ID0gZnVuY3Rpb24gY3NzSGVpZ2h0KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdW5pdChvcHRpb25zLmhlaWdodCk7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NTbGlkZVdpZHRoID0gZnVuY3Rpb24gY3NzU2xpZGVXaWR0aChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b1dpZHRoID8gXCJcIiA6IHVuaXQob3B0aW9ucy5maXhlZFdpZHRoKSB8fCAodGhpcy5pc1ZlcnRpY2FsKCkgPyBcIlwiIDogdGhpcy5jc3NTbGlkZVNpemUob3B0aW9ucykpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzU2xpZGVIZWlnaHQgPSBmdW5jdGlvbiBjc3NTbGlkZUhlaWdodChvcHRpb25zKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5maXhlZEhlaWdodCkgfHwgKHRoaXMuaXNWZXJ0aWNhbCgpID8gb3B0aW9ucy5hdXRv
6625SGVpZ2h0ID8gXCJcIiA6IHRoaXMuY3NzU2xpZGVTaXplKG9wdGlvbnMpIDogdGhpcy5jc3NIZWlnaHQob3B0aW9ucykpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzU2xpZGVTaXplID0gZnVuY3Rpb24gY3NzU2xpZGVTaXplKG9wdGlvbnMpIHtcbiAgICB2YXIgZ2FwID0gdW5pdChvcHRpb25zLmdhcCk7XG4gICAgcmV0dXJuIFwiY2FsYygoMTAwJVwiICsgKGdhcCAmJiBcIiArIFwiICsgZ2FwKSArIFwiKS9cIiArIChvcHRpb25zLnBlclBhZ2UgfHwgMSkgKyAoZ2FwICYmIFwiIC0gXCIgKyBnYXApICsgXCIpXCI7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NBc3BlY3RSYXRpbyA9IGZ1bmN0aW9uIGNzc0FzcGVjdFJhdGlvKG9wdGlvbnMpIHtcbiAgICB2YXIgaGVpZ2h0UmF0aW8gPSBvcHRpb25zLmhlaWdodFJhdGlvO1xuICAgIHJldHVybiBoZWlnaHRSYXRpbyA/IFwiXCIgKyAxIC8gaGVpZ2h0UmF0aW8gOiBcIlwiO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRDc3NWYWx1ZSA9IGZ1bmN0aW9uIGJ1aWxkQ3NzVmFsdWUodmFsdWUsIHVuaXQyKSB7XG4gICAgcmV0dXJuIFwiXCIgKyB2YWx1ZSArIHVuaXQyO1xuICB9O1xuXG4gIF9wcm90bzMucGFyc2VDc3NWYWx1ZSA9IGZ1bmN0aW9uIHBhcnNlQ3NzVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YXIgbnVtYmVyID0gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICAgIHZhciB1bml0MiA9IHZhbHVlLnJlcGxhY2UoL1xcZCooXFwuXFxkKik/LywgXCJcIikgfHwgXCJweFwiO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IG51bWJlcixcbiAgICAgICAgdW5pdDogdW5pdDJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHVuaXQ6IFwicHhcIlxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvMy5wYXJzZUJyZWFrcG9pbnRzID0gZnVuY3Rpb24gcGFyc2VCcmVha3BvaW50cygpIHtcbiAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMub3B0aW9ucy5icmVha3BvaW50cztcbiAgICB0aGlzLmJyZWFrcG9pbnRzLnB1c2goW1wiZGVmYXVsdFwiLCB0aGlzLm9wdGlvbnNdKTtcblxuICAgIGlmIChicmVha3BvaW50cykge1xuICAgICAgZm9yT3duKGJyZWFrcG9pbnRzLCBmdW5jdGlvbiAob3B0aW9ucywgd2lkdGgpIHtcbiAgICAgICAgX3RoaXM5LmJyZWFrcG9pbnRzLnB1c2goW3dpZHRoLCBtZXJnZShtZXJnZSh7fSwgX3RoaXM5Lm9wdGlvbnMpLCBvcHRpb25zKV0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90bzMuaXNGaXhlZFdpZHRoID0gZnVuY3Rpb24gaXNGaXhlZFdpZHRoKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gISFvcHRpb25zW3RoaXMuRGlyZWN0aW9uLnJlc29sdmUoXCJmaXhlZFdpZHRoXCIpXTtcbiAgfTtcblxuICBfcHJvdG8zLmlzTG9vcCA9IGZ1bmN0aW9uIGlzTG9vcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnR5cGUgPT09IExPT1A7XG4gIH07XG5cbiAgX3Byb3RvMy5pc0NlbnRlciA9IGZ1bmN0aW9uIGlzQ2VudGVyKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mb2N1cyA9PT0gXCJjZW50ZXJcIikge1xuICAgICAgaWYgKHRoaXMuaXNMb29wKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudHlwZSA9PT0gU0xJREUpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm9wdGlvbnMudHJpbVNwYWNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBfcHJvdG8zLmlzVmVydGljYWwgPSBmdW5jdGlvbiBpc1ZlcnRpY2FsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBUVEI7XG4gIH07XG5cbiAgX3Byb3RvMy5idWlsZENsYXNzZXMgPSBmdW5jdGlvbiBidWlsZENsYXNzZXMoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgcmV0dXJuIFtDTEFTU19ST09ULCBDTEFTU19ST09UICsgXCItLVwiICsgb3B0aW9ucy50eXBlLCBDTEFTU19ST09UICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24sIG9wdGlvbnMuZHJhZyAmJiBDTEFTU19ST09UICsgXCItLWRyYWdnYWJsZVwiLCBvcHRpb25zLmlzTmF2aWdhdGlvbiAmJiBDTEFTU19ST09UICsgXCItLW5hdlwiLCBDTEFTU19BQ1RJVkUsICF0aGlzLmNvbmZpZy5oaWRkZW4gJiYgQ0xBU1NfUkVOREVSRURdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmJ1aWxkQXR0cnMgPSBmdW5jdGlvbiBidWlsZEF0dHJzKGF0dHJzKSB7XG4gICAgdmFyIGF0dHIgPSBcIlwiO1xuICAgIGZvck93bihhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIGF0dHIgKz0gdmFsdWUgPyBcIiBcIiArIGNhbWVsVG9LZWJhYihrZXkpICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiA6IFwiXCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIGF0dHIudHJpbSgpO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRTdHlsZXMgPSBmdW5jdGlvbiBidWlsZFN0eWxlcyhzdHlsZXMpIHtcbiAgICB2YXIgc3R5bGUgPSBcIlwiO1xuICAgIGZvck93bihzdHlsZXMsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBzdHlsZSArPSBcIiBcIiArIGNhbWVsVG9LZWJhYihrZXkpICsgXCI6XCIgKyB2YWx1ZSArIFwiO1wiO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZS50cmltKCk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZW5kZXJTbGlkZXMgPSBmdW5jdGlvbiByZW5kZXJTbGlkZXMoKSB7XG4gICAgdmFyIF90aGlzMTAgPSB0aGlzO1xuXG4gICAgdmFyIHRhZyA9IHRoaXMuY29uZmlnLnNsaWRlVGFnO1xuICAgIHJldHVybiB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBcIjxcIiArIHRhZyArIFwiIFwiICsgX3RoaXMxMC5idWlsZEF0dHJzKGNvbnRlbnQuYXR0cnMpICsgXCI+XCIgKyAoY29udGVudC5odG1sIHx8IFwiXCIpICsgXCI8L1wiICsgdGFnICsgXCI+XCI7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmNvdmVyID0gZnVuY3Rpb24gY292ZXIoY29udGVudCkge1xuICAgIHZhciBzdHlsZXMgPSBjb250ZW50LnN0eWxlcyxcbiAgICAgICAgX2NvbnRlbnQkaHRtbCA9IGNvbnRlbnQuaHRtbCxcbiAgICAgICAgaH
6625RtbCA9IF9jb250ZW50JGh0bWwgPT09IHZvaWQgMCA/IFwiXCIgOiBfY29udGVudCRodG1sO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb3ZlciAmJiAhdGhpcy5vcHRpb25zLmxhenlMb2FkKSB7XG4gICAgICB2YXIgc3JjID0gaHRtbC5tYXRjaCgvPGltZy4qP3NyY1xccyo9XFxzKihbJ1wiXSkoLis/KVxcMS4qPz4vKTtcblxuICAgICAgaWYgKHNyYyAmJiBzcmNbMl0pIHtcbiAgICAgICAgc3R5bGVzLmJhY2tncm91bmQgPSBcImNlbnRlci9jb3ZlciBuby1yZXBlYXQgdXJsKCdcIiArIHNyY1syXSArIFwiJylcIjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5nZW5lcmF0ZUNsb25lcyA9IGZ1bmN0aW9uIGdlbmVyYXRlQ2xvbmVzKGNvbnRlbnRzKSB7XG4gICAgdmFyIGNsYXNzZXMgPSB0aGlzLm9wdGlvbnMuY2xhc3NlcztcbiAgICB2YXIgY291bnQgPSB0aGlzLmdldENsb25lQ291bnQoKTtcbiAgICB2YXIgc2xpZGVzID0gY29udGVudHMuc2xpY2UoKTtcblxuICAgIHdoaWxlIChzbGlkZXMubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgIHB1c2goc2xpZGVzLCBzbGlkZXMpO1xuICAgIH1cblxuICAgIHB1c2goc2xpZGVzLnNsaWNlKC1jb3VudCkucmV2ZXJzZSgpLCBzbGlkZXMuc2xpY2UoMCwgY291bnQpKS5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZW50LCBpbmRleCkge1xuICAgICAgdmFyIGF0dHJzID0gYXNzaWduKHt9LCBjb250ZW50LmF0dHJzLCB7XG4gICAgICAgIGNsYXNzOiBjb250ZW50LmF0dHJzLmNsYXNzICsgXCIgXCIgKyBjbGFzc2VzLmNsb25lXG4gICAgICB9KTtcbiAgICAgIHZhciBjbG9uZSA9IGFzc2lnbih7fSwgY29udGVudCwge1xuICAgICAgICBhdHRyczogYXR0cnNcbiAgICAgIH0pO1xuICAgICAgaW5kZXggPCBjb3VudCA/IGNvbnRlbnRzLnVuc2hpZnQoY2xvbmUpIDogY29udGVudHMucHVzaChjbG9uZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRDbG9uZUNvdW50ID0gZnVuY3Rpb24gZ2V0Q2xvbmVDb3VudCgpIHtcbiAgICBpZiAodGhpcy5pc0xvb3AoKSkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zLmNsb25lcykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5jbG9uZXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBwZXJQYWdlID0gbWF4LmFwcGx5KHZvaWQgMCwgdGhpcy5icmVha3BvaW50cy5tYXAoZnVuY3Rpb24gKF9yZWY2KSB7XG4gICAgICAgIHZhciBvcHRpb25zMiA9IF9yZWY2WzFdO1xuICAgICAgICByZXR1cm4gb3B0aW9uczIucGVyUGFnZTtcbiAgICAgIH0pKTtcbiAgICAgIHJldHVybiBwZXJQYWdlICogKChvcHRpb25zLmZsaWNrTWF4UGFnZXMgfHwgMSkgKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlckFycm93cyA9IGZ1bmN0aW9uIHJlbmRlckFycm93cygpIHtcbiAgICB2YXIgaHRtbCA9IFwiXCI7XG4gICAgaHRtbCArPSBcIjxkaXYgY2xhc3M9XFxcIlwiICsgdGhpcy5vcHRpb25zLmNsYXNzZXMuYXJyb3dzICsgXCJcXFwiPlwiO1xuICAgIGh0bWwgKz0gdGhpcy5yZW5kZXJBcnJvdyh0cnVlKTtcbiAgICBodG1sICs9IHRoaXMucmVuZGVyQXJyb3coZmFsc2UpO1xuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlckFycm93ID0gZnVuY3Rpb24gcmVuZGVyQXJyb3cocHJldikge1xuICAgIHZhciBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICBjbGFzc2VzID0gX3RoaXMkb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgICBpMThuID0gX3RoaXMkb3B0aW9ucy5pMThuO1xuICAgIHZhciBhdHRycyA9IHtcbiAgICAgIGNsYXNzOiBjbGFzc2VzLmFycm93ICsgXCIgXCIgKyAocHJldiA/IGNsYXNzZXMucHJldiA6IGNsYXNzZXMubmV4dCksXG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgYXJpYUxhYmVsOiBwcmV2ID8gaTE4bi5wcmV2IDogaTE4bi5uZXh0XG4gICAgfTtcbiAgICByZXR1cm4gXCI8YnV0dG9uIFwiICsgdGhpcy5idWlsZEF0dHJzKGF0dHJzKSArIFwiPjxzdmcgeG1sbnM9XFxcIlwiICsgWE1MX05BTUVfU1BBQ0UgKyBcIlxcXCIgdmlld0JveD1cXFwiMCAwIFwiICsgU0laRSArIFwiIFwiICsgU0laRSArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiPjxwYXRoIGQ9XFxcIlwiICsgKHRoaXMub3B0aW9ucy5hcnJvd1BhdGggfHwgUEFUSCkgKyBcIlxcXCIgLz48L3N2Zz48L2J1dHRvbj5cIjtcbiAgfTtcblxuICBfcHJvdG8zLmh0bWwgPSBmdW5jdGlvbiBodG1sKCkge1xuICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgcm9vdENsYXNzID0gX3RoaXMkY29uZmlnLnJvb3RDbGFzcyxcbiAgICAgICAgbGlzdFRhZyA9IF90aGlzJGNvbmZpZy5saXN0VGFnLFxuICAgICAgICBhcnJvd3MgPSBfdGhpcyRjb25maWcuYXJyb3dzLFxuICAgICAgICBiZWZvcmVUcmFjayA9IF90aGlzJGNvbmZpZy5iZWZvcmVUcmFjayxcbiAgICAgICAgYWZ0ZXJUcmFjayA9IF90aGlzJGNvbmZpZy5hZnRlclRyYWNrLFxuICAgICAgICBzbGlkZXIgPSBfdGhpcyRjb25maWcuc2xpZGVyLFxuICAgICAgICBiZWZvcmVTbGlkZXIgPSBfdGhpcyRjb25maWcuYmVmb3JlU2xpZGVyLFxuICAgICAgICBhZnRlclNsaWRlciA9IF90aGlzJGNvbmZpZy5hZnRlclNsaWRlcjtcbiAgICB2YXIgaHRtbCA9IFwiXCI7XG4gICAgaHRtbCArPSBcIjxkaXYgaWQ9XFxcIlwiICsgdGhpcy5pZCArIFwiXFxcIiBjbGFzcz1cXFwiXCIgKyB0aGlzLmJ1aWxkQ2xhc3NlcygpICsgXCIgXCIgKyAocm9vdENsYXNzIHx8IFwiXCIpICsgXCJcXFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8c3R5bGU+XCIgKyB0aGlzLlN0eWxlLmJ1aWxkKCkgKyBcIjwvc3R5bGU+XCI7XG5cbiAgICBpZiAoc2xpZGVyKSB7XG4gICAgICBodG1sICs9IGJlZm9yZVNsaWRlciB8fCBcIlwiO1xuICAgICAgaH
6625RtbCArPSBcIjxkaXYgY2xhc3M9XFxcInNwbGlkZV9fc2xpZGVyXFxcIj5cIjtcbiAgICB9XG5cbiAgICBodG1sICs9IGJlZm9yZVRyYWNrIHx8IFwiXCI7XG5cbiAgICBpZiAoYXJyb3dzKSB7XG4gICAgICBodG1sICs9IHRoaXMucmVuZGVyQXJyb3dzKCk7XG4gICAgfVxuXG4gICAgaHRtbCArPSBcIjxkaXYgY2xhc3M9XFxcInNwbGlkZV9fdHJhY2tcXFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8XCIgKyBsaXN0VGFnICsgXCIgY2xhc3M9XFxcInNwbGlkZV9fbGlzdFxcXCI+XCI7XG4gICAgaHRtbCArPSB0aGlzLnJlbmRlclNsaWRlcygpO1xuICAgIGh0bWwgKz0gXCI8L1wiICsgbGlzdFRhZyArIFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICBodG1sICs9IGFmdGVyVHJhY2sgfHwgXCJcIjtcblxuICAgIGlmIChzbGlkZXIpIHtcbiAgICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICAgIGh0bWwgKz0gYWZ0ZXJTbGlkZXIgfHwgXCJcIjtcbiAgICB9XG5cbiAgICBodG1sICs9IFwiPC9kaXY+XCI7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH07XG5cbiAgcmV0dXJuIFNwbGlkZVJlbmRlcmVyO1xufSgpO1xuXG5leHBvcnQgeyBDTEFTU0VTLCBDTEFTU19BQ1RJVkUsIENMQVNTX0FSUk9XLCBDTEFTU19BUlJPV1MsIENMQVNTX0FSUk9XX05FWFQsIENMQVNTX0FSUk9XX1BSRVYsIENMQVNTX0NMT05FLCBDTEFTU19DT05UQUlORVIsIENMQVNTX0ZPQ1VTX0lOLCBDTEFTU19JTklUSUFMSVpFRCwgQ0xBU1NfTElTVCwgQ0xBU1NfTE9BRElORywgQ0xBU1NfTkVYVCwgQ0xBU1NfT1ZFUkZMT1csIENMQVNTX1BBR0lOQVRJT04sIENMQVNTX1BBR0lOQVRJT05fUEFHRSwgQ0xBU1NfUFJFViwgQ0xBU1NfUFJPR1JFU1MsIENMQVNTX1BST0dSRVNTX0JBUiwgQ0xBU1NfUk9PVCwgQ0xBU1NfU0xJREUsIENMQVNTX1NQSU5ORVIsIENMQVNTX1NSLCBDTEFTU19UT0dHTEUsIENMQVNTX1RPR0dMRV9QQVVTRSwgQ0xBU1NfVE9HR0xFX1BMQVksIENMQVNTX1RSQUNLLCBDTEFTU19WSVNJQkxFLCBERUZBVUxUUywgRVZFTlRfQUNUSVZFLCBFVkVOVF9BUlJPV1NfTU9VTlRFRCwgRVZFTlRfQVJST1dTX1VQREFURUQsIEVWRU5UX0FVVE9QTEFZX1BBVVNFLCBFVkVOVF9BVVRPUExBWV9QTEFZLCBFVkVOVF9BVVRPUExBWV9QTEFZSU5HLCBFVkVOVF9DTElDSywgRVZFTlRfREVTVFJPWSwgRVZFTlRfRFJBRywgRVZFTlRfRFJBR0dFRCwgRVZFTlRfRFJBR0dJTkcsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VELCBFVkVOVF9ISURERU4sIEVWRU5UX0lOQUNUSVZFLCBFVkVOVF9MQVpZTE9BRF9MT0FERUQsIEVWRU5UX01PVU5URUQsIEVWRU5UX01PVkUsIEVWRU5UX01PVkVELCBFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQsIEVWRU5UX09WRVJGTE9XLCBFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQsIEVWRU5UX1BBR0lOQVRJT05fVVBEQVRFRCwgRVZFTlRfUkVBRFksIEVWRU5UX1JFRlJFU0gsIEVWRU5UX1JFU0laRSwgRVZFTlRfUkVTSVpFRCwgRVZFTlRfU0NST0xMLCBFVkVOVF9TQ1JPTExFRCwgRVZFTlRfU0hJRlRFRCwgRVZFTlRfU0xJREVfS0VZRE9XTiwgRVZFTlRfVVBEQVRFRCwgRVZFTlRfVklTSUJMRSwgRXZlbnRCaW5kZXIsIEV2ZW50SW50ZXJmYWNlLCBGQURFLCBMT09QLCBMVFIsIFJUTCwgUmVxdWVzdEludGVydmFsLCBTTElERSwgU1RBVFVTX0NMQVNTRVMsIFNwbGlkZSwgU3BsaWRlUmVuZGVyZXIsIFN0YXRlLCBUVEIsIFRocm90dGxlLCBTcGxpZGUgYXMgZGVmYXVsdCB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS9kaXN0L2pzL3NwbGlkZS5lc20uanNcbi8vIG1vZHVsZSBpZCA9IDE0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDUgMjUiXSwic291cmNlUm9vdCI6IiJ9
6626//# sourceURL=webpack-internal:///142
6627`)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Video; });
6628/*!
6629 * Splide.js
6630 * Version  : 0.8.0
6631 * License  : MIT
6632 * Copyright: 2022 Naotoshi Fujita
6633 */
6634function empty(array) {
6635  array.length = 0;
6636}
6637
6638function slice$1(arrayLike, start, end) {
6639  return Array.prototype.slice.call(arrayLike, start, end);
6640}
6641
6642function apply$1(func) {
6643  return func.bind.apply(func, [null].concat(slice$1(arguments, 1)));
6644}
6645
6646function typeOf$1(type, subject) {
6647  return typeof subject === type;
6648}
6649
6650var isArray$1 = Array.isArray;
6651apply$1(typeOf$1, "function");
6652apply$1(typeOf$1, "string");
vendor: 8,477 bytes, lines 6653-7014
6653apply$1(typeOf$1, "undefined");
6654
6655function toArray$1(value) {
6656  return isArray$1(value) ? value : [value];
6657}
6658
6659function forEach$1(values, iteratee) {
6660  toArray$1(values).forEach(iteratee);
6661}
6662
6663function includes(array, value) {
6664  return array.indexOf(value) > -1;
6665}
6666
6667var ownKeys$1 = Object.keys;
6668
6669function forOwn$1(object, iteratee, right) {
6670  if (object) {
6671    var keys = ownKeys$1(object);
6672    keys = right ? keys.reverse() : keys;
6673
6674    for (var i = 0; i < keys.length; i++) {
6675      var key = keys[i];
6676
6677      if (key !== "__proto__") {
6678        if (iteratee(object[key], key) === false) {
6679          break;
6680        }
6681      }
6682    }
6683  }
6684
6685  return object;
6686}
6687
6688function assign$1(object) {
6689  slice$1(arguments, 1).forEach(function (source) {
6690    forOwn$1(source, function (value, key) {
6691      object[key] = source[key];
6692    });
6693  });
6694  return object;
6695}
6696
6697var PROJECT_CODE$1 = "splide";
6698
6699function EventBinder() {
6700  var listeners = [];
6701
6702  function bind(targets, events, callback, options) {
6703    forEachEvent(targets, events, function (target, event, namespace) {
6704      var isEventTarget = ("addEventListener" in target);
6705      var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback);
6706      isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback);
6707      listeners.push([target, event, namespace, callback, remover]);
6708    });
6709  }
6710
6711  function unbind(targets, events, callback) {
6712    forEachEvent(targets, events, function (target, event, namespace) {
6713      listeners = listeners.filter(function (listener) {
6714        if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {
6715          listener[4]();
6716          return false;
6717        }
6718
6719        return true;
6720      });
6721    });
6722  }
6723
6724  function dispatch(target, type, detail) {
6725    var e;
6726    var bubbles = true;
6727
6728    if (typeof CustomEvent === "function") {
6729      e = new CustomEvent(type, {
6730        bubbles: bubbles,
6731        detail: detail
6732      });
6733    } else {
6734      e = document.createEvent("CustomEvent");
6735      e.initCustomEvent(type, bubbles, false, detail);
6736    }
6737
6738    target.dispatchEvent(e);
6739    return e;
6740  }
6741
6742  function forEachEvent(targets, events, iteratee) {
6743    forEach$1(targets, function (target) {
6744      target && forEach$1(events, function (events2) {
6745        events2.split(" ").forEach(function (eventNS) {
6746          var fragment = eventNS.split(".");
6747          iteratee(target, fragment[0], fragment[1]);
6748        });
6749      });
6750    });
6751  }
6752
6753  function destroy() {
6754    listeners.forEach(function (data) {
6755      data[4]();
6756    });
6757    empty(listeners);
6758  }
6759
6760  return {
6761    bind: bind,
6762    unbind: unbind,
6763    dispatch: dispatch,
6764    destroy: destroy
6765  };
6766}
6767
6768var EVENT_MOUNTED = "mounted";
6769var EVENT_MOVE = "move";
6770var EVENT_MOVED = "moved";
6771var EVENT_DRAG = "drag";
6772var EVENT_DRAGGING = "dragging";
6773var EVENT_SCROLL = "scroll";
6774var EVENT_SCROLLED = "scrolled";
6775var EVENT_DESTROY = "destroy";
6776
6777function EventInterface(Splide2) {
6778  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
6779  var binder = EventBinder();
6780
6781  function on(events, callback) {
6782    binder.bind(bus, toArray$1(events).join(" "), function (e) {
6783      callback.apply(callback, isArray$1(e.detail) ? e.detail : []);
6784    });
6785  }
6786
6787  function emit(event) {
6788    binder.dispatch(bus, event, slice$1(arguments, 1));
6789  }
6790
6791  if (Splide2) {
6792    Splide2.event.on(EVENT_DESTROY, binder.destroy);
6793  }
6794
6795  return assign$1(binder, {
6796    bus: bus,
6797    on: on,
6798    off: apply$1(binder.unbind, bus),
6799    emit: emit
6800  });
6801}
6802
6803function State(initialState) {
6804  var state = initialState;
6805
6806  function set(value) {
6807    state = value;
6808  }
6809
6810  function is(states) {
6811    return includes(toArray$1(states), state);
6812  }
6813
6814  return {
6815    set: set,
6816    is: is
6817  };
6818}
6819var CLASS_SLIDE = PROJECT_CODE$1 + "__slide";
6820var CLASS_CONTAINER = CLASS_SLIDE + "__container";
6821
6822function slice(arrayLike, start, end) {
6823  return Array.prototype.slice.call(arrayLike, start, end);
6824}
6825
6826function find(arrayLike, predicate) {
6827  return slice(arrayLike).filter(predicate)[0];
6828}
6829
6830function apply(func) {
6831  return func.bind(null, ...slice(arguments, 1));
6832}
6833
6834function typeOf(type, subject) {
6835  return typeof subject === type;
6836}
6837function isObject(subject) {
6838  return !isNull(subject) && typeOf("object", subject);
6839}
6840const isArray = Array.isArray;
6841const isFunction = apply(typeOf, "function");
6842const isString = apply(typeOf, "string");
6843const isUndefined = apply(typeOf, "undefined");
6844function isNull(subject) {
6845  return subject === null;
6846}
6847function isHTMLElement(subject) {
6848  return subject instanceof HTMLElement;
6849}
6850
6851function toArray(value) {
6852  return isArray(value) ? value : [value];
6853}
6854
6855function forEach(values, iteratee) {
6856  toArray(values).forEach(iteratee);
6857}
6858
6859function toggleClass(elm, classes, add) {
6860  if (elm) {
6861    forEach(classes, (name) => {
6862      if (name) {
6863        elm.classList[add ? "add" : "remove"](name);
6864      }
6865    });
6866  }
6867}
6868
6869function addClass(elm, classes) {
6870  toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true);
6871}
6872
6873function append(parent, children) {
6874  forEach(children, parent.appendChild.bind(parent));
6875}
6876
6877function matches(elm, selector) {
6878  return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector);
6879}
6880
6881function children(parent, selector) {
6882  const children2 = parent ? slice(parent.children) : [];
6883  return selector ? children2.filter((child) => matches(child, selector)) : children2;
6884}
6885
6886function child(parent, selector) {
6887  return selector ? children(parent, selector)[0] : parent.firstElementChild;
6888}
6889
6890const ownKeys = Object.keys;
6891
6892function forOwn(object, iteratee, right) {
6893  if (object) {
6894    let keys = ownKeys(object);
6895    keys = right ? keys.reverse() : keys;
6896    for (let i = 0; i < keys.length; i++) {
6897      const key = keys[i];
6898      if (key !== "__proto__") {
6899        if (iteratee(object[key], key) === false) {
6900          break;
6901        }
6902      }
6903    }
6904  }
6905  return object;
6906}
6907
6908function assign(object) {
6909  slice(arguments, 1).forEach((source) => {
6910    forOwn(source, (value, key) => {
6911      object[key] = source[key];
6912    });
6913  });
6914  return object;
6915}
6916
6917function merge(object) {
6918  slice(arguments, 1).forEach((source) => {
6919    forOwn(source, (value, key) => {
6920      if (isArray(value)) {
6921        object[key] = value.slice();
6922      } else if (isObject(value)) {
6923        object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
6924      } else {
6925        object[key] = value;
6926      }
6927    });
6928  });
6929  return object;
6930}
6931
6932function removeAttribute(elms, attrs) {
6933  forEach(elms, (elm) => {
6934    forEach(attrs, (attr) => {
6935      elm && elm.removeAttribute(attr);
6936    });
6937  });
6938}
6939
6940function setAttribute(elms, attrs, value) {
6941  if (isObject(attrs)) {
6942    forOwn(attrs, (value2, name) => {
6943      setAttribute(elms, name, value2);
6944    });
6945  } else {
6946    forEach(elms, (elm) => {
6947      isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));
6948    });
6949  }
6950}
6951
6952function create(tag, attrs, parent) {
6953  const elm = document.createElement(tag);
6954  if (attrs) {
6955    isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);
6956  }
6957  parent && append(parent, elm);
6958  return elm;
6959}
6960
6961function style(elm, prop, value) {
6962  if (isUndefined(value)) {
6963    return getComputedStyle(elm)[prop];
6964  }
6965  if (!isNull(value)) {
6966    elm.style[prop] = \`\${value}\`;
6967  }
6968}
6969
6970function display(elm, display2) {
6971  style(elm, "display", display2);
6972}
6973
6974function getAttribute(elm, attr) {
6975  return elm.getAttribute(attr);
6976}
6977
6978function hasClass(elm, className) {
6979  return elm && elm.classList.contains(className);
6980}
6981
6982function remove(nodes) {
6983  forEach(nodes, (node) => {
6984    if (node && node.parentNode) {
6985      node.parentNode.removeChild(node);
6986    }
6987  });
6988}
6989
6990function queryAll(parent, selector) {
6991  return selector ? slice(parent.querySelectorAll(selector)) : [];
6992}
6993
6994function removeClass(elm, classes) {
6995  toggleClass(elm, classes, false);
6996}
6997
6998const PROJECT_CODE = "splide";
6999
7000function error(message) {
7001  console.error(\`[\${PROJECT_CODE}] \${message}\`);
7002}
7003
7004const { min, max, floor, ceil, abs } = Math;
7005
7006function clamp(number, x, y) {
7007  const minimum = min(x, y);
7008  const maximum = max(x, y);
7009  return min(max(minimum, number), maximum);
7010}
7011
7012const CLASS_VIDEO = "splide__video";
7013const CLASS_VIDEO_WRAPPER = \`\${CLASS_VIDEO}__wrapper\`;
7014const CLASS_VIDEO_PLAY_BUTTON = \`\${CLASS_VIDEO}__play\
vendor: 5,461 bytes, lines 7014-7225
7014`;
7015const CLASS_PLAYING = "is-playing";
7016const CLASS_ERROR = "is-error";
7017const CLASS_VIDEO_DISABLED = "is-video-disabled";
7018const MODIFIER_HAS_VIDEO = "--has-video";
7019
7020const YOUTUBE_DATA_ATTRIBUTE = "data-splide-youtube";
7021const VIMEO_DATA_ATTRIBUTE = "data-splide-vimeo";
7022const HTML_VIDEO__DATA_ATTRIBUTE = "data-splide-html-video";
7023
7024const DEFAULTS = {
7025  hideControls: false,
7026  loop: false,
7027  mute: false,
7028  volume: 0.2
7029};
7030
7031const EVENT_VIDEO_PLAY = "video:play";
7032const EVENT_VIDEO_PAUSE = "video:pause";
7033const EVENT_VIDEO_ENDED = "video:ended";
7034const EVENT_VIDEO_ERROR = "video:error";
7035const EVENT_VIDEO_CLICK = "video:click";
7036
7037const NOT_INITIALIZED = 1;
7038const INITIALIZING = 2;
7039const INITIALIZED = 3;
7040const PENDING_PLAY = 4;
7041const IDLE = 5;
7042const LOADING = 6;
7043const PLAY_REQUEST_ABORTED = 7;
7044const PLAYING = 8;
7045const ERROR = 9;
7046
7047class AbstractVideoPlayer {
7048  constructor(target, videoId, options) {
7049    this.state = State(NOT_INITIALIZED);
7050    this.event = EventInterface();
7051    this.target = target;
7052    this.videoId = videoId;
7053    this.options = options || {};
7054    this.onPlay = this.onPlay.bind(this);
7055    this.onPause = this.onPause.bind(this);
7056    this.onEnded = this.onEnded.bind(this);
7057    this.onPlayerReady = this.onPlayerReady.bind(this);
7058    this.onError = this.onError.bind(this);
7059  }
7060  on(events, callback) {
7061    this.event.on(events, callback);
7062  }
7063  play() {
7064    const { state } = this;
7065    if (state.is(ERROR)) {
7066      error("Can not play this video.");
7067      return;
7068    }
7069    this.event.emit("play");
7070    if (state.is(INITIALIZING)) {
7071      return state.set(PENDING_PLAY);
7072    }
7073    if (state.is(INITIALIZED)) {
7074      this.player = this.createPlayer(this.videoId);
7075      return state.set(PENDING_PLAY);
7076    }
7077    if (state.is([PENDING_PLAY, PLAYING])) {
7078      return;
7079    }
7080    if (state.is(IDLE)) {
7081      state.set(LOADING);
7082      this.playVideo();
7083    }
7084  }
7085  pause() {
7086    const { state } = this;
7087    if (state.is(ERROR)) {
7088      return;
7089    }
7090    this.event.emit("pause");
7091    if (state.is(PENDING_PLAY)) {
7092      return state.set(INITIALIZING);
7093    }
7094    if (state.is(LOADING)) {
7095      return state.set(PLAY_REQUEST_ABORTED);
7096    }
7097    if (state.is(PLAYING)) {
7098      this.pauseVideo();
7099      this.state.set(IDLE);
7100    }
7101  }
7102  isPaused() {
7103    return !this.state.is(PLAYING);
7104  }
7105  destroy() {
7106    this.event.destroy();
7107  }
7108  onPlayerReady() {
7109    const { state } = this;
7110    const isPending = state.is(PENDING_PLAY);
7111    state.set(IDLE);
7112    if (isPending) {
7113      this.play();
7114    }
7115  }
7116  onPlay() {
7117    const { state } = this;
7118    const aborted = state.is(PLAY_REQUEST_ABORTED);
7119    state.set(PLAYING);
7120    if (aborted) {
7121      this.pause();
7122    } else {
7123      this.event.emit("played");
7124    }
7125  }
7126  onPause() {
7127    this.state.set(IDLE);
7128    this.event.emit("paused");
7129  }
7130  onEnded() {
7131    this.state.set(IDLE);
7132    this.event.emit("ended");
7133  }
7134  onError() {
7135    this.state.set(ERROR);
7136    this.event.emit("error");
7137  }
7138}
7139
7140class HTMLVideoPlayer extends AbstractVideoPlayer {
7141  constructor(target, videoId, options = {}) {
7142    super(target, videoId, options);
7143    this.state.set(INITIALIZED);
7144  }
7145  createPlayer(videoId) {
7146    const { options, options: { playerOptions = {} } } = this;
7147    const player = create("video", { src: videoId }, this.target);
7148    const on = player.addEventListener.bind(player);
7149    assign(player, {
7150      controls: !options.hideControls,
7151      loop: options.loop,
7152      volume: clamp(options.volume, 0, 1),
7153      muted: options.mute
7154    }, playerOptions.htmlVideo || {});
7155    on("play", this.onPlay);
7156    on("pause", this.onPause);
7157    on("ended", this.onEnded);
7158    on("loadeddata", this.onPlayerReady);
7159    on("error", this.onError);
7160    return player;
7161  }
7162  playVideo() {
7163    const promise = this.player.play();
7164    promise && promise.catch(this.onError.bind(this));
7165  }
7166  pauseVideo() {
7167    this.player.pause();
7168  }
7169  onError() {
7170    if (this.state.is(PLAY_REQUEST_ABORTED)) {
7171      this.state.set(IDLE);
7172    } else {
7173      super.onError();
7174    }
7175  }
7176  destroy() {
7177    super.destroy();
7178    const { player } = this;
7179    const off = player.addEventListener.bind(player);
7180    off("play", this.onPlay);
7181    off("pause", this.onPause);
7182    off("ended", this.onEnded);
7183    off("loadeddata", this.onPlayerReady);
7184  }
7185}
7186
7187/*! @vimeo/player v2.17.1 | (c) 2022 Vimeo | MIT License | https://github.com/vimeo/player.js */
7188function _classCallCheck(instance, Constructor) {
7189  if (!(instance instanceof Constructor)) {
7190    throw new TypeError("Cannot call a class as a function");
7191  }
7192}
7193
7194function _defineProperties(target, props) {
7195  for (var i = 0; i < props.length; i++) {
7196    var descriptor = props[i];
7197    descriptor.enumerable = descriptor.enumerable || false;
7198    descriptor.configurable = true;
7199    if ("value" in descriptor) descriptor.writable = true;
7200    Object.defineProperty(target, descriptor.key, descriptor);
7201  }
7202}
7203
7204function _createClass(Constructor, protoProps, staticProps) {
7205  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
7206  if (staticProps) _defineProperties(Constructor, staticProps);
7207  return Constructor;
7208}
7209
7210/**
7211 * @module lib/functions
7212 */
7213
7214/**
7215 * Check to see this is a node environment.
7216 * @type {Boolean}
7217 */
7218
7219/* global global */
7220var isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]';
7221/**
7222 * Get the name of the method for a given getter or setter.
7223 *
7224 * @param {string} prop The name of the property.
7225 * @param {string} type Either 
vendor: 4,191 bytes, lines 7225-7371
7225\u201Cget\u201D or \u201Cset\u201D.
7226 * @return {string}
7227 */
7228
7229function getMethodName(prop, type) {
7230  if (prop.indexOf(type.toLowerCase()) === 0) {
7231    return prop;
7232  }
7233
7234  return "".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1));
7235}
7236/**
7237 * Check to see if the object is a DOM Element.
7238 *
7239 * @param {*} element The object to check.
7240 * @return {boolean}
7241 */
7242
7243function isDomElement(element) {
7244  return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView);
7245}
7246/**
7247 * Check to see whether the value is a number.
7248 *
7249 * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html
7250 * @param {*} value The value to check.
7251 * @param {boolean} integer Check if the value is an integer.
7252 * @return {boolean}
7253 */
7254
7255function isInteger(value) {
7256  // eslint-disable-next-line eqeqeq
7257  return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value;
7258}
7259/**
7260 * Check to see if the URL is a Vimeo url.
7261 *
7262 * @param {string} url The url string.
7263 * @return {boolean}
7264 */
7265
7266function isVimeoUrl(url) {
7267  return /^(https?:)?\\/\\/((player|www)\\.)?vimeo\\.com(?=$|\\/)/.test(url);
7268}
7269/**
7270 * Check to see if the URL is for a Vimeo embed.
7271 *
7272 * @param {string} url The url string.
7273 * @return {boolean}
7274 */
7275
7276function isVimeoEmbed(url) {
7277  var expr = /^https:\\/\\/player\\.vimeo\\.com\\/video\\/\\d+/;
7278  return expr.test(url);
7279}
7280/**
7281 * Get the Vimeo URL from an element.
7282 * The element must have either a data-vimeo-id or data-vimeo-url attribute.
7283 *
7284 * @param {object} oEmbedParameters The oEmbed parameters.
7285 * @return {string}
7286 */
7287
7288function getVimeoUrl() {
7289  var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7290  var id = oEmbedParameters.id;
7291  var url = oEmbedParameters.url;
7292  var idOrUrl = id || url;
7293
7294  if (!idOrUrl) {
7295    throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.');
7296  }
7297
7298  if (isInteger(idOrUrl)) {
7299    return "https://vimeo.com/".concat(idOrUrl);
7300  }
7301
7302  if (isVimeoUrl(idOrUrl)) {
7303    return idOrUrl.replace('http:', 'https:');
7304  }
7305
7306  if (id) {
7307    throw new TypeError("\\u201C".concat(id, "\\u201D is not a valid video id."));
7308  }
7309
7310  throw new TypeError("\\u201C".concat(idOrUrl, "\\u201D is not a vimeo.com url."));
7311}
7312
7313var arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined';
7314var postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined';
7315
7316if (!isNode && (!arrayIndexOfSupport || !postMessageSupport)) {
7317  throw new Error('Sorry, the Vimeo Player API is not available in this browser.');
7318}
7319
7320var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
7321
7322function createCommonjsModule(fn, module) {
7323	return module = { exports: {} }, fn(module, module.exports), module.exports;
7324}
7325
7326/*!
7327 * weakmap-polyfill v2.0.4 - ECMAScript6 WeakMap polyfill
7328 * https://github.com/polygonplanet/weakmap-polyfill
7329 * Copyright (c) 2015-2021 polygonplanet <[email protected]>
7330 * @license MIT
7331 */
7332(function (self) {
7333
7334  if (self.WeakMap) {
7335    return;
7336  }
7337
7338  var hasOwnProperty = Object.prototype.hasOwnProperty;
7339
7340  var hasDefine = Object.defineProperty && function () {
7341    try {
7342      // Avoid IE8's broken Object.defineProperty
7343      return Object.defineProperty({}, 'x', {
7344        value: 1
7345      }).x === 1;
7346    } catch (e) {}
7347  }();
7348
7349  var defineProperty = function (object, name, value) {
7350    if (hasDefine) {
7351      Object.defineProperty(object, name, {
7352        configurable: true,
7353        writable: true,
7354        value: value
7355      });
7356    } else {
7357      object[name] = value;
7358    }
7359  };
7360
7361  self.WeakMap = function () {
7362    // ECMA-262 23.3 WeakMap Objects
7363    function WeakMap() {
7364      if (this === void 0) {
7365        throw new TypeError("Constructor WeakMap requires 'new'");
7366      }
7367
7368      defineProperty(this, '_id', genId('_WeakMap')); // ECMA-262 23.3.1.1 WeakMap([iterable])
7369
7370      if (arguments.length > 0) {
7371        // Currently, WeakMap \`iterable\
vendor: 4,800 bytes, lines 7371-7568
7371` argument is not supported
7372        throw new TypeError('WeakMap iterable is not supported');
7373      }
7374    } // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key)
7375
7376
7377    defineProperty(WeakMap.prototype, 'delete', function (key) {
7378      checkInstance(this, 'delete');
7379
7380      if (!isObject(key)) {
7381        return false;
7382      }
7383
7384      var entry = key[this._id];
7385
7386      if (entry && entry[0] === key) {
7387        delete key[this._id];
7388        return true;
7389      }
7390
7391      return false;
7392    }); // ECMA-262 23.3.3.3 WeakMap.prototype.get(key)
7393
7394    defineProperty(WeakMap.prototype, 'get', function (key) {
7395      checkInstance(this, 'get');
7396
7397      if (!isObject(key)) {
7398        return void 0;
7399      }
7400
7401      var entry = key[this._id];
7402
7403      if (entry && entry[0] === key) {
7404        return entry[1];
7405      }
7406
7407      return void 0;
7408    }); // ECMA-262 23.3.3.4 WeakMap.prototype.has(key)
7409
7410    defineProperty(WeakMap.prototype, 'has', function (key) {
7411      checkInstance(this, 'has');
7412
7413      if (!isObject(key)) {
7414        return false;
7415      }
7416
7417      var entry = key[this._id];
7418
7419      if (entry && entry[0] === key) {
7420        return true;
7421      }
7422
7423      return false;
7424    }); // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value)
7425
7426    defineProperty(WeakMap.prototype, 'set', function (key, value) {
7427      checkInstance(this, 'set');
7428
7429      if (!isObject(key)) {
7430        throw new TypeError('Invalid value used as weak map key');
7431      }
7432
7433      var entry = key[this._id];
7434
7435      if (entry && entry[0] === key) {
7436        entry[1] = value;
7437        return this;
7438      }
7439
7440      defineProperty(key, this._id, [key, value]);
7441      return this;
7442    });
7443
7444    function checkInstance(x, methodName) {
7445      if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {
7446        throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);
7447      }
7448    }
7449
7450    function genId(prefix) {
7451      return prefix + '_' + rand() + '.' + rand();
7452    }
7453
7454    function rand() {
7455      return Math.random().toString().substring(2);
7456    }
7457
7458    defineProperty(WeakMap, '_polyfill', true);
7459    return WeakMap;
7460  }();
7461
7462  function isObject(x) {
7463    return Object(x) === x;
7464  }
7465})(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal);
7466
7467var npo_src = createCommonjsModule(function (module) {
7468/*! Native Promise Only
7469    v0.8.1 (c) Kyle Simpson
7470    MIT License: http://getify.mit-license.org
7471*/
7472(function UMD(name, context, definition) {
7473  // special form of UMD for polyfilling across evironments
7474  context[name] = context[name] || definition();
7475
7476  if ( module.exports) {
7477    module.exports = context[name];
7478  }
7479})("Promise", typeof commonjsGlobal != "undefined" ? commonjsGlobal : commonjsGlobal, function DEF() {
7480
7481  var builtInProp,
7482      cycle,
7483      scheduling_queue,
7484      ToString = Object.prototype.toString,
7485      timer = typeof setImmediate != "undefined" ? function timer(fn) {
7486    return setImmediate(fn);
7487  } : setTimeout; // dammit, IE8.
7488
7489  try {
7490    Object.defineProperty({}, "x", {});
7491
7492    builtInProp = function builtInProp(obj, name, val, config) {
7493      return Object.defineProperty(obj, name, {
7494        value: val,
7495        writable: true,
7496        configurable: config !== false
7497      });
7498    };
7499  } catch (err) {
7500    builtInProp = function builtInProp(obj, name, val) {
7501      obj[name] = val;
7502      return obj;
7503    };
7504  } // Note: using a queue instead of array for efficiency
7505
7506
7507  scheduling_queue = function Queue() {
7508    var first, last, item;
7509
7510    function Item(fn, self) {
7511      this.fn = fn;
7512      this.self = self;
7513      this.next = void 0;
7514    }
7515
7516    return {
7517      add: function add(fn, self) {
7518        item = new Item(fn, self);
7519
7520        if (last) {
7521          last.next = item;
7522        } else {
7523          first = item;
7524        }
7525
7526        last = item;
7527        item = void 0;
7528      },
7529      drain: function drain() {
7530        var f = first;
7531        first = last = cycle = void 0;
7532
7533        while (f) {
7534          f.fn.call(f.self);
7535          f = f.next;
7536        }
7537      }
7538    };
7539  }();
7540
7541  function schedule(fn, self) {
7542    scheduling_queue.add(fn, self);
7543
7544    if (!cycle) {
7545      cycle = timer(scheduling_queue.drain);
7546    }
7547  } // promise duck typing
7548
7549
7550  function isThenable(o) {
7551    var _then,
7552        o_type = typeof o;
7553
7554    if (o != null && (o_type == "object" || o_type == "function")) {
7555      _then = o.then;
7556    }
7557
7558    return typeof _then == "function" ? _then : false;
7559  }
7560
7561  function notify() {
7562    for (var i = 0; i < this.chain.length; i++) {
7563      notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]);
7564    }
7565
7566    this.chain.length = 0;
7567  } // NOTE: This is a separate function to isolate
7568  // the 
7568\`try..catch\` so that other code can be
7569  // optimized better
7570
7571
7572  function notifyIsolated(self, cb, chain) {
7573    var ret, _then;
7574
7575    try {
7576      if (cb === false) {
7577        chain.reject(self.msg);
7578      } else {
7579        if (cb === true) {
7580          ret = self.msg;
7581        } else {
7582          ret = cb.call(void 0, self.msg);
7583        }
7584
7585        if (ret === chain.promise) {
7586          chain.reject(TypeError("Promise-chain cycle"));
7587        } else if (_then = isThenable(ret)) {
7588          _then.call(ret, chain.resolve, chain.reject);
7589        } else {
7590          chain.resolve(ret);
7591        }
7592      }
7593    } catch (err) {
7594      chain.reject(err);
7595    }
7596  }
7597
7598  function resolve(msg) {
7599    var _then,
7600        self = this; // already triggered?
7601
7602
7603    if (self.triggered) {
7604      return;
7605    }
7606
7607    self.triggered = true; // unwrap
7608
7609    if (self.def) {
7610      self = self.def;
7611    }
7612
7613    try {
7614      if (_then = isThenable(msg)) {
7615        schedule(function () {
7616          var def_wrapper = new MakeDefWrapper(self);
7617
7618          try {
7619            _then.call(msg, function $resolve$() {
7620              resolve.apply(def_wrapper, arguments);
7621            }, function $reject$() {
7622              reject.apply(def_wrapper, arguments);
7623            });
7624          } catch (err) {
7625            reject.call(def_wrapper, err);
7626          }
7627        });
7628      } else {
7629        self.msg = msg;
7630        self.state = 1;
7631
7632        if (self.chain.length > 0) {
7633          schedule(notify, self);
7634        }
7635      }
7636    } catch (err) {
7637      reject.call(new MakeDefWrapper(self), err);
7638    }
7639  }
7640
7641  function reject(msg) {
7642    var self = this; // already triggered?
7643
7644    if (self.triggered) {
7645      return;
7646    }
7647
7648    self.triggered = true; // unwrap
7649
7650    if (self.def) {
7651      self = self.def;
7652    }
7653
7654    self.msg = msg;
7655    self.state = 2;
7656
7657    if (self.chain.length > 0) {
7658      schedule(notify, self);
7659    }
7660  }
7661
7662  function iteratePromises(Constructor, arr, resolver, rejecter) {
7663    for (var idx = 0; idx < arr.length; idx++) {
7664      (function IIFE(idx) {
7665        Constructor.resolve(arr[idx]).then(function $resolver$(msg) {
7666          resolver(idx, msg);
7667        }, rejecter);
7668      })(idx);
7669    }
7670  }
7671
7672  function MakeDefWrapper(self) {
7673    this.def = self;
7674    this.triggered = false;
7675  }
7676
7677  function MakeDef(self) {
7678    this.promise = self;
7679    this.state = 0;
7680    this.triggered = false;
7681    this.chain = [];
7682    this.msg = void 0;
7683  }
7684
7685  function Promise(executor) {
7686    if (typeof executor != "function") {
7687      throw TypeError("Not a function");
7688    }
7689
7690    if (this.__NPO__ !== 0) {
7691      throw TypeError("Not a promise");
7692    } // instance shadowing the inherited "brand"
7693    // to signal an already "initialized" promise
7694
7695
7696    this.__NPO__ = 1;
7697    var def = new MakeDef(this);
7698
7699    this["then"] = function then(success, failure) {
7700      var o = {
7701        success: typeof success == "function" ? success : true,
7702        failure: typeof failure == "function" ? failure : false
7703      }; // Note: \`then(..)\` itself can be borrowed to be used against
7704      // a different promise constructor for making the chained promise,
7705      // by substituting a different \`this\` binding.
7706
7707      o.promise = new this.constructor(function extractChain(resolve, reject) {
7708        if (typeof resolve != "function" || typeof reject != "function") {
7709          throw TypeError("Not a function");
7710        }
7711
7712        o.resolve = resolve;
7713        o.reject = reject;
7714      });
7715      def.chain.push(o);
7716
7717      if (def.state !== 0) {
7718        schedule(notify, def);
7719      }
7720
7721      return o.promise;
7722    };
7723
7724    this["catch"] = function $catch$(failure) {
7725      return this.then(void 0, failure);
7726    };
7727
7728    try {
7729      executor.call(void 0, function publicResolve(msg) {
7730        resolve.call(def, msg);
7731      }, function publicReject(msg) {
7732        reject.call(def, msg);
7733      });
7734    } catch (err) {
7735      reject.call(def, err);
7736    }
7737  }
7738
7739  var PromisePrototype = builtInProp({}, "constructor", Promise,
7740  /*configurable=*/
7741  false); // Note: Android 4 cannot use \`Object.defineProperty(..)\` here
7742
7743  Promise.prototype = PromisePrototype; // built-in "brand" to signal an "uninitialized" promise
7744
7745  builtInProp(PromisePrototype, "__NPO__", 0,
7746  /*configurable=*/
7747  false);
7748  builtInProp(Promise, "resolve", function Promise$resolve(msg) {
7749    var Constructor = this; // spec mandated checks
7750    // note: best "isPromise" check that's practical for now
7751
7752    if (msg && typeof msg == "object" && msg.__NPO__ === 1) {
7753      return msg;
7754    }
7755
7756    return new Constructor(function executor(resolve, reject) {
7757      if (typeof resolve != "function" || typeof reject != "function") {
7758        throw TypeError("Not a function");
7759      }
7760
7761      resolve(msg);
7762    });
7763  });
7764  builtInProp(Promise, "reject", function Promise$reject(msg) {
7765    return new this(function executor(resolve, reject) {
7766      if (typeof resolve != "function" || typeof reject != "function") {
7767        throw TypeError("Not a function");
7768      }
7769
7770      reject(msg);
7771    });
7772  });
7773  builtInProp(Promise, "all", function Promise$all(arr) {
7774    var Constructor = this; // spec mandated checks
7775
7776    if (ToString.call(arr) != "[object Array]") {
7777      return Constructor.reject(TypeError("Not an array"));
7778    }
7779
7780    if (arr.length === 0) {
7781      return Constructor.resolve([]);
7782    }
7783
7784    return new Constructor(function executor(resolve, reject) {
7785      if (typeof resolve != "function" || typeof reject != "function") {
7786        throw TypeError("Not a function");
7787      }
7788
7789      var len = arr.length,
7790          msgs = Array(len),
7791          count = 0;
7792      iteratePromises(Constructor, arr, function resolver(idx, msg) {
7793        msgs[idx] = msg;
7794
7795        if (++count === len) {
7796          resolve(msgs);
7797        }
7798      }, reject);
7799    });
7800  });
7801  builtInProp(Promise, "race", function Promise$race(arr) {
7802    var Constructor = this; // spec mandated checks
7803
7804    if (ToString.call(arr) != "[object Array]") {
7805      return Constructor.reject(TypeError("Not an array"));
7806    }
7807
7808    return new Constructor(function executor(resolve, reject) {
7809      if (typeof resolve != "function" || typeof reject != "function") {
7810        throw TypeError("Not a function");
7811      }
7812
7813      iteratePromises(Constructor, arr, function resolver(idx, msg) {
7814        resolve(msg);
7815      }, reject);
7816    });
7817  });
7818  return Promise;
7819});
7820});
7821
7822/**
7823 * @module lib/callbacks
7824 */
7825var callbackMap = new WeakMap();
7826/**
7827 * Store a callback for a method or event for a player.
7828 *
7829 * @param {Player} player The player object.
7830 * @param {string} name The method or event name.
7831 * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback
7832 *        The callback to call or an object with resolve and reject functions for a promise.
7833 * @return {void}
7834 */
7835
7836function storeCallback(player, name, callback) {
7837  var playerCallbacks = callbackMap.get(player.element) || {};
7838
7839  if (!(name in playerCallbacks)) {
7840    playerCallbacks[name] = [];
7841  }
7842
7843  playerCallbacks[name].push(callback);
7844  callbackMap.set(player.element, playerCallbacks);
7845}
7846/**
7847 * Get the callbacks for a player and event or method.
7848 *
7849 * @param {Player} player The player object.
7850 * @param {string} name The method or event name
7851 * @return {function[]}
7852 */
7853
7854function getCallbacks(player, name) {
7855  var playerCallbacks = callbackMap.get(player.element) || {};
7856  return playerCallbacks[name] || [];
7857}
7858/**
7859 * Remove a stored callback for a method or event for a player.
7860 *
7861 * @param {Player} player The player object.
7862 * @param {string} name The method or event name
7863 * @param {function} [callback] The specific callback to remove.
7864 * @return {boolean} Was this the last callback?
7865 */
7866
7867function removeCallback(player, name, callback) {
7868  var playerCallbacks = callbackMap.get(player.element) || {};
7869
7870  if (!playerCallbacks[name]) {
7871    return true;
7872  } // If no callback is passed, remove all callbacks for the event
7873
7874
7875  if (!callback) {
7876    playerCallbacks[name] = [];
7877    callbackMap.set(player.element, playerCallbacks);
7878    return true;
7879  }
7880
7881  var index = playerCallbacks[name].indexOf(callback);
7882
7883  if (index !== -1) {
7884    playerCallbacks[name].splice(index, 1);
7885  }
7886
7887  callbackMap.set(player.element, playerCallbacks);
7888  return playerCallbacks[name] && playerCallbacks[name].length === 0;
7889}
7890/**
7891 * Return the first stored callback for a player and event or method.
7892 *
7893 * @param {Player} player The player object.
7894 * @param {string} name The method or event name.
7895 * @return {function} The callback, or false if there were none
7896 */
7897
7898function shiftCallbacks(player, name) {
7899  var playerCallbacks = getCallbacks(player, name);
7900
7901  if (playerCallbacks.length < 1) {
7902    return false;
vendor: 5,616 bytes, lines 7903-8103
7903  }
7904
7905  var callback = playerCallbacks.shift();
7906  removeCallback(player, name, callback);
7907  return callback;
7908}
7909/**
7910 * Move callbacks associated with an element to another element.
7911 *
7912 * @param {HTMLElement} oldElement The old element.
7913 * @param {HTMLElement} newElement The new element.
7914 * @return {void}
7915 */
7916
7917function swapCallbacks(oldElement, newElement) {
7918  var playerCallbacks = callbackMap.get(oldElement);
7919  callbackMap.set(newElement, playerCallbacks);
7920  callbackMap.delete(oldElement);
7921}
7922
7923/**
7924 * @module lib/postmessage
7925 */
7926/**
7927 * Parse a message received from postMessage.
7928 *
7929 * @param {*} data The data received from postMessage.
7930 * @return {object}
7931 */
7932
7933function parseMessageData(data) {
7934  if (typeof data === 'string') {
7935    try {
7936      data = JSON.parse(data);
7937    } catch (error) {
7938      // If the message cannot be parsed, throw the error as a warning
7939      console.warn(error);
7940      return {};
7941    }
7942  }
7943
7944  return data;
7945}
7946/**
7947 * Post a message to the specified target.
7948 *
7949 * @param {Player} player The player object to use.
7950 * @param {string} method The API method to call.
7951 * @param {object} params The parameters to send to the player.
7952 * @return {void}
7953 */
7954
7955function postMessage(player, method, params) {
7956  if (!player.element.contentWindow || !player.element.contentWindow.postMessage) {
7957    return;
7958  }
7959
7960  var message = {
7961    method: method
7962  };
7963
7964  if (params !== undefined) {
7965    message.value = params;
7966  } // IE 8 and 9 do not support passing messages, so stringify them
7967
7968
7969  var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1'));
7970
7971  if (ieVersion >= 8 && ieVersion < 10) {
7972    message = JSON.stringify(message);
7973  }
7974
7975  player.element.contentWindow.postMessage(message, player.origin);
7976}
7977/**
7978 * Parse the data received from a message event.
7979 *
7980 * @param {Player} player The player that received the message.
7981 * @param {(Object|string)} data The message data. Strings will be parsed into JSON.
7982 * @return {void}
7983 */
7984
7985function processData(player, data) {
7986  data = parseMessageData(data);
7987  var callbacks = [];
7988  var param;
7989
7990  if (data.event) {
7991    if (data.event === 'error') {
7992      var promises = getCallbacks(player, data.data.method);
7993      promises.forEach(function (promise) {
7994        var error = new Error(data.data.message);
7995        error.name = data.data.name;
7996        promise.reject(error);
7997        removeCallback(player, data.data.method, promise);
7998      });
7999    }
8000
8001    callbacks = getCallbacks(player, "event:".concat(data.event));
8002    param = data.data;
8003  } else if (data.method) {
8004    var callback = shiftCallbacks(player, data.method);
8005
8006    if (callback) {
8007      callbacks.push(callback);
8008      param = data.value;
8009    }
8010  }
8011
8012  callbacks.forEach(function (callback) {
8013    try {
8014      if (typeof callback === 'function') {
8015        callback.call(player, param);
8016        return;
8017      }
8018
8019      callback.resolve(param);
8020    } catch (e) {// empty
8021    }
8022  });
8023}
8024
8025/**
8026 * @module lib/embed
8027 */
8028var oEmbedParameters = ['autopause', 'autoplay', 'background', 'byline', 'color', 'controls', 'dnt', 'height', 'id', 'interactive_params', 'keyboard', 'loop', 'maxheight', 'maxwidth', 'muted', 'playsinline', 'portrait', 'responsive', 'speed', 'texttrack', 'title', 'transparent', 'url', 'width'];
8029/**
8030 * Get the 'data-vimeo'-prefixed attributes from an element as an object.
8031 *
8032 * @param {HTMLElement} element The element.
8033 * @param {Object} [defaults={}] The default values to use.
8034 * @return {Object<string, string>}
8035 */
8036
8037function getOEmbedParameters(element) {
8038  var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8039  return oEmbedParameters.reduce(function (params, param) {
8040    var value = element.getAttribute("data-vimeo-".concat(param));
8041
8042    if (value || value === '') {
8043      params[param] = value === '' ? 1 : value;
8044    }
8045
8046    return params;
8047  }, defaults);
8048}
8049/**
8050 * Create an embed from oEmbed data inside an element.
8051 *
8052 * @param {object} data The oEmbed data.
8053 * @param {HTMLElement} element The element to put the iframe in.
8054 * @return {HTMLIFrameElement} The iframe embed.
8055 */
8056
8057function createEmbed(_ref, element) {
8058  var html = _ref.html;
8059
8060  if (!element) {
8061    throw new TypeError('An element must be provided');
8062  }
8063
8064  if (element.getAttribute('data-vimeo-initialized') !== null) {
8065    return element.querySelector('iframe');
8066  }
8067
8068  var div = document.createElement('div');
8069  div.innerHTML = html;
8070  element.appendChild(div.firstChild);
8071  element.setAttribute('data-vimeo-initialized', 'true');
8072  return element.querySelector('iframe');
8073}
8074/**
8075 * Make an oEmbed call for the specified URL.
8076 *
8077 * @param {string} videoUrl The vimeo.com url for the video.
8078 * @param {Object} [params] Parameters to pass to oEmbed.
8079 * @param {HTMLElement} element The element.
8080 * @return {Promise}
8081 */
8082
8083function getOEmbedData(videoUrl) {
8084  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8085  var element = arguments.length > 2 ? arguments[2] : undefined;
8086  return new Promise(function (resolve, reject) {
8087    if (!isVimeoUrl(videoUrl)) {
8088      throw new TypeError("\\u201C".concat(videoUrl, "\\u201D is not a vimeo.com url."));
8089    }
8090
8091    var url = "https://vimeo.com/api/oembed.json?url=".concat(encodeURIComponent(videoUrl));
8092
8093    for (var param in params) {
8094      if (params.hasOwnProperty(param)) {
8095        url += "&".concat(param, "=").concat(encodeURIComponent(params[param]));
8096      }
8097    }
8098
8099    var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest();
8100    xhr.open('GET', url, true);
8101
8102    xhr.onload = function () {
8103      if (xhr.status === 404) {
8104        reject(new Error("\\u201C".concat(videoUrl, "\\u201D was not found.")));
8105        return;
8106      }
8107
8108      if (xhr.status === 403) {
8109        reject(new Error("\\u201C".concat(videoUrl, "\\u201D is not embeddable.")));
8110        return;
8111      }
8112
8113      try {
8114        var json = JSON.parse(xhr.responseText); // Check api response for 403 on oembed
8115
8116        if (json.domain_status_code === 403) {
8117          // We still want to create the embed to give users visual feedback
8118          createEmbed(json, element);
8119          reject(new Error("\\u201C".concat(videoUrl, "\
vendor: 9,786 bytes, lines 8119-8424
8119\u201D is not embeddable.")));
8120          return;
8121        }
8122
8123        resolve(json);
8124      } catch (error) {
8125        reject(error);
8126      }
8127    };
8128
8129    xhr.onerror = function () {
8130      var status = xhr.status ? " (".concat(xhr.status, ")") : '';
8131      reject(new Error("There was an error fetching the embed code from Vimeo".concat(status, ".")));
8132    };
8133
8134    xhr.send();
8135  });
8136}
8137/**
8138 * Initialize all embeds within a specific element
8139 *
8140 * @param {HTMLElement} [parent=document] The parent element.
8141 * @return {void}
8142 */
8143
8144function initializeEmbeds() {
8145  var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
8146  var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]'));
8147
8148  var handleError = function handleError(error) {
8149    if ('console' in window && console.error) {
8150      console.error("There was an error creating an embed: ".concat(error));
8151    }
8152  };
8153
8154  elements.forEach(function (element) {
8155    try {
8156      // Skip any that have data-vimeo-defer
8157      if (element.getAttribute('data-vimeo-defer') !== null) {
8158        return;
8159      }
8160
8161      var params = getOEmbedParameters(element);
8162      var url = getVimeoUrl(params);
8163      getOEmbedData(url, params, element).then(function (data) {
8164        return createEmbed(data, element);
8165      }).catch(handleError);
8166    } catch (error) {
8167      handleError(error);
8168    }
8169  });
8170}
8171/**
8172 * Resize embeds when messaged by the player.
8173 *
8174 * @param {HTMLElement} [parent=document] The parent element.
8175 * @return {void}
8176 */
8177
8178function resizeEmbeds() {
8179  var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
8180
8181  // Prevent execution if users include the player.js script multiple times.
8182  if (window.VimeoPlayerResizeEmbeds_) {
8183    return;
8184  }
8185
8186  window.VimeoPlayerResizeEmbeds_ = true;
8187
8188  var onMessage = function onMessage(event) {
8189    if (!isVimeoUrl(event.origin)) {
8190      return;
8191    } // 'spacechange' is fired only on embeds with cards
8192
8193
8194    if (!event.data || event.data.event !== 'spacechange') {
8195      return;
8196    }
8197
8198    var iframes = parent.querySelectorAll('iframe');
8199
8200    for (var i = 0; i < iframes.length; i++) {
8201      if (iframes[i].contentWindow !== event.source) {
8202        continue;
8203      } // Change padding-bottom of the enclosing div to accommodate
8204      // card carousel without distorting aspect ratio
8205
8206
8207      var space = iframes[i].parentElement;
8208      space.style.paddingBottom = "".concat(event.data.data[0].bottom, "px");
8209      break;
8210    }
8211  };
8212
8213  window.addEventListener('message', onMessage);
8214}
8215/**
8216 * Add chapters to existing metadata for Google SEO
8217 *
8218 * @param {HTMLElement} [parent=document] The parent element.
8219 * @return {void}
8220 */
8221
8222function initAppendVideoMetadata() {
8223  var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
8224
8225  //  Prevent execution if users include the player.js script multiple times.
8226  if (window.VimeoSeoMetadataAppended) {
8227    return;
8228  }
8229
8230  window.VimeoSeoMetadataAppended = true;
8231
8232  var onMessage = function onMessage(event) {
8233    if (!isVimeoUrl(event.origin)) {
8234      return;
8235    }
8236
8237    var data = parseMessageData(event.data);
8238
8239    if (!data || data.event !== 'ready') {
8240      return;
8241    }
8242
8243    var iframes = parent.querySelectorAll('iframe');
8244
8245    for (var i = 0; i < iframes.length; i++) {
8246      var iframe = iframes[i]; // Initiate appendVideoMetadata if iframe is a Vimeo embed
8247
8248      var isValidMessageSource = iframe.contentWindow === event.source;
8249
8250      if (isVimeoEmbed(iframe.src) && isValidMessageSource) {
8251        var player = new Player$1(iframe);
8252        player.callMethod('appendVideoMetadata', window.location.href);
8253      }
8254    }
8255  };
8256
8257  window.addEventListener('message', onMessage);
8258}
8259
8260/* MIT License
8261
8262Copyright (c) Sindre Sorhus <[email protected]> (sindresorhus.com)
8263
8264Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
8265
8266The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8267
8268THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8269Terms */
8270function initializeScreenfull() {
8271  var fn = function () {
8272    var val;
8273    var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'], // New WebKit
8274    ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'], // Old WebKit
8275    ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];
8276    var i = 0;
8277    var l = fnMap.length;
8278    var ret = {};
8279
8280    for (; i < l; i++) {
8281      val = fnMap[i];
8282
8283      if (val && val[1] in document) {
8284        for (i = 0; i < val.length; i++) {
8285          ret[fnMap[0][i]] = val[i];
8286        }
8287
8288        return ret;
8289      }
8290    }
8291
8292    return false;
8293  }();
8294
8295  var eventNameMap = {
8296    fullscreenchange: fn.fullscreenchange,
8297    fullscreenerror: fn.fullscreenerror
8298  };
8299  var screenfull = {
8300    request: function request(element) {
8301      return new Promise(function (resolve, reject) {
8302        var onFullScreenEntered = function onFullScreenEntered() {
8303          screenfull.off('fullscreenchange', onFullScreenEntered);
8304          resolve();
8305        };
8306
8307        screenfull.on('fullscreenchange', onFullScreenEntered);
8308        element = element || document.documentElement;
8309        var returnPromise = element[fn.requestFullscreen]();
8310
8311        if (returnPromise instanceof Promise) {
8312          returnPromise.then(onFullScreenEntered).catch(reject);
8313        }
8314      });
8315    },
8316    exit: function exit() {
8317      return new Promise(function (resolve, reject) {
8318        if (!screenfull.isFullscreen) {
8319          resolve();
8320          return;
8321        }
8322
8323        var onFullScreenExit = function onFullScreenExit() {
8324          screenfull.off('fullscreenchange', onFullScreenExit);
8325          resolve();
8326        };
8327
8328        screenfull.on('fullscreenchange', onFullScreenExit);
8329        var returnPromise = document[fn.exitFullscreen]();
8330
8331        if (returnPromise instanceof Promise) {
8332          returnPromise.then(onFullScreenExit).catch(reject);
8333        }
8334      });
8335    },
8336    on: function on(event, callback) {
8337      var eventName = eventNameMap[event];
8338
8339      if (eventName) {
8340        document.addEventListener(eventName, callback);
8341      }
8342    },
8343    off: function off(event, callback) {
8344      var eventName = eventNameMap[event];
8345
8346      if (eventName) {
8347        document.removeEventListener(eventName, callback);
8348      }
8349    }
8350  };
8351  Object.defineProperties(screenfull, {
8352    isFullscreen: {
8353      get: function get() {
8354        return Boolean(document[fn.fullscreenElement]);
8355      }
8356    },
8357    element: {
8358      enumerable: true,
8359      get: function get() {
8360        return document[fn.fullscreenElement];
8361      }
8362    },
8363    isEnabled: {
8364      enumerable: true,
8365      get: function get() {
8366        // Coerce to boolean in case of old WebKit
8367        return Boolean(document[fn.fullscreenEnabled]);
8368      }
8369    }
8370  });
8371  return screenfull;
8372}
8373
8374var playerMap = new WeakMap();
8375var readyMap = new WeakMap();
8376var screenfull = {};
8377
8378var Player$1 = /*#__PURE__*/function () {
8379  /**
8380   * Create a Player.
8381   *
8382   * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo
8383   *        player iframe, and id, or a jQuery object.
8384   * @param {object} [options] oEmbed parameters to use when creating an embed in the element.
8385   * @return {Player}
8386   */
8387  function Player(element) {
8388    var _this = this;
8389
8390    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8391
8392    _classCallCheck(this, Player);
8393
8394    /* global jQuery */
8395    if (window.jQuery && element instanceof jQuery) {
8396      if (element.length > 1 && window.console && console.warn) {
8397        console.warn('A jQuery object with multiple elements was passed, using the first element.');
8398      }
8399
8400      element = element[0];
8401    } // Find an element by ID
8402
8403
8404    if (typeof document !== 'undefined' && typeof element === 'string') {
8405      element = document.getElementById(element);
8406    } // Not an element!
8407
8408
8409    if (!isDomElement(element)) {
8410      throw new TypeError('You must pass either a valid element or a valid id.');
8411    } // Already initialized an embed in this div, so grab the iframe
8412
8413
8414    if (element.nodeName !== 'IFRAME') {
8415      var iframe = element.querySelector('iframe');
8416
8417      if (iframe) {
8418        element = iframe;
8419      }
8420    } // iframe url is not a Vimeo url
8421
8422
8423    if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) {
8424      throw new Error('The player element passed isn
vendor: 5,511 bytes, lines 8424-8605
8424\u2019t a Vimeo embed.');
8425    } // If there is already a player object in the map, return that
8426
8427
8428    if (playerMap.has(element)) {
8429      return playerMap.get(element);
8430    }
8431
8432    this._window = element.ownerDocument.defaultView;
8433    this.element = element;
8434    this.origin = '*';
8435    var readyPromise = new npo_src(function (resolve, reject) {
8436      _this._onMessage = function (event) {
8437        if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) {
8438          return;
8439        }
8440
8441        if (_this.origin === '*') {
8442          _this.origin = event.origin;
8443        }
8444
8445        var data = parseMessageData(event.data);
8446        var isError = data && data.event === 'error';
8447        var isReadyError = isError && data.data && data.data.method === 'ready';
8448
8449        if (isReadyError) {
8450          var error = new Error(data.data.message);
8451          error.name = data.data.name;
8452          reject(error);
8453          return;
8454        }
8455
8456        var isReadyEvent = data && data.event === 'ready';
8457        var isPingResponse = data && data.method === 'ping';
8458
8459        if (isReadyEvent || isPingResponse) {
8460          _this.element.setAttribute('data-ready', 'true');
8461
8462          resolve();
8463          return;
8464        }
8465
8466        processData(_this, data);
8467      };
8468
8469      _this._window.addEventListener('message', _this._onMessage);
8470
8471      if (_this.element.nodeName !== 'IFRAME') {
8472        var params = getOEmbedParameters(element, options);
8473        var url = getVimeoUrl(params);
8474        getOEmbedData(url, params, element).then(function (data) {
8475          var iframe = createEmbed(data, element); // Overwrite element with the new iframe,
8476          // but store reference to the original element
8477
8478          _this.element = iframe;
8479          _this._originalElement = element;
8480          swapCallbacks(element, iframe);
8481          playerMap.set(_this.element, _this);
8482          return data;
8483        }).catch(reject);
8484      }
8485    }); // Store a copy of this Player in the map
8486
8487    readyMap.set(this, readyPromise);
8488    playerMap.set(this.element, this); // Send a ping to the iframe so the ready promise will be resolved if
8489    // the player is already ready.
8490
8491    if (this.element.nodeName === 'IFRAME') {
8492      postMessage(this, 'ping');
8493    }
8494
8495    if (screenfull.isEnabled) {
8496      var exitFullscreen = function exitFullscreen() {
8497        return screenfull.exit();
8498      };
8499
8500      this.fullscreenchangeHandler = function () {
8501        if (screenfull.isFullscreen) {
8502          storeCallback(_this, 'event:exitFullscreen', exitFullscreen);
8503        } else {
8504          removeCallback(_this, 'event:exitFullscreen', exitFullscreen);
8505        } // eslint-disable-next-line
8506
8507
8508        _this.ready().then(function () {
8509          postMessage(_this, 'fullscreenchange', screenfull.isFullscreen);
8510        });
8511      };
8512
8513      screenfull.on('fullscreenchange', this.fullscreenchangeHandler);
8514    }
8515
8516    return this;
8517  }
8518  /**
8519   * Get a promise for a method.
8520   *
8521   * @param {string} name The API method to call.
8522   * @param {Object} [args={}] Arguments to send via postMessage.
8523   * @return {Promise}
8524   */
8525
8526
8527  _createClass(Player, [{
8528    key: "callMethod",
8529    value: function callMethod(name) {
8530      var _this2 = this;
8531
8532      var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8533      return new npo_src(function (resolve, reject) {
8534        // We are storing the resolve/reject handlers to call later, so we
8535        // can\u2019t return here.
8536        // eslint-disable-next-line promise/always-return
8537        return _this2.ready().then(function () {
8538          storeCallback(_this2, name, {
8539            resolve: resolve,
8540            reject: reject
8541          });
8542          postMessage(_this2, name, args);
8543        }).catch(reject);
8544      });
8545    }
8546    /**
8547     * Get a promise for the value of a player property.
8548     *
8549     * @param {string} name The property name
8550     * @return {Promise}
8551     */
8552
8553  }, {
8554    key: "get",
8555    value: function get(name) {
8556      var _this3 = this;
8557
8558      return new npo_src(function (resolve, reject) {
8559        name = getMethodName(name, 'get'); // We are storing the resolve/reject handlers to call later, so we
8560        // can\u2019t return here.
8561        // eslint-disable-next-line promise/always-return
8562
8563        return _this3.ready().then(function () {
8564          storeCallback(_this3, name, {
8565            resolve: resolve,
8566            reject: reject
8567          });
8568          postMessage(_this3, name);
8569        }).catch(reject);
8570      });
8571    }
8572    /**
8573     * Get a promise for setting the value of a player property.
8574     *
8575     * @param {string} name The API method to call.
8576     * @param {mixed} value The value to set.
8577     * @return {Promise}
8578     */
8579
8580  }, {
8581    key: "set",
8582    value: function set(name, value) {
8583      var _this4 = this;
8584
8585      return new npo_src(function (resolve, reject) {
8586        name = getMethodName(name, 'set');
8587
8588        if (value === undefined || value === null) {
8589          throw new TypeError('There must be a value to set.');
8590        } // We are storing the resolve/reject handlers to call later, so we
8591        // can\u2019t return here.
8592        // eslint-disable-next-line promise/always-return
8593
8594
8595        return _this4.ready().then(function () {
8596          storeCallback(_this4, name, {
8597            resolve: resolve,
8598            reject: reject
8599          });
8600          postMessage(_this4, name, value);
8601        }).catch(reject);
8602      });
8603    }
8604    /**
8605     * Add an event listener for the specified event. Will call the
8606     * callback with a single parameter, \`data\`, that contains the data for
8607     * that event.
8608     *
8609     * @param {string} eventName The name of the event.
8610     * @param {function(*)} callback The function to call when the event fires.
8611     * @return {void}
8612     */
8613
8614  }, {
8615    key: "on",
8616    value: function on(eventName, callback) {
8617      if (!eventName) {
8618        throw new TypeError('You must pass an event name.');
8619      }
8620
8621      if (!callback) {
8622        throw new TypeError('You must pass a callback function.');
8623      }
8624
8625      if (typeof callback !== 'function') {
8626        throw new TypeError('The callback must be a function.');
8627      }
8628
8629      var callbacks = getCallbacks(this, "event:".concat(eventName));
8630
8631      if (callbacks.length === 0) {
8632        this.callMethod('addEventListener', eventName).catch(function () {// Ignore the error. There will be an error event fired that
8633          // will trigger the error callback if they are listening.
8634        });
8635      }
8636
8637      storeCallback(this, "event:".concat(eventName), callback);
8638    }
8639    /**
8640     * Remove an event listener for the specified event. Will remove all
8641     * listeners for that event if a \`callback\` isn\u2019t passed, or only that
8642     * specific callback if it is passed.
8643     *
8644     * @param {string} eventName The name of the event.
8645     * @param {function} [callback] The specific callback to remove.
8646     * @return {void}
8647     */
8648
8649  }, {
8650    key: "off",
8651    value: function off(eventName, callback) {
8652      if (!eventName) {
8653        throw new TypeError('You must pass an event name.');
8654      }
8655
8656      if (callback && typeof callback !== 'function') {
8657        throw new TypeError('The callback must be a function.');
8658      }
8659
8660      var lastCallback = removeCallback(this, "event:".concat(eventName), callback); // If there are no callbacks left, remove the listener
8661
8662      if (lastCallback) {
8663        this.callMethod('removeEventListener', eventName).catch(function (e) {// Ignore the error. There will be an error event fired that
8664          // will trigger the error callback if they are listening.
8665        });
8666      }
8667    }
8668    /**
8669     * A promise to load a new video.
8670     *
8671     * @promise LoadVideoPromise
8672     * @fulfill {number} The video with this id or url successfully loaded.
8673     * @reject {TypeError} The id was not a number.
8674     */
8675
8676    /**
8677     * Load a new video into this embed. The promise will be resolved if
8678     * the video is successfully loaded, or it will be rejected if it could
8679     * not be loaded.
8680     *
8681     * @param {number|string|object} options The id of the video, the url of the video, or an object with embed options.
8682     * @return {LoadVideoPromise}
8683     */
8684
8685  }, {
8686    key: "loadVideo",
8687    value: function loadVideo(options) {
8688      return this.callMethod('loadVideo', options);
8689    }
8690    /**
8691     * A promise to perform an action when the Player is ready.
8692     *
8693     * @todo document errors
8694     * @promise LoadVideoPromise
8695     * @fulfill {void}
8696     */
8697
8698    /**
8699     * Trigger a function when the player iframe has initialized. You do not
8700     * need to wait for \`ready\` to trigger to begin adding event listeners
8701     * or calling other methods.
8702     *
8703     * @return {ReadyPromise}
8704     */
8705
8706  }, {
8707    key: "ready",
8708    value: function ready() {
8709      var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) {
8710        reject(new Error('Unknown player. Probably unloaded.'));
8711      });
8712      return npo_src.resolve(readyPromise);
8713    }
8714    /**
8715     * A promise to add a cue point to the player.
8716     *
8717     * @promise AddCuePointPromise
8718     * @fulfill {string} The id of the cue point to use for removeCuePoint.
8719     * @reject {RangeError} the time was less than 0 or greater than the
8720     *         video\u2019s duration.
8721     * @reject {UnsupportedError} Cue points are not supported with the current
8722     *         player or browser.
8723     */
8724
8725    /**
8726     * Add a cue point to the player.
8727     *
8728     * @param {number} time The time for the cue point.
8729     * @param {object} [data] Arbitrary data to be returned with the cue point.
8730     * @return {AddCuePointPromise}
8731     */
8732
8733  }, {
8734    key: "addCuePoint",
8735    value: function addCuePoint(time) {
8736      var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8737      return this.callMethod('addCuePoint', {
8738        time: time,
8739        data: data
8740      });
8741    }
8742    /**
8743     * A promise to remove a cue point from the player.
8744     *
8745     * @promise AddCuePointPromise
8746     * @fulfill {string} The id of the cue point that was removed.
8747     * @reject {InvalidCuePoint} The cue point with the specified id was not
8748     *         found.
8749     * @reject {UnsupportedError} Cue points are not supported with the current
8750     *         player or browser.
8751     */
8752
8753    /**
8754     * Remove a cue point from the video.
8755     *
8756     * @param {string} id The id of the cue point to remove.
8757     * @return {RemoveCuePointPromise}
8758     */
8759
8760  }, {
8761    key: "removeCuePoint",
8762    value: function removeCuePoint(id) {
8763      return this.callMethod('removeCuePoint', id);
8764    }
8765    /**
8766     * A representation of a text track on a video.
8767     *
8768     * @typedef {Object} VimeoTextTrack
8769     * @property {string} language The ISO language code.
8770     * @property {string} kind The kind of track it is (captions or subtitles).
8771     * @property {string} label The human\u2010readable label for the track.
8772     */
8773
8774    /**
8775     * A promise to enable a text track.
8776     *
8777     * @promise EnableTextTrackPromise
8778     * @fulfill {VimeoTextTrack} The text track that was enabled.
8779     * @reject {InvalidTrackLanguageError} No track was available with the
8780     *         specified language.
8781     * @reject {InvalidTrackError} No track was available with the specified
8782     *         language and kind.
8783     */
8784
8785    /**
8786     * Enable the text track with the specified language, and optionally the
8787     * specified kind (captions or subtitles).
8788     *
8789     * When set via the API, the track language will not change the viewer\u2019s
8790     * stored preference.
8791     *
8792     * @param {string} language The two\u2010letter language code.
8793     * @param {string} [kind] The kind of track to enable (captions or subtitles).
8794     * @return {EnableTextTrackPromise}
8795     */
8796
8797  }, {
8798    key: "enableTextTrack",
8799    value: function enableTextTrack(language, kind) {
8800      if (!language) {
8801        throw new TypeError('You must pass a language.');
8802      }
8803
8804      return this.callMethod('enableTextTrack', {
8805        language: language,
8806        kind: kind
8807      });
8808    }
8809    /**
8810     * A promise to disable the active text track.
8811     *
8812     * @promise DisableTextTrackPromise
8813     * @fulfill {void} The track was disabled.
8814     */
8815
8816    /**
8817     * Disable the currently-active text track.
8818     *
8819     * @return {DisableTextTrackPromise}
8820     */
8821
8822  }, {
8823    key: "disableTextTrack",
8824    value: function disableTextTrack() {
8825      return this.callMethod('disableTextTrack');
8826    }
8827    /**
8828     * A promise to pause the video.
8829     *
8830     * @promise PausePromise
8831     * @fulfill {void} The video was paused.
8832     */
8833
8834    /**
8835     * Pause the video if it\u2019s playing.
8836     *
8837     * @return {PausePromise}
8838     */
8839
8840  }, {
8841    key: "pause",
8842    value: function pause() {
8843      return this.callMethod('pause');
8844    }
8845    /**
8846     * A promise to play the video.
8847     *
8848     * @promise PlayPromise
8849     * @fulfill {void} The video was played.
8850     */
8851
8852    /**
8853     * Play the video if it\u2019s paused. **Note:** on iOS and s
vendor: 33,632 bytes, lines 8853-10130
8853ome other
8854     * mobile devices, you cannot programmatically trigger play. Once the
8855     * viewer has tapped on the play button in the player, however, you
8856     * will be able to use this function.
8857     *
8858     * @return {PlayPromise}
8859     */
8860
8861  }, {
8862    key: "play",
8863    value: function play() {
8864      return this.callMethod('play');
8865    }
8866    /**
8867     * Request that the player enters fullscreen.
8868     * @return {Promise}
8869     */
8870
8871  }, {
8872    key: "requestFullscreen",
8873    value: function requestFullscreen() {
8874      if (screenfull.isEnabled) {
8875        return screenfull.request(this.element);
8876      }
8877
8878      return this.callMethod('requestFullscreen');
8879    }
8880    /**
8881     * Request that the player exits fullscreen.
8882     * @return {Promise}
8883     */
8884
8885  }, {
8886    key: "exitFullscreen",
8887    value: function exitFullscreen() {
8888      if (screenfull.isEnabled) {
8889        return screenfull.exit();
8890      }
8891
8892      return this.callMethod('exitFullscreen');
8893    }
8894    /**
8895     * Returns true if the player is currently fullscreen.
8896     * @return {Promise}
8897     */
8898
8899  }, {
8900    key: "getFullscreen",
8901    value: function getFullscreen() {
8902      if (screenfull.isEnabled) {
8903        return npo_src.resolve(screenfull.isFullscreen);
8904      }
8905
8906      return this.get('fullscreen');
8907    }
8908    /**
8909     * Request that the player enters picture-in-picture.
8910     * @return {Promise}
8911     */
8912
8913  }, {
8914    key: "requestPictureInPicture",
8915    value: function requestPictureInPicture() {
8916      return this.callMethod('requestPictureInPicture');
8917    }
8918    /**
8919     * Request that the player exits picture-in-picture.
8920     * @return {Promise}
8921     */
8922
8923  }, {
8924    key: "exitPictureInPicture",
8925    value: function exitPictureInPicture() {
8926      return this.callMethod('exitPictureInPicture');
8927    }
8928    /**
8929     * Returns true if the player is currently picture-in-picture.
8930     * @return {Promise}
8931     */
8932
8933  }, {
8934    key: "getPictureInPicture",
8935    value: function getPictureInPicture() {
8936      return this.get('pictureInPicture');
8937    }
8938    /**
8939     * A promise to unload the video.
8940     *
8941     * @promise UnloadPromise
8942     * @fulfill {void} The video was unloaded.
8943     */
8944
8945    /**
8946     * Return the player to its initial state.
8947     *
8948     * @return {UnloadPromise}
8949     */
8950
8951  }, {
8952    key: "unload",
8953    value: function unload() {
8954      return this.callMethod('unload');
8955    }
8956    /**
8957     * Cleanup the player and remove it from the DOM
8958     *
8959     * It won't be usable and a new one should be constructed
8960     *  in order to do any operations.
8961     *
8962     * @return {Promise}
8963     */
8964
8965  }, {
8966    key: "destroy",
8967    value: function destroy() {
8968      var _this5 = this;
8969
8970      return new npo_src(function (resolve) {
8971        readyMap.delete(_this5);
8972        playerMap.delete(_this5.element);
8973
8974        if (_this5._originalElement) {
8975          playerMap.delete(_this5._originalElement);
8976
8977          _this5._originalElement.removeAttribute('data-vimeo-initialized');
8978        }
8979
8980        if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) {
8981          // If we've added an additional wrapper div, remove that from the DOM.
8982          // If not, just remove the iframe element.
8983          if (_this5.element.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== _this5.element.parentNode) {
8984            _this5.element.parentNode.parentNode.removeChild(_this5.element.parentNode);
8985          } else {
8986            _this5.element.parentNode.removeChild(_this5.element);
8987          }
8988        } // If the clip is private there is a case where the element stays the
8989        // div element. Destroy should reset the div and remove the iframe child.
8990
8991
8992        if (_this5.element && _this5.element.nodeName === 'DIV' && _this5.element.parentNode) {
8993          _this5.element.removeAttribute('data-vimeo-initialized');
8994
8995          var iframe = _this5.element.querySelector('iframe');
8996
8997          if (iframe && iframe.parentNode) {
8998            // If we've added an additional wrapper div, remove that from the DOM.
8999            // If not, just remove the iframe element.
9000            if (iframe.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== iframe.parentNode) {
9001              iframe.parentNode.parentNode.removeChild(iframe.parentNode);
9002            } else {
9003              iframe.parentNode.removeChild(iframe);
9004            }
9005          }
9006        }
9007
9008        _this5._window.removeEventListener('message', _this5._onMessage);
9009
9010        if (screenfull.isEnabled) {
9011          screenfull.off('fullscreenchange', _this5.fullscreenchangeHandler);
9012        }
9013
9014        resolve();
9015      });
9016    }
9017    /**
9018     * A promise to get the autopause behavior of the video.
9019     *
9020     * @promise GetAutopausePromise
9021     * @fulfill {boolean} Whether autopause is turned on or off.
9022     * @reject {UnsupportedError} Autopause is not supported with the current
9023     *         player or browser.
9024     */
9025
9026    /**
9027     * Get the autopause behavior for this player.
9028     *
9029     * @return {GetAutopausePromise}
9030     */
9031
9032  }, {
9033    key: "getAutopause",
9034    value: function getAutopause() {
9035      return this.get('autopause');
9036    }
9037    /**
9038     * A promise to set the autopause behavior of the video.
9039     *
9040     * @promise SetAutopausePromise
9041     * @fulfill {boolean} Whether autopause is turned on or off.
9042     * @reject {UnsupportedError} Autopause is not supported with the current
9043     *         player or browser.
9044     */
9045
9046    /**
9047     * Enable or disable the autopause behavior of this player.
9048     *
9049     * By default, when another video is played in the same browser, this
9050     * player will automatically pause. Unless you have a specific reason
9051     * for doing so, we recommend that you leave autopause set to the
9052     * default (\`true\`).
9053     *
9054     * @param {boolean} autopause
9055     * @return {SetAutopausePromise}
9056     */
9057
9058  }, {
9059    key: "setAutopause",
9060    value: function setAutopause(autopause) {
9061      return this.set('autopause', autopause);
9062    }
9063    /**
9064     * A promise to get the buffered property of the video.
9065     *
9066     * @promise GetBufferedPromise
9067     * @fulfill {Array} Buffered Timeranges converted to an Array.
9068     */
9069
9070    /**
9071     * Get the buffered property of the video.
9072     *
9073     * @return {GetBufferedPromise}
9074     */
9075
9076  }, {
9077    key: "getBuffered",
9078    value: function getBuffered() {
9079      return this.get('buffered');
9080    }
9081    /**
9082     * @typedef {Object} CameraProperties
9083     * @prop {number} props.yaw - Number between 0 and 360.
9084     * @prop {number} props.pitch - Number between -90 and 90.
9085     * @prop {number} props.roll - Number between -180 and 180.
9086     * @prop {number} props.fov - The field of view in degrees.
9087     */
9088
9089    /**
9090     * A promise to get the camera properties of the player.
9091     *
9092     * @promise GetCameraPromise
9093     * @fulfill {CameraProperties} The camera properties.
9094     */
9095
9096    /**
9097     * For 360\xB0 videos get the camera properties for this player.
9098     *
9099     * @return {GetCameraPromise}
9100     */
9101
9102  }, {
9103    key: "getCameraProps",
9104    value: function getCameraProps() {
9105      return this.get('cameraProps');
9106    }
9107    /**
9108     * A promise to set the camera properties of the player.
9109     *
9110     * @promise SetCameraPromise
9111     * @fulfill {Object} The camera was successfully set.
9112     * @reject {RangeError} The range was out of bounds.
9113     */
9114
9115    /**
9116     * For 360\xB0 videos set the camera properties for this player.
9117     *
9118     * @param {CameraProperties} camera The camera properties
9119     * @return {SetCameraPromise}
9120     */
9121
9122  }, {
9123    key: "setCameraProps",
9124    value: function setCameraProps(camera) {
9125      return this.set('cameraProps', camera);
9126    }
9127    /**
9128     * A representation of a chapter.
9129     *
9130     * @typedef {Object} VimeoChapter
9131     * @property {number} startTime The start time of the chapter.
9132     * @property {object} title The title of the chapter.
9133     * @property {number} index The place in the order of Chapters. Starts at 1.
9134     */
9135
9136    /**
9137     * A promise to get chapters for the video.
9138     *
9139     * @promise GetChaptersPromise
9140     * @fulfill {VimeoChapter[]} The chapters for the video.
9141     */
9142
9143    /**
9144     * Get an array of all the chapters for the video.
9145     *
9146     * @return {GetChaptersPromise}
9147     */
9148
9149  }, {
9150    key: "getChapters",
9151    value: function getChapters() {
9152      return this.get('chapters');
9153    }
9154    /**
9155     * A promise to get the currently active chapter.
9156     *
9157     * @promise GetCurrentChaptersPromise
9158     * @fulfill {VimeoChapter|undefined} The current chapter for the video.
9159     */
9160
9161    /**
9162     * Get the currently active chapter for the video.
9163     *
9164     * @return {GetCurrentChaptersPromise}
9165     */
9166
9167  }, {
9168    key: "getCurrentChapter",
9169    value: function getCurrentChapter() {
9170      return this.get('currentChapter');
9171    }
9172    /**
9173     * A promise to get the color of the player.
9174     *
9175     * @promise GetColorPromise
9176     * @fulfill {string} The hex color of the player.
9177     */
9178
9179    /**
9180     * Get the color for this player.
9181     *
9182     * @return {GetColorPromise}
9183     */
9184
9185  }, {
9186    key: "getColor",
9187    value: function getColor() {
9188      return this.get('color');
9189    }
9190    /**
9191     * A promise to set the color of the player.
9192     *
9193     * @promise SetColorPromise
9194     * @fulfill {string} The color was successfully set.
9195     * @reject {TypeError} The string was not a valid hex or rgb color.
9196     * @reject {ContrastError} The color was set, but the contrast is
9197     *         outside of the acceptable range.
9198     * @reject {EmbedSettingsError} The owner of the player has chosen to
9199     *         use a specific color.
9200     */
9201
9202    /**
9203     * Set the color of this player to a hex or rgb string. Setting the
9204     * color may fail if the owner of the video has set their embed
9205     * preferences to force a specific color.
9206     *
9207     * @param {string} color The hex or rgb color string to set.
9208     * @return {SetColorPromise}
9209     */
9210
9211  }, {
9212    key: "setColor",
9213    value: function setColor(color) {
9214      return this.set('color', color);
9215    }
9216    /**
9217     * A representation of a cue point.
9218     *
9219     * @typedef {Object} VimeoCuePoint
9220     * @property {number} time The time of the cue point.
9221     * @property {object} data The data passed when adding the cue point.
9222     * @property {string} id The unique id for use with removeCuePoint.
9223     */
9224
9225    /**
9226     * A promise to get the cue points of a video.
9227     *
9228     * @promise GetCuePointsPromise
9229     * @fulfill {VimeoCuePoint[]} The cue points added to the video.
9230     * @reject {UnsupportedError} Cue points are not supported with the current
9231     *         player or browser.
9232     */
9233
9234    /**
9235     * Get an array of the cue points added to the video.
9236     *
9237     * @return {GetCuePointsPromise}
9238     */
9239
9240  }, {
9241    key: "getCuePoints",
9242    value: function getCuePoints() {
9243      return this.get('cuePoints');
9244    }
9245    /**
9246     * A promise to get the current time of the video.
9247     *
9248     * @promise GetCurrentTimePromise
9249     * @fulfill {number} The current time in seconds.
9250     */
9251
9252    /**
9253     * Get the current playback position in seconds.
9254     *
9255     * @return {GetCurrentTimePromise}
9256     */
9257
9258  }, {
9259    key: "getCurrentTime",
9260    value: function getCurrentTime() {
9261      return this.get('currentTime');
9262    }
9263    /**
9264     * A promise to set the current time of the video.
9265     *
9266     * @promise SetCurrentTimePromise
9267     * @fulfill {number} The actual current time that was set.
9268     * @reject {RangeError} the time was less than 0 or greater than the
9269     *         video\u2019s duration.
9270     */
9271
9272    /**
9273     * Set the current playback position in seconds. If the player was
9274     * paused, it will remain paused. Likewise, if the player was playing,
9275     * it will resume playing once the video has buffered.
9276     *
9277     * You can provide an accurate time and the player will attempt to seek
9278     * to as close to that time as possible. The exact time will be the
9279     * fulfilled value of the promise.
9280     *
9281     * @param {number} currentTime
9282     * @return {SetCurrentTimePromise}
9283     */
9284
9285  }, {
9286    key: "setCurrentTime",
9287    value: function setCurrentTime(currentTime) {
9288      return this.set('currentTime', currentTime);
9289    }
9290    /**
9291     * A promise to get the duration of the video.
9292     *
9293     * @promise GetDurationPromise
9294     * @fulfill {number} The duration in seconds.
9295     */
9296
9297    /**
9298     * Get the duration of the video in seconds. It will be rounded to the
9299     * nearest second before playback begins, and to the nearest thousandth
9300     * of a second after playback begins.
9301     *
9302     * @return {GetDurationPromise}
9303     */
9304
9305  }, {
9306    key: "getDuration",
9307    value: function getDuration() {
9308      return this.get('duration');
9309    }
9310    /**
9311     * A promise to get the ended state of the video.
9312     *
9313     * @promise GetEndedPromise
9314     * @fulfill {boolean} Whether or not the video has ended.
9315     */
9316
9317    /**
9318     * Get the ended state of the video. The video has ended if
9319     * \`currentTime === duration\`.
9320     *
9321     * @return {GetEndedPromise}
9322     */
9323
9324  }, {
9325    key: "getEnded",
9326    value: function getEnded() {
9327      return this.get('ended');
9328    }
9329    /**
9330     * A promise to get the loop state of the player.
9331     *
9332     * @promise GetLoopPromise
9333     * @fulfill {boolean} Whether or not the player is set to loop.
9334     */
9335
9336    /**
9337     * Get the loop state of the player.
9338     *
9339     * @return {GetLoopPromise}
9340     */
9341
9342  }, {
9343    key: "getLoop",
9344    value: function getLoop() {
9345      return this.get('loop');
9346    }
9347    /**
9348     * A promise to set the loop state of the player.
9349     *
9350     * @promise SetLoopPromise
9351     * @fulfill {boolean} The loop state that was set.
9352     */
9353
9354    /**
9355     * Set the loop state of the player. When set to \`true\`, the player
9356     * will start over immediately once playback ends.
9357     *
9358     * @param {boolean} loop
9359     * @return {SetLoopPromise}
9360     */
9361
9362  }, {
9363    key: "setLoop",
9364    value: function setLoop(loop) {
9365      return this.set('loop', loop);
9366    }
9367    /**
9368     * A promise to set the muted state of the player.
9369     *
9370     * @promise SetMutedPromise
9371     * @fulfill {boolean} The muted state that was set.
9372     */
9373
9374    /**
9375     * Set the muted state of the player. When set to \`true\`, the player
9376     * volume will be muted.
9377     *
9378     * @param {boolean} muted
9379     * @return {SetMutedPromise}
9380     */
9381
9382  }, {
9383    key: "setMuted",
9384    value: function setMuted(muted) {
9385      return this.set('muted', muted);
9386    }
9387    /**
9388     * A promise to get the muted state of the player.
9389     *
9390     * @promise GetMutedPromise
9391     * @fulfill {boolean} Whether or not the player is muted.
9392     */
9393
9394    /**
9395     * Get the muted state of the player.
9396     *
9397     * @return {GetMutedPromise}
9398     */
9399
9400  }, {
9401    key: "getMuted",
9402    value: function getMuted() {
9403      return this.get('muted');
9404    }
9405    /**
9406     * A promise to get the paused state of the player.
9407     *
9408     * @promise GetLoopPromise
9409     * @fulfill {boolean} Whether or not the video is paused.
9410     */
9411
9412    /**
9413     * Get the paused state of the player.
9414     *
9415     * @return {GetLoopPromise}
9416     */
9417
9418  }, {
9419    key: "getPaused",
9420    value: function getPaused() {
9421      return this.get('paused');
9422    }
9423    /**
9424     * A promise to get the playback rate of the player.
9425     *
9426     * @promise GetPlaybackRatePromise
9427     * @fulfill {number} The playback rate of the player on a scale from 0.5 to 2.
9428     */
9429
9430    /**
9431     * Get the playback rate of the player on a scale from \`0.5\` to \`2\`.
9432     *
9433     * @return {GetPlaybackRatePromise}
9434     */
9435
9436  }, {
9437    key: "getPlaybackRate",
9438    value: function getPlaybackRate() {
9439      return this.get('playbackRate');
9440    }
9441    /**
9442     * A promise to set the playbackrate of the player.
9443     *
9444     * @promise SetPlaybackRatePromise
9445     * @fulfill {number} The playback rate was set.
9446     * @reject {RangeError} The playback rate was less than 0.5 or greater than 2.
9447     */
9448
9449    /**
9450     * Set the playback rate of the player on a scale from \`0.5\` to \`2\`. When set
9451     * via the API, the playback rate will not be synchronized to other
9452     * players or stored as the viewer's preference.
9453     *
9454     * @param {number} playbackRate
9455     * @return {SetPlaybackRatePromise}
9456     */
9457
9458  }, {
9459    key: "setPlaybackRate",
9460    value: function setPlaybackRate(playbackRate) {
9461      return this.set('playbackRate', playbackRate);
9462    }
9463    /**
9464     * A promise to get the played property of the video.
9465     *
9466     * @promise GetPlayedPromise
9467     * @fulfill {Array} Played Timeranges converted to an Array.
9468     */
9469
9470    /**
9471     * Get the played property of the video.
9472     *
9473     * @return {GetPlayedPromise}
9474     */
9475
9476  }, {
9477    key: "getPlayed",
9478    value: function getPlayed() {
9479      return this.get('played');
9480    }
9481    /**
9482     * A promise to get the qualities available of the current video.
9483     *
9484     * @promise GetQualitiesPromise
9485     * @fulfill {Array} The qualities of the video.
9486     */
9487
9488    /**
9489     * Get the qualities of the current video.
9490     *
9491     * @return {GetQualitiesPromise}
9492     */
9493
9494  }, {
9495    key: "getQualities",
9496    value: function getQualities() {
9497      return this.get('qualities');
9498    }
9499    /**
9500     * A promise to get the current set quality of the video.
9501     *
9502     * @promise GetQualityPromise
9503     * @fulfill {string} The current set quality.
9504     */
9505
9506    /**
9507     * Get the current set quality of the video.
9508     *
9509     * @return {GetQualityPromise}
9510     */
9511
9512  }, {
9513    key: "getQuality",
9514    value: function getQuality() {
9515      return this.get('quality');
9516    }
9517    /**
9518     * A promise to set the video quality.
9519     *
9520     * @promise SetQualityPromise
9521     * @fulfill {number} The quality was set.
9522     * @reject {RangeError} The quality is not available.
9523     */
9524
9525    /**
9526     * Set a video quality.
9527     *
9528     * @param {string} quality
9529     * @return {SetQualityPromise}
9530     */
9531
9532  }, {
9533    key: "setQuality",
9534    value: function setQuality(quality) {
9535      return this.set('quality', quality);
9536    }
9537    /**
9538     * A promise to get the seekable property of the video.
9539     *
9540     * @promise GetSeekablePromise
9541     * @fulfill {Array} Seekable Timeranges converted to an Array.
9542     */
9543
9544    /**
9545     * Get the seekable property of the video.
9546     *
9547     * @return {GetSeekablePromise}
9548     */
9549
9550  }, {
9551    key: "getSeekable",
9552    value: function getSeekable() {
9553      return this.get('seekable');
9554    }
9555    /**
9556     * A promise to get the seeking property of the player.
9557     *
9558     * @promise GetSeekingPromise
9559     * @fulfill {boolean} Whether or not the player is currently seeking.
9560     */
9561
9562    /**
9563     * Get if the player is currently seeking.
9564     *
9565     * @return {GetSeekingPromise}
9566     */
9567
9568  }, {
9569    key: "getSeeking",
9570    value: function getSeeking() {
9571      return this.get('seeking');
9572    }
9573    /**
9574     * A promise to get the text tracks of a video.
9575     *
9576     * @promise GetTextTracksPromise
9577     * @fulfill {VimeoTextTrack[]} The text tracks associated with the video.
9578     */
9579
9580    /**
9581     * Get an array of the text tracks that exist for the video.
9582     *
9583     * @return {GetTextTracksPromise}
9584     */
9585
9586  }, {
9587    key: "getTextTracks",
9588    value: function getTextTracks() {
9589      return this.get('textTracks');
9590    }
9591    /**
9592     * A promise to get the embed code for the video.
9593     *
9594     * @promise GetVideoEmbedCodePromise
9595     * @fulfill {string} The \`<iframe>\` embed code for the video.
9596     */
9597
9598    /**
9599     * Get the \`<iframe>\` embed code for the video.
9600     *
9601     * @return {GetVideoEmbedCodePromise}
9602     */
9603
9604  }, {
9605    key: "getVideoEmbedCode",
9606    value: function getVideoEmbedCode() {
9607      return this.get('videoEmbedCode');
9608    }
9609    /**
9610     * A promise to get the id of the video.
9611     *
9612     * @promise GetVideoIdPromise
9613     * @fulfill {number} The id of the video.
9614     */
9615
9616    /**
9617     * Get the id of the video.
9618     *
9619     * @return {GetVideoIdPromise}
9620     */
9621
9622  }, {
9623    key: "getVideoId",
9624    value: function getVideoId() {
9625      return this.get('videoId');
9626    }
9627    /**
9628     * A promise to get the title of the video.
9629     *
9630     * @promise GetVideoTitlePromise
9631     * @fulfill {number} The title of the video.
9632     */
9633
9634    /**
9635     * Get the title of the video.
9636     *
9637     * @return {GetVideoTitlePromise}
9638     */
9639
9640  }, {
9641    key: "getVideoTitle",
9642    value: function getVideoTitle() {
9643      return this.get('videoTitle');
9644    }
9645    /**
9646     * A promise to get the native width of the video.
9647     *
9648     * @promise GetVideoWidthPromise
9649     * @fulfill {number} The native width of the video.
9650     */
9651
9652    /**
9653     * Get the native width of the currently\u2010playing video. The width of
9654     * the highest\u2010resolution available will be used before playback begins.
9655     *
9656     * @return {GetVideoWidthPromise}
9657     */
9658
9659  }, {
9660    key: "getVideoWidth",
9661    value: function getVideoWidth() {
9662      return this.get('videoWidth');
9663    }
9664    /**
9665     * A promise to get the native height of the video.
9666     *
9667     * @promise GetVideoHeightPromise
9668     * @fulfill {number} The native height of the video.
9669     */
9670
9671    /**
9672     * Get the native height of the currently\u2010playing video. The height of
9673     * the highest\u2010resolution available will be used before playback begins.
9674     *
9675     * @return {GetVideoHeightPromise}
9676     */
9677
9678  }, {
9679    key: "getVideoHeight",
9680    value: function getVideoHeight() {
9681      return this.get('videoHeight');
9682    }
9683    /**
9684     * A promise to get the vimeo.com url for the video.
9685     *
9686     * @promise GetVideoUrlPromise
9687     * @fulfill {number} The vimeo.com url for the video.
9688     * @reject {PrivacyError} The url isn\u2019t available because of the video\u2019s privacy setting.
9689     */
9690
9691    /**
9692     * Get the vimeo.com url for the video.
9693     *
9694     * @return {GetVideoUrlPromise}
9695     */
9696
9697  }, {
9698    key: "getVideoUrl",
9699    value: function getVideoUrl() {
9700      return this.get('videoUrl');
9701    }
9702    /**
9703     * A promise to get the volume level of the player.
9704     *
9705     * @promise GetVolumePromise
9706     * @fulfill {number} The volume level of the player on a scale from 0 to 1.
9707     */
9708
9709    /**
9710     * Get the current volume level of the player on a scale from \`0\` to \`1\`.
9711     *
9712     * Most mobile devices do not support an independent volume from the
9713     * system volume. In those cases, this method will always return \`1\`.
9714     *
9715     * @return {GetVolumePromise}
9716     */
9717
9718  }, {
9719    key: "getVolume",
9720    value: function getVolume() {
9721      return this.get('volume');
9722    }
9723    /**
9724     * A promise to set the volume level of the player.
9725     *
9726     * @promise SetVolumePromise
9727     * @fulfill {number} The volume was set.
9728     * @reject {RangeError} The volume was less than 0 or greater than 1.
9729     */
9730
9731    /**
9732     * Set the volume of the player on a scale from \`0\` to \`1\`. When set
9733     * via the API, the volume level will not be synchronized to other
9734     * players or stored as the viewer\u2019s preference.
9735     *
9736     * Most mobile devices do not support setting the volume. An error will
9737     * *not* be triggered in that situation.
9738     *
9739     * @param {number} volume
9740     * @return {SetVolumePromise}
9741     */
9742
9743  }, {
9744    key: "setVolume",
9745    value: function setVolume(volume) {
9746      return this.set('volume', volume);
9747    }
9748  }]);
9749
9750  return Player;
9751}(); // Setup embed only if this is not a node environment
9752
9753
9754if (!isNode) {
9755  screenfull = initializeScreenfull();
9756  initializeEmbeds();
9757  resizeEmbeds();
9758  initAppendVideoMetadata();
9759}
9760
9761class VimeoPlayer extends AbstractVideoPlayer {
9762  constructor(target, videoId, options = {}) {
9763    super(target, videoId, options);
9764    this.state.set(INITIALIZED);
9765  }
9766  createPlayer(videoId) {
9767    const { options, options: { playerOptions = {} } } = this;
9768    const vimeoOptions = videoId.indexOf("http") === 0 ? { url: videoId } : { id: +videoId };
9769    const player = new Player$1(this.target, assign(vimeoOptions, {
9770      controls: !options.hideControls,
9771      loop: options.loop,
9772      muted: options.mute
9773    }, playerOptions.vimeo || {}));
9774    player.on("play", this.onPlay);
9775    player.on("pause", this.onPause);
9776    player.on("ended", this.onEnded);
9777    player.ready().then(this.onPlayerReady, this.onError);
9778    if (!player.getMuted()) {
9779      player.setVolume(clamp(options.volume, 0, 1));
9780    }
9781    return player;
9782  }
9783  playVideo() {
9784    this.player.play().catch(() => {
9785      if (this.state.is(PLAY_REQUEST_ABORTED)) {
9786        this.state.set(IDLE);
9787      }
9788    });
9789  }
9790  pauseVideo() {
9791    this.player.pause();
9792  }
9793}
9794
9795const YOUTUBE_API_SRC = "//www.youtube.com/player_api";
9796class YouTubeIframeAPILoader {
9797  load(callback) {
9798    if (window.YT && isFunction(window.YT.Player)) {
9799      return callback();
9800    }
9801    this.attachCallback(callback);
9802    if (this.shouldLoad()) {
9803      create("script", { src: \`\${location.protocol}\${YOUTUBE_API_SRC}\` }, document.head);
9804    }
9805  }
9806  shouldLoad() {
9807    return !queryAll(document, "script").some((script) => script.src.replace(/^https?:/, "") === YOUTUBE_API_SRC);
9808  }
9809  attachCallback(callback) {
9810    let oldCallback;
9811    if (!isUndefined(window.onYouTubeIframeAPIReady)) {
9812      oldCallback = window.onYouTubeIframeAPIReady;
9813    }
9814    window.onYouTubeIframeAPIReady = () => {
9815      oldCallback && oldCallback();
9816      callback();
9817    };
9818  }
9819}
9820
9821class YouTubePlayer extends AbstractVideoPlayer {
9822  constructor(target, videoId, options = {}) {
9823    super(target, videoId, options);
9824    this.videoId = this.parseVideoId(videoId);
9825    if (this.videoId) {
9826      this.state.set(INITIALIZING);
9827      new YouTubeIframeAPILoader().load(this.onAPIReady.bind(this));
9828    }
9829  }
9830  onAPIReady() {
9831    const { state } = this;
9832    const isPending = state.is(PENDING_PLAY);
9833    state.set(INITIALIZED);
9834    if (isPending) {
9835      this.play();
9836    }
9837  }
9838  createPlayer(videoId) {
9839    const { options, options: { playerOptions = {} } } = this;
9840    return new YT.Player(this.target, {
9841      videoId,
9842      host: options.host,
9843      playerVars: assign({
9844        controls: options.hideControls ? 0 : 1,
9845        iv_load_policy: 3,
9846        loop: options.loop ? 1 : 0,
9847        playlist: options.loop ? videoId : void 0,
9848        rel: 0,
9849        autoplay: 0,
9850        mute: options.mute ? 1 : 0
9851      }, playerOptions.youtube || {}),
9852      events: {
9853        onReady: this.onPlayerReady.bind(this),
9854        onStateChange: this.onPlayerStateChange.bind(this),
9855        onError: this.onError.bind(this)
9856      }
9857    });
9858  }
9859  onPlayerReady() {
9860    super.onPlayerReady();
9861    this.player.setVolume(clamp(this.options.volume, 0, 1) * 100);
9862  }
9863  onPlayerStateChange(e) {
9864    const { PLAYING, PAUSED, ENDED } = YT.PlayerState;
9865    switch (true) {
9866      case e.data === PLAYING:
9867        this.onPlay();
9868        break;
9869      case e.data === PAUSED:
9870        this.onPause();
9871        break;
9872      case e.data === ENDED:
9873        this.onEnded();
9874        break;
9875    }
9876  }
9877  playVideo() {
9878    this.player.playVideo();
9879  }
9880  pauseVideo() {
9881    this.player.pauseVideo();
9882  }
9883  parseVideoId(id) {
9884    return id.indexOf("http") === 0 ? this.parseUrl(id) : id;
9885  }
9886  parseUrl(url) {
9887    const [, search] = url.split(/[#?]/);
9888    const query = find(search.split("&"), (query2) => query2.indexOf("v=") === 0);
9889    return query && query.replace("v=", "");
9890  }
9891}
9892
9893const I18N = {
9894  playVideo: "Play Video"
9895};
9896
9897class PlayerUI {
9898  constructor(Splide2, slide) {
9899    this.event = EventInterface();
9900    this.Splide = Splide2;
9901    this.slide = slide;
9902    this.container = child(this.slide, \`.\${CLASS_CONTAINER}\`);
9903    this.parent = this.container || this.slide;
9904    this.init();
9905    this.create();
9906    this.show();
9907    this.listen();
9908  }
9909  init() {
9910    addClass(this.slide, \`\${CLASS_SLIDE}\${MODIFIER_HAS_VIDEO}\`);
9911    addClass(this.container, \`\${CLASS_CONTAINER}\${MODIFIER_HAS_VIDEO}\`);
9912  }
9913  create() {
9914    this.video = create("div", CLASS_VIDEO, this.parent);
9915    this.playButton = create("button", {
9916      class: CLASS_VIDEO_PLAY_BUTTON,
9917      type: "button",
9918      "aria-label": this.Splide.options.i18n.playVideo || I18N.playVideo
9919    }, this.video);
9920    this.wrapper = create("div", CLASS_VIDEO_WRAPPER, this.video);
9921    this.placeholder = create("div", null, this.wrapper);
9922  }
9923  listen() {
9924    this.parent.addEventListener("click", () => {
9925      this.event.emit("click");
9926    });
9927  }
9928  toggleButton(show) {
9929    display(this.playButton, show ? "" : "none");
9930  }
9931  toggleWrapper(show) {
9932    display(this.wrapper, show ? "" : "none");
9933  }
9934  getPlaceholder() {
9935    return this.placeholder;
9936  }
9937  hide() {
9938    this.toggleButton(false);
9939    this.toggleWrapper(true);
9940  }
9941  show() {
9942    if (!this.disabled) {
9943      this.toggleButton(true);
9944    }
9945    this.toggleWrapper(false);
9946  }
9947  disable(disabled) {
9948    this.disabled = disabled;
9949    if (disabled) {
9950      this.toggleButton(false);
9951    }
9952  }
9953  on(events, callback) {
9954    this.event.on(events, callback);
9955  }
9956  destroy() {
9957    removeClass(this.slide, \`\${CLASS_SLIDE}\${MODIFIER_HAS_VIDEO}\`);
9958    removeClass(this.container, \`\${CLASS_CONTAINER}\${MODIFIER_HAS_VIDEO}\`);
9959    remove(this.video);
9960    this.event.destroy();
9961  }
9962}
9963
9964const VIDEO_PLAYER_MAP = [
9965  [YOUTUBE_DATA_ATTRIBUTE, YouTubePlayer],
9966  [VIMEO_DATA_ATTRIBUTE, VimeoPlayer],
9967  [HTML_VIDEO__DATA_ATTRIBUTE, HTMLVideoPlayer]
9968];
9969class Player {
9970  constructor(Splide2, slide) {
9971    this.Splide = Splide2;
9972    this.slide = slide;
9973    this.event = EventInterface(Splide2);
9974    this.options = merge(merge({}, DEFAULTS), this.Splide.options.video);
9975    this.createPlayer(slide);
9976    if (this.player) {
9977      this.listen();
9978    }
9979  }
9980  createPlayer(slide) {
9981    VIDEO_PLAYER_MAP.forEach(([attr, Constructor]) => {
9982      const id = getAttribute(slide, attr);
9983      if (id) {
9984        this.ui = new PlayerUI(this.Splide, slide);
9985        this.player = new Constructor(this.ui.getPlaceholder(), id, this.options);
9986        this.ui.disable(this.options.disableOverlayUI);
9987      }
9988    });
9989  }
9990  listen() {
9991    const { player, event } = this;
9992    this.ui.on("click", this.onClick.bind(this));
9993    player.on("play", this.onPlay.bind(this));
9994    player.on("played", this.onPlayed.bind(this));
9995    player.on("pause", this.onPause.bind(this));
9996    player.on("paused", this.onPaused.bind(this));
9997    player.on("ended", this.onEnded.bind(this));
9998    player.on("error", this.onError.bind(this));
9999    event.on([EVENT_MOVE, EVENT_SCROLL], this.pause.bind(this));
10000    event.on(EVENT_VIDEO_CLICK, this.onVideoClick.bind(this));
10001    event.on(EVENT_DRAG, () => {
10002      event.off(EVENT_DRAGGING);
10003      event.on(EVENT_DRAGGING, () => {
10004        this.pause();
10005        event.off(EVENT_DRAGGING);
10006      });
10007    });
10008    if (this.options.autoplay) {
10009      event.on([EVENT_MOUNTED, EVENT_MOVED, EVENT_SCROLLED], this.onAutoplayRequested.bind(this));
10010    }
10011  }
10012  onClick() {
10013    this.isPaused() ? this.play() : this.pause();
10014    this.event.emit(EVENT_VIDEO_CLICK, this);
10015  }
10016  onVideoClick(player) {
10017    if (this !== player) {
10018      this.pause();
10019    }
10020  }
10021  onPlay() {
10022    this.ui.hide();
10023  }
10024  onPlayed() {
10025    this.ui.hide();
10026    this.togglePlaying(true);
10027    this.event.emit(EVENT_VIDEO_PLAY, this);
10028  }
10029  onPause() {
10030    this.ui.show();
10031  }
10032  onPaused() {
10033    this.togglePlaying(false);
10034    this.event.emit(EVENT_VIDEO_PAUSE, this);
10035  }
10036  onEnded() {
10037    this.togglePlaying(false);
10038    this.event.emit(EVENT_VIDEO_ENDED, this);
10039  }
10040  onError() {
10041    addClass(this.slide, CLASS_ERROR);
10042    this.ui.show();
10043    this.event.emit(EVENT_VIDEO_ERROR, this);
10044  }
10045  onAutoplayRequested() {
10046    const activeSlide = this.Splide.Components.Slides.getAt(this.Splide.index);
10047    if (activeSlide.slide === this.slide) {
10048      this.play();
10049    }
10050  }
10051  togglePlaying(add) {
10052    toggleClass(this.Splide.root, CLASS_PLAYING, add);
10053  }
10054  play() {
10055    if (this.player && !this.disabled) {
10056      this.player.play();
10057    }
10058  }
10059  pause() {
10060    if (this.player && !this.disabled) {
10061      this.player.pause();
10062    }
10063  }
10064  destroy() {
10065    if (this.player) {
10066      this.ui.destroy();
10067      this.player.destroy();
10068    }
10069    this.disable(false);
10070  }
10071  disable(disabled) {
10072    this.disabled = disabled;
10073    toggleClass(this.Splide.root, CLASS_VIDEO_DISABLED, disabled);
10074  }
10075  isPaused() {
10076    return this.player.isPaused();
10077  }
10078}
10079
10080function Video(Splide2, Components2) {
10081  const { on } = EventInterface(Splide2);
10082  const { Slides } = Components2;
10083  const players = {};
10084  function mount() {
10085    create();
10086    on("refresh", create);
10087  }
10088  function create() {
10089    Slides.forEach((Slide) => {
10090      const { slide } = Slide;
10091      if (!hasClass(slide, \`\${CLASS_SLIDE}\${MODIFIER_HAS_VIDEO}\`)) {
10092        players[Slide.index] = new Player(Splide2, slide);
10093      }
10094    });
10095    Slides.update();
10096  }
10097  function destroy() {
10098    forOwn(players, (player) => {
10099      player.destroy();
10100    });
10101  }
10102  function play(index = Splide2.index) {
10103    const player = players[index];
10104    if (player) {
10105      player.play();
10106    }
10107  }
10108  function pause() {
10109    forOwn(players, (player) => {
10110      player.pause();
10111    });
10112  }
10113  function disable(disabled) {
10114    forOwn(players, (player) => {
10115      player.disable(disabled);
10116    });
10117  }
10118  return {
10119    mount,
10120    destroy,
10121    play,
10122    pause,
10123    disable
10124  };
10125}
10126
10127
10128
10129/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(55), __webpack_require__(87).setImmediate))
10130//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tdmlkZW8vZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLXZpZGVvLmVzbS5qcz9mZDcxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0F
10130BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDhCQUE4QiwwQ0FBMEM7QUFDeEUsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLE1BQU07QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxvQkFBb0IsYUFBYSxJQUFJLFFBQVE7QUFDN0M7O0FBRUEsT0FBTyw2QkFBNkI7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsWUFBWTtBQUMzQyxtQ0FBbUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0IsbUJBQW1CLEVBQUUsRUFBRTtBQUN0RCxvQ0FBb0MsZUFBZTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLCtCQUErQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0F
10130BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQkFBa0IsWUFBWSxFQUFFO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLGNBQWM7O0FBRWpCO0FBQ0EsNEJBQTRCLFNBQVM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjs7O0FBR3BCO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7QUFDQSxTQUFTOztBQUVULHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNELENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsaUNBQWlDLG9DQUFvQyxFQUFFO0FBQ2xGO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsWUFBWSxRQUFRO0FBQ3BCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLF
10130dBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWSxTQUFTO0FBQ3JCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsWUFBWTtBQUN2QixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxnQkFBZ0I7QUFDM0IsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssWUFBWTtBQUNqQjtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixXQUFXLE9BQU8sYUFBYTtBQUMvQixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsWUFBWTtBQUN2QixZQUFZLGtCQUFrQjtBQUM5Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDLDhCQUE4Qjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLE9BQU87QUFDakI7O0FBRUE7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4Q0FBOEM7QUFDM0Q7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYztBQUNkO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtB
10130QUssRUFBRTs7QUFFUDtBQUNBLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPLFNBQVM7QUFDN0IsY0FBYztBQUNkOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsTUFBTTtBQUNyQixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFlBQVk7QUFDM0IsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwwRUFBMEU7QUFDMUU7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxTQUFTO0FBQ3hCLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0ZBQW9GOztBQUVwRjtBQUNBLDhFQUE4RTtBQUM5RTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixnQkFBZ0IsVUFBVTtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxQkFBcUI7QUFDcEMsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLGdCQUFnQjtBQUNoQztBQUNBLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGVBQWU7QUFDaEMsZ0JBQWdCLDBCQUEwQjtBQUMxQztBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLF
10130dBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQU07QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixnQkFBZ0IsV0FBVztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQyxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsa0JBQWtCLE9BQU87QUFDekIsa0JBQWtCLE9BQU87QUFDekIsa0JBQWtCLE9BQU87QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZUFBZTtBQUNoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGdCQUFnQixVQUFVO0FBQzFCLGdCQUFnQixjQUFjO0FBQzlCO0FBQ0EsZ0JBQWdCLG1CQUFtQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQyxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsTUFBTTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsTUFBTTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixnQkFBZ0IsV0FBVztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQU07QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLGFBQWE7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsR0FBRzs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0IsbUJBQW1CLEVBQUUsRUFBRTtBQUN0RCwwREFBMEQsZUFBZSxJQUFJO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSywyQkFBMkI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
10130QUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsU0FBUyxrQkFBa0IsRUFBRSxnQkFBZ0IsR0FBRztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0IsbUJBQW1CLEVBQUUsRUFBRTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyw2QkFBNkI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsZ0JBQWdCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFlBQVksRUFBRSxtQkFBbUI7QUFDN0QsZ0NBQWdDLGdCQUFnQixFQUFFLG1CQUFtQjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLFlBQVksRUFBRSxtQkFBbUI7QUFDaEUsbUNBQW1DLGdCQUFnQixFQUFFLG1CQUFtQjtBQUN4RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsS0FBSztBQUNkLFNBQVMsU0FBUztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQiw4QkFBOEIsWUFBWSxFQUFFLG1CQUFtQjtBQUMvRDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVpQiIsImZpbGUiOiIxNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFNwbGlkZS5qc1xuICogVmVyc2lvbiAgOiAwLjguMFxuICogTGljZW5zZSAgOiBNSVRcbiAqIENvcHlyaWdodDogMjAyMiBOYW90b3NoaSBGdWppdGFcbiAqL1xuZnVuY3Rpb24gZW1wdHkoYXJyYXkpIHtcbiAgYXJyYXkubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2xpY2UkMShhcnJheUxpa2UsIHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycmF5TGlrZSwgc3RhcnQsIGVuZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5JDEoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UkMShhcmd1bWVudHMsIDEpKSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZiQxKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG52YXIgaXNBcnJheSQxID0gQXJyYXkuaXNBcnJheTtcbmFwcGx5JDEodHlwZU9mJDEsIFwiZnVuY3Rpb25cIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInN0cmluZ1wiKTtcbmFwcGx5JDEodHlwZU9mJDEsIFwidW5kZWZpbmVkXCIpO1xuXG5mdW5jdGlvbiB0b0FycmF5JDEodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkkMSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2gkMSh2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gIHRvQXJyYXkkMSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpID4gLTE7XG59XG5cbnZhciBvd25LZXlzJDEgPSBPYmplY3Qua2V5cztcblxuZnVuY3Rpb24gZm9yT3duJDEob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gb3duS2V5cyQxKG9iamVjdCk7XG4gICAga2V5cyA9IHJpZ2h0ID8ga2V5cy5yZXZlcnNlKCkgOiBrZXlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
10130XIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gXCJfX3Byb3RvX19cIikge1xuICAgICAgICBpZiAoaXRlcmF0ZWUob2JqZWN0W2tleV0sIGtleSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24kMShvYmplY3QpIHtcbiAgc2xpY2UkMShhcmd1bWVudHMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGZvck93biQxKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG52YXIgUFJPSkVDVF9DT0RFJDEgPSBcInNwbGlkZVwiO1xuXG5mdW5jdGlvbiBFdmVudEJpbmRlcigpIHtcbiAgdmFyIGxpc3RlbmVycyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGJpbmQodGFyZ2V0cywgZXZlbnRzLCBjYWxsYmFjaywgb3B0aW9ucykge1xuICAgIGZvckVhY2hFdmVudCh0YXJnZXRzLCBldmVudHMsIGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50LCBuYW1lc3BhY2UpIHtcbiAgICAgIHZhciBpc0V2ZW50VGFyZ2V0ID0gKFwiYWRkRXZlbnRMaXN0ZW5lclwiIGluIHRhcmdldCk7XG4gICAgICB2YXIgcmVtb3ZlciA9IGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRhcmdldCwgZXZlbnQsIGNhbGxiYWNrLCBvcHRpb25zKSA6IHRhcmdldFtcInJlbW92ZUxpc3RlbmVyXCJdLmJpbmQodGFyZ2V0LCBjYWxsYmFjayk7XG4gICAgICBpc0V2ZW50VGFyZ2V0ID8gdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrLCBvcHRpb25zKSA6IHRhcmdldFtcImFkZExpc3RlbmVyXCJdKGNhbGxiYWNrKTtcbiAgICAgIGxpc3RlbmVycy5wdXNoKFt0YXJnZXQsIGV2ZW50LCBuYW1lc3BhY2UsIGNhbGxiYWNrLCByZW1vdmVyXSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB1bmJpbmQodGFyZ2V0cywgZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIGZvckVhY2hFdmVudCh0YXJnZXRzLCBldmVudHMsIGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50LCBuYW1lc3BhY2UpIHtcbiAgICAgIGxpc3RlbmVycyA9IGxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgIGlmIChsaXN0ZW5lclswXSA9PT0gdGFyZ2V0ICYmIGxpc3RlbmVyWzFdID09PSBldmVudCAmJiBsaXN0ZW5lclsyXSA9PT0gbmFtZXNwYWNlICYmICghY2FsbGJhY2sgfHwgbGlzdGVuZXJbM10gPT09IGNhbGxiYWNrKSkge1xuICAgICAgICAgIGxpc3RlbmVyWzRdKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoKHRhcmdldCwgdHlwZSwgZGV0YWlsKSB7XG4gICAgdmFyIGU7XG4gICAgdmFyIGJ1YmJsZXMgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBlID0gbmV3IEN1c3RvbUV2ZW50KHR5cGUsIHtcbiAgICAgICAgYnViYmxlczogYnViYmxlcyxcbiAgICAgICAgZGV0YWlsOiBkZXRhaWxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtcbiAgICAgIGUuaW5pdEN1c3RvbUV2ZW50KHR5cGUsIGJ1YmJsZXMsIGZhbHNlLCBkZXRhaWwpO1xuICAgIH1cblxuICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGUpO1xuICAgIHJldHVybiBlO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgaXRlcmF0ZWUpIHtcbiAgICBmb3JFYWNoJDEodGFyZ2V0cywgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ICYmIGZvckVhY2gkMShldmVudHMsIGZ1bmN0aW9uIChldmVudHMyKSB7XG4gICAgICAgIGV2ZW50czIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TlMpIHtcbiAgICAgICAgICB2Y
10130XIgZnJhZ21lbnQgPSBldmVudE5TLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICBpdGVyYXRlZSh0YXJnZXQsIGZyYWdtZW50WzBdLCBmcmFnbWVudFsxXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBkYXRhWzRdKCk7XG4gICAgfSk7XG4gICAgZW1wdHkobGlzdGVuZXJzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmluZDogYmluZCxcbiAgICB1bmJpbmQ6IHVuYmluZCxcbiAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG52YXIgRVZFTlRfTU9VTlRFRCA9IFwibW91bnRlZFwiO1xudmFyIEVWRU5UX01PVkUgPSBcIm1vdmVcIjtcbnZhciBFVkVOVF9NT1ZFRCA9IFwibW92ZWRcIjtcbnZhciBFVkVOVF9EUkFHID0gXCJkcmFnXCI7XG52YXIgRVZFTlRfRFJBR0dJTkcgPSBcImRyYWdnaW5nXCI7XG52YXIgRVZFTlRfU0NST0xMID0gXCJzY3JvbGxcIjtcbnZhciBFVkVOVF9TQ1JPTExFRCA9IFwic2Nyb2xsZWRcIjtcbnZhciBFVkVOVF9ERVNUUk9ZID0gXCJkZXN0cm95XCI7XG5cbmZ1bmN0aW9uIEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpIHtcbiAgdmFyIGJ1cyA9IFNwbGlkZTIgPyBTcGxpZGUyLmV2ZW50LmJ1cyA6IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgdmFyIGJpbmRlciA9IEV2ZW50QmluZGVyKCk7XG5cbiAgZnVuY3Rpb24gb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIGJpbmRlci5iaW5kKGJ1cywgdG9BcnJheSQxKGV2ZW50cykuam9pbihcIiBcIiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgaXNBcnJheSQxKGUuZGV0YWlsKSA/IGUuZGV0YWlsIDogW10pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIGJpbmRlci5kaXNwYXRjaChidXMsIGV2ZW50LCBzbGljZSQxKGFyZ3VtZW50cywgMSkpO1xuICB9XG5cbiAgaWYgKFNwbGlkZTIpIHtcbiAgICBTcGxpZGUyLmV2ZW50Lm9uKEVWRU5UX0RFU1RST1ksIGJpbmRlci5kZXN0cm95KTtcbiAgfVxuXG4gIHJldHVybiBhc3NpZ24kMShiaW5kZXIsIHtcbiAgICBidXM6IGJ1cyxcbiAgICBvbjogb24sXG4gICAgb2ZmOiBhcHBseSQxKGJpbmRlci51bmJpbmQsIGJ1cyksXG4gICAgZW1pdDogZW1pdFxuICB9KTtcbn1cblxuZnVuY3Rpb24gU3RhdGUoaW5pdGlhbFN0YXRlKSB7XG4gIHZhciBzdGF0ZSA9IGluaXRpYWxTdGF0ZTtcblxuICBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICBzdGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgZnVuY3Rpb24gaXMoc3RhdGVzKSB7XG4gICAgcmV0dXJuIGluY2x1ZGVzKHRvQXJyYXkkMShzdGF0ZXMpLCBzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNldDogc2V0LFxuICAgIGlzOiBpc1xuICB9O1xufVxudmFyIENMQVNTX1NMSURFID0gUFJPSkVDVF9DT0RFJDEgKyBcIl9fc2xpZGVcIjtcbnZhciBDTEFTU19DT05UQUlORVIgPSBDTEFTU19TTElERSArIFwiX19jb250YWluZXJcIjtcblxuZnVuY3Rpb24gc2xpY2UoYXJyYXlMaWtlLCBzdGFydCwgZW5kKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UsIHN0YXJ0LCBlbmQpO1xufVxuXG5mdW5jdGlvbiBmaW5kKGFycmF5TGlrZSwgcHJlZGljYXRlKSB7XG4gIHJldHVybiBzbGljZShhcnJheUxpa2UpLmZpbHRlcihwcmVkaWNhdGUpWzBdO1xufVxuXG5mdW5jdGlvbiBhcHBseShmdW5jKSB7XG4gIHJldHVybiBmdW5jLmJpbmQobnVsbCwgLi4uc2xpY2UoYXJndW1lbnRzLCAxKSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZih0eXBlLCBzdWJqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygc3ViamVjdCA9PT0gdHlwZTtcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuICFpc051bGwoc3ViamVjdCkgJiYgdHlwZU9mKFwib2JqZWN0XCIsIHN1YmplY3QpO1xufVxuY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5jb25zdCBpc0Z1bmN0aW9uID0gYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuY29uc3QgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xuY29uc3QgaXNVbmRlZmluZWQgPSBhcHBseSh0eXBlT2YsIFwidW5kZWZpbmVkXCIpO1xuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2godmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5KHZhbHVlcykuZm9yRWFjaChpdGVyYXRlZSk7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsbSwgY2xhc3NlcywgYWRkKSB7XG4gIGlmIChlbG0pIHtcbiAgICBmb3JFYWNoKGNsYXNzZXMsIChuYW1lKSA9PiB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBlbG0uY2xhc3NMaXN0W2FkZCA/IFwiYWRkXCIgOiBcInJlbW92ZVwiXShuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBpc1N0cmluZyhjbGFzc2VzKSA/IGNsYXNzZXMuc3BsaXQoXCIgXCIpIDogY2xhc3NlcywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGNoaWxkcmVuKSB7XG4gIGZvckVhY2goY2hpbGRyZW4sIHBhcmVudC5hcHBlbmRDaGlsZC5iaW5kKHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKGVsbSwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxtKSAmJiAoZWxtW1wibXNNYXRjaGVzU2VsZWN0b3JcIl0gfHwgZWxtLm1hdGNoZXMpLmNhbGwoZWxtLCBzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKChjaGlsZCkgPT4gbWF0Y2hlcyhjaGlsZCwgc2VsZWN0b3IpKSA6IGNoaWxkcmVuMjtcbn1cblxuZnVuY3Rpb24gY2hpbGQocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbihwYXJlbnQsIHNlbGVjdG9yKVswXSA6IHBhcmVudC5maXJzdEVsZW1lbnRDaGlsZDtcbn1cblxuY29uc3Qgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIGxldCBrZXlzID0gb3duS2V5cyhvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24ob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgZm9yT3duKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBtZXJnZShvYmplY3QpIHtcbiAgc2xpY2UoYXJndW1lbnRzLCAxKS5mb3JFYWNoKChzb3VyY2UpID0+IHtcbiAgICBmb3JPd24oc291cmNlLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gbWVyZ2Uoe30sIGlzT2JqZWN0KG9iamVjdFtrZXldKSA/IG9iamVjdFtrZXldIDoge30sIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUoZWxtcywgYXR0cnMpIHtcbiAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgZm9yRWFjaChhdHRycywgKGF0dHIpID0+IHtcbiAgICAgIGVsbSAmJiBlbG0ucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKGVsbXMsIGF0dHJzLCB2YWx1ZSkge1xuICBpZiAoaXNPYmplY3QoYXR0cnMpKSB7XG4gICAgZm9yT3duKGF0dHJzLCAodmFsdWUyLCBuYW1lKSA9PiB7XG4gICAgICBzZXRBdHRyaWJ1dGUoZWxtcywgbmFtZSwgdmFsdWUyKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBmb3JFYWNoKGVsbXMsIChlbG0pID0+IHtcbiAgICAgIGlzTnVsbCh2YWx1ZSkgfHwgdmFsdWUgPT09IFwiXCIgPyByZW1vdmVBdHRyaWJ1dGUoZWxtLCBhdHRycykgOiBlbG0uc2V0QXR0cmlidXRlKGF0dHJzLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGUodGFnLCBhdHRycywgcGFyZW50KSB7XG4gIGNvbnN0IGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKGF0dHJzKSB7XG4gICAgaXNTdHJpbmcoYXR0cnMpID8gYWRkQ2xhc3MoZWxtLCBhdHRycykgOiBzZXRBdHRyaWJ1dGUoZWxtLCBhdHRycyk7XG4gIH1cbiAgcGFyZW50ICYmIGFwcGVuZChwYXJlbnQsIGVsbSk7XG4gIHJldHVybi
10130BlbG07XG59XG5cbmZ1bmN0aW9uIHN0eWxlKGVsbSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsbSlbcHJvcF07XG4gIH1cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gYCR7dmFsdWV9YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBkaXNwbGF5KGVsbSwgZGlzcGxheTIpIHtcbiAgc3R5bGUoZWxtLCBcImRpc3BsYXlcIiwgZGlzcGxheTIpO1xufVxuXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxtLCBhdHRyKSB7XG4gIHJldHVybiBlbG0uZ2V0QXR0cmlidXRlKGF0dHIpO1xufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcXVlcnlBbGwocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBzbGljZShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpIDogW107XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsbSwgY2xhc3Nlcykge1xuICB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGZhbHNlKTtcbn1cblxuY29uc3QgUFJPSkVDVF9DT0RFID0gXCJzcGxpZGVcIjtcblxuZnVuY3Rpb24gZXJyb3IobWVzc2FnZSkge1xuICBjb25zb2xlLmVycm9yKGBbJHtQUk9KRUNUX0NPREV9XSAke21lc3NhZ2V9YCk7XG59XG5cbmNvbnN0IHsgbWluLCBtYXgsIGZsb29yLCBjZWlsLCBhYnMgfSA9IE1hdGg7XG5cbmZ1bmN0aW9uIGNsYW1wKG51bWJlciwgeCwgeSkge1xuICBjb25zdCBtaW5pbXVtID0gbWluKHgsIHkpO1xuICBjb25zdCBtYXhpbXVtID0gbWF4KHgsIHkpO1xuICByZXR1cm4gbWluKG1heChtaW5pbXVtLCBudW1iZXIpLCBtYXhpbXVtKTtcbn1cblxuY29uc3QgQ0xBU1NfVklERU8gPSBcInNwbGlkZV9fdmlkZW9cIjtcbmNvbnN0IENMQVNTX1ZJREVPX1dSQVBQRVIgPSBgJHtDTEFTU19WSURFT31fX3dyYXBwZXJgO1xuY29uc3QgQ0xBU1NfVklERU9fUExBWV9CVVRUT04gPSBgJHtDTEFTU19WSURFT31fX3BsYXlgO1xuY29uc3QgQ0xBU1NfUExBWUlORyA9IFwiaXMtcGxheWluZ1wiO1xuY29uc3QgQ0xBU1NfRVJST1IgPSBcImlzLWVycm9yXCI7XG5jb25zdCBDTEFTU19WSURFT19ESVNBQkxFRCA9IFwiaXMtdmlkZW8tZGlzYWJsZWRcIjtcbmNvbnN0IE1PRElGSUVSX0hBU19WSURFTyA9IFwiLS1oYXMtdmlkZW9cIjtcblxuY29uc3QgWU9VVFVCRV9EQVRBX0FUVFJJQlVURSA9IFwiZGF0YS1zcGxpZGUteW91dHViZVwiO1xuY29uc3QgVklNRU9fREFUQV9BVFRSSUJVVEUgPSBcImRhdGEtc3BsaWRlLXZpbWVvXCI7XG5jb25zdCBIVE1MX1ZJREVPX19EQVRBX0FUVFJJQlVURSA9IFwiZGF0YS1zcGxpZGUtaHRtbC12aWRlb1wiO1xuXG5jb25zdCBERUZBVUxUUyA9IHtcbiAgaGlkZUNvbnRyb2xzOiBmYWxzZSxcbiAgbG9vcDogZmFsc2UsXG4gIG11dGU6IGZhbHNlLFxuICB2b2x1bWU6IDAuMlxufTtcblxuY29uc3QgRVZFTlRfVklERU9fUExBWSA9IFwidmlkZW86cGxheVwiO1xuY29uc3QgRVZFTlRfVklERU9fUEFVU0UgPSBcInZpZGVvOnBhdXNlXCI7XG5jb25zdCBFVkVOVF9WSURFT19FTkRFRCA9IFwidmlkZW86ZW5kZWRcIjtcbmNvbnN0IEVWRU5UX1ZJREVPX0VSUk9SID0gXCJ2aWRlbzplcnJvclwiO1xuY29uc3QgRVZFTlRfVklERU9fQ0xJQ0sgPSBcInZpZGVvOmNsaWNrXCI7XG5cbmNvbnN0IE5PVF9JTklUSUFMSVpFRCA9IDE7XG5jb25zdCBJTklUSUFMSVpJTkcgPSAyO1xuY29uc3QgSU5JVElBTElaRUQgPSAzO1xuY29uc3QgUEVORElOR19QTEFZID0gNDtcbmNvbnN0IElETEUgPSA1O1xuY29uc3QgTE9BRElORyA9IDY7XG5jb25zdCBQTEFZX1JFUVVFU1RfQUJPUlRFRCA9IDc7XG5jb25zdCBQTEFZSU5HID0gODtcbmNvbnN0IEVSUk9SID0gOTtcblxuY2xhc3MgQWJzdHJhY3RWaWRlb1BsYXllciB7XG4gIGNvbnN0cnVjdG9yKHRhcmdldCwgdmlkZW9JZCwgb3B0aW9ucykge1xuICAgIHRoaXMuc3RhdGUgPSBTdGF0ZShOT1RfSU5JVElBTElaRUQpO1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZSgpO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRoaXMudmlkZW9JZCA9IHZpZGVvSWQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLm9uUGxheSA9IHRoaXMub25QbGF5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vblBhdXNlID0gdGhpcy5vblBhdXNlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbkVuZGVkID0gdGhpcy5vbkVuZGVkLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vblBsYXllclJlYWR5ID0gdGhpcy5vblBsYXllclJlYWR5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbkVycm9yID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XG4gIH1cbiAgb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZXZlbnQub24oZXZlbnRzLCBjYWxsYmFjayk7XG4gIH1cbiAgcGxheSgpIHtcbiAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzO1xuICAgIGlmIChzdGF0ZS5pcyhFUlJPUikpIHtcbiAgICAgIGVycm9yKFwiQ2FuIG5vdCBwbGF5IHRoaXMgdmlkZW8uXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV2ZW50LmVtaXQoXCJwbGF5XCIpO1xuICAgIGlmIChzdGF0ZS5pcyhJTklUSUFMSVpJTkcpKSB7XG4gICAgICByZXR1cm4gc3RhdGUuc2V0KFBFTkRJTkdfUExBWSk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5pcyhJTklUSUFMSVpFRCkpIHtcbiAgICAgIHRoaXMucGxheWVyID0gdGhpcy5jcmVhdGVQbGF5ZXIodGhpcy52aWRlb0lkKTtcbiAgICAgIHJldHVybiBzdGF0ZS5zZXQoUEVORElOR19QTEFZKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLmlzKFtQRU5ESU5HX1BMQVksIFBMQVlJTkddKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXMoSURMRSkpIHtcbiAgICAgIHN0YXRlLnNldChMT0FESU5HKTtcbiAgICAgIHRoaXMucGxheVZpZGVvKCk7XG4gICAgfVxuICB9XG4gI
10130HBhdXNlKCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgaWYgKHN0YXRlLmlzKEVSUk9SKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV2ZW50LmVtaXQoXCJwYXVzZVwiKTtcbiAgICBpZiAoc3RhdGUuaXMoUEVORElOR19QTEFZKSkge1xuICAgICAgcmV0dXJuIHN0YXRlLnNldChJTklUSUFMSVpJTkcpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXMoTE9BRElORykpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5zZXQoUExBWV9SRVFVRVNUX0FCT1JURUQpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXMoUExBWUlORykpIHtcbiAgICAgIHRoaXMucGF1c2VWaWRlbygpO1xuICAgICAgdGhpcy5zdGF0ZS5zZXQoSURMRSk7XG4gICAgfVxuICB9XG4gIGlzUGF1c2VkKCkge1xuICAgIHJldHVybiAhdGhpcy5zdGF0ZS5pcyhQTEFZSU5HKTtcbiAgfVxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpO1xuICB9XG4gIG9uUGxheWVyUmVhZHkoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCBpc1BlbmRpbmcgPSBzdGF0ZS5pcyhQRU5ESU5HX1BMQVkpO1xuICAgIHN0YXRlLnNldChJRExFKTtcbiAgICBpZiAoaXNQZW5kaW5nKSB7XG4gICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG4gIH1cbiAgb25QbGF5KCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgYWJvcnRlZCA9IHN0YXRlLmlzKFBMQVlfUkVRVUVTVF9BQk9SVEVEKTtcbiAgICBzdGF0ZS5zZXQoUExBWUlORyk7XG4gICAgaWYgKGFib3J0ZWQpIHtcbiAgICAgIHRoaXMucGF1c2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ldmVudC5lbWl0KFwicGxheWVkXCIpO1xuICAgIH1cbiAgfVxuICBvblBhdXNlKCkge1xuICAgIHRoaXMuc3RhdGUuc2V0KElETEUpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChcInBhdXNlZFwiKTtcbiAgfVxuICBvbkVuZGVkKCkge1xuICAgIHRoaXMuc3RhdGUuc2V0KElETEUpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChcImVuZGVkXCIpO1xuICB9XG4gIG9uRXJyb3IoKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXQoRVJST1IpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChcImVycm9yXCIpO1xuICB9XG59XG5cbmNsYXNzIEhUTUxWaWRlb1BsYXllciBleHRlbmRzIEFic3RyYWN0VmlkZW9QbGF5ZXIge1xuICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHZpZGVvSWQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHRhcmdldCwgdmlkZW9JZCwgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoSU5JVElBTElaRUQpO1xuICB9XG4gIGNyZWF0ZVBsYXllcih2aWRlb0lkKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCBvcHRpb25zOiB7IHBsYXllck9wdGlvbnMgPSB7fSB9IH0gPSB0aGlzO1xuICAgIGNvbnN0IHBsYXllciA9IGNyZWF0ZShcInZpZGVvXCIsIHsgc3JjOiB2aWRlb0lkIH0sIHRoaXMudGFyZ2V0KTtcbiAgICBjb25zdCBvbiA9IHBsYXllci5hZGRFdmVudExpc3RlbmVyLmJpbmQocGxheWVyKTtcbiAgICBhc3NpZ24ocGxheWVyLCB7XG4gICAgICBjb250cm9sczogIW9wdGlvbnMuaGlkZUNvbnRyb2xzLFxuICAgICAgbG9vcDogb3B0aW9ucy5sb29wLFxuICAgICAgdm9sdW1lOiBjbGFtcChvcHRpb25zLnZvbHVtZSwgMCwgMSksXG4gICAgICBtdXRlZDogb3B0aW9ucy5tdXRlXG4gICAgfSwgcGxheWVyT3B0aW9ucy5odG
101301sVmlkZW8gfHwge30pO1xuICAgIG9uKFwicGxheVwiLCB0aGlzLm9uUGxheSk7XG4gICAgb24oXCJwYXVzZVwiLCB0aGlzLm9uUGF1c2UpO1xuICAgIG9uKFwiZW5kZWRcIiwgdGhpcy5vbkVuZGVkKTtcbiAgICBvbihcImxvYWRlZGRhdGFcIiwgdGhpcy5vblBsYXllclJlYWR5KTtcbiAgICBvbihcImVycm9yXCIsIHRoaXMub25FcnJvcik7XG4gICAgcmV0dXJuIHBsYXllcjtcbiAgfVxuICBwbGF5VmlkZW8oKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICBwcm9taXNlICYmIHByb21pc2UuY2F0Y2godGhpcy5vbkVycm9yLmJpbmQodGhpcykpO1xuICB9XG4gIHBhdXNlVmlkZW8oKSB7XG4gICAgdGhpcy5wbGF5ZXIucGF1c2UoKTtcbiAgfVxuICBvbkVycm9yKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzKFBMQVlfUkVRVUVTVF9BQk9SVEVEKSkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXQoSURMRSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLm9uRXJyb3IoKTtcbiAgICB9XG4gIH1cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgY29uc3QgeyBwbGF5ZXIgfSA9IHRoaXM7XG4gICAgY29uc3Qgb2ZmID0gcGxheWVyLmFkZEV2ZW50TGlzdGVuZXIuYmluZChwbGF5ZXIpO1xuICAgIG9mZihcInBsYXlcIiwgdGhpcy5vblBsYXkpO1xuICAgIG9mZihcInBhdXNlXCIsIHRoaXMub25QYXVzZSk7XG4gICAgb2ZmKFwiZW5kZWRcIiwgdGhpcy5vbkVuZGVkKTtcbiAgICBvZmYoXCJsb2FkZWRkYXRhXCIsIHRoaXMub25QbGF5ZXJSZWFkeSk7XG4gIH1cbn1cblxuLyohIEB2aW1lby9wbGF5ZXIgdjIuMTcuMSB8IChjKSAyMDIyIFZpbWVvIHwgTUlUIExpY2Vuc2UgfCBodHRwczovL2dpdGh1Yi5jb20vdmltZW8vcGxheWVyLmpzICovXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5cbi8qKlxuICogQG1vZHVsZSBsaWIvZnVuY3Rpb25zXG4gKi9cblxuLyoqXG4gKiBDaGVjayB0byBzZWUgdGhpcyBpcyBhIG5vZGUgZW52aXJvbm1lbnQuXG4gKiBAdHlwZSB7Qm9vbGVhbn1cbiAqL1xuXG4vKiBnbG9iYWwgZ2xvYmFsICovXG52YXIgaXNOb2RlID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYge30udG9TdHJpbmcuY2FsbChnbG9iYWwpID09PSAnW29iamVjdCBnbG9iYWxdJztcbi8qKlxuICogR2V0IHRoZSBuYW1lIG9mIHRoZSBtZXRob2QgZm9yIGEgZ2l2ZW4gZ2V0dGVyIG9yIHNldHRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBFaXRoZXIg4oCcZ2V04oCdIG9yIOKAnHNldOKAnS5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBnZXRNZXRob2ROYW1lKHByb3AsIHR5cGUpIHtcbiAgaWYgKHByb3AuaW5kZXhPZih0eXBlLnRvTG93ZXJDYXNlKCkpID09PSAwKSB7XG4gICAgcmV0dXJuIHByb3A7XG4gIH1cblxuICByZXR1cm4gXCJcIi5jb25jYXQodHlwZS50b0xvd2VyQ2FzZSgpKS5jb25jYXQocHJvcC5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSkuY29uY2F0KHByb3Auc3Vic3RyKDEpKTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgaXMgYSBET00gRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IGVsZW1lbnQgVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaXNEb21FbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIEJvb2xlYW4oZWxlbWVudCAmJiBlbGVtZW50Lm5vZGVUeXBlID09PSAxICYmICdub2RlTmFtZScgaW4gZWxlbWVudCAmJiBlbGVtZW50Lm93bmVyRG9jdW1lbnQgJiYgZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgbnVtYmVyLlxuICpcbiAqIEBzZWUgaHR0cDovL2RsLmRyb3Bib3h1c2VyY29udGVudC5jb20vdS8zNTE0Ni9qcy90ZXN0cy9pc051bWJlci5odG1sXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW50ZWdlciBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgJiYgaXNGaW5pdGUodmFsdWUpICYmIE1hdGguZmxvb3IodmFsdWUpID09IHZhbHVlO1xufVxuLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgdGhlIFVSTCBpcyBhIFZpbWVvIHVybC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJ
10130sIFRoZSB1cmwgc3RyaW5nLlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuXG5mdW5jdGlvbiBpc1ZpbWVvVXJsKHVybCkge1xuICByZXR1cm4gL14oaHR0cHM/Oik/XFwvXFwvKChwbGF5ZXJ8d3d3KVxcLik/dmltZW9cXC5jb20oPz0kfFxcLykvLnRlc3QodXJsKTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBVUkwgaXMgZm9yIGEgVmltZW8gZW1iZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgdXJsIHN0cmluZy5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaXNWaW1lb0VtYmVkKHVybCkge1xuICB2YXIgZXhwciA9IC9eaHR0cHM6XFwvXFwvcGxheWVyXFwudmltZW9cXC5jb21cXC92aWRlb1xcL1xcZCsvO1xuICByZXR1cm4gZXhwci50ZXN0KHVybCk7XG59XG4vKipcbiAqIEdldCB0aGUgVmltZW8gVVJMIGZyb20gYW4gZWxlbWVudC5cbiAqIFRoZSBlbGVtZW50IG11c3QgaGF2ZSBlaXRoZXIgYSBkYXRhLXZpbWVvLWlkIG9yIGRhdGEtdmltZW8tdXJsIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb0VtYmVkUGFyYW1ldGVycyBUaGUgb0VtYmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZ2V0VmltZW9VcmwoKSB7XG4gIHZhciBvRW1iZWRQYXJhbWV0ZXJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIGlkID0gb0VtYmVkUGFyYW1ldGVycy5pZDtcbiAgdmFyIHVybCA9IG9FbWJlZFBhcmFtZXRlcnMudXJsO1xuICB2YXIgaWRPclVybCA9IGlkIHx8IHVybDtcblxuICBpZiAoIWlkT3JVcmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIGlkIG9yIHVybCBtdXN0IGJlIHBhc3NlZCwgZWl0aGVyIGluIGFuIG9wdGlvbnMgb2JqZWN0IG9yIGFzIGEgZGF0YS12aW1lby1pZCBvciBkYXRhLXZpbWVvLXVybCBhdHRyaWJ1dGUuJyk7XG4gIH1cblxuICBpZiAoaXNJbnRlZ2VyKGlkT3JVcmwpKSB7XG4gICAgcmV0dXJuIFwiaHR0cHM6Ly92aW1lby5jb20vXCIuY29uY2F0KGlkT3JVcmwpO1xuICB9XG5cbiAgaWYgKGlzVmltZW9VcmwoaWRPclVybCkpIHtcbiAgICByZXR1cm4gaWRPclVybC5yZXBsYWNlKCdodHRwOicsICdodHRwczonKTtcbiAgfVxuXG4gIGlmIChpZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KGlkLCBcIlxcdTIwMUQgaXMgbm90IGEgdmFsaWQgdmlkZW8gaWQuXCIpKTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KGlkT3JVcmwsIFwiXFx1MjAxRCBpcyBub3QgYSB2aW1lby5jb20gdXJsLlwiKSk7XG59XG5cbnZhciBhcnJheUluZGV4T2ZTdXBwb3J0ID0gdHlwZW9mIEFycmF5LnByb3RvdHlwZS5pbmRleE9mICE9PSAndW5kZWZpbmVkJztcbnZhciBwb3N0TWVzc2FnZVN1cHBvcnQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LnBvc3RNZXNzYWdlICE9PSAndW5kZWZpbmVkJztcblxuaWYgKCFpc05vZGUgJiYgKCFhcnJheUluZGV4T2ZTdXBwb3J0IHx8ICFwb3N0TWVzc2FnZVN1cHBvcnQpKSB7XG4gIHRocm93IG5ldyBFcnJvcignU29ycnksIHRoZSBWaW1lbyBQbGF5ZXIgQVBJIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBicm93c2VyLicpO1xufVxuXG52YXIgY29tbW9uanNHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uanNNb2R1bGUoZm4sIG1vZHVsZSkge1xuXHRyZXR1cm4gbW9kdWxlID0geyBleHBvcnRzOiB7fSB9LCBmbihtb2R1bGUsIG1vZHVsZS5leHBvcnRzKSwgbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8qIVxuICogd2Vha21hcC1wb2x5ZmlsbCB2Mi4wLjQgLSBFQ01BU2NyaXB0NiBXZWFrTWFwIHBvbHlmaWxsXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcG9seWdvbnBsYW5ldC93ZWFrbWFwLXBvbHlmaWxsXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMSBwb2x5Z29ucGxhbmV0IDxwb2x5Z29uLnBsYW5ldC5hcXVhQGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlIE1JVFxuICovXG4oZnVuY3Rpb24gKHNlbGYpIHtcblxuICBpZiAoc2VsZi5XZWFrTWFwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuICB2YXIgaGFzRGVmaW5lID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXZvaWQgSUU4J3MgYnJva2VuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eVxuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7XG4gICAgICAgIHZhbHVlOiAxXG4gICAgICB9KS54ID09PSAxO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH0oKTtcblxuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lLCB2YWx1ZSkge1xuICAgIGlmIChoYXNEZWZpbmUpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIHNlbGYuV2Vha01hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBFQ01BLTI2MiAyMy4zIFdlYWtNYXAgT2JqZWN0c1xuICAgIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgICBpZiAodGhpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb25zdHJ1Y3RvciBXZWFrTWFwIHJlcXVpcmVzICduZXcnXCIpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAnX2lkJywgZ2VuSWQoJ19XZWFrTWFwJykpOyAvLyBFQ01BLTI2MiAyMy4zLjEuMSBXZWFrTWFwKFtpdGVyYWJsZV0pXG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBDdXJyZW50bHksIFdlYWtNYXAgYGl0ZXJhYmxlYCBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkXG4gICAgICAgI
10130HRocm93IG5ldyBUeXBlRXJyb3IoJ1dlYWtNYXAgaXRlcmFibGUgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuICAgIH0gLy8gRUNNQS0yNjIgMjMuMy4zLjIgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcblxuXG4gICAgZGVmaW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsICdkZWxldGUnLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBjaGVja0luc3RhbmNlKHRoaXMsICdkZWxldGUnKTtcblxuICAgICAgaWYgKCFpc09iamVjdChrZXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgZGVsZXRlIGtleVt0aGlzLl9pZF07XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7IC8vIEVDTUEtMjYyIDIzLjMuMy4zIFdlYWtNYXAucHJvdG90eXBlLmdldChrZXkpXG5cbiAgICBkZWZpbmVQcm9wZXJ0eShXZWFrTWFwLnByb3RvdHlwZSwgJ2dldCcsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGNoZWNrSW5zdGFuY2UodGhpcywgJ2dldCcpO1xuXG4gICAgICBpZiAoIWlzT2JqZWN0KGtleSkpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5WzFdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH0pOyAvLyBFQ01BLTI2MiAyMy4zLjMuNCBXZWFrTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXG4gICAgZGVmaW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsICdoYXMnLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBjaGVja0luc3RhbmNlKHRoaXMsICdoYXMnKTtcblxuICAgICAgaWYgKCFpc09iamVjdChrZXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTsgLy8gRUNNQS0yNjIgMjMuMy4zLjUgV2Vha01hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpXG5cbiAgICBkZWZpbmVQcm9wZXJ0eShXZWFrTWFwLnByb3RvdHlwZSwgJ3NldCcsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBjaGVja0luc3RhbmNlKHRoaXMsICdzZXQnKTtcblxuICAgICAgaWYgKCFpc09iamVjdChrZXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgdmFsdWUgdXNlZCBhcyB3ZWFrIG1hcCBrZXknKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgZW50cnlbMV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGRlZmluZVByb3BlcnR5KGtleSwgdGhpcy5faWQsIFtrZXksIHZhbHVlXSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrSW5zdGFuY2UoeCwgbWV0aG9kTmFtZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh4KSB8fCAhaGFzT3duUHJvcGVydHkuY2FsbCh4LCAnX2lkJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtZXRob2ROYW1lICsgJyBtZXRob2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlciAnICsgdHlwZW9mIHgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbklkKHByZWZpeCkge1xuICAgICAgcmV0dXJuIHByZWZpeCArICdfJyArIHJhbmQoKSArICcuJyArIHJhbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByYW5kKCkge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7XG4gICAgfVxuXG4gICAgZGVmaW5lUHJvcGVydHkoV2Vha01hcCwgJ19wb2x5ZmlsbCcsIHRydWUpO1xuICAgIHJldHVybiBXZWFrTWFwO1xuICB9KCk7XG5cbiAgZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuICAgIHJldHVybiBPYmplY3QoeCkgPT09IHg7XG4gIH1cbn0pKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2YgY29tbW9uanNHbG9iYWwgIT09ICd1bmRlZmluZWQnID8gY29tbW9uanNHbG9iYWwgOiBjb21tb25qc0dsb2JhbCk7XG5cbnZhciBucG9fc3JjID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xuLyohIE5hdGl2ZSBQcm9taXNlIE9ubHlcbiAgICB2MC44LjEgKGMpIEt5bGUgU2ltcHNvblxuICAgIE1JVCBMaWNlbnNlOiBodHRwOi8vZ2V0aWZ5Lm1pdC1saWNlbnNlLm9yZ1xuKi9cbihmdW5jdGlvbiBVTUQobmFtZSwgY29udGV4dCwgZGVmaW5pdGlvbikge1xuICAvLyBzcGVjaWFsIGZvcm0gb2YgVU1EIGZvciBwb2x5ZmlsbGluZyBhY3Jvc3MgZXZpcm9ubWVudHNcbiAgY29udGV4dFtuYW1lXSA9IGNvbnRleHRbbmFtZV0gfHwgZGVmaW5pdGlvbigpO1xuXG4gIGlmICggbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGNvbnRleHRbbmFtZV07XG4gIH1cbn0pKFwiUHJvbWlzZVwiLCB0eXBlb2YgY29tbW9uanNHbG9iYWwgIT0gXCJ1bmRlZmluZWRcIiA/IGNvbW1vbmpzR2xvYmFsIDogY29tbW9uanNHbG9iYWwsIGZ1bmN0aW9uIERFRigpIHtcblxuICB2YXIgYnVpbHRJblByb3AsXG4gICAgICBjeWNsZSxcbiAgICAgIHNjaGVkdWxpbmdfcXVldWUsXG4gICAgICBUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsXG4gICAgICB0aW1lciA9IHR5cGVvZiBzZXRJbW1lZGlhdGUgIT0gXCJ1bmRlZmluZWRcIiA/IGZ1bmN0aW9uIHRpbWVyKGZuKSB7XG4gICAgcmV0dXJuIHNldEltbWVkaWF0ZShmbik7XG4gIH0gOiBzZXRUaW
101301lb3V0OyAvLyBkYW1taXQsIElFOC5cblxuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ4XCIsIHt9KTtcblxuICAgIGJ1aWx0SW5Qcm9wID0gZnVuY3Rpb24gYnVpbHRJblByb3Aob2JqLCBuYW1lLCB2YWwsIGNvbmZpZykge1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIG5hbWUsIHtcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogY29uZmlnICE9PSBmYWxzZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYnVpbHRJblByb3AgPSBmdW5jdGlvbiBidWlsdEluUHJvcChvYmosIG5hbWUsIHZhbCkge1xuICAgICAgb2JqW25hbWVdID0gdmFsO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICB9IC8vIE5vdGU6IHVzaW5nIGEgcXVldWUgaW5zdGVhZCBvZiBhcnJheSBmb3IgZWZmaWNpZW5jeVxuXG5cbiAgc2NoZWR1bGluZ19xdWV1ZSA9IGZ1bmN0aW9uIFF1ZXVlKCkge1xuICAgIHZhciBmaXJzdCwgbGFzdCwgaXRlbTtcblxuICAgIGZ1bmN0aW9uIEl0ZW0oZm4sIHNlbGYpIHtcbiAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICAgIHRoaXMuc2VsZiA9IHNlbGY7XG4gICAgICB0aGlzLm5leHQgPSB2b2lkIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZDogZnVuY3Rpb24gYWRkKGZuLCBzZWxmKSB7XG4gICAgICAgIGl0ZW0gPSBuZXcgSXRlbShmbiwgc2VsZik7XG5cbiAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICBsYXN0Lm5leHQgPSBpdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0ID0gaXRlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhc3QgPSBpdGVtO1xuICAgICAgICBpdGVtID0gdm9pZCAwO1xuICAgICAgfSxcbiAgICAgIGRyYWluOiBmdW5jdGlvbiBkcmFpbigpIHtcbiAgICAgICAgdmFyIGYgPSBmaXJzdDtcbiAgICAgICAgZmlyc3QgPSBsYXN0ID0gY3ljbGUgPSB2b2lkIDA7XG5cbiAgICAgICAgd2hpbGUgKGYpIHtcbiAgICAgICAgICBmLmZuLmNhbGwoZi5zZWxmKTtcbiAgICAgICAgICBmID0gZi5uZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSgpO1xuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlKGZuLCBzZWxmKSB7XG4gICAgc2NoZWR1bGluZ19xdWV1ZS5hZGQoZm4sIHNlbGYpO1xuXG4gICAgaWYgKCFjeWNsZSkge1xuICAgICAgY3ljbGUgPSB0aW1lcihzY2hlZHVsaW5nX3F1ZXVlLmRyYWluKTtcbiAgICB9XG4gIH0gLy8gcHJvbWlzZSBkdWNrIHR5cGluZ1xuXG5cbiAgZnVuY3Rpb24gaXNUaGVuYWJsZShvKSB7XG4gICAgdmFyIF90aGVuLFxuICAgICAgICBvX3R5cGUgPSB0eXBlb2YgbztcblxuICAgIGlmIChvICE9IG51bGwgJiYgKG9fdHlwZSA9PSBcIm9iamVjdFwiIHx8IG9fdHlwZSA9PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgICBfdGhlbiA9IG8udGhlbjtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZW9mIF90aGVuID09IFwiZnVuY3Rpb25cIiA/IF90aGVuIDogZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoYWluLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub3RpZnlJc29sYXRlZCh0aGlzLCB0aGlzLnN0YXRlID09PSAxID8gdGhpcy5jaGFpbltpXS5zdWNjZXNzIDogdGhpcy5jaGFpbltpXS5mYWlsdXJlLCB0aGlzLmNoYWluW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYWluLmxlbmd0aCA9IDA7XG4gIH0gLy8gTk9URTogVGhpcyBpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGlzb2xhdGVcbiAgLy8gdGhlIGB0cnkuLmNhdGNoYCBzbyB0aGF0IG90aGVyIGNvZGUgY2FuIGJlXG4gIC8vIG9wdGltaXplZCBiZXR0ZXJcblxuXG4gIGZ1bmN0aW9uIG5vdGlmeUlzb2xhdGVkKHNlbGYsIGNiLCBjaGFpbikge1xuICAgIHZhciByZXQsIF90aGVuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChjYiA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2hhaW4ucmVqZWN0KHNlbGYubXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjYiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHJldCA9IHNlbGYubXNnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldCA9IGNiLmNhbGwodm9pZCAwLCBzZWxmLm1zZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmV0ID09PSBjaGFpbi5wcm9taXNlKSB7XG4gICAgICAgICAgY2hhaW4ucmVqZWN0KFR5cGVFcnJvcihcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpO1xuICAgICAgICB9IGVsc2UgaWYgKF90aGVuID0gaXNUaGVuYWJsZShyZXQpKSB7XG4gICAgICAgICAgX3RoZW4uY2FsbChyZXQsIGNoYWluLnJlc29sdmUsIGNoYWluLnJlamVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hhaW4ucmVzb2x2ZShyZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjaGFpbi5yZWplY3QoZXJyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlKG1zZykge1xuICAgIHZhciBfdGhlbixcbiAgICAgICAgc2VsZiA9IHRoaXM7IC8vIGFscmVhZHkgdHJpZ2dlcmVkP1xuXG5cbiAgICBpZiAoc2VsZi50cmlnZ2VyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnRyaWdnZXJlZCA9IHRydWU7IC8vIHVud3JhcFxuXG4gICAgaWYgKHNlbGYuZGVmKSB7XG4gICAgICBzZWxmID0gc2VsZi5kZWY7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChfdGhlbiA9IGlzVGhlbmFibGUobXNnKSkge1xuICAgICAgICBzY2hlZHVsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGRlZl93cmFwcGVyID0gbmV3IE1ha2VEZWZXcmFwcGVyKHNlbGYpO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGVuLmNhbGwobXNnLCBmdW5jdGlvbiAkcmVzb2x2ZSQoKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUuYXBwbHkoZGVmX3dyYXBwZXIsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAkcmVqZWN0JCgpIHtcbiAgICAgICAgICAgICAgcmVqZWN0LmFwcGx5KGRlZl93cmFwcGVyLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QuY2FsbChkZWZfd3JhcHBlciwgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgI
10130H0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5tc2cgPSBtc2c7XG4gICAgICAgIHNlbGYuc3RhdGUgPSAxO1xuXG4gICAgICAgIGlmIChzZWxmLmNoYWluLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzY2hlZHVsZShub3RpZnksIHNlbGYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWplY3QuY2FsbChuZXcgTWFrZURlZldyYXBwZXIoc2VsZiksIGVycik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVqZWN0KG1zZykge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8gYWxyZWFkeSB0cmlnZ2VyZWQ/XG5cbiAgICBpZiAoc2VsZi50cmlnZ2VyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnRyaWdnZXJlZCA9IHRydWU7IC8vIHVud3JhcFxuXG4gICAgaWYgKHNlbGYuZGVmKSB7XG4gICAgICBzZWxmID0gc2VsZi5kZWY7XG4gICAgfVxuXG4gICAgc2VsZi5tc2cgPSBtc2c7XG4gICAgc2VsZi5zdGF0ZSA9IDI7XG5cbiAgICBpZiAoc2VsZi5jaGFpbi5sZW5ndGggPiAwKSB7XG4gICAgICBzY2hlZHVsZShub3RpZnksIHNlbGYpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGl0ZXJhdGVQcm9taXNlcyhDb25zdHJ1Y3RvciwgYXJyLCByZXNvbHZlciwgcmVqZWN0ZXIpIHtcbiAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBhcnIubGVuZ3RoOyBpZHgrKykge1xuICAgICAgKGZ1bmN0aW9uIElJRkUoaWR4KSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnJlc29sdmUoYXJyW2lkeF0pLnRoZW4oZnVuY3Rpb24gJHJlc29sdmVyJChtc2cpIHtcbiAgICAgICAgICByZXNvbHZlcihpZHgsIG1zZyk7XG4gICAgICAgIH0sIHJlamVjdGVyKTtcbiAgICAgIH0pKGlkeCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gTWFrZURlZldyYXBwZXIoc2VsZikge1xuICAgIHRoaXMuZGVmID0gc2VsZjtcbiAgICB0aGlzLnRyaWdnZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gTWFrZURlZihzZWxmKSB7XG4gICAgdGhpcy5wcm9taXNlID0gc2VsZjtcbiAgICB0aGlzLnN0YXRlID0gMDtcbiAgICB0aGlzLnRyaWdnZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2hhaW4gPSBbXTtcbiAgICB0aGlzLm1zZyA9IHZvaWQgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX19OUE9fXyAhPT0gMCkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiTm90IGEgcHJvbWlzZVwiKTtcbiAgICB9IC8vIGluc3RhbmNlIHNoYWRvd2luZyB0aGUgaW5oZXJpdGVkIFwiYnJhbmRcIlxuICAgIC8vIHRvIHNpZ25hbCBhbiBhbHJlYWR5IFwiaW5pdGlhbGl6ZWRcIiBwcm9taXNlXG5cblxuICAgIHRoaXMuX19OUE9fXyA9IDE7XG4gICAgdmFyIGRlZiA9IG5ldyBNYWtlRGVmKHRoaXMpO1xuXG4gICAgdGhpc1tcInRoZW5cIl0gPSBmdW5jdGlvbiB0aGVuKHN1Y2Nlc3MsIGZhaWx1cmUpIHtcbiAgICAgIHZhciBvID0ge1xuICAgICAgICBzdWNjZXNzOiB0eXBlb2Ygc3VjY2VzcyA9PSBcImZ1bmN0aW9uXCIgPyBzdWNjZXNzIDogdHJ1ZSxcbiAgICAgICAgZmFpbHVyZTogdHlwZW9mIGZhaWx1cmUgPT0gXCJmdW5jdGlvblwiID8gZmFpbHVy
10130ZSA6IGZhbHNlXG4gICAgICB9OyAvLyBOb3RlOiBgdGhlbiguLilgIGl0c2VsZiBjYW4gYmUgYm9ycm93ZWQgdG8gYmUgdXNlZCBhZ2FpbnN0XG4gICAgICAvLyBhIGRpZmZlcmVudCBwcm9taXNlIGNvbnN0cnVjdG9yIGZvciBtYWtpbmcgdGhlIGNoYWluZWQgcHJvbWlzZSxcbiAgICAgIC8vIGJ5IHN1YnN0aXR1dGluZyBhIGRpZmZlcmVudCBgdGhpc2AgYmluZGluZy5cblxuICAgICAgby5wcm9taXNlID0gbmV3IHRoaXMuY29uc3RydWN0b3IoZnVuY3Rpb24gZXh0cmFjdENoYWluKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG4gICAgICAgIH1cblxuICAgICAgICBvLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICBvLnJlamVjdCA9IHJlamVjdDtcbiAgICAgIH0pO1xuICAgICAgZGVmLmNoYWluLnB1c2gobyk7XG5cbiAgICAgIGlmIChkZWYuc3RhdGUgIT09IDApIHtcbiAgICAgICAgc2NoZWR1bGUobm90aWZ5LCBkZWYpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gby5wcm9taXNlO1xuICAgIH07XG5cbiAgICB0aGlzW1wiY2F0Y2hcIl0gPSBmdW5jdGlvbiAkY2F0Y2gkKGZhaWx1cmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odm9pZCAwLCBmYWlsdXJlKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yLmNhbGwodm9pZCAwLCBmdW5jdGlvbiBwdWJsaWNSZXNvbHZlKG1zZykge1xuICAgICAgICByZXNvbHZlLmNhbGwoZGVmLCBtc2cpO1xuICAgICAgfSwgZnVuY3Rpb24gcHVibGljUmVqZWN0KG1zZykge1xuICAgICAgICByZWplY3QuY2FsbChkZWYsIG1zZyk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlamVjdC5jYWxsKGRlZiwgZXJyKTtcbiAgICB9XG4gIH1cblxuICB2YXIgUHJvbWlzZVByb3RvdHlwZSA9IGJ1aWx0SW5Qcm9wKHt9LCBcImNvbnN0cnVjdG9yXCIsIFByb21pc2UsXG4gIC8qY29uZmlndXJhYmxlPSovXG4gIGZhbHNlKTsgLy8gTm90ZTogQW5kcm9pZCA0IGNhbm5vdCB1c2UgYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSguLilgIGhlcmVcblxuICBQcm9taXNlLnByb3RvdHlwZSA9IFByb21pc2VQcm90b3R5cGU7IC8vIGJ1aWx0LWluIFwiYnJhbmRcIiB0byBzaWduYWwgYW4gXCJ1bmluaXRpYWxpemVkXCIgcHJvbWlzZVxuXG4gIGJ1aWx0SW5Qcm9wKFByb21pc2VQcm90b3R5cGUsIFwiX19OUE9fX1wiLCAwLFxuICAvKmNvbmZpZ3VyYWJsZT0qL1xuICBmYWxzZSk7XG4gIGJ1aWx0SW5Qcm9wKFByb21pc2UsIFwicmVzb2x2ZVwiLCBmdW5jdGlvbiBQcm9taXNlJHJlc29sdmUobXNnKSB7XG4gICAgdmFyIENvbnN0cnVjdG9yID0gdGhpczsgLy8gc3BlYyBtYW5kYXRlZCBjaGVja3NcbiAgICAvLyBub3RlOiBiZXN0IFwiaXNQcm9taXNlXCIgY2hlY2sgdGhhdCdzIHByYWN0aWNhbCBmb3Igbm93XG5cbiAgICBpZiAobXNnICYmIHR5cGVvZiBtc2cgPT0gXCJvYmplY3RcIiAmJiBtc2cuX19OUE9fXyA9PT0gMSkge1xuICAgICAgcmV0dXJuIG1zZztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShtc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYnVpbHRJblByb3AoUHJvbWlzZSwgXCJyZWplY3RcIiwgZnVuY3Rpb24gUHJvbWlzZSRyZWplY3QobXNnKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG1zZyk7XG4gICAgfSk7XG4gIH0pO1xuICBidWlsdEluUHJvcChQcm9taXNlLCBcImFsbFwiLCBmdW5jdGlvbiBQcm9taXNlJGFsbChhcnIpIHtcbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzOyAvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXG4gICAgaWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgIHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIENvbnN0cnVjdG9yLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgICAgfVxuXG4gICAgICB2Y
10130XIgbGVuID0gYXJyLmxlbmd0aCxcbiAgICAgICAgICBtc2dzID0gQXJyYXkobGVuKSxcbiAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICBpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsIGFyciwgZnVuY3Rpb24gcmVzb2x2ZXIoaWR4LCBtc2cpIHtcbiAgICAgICAgbXNnc1tpZHhdID0gbXNnO1xuXG4gICAgICAgIGlmICgrK2NvdW50ID09PSBsZW4pIHtcbiAgICAgICAgICByZXNvbHZlKG1zZ3MpO1xuICAgICAgICB9XG4gICAgICB9LCByZWplY3QpO1xuICAgIH0pO1xuICB9KTtcbiAgYnVpbHRJblByb3AoUHJvbWlzZSwgXCJyYWNlXCIsIGZ1bmN0aW9uIFByb21pc2UkcmFjZShhcnIpIHtcbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzOyAvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXG4gICAgaWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgIHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcbiAgICAgIH1cblxuICAgICAgaXRlcmF0ZVByb21pc2VzKENvbnN0cnVjdG9yLCBhcnIsIGZ1bmN0aW9uIHJlc29sdmVyKGlkeCwgbXNnKSB7XG4gICAgICAgIHJlc29sdmUobXNnKTtcbiAgICAgIH0sIHJlamVjdCk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZTtcbn0pO1xufSk7XG5cbi8qKlxuICogQG1vZHVsZSBsaWIvY2FsbGJhY2tzXG4gKi9cbnZhciBjYWxsYmFja01hcCA9IG5ldyBXZWFrTWFwKCk7XG4vKipcbiAqIFN0b3JlIGEgY2FsbGJhY2sgZm9yIGEgbWV0aG9kIG9yIGV2ZW50IGZvciBhIHBsYXllci5cbiAqXG4gKiBAcGFyYW0ge1BsYXllcn0gcGxheWVyIFRoZSBwbGF5ZXIgb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1ldGhvZCBvciBldmVudCBuYW1lLlxuICogQHBhcmFtIHsoZnVuY3Rpb24odGhpczpQbGF5ZXIsICopOiB2b2lkfHtyZXNvbHZlOiBmdW5jdGlvbiwgcmVqZWN0OiBmdW5jdGlvbn0pfSBjYWxsYmFja1xuICogICAgICAgIFRoZSBjYWxsYmFjayB0byBjYWxsIG9yIGFuIG9iamVjdCB3aXRoIHJlc29sdmUgYW5kIHJlamVjdCBmdW5jdGlvbnMgZm9yIGEgcHJvbWlzZS5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gc3RvcmVDYWxsYmFjayhwbGF5ZXIsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIHZhciBwbGF5ZXJDYWxsYmFja3MgPSBjYWxsYmFja01hcC5nZXQocGxheWVyLmVsZW1lbnQpIHx8IHt9O1xuXG4gIGlmICghKG5hbWUgaW4gcGxheWVyQ2FsbGJhY2tzKSkge1xuICAgIHBsYXllckNhbGxiYWNrc1tuYW1lXSA9IFtdO1xuICB9XG5cbiAgcGxheWVyQ2FsbGJhY2tzW25hbWVdLnB1c2goY2FsbGJhY2spO1xuICBjYWxsYmFja01hcC5zZXQocGxheWVyLmVsZW1lbnQsIHBsYXllckNhbGxiYWNrcyk7XG59XG4vKipcbiAqIEdldCB0aGUgY2FsbGJhY2tzIGZvciBhIHBsYXllciBhbmQgZXZlbnQgb3IgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7UGxheWVyfSBwbGF5ZXIgVGhlIHBsYXllciBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWV0aG9kIG9yIGV2ZW50IG5hbWVcbiAqIEByZXR1cm4ge2Z1bmN0aW9uW119XG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2FsbGJhY2tzKHBsYXllciwgbmFtZSkge1xuICB2YXIgcGxheWVyQ2FsbGJhY2tzID0gY2FsbGJhY2tNYXAuZ2V0KHBsYXllci5lbGVtZW50KSB8fCB7fTtcbiAgcmV0dXJuIHBsYXllckNhbGxiYWNrc1tuYW1lXSB8fCBbXTtcbn1cbi8qKlxuICogUmVtb3ZlIGEgc3RvcmVkIGNhbGxiYWNrIGZvciBhIG1ldGhvZCBvciBldmVudCBmb3IgYSBwbGF5ZXIuXG4gKlxuICogQHBhcmFtIHtQbGF5ZXJ9IHBsYXllciBUaGUgcGxheWVyIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtZXRob2Qgb3IgZXZlbnQgbmFtZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgc3BlY2lmaWMgY2FsbGJhY2sgdG8gcmVtb3ZlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2FzIHRoaXMgdGhlIGxhc3QgY2FsbGJhY2s/XG4gKi9cblxuZnVuY3Rpb24gcmVtb3ZlQ2FsbGJhY2socGxheWVyLCBuYW1lLCBjYWxsYmFjaykge1xuICB2YXIgcGxheWVyQ2FsbGJhY2tzID0gY2FsbGJhY2tNYXAuZ2V0KHBsYXllci5lbGVtZW50KSB8fCB7fTtcblxuICBpZiAoIXBsYXllckNhbGxiYWNrc1tuYW1lXSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIElmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZCwgcmVtb3ZlIGFsbCBjYWxsYmFja3MgZm9yIHRoZSBldmVudFxuXG5cbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHBsYXllckNhbGxiYWNrc1tuYW1lXSA9IFtdO1xuICAgIGNhbGxiYWNrTWFwLnNldChwbGF5ZXIuZWxlbWVudCwgcGxheWVyQ2FsbGJhY2tzKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IHBsYXllckNhbGxiYWNrc1tuYW1lXS5pbmRleE9mKGNhbGxiYWNrKTtcblxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgcGxheWVyQ2FsbGJhY2tzW25hbWVdLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBjYWxsYmFja01hcC5zZXQocGxheWVyLmVsZW1lbnQsIHBsYXllckNhbGxiYWNrcyk7XG4gIHJldHVybiBwbGF5ZXJDYWxsYmFja3NbbmFtZV0gJiYgcGxheWVyQ2FsbGJhY2tzW25hbWVdLmxlbmd0aCA9PT0gMDtcbn1cbi8qKlxuICogUmV0dXJuIHRoZSBmaXJzdCBzdG9yZWQgY2FsbGJhY2sgZm9yIGEgcGxheWVyIGFuZCBldmVudCBvciBtZXRob2QuXG4gKlxuICogQHBhcmFtIHtQbGF5ZXJ9IHBsYXllciBUaGUgcGxheWVyIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtZXRob2Qgb3IgZXZlbnQgbmFtZS5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgY2FsbGJhY2ssIG9yIGZhbHNlIGlmIHRoZXJlIHdlcmUgbm9uZVxuICovXG5cbmZ1bmN0aW9uIHNoaWZ0Q2FsbGJhY2tzKHBsYXllciwgbmFtZSkge1xuICB2YXIgcGxheWVyQ2FsbGJhY2tzID0gZ2V0Q2FsbGJhY2tzKHBsYXllciwgbmFtZSk7XG5cbiAgaWYgKHBsYXllckNhbGxiYWNrcy5sZW5ndGggPCAxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGNhbGxiYWNrID0gcGxheWVyQ2FsbGJhY2tzLnNoaWZ0KCk7XG4gIHJlbW92ZUNhbGxiYWNrKHBsYXllciwgbmFtZSwgY2FsbGJhY2spO1xuICByZXR1cm4gY2FsbGJhY2s7XG59XG4vKipcbiAqIE1vdmUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50IHRvIGFub3RoZXIgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBvbGRFbGVtZW50IFRoZSBvbGQgZWxlbWVudC5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5ld0VsZW1lbnQgVGhlIG5ldyBlbGVtZW50LlxuICogQHJldHVybi
10130B7dm9pZH1cbiAqL1xuXG5mdW5jdGlvbiBzd2FwQ2FsbGJhY2tzKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgdmFyIHBsYXllckNhbGxiYWNrcyA9IGNhbGxiYWNrTWFwLmdldChvbGRFbGVtZW50KTtcbiAgY2FsbGJhY2tNYXAuc2V0KG5ld0VsZW1lbnQsIHBsYXllckNhbGxiYWNrcyk7XG4gIGNhbGxiYWNrTWFwLmRlbGV0ZShvbGRFbGVtZW50KTtcbn1cblxuLyoqXG4gKiBAbW9kdWxlIGxpYi9wb3N0bWVzc2FnZVxuICovXG4vKipcbiAqIFBhcnNlIGEgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHBvc3RNZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgZGF0YSByZWNlaXZlZCBmcm9tIHBvc3RNZXNzYWdlLlxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlTWVzc2FnZURhdGEoZGF0YSkge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgcGFyc2VkLCB0aHJvdyB0aGUgZXJyb3IgYXMgYSB3YXJuaW5nXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBQb3N0IGEgbWVzc2FnZSB0byB0aGUgc3BlY2lmaWVkIHRhcmdldC5cbiAqXG4gKiBAcGFyYW0ge1BsYXllcn0gcGxheWVyIFRoZSBwbGF5ZXIgb2JqZWN0IHRvIHVzZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgVGhlIEFQSSBtZXRob2QgdG8gY2FsbC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXMgVGhlIHBhcmFtZXRlcnMgdG8gc2VuZCB0byB0aGUgcGxheWVyLlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG5mdW5jdGlvbiBwb3N0TWVzc2FnZShwbGF5ZXIsIG1ldGhvZCwgcGFyYW1zKSB7XG4gIGlmICghcGxheWVyLmVsZW1lbnQuY29udGVudFdpbmRvdyB8fCAhcGxheWVyLmVsZW1lbnQuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBtZXNzYWdlID0ge1xuICAgIG1ldGhvZDogbWV0aG9kXG4gIH07XG5cbiAgaWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbWVzc2FnZS52YWx1ZSA9IHBhcmFtcztcbiAgfSAvLyBJRSA4IGFuZCA5IGRvIG5vdCBzdXBwb3J0IHBhc3NpbmcgbWVzc2FnZXMsIHNvIHN0cmluZ2lmeSB0aGVtXG5cblxuICB2YXIgaWVWZXJzaW9uID0gcGFyc2VGbG9hdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXi4qbXNpZSAoXFxkKykuKiQvLCAnJDEnKSk7XG5cbiAgaWYgKGllVmVyc2lvbiA+PSA4ICYmIGllVmVyc2lvbiA8IDEwKSB7XG4gICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpO1xuICB9XG5cbiAgcGxheWVyLmVsZW1lbnQuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlLCBwbGF5ZXIub3JpZ2luKTtcbn1cbi8qKlxuICogUGFyc2UgdGhlIGRhdGEgcmVjZWl2ZWQgZnJvbSBhIG1lc3NhZ2UgZXZlbnQuXG4gKlxuICogQHBhcmFtIHtQbGF5ZXJ9IHBsYXllciBUaGUgcGxheWVyIHRoYXQgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UuXG4gKiBAcGFyYW0geyhPYmplY3R8c3RyaW5nKX0gZGF0YSBUaGUgbWVzc2FnZSBkYXRhLiBTdHJpbmdzIHdpbGwgYmUgcGFyc2VkIGludG8gSlNPTi5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gcHJvY2Vzc0RhdGEocGxheWVyLCBkYXRhKSB7XG4gIGRhdGEgPSBwYXJzZU1lc3NhZ2VEYXRhKGRhdGEpO1xuICB2YXIgY2FsbGJhY2tzID0gW107XG4gIHZhciBwYXJhbTtcblxuICBpZiAoZGF0YS5ldmVudCkge1xuICAgIGlmIChkYXRhLmV2ZW50ID09PSAnZXJyb3InKSB7XG4gICAgICB2Y
10130XIgcHJvbWlzZXMgPSBnZXRDYWxsYmFja3MocGxheWVyLCBkYXRhLmRhdGEubWV0aG9kKTtcbiAgICAgIHByb21pc2VzLmZvckVhY2goZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgZXJyb3IubmFtZSA9IGRhdGEuZGF0YS5uYW1lO1xuICAgICAgICBwcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgIHJlbW92ZUNhbGxiYWNrKHBsYXllciwgZGF0YS5kYXRhLm1ldGhvZCwgcHJvbWlzZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWxsYmFja3MgPSBnZXRDYWxsYmFja3MocGxheWVyLCBcImV2ZW50OlwiLmNvbmNhdChkYXRhLmV2ZW50KSk7XG4gICAgcGFyYW0gPSBkYXRhLmRhdGE7XG4gIH0gZWxzZSBpZiAoZGF0YS5tZXRob2QpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBzaGlmdENhbGxiYWNrcyhwbGF5ZXIsIGRhdGEubWV0aG9kKTtcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgcGFyYW0gPSBkYXRhLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwocGxheWVyLCBwYXJhbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2sucmVzb2x2ZShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkgey8vIGVtcHR5XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBAbW9kdWxlIGxpYi9lbWJlZFxuICovXG52YXIgb0VtYmVkUGFyYW1ldGVycyA9IFsnYXV0b3BhdXNlJywgJ2F1dG9wbGF5JywgJ2JhY2tncm91bmQnLCAnYnlsaW5lJywgJ2NvbG9yJywgJ2NvbnRyb2xzJywgJ2RudCcsICdoZWlnaHQnLCAnaWQnLCAnaW50ZXJhY3RpdmVfcGFyYW1zJywgJ2tleWJvYXJkJywgJ2xvb3AnLCAnbWF4aGVpZ2h0JywgJ21heHdpZHRoJywgJ211dGVkJywgJ3BsYXlzaW5saW5lJywgJ3BvcnRyYWl0JywgJ3Jlc3BvbnNpdmUnLCAnc3BlZWQnLCAndGV4dHRyYWNrJywgJ3RpdGxlJywgJ3RyYW5zcGFyZW50JywgJ3VybCcsICd3aWR0aCddO1xuLyoqXG4gKiBHZXQgdGhlICdkYXRhLXZpbWVvJy1wcmVmaXhlZCBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudCBhcyBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZGVmYXVsdHM9e31dIFRoZSBkZWZhdWx0IHZhbHVlcyB0byB1c2UuXG4gKiBAcmV0dXJuIHtPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fVxuICovXG5cbmZ1bmN0aW9uIGdldE9FbWJlZFBhcmFtZXRlcnMoZWxlbWVudCkge1xuICB2YXIgZGVmYXVsdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICByZXR1cm4gb0VtYmVkUGFyYW1ldGVycy5yZWR1Y2UoZnVuY3Rpb24gKHBhcmFtcywgcGFyYW0pIHtcbiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtdmltZW8tXCIuY29uY2F0KHBhcmFtKSk7XG5cbiAgICBpZiAodmFsdWUgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICBwYXJhbXNbcGFyYW1dID0gdmFsdWUgPT09ICcnID8gMSA6IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH0sIGRlZmF1bHRzKTtcbn1cbi8qKlxuICogQ3JlYXRlIGFuIGVtYmVkIGZyb20gb0VtYmVkIGRhdGEgaW5zaWRlIGFuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIG9FbWJlZCBkYXRhLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBwdXQgdGhlIGlmcmFtZSBpbi5cbiAqIEByZXR1cm4ge0hUTUxJRnJhbWVFbGVtZW50fSBUaGUgaWZyYW1lIGVtYmVkLlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVtYmVkKF9yZWYsIGVsZW1lbnQpIHtcbiAgdmFyIGh0bWwgPSBfcmVmLmh0bWw7XG5cbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQW4gZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gIH1cblxuICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmltZW8taW5pdGlhbGl6ZWQnKSAhPT0gbnVsbCkge1xuICAgIHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpO1xuICB9XG5cbiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgZWxlbWVudC5hcHBlbmRDaGlsZChkaXYuZmlyc3RDaGlsZCk7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXZpbWVvLWluaXRpYWxpemVkJywgJ3RydWUnKTtcbiAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XG59XG4vKipcbiAqIE1ha2UgYW4gb0VtYmVkIGNhbGwgZm9yIHRoZSBzcGVjaWZpZWQgVVJMLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2aWRlb1VybCBUaGUgdmltZW8uY29tIHVybCBmb3IgdGhlIHZpZGVvLlxuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIFBhcmFtZXRlcnMgdG8gcGFzcyB0byBvRW1iZWQuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50LlxuICogQHJldHVybiB7UHJvbWlzZX1cbiAqL1xuXG5mdW5jdGlvbiBnZXRPRW1iZWREYXRhKHZpZGVvVXJsKSB7XG4gIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgZWxlbWVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmICghaXNWaW1lb1VybCh2aWRlb1VybCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgaXMgbm90IGEgdmltZW8uY29tIHVybC5cIikpO1xuICAgIH1cblxuICAgI
10130HZhciB1cmwgPSBcImh0dHBzOi8vdmltZW8uY29tL2FwaS9vZW1iZWQuanNvbj91cmw9XCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudCh2aWRlb1VybCkpO1xuXG4gICAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkge1xuICAgICAgICB1cmwgKz0gXCImXCIuY29uY2F0KHBhcmFtLCBcIj1cIikuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNbcGFyYW1dKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHhociA9ICdYRG9tYWluUmVxdWVzdCcgaW4gd2luZG93ID8gbmV3IFhEb21haW5SZXF1ZXN0KCkgOiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTtcblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgd2FzIG5vdCBmb3VuZC5cIikpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgaXMgbm90IGVtYmVkZGFibGUuXCIpKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOyAvLyBDaGVjayBhcGkgcmVzcG9uc2UgZm9yIDQwMyBvbiBvZW1iZWRcblxuICAgICAgICBpZiAoanNvbi5kb21haW5fc3RhdHVzX2NvZGUgPT09IDQwMykge1xuICAgICAgICAgIC8vIFdlIHN0aWxsIHdhbnQgdG8gY3JlYXRlIHRoZSBlbWJlZCB0byBnaXZlIHVzZXJzIHZpc3VhbCBmZWVkYmFja1xuICAgICAgICAgIGNyZWF0ZUVtYmVkKGpzb24sIGVsZW1lbnQpO1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgaXMgbm90IGVtYmVkZGFibGUuXCIpKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShqc29uKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0YXR1cyA9IHhoci5zdGF0dXMgPyBcIiAoXCIuY29uY2F0KHhoci5zdGF0dXMsIFwiKVwiKSA6ICcnO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgZW1iZWQgY29kZSBmcm9tIFZpbWVvXCIuY29uY2F0KHN0YXR1cywgXCIuXCIpKSk7XG4gICAgfTtcblxuICAgIHhoci5zZW5kKCk7XG4gIH0pO1xufVxuLyoqXG4gKiBJbml0aWFsaXplIGFsbCBlbWJlZHMgd2l0aGluIGEgc3BlY2lmaWMgZWxlbWVudFxuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtwYXJlbnQ9ZG9jdW1lbnRdIFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gaW5pdGlhbGl6ZUVtYmVkcygpIHtcbiAgdmFyIHBhcmVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZG9jdW1lbnQ7XG4gIHZhciBlbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZpbWVvLWlkXSwgW2RhdGEtdmltZW8tdXJsXScpKTtcblxuICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIGlmICgnY29uc29sZScgaW4gd2luZG93ICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGVyZSB3YXMgYW4gZXJyb3IgY3JlYXRpbmcgYW4gZW1iZWQ6IFwiLmNvbmNhdChlcnJvcikpO1xuICAgIH1cbiAgfTtcblxuICBlbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFNraXAgYW55IHRoYXQgaGF2ZSBkYXRhLXZpbWVvLWRlZmVyXG4gICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmltZW8tZGVmZXInKSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJhbXMgPSBnZXRPRW1iZWRQYXJhbWV0ZXJzKGVsZW1lbnQpO1xuICAgICAgdmFyIHVybCA9IGdldFZpbWVvVXJsKHBhcmFtcyk7XG4gICAgICBnZXRPRW1iZWREYXRhKHVybCwgcGFyYW1zLCBlbGVtZW50KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbWJlZChkYXRhLCBlbGVtZW50KTtcbiAgICAgIH0pLmNhdGNoKGhhbmRsZUVycm9yKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfSk7XG59XG4vKipcbiAqIFJlc2l6ZSBlbWJlZHMgd2hlbiBtZXNzYWdlZCBieSB0aGUgcGxheWVyLlxuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtwYXJlbnQ9ZG9jdW1lbnRdIFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gcmVzaXplRW1iZWRzKCkge1xuICB2YXIgcGFyZW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBkb2N1bWVudDtcblxuICAvLyBQcmV2ZW50IGV4ZWN1dGlvbiBpZiB1c2VycyBpbmNsdWRlIHRoZSBwbGF5ZXIuanMgc2NyaXB0IG11bHRpcGxlIHRpbWVzLlxuICBpZiAod2luZG93LlZpbWVvUGxheWVyUmVzaXplRW1iZWRzXykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdpbmRvdy5WaW1lb1BsYXllclJlc2l6ZUVtYmVkc18gPSB0cnVlO1xuXG4gIHZhciBvbk1lc3NhZ2UgPSBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWlzVmltZW9VcmwoZXZlbnQub3JpZ2luKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gJ3NwYWNlY2hhbmdlJyBpcyBmaXJlZCBvbmx5IG9uIGVtYmVkcyB3aXRoIGNhcmRzXG5cblxuICAgIGlmICghZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhLmV2ZW50ICE9PSAnc3BhY2VjaGFuZ2UnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGlmcmFtZXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChpZnJhbWVzW2ldLmNvbnRlbn
10130RXaW5kb3cgIT09IGV2ZW50LnNvdXJjZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gQ2hhbmdlIHBhZGRpbmctYm90dG9tIG9mIHRoZSBlbmNsb3NpbmcgZGl2IHRvIGFjY29tbW9kYXRlXG4gICAgICAvLyBjYXJkIGNhcm91c2VsIHdpdGhvdXQgZGlzdG9ydGluZyBhc3BlY3QgcmF0aW9cblxuXG4gICAgICB2YXIgc3BhY2UgPSBpZnJhbWVzW2ldLnBhcmVudEVsZW1lbnQ7XG4gICAgICBzcGFjZS5zdHlsZS5wYWRkaW5nQm90dG9tID0gXCJcIi5jb25jYXQoZXZlbnQuZGF0YS5kYXRhWzBdLmJvdHRvbSwgXCJweFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG9uTWVzc2FnZSk7XG59XG4vKipcbiAqIEFkZCBjaGFwdGVycyB0byBleGlzdGluZyBtZXRhZGF0YSBmb3IgR29vZ2xlIFNFT1xuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtwYXJlbnQ9ZG9jdW1lbnRdIFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gaW5pdEFwcGVuZFZpZGVvTWV0YWRhdGEoKSB7XG4gIHZhciBwYXJlbnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGRvY3VtZW50O1xuXG4gIC8vICBQcmV2ZW50IGV4ZWN1dGlvbiBpZiB1c2VycyBpbmNsdWRlIHRoZSBwbGF5ZXIuanMgc2NyaXB0IG11bHRpcGxlIHRpbWVzLlxuICBpZiAod2luZG93LlZpbWVvU2VvTWV0YWRhdGFBcHBlbmRlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdpbmRvdy5WaW1lb1Nlb01ldGFkYXRhQXBwZW5kZWQgPSB0cnVlO1xuXG4gIHZhciBvbk1lc3NhZ2UgPSBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWlzVmltZW9VcmwoZXZlbnQub3JpZ2luKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0gcGFyc2VNZXNzYWdlRGF0YShldmVudC5kYXRhKTtcblxuICAgIGlmICghZGF0YSB8fCBkYXRhLmV2ZW50ICE9PSAncmVhZHknKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGlmcmFtZXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZnJhbWUgPSBpZnJhbWVzW2ldOyAvLyBJbml0aWF0ZSBhcHBlbmRWaWRlb01ldGFkYXRhIGlmIGlmcmFtZSBpcyBhIFZpbWVvIGVtYmVkXG5cbiAgICAgIHZhciBpc1ZhbGlkTWVzc2FnZVNvdXJjZSA9IGlmcmFtZS5jb250ZW50V2luZG93ID09PSBldmVudC5zb3VyY2U7XG5cbiAgICAgIGlmIChpc1ZpbWVvRW1iZWQoaWZyYW1lLnNyYykgJiYgaXNWYWxpZE1lc3NhZ2VTb3VyY2UpIHtcbiAgICAgICAgdmFyIHBsYXllciA9IG5ldyBQbGF5ZXIkMShpZnJhbWUpO1xuICAgICAgICBwbGF5ZXIuY2FsbE1ldGhvZCgnYXBwZW5kVmlkZW9NZXRhZGF0YScsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xufVxuXG4vKiBNSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIFNpbmRyZSBTb3JodXMgPHNpbmRyZXNvcmh1c0BnbWFpbC5jb20+IChzaW5kcmVzb3JodXMuY29tKVxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5UZXJtcyAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNjcmVlbmZ1bGwoKSB7XG4gIHZhciBmbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsO1xuICAgIHZhciBmbk1hcCA9IFtbJ3JlcXVlc3RGdWxsc2NyZWVuJywgJ2V4aXRGdWxsc2NyZWVuJywgJ2Z1bGxzY3JlZW5FbGVtZW50JywgJ2Z1bGxzY3JlZW5FbmFibGVkJywgJ2Z1bGxzY3JlZW5jaGFuZ2UnLCAnZnVsbHNjcmVlbmVycm9yJ10sIC8vIE5ldyBXZWJLaXRcbiAgICBbJ3dlYmtpdFJlcXVlc3RGdWxsc2NyZWVuJywgJ3dlYmtpdEV4aXRGdWxsc2NyZWVuJywgJ3dlYmtpdEZ1bGxzY3JlZW5FbGVtZW50JywgJ3dlYmtpdEZ1bGxzY3JlZW5FbmFibGVkJywgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJ10sIC8vIE9sZCBXZWJLaXRcbiAgICBbJ3dlYmtpdFJlcXVlc3RGdWxsU2NyZWVuJywgJ3dlYmtpdENhbmNlbEZ1bGxTY3JlZW4nLCA
10130nd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50JywgJ3dlYmtpdENhbmNlbEZ1bGxTY3JlZW4nLCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InXSwgWydtb3pSZXF1ZXN0RnVsbFNjcmVlbicsICdtb3pDYW5jZWxGdWxsU2NyZWVuJywgJ21vekZ1bGxTY3JlZW5FbGVtZW50JywgJ21vekZ1bGxTY3JlZW5FbmFibGVkJywgJ21vemZ1bGxzY3JlZW5jaGFuZ2UnLCAnbW96ZnVsbHNjcmVlbmVycm9yJ10sIFsnbXNSZXF1ZXN0RnVsbHNjcmVlbicsICdtc0V4aXRGdWxsc2NyZWVuJywgJ21zRnVsbHNjcmVlbkVsZW1lbnQnLCAnbXNGdWxsc2NyZWVuRW5hYmxlZCcsICdNU0Z1bGxzY3JlZW5DaGFuZ2UnLCAnTVNGdWxsc2NyZWVuRXJyb3InXV07XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBsID0gZm5NYXAubGVuZ3RoO1xuICAgIHZhciByZXQgPSB7fTtcblxuICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YWwgPSBmbk1hcFtpXTtcblxuICAgICAgaWYgKHZhbCAmJiB2YWxbMV0gaW4gZG9jdW1lbnQpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHJldFtmbk1hcFswXVtpXV0gPSB2YWxbaV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSgpO1xuXG4gIHZhciBldmVudE5hbWVNYXAgPSB7XG4gICAgZnVsbHNjcmVlbmNoYW5nZTogZm4uZnVsbHNjcmVlbmNoYW5nZSxcbiAgICBmdWxsc2NyZWVuZXJyb3I6IGZuLmZ1bGxzY3JlZW5lcnJvclxuICB9O1xuICB2YXIgc2NyZWVuZnVsbCA9IHtcbiAgICByZXF1ZXN0OiBmdW5jdGlvbiByZXF1ZXN0KGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZS
10130hmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBvbkZ1bGxTY3JlZW5FbnRlcmVkID0gZnVuY3Rpb24gb25GdWxsU2NyZWVuRW50ZXJlZCgpIHtcbiAgICAgICAgICBzY3JlZW5mdWxsLm9mZignZnVsbHNjcmVlbmNoYW5nZScsIG9uRnVsbFNjcmVlbkVudGVyZWQpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzY3JlZW5mdWxsLm9uKCdmdWxsc2NyZWVuY2hhbmdlJywgb25GdWxsU2NyZWVuRW50ZXJlZCk7XG4gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgdmFyIHJldHVyblByb21pc2UgPSBlbGVtZW50W2ZuLnJlcXVlc3RGdWxsc2NyZWVuXSgpO1xuXG4gICAgICAgIGlmIChyZXR1cm5Qcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHJldHVyblByb21pc2UudGhlbihvbkZ1bGxTY3JlZW5FbnRlcmVkKS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV4aXQ6IGZ1bmN0aW9uIGV4aXQoKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAoIXNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvbkZ1bGxTY3JlZW5FeGl0ID0gZnVuY3Rpb24gb25GdWxsU2NyZWVuRXhpdCgpIHtcbiAgICAgICAgICBzY3JlZW5mdWxsLm9mZignZnVsbHNjcmVlbmNoYW5nZScsIG9uRnVsbFNjcmVlbkV4aXQpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzY3JlZW5mdWxsLm9uKCdmdWxsc2NyZWVuY2hhbmdlJywgb25GdWxsU2NyZWVuRXhpdCk7XG4gICAgICAgIHZhciByZXR1cm5Qcm9taXNlID0gZG9jdW1lbnRbZm4uZXhpdEZ1bGxzY3JlZW5dKCk7XG5cbiAgICAgICAgaWYgKHJldHVyblByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcmV0dXJuUHJvbWlzZS50aGVuKG9uRnVsbFNjcmVlbkV4aXQpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb246IGZ1bmN0aW9uIG9uKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgdmFyIGV2ZW50TmFtZSA9IGV2ZW50TmFtZU1hcFtldmVudF07XG5cbiAgICAgIGlmIChldmVudE5hbWUpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9mZjogZnVuY3Rpb24gb2ZmKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgdmFyIGV2ZW50TmFtZSA9IGV2ZW50TmFtZU1hcFtldmVudF07XG5cbiAgICAgIGlmIChldmVudE5hbWUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNjcmVlbmZ1bGwsIHtcbiAgICBpc0Z1bGxzY3JlZW46IHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gQm9vbGVhbihkb2N1bWVudFtmbi5mdWxsc2NyZWVuRWxlbWVudF0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZWxlbWVudDoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnRbZm4uZnVsbHNjcmVlbkVsZW1lbnRdO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNFbmFibGVkOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIC8vIENvZXJjZSB0byBib29sZWFuIGluIGNhc2Ugb2Ygb2xkIFdlYktpdFxuICAgICAgICByZXR1cm4gQm9vbGVhbihkb2N1bWVudFtmbi5mdWxsc2NyZWVuRW5hYmxlZF0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzY3JlZW5mdWxsO1xufVxuXG52YXIgcGxheWVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbnZhciByZWFkeU1hcCA9IG5ldyBXZWFrTWFwKCk7XG52YXIgc2NyZWVuZnVsbCA9IHt9O1xuXG52YXIgUGxheWVyJDEgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgUGxheWVyLlxuICAgKlxuICAgKiBAcGFyYW0geyhIVE1MSUZyYW1lRWxlbWVudHxIVE1MRWxlbWVudHxzdHJpbmd8alF1ZXJ5KX0gZWxlbWVudCBBIHJlZmVyZW5jZSB0byB0aGUgVmltZW9cbiAgICogICAgICAgIHBsYXllciBpZnJhbWUsIGFuZCBpZCwgb3IgYSBqUXVlcnkgb2JqZWN0LlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIG9FbWJlZCBwYXJhbWV0ZXJzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFuIGVtYmVkIGluIHRoZSBlbGVtZW50LlxuICAgKiBAcmV0dXJuIHtQbGF5ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBQbGF5ZXIoZWxlbWVudCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGxheWVyKTtcblxuICAgIC8qIGdsb2JhbCBqUXVlcnkgKi9cbiAgICBpZiAod2luZG93LmpRdWVyeSAmJiBlbGVtZW50IGluc3RhbmNlb2YgalF1ZXJ5KSB7XG4gICAgICBpZiAoZWxlbWVudC5sZW5ndGggPiAxICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0EgalF1ZXJ5IG9iamVjdCB3aXRoIG11bHRpcGxlIGVsZW1lbnRzIHdhcyBwYXNzZWQsIHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50LicpO1xuICAgICAgfVxuXG4gICAgICBlbGVtZW50ID0gZWxlbWVudFswXTtcbiAgICB9IC8vIEZpbmQgYW4gZWxlbWVudCBieSBJRFxuXG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50KTtcbiAgICB9IC8vIE5vdCBhbiBlbGVtZW50IVxuXG5cbiAgICBpZiAoIWlzRG9tRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBlaXRoZXIgYSB2YWxpZCBlbGVtZW50IG9yIGEgdmFsaWQgaWQuJyk7XG4gICAgfSAvLyBBbHJlYWR5IGluaXRpYWxpemVkIGFuIGVtYmVkIGluIHRoaXMgZGl2LCBzbyBncmFiIHRoZSBpZnJhbWVcblxuXG4gICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgIT09ICdJRlJBTUUnKSB7XG4gICAgICB2Y
10130XIgaWZyYW1lID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKTtcblxuICAgICAgaWYgKGlmcmFtZSkge1xuICAgICAgICBlbGVtZW50ID0gaWZyYW1lO1xuICAgICAgfVxuICAgIH0gLy8gaWZyYW1lIHVybCBpcyBub3QgYSBWaW1lbyB1cmxcblxuXG4gICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdJRlJBTUUnICYmICFpc1ZpbWVvVXJsKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzcmMnKSB8fCAnJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHBsYXllciBlbGVtZW50IHBhc3NlZCBpc27igJl0IGEgVmltZW8gZW1iZWQuJyk7XG4gICAgfSAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcGxheWVyIG9iamVjdCBpbiB0aGUgbWFwLCByZXR1cm4gdGhhdFxuXG5cbiAgICBpZiAocGxheWVyTWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuIHBsYXllck1hcC5nZXQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fd2luZG93ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcmlnaW4gPSAnKic7XG4gICAgdmFyIHJlYWR5UHJvbWlzZSA9IG5ldyBucG9fc3JjKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9vbk1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFpc1ZpbWVvVXJsKGV2ZW50Lm9yaWdpbikgfHwgX3RoaXMuZWxlbWVudC5jb250ZW50V2luZG93ICE9PSBldmVudC5zb3VyY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMub3JpZ2luID09PSAnKicpIHtcbiAgICAgICAgICBfdGhpcy5vcmlnaW4gPSBldmVudC5vcmlnaW47XG4gICAgICAgIH1cblxuICAgICAgICB2Y
10130XIgZGF0YSA9IHBhcnNlTWVzc2FnZURhdGEoZXZlbnQuZGF0YSk7XG4gICAgICAgIHZhciBpc0Vycm9yID0gZGF0YSAmJiBkYXRhLmV2ZW50ID09PSAnZXJyb3InO1xuICAgICAgICB2YXIgaXNSZWFkeUVycm9yID0gaXNFcnJvciAmJiBkYXRhLmRhdGEgJiYgZGF0YS5kYXRhLm1ldGhvZCA9PT0gJ3JlYWR5JztcblxuICAgICAgICBpZiAoaXNSZWFkeUVycm9yKSB7XG4gICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICBlcnJvci5uYW1lID0gZGF0YS5kYXRhLm5hbWU7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXNSZWFkeUV2ZW50ID0gZGF0YSAmJiBkYXRhLmV2ZW50ID09PSAncmVhZHknO1xuICAgICAgICB2YXIgaXNQaW5nUmVzcG9uc2UgPSBkYXRhICYmIGRhdGEubWV0aG9kID09PSAncGluZyc7XG5cbiAgICAgICAgaWYgKGlzUmVhZHlFdmVudCB8fCBpc1BpbmdSZXNwb25zZSkge1xuICAgICAgICAgIF90aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXJlYWR5JywgJ3RydWUnKTtcblxuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzRGF0YShfdGhpcywgZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBfdGhpcy5fb25NZXNzYWdlKTtcblxuICAgICAgaWYgKF90aGlzLmVsZW1lbnQubm9kZU5hbWUgIT09ICdJRlJBTUUnKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBnZXRPRW1iZWRQYXJhbWV0ZXJzKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICB2Y
10130XIgdXJsID0gZ2V0VmltZW9VcmwocGFyYW1zKTtcbiAgICAgICAgZ2V0T0VtYmVkRGF0YSh1cmwsIHBhcmFtcywgZWxlbWVudCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgIHZhciBpZnJhbWUgPSBjcmVhdGVFbWJlZChkYXRhLCBlbGVtZW50KTsgLy8gT3ZlcndyaXRlIGVsZW1lbnQgd2l0aCB0aGUgbmV3IGlmcmFtZSxcbiAgICAgICAgICAvLyBidXQgc3RvcmUgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBlbGVtZW50XG5cbiAgICAgICAgICBfdGhpcy5lbGVtZW50ID0gaWZyYW1lO1xuICAgICAgICAgIF90aGlzLl9vcmlnaW5hbEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgIHN3YXBDYWxsYmFja3MoZWxlbWVudCwgaWZyYW1lKTtcbiAgICAgICAgICBwbGF5ZXJNYXAuc2V0KF90aGlzLmVsZW1lbnQsIF90aGlzKTtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH1cbiAgICB9KTsgLy8gU3RvcmUgYSBjb3B5IG9mIHRoaXMgUGxheWVyIGluIHRoZSBtYXBcblxuICAgIHJlYWR5TWFwLnNldCh0aGlzLCByZWFkeVByb21pc2UpO1xuICAgIHBsYXllck1hcC5zZXQodGhpcy5lbGVtZW50LCB0aGlzKTsgLy8gU2VuZCBhIHBpbmcgdG8gdGhlIGlmcmFtZSBzbyB0aGUgcmVhZHkgcHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIGlmXG4gICAgLy8gdGhlIHBsYXllciBpcyBhbHJlYWR5IHJlYWR5LlxuXG4gICAgaWYgKHRoaXMuZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lGUkFNRScpIHtcbiAgICAgIHBvc3RNZXNzYWdlKHRoaXMsICdwaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKHNjcmVlbmZ1bGwuaXNFbmFibGVkKSB7XG4gICAgICB2Y
10130XIgZXhpdEZ1bGxzY3JlZW4gPSBmdW5jdGlvbiBleGl0RnVsbHNjcmVlbigpIHtcbiAgICAgICAgcmV0dXJuIHNjcmVlbmZ1bGwuZXhpdCgpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgc3RvcmVDYWxsYmFjayhfdGhpcywgJ2V2ZW50OmV4aXRGdWxsc2NyZWVuJywgZXhpdEZ1bGxzY3JlZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNhbGxiYWNrKF90aGlzLCAnZXZlbnQ6ZXhpdEZ1bGxzY3JlZW4nLCBleGl0RnVsbHNjcmVlbik7XG4gICAgICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cblxuICAgICAgICBfdGhpcy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBvc3RNZXNzYWdlKF90aGlzLCAnZnVsbHNjcmVlbmNoYW5nZScsIHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBzY3JlZW5mdWxsLm9uKCdmdWxsc2NyZWVuY2hhbmdlJywgdGhpcy5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHByb21pc2UgZm9yIGEgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgQVBJIG1ldGhvZCB0byBjYWxsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2FyZ3M9e31dIEFyZ3VtZW50cyB0byBzZW5kIHZpYSBwb3N0TWVzc2FnZS5cbiAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoUGxheWVyLCBbe1xuICAgIGtleTogXCJjYWxsTWV0aG9kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhbGxNZXRob2QobmFtZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIHJldHVybiBuZXcgbnBvX3NyYyhmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIC8vIFdlIGFyZSBzdG9yaW5nIHRoZSByZXNvbHZlL3JlamVjdCBoYW5kbGVycyB0byBjYWxsIGxhdGVyLCBzbyB3ZVxuICAgICAgICAvLyBjYW7igJl0IHJldHVybiBoZXJlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9hbHdheXMtcmV0dXJuXG4gICAgICAgIHJldHVybiBfdGhpczIucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzdG9yZUNhbGxiYWNrKF90aGlzMiwgbmFtZSwge1xuICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgIHJlamVjdDogcmVqZWN0XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcG9zdE1lc3NhZ2UoX3RoaXMyLCBuYW1lLCBhcmdzKTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgYSBwcm9taXNlIGZvciB0aGUgdmFsdWUgb2YgYSBwbGF5ZXIgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgcHJvcGVydHkgbmFtZVxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IG5wb19zcmMoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBuYW1lID0gZ2V0TWV0aG9kTmFtZShuYW1lLCAnZ2V0Jyk7IC8vIFdlIGFyZSBzdG9yaW5nIHRoZSByZXNvbHZlL3JlamVjdCBoYW5kbGVycyB0byBjYWxsIGxhdGVyLCBzbyB3ZVxuICAgICAgICAvLyBjYW7igJl0IHJldHVybiBoZXJlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9hbHdheXMtcmV0dXJuXG5cbiAgICAgICAgcmV0dXJuIF90aGlzMy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHN0b3JlQ2FsbGJhY2soX3RoaXMzLCBuYW1lLCB7XG4gICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0OiByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwb3N0TWVzc2FnZShfdGhpczMsIG5hbWUpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBhIHByb21pc2UgZm9yIHNldHRpbmcgdGhlIHZhbHVlIG9mIGEgcGxheWVyIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIEFQSSBtZXRob2QgdG8gY2FsbC5cbiAgICAgKiBAcGFyYW0ge21peGVkfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgICB2Y
10130XIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgcmV0dXJuIG5ldyBucG9fc3JjKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgbmFtZSA9IGdldE1ldGhvZE5hbWUobmFtZSwgJ3NldCcpO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlcmUgbXVzdCBiZSBhIHZhbHVlIHRvIHNldC4nKTtcbiAgICAgICAgfSAvLyBXZSBhcmUgc3RvcmluZyB0aGUgcmVzb2x2ZS9yZWplY3QgaGFuZGxlcnMgdG8gY2FsbCBsYXRlciwgc28gd2VcbiAgICAgICAgLy8gY2Fu4oCZdCByZXR1cm4gaGVyZS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvYWx3YXlzLXJldHVyblxuXG5cbiAgICAgICAgcmV0dXJuIF90aGlzNC5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHN0b3JlQ2FsbGJhY2soX3RoaXM0LCBuYW1lLCB7XG4gICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0OiByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwb3N0TWVzc2FnZShfdGhpczQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuIFdpbGwgY2FsbCB0aGVcbiAgICAgKiBjYWxsYmFjayB3aXRoIGEgc2luZ2xlIHBhcmFtZXRlciwgYGRhdGFgLCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhIGZvclxuICAgICAqIHRoYXQgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopfSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBldmVudCBmaXJlcy5cbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwib25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb24oZXZlbnROYW1lLCBjYWxsYmFjaykge1xuICAgICAgaWYgKCFldmVudE5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhbiBldmVudCBuYW1lLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYSBjYWxsYmFjayBmdW5jdGlvbi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgICAgfVxuXG4gICAgICB2Y
10130XIgY2FsbGJhY2tzID0gZ2V0Q2FsbGJhY2tzKHRoaXMsIFwiZXZlbnQ6XCIuY29uY2F0KGV2ZW50TmFtZSkpO1xuXG4gICAgICBpZiAoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmNhbGxNZXRob2QoJ2FkZEV2ZW50TGlzdGVuZXInLCBldmVudE5hbWUpLmNhdGNoKGZ1bmN0aW9uICgpIHsvLyBJZ25vcmUgdGhlIGVycm9yLiBUaGVyZSB3aWxsIGJlIGFuIGVycm9yIGV2ZW50IGZpcmVkIHRoYXRcbiAgICAgICAgICAvLyB3aWxsIHRyaWdnZXIgdGhlIGVycm9yIGNhbGxiYWNrIGlmIHRoZXkgYXJlIGxpc3RlbmluZy5cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHN0b3JlQ2FsbGJhY2sodGhpcywgXCJldmVudDpcIi5jb25jYXQoZXZlbnROYW1lKSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuIFdpbGwgcmVtb3ZlIGFsbFxuICAgICAqIGxpc3RlbmVycyBmb3IgdGhhdCBldmVudCBpZiBhIGBjYWxsYmFja2AgaXNu4oCZdCBwYXNzZWQsIG9yIG9ubHkgdGhhdFxuICAgICAqIHNwZWNpZmljIGNhbGxiYWNrIGlmIGl0IGlzIHBhc3NlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIHNwZWNpZmljIGNhbGxiYWNrIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwib2ZmXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9mZihldmVudE5hbWUsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWV2ZW50TmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNzIGFuIGV2ZW50IG5hbWUuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsYmFjayAmJiB0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGxhc3RDYWxsYmFjayA9IHJlbW92ZUNhbGxiYWNrKHRoaXMsIFwiZXZlbnQ6XCIuY29uY2F0KGV2ZW50TmFtZSksIGNhbGxiYWNrKTsgLy8gSWYgdGhlcmUgYXJlIG5vIGNhbGxiYWNrcyBsZWZ0LCByZW1vdmUgdGhlIGxpc3RlbmVyXG5cbiAgICAgIGlmIChsYXN0Q2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5jYWxsTWV0aG9kKCdyZW1vdmVFdmVudExpc3RlbmVyJywgZXZlbnROYW1lKS5jYXRjaChmdW5jdGlvbiAoZSkgey8vIElnbm9yZSB0aGUgZXJyb3IuIFRoZXJlIHdpbGwgYmUgYW4gZXJyb3IgZXZlbnQgZmlyZWQgdGhhdFxuICAgICAgICAgIC8vIHdpbGwgdHJpZ2dlciB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhleSBhcmUgbGlzdGVuaW5nLlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGxvYWQgYSBuZXcgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBMb2FkVmlkZW9Qcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIHZpZGVvIHdpdGggdGhpcyBpZCBvciB1cmwgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cbiAgICAgKiBAcmVqZWN0IHtUeXBlRXJyb3J9IFRoZSBpZCB3YXMgbm90IGEgbnVtYmVyLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogTG9hZCBhIG5ldyB2aWRlbyBpbnRvIHRoaXMgZW1iZWQuIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgaWZcbiAgICAgKiB0aGUgdmlkZW8gaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCwgb3IgaXQgd2lsbCBiZSByZWplY3RlZCBpZiBpdCBjb3VsZFxuICAgICAqIG5vdCBiZSBsb2FkZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd8b2JqZWN0fSBvcHRpb25zIFRoZSBpZCBvZiB0aGUgdmlkZW8sIHRoZSB1cmwgb2YgdGhlIHZpZGVvLCBvciBhbiBvYmplY3Qgd2l0aCBlbWJlZCBvcHRpb25zLlxuICAgICAqIEByZXR1cm4ge0xvYWRWaWRlb1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJsb2FkVmlkZW9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZFZpZGVvKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ2xvYWRWaWRlbycsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gcGVyZm9ybSBhbiBhY3Rpb24gd2hlbiB0aGUgUGxheWVyIGlzIHJlYWR5LlxuICAgICAqXG4gICAgICogQHRvZG8gZG9jdW1lbnQgZXJyb3JzXG4gICAgICogQHByb21pc2UgTG9hZFZpZGVvUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHt2b2lkfVxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gdGhlIHBsYXllciBpZnJhbWUgaGFzIGluaXRpYWxpemVkLiBZb3UgZG8gbm90XG4gICAgICogbmVlZCB0byB3YWl0IGZvciBgcmVhZHlgIHRvIHRyaWdnZXIgdG8gYmVnaW4gYWRkaW5nIGV2ZW50IGxpc3RlbmVyc1xuICAgICAqIG9yIGNhbGxpbmcgb3RoZXIgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1JlYWR5UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInJlYWR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWR5KCkge1xuICAgICAgdmFyIHJlYWR5UHJvbWlzZSA9IHJlYWR5TWFwLmdldCh0aGlzKSB8fCBuZXcgbnBvX3NyYyhmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vua25vd24gcGxheWVyLiBQcm9iYWJseSB1bmxvYWRlZC4nKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBucG9fc3JjLnJlc29sdmUocmVhZHlQcm9taXNlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGFkZCBhIGN1ZSBwb2ludCB0byB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgQWRkQ3VlUG9pbnRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3N0cmluZ30gVGhlIGlkIG9mIHRoZSBjdWUgcG9pbnQgdG8gdXNlIGZvciByZW1vdmVDdWVQb2ludC5cbiAgICAgKiBAcmVqZWN0IHtSYW5nZUVycm9yfSB0aGUgdGltZSB3YXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZVxuICAgICAqICAgICAgICAgdmlkZW/igJlzIGR1cmF0aW9uLlxuICAgICAqIEByZWplY3Qge1Vuc3VwcG9ydGVkRXJyb3J9IEN1ZSBwb2ludHMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgY3VycmVudFxuICAgICAqICAgICAgICAgcGxheWVyIG9yIGJyb3dzZXIuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSBjdWUgcG9pbnQgdG8gdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIFRoZSB0aW1lIGZvciB0aGUgY3VlIHBvaW50LlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbZGF0YV0gQXJiaXRyYXJ5IGRhdGEgdG8gYmUgcmV0dXJuZWQgd2l0aCB0aGUgY3VlIHBvaW50LlxuICAgICAqIEByZXR1cm4ge0FkZEN1ZVBvaW50UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFkZEN1ZVBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZEN1ZVBvaW50KHRpbWUpIHtcbiAgICAgIHZhciBkYXRhID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIHJldHVybi
10130B0aGlzLmNhbGxNZXRob2QoJ2FkZEN1ZVBvaW50Jywge1xuICAgICAgICB0aW1lOiB0aW1lLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHJlbW92ZSBhIGN1ZSBwb2ludCBmcm9tIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBBZGRDdWVQb2ludFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7c3RyaW5nfSBUaGUgaWQgb2YgdGhlIGN1ZSBwb2ludCB0aGF0IHdhcyByZW1vdmVkLlxuICAgICAqIEByZWplY3Qge0ludmFsaWRDdWVQb2ludH0gVGhlIGN1ZSBwb2ludCB3aXRoIHRoZSBzcGVjaWZpZWQgaWQgd2FzIG5vdFxuICAgICAqICAgICAgICAgZm91bmQuXG4gICAgICogQHJlamVjdCB7VW5zdXBwb3J0ZWRFcnJvcn0gQ3VlIHBvaW50cyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICAgICAgICBwbGF5ZXIgb3IgYnJvd3Nlci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIGN1ZSBwb2ludCBmcm9tIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgaWQgb2YgdGhlIGN1ZSBwb2ludCB0byByZW1vdmUuXG4gICAgICogQHJldHVybiB7UmVtb3ZlQ3VlUG9pbnRQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlQ3VlUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlQ3VlUG9pbnQoaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ3JlbW92ZUN1ZVBvaW50JywgaWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgdGV4dCB0cmFjayBvbiBhIHZpZGVvLlxuICAgICAqXG4gICAgICogQHR5cGVkZWYge09iamVjdH0gVmltZW9UZXh0VHJhY2tcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gbGFuZ3VhZ2UgVGhlIElTTyBsYW5ndWFnZSBjb2RlLlxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBraW5kIFRoZSBraW5kIG9mIHRyYWNrIGl0IGlzIChjYXB0aW9ucyBvciBzdWJ0aXRsZXMpLlxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsYWJlbCBUaGUgaHVtYW7igJByZWFkYWJsZSBsYWJlbCBmb3IgdGhlIHRyYWNrLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGVuYWJsZSBhIHRleHQgdHJhY2suXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBFbmFibGVUZXh0VHJhY2tQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge1ZpbWVvVGV4dFRyYWNrfSBUaGUgdGV4dCB0cmFjayB0aGF0IHdhcyBlbmFibGVkLlxuICAgICAqIEByZWplY3Qge0ludmFsaWRUcmFja0xhbmd1YWdlRXJyb3J9IE5vIHRyYWNrIHdhcyBhdmFpbGFibGUgd2l0aCB0aGVcbiAgICAgKiAgICAgICAgIHNwZWNpZmllZCBsYW5ndWFnZS5cbiAgICAgKiBAcmVqZWN0IHtJbnZhbGlkVHJhY2tFcnJvcn0gTm8gdHJhY2sgd2FzIGF2YWlsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWRcbiAgICAgKiAgICAgICAgIGxhbmd1YWdlIGFuZCBraW5kLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIHRoZSB0ZXh0IHRyYWNrIHdpdGggdGhlIHNwZWNpZmllZCBsYW5ndWFnZSwgYW5kIG9wdGlvbmFsbHkgdGhlXG4gICAgICogc3BlY2lmaWVkIGtpbmQgKGNhcHRpb25zIG9yIHN1YnRpdGxlcykuXG4gICAgICpcbiAgICAgKiBXaGVuIHNldCB2aWEgdGhlIEFQSSwgdGhlIHRyYWNrIGxhbmd1YWdlIHdpbGwgbm90IGNoYW5nZSB0aGUgdmlld2Vy4oCZc1xuICAgICAqIHN0b3JlZCBwcmVmZXJlbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlIFRoZSB0d2/igJBsZXR0ZXIgbGFuZ3VhZ2UgY29kZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tpbmRdIFRoZSBraW5kIG9mIHRyYWNrIHRvIGVuYWJsZSAoY2FwdGlvbnMgb3Igc3VidGl0bGVzKS5cbiAgICAgKiBAcmV0dXJuIHtFbmFibGVUZXh0VHJhY2tQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZW5hYmxlVGV4dFRyYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuYWJsZVRleHRUcmFjayhsYW5ndWFnZSwga2luZCkge1xuICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNzIGEgbGFuZ3VhZ2UuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ2VuYWJsZVRleHRUcmFjaycsIHtcbiAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICBraW5kOiBraW5kXG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGRpc2FibGUgdGhlIGFjdGl2ZSB0ZXh0IHRyYWNrLlxuICAgICAqXG4gICAgICogQHByb21pc2UgRGlzYWJsZVRleHRUcmFja1Byb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7dm9pZH0gVGhlIHRyYWNrIHdhcyBkaXNhYmxlZC5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgdGhlIGN1cnJlbnRseS1hY3RpdmUgdGV4dCB0cmFjay5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0Rpc2FibGVUZXh0VHJhY2tQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZGlzYWJsZVRleHRUcmFja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkaXNhYmxlVGV4dFRyYWNrKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbE1ldGhvZCgnZGlzYWJsZVRleHRUcmFjaycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gcGF1c2UgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgUGF1c2VQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3ZvaWR9IFRoZSB2aWRlbyB3YXMgcGF1c2VkLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogUGF1c2UgdGhlIHZpZGVvIGlmIGl04oCZcyBwbGF5aW5nLlxuICAgICAqXG4gICAgICogQHJldHVybiB7UGF1c2VQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsTWV0aG9kKCdwYXVzZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gcGxheSB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBQbGF5UHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHt2b2lkfSBUaGUgdmlkZW8gd2FzIHBsYXllZC5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFBsYXkgdGhlI
10130HZpZGVvIGlmIGl04oCZcyBwYXVzZWQuICoqTm90ZToqKiBvbiBpT1MgYW5kIHNvbWUgb3RoZXJcbiAgICAgKiBtb2JpbGUgZGV2aWNlcywgeW91IGNhbm5vdCBwcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgcGxheS4gT25jZSB0aGVcbiAgICAgKiB2aWV3ZXIgaGFzIHRhcHBlZCBvbiB0aGUgcGxheSBidXR0b24gaW4gdGhlIHBsYXllciwgaG93ZXZlciwgeW91XG4gICAgICogd2lsbCBiZSBhYmxlIHRvIHVzZSB0aGlzIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybiB7UGxheVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwbGF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsTWV0aG9kKCdwbGF5Jyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgdGhhdCB0aGUgcGxheWVyIGVudGVycyBmdWxsc2NyZWVuLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZXF1ZXN0RnVsbHNjcmVlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXF1ZXN0RnVsbHNjcmVlbigpIHtcbiAgICAgIGlmIChzY3JlZW5mdWxsLmlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gc2NyZWVuZnVsbC5yZXF1ZXN0KHRoaXMuZWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ3JlcXVlc3RGdWxsc2NyZWVuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgdGhhdCB0aGUgcGxheWVyIGV4aXRzIGZ1bGxzY3JlZW4uXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImV4aXRGdWxsc2NyZWVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGV4aXRGdWxsc2NyZWVuKCkge1xuICAgICAgaWYgKHNjcmVlbmZ1bGwuaXNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBzY3JlZW5mdWxsLmV4aXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY2FsbE1ldGhvZCgnZXhpdEZ1bGxzY3JlZW4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF5ZXIgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEZ1bGxzY3JlZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RnVsbHNjcmVlbigpIHtcbiAgICAgIGlmIChzY3JlZW5mdWxsLmlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gbnBvX3NyYy5yZXNvbHZlKHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdmdWxsc2NyZWVuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgdGhhdCB0aGUgcGxheWVyIGVudGVycyBwaWN0dXJlLWluLXBpY3R1cmUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInJlcXVlc3RQaWN0dXJlSW5QaWN0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlcXVlc3RQaWN0dXJlSW5QaWN0dXJlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbE1ldGhvZCgncmVxdWVzdFBpY3R1cmVJblBpY3R1cmUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVxdWVzdCB0aGF0IHRoZSBwbGF5ZXIgZXhpdHMgcGljdHVyZS1pbi1waWN0dXJlLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJleGl0UGljdHVyZUluUGljdHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleGl0UGljdHVyZUluUGljdHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ2V4aXRQaWN0dXJlSW5QaWN0dXJlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGxheWVyIGlzIGN1cnJlbnRseSBwaWN0dXJlLWluLXBpY3R1cmUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFBpY3R1cmVJblBpY3R1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGljdHVyZUluUGljdHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncGljdHVyZUluUGljdHVyZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gdW5sb2FkIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFVubG9hZFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7dm9pZH0gVGhlIHZpZGVvIHdhcyB1bmxvYWRlZC5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgcGxheWVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7VW5sb2FkUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInVubG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bmxvYWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsTWV0aG9kKCd1bmxvYWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYW51cCB0aGUgcGxheWVyIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgRE9NXG4gICAgICpcbiAgICAgKiBJdCB3b24ndCBiZSB1c2FibGUgYW5kIGEgbmV3IG9uZSBzaG91bGQgYmUgY29uc3RydWN0ZWRcbiAgICAgKiAgaW4gb3JkZXIgdG8gZG8gYW55IG9wZXJhdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBuZXcgbnBvX3NyYyhmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICByZWFkeU1hcC5kZWxldGUoX3RoaXM1KTtcbiAgICAgICAgcGxheWVyTWFwLmRlbGV0ZShfdGhpczUuZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKF90aGlzNS5fb3JpZ2luYWxFbGVtZW50KSB7XG4gICAgICAgICAgcGxheWVyTWFwLmRlbGV0ZShfdGhpczUuX29yaWdpbmFsRWxlbWVudCk7XG5cbiAgICAgICAgICBfdGhpczUuX29yaWdpbmFsRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdmltZW8taW5pdGlhbGl6ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfdGhpczUuZWxlbWVudCAmJiBfdGhpczUuZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lGUkFNRScgJiYgX3RoaXM1LmVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICAgIC8vIElmIHdlJ3ZlIGFkZGVkIGFuIGFkZGl0aW9uYWwgd3JhcHBlciBkaXYsIHJlbW92ZSB0aGF0IGZyb20gdGhlIERPTS5cbiAgICAgICAgICAvLyBJZiBub3QsIGp1c3QgcmVtb3ZlIHRoZSBpZnJhbWUgZWxlbWVudC5cbiAgICAgICAgICBpZiAoX3RoaXM1LmVsZW1lbnQucGFyZW50Tm9kZS5wYXJlbnROb2RlICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICE9PSBfdGhpczUuZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBfdGhpczUuZWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXM1LmVsZW1lbnQucGFyZW50Tm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzNS5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXM1LmVsZW1lbnQpO1xuICAgICAgICAgI
10130H1cbiAgICAgICAgfSAvLyBJZiB0aGUgY2xpcCBpcyBwcml2YXRlIHRoZXJlIGlzIGEgY2FzZSB3aGVyZSB0aGUgZWxlbWVudCBzdGF5cyB0aGVcbiAgICAgICAgLy8gZGl2IGVsZW1lbnQuIERlc3Ryb3kgc2hvdWxkIHJlc2V0IHRoZSBkaXYgYW5kIHJlbW92ZSB0aGUgaWZyYW1lIGNoaWxkLlxuXG5cbiAgICAgICAgaWYgKF90aGlzNS5lbGVtZW50ICYmIF90aGlzNS5lbGVtZW50Lm5vZGVOYW1lID09PSAnRElWJyAmJiBfdGhpczUuZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgX3RoaXM1LmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXZpbWVvLWluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgICB2YXIgaWZyYW1lID0gX3RoaXM1LmVsZW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XG5cbiAgICAgICAgICBpZiAoaWZyYW1lICYmIGlmcmFtZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSd2ZSBhZGRlZCBhbiBhZGRpdGlvbmFsIHdyYXBwZXIgZGl2LCByZW1vdmUgdGhhdCBmcm9tIHRoZSBET00uXG4gICAgICAgICAgICAvLyBJZiBub3QsIGp1c3QgcmVtb3ZlIHRoZSBpZnJhbWUgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChpZnJhbWUucGFyZW50Tm9kZS5wYXJlbnROb2RlICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICE9PSBpZnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICBpZnJhbWUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlmcmFtZS5wYXJlbnROb2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXM1Ll93aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIF90aGlzNS5fb25NZXNzYWdlKTtcblxuICAgICAgICBpZiAoc2NyZWVuZnVsbC5pc0VuYWJsZWQpIHtcbiAgICAgICAgICBzY3JlZW5mdWxsLm9mZignZnVsbHNjcmVlbmNoYW5nZScsIF90aGlzNS5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgYXV0b3BhdXNlIGJlaGF2aW9yIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldEF1dG9wYXVzZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7Ym9vbGVhbn0gV2hldGhlciBhdXRvcGF1c2UgaXMgdHVybmVkIG9uIG9yIG9mZi5cbiAgICAgKiBAcmVqZWN0IHtVbnN1cHBvcnRlZEVycm9yfSBBdXRvcGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICAgICAgICBwbGF5ZXIgb3IgYnJvd3Nlci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgYXV0b3BhdXNlIGJlaGF2aW9yIGZvciB0aGlzIHBsYXllci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldEF1dG9wYXVzZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRBdXRvcGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXV0b3BhdXNlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdhdXRvcGF1c2UnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgYXV0b3BhdXNlIGJlaGF2aW9yIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldEF1dG9wYXVzZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7Ym9vbGVhbn0gV2hldGhlciBhdXRvcGF1c2UgaXMgdHVybmVkIG9uIG9yIG9mZi5cbiAgICAgKiBAcmVqZWN0IHtVbnN1cHBvcnRlZEVycm9yfSBBdXRvcGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICAgICAgICBwbGF5ZXIgb3IgYnJvd3Nlci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvcGF1c2UgYmVoYXZpb3Igb2YgdGhpcyBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB3aGVuIGFub3RoZXIgdmlkZW8gaXMgcGxheWVkIGluIHRoZSBzYW1lIGJyb3dzZXIsIHRoaXNcbiAgICAgKiBwbGF5ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IHBhdXNlLiBVbmxlc3MgeW91IGhhdmUgYSBzcGVjaWZpYyByZWFzb25cbiAgICAgKiBmb3IgZG9pbmcgc28sIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBsZWF2ZSBhdXRvcGF1c2Ugc2V0IHRvIHRoZVxuICAgICAqIGRlZmF1bHQgKGB0cnVlYCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG9wYXVzZVxuICAgICAqIEByZXR1cm4ge1NldEF1dG9wYXVzZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRBdXRvcGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXV0b3BhdXNlKGF1dG9wYXVzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0KCdhdXRvcGF1c2UnLCBhdXRvcGF1c2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBidWZmZXJlZCBwcm9wZXJ0eSBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRCdWZmZXJlZFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7QXJyYXl9IEJ1ZmZlcmVkIFRpbWVyYW5nZXMgY29udmVydGVkIHRvIGFuIEFycmF5LlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBidWZmZXJlZCBwcm9wZXJ0eSBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRCdWZmZXJlZFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRCdWZmZXJlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCdWZmZXJlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnYnVmZmVyZWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHR5cGVkZWYge09iamVjdH0gQ2FtZXJhUHJvcGVydGllc1xuICAgICAqIEBwcm9wIHtudW1iZXJ9IHByb3BzLnlhdyAtIE51bWJlciBiZXR3ZWVuIDAgYW5kIDM2MC5cbiAgICAgKiBAcHJvcCB7bnVtYmVyfSBwcm9wcy5waXRjaCAtIE51bWJlciBiZXR3ZWVuIC05MCBhbmQgOTAuXG4gICAgICogQHByb3Age251bWJlcn0gcHJvcHMucm9sbCAtIE51bWJlciBiZXR3ZWVuIC0xODAgYW5kIDE4MC5cbiAgICAgKiBAcHJvcCB7bnVtYmVyfSBwcm9wcy5mb3YgLSBUaGUgZmllbGQgb2YgdmlldyBpbiBkZWdyZWVzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgY2FtZXJhIHByb3BlcnRpZXMgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldENhbWVyYVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7Q2FtZXJhUHJvcGVydGllc30gVGhlIGNhbWVyYSBwcm9wZXJ0aWVzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogRm9yIDM2MMKwIHZpZGVvcyBnZXQgdGhlIGNhbWVyYSBwcm9wZXJ0aWVzIGZvciB0aGlzIHBsYXllci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldENhbWVyYVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDYW1lcmFQcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDYW1lcmFQcm9wcygpIHtcbiAgICAgIHJldHVybi
10130B0aGlzLmdldCgnY2FtZXJhUHJvcHMnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgY2FtZXJhIHByb3BlcnRpZXMgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldENhbWVyYVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7T2JqZWN0fSBUaGUgY2FtZXJhIHdhcyBzdWNjZXNzZnVsbHkgc2V0LlxuICAgICAqIEByZWplY3Qge1JhbmdlRXJyb3J9IFRoZSByYW5nZSB3YXMgb3V0IG9mIGJvdW5kcy5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEZvciAzNjDCsCB2aWRlb3Mgc2V0IHRoZSBjYW1lcmEgcHJvcGVydGllcyBmb3IgdGhpcyBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0NhbWVyYVByb3BlcnRpZXN9IGNhbWVyYSBUaGUgY2FtZXJhIHByb3BlcnRpZXNcbiAgICAgKiBAcmV0dXJuIHtTZXRDYW1lcmFQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q2FtZXJhUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q2FtZXJhUHJvcHMoY2FtZXJhKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXQoJ2NhbWVyYVByb3BzJywgY2FtZXJhKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGNoYXB0ZXIuXG4gICAgICpcbiAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBWaW1lb0NoYXB0ZXJcbiAgICAgKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRUaW1lIFRoZSBzdGFydCB0aW1lIG9mIHRoZSBjaGFwdGVyLlxuICAgICAqIEBwcm9wZXJ0eSB7b2JqZWN0fSB0aXRsZSBUaGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIuXG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGluZGV4IFRoZSBwbGFjZSBpbiB0aGUgb3JkZXIgb2YgQ2hhcHRlcnMuIFN0YXJ0cyBhdCAxLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCBjaGFwdGVycyBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q2hhcHRlcnNQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge1ZpbWVvQ2hhcHRlcltdfSBUaGUgY2hhcHRlcnMgZm9yIHRoZSB2aWRlby5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBhcnJheSBvZiBhbGwgdGhlIGNoYXB0ZXJzIGZvciB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRDaGFwdGVyc1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDaGFwdGVyc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDaGFwdGVycygpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnY2hhcHRlcnMnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgY3VycmVudGx5IGFjdGl2ZSBjaGFwdGVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q3VycmVudENoYXB0ZXJzUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtWaW1lb0NoYXB0ZXJ8dW5kZWZpbmVkfSBUaGUgY3VycmVudCBjaGFwdGVyIGZvciB0aGUgdmlkZW8uXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2hhcHRlciBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0Q3VycmVudENoYXB0ZXJzUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEN1cnJlbnRDaGFwdGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEN1cnJlbnRDaGFwdGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjdXJyZW50Q2hhcHRlcicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBjb2xvciBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q29sb3JQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3N0cmluZ30gVGhlIGhleCBjb2xvciBvZiB0aGUgcGxheWVyLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjb2xvciBmb3IgdGhpcyBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRDb2xvclByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb2xvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnY29sb3InKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgY29sb3Igb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldENvbG9yUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtzdHJpbmd9IFRoZSBjb2xvciB3YXMgc3VjY2Vzc2Z1bGx5IHNldC5cbiAgICAgKiBAcmVqZWN0IHtUeXBlRXJyb3J9IFRoZSBzdHJpbmcgd2FzIG5vdCBhIHZhbGlkIGhleCBvciByZ2IgY29sb3IuXG4gICAgICogQHJlamVjdCB7Q29udHJhc3RFcnJvcn0gVGhlIGNvbG9yIHdhcyBzZXQsIGJ1dCB0aGUgY29udHJhc3QgaXNcbiAgICAgKiAgICAgICAgIG91dHNpZGUgb2YgdGhlIGFjY2VwdGFibGUgcmFuZ2UuXG4gICAgICogQHJlamVjdCB7RW1iZWRTZXR0aW5nc0Vycm9yfSBUaGUgb3duZXIgb2YgdGhlIHBsYXllciBoYXMgY2hvc2VuIHRvXG4gICAgICogICAgICAgICB1c2UgYSBzcGVjaWZpYyBjb2xvci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgY29sb3Igb2YgdGhpcyBwbGF5ZXIgdG8gYSBoZXggb3IgcmdiIHN0cmluZy4gU2V0dGluZyB0aGVcbiAgICAgKiBjb2xvciBtYXkgZmFpbCBpZiB0aGUgb3duZXIgb2YgdGhlIHZpZGVvIGhhcyBzZXQgdGhlaXIgZW1iZWRcbiAgICAgKiBwcmVmZXJlbmNlcyB0byBmb3JjZSBhIHNwZWNpZmljIGNvbG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIFRoZSBoZXggb3IgcmdiIGNvbG9yIHN0cmluZyB0byBzZXQuXG4gICAgICogQHJldHVybiB7U2V0Q29sb3JQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29sb3IoY29sb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldCgnY29sb3InLCBjb2xvcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBjdWUgcG9pbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBWaW1lb0N1ZVBvaW50XG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWUgVGhlIHRpbWUgb2YgdGhlIGN1ZSBwb2ludC5cbiAgICAgKiBAcHJvcGVydHkge29iamVjdH0gZGF0YSBUaGUgZGF0YSBwYXNzZWQgd2hlbiBhZGRpbmcgdGhlIGN1ZSBwb2ludC5cbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gaWQgVGhlIHVuaXF1ZSBpZCBmb3IgdXNlIHdpdGggcmVtb3ZlQ3VlUG9pbnQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBjdWUgcG9pbnRzIG9mIGEgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRDdWVQb2ludHNQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge1ZpbWVvQ3VlUG9pbnRbXX0gVGhlIGN1ZSBwb2ludHMgYWRkZWQgdG8gdGhlIHZpZGVvLlxuICAgICAqIEByZWplY3Qge1Vuc3VwcG9ydGVkRXJyb3J9IEN1ZSBwb2ludHMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgY3VycmVudFxuICAgICAqICAgICAgICAgcGxheWVyIG9yIGJyb3dzZXIuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYW4gYXJyYXkgb2YgdGhlIGN1ZSBwb2ludHMgYWRkZWQgdG8gdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybi
10130B7R2V0Q3VlUG9pbnRzUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEN1ZVBvaW50c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdWVQb2ludHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ2N1ZVBvaW50cycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q3VycmVudFRpbWVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGluIHNlY29uZHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRDdXJyZW50VGltZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50VGltZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnY3VycmVudFRpbWUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgY3VycmVudCB0aW1lIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldEN1cnJlbnRUaW1lUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBhY3R1YWwgY3VycmVudCB0aW1lIHRoYXQgd2FzIHNldC5cbiAgICAgKiBAcmVqZWN0IHtSYW5nZUVycm9yfSB0aGUgdGltZSB3YXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZVxuICAgICAqICAgICAgICAgdmlkZW/igJlzIGR1cmF0aW9uLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGluIHNlY29uZHMuIElmIHRoZSBwbGF5ZXIgd2FzXG4gICAgICogcGF1c2VkLCBpdCB3aWxsIHJlbWFpbiBwYXVzZWQuIExpa2V3aXNlLCBpZiB0aGUgcGxheWVyIHdhcyBwbGF5aW5nLFxuICAgICAqIGl0IHdpbGwgcmVzdW1lIHBsYXlpbmcgb25jZSB0aGUgdmlkZW8gaGFzIGJ1ZmZlcmVkLlxuICAgICAqXG4gICAgICogWW91IGNhbiBwcm92aWRlIGFuIGFjY3VyYXRlIHRpbWUgYW5kIHRoZSBwbGF5ZXIgd2lsbCBhdHRlbXB0IHRvIHNlZWtcbiAgICAgKiB0byBhcyBjbG9zZSB0byB0aGF0IHRpbWUgYXMgcG9zc2libGUuIFRoZSBleGFjdCB0aW1lIHdpbGwgYmUgdGhlXG4gICAgICogZnVsZmlsbGVkIHZhbHVlIG9mIHRoZSBwcm9taXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRUaW1lXG4gICAgICogQHJldHVybiB7U2V0Q3VycmVudFRpbWVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldCgnY3VycmVudFRpbWUnLCBjdXJyZW50VGltZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIGR1cmF0aW9uIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldER1cmF0aW9uUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBkdXJhdGlvbiBvZiB0aGUgdmlkZW8gaW4gc2Vjb25kcy4gSXQgd2lsbCBiZSByb3VuZGVkIHRvIHRoZVxuICAgICAqIG5lYXJlc3Qgc2Vjb25kIGJlZm9yZSBwbGF5YmFjayBiZWdpbnMsIGFuZCB0byB0aGUgbmVhcmVzdCB0aG91c2FuZHRoXG4gICAgICogb2YgYSBzZWNvbmQgYWZ0ZXIgcGxheWJhY2sgYmVnaW5zLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0RHVyYXRpb25Qcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ2R1cmF0aW9uJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIGVuZGVkIHN0YXRlIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldEVuZGVkUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgdmlkZW8gaGFzIGVuZGVkLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbmRlZCBzdGF0ZSBvZiB0aGUgdmlkZW8uIFRoZSB2aWRlbyBoYXMgZW5kZWQgaWZcbiAgICAgKiBgY3VycmVudFRpbWUgPT09IGR1cmF0aW9uYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldEVuZGVkUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEVuZGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVuZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdlbmRlZCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBsb29wIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRMb29wUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgcGxheWVyIGlzIHNldCB0byBsb29wLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBsb29wIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRMb29wUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldExvb3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9vcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnbG9vcCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSBsb29wIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBTZXRMb29wUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBUaGUgbG9vcCBzdGF0ZSB0aGF0IHdhcyBzZXQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGxvb3Agc3RhdGUgb2YgdGhlIHBsYXllci4gV2hlbiBzZXQgdG8gYHRydWVgLCB0aGUgcGxheWVyXG4gICAgICogd2lsbCBzdGFydCBvdmVyIGltbWVkaWF0ZWx5IG9uY2UgcGxheWJhY2sgZW5kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9vcFxuICAgICAqIEByZXR1cm4ge1NldExvb3BQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9vcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb29wKGxvb3ApIHtcbiAgICAgIHJldHVybi
10130B0aGlzLnNldCgnbG9vcCcsIGxvb3ApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSBtdXRlZCBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgU2V0TXV0ZWRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge2Jvb2xlYW59IFRoZSBtdXRlZCBzdGF0ZSB0aGF0IHdhcyBzZXQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIG11dGVkIHN0YXRlIG9mIHRoZSBwbGF5ZXIuIFdoZW4gc2V0IHRvIGB0cnVlYCwgdGhlIHBsYXllclxuICAgICAqIHZvbHVtZSB3aWxsIGJlIG11dGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSBtdXRlZFxuICAgICAqIEByZXR1cm4ge1NldE11dGVkUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldE11dGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE11dGVkKG11dGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXQoJ211dGVkJywgbXV0ZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBtdXRlZCBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0TXV0ZWRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBwbGF5ZXIgaXMgbXV0ZWQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG11dGVkIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRNdXRlZFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRNdXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNdXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnbXV0ZWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgcGF1c2VkIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRMb29wUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgdmlkZW8gaXMgcGF1c2VkLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXVzZWQgc3RhdGUgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldExvb3BQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UGF1c2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFBhdXNlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncGF1c2VkJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFBsYXliYWNrUmF0ZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSAwLjUgdG8gMi5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSBgMC41YCB0byBgMmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRQbGF5YmFja1JhdGVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UGxheWJhY2tSYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFBsYXliYWNrUmF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncGxheWJhY2tSYXRlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBzZXQgdGhlIHBsYXliYWNrcmF0ZSBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgU2V0UGxheWJhY2tSYXRlUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBwbGF5YmFjayByYXRlIHdhcyBzZXQuXG4gICAgICogQHJlamVjdCB7UmFuZ2VFcnJvcn0gVGhlIHBsYXliYWNrIHJhdGUgd2FzIGxlc3MgdGhhbiAwLjUgb3IgZ3JlYXRlciB0aGFuIDIuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIHBsYXllciBvbiBhIHNjYWxlIGZyb20gYDAuNWAgdG8gYDJgLiBXaGVuIHNldFxuICAgICAqIHZpYSB0aGUgQVBJLCB0aGUgcGxheWJhY2sgcmF0ZSB3aWxsIG5vdCBiZSBzeW5jaHJvbml6ZWQgdG8gb3RoZXJcbiAgICAgKiBwbGF5ZXJzIG9yIHN0b3JlZCBhcyB0aGUgdmlld2VyJ3MgcHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwbGF5YmFja1JhdGVcbiAgICAgKiBAcmV0dXJuIHtTZXRQbGF5YmFja1JhdGVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UGxheWJhY2tSYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBsYXliYWNrUmF0ZShwbGF5YmFja1JhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldCgncGxheWJhY2tSYXRlJywgcGxheWJhY2tSYXRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgcGxheWVkIHByb3BlcnR5IG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFBsYXllZFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7QXJyYXl9IFBsYXllZCBUaW1lcmFuZ2VzIGNvbnZlcnRlZCB0byBhbiBBcnJheS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGxheWVkIHByb3BlcnR5IG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFBsYXllZFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRQbGF5ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGxheWVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdwbGF5ZWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgcXVhbGl0aWVzIGF2YWlsYWJsZSBvZiB0aGUgY3VycmVudCB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFF1YWxpdGllc1Byb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7QXJyYXl9IFRoZSBxdWFsaXRpZXMgb2YgdGhlIHZpZGVvLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBxdWFsaXRpZXMgb2YgdGhlIGN1cnJlbnQgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRRdWFsaXRpZXNQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UXVhbGl0aWVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFF1YWxpdGllcygpIHtcbiAgICAgIHJldHVybi
10130B0aGlzLmdldCgncXVhbGl0aWVzJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIGN1cnJlbnQgc2V0IHF1YWxpdHkgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0UXVhbGl0eVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7c3RyaW5nfSBUaGUgY3VycmVudCBzZXQgcXVhbGl0eS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCBzZXQgcXVhbGl0eSBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRRdWFsaXR5UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFF1YWxpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UXVhbGl0eSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncXVhbGl0eScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSB2aWRlbyBxdWFsaXR5LlxuICAgICAqXG4gICAgICogQHByb21pc2UgU2V0UXVhbGl0eVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgcXVhbGl0eSB3YXMgc2V0LlxuICAgICAqIEByZWplY3Qge1JhbmdlRXJyb3J9IFRoZSBxdWFsaXR5IGlzIG5vdCBhdmFpbGFibGUuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgYSB2aWRlbyBxdWFsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHF1YWxpdHlcbiAgICAgKiBAcmV0dXJuIHtTZXRRdWFsaXR5UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFF1YWxpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UXVhbGl0eShxdWFsaXR5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXQoJ3F1YWxpdHknLCBxdWFsaXR5KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgc2Vla2FibGUgcHJvcGVydHkgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0U2Vla2FibGVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge0FycmF5fSBTZWVrYWJsZSBUaW1lcmFuZ2VzIGNvbnZlcnRlZCB0byBhbiBBcnJheS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc2Vla2FibGUgcHJvcGVydHkgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0U2Vla2FibGVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vla2FibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2Vla2FibGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3NlZWthYmxlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHNlZWtpbmcgcHJvcGVydHkgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFNlZWtpbmdQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBwbGF5ZXIgaXMgY3VycmVudGx5IHNlZWtpbmcuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgaWYgdGhlIHBsYXllciBpcyBjdXJyZW50bHkgc2Vla2luZy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFNlZWtpbmdQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vla2luZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWVraW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdzZWVraW5nJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHRleHQgdHJhY2tzIG9mIGEgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRUZXh0VHJhY2tzUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtWaW1lb1RleHRUcmFja1tdfSBUaGUgdGV4dCB0cmFja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWRlby5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBhcnJheSBvZiB0aGUgdGV4dCB0cmFja3MgdGhhdCBleGlzdCBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0VGV4dFRyYWNrc1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRUZXh0VHJhY2tzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRleHRUcmFja3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3RleHRUcmFja3MnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgZW1iZWQgY29kZSBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0VmlkZW9FbWJlZENvZGVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3N0cmluZ30gVGhlIGA8aWZyYW1lPmAgZW1iZWQgY29kZSBmb3IgdGhlIHZpZGVvLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBgPGlmcmFtZT5gIGVtYmVkIGNvZGUgZm9yIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvRW1iZWRDb2RlUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZGVvRW1iZWRDb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZGVvRW1iZWRDb2RlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb0VtYmVkQ29kZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBpZCBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRWaWRlb0lkUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBpZCBvZiB0aGUgdmlkZW8uXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGlkIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvSWRQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VmlkZW9JZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWRlb0lkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb0lkJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHRpdGxlIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFZpZGVvVGl0bGVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIHRpdGxlIG9mIHRoZSB2aWRlby5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgdGl0bGUgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybi
10130B7R2V0VmlkZW9UaXRsZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWRlb1RpdGxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZGVvVGl0bGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3ZpZGVvVGl0bGUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgbmF0aXZlIHdpZHRoIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFZpZGVvV2lkdGhQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIG5hdGl2ZSB3aWR0aCBvZiB0aGUgdmlkZW8uXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG5hdGl2ZSB3aWR0aCBvZiB0aGUgY3VycmVudGx54oCQcGxheWluZyB2aWRlby4gVGhlIHdpZHRoIG9mXG4gICAgICogdGhlIGhpZ2hlc3TigJByZXNvbHV0aW9uIGF2YWlsYWJsZSB3aWxsIGJlIHVzZWQgYmVmb3JlIHBsYXliYWNrIGJlZ2lucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvV2lkdGhQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VmlkZW9XaWR0aFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWRlb1dpZHRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb1dpZHRoJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIG5hdGl2ZSBoZWlnaHQgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0VmlkZW9IZWlnaHRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIG5hdGl2ZSBoZWlnaHQgb2YgdGhlIHZpZGVvLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBuYXRpdmUgaGVpZ2h0IG9mIHRoZSBjdXJyZW50bHnigJBwbGF5aW5nIHZpZGVvLiBUaGUgaGVpZ2h0IG9mXG4gICAgICogdGhlIGhpZ2hlc3TigJByZXNvbHV0aW9uIGF2YWlsYWJsZSB3aWxsIGJlIHVzZWQgYmVmb3JlIHBsYXliYWNrIGJlZ2lucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvSGVpZ2h0UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZGVvSGVpZ2h0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZGVvSGVpZ2h0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb0hlaWdodCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSB2aW1lby5jb20gdXJsIGZvciB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRWaWRlb1VybFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgdmltZW8uY29tIHVybCBmb3IgdGhlIHZpZGVvLlxuICAgICAqIEByZWplY3Qge1ByaXZhY3lFcnJvcn0gVGhlIHVybCBpc27igJl0IGF2YWlsYWJsZSBiZWNhdXNlIG9mIHRoZSB2aWRlb+KAmXMgcHJpdmFjeSBzZXR0aW5nLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB2aW1lby5jb20gdXJsIGZvciB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRWaWRlb1VybFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWRlb1VybFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWRlb1VybCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgndmlkZW9VcmwnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgdm9sdW1lIGxldmVsIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRWb2x1bWVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDEuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGN1cnJlbnQgdm9sdW1lIGxldmVsIG9mIHRoZSBwbGF5ZXIgb24gYSBzY2FsZSBmcm9tIGAwYCB0byBgMWAuXG4gICAgICpcbiAgICAgKiBNb3N0IG1vYmlsZSBkZXZpY2VzIGRvIG5vdCBzdXBwb3J0IGFuIGluZGVwZW5kZW50IHZvbHVtZSBmcm9tIHRoZVxuICAgICAqIHN5c3RlbSB2b2x1bWUuIEluIHRob3NlIGNhc2VzLCB0aGlzIG1ldGhvZCB3aWxsIGFsd2F5cyByZXR1cm4gYDFgLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0Vm9sdW1lUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZvbHVtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWb2x1bWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3ZvbHVtZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSB2b2x1bWUgbGV2ZWwgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldFZvbHVtZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgdm9sdW1lIHdhcyBzZXQuXG4gICAgICogQHJlamVjdCB7UmFuZ2VFcnJvcn0gVGhlIHZvbHVtZSB3YXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIDEuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHZvbHVtZSBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSBgMGAgdG8gYDFgLiBXaGVuIHNldFxuICAgICAqIHZpYSB0aGUgQVBJLCB0aGUgdm9sdW1lIGxldmVsIHdpbGwgbm90IGJlIHN5bmNocm9uaXplZCB0byBvdGhlclxuICAgICAqIHBsYXllcnMgb3Igc3RvcmVkIGFzIHRoZSB2aWV3ZXLigJlzIHByZWZlcmVuY2UuXG4gICAgICpcbiAgICAgKiBNb3N0IG1vYmlsZSBkZXZpY2VzIGRvIG5vdCBzdXBwb3J0IHNldHRpbmcgdGhlIHZvbHVtZS4gQW4gZXJyb3Igd2lsbFxuICAgICAqICpub3QqIGJlIHRyaWdnZXJlZCBpbiB0aGF0IHNpdHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2b2x1bWVcbiAgICAgKiBAcmV0dXJuIHtTZXRWb2x1bWVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vm9sdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZvbHVtZSh2b2x1bWUpIHtcbiAgICAgIHJldHVybi
10130B0aGlzLnNldCgndm9sdW1lJywgdm9sdW1lKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGxheWVyO1xufSgpOyAvLyBTZXR1cCBlbWJlZCBvbmx5IGlmIHRoaXMgaXMgbm90IGEgbm9kZSBlbnZpcm9ubWVudFxuXG5cbmlmICghaXNOb2RlKSB7XG4gIHNjcmVlbmZ1bGwgPSBpbml0aWFsaXplU2NyZWVuZnVsbCgpO1xuICBpbml0aWFsaXplRW1iZWRzKCk7XG4gIHJlc2l6ZUVtYmVkcygpO1xuICBpbml0QXBwZW5kVmlkZW9NZXRhZGF0YSgpO1xufVxuXG5jbGFzcyBWaW1lb1BsYXllciBleHRlbmRzIEFic3RyYWN0VmlkZW9QbGF5ZXIge1xuICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHZpZGVvSWQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHRhcmdldCwgdmlkZW9JZCwgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoSU5JVElBTElaRUQpO1xuICB9XG4gIGNyZWF0ZVBsYXllcih2aWRlb0lkKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCBvcHRpb25zOiB7IHBsYXllck9wdGlvbnMgPSB7fSB9IH0gPSB0aGlzO1xuICAgIGNvbnN0IHZpbWVvT3B0aW9ucyA9IHZpZGVvSWQuaW5kZXhPZihcImh0dHBcIikgPT09IDAgPyB7IHVybDogdmlkZW9JZCB9IDogeyBpZDogK3ZpZGVvSWQgfTtcbiAgICBjb25zdCBwbGF5ZXIgPSBuZXcgUGxheWVyJDEodGhpcy50YXJnZXQsIGFzc2lnbih2aW1lb09wdGlvbnMsIHtcbiAgICAgIGNvbnRyb2xzOiAhb3B0aW9ucy5oaWRlQ29udHJvbHMsXG4gICAgICBsb29wOiBvcHRpb25zLmxvb3AsXG4gICAgICBtdXRlZDogb3B0aW9ucy5tdXRlXG4gICAgfSwgcGxheWVyT3B0aW9ucy52aW1lbyB8fCB7fSkpO1xuICAgIHBsYXllci5vbihcInBsYXlcIiwgdGhpcy5vblBsYXkpO1xuICAgIHBsYXllci5vbihcInBhdXNlXCIsIHRoaXMub25QYXVzZSk7XG4gICAgcGxheWVyLm9uKFwiZW5kZWRcIiwgdGhpcy5vbkVuZGVkKTtcbiAgICBwbGF5ZXIucmVhZHkoKS50aGVuKHRoaXMub25QbGF5ZXJSZWFkeSwgdGhpcy5vbkVycm9yKTtcbiAgICBpZiAoIXBsYXllci5nZXRNdXRlZCgpKSB7XG4gICAgICBwbGF5ZXIuc2V0Vm9sdW1lKGNsYW1wKG9wdGlvbnMudm9sdW1lLCAwLCAxKSk7XG4gICAgfVxuICAgIHJldHVybiBwbGF5ZXI7XG4gIH1cbiAgcGxheVZpZGVvKCkge1xuICAgIHRoaXMucGxheWVyLnBsYXkoKS5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5pcyhQTEFZX1JFUVVFU1RfQUJPUlRFRCkpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQoSURMRSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcGF1c2VWaWRlbygpIHtcbiAgICB0aGlzLnBsYXllci5wYXVzZSgpO1xuICB9XG59XG5cbmNvbnN0IFlPVVRVQkVfQVBJX1NSQyA9IFwiLy93d3cueW91dHViZS5jb20vcGxheWVyX2FwaVwiO1xuY2xhc3MgWW91VHViZUlmcmFtZUFQSUxvYWRlciB7XG4gIGxvYWQoY2FsbGJhY2spIHtcbiAgICBpZiAod2luZG93LllUICYmIGlzRnVuY3Rpb24od2luZG93LllULlBsYXllcikpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICB0aGlzLmF0dGFjaENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICBpZiAodGhpcy5zaG91bGRMb2FkKCkpIHtcbiAgICAgIGNyZWF0ZShcInNjcmlwdFwiLCB7IHNyYzogYCR7bG9jYXRpb24ucHJvdG9jb2x9JHtZT1VUVUJFX0FQSV9TUkN9YCB9LCBkb2N1bWVudC5oZWFkKTtcbiAgICB9XG4gIH1cbiAgc2hvdWxkTG9hZCgpIHtcbiAgICByZXR1cm4gIXF1ZXJ5QWxsKGRvY3VtZW50LCBcInNjcmlwdFwiKS5zb21lKChzY3JpcHQpID0+IHNjcmlwdC5zcmMucmVwbGFjZSgvXmh0dHBzPzovLCBcIlwiKSA9PT0gWU9VVFVCRV9BUElfU1JDKTtcbiAgfVxuICBhdHRhY2hDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIGxldCBvbGRDYWxsYmFjaztcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHdpbmRvdy5vbllvdVR1YmVJZnJhbWVBUElSZWFkeSkpIHtcbiAgICAgIG9sZENhbGxiYWNrID0gd2luZG93Lm9uWW91VHViZUlmcmFtZUFQSVJlYWR5O1xuICAgIH1cbiAgICB3aW5kb3cub25Zb3VUdWJlSWZyYW1lQVBJUmVhZHkgPSAoKSA9PiB7XG4gICAgICBvbGRDYWxsYmFjayAmJiBvbGRDYWxsYmFjaygpO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFlvdVR1YmVQbGF5ZXIgZXh0ZW5kcyBBYnN0cmFjdFZpZGVvUGxheWVyIHtcbiAgY29uc3RydWN0b3IodGFyZ2V0LCB2aWRlb0lkLCBvcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih0YXJnZXQsIHZpZGVvSWQsIG9wdGlvbnMpO1xuICAgIHRoaXMudmlkZW9JZCA9IHRoaXMucGFyc2VWaWRlb0lkKHZpZGVvSWQpO1xuICAgIGlmICh0aGlzLnZpZGVvSWQpIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KElOSVRJQUxJWklORyk7XG4gICAgICBuZXcgWW91VHViZUlmcmFtZUFQSUxvYWRlcigpLmxvYWQodGhpcy5vbkFQSVJlYWR5LmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuICBvbkFQSVJlYWR5KCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgaXNQZW5kaW5nID0gc3RhdGUuaXMoUEVORElOR19QTEFZKTtcbiAgICBzdGF0ZS5zZXQoSU5JVElBTElaRUQpO1xuICAgIGlmIChpc1BlbmRpbmcpIHtcbiAgICAgIHRoaXMucGxheSgpO1xuICAgIH1cbiAgfVxuICBjcmVhdGVQbGF5ZXIodmlkZW9JZCkge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgb3B0aW9uczogeyBwbGF5ZXJPcHRpb25zID0ge30gfSB9ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFlULlBsYXllcih0aGlzLnRhcmdldCwge1xuICAgICAgdmlkZW9JZCxcbiAgICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCxcbiAgICAgIHBsYXllclZhcnM6IGFzc2lnbih7XG4gICAgICAgIGNvbnRyb2xzOiBvcHRpb25zLmhpZGVDb250cm9scyA/IDAgOiAxLFxuICAgICAgICBpdl9sb2FkX3BvbGljeTogMyxcbiAgICAgICAgbG9vcDogb3B0aW9ucy5sb29wID8gMSA6IDAsXG4gICAgICAgIHBsYXlsaXN0OiBvcHRpb25zLmxvb3AgPyB2aWRlb0lkIDogdm9pZCAwLFxuICAgICAgICByZWw6IDAsXG4gICAgICAgIGF1dG9wbGF5OiAwLFxuICAgICAgICBtdXRlOiBvcHRpb25zLm11dGUgPyAxIDogMFxuICAgICAgfSwgcGxheWVyT3B0aW9ucy55b3V0dWJlIHx8IHt9KSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBvblJlYWR5OiB0aGlzLm9uUGxheWVyUmVhZHkuYmluZCh0aGlzKSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZTogdGhpcy5vblBsYXllclN0YXRlQ2hhbmdlLmJpbmQodGhpcyksXG4gICAgICAgIG9uRXJyb3I6IHRoaXMub25FcnJvci5iaW5kKHRoaXMpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgb25QbGF5ZXJSZWFkeSgpIHtcbiAgICBzdXBlci5vblBsYXllclJlYWR5KCk7XG4gICAgdGhpcy5wbGF5ZXIuc2V0Vm9sdW1lKGNsYW1wKHRoaXMub3B0aW9ucy52b2x1bWUsIDAsIDEpICogMTAwKTtcbiAgfVxuICBvblBsYXllclN0YXRlQ2hhbmdlKGUpIHtcbiAgICBjb25zdCB7IFBMQVlJTkcsIFBBVVNFRCwgRU5ERUQgfSA9IFlULlBsYXllclN0YXRlO1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSBlLmRhdGEgPT09IFBMQVlJTkc6XG4gICAgICAgI
10130HRoaXMub25QbGF5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBlLmRhdGEgPT09IFBBVVNFRDpcbiAgICAgICAgdGhpcy5vblBhdXNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBlLmRhdGEgPT09IEVOREVEOlxuICAgICAgICB0aGlzLm9uRW5kZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHBsYXlWaWRlbygpIHtcbiAgICB0aGlzLnBsYXllci5wbGF5VmlkZW8oKTtcbiAgfVxuICBwYXVzZVZpZGVvKCkge1xuICAgIHRoaXMucGxheWVyLnBhdXNlVmlkZW8oKTtcbiAgfVxuICBwYXJzZVZpZGVvSWQoaWQpIHtcbiAgICByZXR1cm4gaWQuaW5kZXhPZihcImh0dHBcIikgPT09IDAgPyB0aGlzLnBhcnNlVXJsKGlkKSA6IGlkO1xuICB9XG4gIHBhcnNlVXJsKHVybCkge1xuICAgIGNvbnN0IFssIHNlYXJjaF0gPSB1cmwuc3BsaXQoL1sjP10vKTtcbiAgICBjb25zdCBxdWVyeSA9IGZpbmQoc2VhcmNoLnNwbGl0KFwiJlwiKSwgKHF1ZXJ5MikgPT4gcXVlcnkyLmluZGV4T2YoXCJ2PVwiKSA9PT0gMCk7XG4gICAgcmV0dXJuIHF1ZXJ5ICYmIHF1ZXJ5LnJlcGxhY2UoXCJ2PVwiLCBcIlwiKTtcbiAgfVxufVxuXG5jb25zdCBJMThOID0ge1xuICBwbGF5VmlkZW86IFwiUGxheSBWaWRlb1wiXG59O1xuXG5jbGFzcyBQbGF5ZXJVSSB7XG4gIGNvbnN0cnVjdG9yKFNwbGlkZTIsIHNsaWRlKSB7XG4gICAgdGhpcy5ldmVudCA9IEV2ZW50SW50ZXJmYWNlKCk7XG4gICAgdGhpcy5TcGxpZGUgPSBTcGxpZGUyO1xuICAgIHRoaXMuc2xpZGUgPSBzbGlkZTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNoaWxkKHRoaXMuc2xpZGUsIGAuJHtDTEFTU19DT05UQUlORVJ9YCk7XG4gICAgdGhpcy5wYXJlbnQgPSB0aGlzLmNvbnRhaW5lciB8fCB0aGlzLnNsaWRlO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gICAgdGhpcy5zaG93KCk7XG4gICAgdGhpcy5saXN0ZW4oKTtcbiAgfVxuICBpbml0KCkge1xuICAgIGFkZENsYXNzKHRoaXMuc2xpZGUsIGAke0NMQVNTX1NMSURFfSR7TU9ESUZJRVJfSEFTX1ZJREVPfWApO1xuICAgIGFkZENsYXNzKHRoaXMuY29udGFpbmVyLCBgJHtDTEFTU19DT05UQUlORVJ9JHtNT0RJRklFUl9IQVNfVklERU99YCk7XG4gIH1cbiAgY3JlYXRlKCkge1xuICAgIHRoaXMudmlkZW8gPSBjcmVhdGUoXCJkaXZcIiwgQ0xBU1NfVklERU8sIHRoaXMucGFyZW50KTtcbiAgICB0aGlzLnBsYXlCdXR0b24gPSBjcmVhdGUoXCJidXR0b25cIiwge1xuICAgICAgY2xhc3M6IENMQVNTX1ZJREVPX1BMQVlfQlVUVE9OLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiB0aGlzLlNwbGlkZS5vcHRpb25zLmkxOG4ucGxheVZpZGVvIHx8IEkxOE4ucGxheVZpZGVvXG4gICAgfSwgdGhpcy52aWRlbyk7XG4gICAgdGhpcy53cmFwcGVyID0gY3JlYXRlKFwiZGl2XCIsIENMQVNTX1ZJREVPX1dSQVBQRVIsIHR
10130oaXMudmlkZW8pO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSBjcmVhdGUoXCJkaXZcIiwgbnVsbCwgdGhpcy53cmFwcGVyKTtcbiAgfVxuICBsaXN0ZW4oKSB7XG4gICAgdGhpcy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHRoaXMuZXZlbnQuZW1pdChcImNsaWNrXCIpO1xuICAgIH0pO1xuICB9XG4gIHRvZ2dsZUJ1dHRvbihzaG93KSB7XG4gICAgZGlzcGxheSh0aGlzLnBsYXlCdXR0b24sIHNob3cgPyBcIlwiIDogXCJub25lXCIpO1xuICB9XG4gIHRvZ2dsZVdyYXBwZXIoc2hvdykge1xuICAgIGRpc3BsYXkodGhpcy53cmFwcGVyLCBzaG93ID8gXCJcIiA6IFwibm9uZVwiKTtcbiAgfVxuICBnZXRQbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuICBoaWRlKCkge1xuICAgIHRoaXMudG9nZ2xlQnV0dG9uKGZhbHNlKTtcbiAgICB0aGlzLnRvZ2dsZVdyYXBwZXIodHJ1ZSk7XG4gIH1cbiAgc2hvdygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudG9nZ2xlQnV0dG9uKHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZVdyYXBwZXIoZmFsc2UpO1xuICB9XG4gIGRpc2FibGUoZGlzYWJsZWQpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZUJ1dHRvbihmYWxzZSk7XG4gICAgfVxuICB9XG4gIG9uKGV2ZW50cywgY2FsbGJhY2spIHtcbiAgICB0aGlzLmV2ZW50Lm9uKGV2ZW50cywgY2FsbGJhY2spO1xuICB9XG4gIGRlc3Ryb3koKSB7XG4gICAgcmVtb3ZlQ2xhc3ModGhpcy5zbGlkZSwgYCR7Q0xBU1NfU0xJREV9JHtNT0RJRklFUl9IQVNfVklERU99YCk7XG4gICAgcmVtb3ZlQ2xhc3ModGhpcy5jb250YWluZXIsIGAke0NMQVNTX0NPTlRBSU5FUn0ke01PRElGSUVSX0hBU19WSURFT31gKTtcbiAgICByZW1vdmUodGhpcy52aWRlbyk7XG4gICAgdGhpcy5ldmVudC5kZXN0cm95KCk7XG4gIH1cbn1cblxuY29uc3QgVklERU9fUExBWUVSX01BUCA9IFtcbiAgW1lPVVRVQkVfREFUQV9BVFRSSUJVVEUsIFlvdVR1YmVQbGF5ZXJdLFxuICBbVklNRU9fREFUQV9BVFRSSUJVVEUsIFZpbWVvUGxheWVyXSxcbiAgW0hUTUxfVklERU9fX0RBVEFfQVRUUklCVVRFLCBIVE1MVmlkZW9QbGF5ZXJdXG5dO1xuY2xhc3MgUGxheWVyIHtcbiAgY29uc3RydWN0b3IoU3BsaWRlMiwgc2xpZGUpIHtcbiAgICB0aGlzLlNwbGlkZSA9IFNwbGlkZTI7XG4gICAgdGhpcy5zbGlkZSA9IHNsaWRlO1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZShtZXJnZSh7fSwgREVGQVVMVFMpLCB0aGlzLlNwbGlkZS5vcHRpb25zLnZpZGVvKTtcbiAgICB0aGlzLmNyZWF0ZVBsYXllcihzbGlkZSk7XG4gICAgaWYgKHRoaXMucGxheWVyKSB7XG4gICAgICB0aGlzLmxpc3RlbigpO1xuICAgIH1cbiAgfVxuICBjcmVhdGVQbGF5ZXIoc2xpZGUpIHtcbiAgICBWSURFT19QTEFZRVJfTUFQLmZvckVhY2goKFthdHRyLCBDb25zdHJ1Y3Rvcl0pID0+IHtcbiAgICAgIGNvbnN0IGlkID0gZ2V0QXR0cmlidXRlKHNsaWRlLCBhdHRyKTtcbiAgICAgIGlmIChpZCkge1xuICAgICAgICB0aGlzLnVpID0gbmV3IFBsYXllclVJKHRoaXMuU3BsaWRlLCBzbGlkZSk7XG4gICAgICAgIHRoaXMucGxheWVyID0gbmV3IENvbnN0cnVjdG9yKHRoaXMudWkuZ2V0UGxhY2Vob2xkZXIoKSwgaWQsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMudWkuZGlzYWJsZSh0aGlzLm9wdGlvbnMuZGlzYWJsZU92ZXJsYXlVSSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbGlzdGVuKCkge1xuICAgIGNvbnN0IHsgcGxheWVyLCBldmVudCB9ID0gdGhpcztcbiAgICB0aGlzLnVpLm9uKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrLmJpbmQodGhpcykpO1xuICAgIHBsYXllci5vbihcInBsYXlcIiwgdGhpcy5vblBsYXkuYmluZCh0aGlzKSk7XG4gICAgcGxheWVyLm9uKFwicGxheWVkXCIsIHRoaXMub25QbGF5ZWQuYmluZCh0aGlzKSk7XG4gICAgcGxheWVyLm9uKFwicGF1c2VcIiwgdGhpcy5vblBhdXNlLmJpbmQodGhpcykpO1xuICAgIHBsYXllci5vbihcInBhdXNlZFwiLCB0aGlzLm9uUGF1c2VkLmJpbmQodGhpcykpO1xuICAgIHBsYXllci5vbihcImVuZGVkXCIsIHRoaXMub25FbmRlZC5iaW5kKHRoaXMpKTtcbiAgICBwbGF5ZXIub24oXCJlcnJvclwiLCB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKSk7XG4gICAgZXZlbnQub24oW0VWRU5UX01PVkUsIEVWRU5UX1NDUk9MTF0sIHRoaXMucGF1c2UuYmluZCh0aGlzKSk7XG4gICAgZXZlbnQub24oRVZFTlRfVklERU9fQ0xJQ0ssIHRoaXMub25WaWRlb0NsaWNrLmJpbmQodGhpcykpO1xuICAgIGV2ZW50Lm9uKEVWRU5UX0RSQUcsICgpID0+IHtcbiAgICAgIGV2ZW50Lm9mZihFVkVOVF9EUkFHR0lORyk7XG4gICAgICBldmVudC5vbihFVkVOVF9EUkFHR0lORywgKCkgPT4ge1xuICAgICAgICB0aGlzLnBhdXNlKCk7XG4gICAgICAgIGV2ZW50Lm9mZihFVkVOVF9EUkFHR0lORyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9wbGF5KSB7XG4gICAgICBldmVudC5vbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfTU9WRUQsIEVWRU5UX1NDUk9MTEVEXSwgdGhpcy5vbkF1dG9wbGF5UmVxdWVzdGVkLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuICBvbkNsaWNrKCkge1xuICAgIHRoaXMuaXNQYXVzZWQoKSA/IHRoaXMucGxheSgpIDogdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChFVkVOVF9WSURFT19DTElDSywgdGhpcyk7XG4gIH1cbiAgb25WaWRlb0NsaWNrKHBsYXllcikge1xuICAgIGlmICh0aGlzICE9PSBwbGF5ZXIpIHtcbiAgICAgIHRoaXMucGF1c2UoKTtcbiAgICB9XG4gIH1cbiAgb25QbGF5KCkge1xuICAgIHRoaXMudWkuaGlkZSgpO1xuICB9XG4gIG9uUGxheWVkKCkge1xuICAgIHRoaXMudWkuaGlkZSgpO1xuICAgIHRoaXMudG9nZ2xlUGxheWluZyh0cnVlKTtcbiAgICB0aGlzLmV2ZW50LmVtaXQo
10130RVZFTlRfVklERU9fUExBWSwgdGhpcyk7XG4gIH1cbiAgb25QYXVzZSgpIHtcbiAgICB0aGlzLnVpLnNob3coKTtcbiAgfVxuICBvblBhdXNlZCgpIHtcbiAgICB0aGlzLnRvZ2dsZVBsYXlpbmcoZmFsc2UpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChFVkVOVF9WSURFT19QQVVTRSwgdGhpcyk7XG4gIH1cbiAgb25FbmRlZCgpIHtcbiAgICB0aGlzLnRvZ2dsZVBsYXlpbmcoZmFsc2UpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChFVkVOVF9WSURFT19FTkRFRCwgdGhpcyk7XG4gIH1cbiAgb25FcnJvcigpIHtcbiAgICBhZGRDbGFzcyh0aGlzLnNsaWRlLCBDTEFTU19FUlJPUik7XG4gICAgdGhpcy51aS5zaG93KCk7XG4gICAgdGhpcy5ldmVudC5lbWl0KEVWRU5UX1ZJREVPX0VSUk9SLCB0aGlzKTtcbiAgfVxuICBvbkF1dG9wbGF5UmVxdWVzdGVkKCkge1xuICAgIGNvbnN0IGFjdGl2ZVNsaWRlID0gdGhpcy5TcGxpZGUuQ29tcG9uZW50cy5TbGlkZXMuZ2V0QXQodGhpcy5TcGxpZGUuaW5kZXgpO1xuICAgIGlmIChhY3RpdmVTbGlkZS5zbGlkZSA9PT0gdGhpcy5zbGlkZSkge1xuICAgICAgdGhpcy5wbGF5KCk7XG4gICAgfVxuICB9XG4gIHRvZ2dsZVBsYXlpbmcoYWRkKSB7XG4gICAgdG9nZ2xlQ2xhc3ModGhpcy5TcGxpZGUucm9vdCwgQ0xBU1NfUExBWUlORywgYWRkKTtcbiAgfVxuICBwbGF5KCkge1xuICAgIGlmICh0aGlzLnBsYXllciAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5wbGF5ZXIucGxheSgpO1xuICAgIH1cbiAgfVxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy5wbGF5ZXIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgfVxuICB9XG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucGxheWVyKSB7XG4gICAgICB0aGlzLnVpLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMucGxheWVyLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlKGZhbHNlKTtcbiAgfVxuICBkaXNhYmxlKGRpc2FibGVkKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRvZ2dsZUNsYXNzKHRoaXMuU3BsaWRlLnJvb3QsIENMQVNTX1ZJREVPX0RJU0FCTEVELCBkaXNhYmxlZCk7XG4gIH1cbiAgaXNQYXVzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyLmlzUGF1c2VkKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVmlkZW8oU3BsaWRlMiwgQ29tcG9uZW50czIpIHtcbiAgY29uc3QgeyBvbiB9ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIGNvbnN0IHsgU2xpZGVzIH0gPSBDb21wb25lbnRzMjtcbiAgY29uc3QgcGxheWVycyA9IHt9O1xuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBjcmVhdGUoKTtcbiAgICBvbihcInJlZnJlc2hcIiwgY3JlYXRlKTtcbiAgfVxuICBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgU2xpZGVzLmZvckVhY2goKFNsaWRlKSA9PiB7XG4gICAgICBjb25zdCB7IHNsaWRlIH0gPSBTbGlkZTtcbiAgICAgIGlmICghaGFzQ2xhc3Moc2xpZGUsIGAke0NMQVNTX1NMSURFfSR7TU9ESUZJRVJfSEFTX1ZJREVPfWApKSB7XG4gICAgICAgIHBsYXllcnNbU2xpZGUuaW5kZXhdID0gbmV3IFBsYXllcihTcGxpZGUyLCBzbGlkZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgU2xpZGVzLnVwZGF0ZSgpO1xuICB9XG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgZm9yT3duKHBsYXllcnMsIChwbGF5ZXIpID0+IHtcbiAgICAgIHBsYXllci5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcGxheShpbmRleCA9IFNwbGlkZTIuaW5kZXgpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBwbGF5ZXJzW2luZGV4XTtcbiAgICBpZiAocGxheWVyKSB7XG4gICAgICBwbGF5ZXIucGxheSgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBmb3JPd24ocGxheWVycywgKHBsYXllcikgPT4ge1xuICAgICAgcGxheWVyLnBhdXNlKCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzYWJsZShkaXNhYmxlZCkge1xuICAgIGZvck93bihwbGF5ZXJzLCAocGxheWVyKSA9PiB7XG4gICAgICBwbGF5ZXIuZGlzYWJsZShkaXNhYmxlZCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtb3VudCxcbiAgICBkZXN0cm95LFxuICAgIHBsYXksXG4gICAgcGF1c2UsXG4gICAgZGlzYWJsZVxuICB9O1xufVxuXG5leHBvcnQgeyBWaWRlbyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tdmlkZW8vZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLXZpZGVvLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gMTQzXG4vLyBtb2R1bGUgY2h1bmtzID0gNSAyNSJdLCJzb3VyY2VSb290IjoiIn0=
10131//# sourceURL=webpack-internal:///143
10132`)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(g,n,t){g.exports=t(223)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
10133/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSplide", function() { return initSplide; });
10134/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "configSplide", function() { return configSplide; });
10135/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__ = __webpack_require__(63);
10136/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__);
10137/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify__ = __webpack_require__(224);
10138/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify__);
10139/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__splidejs_splide__ = __webpack_require__(142);
10140/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__splidejs_splide_extension_video__ = __webpack_require__(143);
10141/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__splidejs_splide_extension_grid__ = __webpack_require__(226);
10142/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__splidejs_splide_extension_auto_scroll__ = __webpack_require__(227);
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152var MIN_SLIDES_FOR_AUTOPLAY = 1;
10153
10154var enableAutoplayOnMount = function enableAutoplayOnMount(current) {
10155  current.on('mounted', function () {
10156    var hasVideo = current.root.querySelector('[data-splide-youtube], [data-splide-vimeo]');
10157
10158    if (!hasVideo && current.length > MIN_SLIDES_FOR_AUTOPLAY) {
10159      if (current.Components.Autoplay) {
10160        current.Components.Autoplay.play();
10161      }
10162    }
10163  });
10164};
10165
10166var handleVideoEnded = function handleVideoEnded(current) {
10167  current.on('video:ended', function () {
10168    var videoElement = current.root.querySelector('.splide__slide--has-video .splide__video');
10169
10170    current.Components.Video.disable(true);
10171
10172    if (videoElement) {
10173      videoElement.style.display = 'none';
10174    }
10175
10176    if (current.Components.Autoplay) {
10177      current.Components.Autoplay.play();
10178    }
10179
10180    current.go('>');
10181  });
10182};
10183
10184var videoImage = function videoImage(current) {
10185  enableAutoplayOnMount(current);
10186  handleVideoEnded(current);
10187};
10188
10189var getDataAttributes = function getDataAttributes(element) {
10190  return {
10191    dataSync: element.dataset.sync,
10192    dataSyncUp: element.dataset.syncUp,
10193    perPage: parseInt(element.dataset.perPage),
10194    fraction: element.dataset.fraction === 'true',
10195    autoScroll: element.dataset.autoscroll === 'true',
10196    videoCustom: element.dataset.videoCustom === 'true',
10197    itemsNumber: element.querySelector('.splide__list').children.length
10198  };
10199};
10200
10201var initSplideInstance = function initSplideInstance(element, attributes) {
10202  var itemsNumber = attributes.itemsNumber,
10203      perPage = attributes.perPage;
10204
10205  var band = itemsNumber > perPage;
10206
10207  return new __WEBPACK_IMPORTED_MODULE_2__splidejs_splide__["b" /* default */](element, {
10208    type: band ? 'loop' : 'slide',
10209    arrows: band,
10210    pagination: band,
10211    breakpoints: {
10212      768: {
10213        arrows: itemsNumber > 1
10214      }
10215    }
10216  });
10217};
10218
10219var configureSplide = function configureSplide(splide, attributes) {
10220  var bar = splide.root.querySelector('.my-carousel-progress-bar');
10221  var extensions = { Video: __WEBPACK_IMPORTED_MODULE_3__splidejs_splide_extension_video__["a" /* Video */], Grid: __WEBPACK_IMPORTED_MODULE_4__splidejs_splide_extension_grid__["a" /* Grid */] };
10222
10223  if (bar) {
10224    progress(splide, bar);
10225  }
10226
10227  if (attributes.fraction) {
10228    initFraction(splide);
10229  }
10230
10231  if (attributes.videoCustom) videoImage(splide);
10232
10233  if (attributes.autoScroll) {
10234    extensions.AutoScroll = __WEBPACK_IMPORTED_MODULE_5__splidejs_splide_extension_auto_scroll__["a" /* AutoScroll */];
10235  }
10236
10237  splide.mount(extensions);
10238};
10239
10240var syncSplides = function syncSplides(instances) {
10241  var mainVector = [];
10242  var thumbnailVector = [];
10243
10244  instances.forEach(function (element) {
10245    if (element.root.dataset.syncUp) {
10246      mainVector.push(element);
10247    }
10248
10249    if (element.root.dataset.sync) {
10250      thumbnailVector.push(element);
10251    }
10252  });
10253
10254  if (mainVector.length === thumbnailVector.length) {
10255    mainVector.forEach(function (main, index) {
10256      var thumbnail = thumbnailVector[index];
10257      main.sync(thumbnail);
10258    });
10259  }
10260};
10261
10262var progress = function progress(splide, bar) {
10263  splide.on('mounted move', function () {
10264    var end = splide.Components.Controller.getEnd() + 1;
10265    var rate = Math.min((splide.index + 1) / end, 1);
10266    bar.style.width = String(100 * rate) + '%';
10267  });
10268};
10269
10270var initFraction = function initFraction(splide) {
10271  splide.on('pagination:updated', function (data) {
10272    data.list.classList.add('splide__pagination--custom');
10273    data.list.innerHTML = '<li role="presentation">\\n        <span class="splide__pagination-page pagination-fraction__current splide__pagination--current">\\n          ' + (splide.index + splide.options.perPage) + '\\n        </span>\\n      </li>\\n      <span class="pagination-fraction__line">/</span>\\n      <li role="presentation">\\n        <span class="splide__pagination-page pagination-fraction__total splide__pagination--total">\\n          ' + splide.length + '\\n        </span>\\n      </li>';
10274  });
10275};
10276
10277var initVideoSoundControl = function initVideoSoundControl() {
10278  var soundButtons = document.querySelectorAll('.js-sound');
10279
10280  if (!soundButtons.length) return;
10281
10282  var toggleYouTubeSound = function toggleYouTubeSound(slide, muteIcon) {
10283    var iframe = slide.querySelector('iframe');
10284    if (!iframe || !iframe.contentWindow) return;
10285
10286    var isMuted = muteIcon.classList.contains('is-muted');
10287
10288    iframe.contentWindow.postMessage(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default()({
10289      event: 'command',
10290      func: isMuted ? 'unMute' : 'mute',
10291      args: ''
10292    }), '*');
10293
10294    if (isMuted) {
10295      muteIcon.classList.remove('is-muted');
10296      muteIcon.classList.add('on-muted');
10297    } else {
10298      muteIcon.classList.remove('on-muted');
10299      muteIcon.classList.add('is-muted');
10300    }
10301  };
10302
10303  var toggleVimeoSound = function toggleVimeoSound(slide, muteIcon) {
10304    var iframe = slide.querySelector('iframe');
10305    if (!iframe || !iframe.contentWindow) return;
10306
10307    var isMuted = muteIcon.classList.contains('is-muted');
10308
10309    iframe.contentWindow.postMessage(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default()({
10310      method: 'setVolume',
10311      value: isMuted ? 1 : 0
10312    }), '*');
10313
10314    if (isMuted) {
10315      muteIcon.classList.remove('is-muted');
10316      muteIcon.classList.add('on-muted');
10317    } else {
10318      muteIcon.classList.remove('on-muted');
10319      muteIcon.classList.add('is-muted');
10320    }
10321  };
10322
10323  soundButtons.forEach(function (button) {
10324    button.addEventListener('click', function (e) {
10325      e.preventDefault();
10326      e.stopPropagation();
10327
10328      var slide = this.closest('.splide__slide');
10329      var muteIcon = this.querySelector('.js-sound-mute');
10330
10331      if (!slide || !muteIcon) return;
10332
10333      var isYoutube = slide.hasAttribute('data-splide-youtube');
10334      var isVimeo = slide.hasAttribute('data-splide-vimeo');
10335
10336      if (isYoutube) {
10337        toggleYouTubeSound(slide, muteIcon);
10338      } else if (isVimeo) {
10339        toggleVimeoSound(slide, muteIcon);
10340      }
10341    });
10342  });
10343};
10344
10345var initSplide = function initSplide(element) {
10346  var attributes = getDataAttributes(element);
10347  var splide = initSplideInstance(element, attributes);
10348  configureSplide(splide, attributes);
10349  return splide;
10350};
10351
10352var configSplide = function configSplide() {
10353  var elementsCarousel = document.getElementsByClassName('splide');
10354  var splideInstances = [];
10355
10356  var _iteratorNormalCompletion = true;
10357  var _didIteratorError = false;
10358  var _iteratorError = undefined;
10359
10360  try {
10361    for (var _iterator = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default()(elementsCarousel), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
10362      var element = _step.value;
10363
10364      if (element.dataset.ignoreSplide === 'true') continue;
10365      var splide = initSplide(element);
10366      splideInstances.push(splide);
10367    }
10368  } catch (err) {
10369    _didIteratorError = true;
10370    _iteratorError = err;
10371  } finally {
10372    try {
10373      if (!_iteratorNormalCompletion && _iterator.return) {
10374        _iterator.return();
10375      }
10376    } finally {
10377      if (_didIteratorError) {
10378        throw _iteratorError;
10379      }
10380    }
10381  }
10382
10383  syncSplides(splideInstances);
10384
10385  setTimeout(initVideoSoundControl, 100);
10386
10387  return splideInstances;
10388};
10389
10390document.addEventListener('DOMContentLoaded', configSplide);
10391//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvc3BsaWRlX2Nhcm91c2VsLmpzPzNkY2IiXSwibmFtZXMiOlsiTUlOX1NMSURFU19GT1JfQVVUT1BMQVkiLCJlbmFibGVBdXRvcGxheU9uTW91bnQiLCJjdXJyZW50Iiwib24iLCJoYXNWaWRlbyIsInJvb3QiLCJxdWVyeVNlbGVjdG9yIiwibGVuZ3RoIiwiQ29tcG9uZW50cyIsIkF1dG9wbGF5IiwicGxheSIsImhhbmRsZVZpZGVvRW5kZWQiLCJ2aWRlb0VsZW1lbnQiLCJWaWRlbyIsImRpc2FibGUiLCJzdHlsZSIsImRpc3BsYXkiLCJnbyIsInZpZGVvSW1hZ2UiLCJnZXREYXRhQXR0cmlidXRlcyIsImVsZW1lbnQiLCJkYXRhU3luYyIsImRhdGFzZXQiLCJzeW5jIiwiZGF0YVN5bmNVcCIsInN5bmNVcCIsInBlclBhZ2UiLCJwYXJzZUludCIsImZyYWN0aW9uIiwiYXV0b1Njcm9sbCIsImF1dG9zY3JvbGwiLCJ2aWRlb0N1c3RvbSIsIml0ZW1zTnVtYmVyIiwiY2hpbGRyZW4iLCJpbml0U3BsaWRlSW5zdGFuY2UiLCJhdHRyaWJ1dGVzIiwiYmFuZCIsIlNwbGlkZSIsInR5cGUiLCJhcnJvd3MiLCJwYWdpbmF0aW9uIiwiYnJlYWtwb2ludHMiLCJjb25maWd1cmVTcGxpZGUiLCJzcGxpZGUiLCJiYXIiLCJleHRlbnNpb25zIiwiR3JpZCIsInByb2dyZXNzIiwiaW5pdEZyYWN0aW9uIiwiQXV0b1Njcm9sbCIsIm1vdW50Iiwic3luY1NwbGlkZXMiLCJpbnN0YW5jZXMiLCJtYWluVmVjdG9yIiwidGh1bWJuYWlsVmVjdG9yIiwiZm9yRWFjaCIsInB1c2giLCJtYWluIiwiaW5kZXgiLCJ0aHVtYm5haWwiLCJlbmQiLCJDb250cm9sbGVyIiwiZ2V0RW5kIiwicmF0ZSIsIk1hdGgiLCJtaW4iLCJ3aWR0aCIsIlN0cmluZyIsImRhdGEiLCJsaXN0IiwiY2xhc3NMaXN0IiwiYWRkIiwiaW5uZXJIVE1MIiwib3B0aW9ucyIsImluaXRWaWRlb1NvdW5kQ29udHJvbCIsInNvdW5kQnV0dG9ucyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsInRvZ2dsZVlvdVR1YmVTb3VuZCIsInNsaWRlIiwibXV0ZUljb24iLCJpZnJhbWUiLCJjb250ZW50V2luZG93IiwiaXNNdXRlZCIsImNvbnRhaW5zIiwicG9zdE1lc3NhZ2UiLCJldmVudCIsImZ1bmMiLCJhcmdzIiwicmVtb3ZlIiwidG9nZ2xlVmltZW9Tb3VuZCIsIm1ldGhvZCIsInZhbHVlIiwiYnV0dG9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNsb3Nlc3QiLCJpc1lvdXR1YmUiLCJoYXNBdHRyaWJ1dGUiLCJpc1ZpbWVvIiwiaW5pdFNwbGlkZSIsImNvbmZpZ1NwbGlkZSIsImVsZW1lbnRzQ2Fyb3VzZWwiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwic3BsaWRlSW5zdGFuY2VzIiwiaWdub3JlU3BsaWRlIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTUEsMEJBQTBCLENBQWhDOztBQUVBLElBQU1DLHdCQUF3QixTQUF4QkEscUJBQXdCLENBQUNDLE9BQUQsRUFBYTtBQUN6Q0EsVUFBUUMsRUFBUixDQUFXLFNBQVgsRUFBc0IsWUFBTTtBQUMxQixRQUFNQyxXQUFXRixRQUFRRyxJQUFSLENBQWFDLGFBQWIsQ0FDZiw0Q0FEZSxDQUFqQjs7QUFJQSxRQUFJLENBQUNGLFFBQUQsSUFBYUYsUUFBUUssTUFBUixHQUFpQlAsdUJBQWxDLEVBQTJEO0FBQ3pELFVBQUlFLFFBQVFNLFVBQVIsQ0FBbUJDLFFBQXZCLEVBQWlDO0FBQy9CUCxnQkFBUU0sVUFBUixDQUFtQkMsUUFBbkIsQ0FBNEJDLElBQTVCO0FBQ0Q7QUFDRjtBQUNGLEdBVkQ7QUFXRCxDQVpEOztBQWNBLElBQU1DLG1CQUFtQixTQUFuQkEsZ0JBQW1CLENBQUNULE9BQUQsRUFBYTtBQUNwQ0EsVUFBUUMsRUFBUixDQUFXLGFBQVgsRUFBMEIsWUFBTTtBQUM5QixRQUFNUyxlQUFlVixRQUFRRyxJQUFSLENBQWFDLGFBQWIsQ0FDbkIsMENBRG1CLENBQXJCOztBQUlBSixZQUFRTSxVQUFSLENBQW1CSyxLQUFuQixDQUF5QkMsT0FBekIsQ0FBaUMsSUFBakM7O0FBRUEsUUFBSUYsWUFBSixFQUFrQjtBQUNoQkEsbUJBQWFHLEtBQWIsQ0FBbUJDLE9BQW5CLEdBQTZCLE1BQTdCO0FBQ0Q7O0FBRUQsUUFBSWQsUUFBUU0sVUFBUixDQUFtQkMsUUFBdkIsRUFBaUM7QUFDL0JQLGNBQVFNLFVBQVIsQ0FBbUJDLFFBQW5CLENBQTRCQyxJQUE1QjtBQUNEOztBQUVEUixZQUFRZSxFQUFSLENBQVcsR0FBWDtBQUNELEdBaEJEO0FBaUJELENBbEJEOztBQW9CQSxJQUFNQyxhQUFhLFNBQWJBLFVBQWEsQ0FBQ2hCLE9BQUQsRUFBYTtBQUM5QkQsd0JBQXNCQyxPQUF0QjtBQUNBUyxtQkFB
10391aUJULE9BQWpCO0FBQ0QsQ0FIRDs7QUFLQSxJQUFNaUIsb0JBQW9CLFNBQXBCQSxpQkFBb0IsQ0FBQ0MsT0FBRCxFQUFhO0FBQ3JDLFNBQU87QUFDTEMsY0FBVUQsUUFBUUUsT0FBUixDQUFnQkMsSUFEckI7QUFFTEMsZ0JBQVlKLFFBQVFFLE9BQVIsQ0FBZ0JHLE1BRnZCO0FBR0xDLGFBQVNDLFNBQVNQLFFBQVFFLE9BQVIsQ0FBZ0JJLE9BQXpCLENBSEo7QUFJTEUsY0FBVVIsUUFBUUUsT0FBUixDQUFnQk0sUUFBaEIsS0FBNkIsTUFKbEM7QUFLTEMsZ0JBQVlULFFBQVFFLE9BQVIsQ0FBZ0JRLFVBQWhCLEtBQStCLE1BTHRDO0FBTUxDLGlCQUFhWCxRQUFRRSxPQUFSLENBQWdCUyxXQUFoQixLQUFnQyxNQU54QztBQU9MQyxpQkFBYVosUUFBUWQsYUFBUixDQUFzQixlQUF0QixFQUF1QzJCLFFBQXZDLENBQWdEMUI7QUFQeEQsR0FBUDtBQVNELENBVkQ7O0FBWUEsSUFBTTJCLHFCQUFxQixTQUFyQkEsa0JBQXFCLENBQUNkLE9BQUQsRUFBVWUsVUFBVixFQUF5QjtBQUFBLE1BQzFDSCxXQUQwQyxHQUNqQkcsVUFEaUIsQ0FDMUNILFdBRDBDO0FBQUEsTUFDN0JOLE9BRDZCLEdBQ2pCUyxVQURpQixDQUM3QlQsT0FENkI7O0FBRWxELE1BQU1VLE9BQU9KLGNBQWNOLE9BQTNCOztBQUVBLFNBQU8sSUFBSVcsaUVBQUosQ0FBV2pCLE9BQVgsRUFBb0I7QUFDekJrQixVQUFNRixPQUFPLE1BQVAsR0FBZ0IsT0FERztBQUV6QkcsWUFBUUgsSUFGaUI7QUFHekJJLGdCQUFZSixJQUhhO0FBSXpCSyxpQkFBYTtBQUNYLFdBQUs7QUFDSEYsZ0JBQVFQLGNBQWM7QUFEbkI7QUFETTtBQUpZLEdBQXBCLENBQVA7QUFVRCxDQWREOztBQWdCQSxJQUFNVSxrQkFBa0IsU0FBbEJBLGVBQWtCLENBQUNDLE1BQUQsRUFBU1IsVUFBVCxFQUF3QjtBQUM5QyxNQUFNUyxNQUFNRCxPQUFPdEMsSUFBUCxDQUFZQyxhQUFaLENBQTBCLDJCQUExQixDQUFaO0FBQ0EsTUFBTXVDLGFBQWEsRUFBRWhDLHNGQUFGLEVBQVNpQyxtRkFBVCxFQUFuQjs7QUFFQSxNQUFJRixHQUFKLEVBQVM7QUFDUEcsYUFBU0osTUFBVCxFQUFpQkMsR0FBakI7QUFDRDs7QUFFRCxNQUFJVCxXQUFXUCxRQUFmLEVBQXlCO0FBQ3ZCb0IsaUJBQWFMLE1BQWI7QUFDRDs7QUFFRCxNQUFJUixXQUFXSixXQUFmLEVBQTRCYixXQUFXeUIsTUFBWDs7QUFFNUIsTUFBSVIsV0FBV04sVUFBZixFQUEyQjtBQUN6QmdCLGVBQVdJLFVBQVgsR0FBd0JBLDBGQUF4QjtBQUNEOztBQUVETixTQUFPTyxLQUFQLENBQWFMLFVBQWI7QUFDRCxDQW5CRDs7QUFxQkEsSUFBTU0sY0FBYyxTQUFkQSxXQUFjLENBQUNDLFNBQUQsRUFBZTtBQUNqQyxNQUFNQyxhQUFhLEVBQW5CO0FBQ0EsTUFBTUMsa0JBQWtCLEVBQXhCOztBQUVBRixZQUFVRyxPQUFWLENBQWtCLG1CQUFXO0FBQzNCLFFBQUluQyxRQUFRZixJQUFSLENBQWFpQixPQUFiLENBQXFCRyxNQUF6QixFQUFpQztBQUMvQjRCLGlCQUFXRyxJQUFYLENBQWdCcEMsT0FBaEI7QUFDRDs7QUFFRCxRQUFJQSxRQUFRZixJQUFSLENBQWFpQixPQUFiLENBQXFCQyxJQUF6QixFQUErQjtBQUM3QitCLHNCQUFnQkUsSUFBaEIsQ0FBcUJwQyxPQUFyQjtBQUNEO0FBQ0YsR0FSRDs7QUFVQSxNQUFJaUMsV0FBVzlDLE1BQVgsS0FBc0IrQyxnQkFBZ0IvQyxNQUExQyxFQUFrRDtBQUNoRDhDLGVBQVdFLE9BQVgsQ0FBbUIsVUFBQ0UsSUFBRCxFQUFPQyxLQUFQLEVBQWlCO0FBQ2xDLFVBQU1DLFlBQVlMLGdCQUFnQkksS0FBaEIsQ0FBbEI7QUFDQUQsV0FBS2xDLElBQUwsQ0FBVW9DLFNBQVY7QUFDRCxLQUhEO0FBSUQ7QUFDRixDQXBCRDs7QUFzQkEsSUFBTVosV0FBVyxTQUFYQSxRQUFXLENBQUNKLE1BQUQsRUFBU0MsR0FBVCxFQUFpQjtBQUNoQ0QsU0FBT3hDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFlBQVk7QUFDcEMsUUFBSXlELE1BQU1qQixPQUFPbkMsVUFBUCxDQUFrQnFELFVBQWxCLENBQTZCQyxNQUE3QixLQUF3QyxDQUFsRDtBQUNBLFFBQUlDLE9BQU9DLEtBQUtDLEdBQUwsQ0FBUyxDQUFDdEIsT0FBT2UsS0FBUCxHQUFlLENBQWhCLElBQXFCRSxHQUE5QixFQUFtQyxDQUFuQyxDQUFYO0FBQ0FoQixRQUFJN0IsS0FBSixDQUFVbUQsS0FBVixHQUFrQkMsT0FBTyxNQUFNSixJQUFiLElBQXFCLEdBQXZDO0FBQ0QsR0FKRDtBQUtELENBTkQ7O0FBUUEsSUFBTWYsZUFBZSxTQUFmQSxZQUFlLENBQUNMLE1BQUQsRUFBWTtBQUMvQkEsU0FBT3hDLEVBQVAsQ0FBVSxvQkFBVixFQUFnQyxVQUFVaUUsSUFBVixFQUFnQjtBQUM5Q0EsU0FBS0MsSUFBTCxDQUFVQyxTQUFWLENBQW9CQyxHQUFwQixDQUF3Qiw0QkFBeEI7QUFDQUgsU0FBS0MsSUFBTCxDQUFVRyxTQUFWLHNKQUdRN0IsT0FBT2UsS0FBUCxHQUFlZixPQUFPOEIsT0FBUCxDQUFlL0MsT0FIdEMsZ1BBU1FpQixPQUFPcEMsTUFUZjtBQVlELEdBZEQ7QUFlRCxDQWhCRDs7QUFrQkEsSUFBTW1FLHdCQUF3QixTQUF4QkEscUJBQXdCLEdBQU07QUFDbEMsTUFBTUMsZUFBZUMsU0FBU0MsZ0JBQVQsQ0FBMEIsV0FBMUIsQ0FBckI7O0FBRUEsTUFBSSxDQUFDRixhQUFhcEUsTUFBbEIsRUFBMEI7O0FBRTFCLE1BQU11RSxxQkFBcUIsU0FBckJBLGtCQUFxQixDQUFDQyxLQUFELEVBQVFDLFFBQVIsRUFBcUI7QUFDOUMsUUFBTUMsU0FBU0YsTUFBTXpFLGFBQU4sQ0FBb0IsUUFBcEIsQ0FBZjtBQUNBLFFBQUksQ0FBQzJFLE1BQUQsSUFBVyxDQUFDQSxPQUFPQyxhQUF2QixFQUFzQzs7QUFFdEMsUUFBTUMsVUFBVUgsU0FBU1YsU0FBVCxDQUFtQmMsUUFBbkIsQ0FBNEIsVUFBNUIsQ0FBaEI7O0FBRUFILFdBQU9DLGFBQVAsQ0FBcUJHLFdBQXJCLENBQWlDLDZFQUFlO0FBQzlDQyxhQUFPLFNBRHVDO0FBRTlDQyxZQUFNSixVQUFVLFFBQVYsR0FBcUIsTUFGbUI7QUFHOUNLLFlBQU07QUFId0MsS0FBZixDQUFqQyxFQUlJLEdBSko7O0FBTUEsUUFBSUwsT0FBSixFQUFhO0FBQ1hILGVBQVNWLFNBQVQsQ0FBbUJtQixNQUFuQixDQUEwQixVQUExQjtBQUNBVCxlQUFTVixTQUFULENBQW1CQyxHQUFuQixDQUF1QixVQUF2QjtBQUNELEtBSEQsTUFHTztBQUNMUyxlQUFTVixTQUFULENBQW1CbUIsTUFBbkIsQ0FBMEIsVUFBMUI7QUFDQVQsZUFBU1YsU0FBVCxDQUFtQkMsR0FBbkIsQ0FBdUIsVUFBdkI7QUFDRDtBQUNGLEdBbkJEOztBQXFCQSxNQUFNbUIsbUJBQW1CLFNBQW5CQSxnQkFBbUIsQ0FBQ1gsS0FBRCxFQUFRQyxRQUFSLEVBQXFCO0FBQzVDLFFBQU1DLFNBQVNGLE1BQU16RSxhQUFOLENBQW9CLFFBQXBCLENBQWY7QUFDQSxRQUFJLENBQUMyRSxNQUFELElBQVcsQ0FBQ0EsT0FBT0MsYUFBdkIsRUFBc0M7O0FBRXRDL
10391FFBQU1DLFVBQVVILFNBQVNWLFNBQVQsQ0FBbUJjLFFBQW5CLENBQTRCLFVBQTVCLENBQWhCOztBQUVBSCxXQUFPQyxhQUFQLENBQXFCRyxXQUFyQixDQUFpQyw2RUFBZTtBQUM5Q00sY0FBUSxXQURzQztBQUU5Q0MsYUFBT1QsVUFBVSxDQUFWLEdBQWM7QUFGeUIsS0FBZixDQUFqQyxFQUdJLEdBSEo7O0FBS0EsUUFBSUEsT0FBSixFQUFhO0FBQ1hILGVBQVNWLFNBQVQsQ0FBbUJtQixNQUFuQixDQUEwQixVQUExQjtBQUNBVCxlQUFTVixTQUFULENBQW1CQyxHQUFuQixDQUF1QixVQUF2QjtBQUNELEtBSEQsTUFHTztBQUNMUyxlQUFTVixTQUFULENBQW1CbUIsTUFBbkIsQ0FBMEIsVUFBMUI7QUFDQVQsZUFBU1YsU0FBVCxDQUFtQkMsR0FBbkIsQ0FBdUIsVUFBdkI7QUFDRDtBQUNGLEdBbEJEOztBQW9CQUksZUFBYXBCLE9BQWIsQ0FBcUIsa0JBQVU7QUFDN0JzQyxXQUFPQyxnQkFBUCxDQUF3QixPQUF4QixFQUFpQyxVQUFVQyxDQUFWLEVBQWE7QUFDNUNBLFFBQUVDLGNBQUY7QUFDQUQsUUFBRUUsZUFBRjs7QUFFQSxVQUFNbEIsUUFBUSxLQUFLbUIsT0FBTCxDQUFhLGdCQUFiLENBQWQ7QUFDQSxVQUFNbEIsV0FBVyxLQUFLMUUsYUFBTCxDQUFtQixnQkFBbkIsQ0FBakI7O0FBRUEsVUFBSSxDQUFDeUUsS0FBRCxJQUFVLENBQUNDLFFBQWYsRUFBeUI7O0FBRXpCLFVBQU1tQixZQUFZcEIsTUFBTXFCLFlBQU4sQ0FBbUIscUJBQW5CLENBQWxCO0FBQ0EsVUFBTUMsVUFBVXRCLE1BQU1xQixZQUFOLENBQW1CLG1CQUFuQixDQUFoQjs7QUFFQSxVQUFJRCxTQUFKLEVBQWU7QUFDYnJCLDJCQUFtQkMsS0FBbkIsRUFBMEJDLFFBQTFCO0FBQ0QsT0FGRCxNQUVPLElBQUlxQixPQUFKLEVBQWE7QUFDbEJYLHlCQUFpQlgsS0FBakIsRUFBd0JDLFFBQXhCO0FBQ0Q7QUFDRixLQWpCRDtBQWtCRCxHQW5CRDtBQW9CRCxDQWxFRDs7QUFvRU8sSUFBTXNCLGFBQWEsU0FBYkEsVUFBYSxDQUFDbEYsT0FBRCxFQUFhO0FBQ3JDLE1BQU1lLGFBQWFoQixrQkFBa0JDLE9BQWxCLENBQW5CO0FBQ0EsTUFBTXVCLFNBQVNULG1CQUFtQmQsT0FBbkIsRUFBNEJlLFVBQTVCLENBQWY7QUFDQU8sa0JBQWdCQyxNQUFoQixFQUF3QlIsVUFBeEI7QUFDQSxTQUFPUSxNQUFQO0FBQ0QsQ0FMTTs7QUFPQSxJQUFNNEQsZUFBZSxTQUFmQSxZQUFlLEdBQU07QUFDaEMsTUFBTUMsbUJBQW1CNUIsU0FBUzZCLHNCQUFULENBQWdDLFFBQWhDLENBQXpCO0FBQ0EsTUFBSUMsa0JBQWtCLEVBQXRCOztBQUZnQztBQUFBO0FBQUE7O0FBQUE7QUFJaEMsb0dBQW9CRixnQkFBcEIsNEdBQXNDO0FBQUEsVUFBN0JwRixPQUE2Qjs7QUFDcEMsVUFBSUEsUUFBUUUsT0FBUixDQUFnQnFGLFlBQWhCLEtBQWlDLE1BQXJDLEVBQTZDO0FBQzdDLFVBQU1oRSxTQUFTMkQsV0FBV2xGLE9BQVgsQ0FBZjtBQUNBc0Ysc0JBQWdCbEQsSUFBaEIsQ0FBcUJiLE1BQXJCO0FBQ0Q7QUFSK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFVaENRLGNBQVl1RCxlQUFaOztBQUVBRSxhQUFXbEMscUJBQVgsRUFBa0MsR0FBbEM7O0FBRUEsU0FBT2dDLGVBQVA7QUFDRCxDQWZNOztBQWlCUDlCLFNBQVNrQixnQkFBVCxDQUEwQixrQkFBMUIsRUFBOENTLFlBQTlDIiwiZmlsZSI6IjIyMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuaW1wb3J0IFNwbGlkZSBmcm9tICdAc3BsaWRlanMvc3BsaWRlJ1xuaW1wb3J0IHsgVmlkZW8gfSBmcm9tICdAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi12aWRlbydcbmltcG9ydCB7IEdyaWQgfSBmcm9tICdAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1ncmlkJ1xuaW1wb3J0IHsgQXV0b1Njcm9sbCB9IGZyb20gJ0BzcGxpZGVqcy9zcGxpZGUtZXh0ZW5zaW9uLWF1dG8tc2Nyb2xsJ1xuXG5jb25zdCBNSU5fU0xJREVTX0ZPUl9BVVRPUExBWSA9IDFcblxuY29uc3QgZW5hYmxlQXV0b3BsYXlPbk1vdW50ID0gKGN1cnJlbnQpID0+IHtcbiAgY3VycmVudC5vbignbW91bnRlZCcsICgpID0+IHtcbiAgICBjb25zdCBoYXNWaWRlbyA9IGN1cnJlbnQucm9vdC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ1tkYXRhLXNwbGlkZS15b3V0dWJlXSwgW2RhdGEtc3BsaWRlLXZpbWVvXSdcbiAgICApXG5cbiAgICBpZiAoIWhhc1ZpZGVvICYmIGN1cnJlbnQubGVuZ3RoID4gTUlOX1NMSURFU19GT1JfQVVUT1BMQVkpIHtcbiAgICAgIGlmIChjdXJyZW50LkNvbXBvbmVudHMuQXV0b3BsYXkpIHtcbiAgICAgICAgY3VycmVudC5Db21wb25lbnRzLkF1dG9wbGF5LnBsYXkoKVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuY29uc3QgaGFuZGxlVmlkZW9FbmRlZCA9IChjdXJyZW50KSA9PiB7XG4gIGN1cnJlbnQub24oJ3ZpZGVvOmVuZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IGN1cnJlbnQucm9vdC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5zcGxpZGVfX3NsaWRlLS1oYXMtdmlkZW8gLnNwbGlkZV9fdmlkZW8nXG4gICAgKVxuXG4gICAgY3VycmVudC5Db21wb25lbnRzLlZpZGVvLmRpc2FibGUodHJ1ZSlcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQuQ29tcG9uZW50cy5BdXRvcGxheSkge1xuICAgICAgY3VycmVudC5Db21wb25lbnRzLkF1dG9wbGF5LnBsYXkoKVxuICAgIH1cblxuICAgIGN1cnJlbnQuZ28oJz4nKVxuICB9KVxufVxuXG5jb25zdCB2aWRlb0ltYWdlID0gKGN1cnJlbnQpID0+IHtcbiAgZW5hYmxlQXV0b3BsYXlPbk1vdW50KGN1cnJlbnQpXG4gIGhhbmRsZVZpZGVvRW5kZWQoY3VycmVudClcbn1cblxuY29uc3QgZ2V0RGF0YUF0dHJpYnV0ZXMgPSAoZWxlbWVudCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGRhdGFTeW5jOiBlbGVtZW50LmRhdGFzZXQuc3luYyxcbiAgICBkYXRhU3luY1VwOiBlbGVtZW50LmRhdGFzZXQuc3luY1VwLFxuICAgIHBlclBhZ2U6IHBhcnNlSW50KGVsZW1lbnQuZGF0YXNldC5wZXJQYWdlKSxcbiAgICBmcmFjdGlvbjogZWxlbWVudC5kYXRhc2V0LmZyYWN0aW9uID09PSAndHJ1ZScsXG4gICAgYXV0b1Njcm9sbDogZWxlbWVudC5kYXRhc2V0LmF1dG9zY3JvbGwgPT09ICd0cnVlJyxcbiAgICB2aWRlb0N1c3RvbTogZWxlbWVudC5kYXRhc2V0LnZpZGVvQ3VzdG9tID09PSAndHJ1ZScsXG4gICAgaXRlbXNOdW1iZXI6IGVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNwbGlkZV9fbGlzdCcpLmNoaWxkcmVuLmxlbmd0aFxuICB9XG59XG5cbmNvbnN0IGluaXRTcGxpZGVJbnN0YW5jZSA9IChlbGVtZW50LCBhdHRyaWJ1dGVzKSA9PiB7XG4gIGNvbnN0IHsgaXRlbXNOdW1iZXIsIHBlclBhZ2UgfSA9IGF0dHJpYnV0ZXNcbiAgY29uc3QgYmFuZCA9IGl0ZW1zTnVtYmVyID4gcGVyUGFnZVxuXG4gIHJldHVybi
10391BuZXcgU3BsaWRlKGVsZW1lbnQsIHtcbiAgICB0eXBlOiBiYW5kID8gJ2xvb3AnIDogJ3NsaWRlJyxcbiAgICBhcnJvd3M6IGJhbmQsXG4gICAgcGFnaW5hdGlvbjogYmFuZCxcbiAgICBicmVha3BvaW50czoge1xuICAgICAgNzY4OiB7XG4gICAgICAgIGFycm93czogaXRlbXNOdW1iZXIgPiAxXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5jb25zdCBjb25maWd1cmVTcGxpZGUgPSAoc3BsaWRlLCBhdHRyaWJ1dGVzKSA9PiB7XG4gIGNvbnN0IGJhciA9IHNwbGlkZS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5teS1jYXJvdXNlbC1wcm9ncmVzcy1iYXInKVxuICBjb25zdCBleHRlbnNpb25zID0geyBWaWRlbywgR3JpZCB9XG5cbiAgaWYgKGJhcikge1xuICAgIHByb2dyZXNzKHNwbGlkZSwgYmFyKVxuICB9XG5cbiAgaWYgKGF0dHJpYnV0ZXMuZnJhY3Rpb24pIHtcbiAgICBpbml0RnJhY3Rpb24oc3BsaWRlKVxuICB9XG5cbiAgaWYgKGF0dHJpYnV0ZXMudmlkZW9DdXN0b20pIHZpZGVvSW1hZ2Uoc3BsaWRlKVxuXG4gIGlmIChhdHRyaWJ1dGVzLmF1dG9TY3JvbGwpIHtcbiAgICBleHRlbnNpb25zLkF1dG9TY3JvbGwgPSBBdXRvU2Nyb2xsXG4gIH1cblxuICBzcGxpZGUubW91bnQoZXh0ZW5zaW9ucylcbn1cblxuY29uc3Qgc3luY1NwbGlkZXMgPSAoaW5zdGFuY2VzKSA9PiB7XG4gIGNvbnN0IG1haW5WZWN0b3IgPSBbXVxuICBjb25zdCB0aHVtYm5haWxWZWN0b3IgPSBbXVxuXG4gIGluc3RhbmNlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgIGlmIChlbGVtZW50LnJvb3QuZGF0YXNldC5zeW5jVXApIHtcbiAgICAgIG1haW5WZWN0b3IucHVzaChlbGVtZW50KVxuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnJvb3QuZGF0YXNldC5zeW5jKSB7XG4gICAgICB0aHVtYm5haWxWZWN0b3IucHVzaChlbGVtZW50KVxuICAgIH1cbiAgfSlcblxuICBpZiAobWFpblZlY3Rvci5sZW5ndGggPT09IHRodW1ibmFpbFZlY3Rvci5sZW5ndGgpIHtcbiAgICBtYWluVmVjdG9yLmZvckVhY2goKG1haW4sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB0aHVtYm5haWwgPSB0aHVtYm5haWxWZWN0b3JbaW5kZXhdXG4gICAgICBtYWluLnN5bmModGh1bWJuYWlsKVxuICAgIH0pXG4gIH1cbn1cblxuY29uc3QgcHJvZ3Jlc3MgPSAoc3BsaWRlLCBiYXIpID0+IHtcbiAgc3BsaWRlLm9uKCdtb3VudGVkIG1vdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGVuZCA9IHNwbGlkZS5Db21wb25lbnRzLkNvbnRyb2xsZXIuZ2V0RW5kKCkgKyAxXG4gICAgbGV0IHJhdGUgPSBNYXRoLm1pbigoc3BsaWRlLmluZGV4ICsgMSkgLyBlbmQsIDEpXG4gICAgYmFyLnN0eWxlLndpZHRoID0gU3RyaW5nKDEwMCAqIHJhdGUpICsgJyUnXG4gIH0pXG59XG5cbmNvbnN0IGluaXRGcmFjdGlvbiA9IChzcGxpZGUpID0+IHtcbiAgc3BsaWRlLm9uKCdwYWdpbmF0aW9uOnVwZGF0ZWQnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEubGlzdC5jbGFzc0xpc3QuYWRkKCdzcGxpZGVfX3BhZ2luYXRpb24tLWN1c3RvbScpXG4gICAgZGF0YS5saXN0LmlubmVySFRNTCA9XG4gICAgICBgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGxpZGVfX3BhZ2luYXRpb24tcGFnZSBwYWdpbmF0aW9uLWZyYWN0aW9uX19jdXJyZW50IHNwbGlkZV9fcGFnaW5hdGlvbi0tY3VycmVudFwiPlxuICAgICAgICAgICR7c3BsaWRlLmluZGV4ICsgc3BsaWRlLm9wdGlvbnMucGVyUGFnZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cbiAgICAgIDxzcGFuIGNsYXNzPVwicGFnaW5hdGlvbi1mcmFjdGlvbl9fbGluZVwiPi88L3NwYW4+XG4gICAgICA8bGkgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNwbGlkZV9fcGFnaW5hdGlvbi1wYWdlIHBhZ2luYXRpb24tZnJhY3Rpb25fX3RvdGFsIHNwbGlkZV9fcGFnaW5hdGlvbi0tdG90YWxcIj5cbiAgICAgICAgICAke3NwbGlkZS5sZW5ndGh9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGk+YFxuICB9KVxufVxuXG5jb25zdCBpbml0VmlkZW9Tb3VuZENvbnRyb2wgPSAoKSA9PiB7XG4gIGNvbnN0IHNvdW5kQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1zb3VuZCcpXG5cbiAgaWYgKCFzb3VuZEJ1dHRvbnMubGVuZ3RoKSByZXR1cm5cblxuICBjb25zdCB0b2dnbGVZb3VUdWJlU291bmQgPSAoc2xpZGUsIG11dGVJY29uKSA9PiB7XG4gICAgY29uc3QgaWZyYW1lID0gc2xpZGUucXVlcnlTZWxlY3RvcignaWZyYW1lJylcbiAgICBpZiAoIWlmcmFtZSB8fCAhaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHJldHVyblxuXG4gICAgY29uc3QgaXNNdXRlZCA9IG11dGVJY29uLmNsYXNzTGlzdC5jb250YWlucygnaXMtbXV0ZWQnKVxuXG4gICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6ICdjb21tYW5kJyxcbiAgICAgIGZ1bmM6IGlzTXV0ZWQgPyAndW5NdXRlJyA6ICdtdXRlJyxcbiAgICAgIGFyZ3M6ICcnXG4gICAgfSksICcqJylcblxuICAgIGlmIChpc011dGVkKSB7XG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1tdXRlZCcpXG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QuYWRkKCdvbi1tdXRlZCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5yZW1vdmUoJ29uLW11dGVkJylcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5hZGQoJ2lzLW11dGVkJylcbiAgICB9XG4gIH1cblxuICBjb25zdCB0b2dnbGVWaW1lb1NvdW5kID0gKHNsaWRlLCBtdXRlSWNvbikgPT4ge1xuICAgIGNvbnN0IGlmcmFtZSA9IHNsaWRlLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpXG4gICAgaWYgKCFpZnJhbWUgfHwgIWlmcmFtZS5jb250ZW50V2luZG93KSByZXR1cm5cblxuICAgIGNvbnN0IGlzTXV0ZWQgPSBtdXRlSWNvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLW11dGVkJylcblxuICAgIGlmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIG1ldGhvZDogJ3NldFZvbHVtZScsXG4gICAgICB2YWx1ZTogaXNNdXRlZCA/IDEgOiAwXG4gICAgfSksICcqJylcblxuICAgIGlmIChpc011dGVkKSB7XG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1tdXRlZCcpXG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QuYWRkKCdvbi1tdXRlZCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5yZW1vdmUoJ29uLW11dGVkJylcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5hZGQoJ2lzLW11dGVkJylcbiAgICB9XG4gI
10391H1cblxuICBzb3VuZEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgY29uc3Qgc2xpZGUgPSB0aGlzLmNsb3Nlc3QoJy5zcGxpZGVfX3NsaWRlJylcbiAgICAgIGNvbnN0IG11dGVJY29uID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcuanMtc291bmQtbXV0ZScpXG5cbiAgICAgIGlmICghc2xpZGUgfHwgIW11dGVJY29uKSByZXR1cm5cblxuICAgICAgY29uc3QgaXNZb3V0dWJlID0gc2xpZGUuaGFzQXR0cmlidXRlKCdkYXRhLXNwbGlkZS15b3V0dWJlJylcbiAgICAgIGNvbnN0IGlzVmltZW8gPSBzbGlkZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc3BsaWRlLXZpbWVvJylcblxuICAgICAgaWYgKGlzWW91dHViZSkge1xuICAgICAgICB0b2dnbGVZb3VUdWJlU291bmQoc2xpZGUsIG11dGVJY29uKVxuICAgICAgfSBlbHNlIGlmIChpc1ZpbWVvKSB7XG4gICAgICAgIHRvZ2dsZVZpbWVvU291bmQoc2xpZGUsIG11dGVJY29uKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBpbml0U3BsaWRlID0gKGVsZW1lbnQpID0+IHtcbiAgY29uc3QgYXR0cmlidXRlcyA9IGdldERhdGFBdHRyaWJ1dGVzKGVsZW1lbnQpXG4gIGNvbnN0IHNwbGlkZSA9IGluaXRTcGxpZGVJbnN0YW5jZShlbGVtZW50LCBhdHRyaWJ1dGVzKVxuICBjb25maWd1cmVTcGxpZGUoc3BsaWRlLCBhdHRyaWJ1dGVzKVxuICByZXR1cm4gc3BsaWRlXG59XG5cbmV4cG9ydCBjb25zdCBjb25maWdTcGxpZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzQ2Fyb3VzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzcGxpZGUnKVxuICBsZXQgc3BsaWRlSW5zdGFuY2VzID0gW11cblxuICBmb3IgKGxldCBlbGVtZW50IG9mIGVsZW1lbnRzQ2Fyb3VzZWwpIHtcbiAgICBpZiAoZWxlbWVudC5kYXRhc2V0Lmlnbm9yZVNwbGlkZSA9PT0gJ3RydWUnKSBjb250aW51ZVxuICAgIGNvbnN0IHNwbGlkZSA9IGluaXRTcGxpZGUoZWxlbWVudClcbiAgICBzcGxpZGVJbnN0YW5jZXMucHVzaChzcGxpZGUpXG4gIH1cblxuICBzeW5jU3BsaWRlcyhzcGxpZGVJbnN0YW5jZXMpXG5cbiAgc2V0VGltZW91dChpbml0VmlkZW9Tb3VuZENvbnRyb2wsIDEwMClcblxuICByZXR1cm4gc3BsaWRlSW5zdGFuY2VzXG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBjb25maWdTcGxpZGUpXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvdXRpbHMvc3BsaWRlX2Nhcm91c2VsLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==
10392//# sourceURL=webpack-internal:///223
10393`)},function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(225), __esModule: true };
10394//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzPzlhZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLFlBQVksbUJBQU8sQ0FBQyxHQUFtQyIsImZpbGUiOiIyMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvanNvbi9zdHJpbmdpZnkuanNcbi8vIG1vZHVsZSBpZCA9IDIyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDUiXSwic291cmNlUm9vdCI6IiJ9
10395//# sourceURL=webpack-internal:///224
10396`)},function(module,exports,__webpack_require__){eval(`var core = __webpack_require__(2);
10397var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
10398module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
10399  return $JSON.stringify.apply($JSON, arguments);
10400};
10401
10402//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzP2FhNDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLENBQXFCO0FBQ3hDLHVDQUF1Qyw0QkFBNEI7QUFDbkUseUNBQXlDO0FBQ3pDO0FBQ0EiLCJmaWxlIjoiMjI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJyk7XG52YXIgJEpTT04gPSBjb3JlLkpTT04gfHwgKGNvcmUuSlNPTiA9IHsgc3RyaW5naWZ5OiBKU09OLnN0cmluZ2lmeSB9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuICRKU09OLnN0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJndW1lbnRzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnkuanNcbi8vIG1vZHVsZSBpZCA9IDIyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDUiXSwic291cmNlUm9vdCI6IiJ9
10403//# sourceURL=webpack-internal:///225
10404`)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Grid; });
10405/*!
10406 * @splidejs/splide-extension-grid
10407 * Version  : 0.4.1
10408 * License  : MIT
10409 * Copyright: 2022 Naotoshi Fujita
10410 */
10411function empty$1(array) {
10412  array.length = 0;
10413}
10414
10415function slice$1(arrayLike, start, end) {
10416  return Array.prototype.slice.call(arrayLike, start, end);
10417}
10418
10419function apply$1(func) {
10420  return func.bind.apply(func, [null].concat(slice$1(arguments, 1)));
10421}
10422
10423function typeOf$1(type, subject) {
10424  return typeof subject === type;
10425}
10426
10427var isArray$1 = Array.isArray;
vendor: 17,674 bytes, lines 10428-10991
10428apply$1(typeOf$1, "function");
10429apply$1(typeOf$1, "string");
10430apply$1(typeOf$1, "undefined");
10431
10432function toArray$1(value) {
10433  return isArray$1(value) ? value : [value];
10434}
10435
10436function forEach$1(values, iteratee) {
10437  toArray$1(values).forEach(iteratee);
10438}
10439
10440var ownKeys$1 = Object.keys;
10441
10442function forOwn$1(object, iteratee, right) {
10443  if (object) {
10444    var keys = ownKeys$1(object);
10445    keys = right ? keys.reverse() : keys;
10446
10447    for (var i = 0; i < keys.length; i++) {
10448      var key = keys[i];
10449
10450      if (key !== "__proto__") {
10451        if (iteratee(object[key], key) === false) {
10452          break;
10453        }
10454      }
10455    }
10456  }
10457
10458  return object;
10459}
10460
10461function assign$1(object) {
10462  slice$1(arguments, 1).forEach(function (source) {
10463    forOwn$1(source, function (value, key) {
10464      object[key] = source[key];
10465    });
10466  });
10467  return object;
10468}
10469
10470var PROJECT_CODE$1 = "splide";
10471
10472function EventBinder() {
10473  var listeners = [];
10474
10475  function bind(targets, events, callback, options) {
10476    forEachEvent(targets, events, function (target, event, namespace) {
10477      var isEventTarget = ("addEventListener" in target);
10478      var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback);
10479      isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback);
10480      listeners.push([target, event, namespace, callback, remover]);
10481    });
10482  }
10483
10484  function unbind(targets, events, callback) {
10485    forEachEvent(targets, events, function (target, event, namespace) {
10486      listeners = listeners.filter(function (listener) {
10487        if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {
10488          listener[4]();
10489          return false;
10490        }
10491
10492        return true;
10493      });
10494    });
10495  }
10496
10497  function dispatch(target, type, detail) {
10498    var e;
10499    var bubbles = true;
10500
10501    if (typeof CustomEvent === "function") {
10502      e = new CustomEvent(type, {
10503        bubbles: bubbles,
10504        detail: detail
10505      });
10506    } else {
10507      e = document.createEvent("CustomEvent");
10508      e.initCustomEvent(type, bubbles, false, detail);
10509    }
10510
10511    target.dispatchEvent(e);
10512    return e;
10513  }
10514
10515  function forEachEvent(targets, events, iteratee) {
10516    forEach$1(targets, function (target) {
10517      target && forEach$1(events, function (events2) {
10518        events2.split(" ").forEach(function (eventNS) {
10519          var fragment = eventNS.split(".");
10520          iteratee(target, fragment[0], fragment[1]);
10521        });
10522      });
10523    });
10524  }
10525
10526  function destroy() {
10527    listeners.forEach(function (data) {
10528      data[4]();
10529    });
10530    empty$1(listeners);
10531  }
10532
10533  return {
10534    bind: bind,
10535    unbind: unbind,
10536    dispatch: dispatch,
10537    destroy: destroy
10538  };
10539}
10540var EVENT_VISIBLE = "visible";
10541var EVENT_HIDDEN = "hidden";
10542var EVENT_REFRESH = "refresh";
10543var EVENT_UPDATED = "updated";
10544var EVENT_DESTROY = "destroy";
10545
10546function EventInterface(Splide2) {
10547  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
10548  var binder = EventBinder();
10549
10550  function on(events, callback) {
10551    binder.bind(bus, toArray$1(events).join(" "), function (e) {
10552      callback.apply(callback, isArray$1(e.detail) ? e.detail : []);
10553    });
10554  }
10555
10556  function emit(event) {
10557    binder.dispatch(bus, event, slice$1(arguments, 1));
10558  }
10559
10560  if (Splide2) {
10561    Splide2.event.on(EVENT_DESTROY, binder.destroy);
10562  }
10563
10564  return assign$1(binder, {
10565    bus: bus,
10566    on: on,
10567    off: apply$1(binder.unbind, bus),
10568    emit: emit
10569  });
10570}
10571var CLASS_ROOT = PROJECT_CODE$1;
10572var CLASS_SLIDE = PROJECT_CODE$1 + "__slide";
10573var CLASS_CONTAINER = CLASS_SLIDE + "__container";
10574
10575function empty(array) {
10576  array.length = 0;
10577}
10578
10579function slice(arrayLike, start, end) {
10580  return Array.prototype.slice.call(arrayLike, start, end);
10581}
10582
10583function apply(func) {
10584  return func.bind(null, ...slice(arguments, 1));
10585}
10586
10587function typeOf(type, subject) {
10588  return typeof subject === type;
10589}
10590function isObject(subject) {
10591  return !isNull(subject) && typeOf("object", subject);
10592}
10593const isArray = Array.isArray;
10594apply(typeOf, "function");
10595const isString = apply(typeOf, "string");
10596const isUndefined = apply(typeOf, "undefined");
10597function isNull(subject) {
10598  return subject === null;
10599}
10600function isHTMLElement(subject) {
10601  return subject instanceof HTMLElement;
10602}
10603
10604function toArray(value) {
10605  return isArray(value) ? value : [value];
10606}
10607
10608function forEach(values, iteratee) {
10609  toArray(values).forEach(iteratee);
10610}
10611
10612function push(array, items) {
10613  array.push(...toArray(items));
10614  return array;
10615}
10616
10617function toggleClass(elm, classes, add) {
10618  if (elm) {
10619    forEach(classes, (name) => {
10620      if (name) {
10621        elm.classList[add ? "add" : "remove"](name);
10622      }
10623    });
10624  }
10625}
10626
10627function addClass(elm, classes) {
10628  toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true);
10629}
10630
10631function append(parent, children) {
10632  forEach(children, parent.appendChild.bind(parent));
10633}
10634
10635function matches(elm, selector) {
10636  return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector);
10637}
10638
10639function children(parent, selector) {
10640  const children2 = parent ? slice(parent.children) : [];
10641  return selector ? children2.filter((child) => matches(child, selector)) : children2;
10642}
10643
10644function child(parent, selector) {
10645  return selector ? children(parent, selector)[0] : parent.firstElementChild;
10646}
10647
10648const ownKeys = Object.keys;
10649
10650function forOwn(object, iteratee, right) {
10651  if (object) {
10652    let keys = ownKeys(object);
10653    keys = right ? keys.reverse() : keys;
10654    for (let i = 0; i < keys.length; i++) {
10655      const key = keys[i];
10656      if (key !== "__proto__") {
10657        if (iteratee(object[key], key) === false) {
10658          break;
10659        }
10660      }
10661    }
10662  }
10663  return object;
10664}
10665
10666function assign(object) {
10667  slice(arguments, 1).forEach((source) => {
10668    forOwn(source, (value, key) => {
10669      object[key] = source[key];
10670    });
10671  });
10672  return object;
10673}
10674
10675function omit(object, keys) {
10676  toArray(keys || ownKeys(object)).forEach((key) => {
10677    delete object[key];
10678  });
10679}
10680
10681function removeAttribute(elms, attrs) {
10682  forEach(elms, (elm) => {
10683    forEach(attrs, (attr) => {
10684      elm && elm.removeAttribute(attr);
10685    });
10686  });
10687}
10688
10689function setAttribute(elms, attrs, value) {
10690  if (isObject(attrs)) {
10691    forOwn(attrs, (value2, name) => {
10692      setAttribute(elms, name, value2);
10693    });
10694  } else {
10695    forEach(elms, (elm) => {
10696      isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));
10697    });
10698  }
10699}
10700
10701function create(tag, attrs, parent) {
10702  const elm = document.createElement(tag);
10703  if (attrs) {
10704    isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);
10705  }
10706  parent && append(parent, elm);
10707  return elm;
10708}
10709
10710function style(elm, prop, value) {
10711  if (isUndefined(value)) {
10712    return getComputedStyle(elm)[prop];
10713  }
10714  if (!isNull(value)) {
10715    elm.style[prop] = \`\${value}\`;
10716  }
10717}
10718
10719function hasClass(elm, className) {
10720  return elm && elm.classList.contains(className);
10721}
10722
10723function remove(nodes) {
10724  forEach(nodes, (node) => {
10725    if (node && node.parentNode) {
10726      node.parentNode.removeChild(node);
10727    }
10728  });
10729}
10730
10731function queryAll(parent, selector) {
10732  return selector ? slice(parent.querySelectorAll(selector)) : [];
10733}
10734
10735function removeClass(elm, classes) {
10736  toggleClass(elm, classes, false);
10737}
10738
10739function unit(value) {
10740  return isString(value) ? value : value ? \`\${value}px\` : "";
10741}
10742
10743const PROJECT_CODE = "splide";
10744
10745function assert(condition, message) {
10746  if (!condition) {
10747    throw new Error(\`[\${PROJECT_CODE}] \${message || ""}\`);
10748  }
10749}
10750
10751const { min, max, floor, ceil, abs } = Math;
10752
10753function pad(number) {
10754  return number < 10 ? \`0\${number}\` : \`\${number}\`;
10755}
10756
10757const CLASS_SLIDE_ROW = \`\${CLASS_SLIDE}__row\`;
10758const CLASS_SLIDE_COL = \`\${CLASS_SLIDE}--col\`;
10759
10760const DEFAULTS = {
10761  rows: 1,
10762  cols: 1,
10763  dimensions: [],
10764  gap: {}
10765};
10766
10767function Dimension(options) {
10768  function normalize() {
10769    const { rows, cols, dimensions } = options;
10770    return isArray(dimensions) && dimensions.length ? dimensions : [[rows, cols]];
10771  }
10772  function get(index) {
10773    const dimensions = normalize();
10774    return dimensions[min(index, dimensions.length - 1)];
10775  }
10776  function getAt(index) {
10777    const dimensions = normalize();
10778    let rows, cols, aggregator = 0;
10779    for (let i = 0; i < dimensions.length; i++) {
10780      const dimension = dimensions[i];
10781      rows = dimension[0] || 1;
10782      cols = dimension[1] || 1;
10783      aggregator += rows * cols;
10784      if (index < aggregator) {
10785        break;
10786      }
10787    }
10788    assert(rows && cols, "Invalid dimension");
10789    return [rows, cols];
10790  }
10791  return {
10792    get,
10793    getAt
10794  };
10795}
10796
10797function Layout(Splide2, gridOptions, Dimension) {
10798  const { on, destroy: destroyEvent } = EventInterface(Splide2);
10799  const { Components, options } = Splide2;
10800  const { resolve } = Components.Direction;
10801  const { forEach } = Components.Slides;
10802  function mount() {
10803    layout();
10804    if (options.slideFocus) {
10805      on(EVENT_VISIBLE, onVisible);
10806      on(EVENT_HIDDEN, onHidden);
10807    }
10808  }
10809  function destroy() {
10810    forEach((Slide) => {
10811      const { slide } = Slide;
10812      toggleTabIndex(slide, false);
10813      getRowsIn(slide).forEach((cell) => {
10814        removeAttribute(cell, "style");
10815      });
10816      getColsIn(slide).forEach((colSlide) => {
10817        cover(colSlide, true);
10818        removeAttribute(colSlide, "style");
10819      });
10820    });
10821    destroyEvent();
10822  }
10823  function layout() {
10824    forEach((Slide) => {
10825      const { slide } = Slide;
10826      const [rows, cols] = Dimension.get(Slide.isClone ? Slide.slideIndex : Slide.index);
10827      layoutRow(rows, slide);
10828      layoutCol(cols, slide);
10829      getColsIn(Slide.slide).forEach((colSlide, index) => {
10830        colSlide.id = \`\${Slide.slide.id}-col\${pad(index + 1)}\`;
10831        if (Splide2.options.cover) {
10832          cover(colSlide);
10833        }
10834      });
10835    });
10836  }
10837  function layoutRow(rows, slide) {
10838    const { row: rowGap } = gridOptions.gap;
10839    const height = \`calc(\${100 / rows}%\${rowGap ? \` - \${unit(rowGap)} * \${(rows - 1) / rows}\` : ""})\`;
10840    getRowsIn(slide).forEach((rowElm, index, rowElms) => {
10841      style(rowElm, "height", height);
10842      style(rowElm, "display", "flex");
10843      style(rowElm, "margin", \`0 0 \${unit(rowGap)} 0\`);
10844      style(rowElm, "padding", 0);
10845      if (index === rowElms.length - 1) {
10846        style(rowElm, "marginBottom", 0);
10847      }
10848    });
10849  }
10850  function layoutCol(cols, slide) {
10851    const { col: colGap } = gridOptions.gap;
10852    const width = \`calc(\${100 / cols}%\${colGap ? \` - \${unit(colGap)} * \${(cols - 1) / cols}\` : ""})\`;
10853    getColsIn(slide).forEach((colElm, index, colElms) => {
10854      style(colElm, "width", width);
10855      if (index !== colElms.length - 1) {
10856        style(colElm, resolve("marginRight"), unit(colGap));
10857      }
10858    });
10859  }
10860  function cover(colSlide, uncover) {
10861    const container = child(colSlide, \`.\${CLASS_CONTAINER}\`);
10862    const img = child(container || colSlide, "img");
10863    if (img && img.src) {
10864      style(container || colSlide, "background", uncover ? "" : \`center/cover no-repeat url("\${img.src}")\`);
10865      style(img, "display", uncover ? "" : "none");
10866    }
10867  }
10868  function getRowsIn(slide) {
10869    return queryAll(slide, \`.\${CLASS_SLIDE_ROW}\`);
10870  }
10871  function getColsIn(slide) {
10872    return queryAll(slide, \`.\${CLASS_SLIDE_COL}\`);
10873  }
10874  function toggleTabIndex(slide, add) {
10875    getColsIn(slide).forEach((colSlide) => {
10876      setAttribute(colSlide, "tabindex", add ? 0 : null);
10877    });
10878  }
10879  function onVisible(Slide) {
10880    toggleTabIndex(Slide.slide, true);
10881  }
10882  function onHidden(Slide) {
10883    toggleTabIndex(Slide.slide, false);
10884  }
10885  return {
10886    mount,
10887    destroy
10888  };
10889}
10890
10891function Grid(Splide2, Components2, options) {
10892  const { on, off } = EventInterface(Splide2);
10893  const { Elements } = Components2;
10894  const gridOptions = {};
10895  const Dimension$1 = Dimension(gridOptions);
10896  const Layout$1 = Layout(Splide2, gridOptions, Dimension$1);
10897  const modifier = \`\${CLASS_ROOT}--grid\`;
10898  const originalSlides = [];
10899  function mount() {
10900    init();
10901    on(EVENT_UPDATED, init);
10902  }
10903  function init() {
10904    omit(gridOptions);
10905    assign(gridOptions, DEFAULTS, options.grid || {});
10906    if (shouldBuild()) {
10907      destroy();
10908      push(originalSlides, Elements.slides);
10909      addClass(Splide2.root, modifier);
10910      append(Elements.list, build());
10911      off(EVENT_REFRESH);
10912      on(EVENT_REFRESH, layout);
10913      refresh();
10914    } else if (isActive()) {
10915      destroy();
10916      refresh();
10917    }
10918  }
10919  function destroy() {
10920    if (isActive()) {
10921      const { slides } = Elements;
10922      Layout$1.destroy();
10923      originalSlides.forEach((slide) => {
10924        removeClass(slide, CLASS_SLIDE_COL);
10925        append(Elements.list, slide);
10926      });
10927      remove(slides);
10928      removeClass(Splide2.root, modifier);
10929      empty(slides);
10930      push(slides, originalSlides);
10931      empty(originalSlides);
10932      off(EVENT_REFRESH);
10933    }
10934  }
10935  function refresh() {
10936    Splide2.refresh();
10937  }
10938  function layout() {
10939    if (isActive()) {
10940      Layout$1.mount();
10941    }
10942  }
10943  function build() {
10944    const outerSlides = [];
10945    let row = 0, col = 0;
10946    let outerSlide, rowSlide;
10947    originalSlides.forEach((slide, index) => {
10948      const [rows, cols] = Dimension$1.getAt(index);
10949      if (!col) {
10950        if (!row) {
10951          outerSlide = create(slide.tagName, CLASS_SLIDE);
10952          outerSlides.push(outerSlide);
10953        }
10954        rowSlide = buildRow(rows, slide, outerSlide);
10955      }
10956      buildCol(cols, slide, rowSlide);
10957      if (++col >= cols) {
10958        col = 0;
10959        row = ++row >= rows ? 0 : row;
10960      }
10961    });
10962    return outerSlides;
10963  }
10964  function buildRow(rows, slide, outerSlide) {
10965    const tag = slide.tagName.toLowerCase() === "li" ? "ul" : "div";
10966    return create(tag, CLASS_SLIDE_ROW, outerSlide);
10967  }
10968  function buildCol(cols, slide, rowSlide) {
10969    addClass(slide, CLASS_SLIDE_COL);
10970    append(rowSlide, slide);
10971    return slide;
10972  }
10973  function shouldBuild() {
10974    if (options.grid) {
10975      const { rows, cols, dimensions } = gridOptions;
10976      return rows > 1 || cols > 1 || isArray(dimensions) && dimensions.length > 0;
10977    }
10978    return false;
10979  }
10980  function isActive() {
10981    return hasClass(Splide2.root, modifier);
10982  }
10983  return {
10984    mount,
10985    destroy
10986  };
10987}
10988
10989
10990
10991//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC9kaXN0L2pzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC5lc20uanM/NDcwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixNQUFNO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QyxNQUFNO0FBQ3BEOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsYUFBYSxJQUFJLGNBQWM7QUFDdkQ7QUFDQTs7QUFFQSxPQUFPLDZCQUE2Qjs7QUFFcEM7QUFDQSwyQkFBMkIsT0FBTyxPQUFPLE9BQU87QUFDaEQ7O0FBRUEsMkJBQTJCLFlBQVk7QUFDdkMsMkJBQTJCLFlBQVk7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsVUFBVTtBQUNuQixTQUFTLFVBQVU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGVBQWUsTUFBTSxlQUFlO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLF
10991dBQVcsY0FBYztBQUN6QiwyQkFBMkIsV0FBVyxHQUFHLGVBQWUsYUFBYSxLQUFLLGtCQUFrQixPQUFPO0FBQ25HO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxhQUFhO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsMEJBQTBCLFdBQVcsR0FBRyxlQUFlLGFBQWEsS0FBSyxrQkFBa0IsT0FBTztBQUNsRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFEO0FBQ0E7QUFDQSwrRkFBK0YsUUFBUTtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxVQUFVO0FBQ25CLFNBQVMsV0FBVztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsV0FBVztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEseUJBQXlCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0IiLCJmaWxlIjoiMjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1ncmlkXG4gKiBWZXJzaW9uICA6IDAuNC4xXG4gKiBMaWNlbnNlICA6IE1JVFxuICogQ29weXJpZ2h0OiAyMDIyIE5hb3Rvc2hpIEZ1aml0YVxuICovXG5mdW5jdGlvbiBlbXB0eSQxKGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlJDEoYXJyYXlMaWtlLCBzdGFydCwgZW5kKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UsIHN0YXJ0LCBlbmQpO1xufVxuXG5mdW5jdGlvbiBhcHBseSQxKGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmMuYmluZC5hcHBseShmdW5jLCBbbnVsbF0uY29uY2F0KHNsaWNlJDEoYXJndW1lbnRzLCAxKSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YkMSh0eXBlLCBzdWJqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygc3ViamVjdCA9PT0gdHlwZTtcbn1cblxudmFyIGlzQXJyYXkkMSA9IEFycmF5LmlzQXJyYXk7XG5hcHBseSQxKHR5cGVPZiQxLCBcImZ1bmN0aW9uXCIpO1xuYXBwbHkkMSh0eXBlT2YkMSwgXCJzdHJpbmdcIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInVuZGVmaW5lZFwiKTtcblxuZnVuY3Rpb24gdG9BcnJheSQxKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5JDEodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoJDEodmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5JDEodmFsdWVzKS5mb3JFYWNoKGl0ZXJhdGVlKTtcbn1cblxudmFyIG93bktleXMkMSA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24kMShvYmplY3QsIGl0ZXJhdGVlLCByaWdodCkge1xuICBpZiAob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBvd25LZXlzJDEob2JqZWN0KTtcbiAgICBrZXlzID0gcmlnaHQgPyBrZXlzLnJldmVyc2UoKSA6IGtleXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbiQxKG9iamVjdCkge1xuICBzbGljZSQxKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duJDEoc291cmNlLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbnZhciBQUk9KRUNUX0NPREUkMSA9IFwic3BsaWRlXCI7XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgI
10991H1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2gkMSh0YXJnZXRzLCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgJiYgZm9yRWFjaCQxKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50czIpIHtcbiAgICAgICAgZXZlbnRzMi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROUykge1xuICAgICAgICAgIHZhciBmcmFnbWVudCA9IGV2ZW50TlMuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgIGl0ZXJhdGVlKHRhcmdldCwgZnJhZ21lbnRbMF0sIGZyYWdtZW50WzFdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGRhdGFbNF0oKTtcbiAgICB9KTtcbiAgICBlbXB0eSQxKGxpc3RlbmVycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmQ6IGJpbmQsXG4gICAgdW5iaW5kOiB1bmJpbmQsXG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cbnZhciBFVkVOVF9WSVNJQkxFID0gXCJ2aXNpYmxlXCI7XG52YXIgRVZFTlRfSElEREVOID0gXCJoaWRkZW5cIjtcbnZhciBFVkVOVF9SRUZSRVNIID0gXCJyZWZyZXNoXCI7XG52YXIgRVZFTlRfVVBEQVRFRCA9IFwidXBkYXRlZFwiO1xudmFyIEVWRU5UX0RFU1RST1kgPSBcImRlc3Ryb3lcIjtcblxuZnVuY3Rpb24gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikge1xuICB2YXIgYnVzID0gU3BsaWRlMiA/IFNwbGlkZTIuZXZlbnQuYnVzIDogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcblxuICBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgYmluZGVyLmJpbmQoYnVzLCB0b0FycmF5JDEoZXZlbnRzKS5qb2luKFwiIFwiKSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGNhbGxiYWNrLmFwcGx5KGNhbGxiYWNrLCBpc0FycmF5JDEoZS5kZXRhaWwpID8gZS5kZXRhaWwgOiBbXSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBlbWl0KGV2ZW50KSB7XG4gICAgYmluZGVyLmRpc3BhdGNoKGJ1cywgZXZlbnQsIHNsaWNlJDEoYXJndW1lbnRzLCAxKSk7XG4gIH1cblxuICBpZiAoU3BsaWRlMikge1xuICAgIFNwbGlkZTIuZXZlbnQub24oRVZFTlRfREVTVFJPWSwgYmluZGVyLmRlc3Ryb3kpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbiQxKGJpbmRlciwge1xuICAgIGJ1czogYnVzLFxuICAgIG9uOiBvbixcbiAgICBvZmY6IGFwcGx5JDEoYmluZGVyLnVuYmluZCwgYnVzKSxcbiAgICBlbWl0OiBlbWl0XG4gIH0pO1xufVxudmFyIENMQVNTX1JPT1QgPSBQUk9KRUNUX0NPREUkMTtcbnZhciBDTEFTU19TTElERSA9IFBST0pFQ1RfQ09ERSQxICsgXCJfX3NsaWRlXCI7XG52YXIgQ0xBU1NfQ09OVEFJTkVSID0gQ0xBU1NfU0xJREUgKyBcIl9fY29udGFpbmVyXCI7XG5cbmZ1bmN0aW9uIGVtcHR5KGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kKG51bGwsIC4uLnNsaWNlKGFyZ3VtZW50cywgMSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YodHlwZSwgc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IHR5cGU7XG59XG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuY29uc3QgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xuY29uc3QgaXNVbmRlZmluZWQgPSBhcHBseSh0eXBlT2YsIFwidW5kZWZpbmVkXCIpO1xuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2godmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5KHZhbHVlcykuZm9yRWFjaChpdGVyYXRlZSk7XG59XG5cbmZ1bmN0aW9uIHB1c2goYXJyYXksIGl0ZW1zKSB7XG4gIGFycmF5LnB1c2goLi4udG9BcnJheShpdGVtcykpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsbSwgY2xhc3NlcywgYWRkKSB7XG4gIGlmIChlbG0pIHtcbiAgICBmb3JFYWNoKGNsYXNzZXMsIChuYW1lKSA9PiB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBlbG0uY2xhc3NMaXN0W2FkZCA/IFwiYWRkXCIgO
10991iBcInJlbW92ZVwiXShuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBpc1N0cmluZyhjbGFzc2VzKSA/IGNsYXNzZXMuc3BsaXQoXCIgXCIpIDogY2xhc3NlcywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGNoaWxkcmVuKSB7XG4gIGZvckVhY2goY2hpbGRyZW4sIHBhcmVudC5hcHBlbmRDaGlsZC5iaW5kKHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKGVsbSwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxtKSAmJiAoZWxtW1wibXNNYXRjaGVzU2VsZWN0b3JcIl0gfHwgZWxtLm1hdGNoZXMpLmNhbGwoZWxtLCBzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKChjaGlsZCkgPT4gbWF0Y2hlcyhjaGlsZCwgc2VsZWN0b3IpKSA6IGNoaWxkcmVuMjtcbn1cblxuZnVuY3Rpb24gY2hpbGQocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbihwYXJlbnQsIHNlbGVjdG9yKVswXSA6IHBhcmVudC5maXJzdEVsZW1lbnRDaGlsZDtcbn1cblxuY29uc3Qgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIGxldCBrZXlzID0gb3duS2V5cyhvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24ob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgZm9yT3duKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5cykge1xuICB0b0FycmF5KGtleXMgfHwgb3duS2V5cyhvYmplY3QpKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBkZWxldGUgb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUoZWxtcywgYXR0cnMpIHtcbiAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgZm9yRWFjaChhdHRycywgKGF0dHIpID0+IHtcbiAgICAgIGVsbSAmJiBlbG0ucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKGVsbXMsIGF0dHJzLCB2YWx1ZSkge1xuICBpZiAoaXNPYmplY3QoYXR0cnMpKSB7XG4gICAgZm9yT3duKGF0dHJzLCAodmFsdWUyLCBuYW1lKSA9PiB7XG4gICAgICBzZXRBdHRyaWJ1dGUoZWxtcywgbmFtZSwgdmFsdWUyKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBmb3JFYWNoKGVsbXMsIChlbG0pID0+IHtcbiAgICAgIGlzTnVsbCh2YWx1ZSkgfHwgdmFsdWUgPT09IFwiXCIgPyByZW1vdmVBdHRyaWJ1dGUoZWxtLCBhdHRycykgOiBlbG0uc2V0QXR0cmlidXRlKGF0dHJzLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGUodGFnLCBhdHRycywgcGFyZW50KSB7XG4gIGNvbnN0IGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKGF0dHJzKSB7XG4gICAgaXNTdHJpbmcoYXR0cnMpID8gYWRkQ2xhc3MoZWxtLCBhdHRycykgOiBzZXRBdHRyaWJ1dGUoZWxtLCBhdHRycyk7XG4gIH1cbiAgcGFyZW50ICYmIGFwcGVuZChwYXJlbnQsIGVsbSk7XG4gIHJldHVybiBlbG07XG59XG5cbmZ1bmN0aW9uIHN0eWxlKGVsbSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsbSlbcHJvcF07XG4gIH1cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gYCR7dmFsdWV9YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcXVlcnlBbGwocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBzbGljZShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpIDogW107XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsbSwgY2xhc3Nlcykge1xuICB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gdW5pdCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IGAke3ZhbHVlfXB4YCA6IFwiXCI7XG59XG5cbmNvbnN0IFBST0pFQ1RfQ09ERSA9IFwic3BsaWRlXCI7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFske1BST0pFQ1RfQ09ERX1dICR7bWVzc2FnZSB8fCBcIlwifWApO1xuICB9XG59XG5cbmNvbnN0IHsgbWluLCBtYXgsIGZsb29yLCBjZWlsLCBhYnMgfSA9IE1hdGg7XG5cbmZ1bmN0aW9uIHBhZChudW1iZXIpIHtcbiAgcmV0dXJuIG51bWJlciA8IDEwID8gYDAke251bWJlcn1gIDogYCR7bnVtYmVyfWA7XG59XG5cbmNvbnN0IENMQVNTX1NMSURFX1JPVyA9IGAke0NMQVNTX1NMSURFfV9fcm93YDtcbmNvbnN0IENMQVNTX1NMSURFX0NPTCA9IGAke0NMQVNTX1NMSURFfS0tY29sYDtcblxuY29uc3QgREVGQVVMVFMgPSB7XG4gIHJvd3M6IDEsXG4gIGNvbHM6IDEsXG4gIGRpbWVuc2lvbnM6IFtdLFxuICBnYXA6IHt9XG59O1xuXG5mdW5jdGlvbiBEaW
109911lbnNpb24ob3B0aW9ucykge1xuICBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgY29uc3QgeyByb3dzLCBjb2xzLCBkaW1lbnNpb25zIH0gPSBvcHRpb25zO1xuICAgIHJldHVybiBpc0FycmF5KGRpbWVuc2lvbnMpICYmIGRpbWVuc2lvbnMubGVuZ3RoID8gZGltZW5zaW9ucyA6IFtbcm93cywgY29sc11dO1xuICB9XG4gIGZ1bmN0aW9uIGdldChpbmRleCkge1xuICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBub3JtYWxpemUoKTtcbiAgICByZXR1cm4gZGltZW5zaW9uc1ttaW4oaW5kZXgsIGRpbWVuc2lvbnMubGVuZ3RoIC0gMSldO1xuICB9XG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgY29uc3QgZGltZW5zaW9ucyA9IG5vcm1hbGl6ZSgpO1xuICAgIGxldCByb3dzLCBjb2xzLCBhZ2dyZWdhdG9yID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IGRpbWVuc2lvbnNbaV07XG4gICAgICByb3dzID0gZGltZW5zaW9uWzBdIHx8IDE7XG4gICAgICBjb2xzID0gZGltZW5zaW9uWzFdIHx8IDE7XG4gICAgICBhZ2dyZWdhdG9yICs9IHJvd3MgKiBjb2xzO1xuICAgICAgaWYgKGluZGV4IDwgYWdncmVnYXRvcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzZXJ0KHJvd3MgJiYgY29scywgXCJJbnZhbGlkIGRpbWVuc2lvblwiKTtcbiAgICByZXR1cm4gW3Jvd3MsIGNvbHNdO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0LFxuICAgIGdldEF0XG4gIH07XG59XG5cbmZ1bmN0aW9uIExheW91dChTcGxpZGUyLCBncmlkT3B0aW9ucywgRGltZW5zaW9uKSB7XG4gIGNvbnN0IHsgb24sIGRlc3Ryb3k6IGRlc3Ryb3lFdmVudCB9ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIGNvbnN0IHsgQ29tcG9uZW50cywgb3B0aW9ucyB9ID0gU3BsaWRlMjtcbiAgY29uc3QgeyByZXNvbHZlIH0gPSBDb21wb25lbnRzLkRpcmVjdGlvbjtcbiAgY29uc3QgeyBmb3JFYWNoIH0gPSBDb21wb25lbnRzLlNsaWRlcztcbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgbGF5b3V0KCk7XG4gICAgaWYgKG9wdGlvbnMuc2xpZGVGb2N1cykge1xuICAgICAgb24oRVZFTlRfVklTSUJMRSwgb25WaXNpYmxlKTtcbiAgICAgIG9uKEVWRU5UX0hJRERFTiwgb25IaWRkZW4pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGZvckVhY2goKFNsaWRlKSA9PiB7XG4gICAgICBjb25zdCB7IHNsaWRlIH0gPSBTbGlkZTtcbiAgICAgIHRvZ2dsZVRhYkluZGV4KHNsaWRlLCBmYWxzZSk7XG4gICAgICBnZXRSb3dzSW4oc2xpZGUpLmZvckVhY2goKGNlbGwpID0+IHtcbiAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNlbGwsIFwic3R5bGVcIik7XG4gICAgICB9KTtcbiAgICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sU2xpZGUpID0+IHtcbiAgICAgICAgY292ZXIoY29sU2xpZGUsIHRydWUpO1xuICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29sU2xpZGUsIFwic3R5bGVcIik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXN0cm95RXZlbnQoKTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXQoKSB7XG4gICAgZm9yRWFjaCgoU2xpZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc2xpZGUgfSA9IFNsaWRlO1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gRGltZW5zaW9uLmdldChTbGlkZS5pc0Nsb25lID8gU2xpZGUuc2xpZGVJbmRleCA6IFNsaWRlLmluZGV4KTtcbiAgICAgIGxheW91dFJvdyhyb3dzLCBzbGlkZSk7XG4gICAgICBsYXlvdXRDb2woY29scywgc2xpZGUpO1xuICAgICAgZ2V0Q29sc0luKFNsaWRlLnNsaWRlKS5mb3JFYWNoKChjb2xTbGlkZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29sU2xpZGUuaWQgPSBgJHtTbGlkZS5zbGlkZS5pZH0tY29sJHtwYWQoaW5kZXggKyAxKX1gO1xuICAgICAgICBpZiAoU3BsaWRlMi5vcHRpb25zLmNvdmVyKSB7XG4gICAgICAgICAgY292ZXIoY29sU2xpZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXRSb3cocm93cywgc2xpZGUpIHtcbiAgICBjb25zdCB7IHJvdzogcm93R2FwIH0gPSBncmlkT3B0aW9ucy5nYXA7XG4gICAgY29uc3QgaGVpZ2h0ID0gYGNhbGMoJHsxMDAgLyByb3dzfSUke3Jvd0dhcCA/IGAgLSAke3VuaXQocm93R2FwKX0gKiAkeyhyb3dzIC0gMSkgLyByb3dzfWAgOiBcIlwifSlgO1xuICAgIGdldFJvd3NJbihzbGlkZSkuZm9yRWFjaCgocm93RWxtLCBpbmRleCwgcm93RWxtcykgPT4ge1xuICAgICAgc3R5bGUocm93RWxtLCBcImhlaWdodFwiLCBoZWlnaHQpO1xuICAgICAgc3R5bGUocm93RWxtLCBcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuICAgICAgc3R5bGUocm93RWxtLCBcIm1hcmdpblwiLCBgMCAwICR7dW5pdChyb3dHYXApfSAwYCk7XG4gICAgICBzdHlsZShyb3dFbG0sIFwicGFkZGluZ1wiLCAwKTtcbiAgICAgIGlmIChpbmRleCA9PT0gcm93RWxtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHN0eWxlKHJvd0VsbSwgXCJtYXJnaW5Cb3R0b21cIiwgMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gbGF5b3V0Q29sKGNvbHMsIHNsaWRlKSB7XG4gICAgY29uc3QgeyBjb2w6IGNvbEdhcCB9ID0gZ3JpZE9wdGlvbnMuZ2FwO1xuICAgIGNvbnN0IHdpZHRoID0gYGNhbGMoJHsxMDAgLyBjb2xzfSUke2NvbEdhcCA/IGAgLSAke3VuaXQoY29sR2FwKX0gKiAkeyhjb2xzIC0gMSkgLyBjb2xzfWAgOiBcIlwifSlgO1xuICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sRWxtLCBpbmRleCwgY29sRWxtcykgPT4ge1xuICAgICAgc3R5bGUoY29sRWxtLCBcIndpZHRoXCIsIHdpZHRoKTtcbiAgICAgIGlmIChpbmRleCAhPT0gY29sRWxtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHN0eWxlKGNvbEVsbSwgcmVzb2x2ZShcIm1hcmdpblJpZ2h0XCIpLCB1bml0KGNvbEdhcCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNvdmVyKGNvbFNsaWRlLCB1bmNvdmVyKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY2hpbGQoY29sU2xpZGUsIGAuJHtDTEFT
10991U19DT05UQUlORVJ9YCk7XG4gICAgY29uc3QgaW1nID0gY2hpbGQoY29udGFpbmVyIHx8IGNvbFNsaWRlLCBcImltZ1wiKTtcbiAgICBpZiAoaW1nICYmIGltZy5zcmMpIHtcbiAgICAgIHN0eWxlKGNvbnRhaW5lciB8fCBjb2xTbGlkZSwgXCJiYWNrZ3JvdW5kXCIsIHVuY292ZXIgPyBcIlwiIDogYGNlbnRlci9jb3ZlciBuby1yZXBlYXQgdXJsKFwiJHtpbWcuc3JjfVwiKWApO1xuICAgICAgc3R5bGUoaW1nLCBcImRpc3BsYXlcIiwgdW5jb3ZlciA/IFwiXCIgOiBcIm5vbmVcIik7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFJvd3NJbihzbGlkZSkge1xuICAgIHJldHVybiBxdWVyeUFsbChzbGlkZSwgYC4ke0NMQVNTX1NMSURFX1JPV31gKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRDb2xzSW4oc2xpZGUpIHtcbiAgICByZXR1cm4gcXVlcnlBbGwoc2xpZGUsIGAuJHtDTEFTU19TTElERV9DT0x9YCk7XG4gIH1cbiAgZnVuY3Rpb24gdG9nZ2xlVGFiSW5kZXgoc2xpZGUsIGFkZCkge1xuICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sU2xpZGUpID0+IHtcbiAgICAgIHNldEF0dHJpYnV0ZShjb2xTbGlkZSwgXCJ0YWJpbmRleFwiLCBhZGQgPyAwIDogbnVsbCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb25WaXNpYmxlKFNsaWRlKSB7XG4gICAgdG9nZ2xlVGFiSW5kZXgoU2xpZGUuc2xpZGUsIHRydWUpO1xuICB9XG4gIGZ1bmN0aW9uIG9uSGlkZGVuKFNsaWRlKSB7XG4gICAgdG9nZ2xlVGFiSW5kZXgoU2xpZGUuc2xpZGUsIGZhbHNlKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1vdW50LFxuICAgIGRlc3Ryb3lcbiAgfTtcbn1cblxuZnVuY3Rpb24gR3JpZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICBjb25zdCB7IG9uLCBvZmYgfSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICBjb25zdCB7IEVsZW1lbnRzIH0gPSBDb21wb25lbnRzMjtcbiAgY29uc3QgZ3JpZE9wdGlvbnMgPSB7fTtcbiAgY29uc3QgRGltZW5zaW9uJDEgPSBEaW1lbnNpb24oZ3JpZE9wdGlvbnMpO1xuICBjb25zdCBMYXlvdXQkMSA9IExheW91dChTcGxpZGUyLCBncmlkT3B0aW9ucywgRGltZW5zaW9uJDEpO1xuICBjb25zdCBtb2RpZmllciA9IGAke0NMQVNTX1JPT1R9LS1ncmlkYDtcbiAgY29uc3Qgb3JpZ2luYWxTbGlkZXMgPSBbXTtcbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKEVWRU5UX1VQREFURUQsIGluaXQpO1xuICB9XG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgb21pdChncmlkT3B0aW9ucyk7XG4gICAgYXNzaWduKGdyaWRPcHRpb25zLCBERUZBVUxUUywgb3B0aW9ucy5ncmlkIHx8IHt9KTtcbiAgICBpZiAoc2hvdWxkQnVpbGQoKSkge1xuICAgICAgZGVzdHJveSgpO1xuICAgICAgcHVzaChvcmlnaW5hbFNsaWRlcywgRWxlbWVudHMuc2xpZGVzKTtcbiAgICAgIGFkZENsYXNzKFNwbGlkZTIucm9vdCwgbW9kaWZpZXIpO1xuICAgICAgYXBwZW5kKEVsZW1lbnRzLmxpc3QsIGJ1aWxkKCkpO1xuICAgICAgb2ZmKEVWRU5UX1JFRlJFU0gpO1xuICAgICAgb24oRVZFTlRfUkVGUkVTSCwgbGF5b3V0KTtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9IGVsc2UgaWYgKGlzQWN0aXZlKCkpIHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAoaXNBY3RpdmUoKSkge1xuICAgICAgY29uc3QgeyBzbGlkZXMgfSA9IEVsZW1lbnRzO1xuICAgICAgTGF5b3V0JDEuZGVzdHJveSgpO1xuICAgICAgb3JpZ2luYWxTbGlkZXMuZm9yRWFjaCgoc2xpZGUpID0+IHtcbiAgICAgICAgcmVtb3ZlQ2xhc3Moc2xpZGUsIENMQVNTX1NMSURFX0NPTCk7XG4gICAgICAgIGFwcGVuZChFbGVtZW50cy5saXN0LCBzbGlkZSk7XG4gICAgICB9KTtcbiAgICAgIHJlbW92ZShzbGlkZXMpO1xuICAgICAgcmVtb3ZlQ2xhc3MoU3BsaWRlMi5yb290LCBtb2RpZmllcik7XG4gICAgICBlbXB0eShzbGlkZXMpO1xuICAgICAgcHVzaChzbGlkZXMsIG9yaWdpbmFsU2xpZGVzKTtcbiAgICAgIGVtcHR5KG9yaWdpbmFsU2xpZGVzKTtcbiAgICAgIG9mZihFVkVOVF9SRUZSRVNIKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICBTcGxpZGUyLnJlZnJlc2goKTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXQoKSB7XG4gICAgaWYgKGlzQWN0aXZlKCkpIHtcbiAgICAgIExheW91dCQxLm1vdW50KCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgIGNvbnN0IG91dGVyU2xpZGVzID0gW107XG4gICAgbGV0IHJvdyA9IDAsIGNvbCA9IDA7XG4gICAgbGV0IG91dGVyU2xpZGUsIHJvd1NsaWRlO1xuICAgIG9yaWdpbmFsU2xpZGVzLmZvckVhY2goKHNsaWRlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gRGltZW5zaW9uJDEuZ2V0QXQoaW5kZXgpO1xuICAgICAgaWYgKCFjb2wpIHtcbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICBvdXRlclNsaWRlID0gY3JlYXRlKHNsaWRlLnRhZ05hbWUsIENMQVNTX1NMSURFKTtcbiAgICAgICAgICBvdXRlclNsaWRlcy5wdXNoKG91dGVyU2xpZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvd1NsaWRlID0gYnVpbGRSb3cocm93cywgc2xpZGUsIG91dGVyU2xpZGUpO1xuICAgICAgfVxuICAgICAgYnVpbGRDb2woY29scywgc2xpZGUsIHJvd1NsaWRlKTtcbiAgICAgIGlmICgrK2NvbCA+PSBjb2xzKSB7XG4gICAgICAgIGNvbCA9IDA7XG4gICAgICAgIHJvdyA9ICsrcm93ID49IHJvd3MgPyAwIDogcm93O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvdXRlclNsaWRlcztcbiAgfVxuICBmdW5jdGlvbiBidWlsZFJvdyhyb3dzLCBzbGlkZSwgb3V0ZXJTbGlkZSkge1xuICAgIGNvbnN0IHRhZyA9IHNsaWRlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJsaVwiID8gXCJ1bFwiIDogXCJkaXZcIjtcbiAgICByZXR1cm4gY3JlYXRlKHRhZywgQ0xBU1NfU0xJREVfUk9XLCBvdXRlclNsaWRlKTtcbiAgfVxuICBmdW5jdGlvbiBidWlsZENvbChjb2xzLCBzbGlkZSwgcm93U2xpZGUpIHtcbiAgICBhZGRDbGFzcyhzbGlkZSwgQ0xBU1NfU0xJREVfQ09MKTtcbiAgICBhcHBlbmQocm93U2xpZGUsIHNsaWRlKTtcbiAgICByZXR1cm4gc2xpZGU7XG4gIH1cbiAgZnVuY3Rpb24gc2hvdWxkQnVpbGQoKSB7XG4gICAgaWYgKG9wdGlvbnMuZ3JpZCkge1xuICAgICAgY29uc3QgeyByb3dzLCBjb2xzLCBkaW1lbnNpb25zIH0gPSBncmlkT3B0aW9ucztcbiAgICAgIHJldHVybi
10991Byb3dzID4gMSB8fCBjb2xzID4gMSB8fCBpc0FycmF5KGRpbWVuc2lvbnMpICYmIGRpbWVuc2lvbnMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgIHJldHVybiBoYXNDbGFzcyhTcGxpZGUyLnJvb3QsIG1vZGlmaWVyKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1vdW50LFxuICAgIGRlc3Ryb3lcbiAgfTtcbn1cblxuZXhwb3J0IHsgR3JpZCB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC9kaXN0L2pzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC5lc20uanNcbi8vIG1vZHVsZSBpZCA9IDIyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDUiXSwic291cmNlUm9vdCI6IiJ9
10992//# sourceURL=webpack-internal:///226
10993`)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AutoScroll; });
10994/*!
10995 * @splidejs/splide-extension-auto-scroll
10996 * Version  : 0.5.3
10997 * License  : MIT
10998 * Copyright: 2022 Naotoshi Fujita
10999 */
11000function empty(array) {
11001  array.length = 0;
11002}
11003
11004function slice$1(arrayLike, start, end) {
11005  return Array.prototype.slice.call(arrayLike, start, end);
11006}
11007
11008function apply$1(func) {
11009  return func.bind.apply(func, [null].concat(slice$1(arguments, 1)));
11010}
11011
11012function raf(func) {
11013  return requestAnimationFrame(func);
11014}
11015
11016function typeOf$1(type, subject) {
11017  return typeof subject === type;
11018}
11019
11020var isArray$1 = Array.isArray;
11021apply$1(typeOf$1, "function");
11022apply$1(typeOf$1, "string");
vendor: 12,838 bytes, lines 11023-11531
11023apply$1(typeOf$1, "undefined");
11024
11025function toArray$1(value) {
11026  return isArray$1(value) ? value : [value];
11027}
11028
11029function forEach$1(values, iteratee) {
11030  toArray$1(values).forEach(iteratee);
11031}
11032
11033var ownKeys$1 = Object.keys;
11034
11035function forOwn$1(object, iteratee, right) {
11036  if (object) {
11037    var keys = ownKeys$1(object);
11038    keys = right ? keys.reverse() : keys;
11039
11040    for (var i = 0; i < keys.length; i++) {
11041      var key = keys[i];
11042
11043      if (key !== "__proto__") {
11044        if (iteratee(object[key], key) === false) {
11045          break;
11046        }
11047      }
11048    }
11049  }
11050
11051  return object;
11052}
11053
11054function assign$1(object) {
11055  slice$1(arguments, 1).forEach(function (source) {
11056    forOwn$1(source, function (value, key) {
11057      object[key] = source[key];
11058    });
11059  });
11060  return object;
11061}
11062
11063var min$1 = Math.min;
11064
11065function EventBinder() {
11066  var listeners = [];
11067
11068  function bind(targets, events, callback, options) {
11069    forEachEvent(targets, events, function (target, event, namespace) {
11070      var isEventTarget = ("addEventListener" in target);
11071      var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback);
11072      isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback);
11073      listeners.push([target, event, namespace, callback, remover]);
11074    });
11075  }
11076
11077  function unbind(targets, events, callback) {
11078    forEachEvent(targets, events, function (target, event, namespace) {
11079      listeners = listeners.filter(function (listener) {
11080        if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {
11081          listener[4]();
11082          return false;
11083        }
11084
11085        return true;
11086      });
11087    });
11088  }
11089
11090  function dispatch(target, type, detail) {
11091    var e;
11092    var bubbles = true;
11093
11094    if (typeof CustomEvent === "function") {
11095      e = new CustomEvent(type, {
11096        bubbles: bubbles,
11097        detail: detail
11098      });
11099    } else {
11100      e = document.createEvent("CustomEvent");
11101      e.initCustomEvent(type, bubbles, false, detail);
11102    }
11103
11104    target.dispatchEvent(e);
11105    return e;
11106  }
11107
11108  function forEachEvent(targets, events, iteratee) {
11109    forEach$1(targets, function (target) {
11110      target && forEach$1(events, function (events2) {
11111        events2.split(" ").forEach(function (eventNS) {
11112          var fragment = eventNS.split(".");
11113          iteratee(target, fragment[0], fragment[1]);
11114        });
11115      });
11116    });
11117  }
11118
11119  function destroy() {
11120    listeners.forEach(function (data) {
11121      data[4]();
11122    });
11123    empty(listeners);
11124  }
11125
11126  return {
11127    bind: bind,
11128    unbind: unbind,
11129    dispatch: dispatch,
11130    destroy: destroy
11131  };
11132}
11133var EVENT_MOVE = "move";
11134var EVENT_MOVED = "moved";
11135var EVENT_UPDATED = "updated";
11136var EVENT_DRAG = "drag";
11137var EVENT_DRAGGED = "dragged";
11138var EVENT_SCROLL = "scroll";
11139var EVENT_SCROLLED = "scrolled";
11140var EVENT_DESTROY = "destroy";
11141
11142function EventInterface(Splide2) {
11143  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
11144  var binder = EventBinder();
11145
11146  function on(events, callback) {
11147    binder.bind(bus, toArray$1(events).join(" "), function (e) {
11148      callback.apply(callback, isArray$1(e.detail) ? e.detail : []);
11149    });
11150  }
11151
11152  function emit(event) {
11153    binder.dispatch(bus, event, slice$1(arguments, 1));
11154  }
11155
11156  if (Splide2) {
11157    Splide2.event.on(EVENT_DESTROY, binder.destroy);
11158  }
11159
11160  return assign$1(binder, {
11161    bus: bus,
11162    on: on,
11163    off: apply$1(binder.unbind, bus),
11164    emit: emit
11165  });
11166}
11167
11168function RequestInterval(interval, onInterval, onUpdate, limit) {
11169  var now = Date.now;
11170  var startTime;
11171  var rate = 0;
11172  var id;
11173  var paused = true;
11174  var count = 0;
11175
11176  function update() {
11177    if (!paused) {
11178      rate = interval ? min$1((now() - startTime) / interval, 1) : 1;
11179      onUpdate && onUpdate(rate);
11180
11181      if (rate >= 1) {
11182        onInterval();
11183        startTime = now();
11184
11185        if (limit && ++count >= limit) {
11186          return pause();
11187        }
11188      }
11189
11190      raf(update);
11191    }
11192  }
11193
11194  function start(resume) {
11195    !resume && cancel();
11196    startTime = now() - (resume ? rate * interval : 0);
11197    paused = false;
11198    raf(update);
11199  }
11200
11201  function pause() {
11202    paused = true;
11203  }
11204
11205  function rewind() {
11206    startTime = now();
11207    rate = 0;
11208
11209    if (onUpdate) {
11210      onUpdate(rate);
11211    }
11212  }
11213
11214  function cancel() {
11215    id && cancelAnimationFrame(id);
11216    rate = 0;
11217    id = 0;
11218    paused = true;
11219  }
11220
11221  function set(time) {
11222    interval = time;
11223  }
11224
11225  function isPaused() {
11226    return paused;
11227  }
11228
11229  return {
11230    start: start,
11231    rewind: rewind,
11232    pause: pause,
11233    cancel: cancel,
11234    set: set,
11235    isPaused: isPaused
11236  };
11237}
11238
11239function Throttle(func, duration) {
11240  var interval;
11241
11242  function throttled() {
11243    if (!interval) {
11244      interval = RequestInterval(duration || 0, function () {
11245        func();
11246        interval = null;
11247      }, null, 1);
11248      interval.start();
11249    }
11250  }
11251
11252  return throttled;
11253}
11254var CLASS_ACTIVE = "is-active";
11255
11256var SLIDE = "slide";
11257var FADE = "fade";
11258
11259function slice(arrayLike, start, end) {
11260  return Array.prototype.slice.call(arrayLike, start, end);
11261}
11262
11263function apply(func) {
11264  return func.bind(null, ...slice(arguments, 1));
11265}
11266
11267function typeOf(type, subject) {
11268  return typeof subject === type;
11269}
11270function isObject(subject) {
11271  return !isNull(subject) && typeOf("object", subject);
11272}
11273const isArray = Array.isArray;
11274apply(typeOf, "function");
11275apply(typeOf, "string");
11276const isUndefined = apply(typeOf, "undefined");
11277function isNull(subject) {
11278  return subject === null;
11279}
11280
11281function toArray(value) {
11282  return isArray(value) ? value : [value];
11283}
11284
11285function forEach(values, iteratee) {
11286  toArray(values).forEach(iteratee);
11287}
11288
11289function toggleClass(elm, classes, add) {
11290  if (elm) {
11291    forEach(classes, (name) => {
11292      if (name) {
11293        elm.classList[add ? "add" : "remove"](name);
11294      }
11295    });
11296  }
11297}
11298
11299const ownKeys = Object.keys;
11300
11301function forOwn(object, iteratee, right) {
11302  if (object) {
11303    let keys = ownKeys(object);
11304    keys = right ? keys.reverse() : keys;
11305    for (let i = 0; i < keys.length; i++) {
11306      const key = keys[i];
11307      if (key !== "__proto__") {
11308        if (iteratee(object[key], key) === false) {
11309          break;
11310        }
11311      }
11312    }
11313  }
11314  return object;
11315}
11316
11317function assign(object) {
11318  slice(arguments, 1).forEach((source) => {
11319    forOwn(source, (value, key) => {
11320      object[key] = source[key];
11321    });
11322  });
11323  return object;
11324}
11325
11326function removeAttribute(elms, attrs) {
11327  forEach(elms, (elm) => {
11328    forEach(attrs, (attr) => {
11329      elm && elm.removeAttribute(attr);
11330    });
11331  });
11332}
11333
11334function setAttribute(elms, attrs, value) {
11335  if (isObject(attrs)) {
11336    forOwn(attrs, (value2, name) => {
11337      setAttribute(elms, name, value2);
11338    });
11339  } else {
11340    forEach(elms, (elm) => {
11341      isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));
11342    });
11343  }
11344}
11345
11346const { min, max, floor, ceil, abs } = Math;
11347
11348function clamp(number, x, y) {
11349  const minimum = min(x, y);
11350  const maximum = max(x, y);
11351  return min(max(minimum, number), maximum);
11352}
11353
11354const DEFAULTS = {
11355  speed: 1,
11356  autoStart: true,
11357  pauseOnHover: true,
11358  pauseOnFocus: true
11359};
11360
11361const I18N = {
11362  startScroll: "Start auto scroll",
11363  pauseScroll: "Pause auto scroll"
11364};
11365
11366function AutoScroll(Splide2, Components2, options) {
11367  const { on, off, bind, unbind } = EventInterface(Splide2);
11368  const { translate, getPosition, toIndex, getLimit } = Components2.Move;
11369  const { setIndex, getIndex } = Components2.Controller;
11370  const { orient } = Components2.Direction;
11371  const { toggle } = Components2.Elements;
11372  const { Live } = Components2;
11373  const { root } = Splide2;
11374  const throttledUpdateArrows = Throttle(Components2.Arrows.update, 500);
11375  let autoScrollOptions = {};
11376  let interval;
11377  let stopped;
11378  let hovered;
11379  let focused;
11380  let busy;
11381  let currPosition;
11382  function setup() {
11383    const { autoScroll } = options;
11384    autoScrollOptions = assign({}, DEFAULTS, isObject(autoScroll) ? autoScroll : {});
11385  }
11386  function mount() {
11387    if (!Splide2.is(FADE)) {
11388      if (!interval && options.autoScroll !== false) {
11389        interval = RequestInterval(0, move);
11390        listen();
11391        autoStart();
11392      }
11393    }
11394  }
11395  function destroy() {
11396    if (interval) {
11397      interval.cancel();
11398      interval = null;
11399      currPosition = void 0;
11400      off([EVENT_MOVE, EVENT_DRAG, EVENT_SCROLL, EVENT_MOVED, EVENT_SCROLLED]);
11401      unbind(root, "mouseenter mouseleave focusin focusout");
11402      unbind(toggle, "click");
11403    }
11404  }
11405  function listen() {
11406    if (autoScrollOptions.pauseOnHover) {
11407      bind(root, "mouseenter mouseleave", (e) => {
11408        hovered = e.type === "mouseenter";
11409        autoToggle();
11410      });
11411    }
11412    if (autoScrollOptions.pauseOnFocus) {
11413      bind(root, "focusin focusout", (e) => {
11414        focused = e.type === "focusin";
11415        autoToggle();
11416      });
11417    }
11418    if (autoScrollOptions.useToggleButton) {
11419      bind(toggle, "click", () => {
11420        stopped ? play() : pause();
11421      });
11422    }
11423    on(EVENT_UPDATED, update);
11424    on([EVENT_MOVE, EVENT_DRAG, EVENT_SCROLL], () => {
11425      busy = true;
11426      pause(false);
11427    });
11428    on([EVENT_MOVED, EVENT_DRAGGED, EVENT_SCROLLED], () => {
11429      busy = false;
11430      autoToggle();
11431    });
11432  }
11433  function update() {
11434    const { autoScroll } = options;
11435    if (autoScroll !== false) {
11436      autoScrollOptions = assign({}, autoScrollOptions, isObject(autoScroll) ? autoScroll : {});
11437      mount();
11438    } else {
11439      destroy();
11440    }
11441    if (interval && !isUndefined(currPosition)) {
11442      translate(currPosition);
11443    }
11444  }
11445  function autoStart() {
11446    if (autoScrollOptions.autoStart) {
11447      if (document.readyState === "complete") {
11448        play();
11449      } else {
11450        bind(window, "load", play);
11451      }
11452    }
11453  }
11454  function play() {
11455    if (isPaused()) {
11456      interval.start(true);
11457      Live.disable(true);
11458      focused = hovered = stopped = false;
11459      updateButton();
11460    }
11461  }
11462  function pause(stop = true) {
11463    if (!stopped) {
11464      stopped = stop;
11465      updateButton();
11466      if (!isPaused()) {
11467        interval.pause();
11468        Live.disable(false);
11469      }
11470    }
11471  }
11472  function autoToggle() {
11473    if (!stopped) {
11474      hovered || focused || busy ? pause(false) : play();
11475    }
11476  }
11477  function move() {
11478    const position = getPosition();
11479    const destination = computeDestination(position);
11480    if (position !== destination) {
11481      translate(destination);
11482      updateIndex(currPosition = getPosition());
11483    } else {
11484      pause(false);
11485      if (autoScrollOptions.rewind) {
11486        Splide2.go(autoScrollOptions.speed > 0 ? 0 : Components2.Controller.getEnd());
11487      }
11488    }
11489    throttledUpdateArrows();
11490  }
11491  function computeDestination(position) {
11492    const speed = autoScrollOptions.speed || 1;
11493    position += orient(speed);
11494    if (Splide2.is(SLIDE)) {
11495      position = clamp(position, getLimit(false), getLimit(true));
11496    }
11497    return position;
11498  }
11499  function updateIndex(position) {
11500    const { length } = Splide2;
11501    const index = (toIndex(position) + length) % length;
11502    if (index !== getIndex()) {
11503      setIndex(index);
11504      Components2.Slides.update();
11505      Components2.Pagination.update();
11506      options.lazyLoad === "nearby" && Components2.LazyLoad.check();
11507    }
11508  }
11509  function updateButton() {
11510    if (toggle) {
11511      const key = stopped ? "startScroll" : "pauseScroll";
11512      toggleClass(toggle, CLASS_ACTIVE, !stopped);
11513      setAttribute(toggle, "aria-label", options.i18n[key] || I18N[key]);
11514    }
11515  }
11516  function isPaused() {
11517    return !interval || interval.isPaused();
11518  }
11519  return {
11520    setup,
11521    mount,
11522    destroy,
11523    play,
11524    pause,
11525    isPaused
11526  };
11527}
11528
11529
11530
11531//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tYXV0by1zY3JvbGwvZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLWF1dG8tc2Nyb2xsLmVzbS5qcz9mMzE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtB
11531QUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsT0FBTyw2QkFBNkI7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyw0Q0FBNEM7QUFDckQsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxTQUFTO0FBQ2xCLFNBQVMsU0FBUztBQUNsQixTQUFTLE9BQU87QUFDaEIsU0FBUyxPQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixpQ0FBaUMsa0RBQWtEO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QjtBQUNBLG1DQUFtQywyREFBMkQ7QUFDOUY7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFc0IiLCJmaWxlIjoiMjI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1hdXRvLXNjcm9sbFxuICogVmVyc2lvbiAgOiAwLjUuM1xuICogTGljZW5zZSAgOiBNSVRcbiAqIENvcHlyaWdodDogMjAyMiBOYW90b3NoaSBGdWppdGFcbiAqL1xuZnVuY3Rpb24gZW1wdHkoYXJyYXkpIHtcbiAgYXJyYXkubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2xpY2UkMShhcnJheUxpa2UsIHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycmF5TGlrZSwgc3RhcnQsIGVuZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5JDEoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UkMShhcmd1bWVudHMsIDEpKSk7XG59XG5cbmZ1bmN0aW9uIHJhZihmdW5jKSB7XG4gIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuYyk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZiQxKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG52YXIgaXNBcnJheSQxID0gQXJyYXkuaXNBcnJheTtcbmFwcGx5JDEodHlwZU9mJDEsIFwiZnVuY3Rpb25cIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInN0cmluZ1wiKTtcbmFwcGx5JDEodHlwZU9mJDEsIFwidW5kZWZpbmVkXCIpO1xuXG5mdW5jdGlvbiB0b0FycmF5JDEodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkkMSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2gkMSh2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gIHRvQXJyYXkkMSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG52YXIgb3duS2V5cyQxID0gT2JqZWN0LmtleXM7XG5cbmZ1bmN0aW9uIGZvck93biQxKG9iamVjdCwgaXRlcmF0ZWUsIHJpZ2h0KSB7XG4gIGlmIChvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IG93bktleXMkMShvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmIChrZXkgIT09IFwiX19wcm90b19fXCIpIHtcbiAgICAgICAgaWYgKGl0ZXJhdGVlKG9iamVjdFtrZXldLCBrZXkpID09PSBmYWxzZSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduJDEob2JqZWN0KSB7XG4gIHNsaWNlJDEoYXJndW1lbnRzLCAxKS5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICBmb3JPd24kMShzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxudmFyIG1pbiQxID0gTWF0aC5taW47XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgI
11531H1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2gkMSh0YXJnZXRzLCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgJiYgZm9yRWFjaCQxKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50czIpIHtcbiAgICAgICAgZXZlbnRzMi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROUykge1xuICAgICAgICAgIHZhciBmcmFnbWVudCA9IGV2ZW50TlMuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgIGl0ZXJhdGVlKHRhcmdldCwgZnJhZ21lbnRbMF0sIGZyYWdtZW50WzFdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGRhdGFbNF0oKTtcbiAgICB9KTtcbiAgICBlbXB0eShsaXN0ZW5lcnMpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiaW5kOiBiaW5kLFxuICAgIHVuYmluZDogdW5iaW5kLFxuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcbiAgICBkZXN0cm95OiBkZXN0cm95XG4gIH07XG59XG52YXIgRVZFTlRfTU9WRSA9IFwibW92ZVwiO1xudmFyIEVWRU5UX01PVkVEID0gXCJtb3ZlZFwiO1xudmFyIEVWRU5UX1VQREFURUQgPSBcInVwZGF0ZWRcIjtcbnZhciBFVkVOVF9EUkFHID0gXCJkcmFnXCI7XG52YXIgRVZFTlRfRFJBR0dFRCA9IFwiZHJhZ2dlZFwiO1xudmFyIEVWRU5UX1NDUk9MTCA9IFwic2Nyb2xsXCI7XG52YXIgRVZFTlRfU0NST0xMRUQgPSBcInNjcm9sbGVkXCI7XG52YXIgRVZFTlRfREVTVFJPWSA9IFwiZGVzdHJveVwiO1xuXG5mdW5jdGlvbiBFdmVudEludGVyZmFjZShTcGxpZGUyKSB7XG4gIHZhciBidXMgPSBTcGxpZGUyID8gU3BsaWRlMi5ldmVudC5idXMgOiBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIHZhciBiaW5kZXIgPSBFdmVudEJpbmRlcigpO1xuXG4gIGZ1bmN0aW9uIG9uKGV2ZW50cywgY2FsbGJhY2spIHtcbiAgICBiaW5kZXIuYmluZChidXMsIHRvQXJyYXkkMShldmVudHMpLmpvaW4oXCIgXCIpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY2FsbGJhY2suYXBwbHkoY2FsbGJhY2ssIGlzQXJyYXkkMShlLmRldGFpbCkgPyBlLmRldGFpbCA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXQoZXZlbnQpIHtcbiAgICBiaW5kZXIuZGlzcGF0Y2goYnVzLCBldmVudCwgc2xpY2UkMShhcmd1bWVudHMsIDEpKTtcbiAgfVxuXG4gIGlmIChTcGxpZGUyKSB7XG4gICAgU3BsaWRlMi5ldmVudC5vbihFVkVOVF9ERVNUUk9ZLCBiaW5kZXIuZGVzdHJveSk7XG4gIH1cblxuICByZXR1cm4gYXNzaWduJDEoYmluZGVyLCB7XG4gICAgYnVzOiBidXMsXG4gICAgb246IG9uLFxuICAgIG9mZjogYXBwbHkkMShiaW5kZXIudW5iaW5kLCBidXMpLFxuICAgIGVtaXQ6IGVtaXRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RJbnRlcnZhbChpbnRlcnZhbCwgb25JbnRlcnZhbCwgb25VcGRhdGUsIGxpbWl0KSB7XG4gIHZhciBub3cgPSBEYXRlLm5vdztcbiAgdmFyIHN0YXJ0VGltZTtcbiAgdmFyIHJhdGUgPSAwO1xuICB2YXIgaWQ7XG4gIHZhciBwYXVzZWQgPSB0cnVlO1xuICB2YXIgY291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXBhdXNlZCkge1xuICAgICAgcmF0ZSA9IGludGVydmFsID8gbWluJDEoKG5vdygpIC0gc3RhcnRUaW1lKSAvIGludGVydmFsLCAxKSA6IDE7XG4gICAgICBvblVwZGF0ZSAmJiBvblVwZGF0ZShyYXRlKTtcblxuICAgICAgaWYgKHJhdGUgPj0gMSkge1xuICAgICAgICBvbkludGVydmFsKCk7XG4gICAgICAgIHN0YXJ0VGltZSA9IG5vdygpO1xuXG4gICAgICAgIGlmIChsaW1pdCAmJiArK2NvdW50ID49IGxpbWl0KSB7XG4gICAgICAgICAgcmV0dXJuIHBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmFmKHVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQocmVzdW1lKSB7XG4gICAgIXJlc3VtZSAmJiBjYW5jZWwoKTtcbiAgICBzdGFydFRpbWUgPSBub3coKSAtIChyZXN1bWUgPyByYXRlICogaW50ZXJ2YWwgOiAwKTtcbiAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICByYWYodXBkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiByZXdpbmQoKSB7XG4gICAgc3RhcnRUaW1lID0gbm93KCk7XG4gICAgcmF0ZSA9IDA7XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIG9uVXBkYXRlKHJhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICBpZCAmJiBjYW5jZWxBbmltYXRpb25GcmFtZShpZCk7XG4gICAgcmF0ZSA9IDA7XG4gICAgaWQgPSAwO1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBzZXQodGltZSkge1xuICAgIGludGVydmFsID0gdGltZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF1c2VkKCkge1xuICAgIHJldHVybiBwYXVzZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICByZXdpbmQ6IHJld2luZCxcbiAgICBwYXVzZTogcGF1c2UsXG4gICAgY2FuY2VsOiBjYW5jZWwsXG4gICAgc2V0OiBzZXQsXG4gICAgaXNQYXVzZWQ6IGlzUGF1c2VkXG4gIH07XG59XG5cbmZ1bmN0aW9uIFRocm90dGxlKGZ1bmMsIGR1cmF0aW9uKSB7XG4gIHZhciBpbnRlcnZhbDtcblxuICBmdW5jdGlvbiB0aHJvdHRsZWQoKSB7XG4gICAgaWYgKCFpbnRlcnZhbCkge1xuICAgICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24gfHwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jKCk7XG4gICAgICAgIGludGVydmFsID0gbnVsbDtcbiAgICAgIH0sIG51bGwsIDEpO1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoKTtcbiAgICB9XG4gI
11531H1cblxuICByZXR1cm4gdGhyb3R0bGVkO1xufVxudmFyIENMQVNTX0FDVElWRSA9IFwiaXMtYWN0aXZlXCI7XG5cbnZhciBTTElERSA9IFwic2xpZGVcIjtcbnZhciBGQURFID0gXCJmYWRlXCI7XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kKG51bGwsIC4uLnNsaWNlKGFyZ3VtZW50cywgMSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YodHlwZSwgc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IHR5cGU7XG59XG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuYXBwbHkodHlwZU9mLCBcInN0cmluZ1wiKTtcbmNvbnN0IGlzVW5kZWZpbmVkID0gYXBwbHkodHlwZU9mLCBcInVuZGVmaW5lZFwiKTtcbmZ1bmN0aW9uIGlzTnVsbChzdWJqZWN0KSB7XG4gIHJldHVybiBzdWJqZWN0ID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gIHRvQXJyYXkodmFsdWVzKS5mb3JFYWNoKGl0ZXJhdGVlKTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxtLCBjbGFzc2VzLCBhZGQpIHtcbiAgaWYgKGVsbSkge1xuICAgIGZvckVhY2goY2xhc3NlcywgKG5hbWUpID0+IHtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIGVsbS5jbGFzc0xpc3RbYWRkID8gXCJhZGRcIiA6IFwicmVtb3ZlXCJdKG5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IG93bktleXMgPSBPYmplY3Qua2V5cztcblxuZnVuY3Rpb24gZm9yT3duKG9iamVjdCwgaXRlcmF0ZWUsIHJpZ2h0KSB7XG4gIGlmIChvYmplY3QpIHtcbiAgICBsZXQga2V5cyA9IG93bktleXMob2JqZWN0KTtcbiAgICBrZXlzID0gcmlnaHQgPyBrZXlzLnJldmVyc2UoKSA6IGtleXM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYgKGtleSAhPT0gXCJfX3Byb3RvX19cIikge1xuICAgICAgICBpZiAoaXRlcmF0ZWUob2JqZWN0W2tleV0sIGtleSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduKG9iamVjdCkge1xuICBzbGljZShhcmd1bWVudHMsIDEpLmZvckVhY2goKHNvdXJjZSkgPT4ge1xuICAgIGZvck93bihzb3VyY2UsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQXR0cmlidXRlKGVsbXMsIGF0dHJzKSB7XG4gIGZvckVhY2goZWxtcywgKGVsbSkgPT4ge1xuICAgIGZvckVhY2goYXR0cnMsIChhdHRyKSA9PiB7XG4gICAgICBlbG0gJiYgZWxtLnJlbW92ZUF0dHJpYnV0ZShhdHRyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZShlbG1zLCBhdHRycywgdmFsdWUpIHtcbiAgaWYgKGlzT2JqZWN0KGF0dHJzKSkge1xuICAgIGZvck93bihhdHRycywgKHZhbHVlMiwgbmFtZSkgPT4ge1xuICAgICAgc2V0QXR0cmlidXRlKGVsbXMsIG5hbWUsIHZhbHVlMik7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgICBpc051bGwodmFsdWUpIHx8IHZhbHVlID09PSBcIlwiID8gcmVtb3ZlQXR0cmlidXRlKGVsbSwgYXR0cnMpIDogZWxtLnNldEF0dHJpYnV0ZShhdHRycywgU3RyaW5nKHZhbHVlKSk7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgeyBtaW4sIG1heCwgZmxvb3IsIGNlaWwsIGFicyB9ID0gTWF0aDtcblxuZnVuY3Rpb24gY2xhbXAobnVtYmVyLCB4LCB5KSB7XG4gIGNvbnN0IG1pbmltdW0gPSBtaW4oeCwgeSk7XG4gIGNvbnN0IG1heGltdW0gPSBtYXgoeCwgeSk7XG4gIHJldHVybiBtaW4obWF4KG1pbmltdW0sIG51bWJlciksIG1heGltdW0pO1xufVxuXG5jb25zdCBERUZBVUxUUyA9IHtcbiAgc3BlZWQ6IDEsXG4gIGF1dG9TdGFydDogdHJ1ZSxcbiAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICBwYXVzZU9uRm9jdXM6IHRydWVcbn07XG5cbmNvbnN0IEkxOE4gPSB7XG4gIHN0YXJ0U2Nyb2xsOiBcIlN0YXJ0IGF1dG8gc2Nyb2xsXCIsXG4gIHBhdXNlU2Nyb2xsOiBcIlBhdXNlIGF1dG8gc2Nyb2xsXCJcbn07XG5cbmZ1bmN0aW9uIEF1dG9TY3JvbGwoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgY29uc3QgeyBvbiwgb2ZmLCBiaW5kLCB1bmJpbmQgfSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICBjb25zdCB7IHRyYW5zbGF0ZSwgZ2V0UG9zaXRpb24sIHRvSW5kZXgsIGdldExpbWl0IH0gPSBDb21wb25lbnRzMi5Nb3ZlO1xuICBjb25zdCB7IHNldEluZGV4LCBnZXRJbmRleCB9ID0gQ29tcG9uZW50czIuQ29udHJvbGxlcjtcbiAgY29uc3QgeyBvcmllbnQgfSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbjtcbiAgY29uc3QgeyB0b2dnbGUgfSA9IENvbXBvbmVudHMyLkVsZW1lbnRzO1xuICBjb25zdCB7IExpdmUgfSA9IENvbXBvbmVudHMyO1xuICBjb25zdCB7IHJvb3QgfSA9IFNwbGlkZTI7XG4gIGNvbnN0IHRocm90dGxlZFVwZGF0ZUFycm93cyA9IFRocm90dGxlKENvbXBvbmVudHMyLkFycm93cy51cGRhdGUsIDUwMCk7XG4gIGxldCBhdXRvU2Nyb2xsT3B0aW9ucyA9IHt9O1xuICBsZXQgaW50ZXJ2YWw7XG4gIGxldCBzdG9wcGVkO1xuICBsZXQgaG92ZXJlZDtcbiAgbGV0IGZvY3VzZWQ7XG4gIGxldCBidXN5O1xuICBsZXQgY3VyclBvc2l0aW9uO1xuICBmdW5jdGlvbiBzZXR1cCgpIHtcbiAgICBjb25zdCB7IGF1dG9TY3JvbGwgfSA9IG9wdGlvbnM7XG4gICAgYXV0b1Njcm9sbE9wdGlvbnMgPSBhc3NpZ24oe30sIERFRkFVTFRTLCBpc09iamVjdChhdXRvU2Nyb2xsKSA/IGF1dG9TY3JvbGwgOiB7fSk7XG4gIH1cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKCFTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICBpZiAoIWludGVydmFsICYmIG9wdGlvbnMuYXV0b1Njcm9sbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoMCwgbW92ZSk7XG4gICAgICAgIGxpc3RlbigpO1xuICAgICAgICBhdXRvU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9XG4gI
11531H1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAoaW50ZXJ2YWwpIHtcbiAgICAgIGludGVydmFsLmNhbmNlbCgpO1xuICAgICAgaW50ZXJ2YWwgPSBudWxsO1xuICAgICAgY3VyclBvc2l0aW9uID0gdm9pZCAwO1xuICAgICAgb2ZmKFtFVkVOVF9NT1ZFLCBFVkVOVF9EUkFHLCBFVkVOVF9TQ1JPTEwsIEVWRU5UX01PVkVELCBFVkVOVF9TQ1JPTExFRF0pO1xuICAgICAgdW5iaW5kKHJvb3QsIFwibW91c2VlbnRlciBtb3VzZWxlYXZlIGZvY3VzaW4gZm9jdXNvdXRcIik7XG4gICAgICB1bmJpbmQodG9nZ2xlLCBcImNsaWNrXCIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBsaXN0ZW4oKSB7XG4gICAgaWYgKGF1dG9TY3JvbGxPcHRpb25zLnBhdXNlT25Ib3Zlcikge1xuICAgICAgYmluZChyb290LCBcIm1vdXNlZW50ZXIgbW91c2VsZWF2ZVwiLCAoZSkgPT4ge1xuICAgICAgICBob3ZlcmVkID0gZS50eXBlID09PSBcIm1vdXNlZW50ZXJcIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChhdXRvU2Nyb2xsT3B0aW9ucy5wYXVzZU9uRm9jdXMpIHtcbiAgICAgIGJpbmQocm9vdCwgXCJmb2N1c2luIGZvY3Vzb3V0XCIsIChlKSA9PiB7XG4gICAgICAgIGZvY3VzZWQgPSBlLnR5cGUgPT09IFwiZm9jdXNpblwiO1xuICAgICAgICBhdXRvVG9nZ2xlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGF1dG9TY3JvbGxPcHRpb25zLnVzZVRvZ2dsZUJ1dHRvbikge1xuICAgICAgYmluZCh0b2dnbGUsIFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICBzdG9wcGVkID8gcGxheSgpIDogcGF1c2UoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBvbihFVkVOVF9VUERBVEVELCB1cGRhdGUpO1xuICAgIG9uKFtFVkVOVF9NT1ZFLCBFVkVOVF9EUkFHLCBFVkVOVF9TQ1JPTExdLCAoKSA9PiB7XG4gICAgICBidXN5ID0gdHJ1ZTtcbiAgICAgIHBhdXNlKGZhbHNlKTtcbiAgICB9KTtcbiAgICBvbihbRVZFTlRfTU9WRUQsIEVWRU5UX0RSQUdHRUQsIEVWRU5UX1NDUk9MTEVEXSwgKCkgPT4ge1xuICAgICAgYnVzeSA9IGZhbHNlO1xuICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBjb25zdCB7IGF1dG9TY3JvbGwgfSA9IG9wdGlvbnM7XG4gICAgaWYgKGF1dG9TY3JvbGwgIT09IGZhbHNlKSB7XG4gICAgICBhdXRvU2Nyb2xsT3B0aW9ucyA9IGFzc2lnbih7fSwgYXV0b1Njcm9sbE9wdGlvbnMsIGlzT2JqZWN0KGF1dG9TY3JvbGwpID8gYXV0b1Njcm9sbCA6IHt9KTtcbiAgICAgIG1vdW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICB9XG4gICAgaWYgKGludGVydmFsICYmICFpc1VuZGVmaW5lZChjdXJyUG9zaXRpb24pKSB7XG4gICAgICB0cmFuc2xhdGUoY3VyclBvc2l0aW9uKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXV0b1N0YXJ0KCkge1xuICAgIGlmIChhdXRvU2Nyb2xsT3B0aW9ucy5hdXRvU3RhcnQpIHtcbiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgcGxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmluZCh3aW5kb3csIFwibG9hZFwiLCBwbGF5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGxheSgpIHtcbiAgICBpZiAoaXNQYXVzZWQoKSkge1xuICAgICAgaW50ZXJ2YWwuc3RhcnQodHJ1ZSk7XG4gICAgICBMaXZlLmRpc2FibGUodHJ1ZSk7XG4gICAgICBmb2N1c2VkID0gaG92ZXJlZCA9IHN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZUJ1dHRvbigpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZShzdG9wID0gdHJ1ZSkge1xuICAgIGlmICghc3RvcHBlZCkge1xuICAgICAgc3RvcHBlZCA9IHN0b3A7XG4gICAgICB1cGRhdGVCdXR0b24oKTtcbiAgICAgIGlmICghaXNQYXVzZWQoKSkge1xuICAgICAgICBpbnRlcnZhbC5wYXVzZSgpO1xuICAgICAgICBMaXZlLmRpc2FibGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdXRvVG9nZ2xlKCkge1xuICAgIGlmICghc3RvcHBlZCkge1xuICAgICAgaG92ZXJlZCB8fCBmb2N1c2VkIHx8IGJ1c3kgPyBwYXVzZShmYWxzZSkgOiBwbGF5KCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1vdmUoKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRQb3NpdGlvbigpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gY29tcHV0ZURlc3RpbmF0aW9uKHBvc2l0aW9uKTtcbiAgICBpZiAocG9zaXRpb24gIT09IGRlc3RpbmF0aW9uKSB7XG4gICAgICB0cmFuc2xhdGUoZGVzdGluYXRpb24pO1xuICAgICAgdXBkYXRlSW5kZXgoY3VyclBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdXNlKGZhbHNlKTtcbiAgICAgIGlmIChhdXRvU2Nyb2xsT3B0aW9ucy5yZXdpbmQpIHtcbiAgICAgICAgU3BsaWRlMi5nbyhhdXRvU2Nyb2xsT3B0aW9ucy5zcGVlZCA+IDAgPyAwIDogQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRFbmQoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm90dGxlZFVwZGF0ZUFycm93cygpO1xuICB9XG4gIGZ1bmN0aW9uIGNvbXB1dGVEZXN0aW5hdGlvbihwb3NpdGlvbikge1xuICAgIGNvbnN0IHNwZWVkID0gYXV0b1Njcm9sbE9wdGlvbnMuc3BlZWQgfHwgMTtcbiAgICBwb3NpdGlvbiArPSBvcmllbnQoc3BlZWQpO1xuICAgIGlmIChTcGxpZGUyLmlzKFNMSURFKSkge1xuICAgICAgcG9zaXRpb24gPSBjbGFtcChwb3NpdGlvbiwgZ2V0TGltaXQoZmFsc2UpLCBnZXRMaW1pdCh0cnVlKSk7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVJbmRleChwb3NpdGlvbikge1xuICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBTcGxpZGUyO1xuICAgIGNvbnN0IGluZGV4ID0gKHRvSW5kZXgocG9zaXRpb24pICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICBpZiAoaW5kZXggIT09IGdldEluZGV4KCkpIHtcbiAgICAgIHNldEluZGV4KGluZGV4KTtcbiAgICAgIENvbXBvbmVudHMyLlNsaWRlcy51cGRhdGUoKTtcbiAgICAgIENvbXBvbmVudHMyLlBhZ2luYX
11531Rpb24udXBkYXRlKCk7XG4gICAgICBvcHRpb25zLmxhenlMb2FkID09PSBcIm5lYXJieVwiICYmIENvbXBvbmVudHMyLkxhenlMb2FkLmNoZWNrKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUJ1dHRvbigpIHtcbiAgICBpZiAodG9nZ2xlKSB7XG4gICAgICBjb25zdCBrZXkgPSBzdG9wcGVkID8gXCJzdGFydFNjcm9sbFwiIDogXCJwYXVzZVNjcm9sbFwiO1xuICAgICAgdG9nZ2xlQ2xhc3ModG9nZ2xlLCBDTEFTU19BQ1RJVkUsICFzdG9wcGVkKTtcbiAgICAgIHNldEF0dHJpYnV0ZSh0b2dnbGUsIFwiYXJpYS1sYWJlbFwiLCBvcHRpb25zLmkxOG5ba2V5XSB8fCBJMThOW2tleV0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBpc1BhdXNlZCgpIHtcbiAgICByZXR1cm4gIWludGVydmFsIHx8IGludGVydmFsLmlzUGF1c2VkKCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzZXR1cCxcbiAgICBtb3VudCxcbiAgICBkZXN0cm95LFxuICAgIHBsYXksXG4gICAgcGF1c2UsXG4gICAgaXNQYXVzZWRcbiAgfTtcbn1cblxuZXhwb3J0IHsgQXV0b1Njcm9sbCB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tYXV0by1zY3JvbGwvZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLWF1dG8tc2Nyb2xsLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gMjI3XG4vLyBtb2R1bGUgY2h1bmtzID0gNSJdLCJzb3VyY2VSb290IjoiIn0=
11532//# sourceURL=webpack-internal:///227
11533`)}])})});var Nn=c(Q());var m=class{static{l(this,"Newsletter")}constructor(n,t){this.options=n,this.newsletterNode=document.getElementById(this.options.node),this.newsletterNode&&(this.data=new FormData,this.inputEmail=null,this.init())}init(){this.inputEmail=this.newsletterNode.querySelector('input[name="email"]');let n=this.newsletterNode.querySelector('input[type="checkbox"]'),t=this.newsletterNode.querySelector("button"),e=this.newsletterNode.dataset.msg,I=this.newsletterNode.dataset.check,B=this.newsletterNode.dataset.email;t.addEventListener("click",F=>{let b=this.inputEmail.value.trim(),J=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;if(!b){alert(e);return}if(!J.test(b)){alert(B);return}if(n&&!n.checked){n.classList.toggle(this.options.classFade),alert(I);return}this.data.append("email",b),this.country(),this.name(),this.infoComercial(),this.send(F)})}country(){let n=this.newsletterNode.querySelector('select[name="pais"]');if(n){let e=n.querySelector("option:checked").getAttribute("data-nombre");e!==""&&this.data.append("pais",e)}}name(){let n=this.newsletterNode.querySelector('input[name="nombre"]');if(n){let t=n.value;t!==""&&this.data.append("nombre",t)}}infoComercial(){let n=this.newsletterNode.querySelector('input[name="info_comercial"]');n&&(n.checked?this.data.append("info_comercial",!0):this.data.append("info_comercial",!1))}clearInput(){this.inputEmail.value=""}send(){let n=this.newsletterNode.dataset.url||this.options.urlAdd;fetch(n,{mode:"cors",method:"POST",body:this.data}).then(t=>t.json()).then(t=>{t.error||!t.error&&!t.solicita_cancelar?(alert(t.mensaje),t.error||this.clearInput()):(window.confirm(t.mensaje)||fetch("/newsletter_engine/remove-email/",{method:"POST",mode:"cors",body:this.data}).then(I=>I.json()).then(I=>{alert(I.mensaje)}).catch(I=>{alert(I)}),this.clearInput())}).catch(t=>{alert(t),this.clearInput()})}};new m({node:"newsletter",classFade:"fade-in-to-out",msg:"You must write your email",urlAdd:"/newsletter_engine/add-email/"});var hn=c(a()),Sn=c(s()),En=c(d());var y=document.querySelector(".navbar__hamburguer-btn"),p=document.querySelector(".navbar__close"),W=document.querySelector(".navbar__language"),R="navbar--open";y&&y.addEventListener("click",function(){document.querySelector(".navbar").classList.toggle(R),document.getElementsByTagName("body")[0].style.overflow="hidden"});p&&p.addEventListener("click",function(){document.querySelector(".navbar").classList.remove(R),document.getElementsByTagName("body")[0].style.overflow="visible"});W&&W.addEventListener("click",function(){this.classList.toggle("navbar__language--open")});var i=document.querySelector("#js-navigator"),z="engine-button__link",w=".navbar-caelum__hamburguer-btn",M=".navbar-caelum__close",v=document.querySelector(".engine"),u="navigator--fixed",N="navigator--animate",h="navigator__content--open",S="navigator--open",E="navbar-caelum__body--open",Y="navbar-caelum__hamburguer-ico--open";i&&(C=document.querySelector("body"),r=document.querySelector(".navbar-caelum__content"),V=document.querySelectorAll(".navbar-caelum__hamburguer-ico"),x=i.offsetTop+i.offsetHeight+100,C.classList.contains("bookings")?i.classList.add(u,"navigator--bookcore"):window.onscroll=function(){var g=window.scrollY;g>=x?(i.classList.add(u),setTimeout(function(){i.classList.contains(u)&&i.classList.add(N)},500)):i.classList.contains(u)&&(i.classList.remove(N),i.classList.remove(u),C.classList.remove(E),r.classList.remove(h),i.classList.remove(S),v.classList.remove("navigator__engine--open"),V.forEac
11533h(function(n){n.classList.remove(Y)}))},C.classList.add("navbar-caelum__body"),document.addEventListener("click",function(g){var n=g.target;(n.closest(w)||n.closest(M))&&K(),n.classList.contains(z)&&v.classList.toggle("navigator__engine--open")}));var C,r,V,x;function K(){C.classList.toggle(E),r.classList.toggle(h),r.classList.toggle("navbar-caelum__content--open"),V.forEach(function(g){g.classList.toggle(Y)}),i.classList.toggle(S)}l(K,"close");var Zn=c(Q());var Un=c(a()),mn=c(s()),Vn=c(d());var G=document.querySelector(".popup-antlia"),j=document.querySelector(".popup-antlia__close"),_=["left","right","bottom"];function P(g,n){g==="left"?G.style.left=n:g==="right"?G.style.right=n:g==="bottom"&&(G.style.bottom=n)}l(P,"validate");function X(g){_.forEach(function(n,t){G&&G.classList.contains("popup-antlia--"+n)&&P(n,g)})}l(X,"currentItem");document.addEventListener("DOMContentLoaded",function(){setTimeout(function(){X("0")},2e3);var g=setTimeout(function(){X("-100%")},15e3);function n(){X("-100%"),window.clearTimeout(g)}l(n,"close"),document.addEventListener("click",function(t){t.target===j&&n()}),document.addEventListener("keyup",function(t){t.key==="Escape"&&n()})});var o=class{static{l(this,"Multimedia")}constructor(n){this.options=n,this.body=document.querySelector("body"),this.modal=document.createElement("div"),this.buttons=document.querySelectorAll(this.options.buttonClass),this.close=this.options.closeId||"js-modal-close",this.iframeWidth=this.options.iframeWidth||"100%",this.iframeHeight=this.options.iframeHeight||"500px"}init(){this.buttons&&this.buttons.forEach(n=>{n.addEventListener("click",t=>{this.video=n.dataset.video,this.tour=n.dataset.tour,this.origen=n.dataset.origen,this.openModal()})})}openModal(){let n=null;this.video?!this.origen||parseInt(this.origen)===0?n="https://www.youtube-nocookie.com/embed/"+this.video+"?autoplay=1&amp;playlist="+this.video+"&amp;loop=1&amp;mute=1&amp;rel=0&amp;iv_load_policy=3":n="https://player.vimeo.com/video/"+this.video:this.tour&&(n=this.tour);let t=`
11534      <div class="modal-antlia__dialog">
11535          <div id="js-modal-close" class="modal-antlia__close"></div>
11536          <iframe id="ytplayer" src="${n}"
11537              style="width: ${this.iframeWidth}; height: ${this.iframeHeight}"
11538              allow="autoplay; encrypted-media" frameborder="0"
11539              referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>
11540          </iframe>
11541      </div>`;this.modal.classList.add("modal-antlia"),this.body.appendChild(this.modal),this.modal.innerHTML=t,setTimeout(()=>{this.modal.classList.add("in")},"100"),this.closeModal(this.modal)}closeModal(n){let t=n.querySelector("#"+this.close),e=n.querySelector("#ytplayer");t.addEventListener("click",function(I){n.classList.remove("in"),e&&setTimeout(()=>{e.remove()},"500")})}};var A=document.body;if(A.classList.contains("empleo")){let g=document.querySelector(".jobs-auriga__button--form"),n=document.querySelector(".jobs-auriga__button--offers"),t=document.querySelector(".dynamic-forms"),e=document.querySelector(".jobs-apus");g.addEventListener("click",()=>{t.classList.add("dynamic-forms--show"),e.classList.remove("jobs-apus--show")}),n.addEventListener("click",()=>{e.classList.add("jobs-apus--show"),t.classList.remove("dynamic-forms--show")}),new o({buttonClass:".video-aquila__link"}).init()}(A.classList.contains("oferta_detalle")||A.classList.contains("hotel_oferta_detalle"))&&document.querySelectorAll(".offers-corona-australis__item").forEach(function(n){let t=n.querySelector(".offers-corona-australis__hotel"),e=n.querySelector(".description-antlia");e.insertBefore(t,e.firstChild)});var q=document.querySelector('[data-toggle="dropdown"]'),$=document.querySelector(".dropdown-menu");q.addEventListener("click",()=>{$.classList.toggle("dropdown-menu--active")});var L=document.querySelector(".navbar__dropdown--nav"),nn=L.querySelector("ul");L.addEventListener("click",()=>{nn.classList.toggle("navbar__list-dropdown--active")});var en=document.querySelector(".navigator__engine");document.addEventListener("click",function(g){g.target.classList.contains("navigator__engine")&&en.classList.remove("navigator__engine--open")});
11541var In=document.querySelector(".js-hamburger"),tn=document.querySelector(".navbar-caelum__hamburguer-btn");In.addEventListener("click",()=>{tn.click()});var gn=document.querySelector(".page404"),ln=document.querySelector(".navigator__logo"),cn=document.querySelector(".navigator__navbar"),Bn=document.getElementById("js-navigator");gn&&(ln.remove(),cn.remove(),Bn.classList.remove("navigator--fixed","navigator--animate"));function bn(){let g=document.querySelector(".introduction-inner__button--more"),n=document.querySelector(".introduction-inner__button--less"),t=document.querySelector(".introduction-inner__paragraph--microsite");if(t&&g){let e=t.clientHeight,I="introduction-inner__paragraph--microsite-active",B="introduction-inner__button--active",F="introduction-inner__button--more-hidden",b="introduction-inner__button--less-show";e>=50&&g.classList.add(B),g.addEventListener("click",function(){n.classList.add(b),g.classList.add(F),t.classList.add(I)}),n.addEventListener("click",function(){n.classList.remove(b),g.classList.remove(F),t.classList.remove(I)})}}l(bn,"introductionParagraph");document.addEventListener("DOMContentLoaded",function(){bn()});})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.