You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

191 line
17 KiB

  1. /******/ (function() { // webpackBootstrap
  2. /******/ "use strict";
  3. /******/ var __webpack_modules__ = ({});
  4. /************************************************************************/
  5. /******/ // The module cache
  6. /******/ var __webpack_module_cache__ = {};
  7. /******/
  8. /******/ // The require function
  9. /******/ function __webpack_require__(moduleId) {
  10. /******/ // Check if module is in cache
  11. /******/ var cachedModule = __webpack_module_cache__[moduleId];
  12. /******/ if (cachedModule !== undefined) {
  13. /******/ return cachedModule.exports;
  14. /******/ }
  15. /******/ // Create a new module (and put it into the cache)
  16. /******/ var module = __webpack_module_cache__[moduleId] = {
  17. /******/ // no module.id needed
  18. /******/ // no module.loaded needed
  19. /******/ exports: {}
  20. /******/ };
  21. /******/
  22. /******/ // Execute the module function
  23. /******/ var threw = true;
  24. /******/ try {
  25. /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
  26. /******/ threw = false;
  27. /******/ } finally {
  28. /******/ if(threw) delete __webpack_module_cache__[moduleId];
  29. /******/ }
  30. /******/
  31. /******/ // Return the exports of the module
  32. /******/ return module.exports;
  33. /******/ }
  34. /******/
  35. /******/ // expose the modules object (__webpack_modules__)
  36. /******/ __webpack_require__.m = __webpack_modules__;
  37. /******/
  38. /************************************************************************/
  39. /******/ /* webpack/runtime/compat get default export */
  40. /******/ !function() {
  41. /******/ // getDefaultExport function for compatibility with non-harmony modules
  42. /******/ __webpack_require__.n = function(module) {
  43. /******/ var getter = module && module.__esModule ?
  44. /******/ function() { return module['default']; } :
  45. /******/ function() { return module; };
  46. /******/ __webpack_require__.d(getter, { a: getter });
  47. /******/ return getter;
  48. /******/ };
  49. /******/ }();
  50. /******/
  51. /******/ /* webpack/runtime/create fake namespace object */
  52. /******/ !function() {
  53. /******/ var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };
  54. /******/ var leafPrototypes;
  55. /******/ // create a fake namespace object
  56. /******/ // mode & 1: value is a module id, require it
  57. /******/ // mode & 2: merge all properties of value into the ns
  58. /******/ // mode & 4: return value when already ns object
  59. /******/ // mode & 16: return value when it's Promise-like
  60. /******/ // mode & 8|1: behave like require
  61. /******/ __webpack_require__.t = function(value, mode) {
  62. /******/ if(mode & 1) value = this(value);
  63. /******/ if(mode & 8) return value;
  64. /******/ if(typeof value === 'object' && value) {
  65. /******/ if((mode & 4) && value.__esModule) return value;
  66. /******/ if((mode & 16) && typeof value.then === 'function') return value;
  67. /******/ }
  68. /******/ var ns = Object.create(null);
  69. /******/ __webpack_require__.r(ns);
  70. /******/ var def = {};
  71. /******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
  72. /******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
  73. /******/ Object.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });
  74. /******/ }
  75. /******/ def['default'] = function() { return value; };
  76. /******/ __webpack_require__.d(ns, def);
  77. /******/ return ns;
  78. /******/ };
  79. /******/ }();
  80. /******/
  81. /******/ /* webpack/runtime/define property getters */
  82. /******/ !function() {
  83. /******/ // define getter functions for harmony exports
  84. /******/ __webpack_require__.d = function(exports, definition) {
  85. /******/ for(var key in definition) {
  86. /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
  87. /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
  88. /******/ }
  89. /******/ }
  90. /******/ };
  91. /******/ }();
  92. /******/
  93. /******/ /* webpack/runtime/ensure chunk */
  94. /******/ !function() {
  95. /******/ __webpack_require__.f = {};
  96. /******/ // This file contains only the entry chunk.
  97. /******/ // The chunk loading function for additional chunks
  98. /******/ __webpack_require__.e = function(chunkId) {
  99. /******/ return Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {
  100. /******/ __webpack_require__.f[key](chunkId, promises);
  101. /******/ return promises;
  102. /******/ }, []));
  103. /******/ };
  104. /******/ }();
  105. /******/
  106. /******/ /* webpack/runtime/get javascript chunk filename */
  107. /******/ !function() {
  108. /******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
  109. /******/ __webpack_require__.u = function(chunkId) {
  110. /******/ // return url for filenames based on template
  111. /******/ return "" + chunkId + ".js";
  112. /******/ };
  113. /******/ }();
  114. /******/
  115. /******/ /* webpack/runtime/hasOwnProperty shorthand */
  116. /******/ !function() {
  117. /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
  118. /******/ }();
  119. /******/
  120. /******/ /* webpack/runtime/make namespace object */
  121. /******/ !function() {
  122. /******/ // define __esModule on exports
  123. /******/ __webpack_require__.r = function(exports) {
  124. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  125. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  126. /******/ }
  127. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  128. /******/ };
  129. /******/ }();
  130. /******/
  131. /******/ /* webpack/runtime/startup entrypoint */
  132. /******/ !function() {
  133. /******/ __webpack_require__.X = function(result, chunkIds, fn) {
  134. /******/ // arguments: chunkIds, moduleId are deprecated
  135. /******/ var moduleId = chunkIds;
  136. /******/ if(!fn) chunkIds = result, fn = function() { return __webpack_require__(__webpack_require__.s = moduleId); };
  137. /******/ chunkIds.map(__webpack_require__.e, __webpack_require__)
  138. /******/ var r = fn();
  139. /******/ return r === undefined ? result : r;
  140. /******/ }
  141. /******/ }();
  142. /******/
  143. /******/ /* webpack/runtime/require chunk loading */
  144. /******/ !function() {
  145. /******/ // no baseURI
  146. /******/
  147. /******/ // object to store loaded chunks
  148. /******/ // "1" means "loaded", otherwise not loaded yet
  149. /******/ var installedChunks = {
  150. /******/ "webpack-runtime": 1
  151. /******/ };
  152. /******/
  153. /******/ // no on chunks loaded
  154. /******/
  155. /******/ var installChunk = function(chunk) {
  156. /******/ var moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;
  157. /******/ for(var moduleId in moreModules) {
  158. /******/ if(__webpack_require__.o(moreModules, moduleId)) {
  159. /******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
  160. /******/ }
  161. /******/ }
  162. /******/ if(runtime) runtime(__webpack_require__);
  163. /******/ for(var i = 0; i < chunkIds.length; i++)
  164. /******/ installedChunks[chunkIds[i]] = 1;
  165. /******/
  166. /******/ };
  167. /******/
  168. /******/ // require() chunk loading for javascript
  169. /******/ __webpack_require__.f.require = function(chunkId, promises) {
  170. /******/ // "1" is the signal for "already loaded"
  171. /******/ if(!installedChunks[chunkId]) {
  172. /******/ if("webpack-runtime" != chunkId) {
  173. /******/ installChunk(require("./" + __webpack_require__.u(chunkId)));
  174. /******/ } else installedChunks[chunkId] = 1;
  175. /******/ }
  176. /******/ };
  177. /******/
  178. /******/ module.exports = __webpack_require__;
  179. /******/ __webpack_require__.C = installChunk;
  180. /******/
  181. /******/ // no HMR
  182. /******/
  183. /******/ // no HMR manifest
  184. /******/ }();
  185. /******/
  186. /************************************************************************/
  187. /******/
  188. /******/
  189. /******/ })()
  190. ;
  191. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zdGFydHAvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vc3RhcnRwL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3N0YXJ0cC93ZWJwYWNrL3J1bnRpbWUvY3JlYXRlIGZha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9zdGFydHAvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3N0YXJ0cC93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL3N0YXJ0cC93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vc3RhcnRwL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vc3RhcnRwL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vc3RhcnRwL3dlYnBhY2svcnVudGltZS9zdGFydHVwIGVudHJ5cG9pbnQiLCJ3ZWJwYWNrOi8vc3RhcnRwL3dlYnBhY2svcnVudGltZS9yZXF1aXJlIGNodW5rIGxvYWRpbmciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztVQUFBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBLEVBQUU7VUFDRjtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOzs7OztXQy9CQTtXQUNBO1dBQ0E7V0FDQSxjQUFjLDBCQUEwQixFQUFFO1dBQzFDLGNBQWMsZUFBZTtXQUM3QixnQ0FBZ0MsWUFBWTtXQUM1QztXQUNBLEU7Ozs7O1dDUEEsc0RBQXNELG1DQUFtQyxFQUFFLGtCQUFrQixzQkFBc0I7V0FDbkk7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHNEQUFzRDtXQUN0RCxxQ0FBcUMsaUVBQWlFO1dBQ3RHLDZEQUE2RCx3QkFBd0IsbUJBQW1CLEdBQUcsRUFBRTtXQUM3RztXQUNBLDhCQUE4QixjQUFjO1dBQzVDO1dBQ0E7V0FDQSxFOzs7OztXQ3pCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHdDQUF3Qyx5Q0FBeUM7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxFQUFFO1dBQ0YsRTs7Ozs7V0NSQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLEU7Ozs7O1dDSkEsNkNBQTZDLHdEQUF3RCxFOzs7OztXQ0FyRztXQUNBO1dBQ0E7V0FDQSxzREFBc0Qsa0JBQWtCO1dBQ3hFO1dBQ0EsK0NBQStDLGNBQWM7V0FDN0QsRTs7Ozs7V0NOQTtXQUNBO1dBQ0E7V0FDQSw2Q0FBNkMsOERBQThEO1dBQzNHO1dBQ0E7V0FDQTtXQUNBLEM7Ozs7O1dDUEE7O1dBRUE7V0FDQTtXQUNBO1dBQ0E7V0FDQTs7V0FFQTs7V0FFQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsZUFBZSxxQkFBcUI7V0FDcEM7O1dBRUE7O1dBRUE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsR0FBRztXQUNIO1dBQ0E7O1dBRUE7V0FDQTs7V0FFQTs7V0FFQSxrQiIsImZpbGUiOiJ3ZWJwYWNrLXJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdHZhciB0aHJldyA9IHRydWU7XG5cdHRyeSB7XG5cdFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdFx0dGhyZXcgPSBmYWxzZTtcblx0fSBmaW5hbGx5IHtcblx0XHRpZih0aHJldykgZGVsZXRlIF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwidmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mID8gZnVuY3Rpb24ob2JqKSB7IHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsgfSA6IGZ1bmN0aW9uKG9iaikgeyByZXR1cm4gb2JqLl9fcHJvdG9fXzsgfTtcbnZhciBsZWFmUHJvdG90eXBlcztcbi8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuLy8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbi8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuLy8gbW9kZSAmIDE2OiByZXR1cm4gdmFsdWUgd2hlbiBpdCdzIFByb21pc2UtbGlrZVxuLy8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuX193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcblx0aWYobW9kZSAmIDEpIHZhbHVlID0gdGhpcyh2YWx1ZSk7XG5cdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG5cdGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUpIHtcblx0XHRpZigobW9kZSAmIDQpICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcblx0XHRpZigobW9kZSAmIDE2KSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHZhbHVlO1xuXHR9XG5cdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG5cdHZhciBkZWYgPSB7fTtcblx0bGVhZlByb3RvdHlwZXMgPSBsZWFmUHJvdG90eXBlcyB8fCBbbnVsbCwgZ2V0UHJvdG8oe30pLCBnZXRQcm90byhbXSksIGdldFByb3RvKGdldFByb3RvKV07XG5cdGZvcih2YXIgY3VycmVudCA9IG1vZGUgJiAyICYmIHZhbHVlOyB0eXBlb2YgY3VycmVudCA9PSAnb2JqZWN0JyAmJiAhfmxlYWZQcm90b3R5cGVzLmluZGV4T2YoY3VycmVudCk7IGN1cnJlbnQgPSBnZXRQcm90byhjdXJyZW50KSkge1xuXHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGN1cnJlbnQpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7IGRlZltrZXldID0gZnVuY3Rpb24oKSB7IHJldHVybiB2YWx1ZVtrZXldOyB9OyB9KTtcblx0fVxuXHRkZWZbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdmFsdWU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChucywgZGVmKTtcblx0cmV0dXJuIG5zO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZiA9IHt9O1xuLy8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLy8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5jdGlvbihjaHVua0lkKSB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZShmdW5jdGlvbihwcm9taXNlcywga2V5KSB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IGZ1bmN0aW9uKGNodW5rSWQpIHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uWCA9IGZ1bmN0aW9uKHJlc3VsdCwgY2h1bmtJZHMsIGZuKSB7XG5cdC8vIGFyZ3VtZW50czogY2h1bmtJZHMsIG1vZHVsZUlkIGFyZSBkZXByZWNhdGVkXG5cdHZhciBtb2R1bGVJZCA9IGNodW5rSWRzO1xuXHRpZighZm4pIGNodW5rSWRzID0gcmVzdWx0LCBmbiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBtb2R1bGVJZCk7IH07XG5cdGNodW5rSWRzLm1hcChfX3dlYnBhY2tfcmVxdWlyZV9fLmUsIF9fd2VicGFja19yZXF1aXJlX18pXG5cdHZhciByID0gZm4oKTtcblx0cmV0dXJuIHIgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHI7XG59IiwiLy8gbm8gYmFzZVVSSVxuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJsb2FkZWRcIiwgb3RoZXJ3aXNlIG5vdCBsb2FkZWQgeWV0XG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcIndlYnBhY2stcnVudGltZVwiOiAxXG59O1xuXG4vLyBubyBvbiBjaHVua3MgbG9hZGVkXG5cbnZhciBpbnN0YWxsQ2h1bmsgPSBmdW5jdGlvbihjaHVuaykge1xuXHR2YXIgbW9yZU1vZHVsZXMgPSBjaHVuay5tb2R1bGVzLCBjaHVua0lkcyA9IGNodW5rLmlkcywgcnVudGltZSA9IGNodW5rLnJ1bnRpbWU7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkc1tpXV0gPSAxO1xuXG59O1xuXG4vLyByZXF1aXJlKCkgY2h1bmsgbG9hZGluZyBmb3IgamF2YXNjcmlwdFxuX193ZWJwYWNrX3JlcXVpcmVfXy5mLnJlcXVpcmUgPSBmdW5jdGlvbihjaHVua0lkLCBwcm9taXNlcykge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKFwid2VicGFjay1ydW50aW1lXCIgIT0gY2h1bmtJZCkge1xuXHRcdFx0aW5zdGFsbENodW5rKHJlcXVpcmUoXCIuL1wiICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKSk7XG5cdFx0fSBlbHNlIGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDE7XG5cdH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXztcbl9fd2VicGFja19yZXF1aXJlX18uQyA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCJdLCJzb3VyY2VSb290IjoiIn0=