(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/StructV.ts");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/@ant-design/colors/dist/index.esm.js":
/*!***********************************************************!*\
!*** ./node_modules/@ant-design/colors/dist/index.esm.js ***!
\***********************************************************/
/*! exports provided: blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blue\", function() { return blue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cyan\", function() { return cyan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geekblue\", function() { return geekblue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gold\", function() { return gold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"green\", function() { return green; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"grey\", function() { return grey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lime\", function() { return lime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"magenta\", function() { return magenta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orange\", function() { return orange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetDarkPalettes\", function() { return presetDarkPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPalettes\", function() { return presetPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPrimaryColors\", function() { return presetPrimaryColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purple\", function() { return purple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"red\", function() { return red; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"volcano\", function() { return volcano; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"yellow\", function() { return yellow; });\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tinycolor2 */ \"./node_modules/tinycolor2/tinycolor.js\");\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tinycolor2__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}];\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = pColor.toHsv();\n var colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }).toHexString();\n patterns.push(colorString);\n }\n\n patterns.push(pColor.toHexString());\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = pColor.toHsv();\n\n var _colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }).toHexString();\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref) {\n var index = _ref.index,\n opacity = _ref.opacity;\n var darkColorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default.a.mix(opts.backgroundColor || '#141414', patterns[index], opacity * 100).toHexString();\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vY29sb3JzL2Rpc3QvaW5kZXguZXNtLmpzPzAwOWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQzs7QUFFbkMsZ0JBQWdCOztBQUVoQiwwQkFBMEI7O0FBRTFCLDJCQUEyQjs7QUFFM0IsMkJBQTJCOztBQUUzQiwyQkFBMkI7O0FBRTNCLHdCQUF3Qjs7QUFFeEIsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaURBQVM7O0FBRXhCLCtCQUErQixPQUFPO0FBQ3RDO0FBQ0Esc0JBQXNCLGlEQUFTO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBLGtCQUFrQixzQkFBc0I7QUFDeEM7O0FBRUEsdUJBQXVCLGlEQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixpREFBUztBQUNyQztBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTJLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2NvbG9ycy9kaXN0L2luZGV4LmVzbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aW55Y29sb3IgZnJvbSAndGlueWNvbG9yMic7XG5cbnZhciBodWVTdGVwID0gMjsgLy8g6Imy55u46Zi25qKvXG5cbnZhciBzYXR1cmF0aW9uU3RlcCA9IDAuMTY7IC8vIOmlseWSjOW6pumYtuair++8jOa1heiJsumDqOWIhlxuXG52YXIgc2F0dXJhdGlvblN0ZXAyID0gMC4wNTsgLy8g6aWx5ZKM5bqm6Zi25qKv77yM5rex6Imy6YOo5YiGXG5cbnZhciBicmlnaHRuZXNzU3RlcDEgPSAwLjA1OyAvLyDkuq7luqbpmLbmoq/vvIzmtYXoibLpg6jliIZcblxudmFyIGJyaWdodG5lc3NTdGVwMiA9IDAuMTU7IC8vIOS6ruW6pumYtuair++8jOa3seiJsumDqOWIhlxuXG52YXIgbGlnaHRDb2xvckNvdW50ID0gNTsgLy8g5rWF6Imy5pWw6YeP77yM5Li76Imy5LiKXG5cbnZhciBkYXJrQ29sb3JDb3VudCA9IDQ7IC8vIOa3seiJsuaVsOmHj++8jOS4u+iJsuS4i1xuLy8g5pqX6Imy5Li76aKY6aKc6Imy5pig5bCE5YWz57O76KGoXG5cbnZhciBkYXJrQ29sb3JNYXAgPSBbe1xuICBpbmRleDogNyxcbiAgb3BhY2l0eTogMC4xNVxufSwge1xuICBpbmRleDogNixcbiAgb3BhY2l0eTogMC4yNVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC4zXG59LCB7XG4gIGluZGV4OiA1LFxuICBvcGFjaXR5OiAwLjQ1XG59LCB7XG4gIGluZGV4OiA1LFxuICBvcGFjaXR5OiAwLjY1XG59LCB7XG4gIGluZGV4OiA1LFxuICBvcGFjaXR5OiAwLjg1XG59LCB7XG4gIGluZGV4OiA0LFxuICBvcGFjaXR5OiAwLjlcbn0sIHtcbiAgaW5kZXg6IDMsXG4gIG9wYWNpdHk6IDAuOTVcbn0sIHtcbiAgaW5kZXg6IDIsXG4gIG9wYWNpdHk6IDAuOTdcbn0sIHtcbiAgaW5kZXg6IDEsXG4gIG9wYWNpdHk6IDAuOThcbn1dO1xuXG5mdW5jdGlvbiBnZXRIdWUoaHN2LCBpLCBsaWdodCkge1xuICB2YXIgaHVlOyAvLyDmoLnmja7oibLnm7jkuI3lkIzvvIzoibLnm7jovazlkJHkuI3lkIxcblxuICBpZiAoTWF0aC5yb3VuZChoc3YuaCkgPj0gNjAgJiYgTWF0aC5yb3VuZChoc3YuaCkgPD0gMjQwKSB7XG4gICAgaHVlID0gbGlnaHQgPyBNYXRoLnJvdW5kKGhzdi5oKSAtIGh1ZVN0ZXAgKiBpIDogTWF0aC5yb3VuZChoc3YuaCkgKyBodWVTdGVwICogaTtcbiAgfSBlbHNlIHtcbiAgICBodWUgPSBsaWdodCA/IE1hdGgucm91bmQoaHN2LmgpICsgaHVlU3RlcCAqIGkgOiBNYXRoLnJvdW5kKGhzdi5oKSAtIGh1ZVN0ZXAgKiBpO1xuICB9XG5cbiAgaWYgKGh1ZSA8IDApIHtcbiAgICBodWUgKz0gMzYwO1xuICB9IGVsc2UgaWYgKGh1ZSA+PSAzNjApIHtcbiAgICBodWUgLT0gMzYwO1xuICB9XG5cbiAgcmV0dXJuIGh1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0U2F0dXJhdGlvbihoc3YsIGksIGxpZ2h0KSB7XG4gIC8vIGdyZXkgY29sb3IgZG9uJ3QgY2hhbmdlIHNhdHVyYXRpb25cbiAgaWYgKGhzdi5oID09PSAwICYmIGhzdi5zID09PSAwKSB7XG4gICAgcmV0dXJuIGhzdi5zO1xuICB9XG5cbiAgdmFyIHNhdHVyYXRpb247XG5cbiAgaWYgKGxpZ2h0KSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zIC0gc2F0dXJhdGlvblN0ZXAgKiBpO1xuICB9IGVsc2UgaWYgKGkgPT09IGRhcmtDb2xvckNvdW50KSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zICsgc2F0dXJhdGlvblN0ZXA7XG4gIH0gZWxzZSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zICsgc2F0dXJhdGlvblN0ZXAyICogaTtcbiAgfSAvLyDovrnnlYzlgLzkv67mraNcblxuXG4gIGlmIChzYXR1cmF0aW9uID4gMSkge1xuICAgIHNhdHVyYXRpb24gPSAxO1xuICB9IC8vIOesrOS4gOagvOeahCBzIOmZkOWItuWcqCAwLjA2LTAuMSDkuYvpl7RcblxuXG4gIGlmIChsaWdodCAmJiBpID09PSBsaWdodENvbG9yQ291bnQgJiYgc2F0dXJhdGlvbiA+IDAuMSkge1xuICAgIHNhdHVyYXRpb24gPSAwLjE7XG4gIH1cblxuICBpZiAoc2F0dXJhdGlvbiA8IDAuMDYpIHtcbiAgICBzYXR1cmF0aW9uID0gMC4wNjtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIoc2F0dXJhdGlvbi50b0ZpeGVkKDIpKTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUoaHN2LCBpLCBsaWdodCkge1xuICB2YXIgdmFsdWU7XG5cbiAgaWYgKGxpZ2h0KSB7XG4gICAgdmFsdWUgPSBoc3YudiArIGJyaWdodG5lc3NTdGVwMSAqIGk7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSBoc3YudiAtIGJyaWdodG5lc3NTdGVwMiAqIGk7XG4gIH1cblxuICBpZiAodmFsdWUgPiAxKSB7XG4gICAgdmFsdWUgPSAxO1xuICB9XG5cbiAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKDIpKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGUoY29sb3IpIHtcbiAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgcGF0dGVybnMgPSBbXTtcbiAgdmFyIHBDb2xvciA9IHRpbnljb2xvcihjb2xvcik7XG5cbiAgZm9yICh2YXIgaSA9IGxpZ2h0Q29sb3JDb3VudDsgaSA+IDA7IGkgLT0gMSkge1xuICAgIHZhciBoc3YgPSBwQ29sb3IudG9Ic3YoKTtcbiAgICB2YXIgY29sb3JTdHJpbmcgPSB0aW55Y29sb3Ioe1xuICAgICAgaDogZ2V0SHVlKGhzdiwgaSwgdHJ1ZSksXG4gICAgICBzOiBnZXRTYXR1cmF0aW9uKGhzdiwgaSwgdHJ1ZSksXG4gICAgICB2OiBnZXRWYWx1ZShoc3YsIGksIHRydWUpXG4gICAgfSkudG9IZXhTdHJpbmcoKTtcbiAgICBwYXR0ZXJucy5wdXNoKGNvbG9yU3RyaW5nKTtcbiAgfVxuXG4gIHBhdHRlcm5zLnB1c2gocENvbG9yLnRvSGV4U3RyaW5nKCkpO1xuXG4gIGZvciAodmFyIF9pID0gMTsgX2kgPD0gZGFya0NvbG9yQ291bnQ7IF9pICs9IDEpIHtcbiAgICB2YXIgX2hzdiA9IHBDb2xvci50b0hzdigpO1xuXG4gICAgdmFyIF9jb2xvclN0cmluZyA9IHRpbnljb2xvcih7XG4gICAgICBoOiBnZXRIdWUoX2hzdiwgX2kpLFxuICAgICAgczogZ2V0U2F0dXJhdGlvbihfaHN2LCBfaSksXG4gICAgICB2OiBnZXRWYWx1ZShfaHN2LCBfaSlcbiAgICB9KS50b0hleFN0cmluZygpO1xuXG4gICAgcGF0dGVybnMucHVzaChfY29sb3JTdHJpbmcpO1xuICB9IC8vIGRhcmsgdGhlbWUgcGF0dGVybnNcblxuXG4gIGlmIChvcHRzLnRoZW1lID09PSAnZGFyaycpIHtcbiAgICByZXR1cm4gZGFya0NvbG9yTWFwLm1hcChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGluZGV4ID0gX3JlZi5pbmRleCxcbiAgICAgICAgICBvcGFjaXR5ID0gX3JlZi5vcGFjaXR5O1xuICAgICAgdmFyIGRhcmtDb2xvclN0cmluZyA9IHRpbnljb2xvci5taXgob3B0cy5iYWNrZ3JvdW5kQ29sb3IgfHwgJyMxNDE0MTQnLCBwYXR0ZXJuc1tpbmRleF0sIG9wYWNpdHkgKiAxMDApLnRvSGV4U3RyaW5nKCk7XG4gICAgICByZXR1cm4gZGFya0NvbG9yU3RyaW5nO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm5zO1xufVxuXG52YXIgcHJlc2V0UHJpbWFyeUNvbG9ycyA9IHtcbiAgcmVkOiAnI0Y1MjIyRCcsXG4gIHZvbGNhbm86ICcjRkE1NDFDJyxcbiAgb3JhbmdlOiAnI0ZBOEMxNicsXG4gIGdvbGQ6ICcjRkFBRDE0JyxcbiAgeWVsbG93OiAnI0ZBREIxNCcsXG4gIGxpbWU6ICcjQTBEOTExJyxcbiAgZ3JlZW46ICcjNTJDNDFBJyxcbiAgY3lhbjogJyMxM0MyQzInLFxuICBibHVlOiAnIzE4OTBGRicsXG4gIGdlZWtibHVlOiAnIzJGNTRFQicsXG4gIHB1cnBsZTogJyM3MjJFRDEnLFxuICBtYWdlbnRhOiAnI0VCMkY5NicsXG4gIGdyZXk6ICcjNjY2NjY2J1xufTtcbnZhciBwcmVzZXRQYWxldHRlcyA9IHt9O1xudmFyIHByZXNldERhcmtQYWxldHRlcyA9IHt9O1xuT2JqZWN0LmtleXMocHJlc2V0UHJpbWFyeUNvbG9ycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIHByZXNldFBhbGV0dGVzW2tleV0gPSBnZW5lcmF0ZShwcmVzZXRQcmltYXJ5Q29sb3JzW2tleV0pO1xuICBwcmVzZXRQYWxldHRlc1trZXldLnByaW1hcnkgPSBwcmVzZXRQYWxldHRlc1trZXldWzVdOyAvLyBkYXJrIHByZXNldFBhbGV0dGVzXG5cbiAgcHJlc2V0RGFya1BhbGV0dGVzW2tleV0gPSBnZW5lcmF0ZShwcmVzZXRQcmltYXJ5Q29sb3JzW2tleV0sIHtcbiAgICB0aGVtZTogJ2RhcmsnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyMxNDE0MTQnXG4gIH0pO1xuICBwcmVzZXREYXJrUGFsZXR0ZXNba2V5XS5wcmltYXJ5ID0gcHJlc2V0RGFya1BhbGV0dGVzW2tleV1bNV07XG59KTtcbnZhciByZWQgPSBwcmVzZXRQYWxldHRlcy5yZWQ7XG52YXIgdm9sY2FubyA9IHByZXNldFBhbGV0dGVzLnZvbGNhbm87XG52YXIgZ29sZCA9IHByZXNldFBhbGV0dGVzLmdvbGQ7XG52YXIgb3JhbmdlID0gcHJlc2V0UGFsZXR0ZXMub3JhbmdlO1xudmFyIHllbGxvdyA9IHByZXNldFBhbGV0dGVzLnllbGxvdztcbnZhciBsaW1lID0gcHJlc2V0UGFsZXR0ZXMubGltZTtcbnZhciBncmVlbiA9IHByZXNldFBhbGV0dGVzLmdyZWVuO1xudmFyIGN5YW4gPSBwcmVzZXRQYWxldHRlcy5jeWFuO1xudmFyIGJsdWUgPSBwcmVzZXRQYWxldHRlcy5ibHVlO1xudmFyIGdlZWtibHVlID0gcHJlc2V0UGFsZXR0ZXMuZ2Vla2JsdWU7XG52YXIgcHVycGxlID0gcHJlc2V0UGFsZXR0ZXMucHVycGxlO1xudmFyIG1hZ2VudGEgPSBwcmVzZXRQYWxldHRlcy5tYWdlbnRhO1xudmFyIGdyZXkgPSBwcmVzZXRQYWxldHRlcy5ncmV5O1xuXG5leHBvcnQgeyBibHVlLCBjeWFuLCBnZWVrYmx1ZSwgZ2VuZXJhdGUsIGdvbGQsIGdyZWVuLCBncmV5LCBsaW1lLCBtYWdlbnRhLCBvcmFuZ2UsIHByZXNldERhcmtQYWxldHRlcywgcHJlc2V0UGFsZXR0ZXMsIHByZXNldFByaW1hcnlDb2xvcnMsIHB1cnBsZSwgcmVkLCB2b2xjYW5vLCB5ZWxsb3cgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@ant-design/colors/dist/index.esm.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/adjacent-matrix.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/adjacent-matrix.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (adjMatrix);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2FkamFjZW50LW1hdHJpeC5qcz84ODUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9hZGphY2VudC1tYXRyaXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYWRqTWF0cml4ID0gZnVuY3Rpb24gYWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBncmFwaERhdGEuZWRnZXM7XG4gIHZhciBtYXRyaXggPSBbXTsgLy8gbWFwIG5vZGUgd2l0aCBpbmRleCBpbiBkYXRhLm5vZGVzXG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcblxuICBpZiAoIW5vZGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBub2RlcyBkYXRhIVwiKTtcbiAgfVxuXG4gIGlmIChub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgbWF0cml4LnB1c2gocm93KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBzSW5kZXggPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICB2YXIgdEluZGV4ID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgaWYgKCFzSW5kZXggJiYgc0luZGV4ICE9PSAwIHx8ICF0SW5kZXggJiYgdEluZGV4ICE9PSAwKSByZXR1cm47XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhZGpNYXRyaXg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/adjacent-matrix.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/bfs.js":
/*!************************************************!*\
!*** ./node_modules/@antv/algorithm/es/bfs.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_queue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/queue */ \"./node_modules/@antv/algorithm/es/structs/queue.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _structs_queue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (breadthFirstSearch);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Jmcy5qcz83NzQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNFO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0Isc0RBQUs7QUFDM0I7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxJQUFJLDBEQUFZO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsaUZBQWtCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9iZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVldWUgZnJvbSAnLi9zdHJ1Y3RzL3F1ZXVlJztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG4gICAgICB2YXIgaWQgPSBuZXh0O1xuXG4gICAgICBpZiAoIXNlZW5baWRdKSB7XG4gICAgICAgIHNlZW5baWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICog5bm/5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZ3JhcGggR3JhcGgg5Zu+5a6e5L6LXG4gKiBAcGFyYW0gc3RhcnROb2RlIOW8gOWni+mBjeWOhueahOiKgueCuVxuICogQHBhcmFtIG9yaWdpbmFsQ2FsbGJhY2tzIOWbnuiwg1xuICovXG5cblxudmFyIGJyZWFkdGhGaXJzdFNlYXJjaCA9IGZ1bmN0aW9uIGJyZWFkdGhGaXJzdFNlYXJjaChncmFwaERhdGEsIHN0YXJ0Tm9kZUlkLCBvcmlnaW5hbENhbGxiYWNrcywgZGlyZWN0ZWQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FsbGJhY2tzID0gaW5pdENhbGxiYWNrcyhvcmlnaW5hbENhbGxiYWNrcyk7XG4gIHZhciBub2RlUXVldWUgPSBuZXcgUXVldWUoKTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8g5Yid5aeL5YyW6Zif5YiX5YWD57SgXG5cbiAgbm9kZVF1ZXVlLmVucXVldWUoc3RhcnROb2RlSWQpO1xuICB2YXIgcHJldmlvdXNOb2RlID0gJyc7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGVRdWV1ZS5kZXF1ZXVlKCk7XG4gICAgY2FsbGJhY2tzLmVudGVyKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDlsIbmiYDmnInpgrvlsYXmt7vliqDliLDpmJ/liJfkuK3ku6Xkvr/pgY3ljoZcblxuICAgIGdldE5laWdoYm9ycyhjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgYnJlYWR0aEZpcnN0U2VhcmNoOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/bfs.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/connected-component.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/connected-component.js ***!
\****************************************************************/
/*! exports provided: detectConnectedComponents, detectStrongConnectComponents, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectConnectedComponents\", function() { return detectConnectedComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectStrongConnectComponents\", function() { return detectStrongConnectComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getConnectedComponents; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\n\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Nvbm5lY3RlZC1jb21wb25lbnQuanM/MmExMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBEQUFZOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCLG9CQUFvQiwwREFBWTtBQUNoQztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMscUJBQXFCO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gXCIuL3V0aWxcIjtcbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9IGdldE5laWdoYm9ycyhub2RlLmlkLCBlZGdlcyk7XG5cbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuXG4gICAgICBpZiAoIXZpc2l0ZWRbbmVpZ2hib3JdKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9yO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGFyZ2V0Tm9kZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZ2V0Q29tcG9uZW50KHRhcmdldE5vZGVbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICBfbG9vcF8xKGkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmICghdmlzaXRlZFtub2RlLmlkXSkge1xuICAgICAgLy8g5a+55LqO5peg5ZCR5Zu+6L+b6KGMZGZz6YGN5Y6G77yM5q+P5LiA5qyh6LCD55So5ZCO6YO95b6X5Yiw5LiA5Liq6L+e6YCa5YiG6YePXG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICBjb21wb25lbnQucHVzaChub2RlU3RhY2sucG9wKCkpO1xuICAgICAgfVxuXG4gICAgICBhbGxDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ29tcG9uZW50cztcbn07XG4vKipcbiAqIFRhcmphbidzIEFsZ29yaXRobSDlpI3mnYLluqYgIE8ofFZ8K3xFfClcbiAqIEZvciBkaXJlY3RlZCBncmFwaCBvbmx5XG4gKiBhIGRpcmVjdGVkIGdyYXBoIGlzIHNhaWQgdG8gYmUgc3Ryb25nbHkgY29ubmVjdGVkIGlmIFwiZXZlcnkgdmVydGV4IGlzIHJlYWNoYWJsZSBmcm9tIGV2ZXJ5IG90aGVyIHZlcnRleFwiLlxuICogcmVmZXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFyamFuJTI3c19zdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHJldHVybiBhIGxpc3Qgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGVkZ2VzLCAndGFyZ2V0JykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkO1xuICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgIH0pO1xuXG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciB0YXJnZXROb2RlSUQgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghaW5kaWNlc1t0YXJnZXROb2RlSURdICYmIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSAhPT0gMCkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmlkID09PSB0YXJnZXROb2RlSUQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH0gLy8gdHJlZSBlZGdlXG5cblxuICAgICAgICBsb3dMaW5rW25vZGUuaWRdID0gTWF0aC5taW4obG93TGlua1tub2RlLmlkXSwgbG93TGlua1t0YXJnZXROb2RlSURdKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5TdGFja1t0YXJnZXROb2RlSURdKSB7XG4gICAgICAgIC8vIGJhY2sgZWRnZSwgdGFyZ2V0IG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgU0NDXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBpbmRpY2VzW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgX2xvb3BfMihpKTtcbiAgICB9IC8vIElmIG5vZGUgaXMgYSByb290IG5vZGUsIGdlbmVyYXRlIGFuIFNDQ1xuXG5cbiAgICBpZiAobG93TGlua1tub2RlLmlkXSA9PT0gaW5kaWNlc1tub2RlLmlkXSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IFtdO1xuXG4gICAgICB3aGlsZSAobm9kZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHRtcE5vZGUgPSBub2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGluU3RhY2tbdG1wTm9kZS5pZF0gPSBmYWxzZTtcbiAgICAgICAgY29tcG9uZW50LnB1c2godG1wTm9kZSk7XG4gICAgICAgIGlmICh0bXBOb2RlID09PSBub2RlKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbXBvbmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDAsIG5vZGVzXzEgPSBub2RlczsgX2kgPCBub2Rlc18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBub2RlID0gbm9kZXNfMVtfaV07XG5cbiAgICBpZiAoIWluZGljZXNbbm9kZS5pZF0gJiYgaW5kaWNlc1tub2RlLmlkXSAhPT0gMCkge1xuICAgICAgZ2V0Q29tcG9uZW50KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/connected-component.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/constants/time.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/constants/time.js ***!
\***********************************************************/
/*! exports provided: secondReg, dateReg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"secondReg\", function() { return secondReg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateReg\", function() { return dateReg; });\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2NvbnN0YW50cy90aW1lLmpzPzdhNjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sc0JBQXNCLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSTtBQUNwRCxvQkFBb0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9jb25zdGFudHMvdGltZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2Vjb25kUmVnID0gL14oXFxkezEsNH0pKC18XFwvKShcXGR7MSwyfSlcXDIoXFxkezEsMn0pJC87XG5leHBvcnQgdmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/constants/time.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/cosine-similarity.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/cosine-similarity.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n\n/**\n * cosine-similarity算法 计算余弦相似度\n * @param item 元素\n * @param targetItem 目标元素\n */\n\nvar cosineSimilarity = function cosineSimilarity(item, targetItem) {\n // 目标元素向量\n var targetItemVector = new _utils_vector__WEBPACK_IMPORTED_MODULE_0__[\"default\"](targetItem); // 目标元素向量的模长\n\n var targetNodeNorm2 = targetItemVector.norm2(); // 元素向量\n\n var itemVector = new _utils_vector__WEBPACK_IMPORTED_MODULE_0__[\"default\"](item); // 元素向量的模长\n\n var itemNorm2 = itemVector.norm2(); // 计算元素向量和目标元素向量的点积\n\n var dot = targetItemVector.dot(itemVector);\n var norm2Product = targetNodeNorm2 * itemNorm2; // 计算元素向量和目标元素向量的余弦相似度\n\n var cosineSimilarity = norm2Product ? dot / norm2Product : 0;\n return cosineSimilarity;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cosineSimilarity);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Nvc2luZS1zaW1pbGFyaXR5LmpzPzA4YTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2QkFBNkIscURBQU0sYUFBYTs7QUFFaEQsaURBQWlEOztBQUVqRCx1QkFBdUIscURBQU0sT0FBTzs7QUFFcEMscUNBQXFDOztBQUVyQztBQUNBLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBOztBQUVlLCtFQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvY29zaW5lLXNpbWlsYXJpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmVjdG9yIGZyb20gJy4vdXRpbHMvdmVjdG9yJztcbi8qKlxuICogY29zaW5lLXNpbWlsYXJpdHnnrpfms5Ug6K6h566X5L2Z5bym55u45Ly85bqmXG4gKiBAcGFyYW0gaXRlbSDlhYPntKBcbiAqIEBwYXJhbSB0YXJnZXRJdGVtIOebruagh+WFg+e0oFxuICovXG5cbnZhciBjb3NpbmVTaW1pbGFyaXR5ID0gZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eShpdGVtLCB0YXJnZXRJdGVtKSB7XG4gIC8vIOebruagh+WFg+e0oOWQkemHj1xuICB2YXIgdGFyZ2V0SXRlbVZlY3RvciA9IG5ldyBWZWN0b3IodGFyZ2V0SXRlbSk7IC8vIOebruagh+WFg+e0oOWQkemHj+eahOaooemVv1xuXG4gIHZhciB0YXJnZXROb2RlTm9ybTIgPSB0YXJnZXRJdGVtVmVjdG9yLm5vcm0yKCk7IC8vIOWFg+e0oOWQkemHj1xuXG4gIHZhciBpdGVtVmVjdG9yID0gbmV3IFZlY3RvcihpdGVtKTsgLy8g5YWD57Sg5ZCR6YeP55qE5qih6ZW/XG5cbiAgdmFyIGl0ZW1Ob3JtMiA9IGl0ZW1WZWN0b3Iubm9ybTIoKTsgLy8g6K6h566X5YWD57Sg5ZCR6YeP5ZKM55uu5qCH5YWD57Sg5ZCR6YeP55qE54K556evXG5cbiAgdmFyIGRvdCA9IHRhcmdldEl0ZW1WZWN0b3IuZG90KGl0ZW1WZWN0b3IpO1xuICB2YXIgbm9ybTJQcm9kdWN0ID0gdGFyZ2V0Tm9kZU5vcm0yICogaXRlbU5vcm0yOyAvLyDorqHnrpflhYPntKDlkJHph4/lkoznm67moIflhYPntKDlkJHph4/nmoTkvZnlvKbnm7jkvLzluqZcblxuICB2YXIgY29zaW5lU2ltaWxhcml0eSA9IG5vcm0yUHJvZHVjdCA/IGRvdCAvIG5vcm0yUHJvZHVjdCA6IDA7XG4gIHJldHVybiBjb3NpbmVTaW1pbGFyaXR5O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29zaW5lU2ltaWxhcml0eTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/cosine-similarity.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/degree.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/algorithm/es/degree.js ***!
\***************************************************/
/*! exports provided: default, getInDegree, getOutDegree */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return getInDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return getOutDegree; });\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (degree);\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcz9jZTA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRWUscUVBQU0sRUFBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/degree.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/detect-cycle.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/detect-cycle.js ***!
\*********************************************************/
/*! exports provided: detectAllUndirectedCycle, detectAllDirectedCycle, detectAllCycles, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return detectAllUndirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return detectAllDirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return detectAllCycles; });\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dfs */ \"./node_modules/@antv/algorithm/es/dfs.js\");\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/@antv/algorithm/es/connected-component.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n Object(_dfs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"detectStrongConnectComponents\"])({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (detectDirectedCycle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RldGVjdC1jeWNsZS5qcz8wMjUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdCO0FBQ3NFO0FBQ3hEOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsd0JBQXdCOztBQUV4Qix1QkFBdUI7O0FBRXZCLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsSUFBSSxvREFBRztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsb0VBQXNCLG1CQUFtQjs7QUFFNUQsNkNBQTZDLDBCQUEwQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHVCQUF1Qiw4QkFBOEI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwREFBWTs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTs7QUFFQSwrQkFBK0IsMEJBQTBCO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBLDRCQUE0QiwwREFBWTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0I7QUFDekIsOEJBQThCOztBQUU5QjtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxlQUFlLDBGQUE2QjtBQUM1QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ2Usa0ZBQW1CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGZzIGZyb20gJy4vZGZzJztcbmltcG9ydCBnZXRDb25uZWN0ZWRDb21wb25lbnRzLCB7IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzIH0gZnJvbSAnLi9jb25uZWN0ZWQtY29tcG9uZW50JztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbnZhciBkZXRlY3REaXJlY3RlZEN5Y2xlID0gZnVuY3Rpb24gZGV0ZWN0RGlyZWN0ZWRDeWNsZShncmFwaERhdGEpIHtcbiAgdmFyIGN5Y2xlID0gbnVsbDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgdmFyIGRmc1BhcmVudE1hcCA9IHt9OyAvLyDmiYDmnInmsqHmnInooqvorr/pl67nmoToioLngrnpm4blkIhcblxuICB2YXIgdW52aXNpdGVkU2V0ID0ge307IC8vIOato+WcqOiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGluZ1NldCA9IHt9OyAvLyDmiYDmnInlt7Lnu4/ooqvorr/pl67ov4fnmoToioLngrnpm4blkIhcblxuICB2YXIgdmlzaXRlZFNldCA9IHt9OyAvLyDliJ3lp4vljJYgdW52aXNpdGVkU2V0XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHVudmlzaXRlZFNldFtub2RlLmlkXSA9IG5vZGU7XG4gIH0pO1xuICB2YXIgY2FsbGJhY2tzID0ge1xuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudCxcbiAgICAgICAgICBwcmV2aW91c05vZGUgPSBfYS5wcmV2aW91cztcblxuICAgICAgaWYgKHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSkge1xuICAgICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmraPlnKjorr/pl67kuK3vvIzliJnor7TmmI7mo4DmtYvliLDnjq/ot6/kuoZcbiAgICAgICAgY3ljbGUgPSB7fTtcbiAgICAgICAgdmFyIGN1cnJlbnRDeWNsZU5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgICAgdmFyIHByZXZpb3VzQ3ljbGVOb2RlID0gcHJldmlvdXNOb2RlO1xuXG4gICAgICAgIHdoaWxlIChwcmV2aW91c0N5Y2xlTm9kZSAhPT0gY3VycmVudE5vZGUpIHtcbiAgICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIGN1cnJlbnRDeWNsZU5vZGUgPSBwcmV2aW91c0N5Y2xlTm9kZTtcbiAgICAgICAgICBwcmV2aW91c0N5Y2xlTm9kZSA9IGRmc1BhcmVudE1hcFtwcmV2aW91c0N5Y2xlTm9kZV07XG4gICAgICAgIH1cblxuICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5aaC5p6c5LiN5a2Y5Zyo5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit77yM5YiZ5bCG5YW25pS+5YWl5q2j5Zyo6K6/6Zeu6ZuG5ZCI77yM5bm25LuO5pyq6K6/6Zeu6ZuG5ZCI5Lit5Yig6ZmkXG4gICAgICAgIHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSA9IGN1cnJlbnROb2RlO1xuICAgICAgICBkZWxldGUgdW52aXNpdGVkU2V0W2N1cnJlbnROb2RlXTsgLy8g5pu05pawIERTRiBwYXJlbnRzIOWIl+ihqFxuXG4gICAgICAgIGRmc1BhcmVudE1hcFtjdXJyZW50Tm9kZV0gPSBwcmV2aW91c05vZGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoX2EpIHtcbiAgICAgIHZhciBjdXJyZW50Tm9kZSA9IF9hLmN1cnJlbnQ7IC8vIOWmguaenOaJgOacieeahOiKgueCueeahOWtkOiKgueCuemDveW3sue7j+iuv+mXrui/h+S6hu+8jOWImeS7juato+WcqOiuv+mXrumbhuWQiOS4reWIoOmZpOaOie+8jOW5tuWwhuWFtuenu+WFpeWIsOW3suiuv+mXrumbhuWQiOS4re+8jFxuICAgICAgLy8g5ZCM5pe25Lmf5oSP5ZGz552A5b2T5YmN6IqC54K555qE5omA5pyJ6YK75bGF6IqC54K56YO96KKr6K6/6Zeu6L+H5LqGXG5cbiAgICAgIHZpc2l0ZWRTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICBkZWxldGUgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdO1xuICAgIH0sXG4gICAgYWxsb3dUcmF2ZXJzYWw6IGZ1bmN0aW9uIGFsbG93VHJhdmVyc2FsKF9hKSB7XG4gICAgICB2YXIgbmV4dE5vZGUgPSBfYS5uZXh0OyAvLyDlpoLmnpzmo4DmtYvliLDnjq/ot6/liJnpnIDopoHnu4jmraLmiYDmnInov5vkuIDmraXnmoTpgY3ljobvvIzlkKbliJnkvJrlr7zoh7Tml6DpmZDlvqrnjq/pgY3ljoZcblxuICAgICAgaWYgKGN5Y2xlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LuF5YWB6K646YGN5Y6G5rKh5pyJ6K6/6Zeu55qE6IqC54K577yMdmlzaXRlZFNldCDkuK3nmoTpg73lt7Lnu4/orr/pl67ov4fkuoZcblxuXG4gICAgICByZXR1cm4gIXZpc2l0ZWRTZXRbbmV4dE5vZGVdO1xuICAgIH1cbiAgfTsgLy8g5byA5aeL6YGN5Y6G6IqC54K5XG5cbiAgd2hpbGUgKE9iamVjdC5rZXlzKHVudmlzaXRlZFNldCkubGVuZ3RoKSB7XG4gICAgLy8g5LuO56ys5LiA5Liq6IqC54K55byA5aeL6L+b6KGMIERGUyDpgY3ljoZcbiAgICB2YXIgZmlyc2V0VW5WaXNpdGVkS2V5ID0gT2JqZWN0LmtleXModW52aXNpdGVkU2V0KVswXTtcbiAgICBkZnMoZ3JhcGhEYXRhLCBmaXJzZXRVblZpc2l0ZWRLZXksIGNhbGxiYWNrcyk7XG4gIH1cblxuICByZXR1cm4gY3ljbGU7XG59O1xuLyoqXG4gKiDmo4DmtYvml6DlkJHlm77kuK3nmoTmiYDmnIlCYXNlIGN5Y2xlc1xuICogcmVmZXI6IGh0dHBzOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9BcnRpY2xlcy8xMTU4MjMyL0VudW1lcmF0aW5nLUFsbC1DeWNsZXMtaW4tYW4tVW5kaXJlY3RlZC1HcmFwaFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uEXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBJTm9kZX1dIOi/lOWbnuS4gOe7hGJhc2UgY3ljbGVzXG4gKi9cblxuXG5leHBvcnQgdmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEsIGZhbHNlKTsgLy8gbG9vcCB0aHJvdWdoIGFsbCBjb25uZWN0ZWQgY29tcG9uZW50c1xuXG4gIGZvciAodmFyIF9pID0gMCwgY29tcG9uZW50c18xID0gY29tcG9uZW50czsgX2kgPCBjb21wb25lbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNfMVtfaV07XG4gICAgaWYgKCFjb21wb25lbnQubGVuZ3RoKSBjb250aW51ZTtcbiAgICB2YXIgcm9vdCA9IGNvbXBvbmVudFswXTtcbiAgICB2YXIgcm9vdElkID0gcm9vdC5pZDtcbiAgICB2YXIgc3RhY2sgPSBbcm9vdF07XG4gICAgdmFyIHBhcmVudF8xID0gKF9hID0ge30sIF9hW3Jvb3RJZF0gPSByb290LCBfYSk7XG4gICAgdmFyIHVzZWQgPSAoX2IgPSB7fSwgX2Jbcm9vdElkXSA9IG5ldyBTZXQoKSwgX2IpOyAvLyB3YWxrIGEgc3Bhbm5pbmcgdHJlZSB0byBmaW5kIGN5Y2xlc1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBjdXJOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICB2YXIgY3VyTm9kZUlkID0gY3VyTm9kZS5pZDtcbiAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSkge1xuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgcGF0aCA9IFtdOyAvLyBzdGFjayBvZiBub2RlcyBpbiBjdXJyZW50IHBhdGhcblxuICB2YXIgYmxvY2tlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIEIgPSBbXTsgLy8gcmVtZW1iZXIgcG9ydGlvbnMgb2YgdGhlIGdyYXBoIHRoYXQgeWllbGQgbm8gZWxlbWVudGFyeSBjaXJjdWl0XG5cbiAgdmFyIGFsbEN5Y2xlcyA9IFtdO1xuICB2YXIgaWR4Mk5vZGUgPSB7fTtcbiAgdmFyIG5vZGUySWR4ID0ge307IC8vIOi+heWKqeWHveaVsO+8miB1bmJsb2NrIGFsbCBibG9ja2VkIG5vZGVzXG5cbiAgdmFyIHVuYmxvY2sgPSBmdW5jdGlvbiB1bmJsb2NrKHRoaXNOb2RlKSB7XG4gICAgdmFyIHN0YWNrID0gW3RoaXNOb2RlXTtcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbm9kZSA9IHN0YWNrLnBvcCgpO1xuXG4gICAgICBpZiAoYmxvY2tlZC5oYXMobm9kZSkpIHtcbiAgICAgICAgYmxvY2tlZC5kZWxldGUobm9kZSk7XG4gICAgICAgIEJbbm9kZS5pZF0uZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgIHN0YWNrLnB1c2gobik7XG4gICAgICAgIH0pO1xuICAgICAgICBCW25vZGUuaWRdLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBjaXJjdWl0ID0gZnVuY3Rpb24gY2lyY3VpdChub2RlLCBzdGFydCwgYWRqTGlzdCkge1xuICAgIHZhciBjbG9zZWQgPSBmYWxzZTsgLy8gd2hldGhlciBhIHBhdGggaXMgY2xvc2VkXG5cbiAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkgcmV0dXJuIGNsb3NlZDtcbiAgICBwYXRoLnB1c2gobm9kZSk7XG4gICAgYmxvY2tlZC5hZGQobm9kZSk7XG4gICAgdmFyIG5laWdoYm9ycyA9IGFkakxpc3Rbbm9kZS5pZF07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgaWYgKG5laWdoYm9yID09PSBzdGFydCkge1xuICAgICAgICB2YXIgY3ljbGUgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgcGF0aC5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW2luZGV4IC0gMV0uaWRdID0gcGF0aFtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW3BhdGgubGVuZ3RoIC0gMV0uaWRdID0gcGF0aFswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFsbEN5Y2xlcy5wdXNoKGN5Y2xlKTtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIWJsb2NrZWQuaGFzKG5laWdoYm9yKSkge1xuICAgICAgICBpZiAoY2lyY3VpdChuZWlnaGJvciwgc3RhcnQsIGFkakxpc3QpKSB7XG4gICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZWQpIHtcbiAgICAgIHVuYmxvY2sobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGlkeDJOb2RlW25laWdoYm9yc1tpXV07XG5cbiAgICAgICAgaWYgKCFCW25laWdoYm9yLmlkXS5oYXMobm9kZSkpIHtcbiAgICAgICAgICBCW25laWdoYm9yLmlkXS5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoLnBvcCgpO1xuICAgIHJldHVybiBjbG9zZWQ7XG4gIH07XG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8gSm9obnNvbidzIGFsZ29yaXRobSDopoHmsYLnu5noioLngrnotYvpobrluo/vvIzlhYjmjInoioLngrnlnKjmlbDnu4TkuK3nmoTpobrluo9cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICBub2RlMklkeFtub2RlSWRdID0gaTtcbiAgICBpZHgyTm9kZVtpXSA9IG5vZGU7XG4gIH0gLy8g5aaC5p6c5pyJ5oyH5a6a5YyF5ZCr55qE6IqC54K577yM5YiZ5oqK5oyH5a6a6IqC54K55o6S5bqP5Zyo5YmN77yM5Lul5L6/5o+Q5pep57uT5p2f5pCc57SiXG5cblxuICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlSWRzW2ldO1xuICAgICAgbm9kZTJJZHhbbm9kZXNbaV0uaWRdID0gbm9kZTJJZHhbbm9kZUlkXTtcbiAgICAgIG5vZGUySWR4W25vZGVJZF0gPSAwO1xuICAgICAgaWR4Mk5vZGVbMF0gPSBub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkID09PSBub2RlSWQ7XG4gICAgICB9KTtcbiAgICAgIGlkeDJOb2RlW25vZGUySWR4W25vZGVzW2ldLmlkXV0gPSBub2Rlc1tpXTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH1cbiAgfSAvLyDov5Tlm54g6IqC54K56aG65bqPID49IG5vZGVPcmRlciDnmoTlvLrov57pgJrliIbph4/nmoRhZGpMaXN0XG5cblxuICB2YXIgZ2V0TWluQ29tcG9uZW50QWRqID0gZnVuY3Rpb24gZ2V0TWluQ29tcG9uZW50QWRqKGNvbXBvbmVudHMpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgbWluQ29tcElkeDtcbiAgICB2YXIgbWluSWR4ID0gSW5maW5pdHk7IC8vIEZpbmQgbGVhc3QgY29tcG9uZW50IGFuZCB0aGUgbG93ZXN0IG5vZGVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXAubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5vZGVJZHhfMSA9IG5vZGUySWR4W2NvbXBbal0uaWRdO1xuXG4gICAgICAgIGlmIChub2RlSWR4XzEgPCBtaW5JZHgpIHtcbiAgICAgICAgICBtaW5JZHggPSBub2RlSWR4XzE7XG4gICAgICAgICAgbWluQ29tcElkeCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1ttaW5Db21wSWR4XTtcbiAgICB2YXIgYWRqTGlzdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHZhciBub2RlID0gY29tcG9uZW50W2ldO1xuICAgICAgYWRqTGlzdFtub2RlLmlkXSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDAsIF9iID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGdyYXBoRGF0YS5lZGdlcywgJ3RhcmdldCcpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50Lm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICAgIHJldHVybiBjLmlkO1xuICAgICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgICB9KTsgX2kgPCBfYi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gX2JbX2ldOyAvLyDlr7noh6rnjq/mg4XlhrUgKOeCuei/nuWQkeiHqui6qykg54m55q6K5aSE55CG77ya6K6w5b2V6Ieq546v77yM5L2G5LiN5Yqg5YWlYWRqTGlzdFxuXG4gICAgICAgIGlmIChuZWlnaGJvciA9PT0gbm9kZS5pZCAmJiAhKGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSkge1xuICAgICAgICAgIGFsbEN5Y2xlcy5wdXNoKChfYSA9IHt9LCBfYVtub2RlLmlkXSA9IG5vZGUsIF9hKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRqTGlzdFtub2RlLmlkXS5wdXNoKG5vZGUySWR4W25laWdoYm9yXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICBhZGpMaXN0OiBhZGpMaXN0LFxuICAgICAgbWluSWR4OiBtaW5JZHhcbiAgICB9O1xuICB9O1xuXG4gIHZhciBub2RlSWR4ID0gMDtcblxuICB3aGlsZSAobm9kZUlkeCA8IG5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBzdWJncmFwaE5vZGVzID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZTJJZHhbbi5pZF0gPj0gbm9kZUlkeDtcbiAgICB9KTtcbiAgICB2YXIgc2NjcyA9IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzKHtcbiAgICAgIG5vZGVzOiBzdWJncmFwaE5vZGVzLFxuICAgICAgZWRnZXM6IGdyYXBoRGF0YS5lZGdlc1xuICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50Lmxlbmd0aCA+IDE7XG4gICAgfSk7XG4gICAgaWYgKHNjY3MubGVuZ3RoID09PSAwKSBicmVhaztcbiAgICB2YXIgc2NjID0gZ2V0TWluQ29tcG9uZW50QWRqKHNjY3MpO1xuICAgIHZhciBtaW5JZHggPSBzY2MubWluSWR4LFxuICAgICAgICBhZGpMaXN0ID0gc2NjLmFkakxpc3QsXG4gICAgICAgIGNvbXBvbmVudCA9IHNjYy5jb21wb25lbnQ7XG5cbiAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbXBvbmVudC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIEJbbm9kZS5pZF0gPSBuZXcgU2V0KCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdGFydE5vZGUgPSBpZHgyTm9kZVttaW5JZHhdOyAvLyBzdGFydE5vZGUg5LiN5Zyo5oyH5a6a6KaB5YyF5ZCr55qE6IqC54K55Lit77yM5o+Q5YmN57uT5p2f5pCc57SiXG5cbiAgICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgJiYgbm9kZUlkcy5pbmRleE9mKHN0YXJ0Tm9kZS5pZCkgPT09IC0xKSByZXR1cm4gYWxsQ3ljbGVzO1xuICAgICAgY2lyY3VpdChzdGFydE5vZGUsIHN0YXJ0Tm9kZSwgYWRqTGlzdCk7XG4gICAgICBub2RlSWR4ID0gbWluSWR4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbEN5Y2xlcztcbn07XG4vKipcbiAqIOafpeaJvuWbvuS4reaJgOaciea7oei2s+imgeaxgueahOWciFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uE77yM6Iul5LiN5oyH5a6a77yM5YiZ6L+U5Zue5Zu+5Lit5omA5pyJ55qE5ZyIXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBOb2RlfV0g5YyF5ZCr5omA5pyJ546v55qE5pWw57uE77yM5q+P5Liq546v55So5LiA5LiqT2JqZWN06KGo56S677yM5YW25Lita2V55Li66IqC54K5aWTvvIx2YWx1ZeS4uuivpeiKgueCueWcqOeOr+S4reaMh+WQkeeahOS4i+S4gOS4quiKgueCuVxuICovXG5cbmV4cG9ydCB2YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgZGV0ZWN0RGlyZWN0ZWRDeWNsZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/detect-cycle.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/dfs.js":
/*!************************************************!*\
!*** ./node_modules/@antv/algorithm/es/dfs.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return depthFirstSearch; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcz84MzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSwwREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHZTtBQUNmO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbmZ1bmN0aW9uIGluaXRDYWxsYmFja3MoY2FsbGJhY2tzKSB7XG4gIGlmIChjYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrcyA9IHt9O1xuICB9XG5cbiAgdmFyIGluaXRpYXRlZENhbGxiYWNrID0gY2FsbGJhY2tzO1xuXG4gIHZhciBzdHViQ2FsbGJhY2sgPSBmdW5jdGlvbiBzdHViQ2FsbGJhY2soKSB7fTtcblxuICB2YXIgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgIHZhciBuZXh0ID0gX2EubmV4dDtcblxuICAgICAgaWYgKCFzZWVuW25leHRdKSB7XG4gICAgICAgIHNlZW5bbmV4dF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gIH0oKTtcblxuICBpbml0aWF0ZWRDYWxsYmFjay5hbGxvd1RyYXZlcnNhbCA9IGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCB8fCBhbGxvd1RyYXZlcnNhbENhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5lbnRlciA9IGNhbGxiYWNrcy5lbnRlciB8fCBzdHViQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmxlYXZlID0gY2FsbGJhY2tzLmxlYXZlIHx8IHN0dWJDYWxsYmFjaztcbiAgcmV0dXJuIGluaXRpYXRlZENhbGxiYWNrO1xufVxuLyoqXG4gKiBAcGFyYW0ge0dyYXBofSBncmFwaFxuICogQHBhcmFtIHtHcmFwaE5vZGV9IGN1cnJlbnROb2RlXG4gKiBAcGFyYW0ge0dyYXBoTm9kZX0gcHJldmlvdXNOb2RlXG4gKiBAcGFyYW0ge0NhbGxiYWNrc30gY2FsbGJhY2tzXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgY3VycmVudE5vZGUsIHByZXZpb3VzTm9kZSwgY2FsbGJhY2tzKSB7XG4gIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgZ2V0TmVpZ2hib3JzKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/dfs.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/dijkstra.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/algorithm/es/dijkstra.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOutEdgesNodeId\"])(minNodeId, edges);else relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dijkstra);\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(prePath)) paths.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzPzdhMGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDRDtBQUN3Qjs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlDQUFpQywrREFBaUIsbUJBQW1CLG9CQUFvQiw4REFBZ0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBOztBQUVBLDJCQUEyQjs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHVFQUFRLEVBQUM7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxzQ0FBc0MsZ0JBQWdCO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMseUJBQXlCO0FBQ3RFO0FBQ0EsVUFBVSwwREFBTyxzQkFBc0IsMkRBQWEsQ0FBQywyREFBYSx1Q0FBdUM7QUFDekc7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0T3V0RWRnZXNOb2RlSWQsIGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuXG52YXIgbWluVmVydGV4ID0gZnVuY3Rpb24gbWluVmVydGV4KEQsIG5vZGVzLCBtYXJrcykge1xuICAvLyDmib7lh7rmnIDlsI/nmoTngrlcbiAgdmFyIG1pbkRpcyA9IEluZmluaXR5O1xuICB2YXIgbWluTm9kZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgaWYgKCFtYXJrc1tub2RlSWRdICYmIERbbm9kZUlkXSA8PSBtaW5EaXMpIHtcbiAgICAgIG1pbkRpcyA9IERbbm9kZUlkXTtcbiAgICAgIG1pbk5vZGUgPSBub2Rlc1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluTm9kZTtcbn07XG5cbnZhciBkaWprc3RyYSA9IGZ1bmN0aW9uIGRpamtzdHJhKGdyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlSWRzID0gW107XG4gIHZhciBtYXJrcyA9IHt9O1xuICB2YXIgRCA9IHt9O1xuICB2YXIgcHJldnMgPSB7fTsgLy8ga2V5OiDpobbngrksIHZhbHVlOiDpobbngrnnmoTliY3pqbHngrnmlbDnu4TvvIjlj6/og73mnInlpJrmnaHnrYnplb/nmoTmnIDnn63ot6/lvoTvvIlcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGlkID0gbm9kZS5pZDtcbiAgICBub2RlSWRzLnB1c2goaWQpO1xuICAgIERbaWRdID0gSW5maW5pdHk7XG4gICAgaWYgKGlkID09PSBzb3VyY2UpIERbaWRdID0gMDtcbiAgfSk7XG4gIHZhciBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgLy8gUHJvY2VzcyB0aGUgdmVydGljZXNcbiAgICB2YXIgbWluTm9kZSA9IG1pblZlcnRleChELCBub2RlcywgbWFya3MpO1xuICAgIHZhciBtaW5Ob2RlSWQgPSBtaW5Ob2RlLmlkO1xuICAgIG1hcmtzW21pbk5vZGVJZF0gPSB0cnVlO1xuICAgIGlmIChEW21pbk5vZGVJZF0gPT09IEluZmluaXR5KSByZXR1cm4gXCJjb250aW51ZVwiOyAvLyBVbnJlYWNoYWJsZSB2ZXJ0aWNlcyBjYW5ub3QgYmUgdGhlIGludGVybWVkaWF0ZSBwb2ludFxuXG4gICAgdmFyIHJlbGF0ZWRFZGdlcyA9IFtdO1xuICAgIGlmIChkaXJlY3RlZCkgcmVsYXRlZEVkZ2VzID0gZ2V0T3V0RWRnZXNOb2RlSWQobWluTm9kZUlkLCBlZGdlcyk7ZWxzZSByZWxhdGVkRWRnZXMgPSBnZXRFZGdlc0J5Tm9kZUlkKG1pbk5vZGVJZCwgZWRnZXMpO1xuICAgIHJlbGF0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgZWRnZVRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIGVkZ2VTb3VyY2UgPSBlZGdlLnNvdXJjZTtcbiAgICAgIHZhciB3ID0gZWRnZVRhcmdldCA9PT0gbWluTm9kZUlkID8gZWRnZVNvdXJjZSA6IGVkZ2VUYXJnZXQ7XG4gICAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0UHJvcGVydHlOYW1lICYmIGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA/IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA6IDE7XG5cbiAgICAgIGlmIChEW3ddID4gRFttaW5Ob2RlLmlkXSArIHdlaWdodCkge1xuICAgICAgICBEW3ddID0gRFttaW5Ob2RlLmlkXSArIHdlaWdodDtcbiAgICAgICAgcHJldnNbd10gPSBbbWluTm9kZS5pZF07XG4gICAgICB9IGVsc2UgaWYgKERbd10gPT09IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgcHJldnNbd10ucHVzaChtaW5Ob2RlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICBwcmV2c1tzb3VyY2VdID0gW3NvdXJjZV07IC8vIOavj+S4quiKgueCueWtmOWPr+iDveWtmOWcqOWkmuadoeacgOefrei3r+W+hFxuXG4gIHZhciBwYXRocyA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBEKSB7XG4gICAgaWYgKERbdGFyZ2V0XSAhPT0gSW5maW5pdHkpIHtcbiAgICAgIGZpbmRBbGxQYXRocyhzb3VyY2UsIHRhcmdldCwgcHJldnMsIHBhdGhzKTtcbiAgICB9XG4gIH0gLy8g5YW85a655LmL5YmN5Y2V6Lev5b6EXG5cblxuICB2YXIgcGF0aCA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBwYXRocykge1xuICAgIHBhdGhbdGFyZ2V0XSA9IHBhdGhzW3RhcmdldF1bMF07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogRCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIGFsbFBhdGg6IHBhdGhzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBkaWprc3RyYTtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmIChpc0FycmF5KHByZVBhdGgpKSBwYXRocy5wdXNoKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcHJlUGF0aCwgdHJ1ZSksIFt0YXJnZXRdLCBmYWxzZSkpO2Vsc2UgcGF0aHMucHVzaChbcHJlUGF0aCwgdGFyZ2V0XSk7XG4gICAgfVxuICB9XG5cbiAgZm91bmRQYXRoc1t0YXJnZXRdID0gcGF0aHM7XG4gIHJldHVybiBmb3VuZFBhdGhzW3RhcmdldF07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/dijkstra.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/find-path.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/algorithm/es/find-path.js ***!
\******************************************************/
/*! exports provided: findShortestPath, findAllPath */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return findShortestPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return findAllPath; });\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2ZpbmQtcGF0aC5qcz85NjhjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUMvQjtBQUNQLFdBQVcseURBQVE7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCOztBQUVqQjtBQUNBLDZCQUE2QiwwREFBWSwyQkFBMkIsMERBQVk7QUFDaEY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwwREFBWSwyQkFBMkIsMERBQVk7QUFDbEY7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvZmluZC1wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZ2V0TmVpZ2hib3JzIH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCB2YXIgZmluZFNob3J0ZXN0UGF0aCA9IGZ1bmN0aW9uIGZpbmRTaG9ydGVzdFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGRpamtzdHJhKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcbmV4cG9ydCB2YXIgZmluZEFsbFBhdGggPSBmdW5jdGlvbiBmaW5kQWxsUGF0aChncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHZhciBfYTtcblxuICBpZiAoc3RhcnQgPT09IGVuZCkgcmV0dXJuIFtbc3RhcnRdXTtcbiAgdmFyIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIHZpc2l0ZWQgPSBbc3RhcnRdO1xuICB2YXIgaXNWaXNpdGVkID0gKF9hID0ge30sIF9hW3N0YXJ0XSA9IHRydWUsIF9hKTtcbiAgdmFyIHN0YWNrID0gW107IC8vIOi+heWKqeagiO+8jOeUqOS6juWtmOWCqOiuv+mXrui/h+eahOiKgueCueeahOmCu+WxheiKgueCuVxuXG4gIHZhciBhbGxQYXRoID0gW107XG4gIHZhciBuZWlnaGJvcnMgPSBkaXJlY3RlZCA/IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMpO1xuICBzdGFjay5wdXNoKG5laWdoYm9ycyk7XG5cbiAgd2hpbGUgKHZpc2l0ZWQubGVuZ3RoID4gMCAmJiBzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbi5zaGlmdCgpO1xuXG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgdmlzaXRlZC5wdXNoKGNoaWxkKTtcbiAgICAgICAgaXNWaXNpdGVkW2NoaWxkXSA9IHRydWU7XG4gICAgICAgIG5laWdoYm9ycyA9IGRpcmVjdGVkID8gZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcywgJ3RhcmdldCcpIDogZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/find-path.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/floydWarshall.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/floydWarshall.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (floydWarshall);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanM/YzA3MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTZDOztBQUU3QztBQUNBLHVCQUF1QixnRUFBWTtBQUNuQztBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsNEVBQWEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gXCIuL2FkamFjZW50LW1hdHJpeFwiO1xuXG52YXIgZmxveWRXYXJzaGFsbCA9IGZ1bmN0aW9uIGZsb3lkV2Fyc2hhbGwoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgYWRqYWNlbnRNYXRyaXggPSBnZXRBZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmxveWRXYXJzaGFsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/floydWarshall.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/gSpan/gSpan.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/gSpan/gSpan.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _struct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./struct */ \"./node_modules/@antv/algorithm/es/gSpan/struct.js\");\n\n\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"],\n edgeLabel: edgeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_EDGE_LABEL\"],\n nodeLabel2: toNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"];\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"] && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"], directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], minBackwardEdgeLabel.edgeLabel, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (gSpan);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL2dTcGFuLmpzPzlmZjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3FEOztBQUV4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx5REFBaUI7QUFDcEQsOEJBQThCLHlEQUFpQjtBQUMvQyxpQ0FBaUMseURBQWlCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsR0FBRzs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFlO0FBQy9COztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkNBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIseURBQWlCO0FBQzFDLHlCQUF5Qix5REFBaUI7QUFDMUMseUJBQXlCLHlEQUFpQjtBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsUUFBUTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsdURBQWU7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQLDJDQUEyQzs7QUFFM0M7QUFDQSxpSEFBaUg7O0FBRWpIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREOztBQUU1RDtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFDQUFxQyxTQUFTO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwrREFBK0QseURBQWlCLGtDQUFrQyx5REFBaUI7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxtRUFBbUUseURBQWlCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx3REFBSztBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQyxxQ0FBcUMsUUFBUTtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLHFCQUFxQixtQkFBbUI7QUFDeEM7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RSx5REFBaUI7O0FBRTFGOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsaUNBQWlDOztBQUVqQyw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxxQ0FBcUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7OztBQUdyQjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSx1RUFBdUU7OztBQUd2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vZ1NwYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gXCJAYW50di91dGlsXCI7XG5pbXBvcnQgeyBHcmFwaCwgVkFDQU5UX05PREVfTEFCRUwsIFZBQ0FOVF9HUkFQSF9JRCwgVkFDQU5UX0VER0VfTEFCRUwgfSBmcm9tIFwiLi9zdHJ1Y3RcIjtcblxudmFyIERGU2VkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpIHtcbiAgICB0aGlzLmZyb21Ob2RlID0gZnJvbU5vZGU7XG4gICAgdGhpcy50b05vZGUgPSB0b05vZGU7XG4gICAgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9IHtcbiAgICAgIG5vZGVMYWJlbDE6IGZyb21Ob2RlTGFiZWwgfHwgVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBWQUNBTlRfRURHRV9MQUJFTCxcbiAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZUxhYmVsIHx8IFZBQ0FOVF9OT0RFX0xBQkVMXG4gICAgfTtcbiAgfVxuXG4gIERGU2VkZ2UucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tTm9kZSA9PT0gb3RoZXIuZm9ybU5vZGUgJiYgdGhpcy50b05vZGUgPT09IG90aGVyLnRvTm9kZSAmJiB0aGlzLm5vZGVFZGdlTm9kZUxhYmVsID09PSBvdGhlci5ub2RlRWRnZU5vZGVMYWJlbDtcbiAgfTtcblxuICBERlNlZGdlLnByb3RvdHlwZS5ub3RFcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuICF0aGlzLmVxdWFsVG8ob3RoZXIpO1xuICB9O1xuXG4gIHJldHVybiBERlNlZGdlO1xufSgpOyAvLyBERlNjb2RlIOaYryBERVNlZGdlIOeahOaVsOe7hFxuXG5cbnZhciBERlNjb2RlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTY29kZSgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QgPSBbXTtcbiAgfVxuXG4gIERGU2NvZGUucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICB2YXIgYUxlbmd0aCA9IHRoaXMuZGZzRWRnZUxpc3QubGVuZ3RoO1xuICAgIHZhciBiTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuICAgIGlmIChhTGVuZ3RoICE9PSBiTGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGZzRWRnZUxpc3RbaV0gIT09IG90aGVyW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcbiAgLyoqIOWinuWKoOS4gOadoSBlZGdlIOWIsCBERlNjb2RlICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5wdXNoQmFjayA9IGZ1bmN0aW9uIChmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpKTtcbiAgICByZXR1cm4gdGhpcy5kZnNFZGdlTGlzdDtcbiAgfTtcbiAgLyoqIOagueaNriBkZnMg5p6E5bu65Zu+ICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS50b0dyYXBoID0gZnVuY3Rpb24gKGdyYXBoSWQsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGdyYXBoSWQgPT09IHZvaWQgMCkge1xuICAgICAgZ3JhcGhJZCA9IFZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgR3JhcGgoZ3JhcGhJZCwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgdmFyIGZyb21Ob2RlSWQgPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkID0gZGZzRWRnZS50b05vZGU7XG4gICAgICB2YXIgX2EgPSBkZnNFZGdlLm5vZGVFZGdlTm9kZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcbiAgICAgIGlmIChub2RlTGFiZWwxICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZShmcm9tTm9kZUlkLCBub2RlTGFiZWwxKTtcbiAgICAgIGlmIChub2RlTGFiZWwyICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gVkFDQU5UX05PREVfTEFCRUwgJiYgbm9kZUxhYmVsMiAhPT0gbm9kZUxhYmVsMSkgZ3JhcGguYWRkRWRnZSh1bmRlZmluZWQsIGZyb21Ob2RlSWQsIHRvTm9kZUlkLCBlZGdlTGFiZWwpO1xuICAgIH0pO1xuICAgIHJldHVybiBncmFwaDtcbiAgfTsgLy8g5bu656uLIHJpZ2h0bW9zdCBwYXRoXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5idWlsZFJtcGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHZhciBvbGRGcm9tID0gdW5kZWZpbmVkO1xuICAgIHZhciBzZWxmTGVuZ3RoID0gdGhpcy5kZnNFZGdlTGlzdC5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gc2VsZkxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZGZzRWRnZSA9IHRoaXMuZGZzRWRnZUxpc3RbaV07XG4gICAgICB2YXIgZnJvbU5vZGVJZHggPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkeCA9IGRmc0VkZ2UudG9Ob2RlO1xuXG4gICAgICBpZiAoZnJvbU5vZGVJZHggPCB0b05vZGVJZHggJiYgKG9sZEZyb20gPT09IHVuZGVmaW5lZCB8fCB0b05vZGVJZHggPT09IG9sZEZyb20pKSB7XG4gICAgICAgIHRoaXMucm1wYXRoLnB1c2goaSk7XG4gICAgICAgIG9sZEZyb20gPSBmcm9tTm9kZUlkeDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ybXBhdGg7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZU1hcCA9IHt9O1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdKSBub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdID0gdHJ1ZTtcbiAgICAgIGlmICghbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS50b05vZGVdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobm9kZU1hcCkubGVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBERlNjb2RlO1xufSgpO1xuXG52YXIgSGlzdG9yeSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEhpc3RvcnkocGRmcykge1xuICAgIHRoaXMuaGlzID0ge307XG4gICAgdGhpcy5ub2Rlc1VzZWQgPSB7fTtcbiAgICB0aGlzLmVkZ2VzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICBpZiAoIXBkZnMpIHJldHVybjtcblxuICAgIHdoaWxlIChwZGZzKSB7XG4gICAgICB2YXIgZSA9IHBkZnMuZWRnZTtcbiAgICAgIHRoaXMuZWRnZXMucHVzaChlKTtcbiAgICAgIHRoaXMubm9kZXNVc2VkW2UuZnJvbV0gPSAxO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS50b10gPSAxO1xuICAgICAgdGhpcy5lZGdlc1VzZWRbZS5pZF0gPSAxO1xuICAgICAgcGRmcyA9IHBkZnMucHJlTm9kZTtcbiAgICB9IC8vIOWAkuW6j1xuXG5cbiAgICB0aGlzLmVkZ2VzID0gdGhpcy5lZGdlcy5yZXZlcnNlKCk7XG4gIH1cblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1VzZWRbbm9kZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgSGlzdG9yeS5wcm90b3R5cGUuaGFzRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNVc2VkW2VkZ2UuaWRdID09PSAxO1xuICB9O1xuXG4gIHJldHVybiBIaXN0b3J5O1xufSgpO1xuXG52YXIgR1NwYW4gPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHU3BhbihfYSkge1xuICAgIHZhciBncmFwaHMgPSBfYS5ncmFwaHMsXG4gICAgICAgIF9iID0gX2EubWluU3VwcG9ydCxcbiAgICAgICAgbWluU3VwcG9ydCA9IF9iID09PSB2b2lkIDAgPyAyIDogX2IsXG4gICAgICAgIF9jID0gX2EubWluTm9kZU51bSxcbiAgICAgICAgbWluTm9kZU51bSA9IF9jID09PSB2b2lkIDAgPyAxIDogX2MsXG4gICAgICAgIF9kID0gX2EubWF4Tm9kZU51bSxcbiAgICAgICAgbWF4Tm9kZU51bSA9IF9kID09PSB2b2lkIDAgPyA0IDogX2QsXG4gICAgICAgIF9lID0gX2EudG9wLFxuICAgICAgICB0b3AgPSBfZSA9PT0gdm9pZCAwID8gMTAgOiBfZSxcbiAgICAgICAgX2YgPSBfYS5kaXJlY3RlZCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZixcbiAgICAgICAgX2cgPSBfYS52ZXJib3NlLFxuICAgICAgICB2ZXJib3NlID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2c7IC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOWIneWni+WMli0tLS0tLS1cblxuICAgIHRoaXMuZ3JhcGhzID0gZ3JhcGhzO1xuICAgIHRoaXMuZGZzQ29kZSA9IG5ldyBERlNjb2RlKCk7XG4gICAgdGhpcy5zdXBwb3J0ID0gMDtcbiAgICB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzID0gW107XG4gICAgdGhpcy5taW5TdXBwb3J0ID0gbWluU3VwcG9ydDtcbiAgICB0aGlzLnRvcCA9IHRvcDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gICAgdGhpcy5jb3VudGVyID0gMDsgLy8gVE9ETz8gdGltZXN0YW1wID0ge31cblxuICAgIHRoaXMubWF4Tm9kZU51bSA9IG1heE5vZGVOdW07XG4gICAgdGhpcy5taW5Ob2RlTnVtID0gbWluTm9kZU51bTtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlO1xuICAgIGlmICh0aGlzLm1heE5vZGVOdW0gPCB0aGlzLm1pbk5vZGVOdW0pIHRoaXMubWF4Tm9kZU51bSA9IHRoaXMubWluTm9kZU51bTtcbiAgICB0aGlzLnJlcG9ydERGID0gW107IC8vIG1hdHJpeFxuICB9IC8vIExpbmUgMzUyXG5cblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRSb290RWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIGZyb21Ob2RlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgZnJvbU5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKF90aGlzLmRpcmVjdGVkIHx8IGZyb21Ob2RlLmxhYmVsIDw9IG5vZGVNYXBbZWRnZS50b10ubGFiZWwpIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRCYWNrd2FyZEVkZ2UgPSBmdW5jdGlvbiAoZ3JhcGgsIGVkZ2UxLCBlZGdlMiwgaGlzdG9yeSkge1xuICAgIGlmICghdGhpcy5kaXJlY3RlZCAmJiBlZGdlMSA9PT0gZWRnZTIpIHJldHVybiBudWxsO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZWRnZTJUbyA9IG5vZGVNYXBbZWRnZTIudG9dO1xuICAgIHZhciBlZGdlMlRvRWRnZXMgPSBlZGdlMlRvLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZTJUb0VkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2UyVG9FZGdlc1tpXTtcbiAgICAgIGlmIChoaXN0b3J5Lmhhc0VkZ2UoZWRnZSkgfHwgZWRnZS50byAhPT0gZWRnZTEuZnJvbSkgY29udGludWU7XG5cbiAgICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgICBpZiAoZWRnZTEubGFiZWwgPCBlZGdlLmxhYmVsIHx8IGVkZ2UxLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIG5vZGVNYXBbZWRnZTEudG9dLmxhYmVsIDw9IG5vZGVNYXBbZWRnZTIudG9dLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsIDwgbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgfHwgbm9kZU1hcFtlZGdlMS5mcm9tXS5sYWJlbCA9PT0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgJiYgZWRnZTEubGFiZWwgPD0gZWRnZS5sYWJlbCkge1xuICAgICAgICAgIHJldHVybiBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUHVyZUVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHJpZ2h0bW9zdEVkZ2VUb0lkID0gcmlnaHRtb3N0RWRnZS50bztcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5ub2RlTWFwW3JpZ2h0bW9zdEVkZ2VUb0lkXS5lZGdlcztcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIHRvTm9kZSA9IGdyYXBoLm5vZGVNYXBbZWRnZS50b107XG5cbiAgICAgIGlmIChtaW5Ob2RlTGFiZWwgPD0gdG9Ob2RlLmxhYmVsICYmICFoaXN0b3J5Lmhhc05vZGUodG9Ob2RlKSkge1xuICAgICAgICByZXN1bHQucHVzaChlZGdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJtcGF0aEVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciB0b05vZGVMYWJlbCA9IG5vZGVNYXBbcmlnaHRtb3N0RWRnZS50b10ubGFiZWw7XG4gICAgdmFyIGZyb21Ob2RlID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLmZyb21dO1xuICAgIHZhciBlZGdlcyA9IGZyb21Ob2RlLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgbmV3VG9Ob2RlTGFiZWwgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICBpZiAocmlnaHRtb3N0RWRnZS50byA9PT0gZWRnZS50byB8fCBtaW5Ob2RlTGFiZWwgPiBuZXdUb05vZGVMYWJlbCB8fCBoaXN0b3J5Lmhhc05vZGUobm9kZU1hcFtlZGdlLnRvXSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLmxhYmVsIDwgZWRnZS5sYWJlbCB8fCByaWdodG1vc3RFZGdlLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIHRvTm9kZUxhYmVsIDw9IG5ld1RvTm9kZUxhYmVsKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmdldFN1cHBvcnQgPSBmdW5jdGlvbiAocHJvamVjdGVkKSB7XG4gICAgdmFyIGdyYXBoTWFwID0ge307XG4gICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHBybykge1xuICAgICAgaWYgKCFncmFwaE1hcFtwcm8uZ3JhcGhJZF0pIGdyYXBoTWFwW3Byby5ncmFwaElkXSA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyYXBoTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRNaW5MYWJlbCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgbWluTGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gb2JqW25vZGVFZGdlTm9kZUxhYmVsXSxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIGlmICghbWluTGFiZWwpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVMYWJlbDEgPCBtaW5MYWJlbC5ub2RlTGFiZWwxIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsIDwgbWluTGFiZWwuZWRnZUxhYmVsIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsID09PSBtaW5MYWJlbC5lZGdlTGFiZWwgJiYgbm9kZUxhYmVsMiA8IG1pbkxhYmVsLm5vZGVMYWJlbDIpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1pbkxhYmVsO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5pc01pbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGRmc0NvZGUgPSB0aGlzLmRmc0NvZGU7XG4gICAgaWYgKHRoaXMudmVyYm9zZSkgY29uc29sZS5sb2coXCJpc01pbiBjaGVja2luZ1wiLCBkZnNDb2RlKTtcbiAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdC5sZW5ndGggPT09IDEpIHJldHVybiB0cnVlO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIGdyYXBoID0gZGZzQ29kZS50b0dyYXBoKFZBQ0FOVF9HUkFQSF9JRCwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZGZzQ29kZU1pbiA9IG5ldyBERlNjb2RlKCk7XG4gICAgdmFyIHJvb3QgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgZm9yd2FyZEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpO1xuXG4gICAgICBmb3J3YXJkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG90aGVyTm9kZS5sYWJlbCk7XG4gICAgICAgIGlmICghcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0pIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMjogb3RoZXJOb2RlLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZGZzID0ge1xuICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICByb290W25vZGVFZGdlTm9kZUxhYmVsXS5wcm9qZWN0ZWQucHVzaChwZGZzKTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyDmr5TovoMgcm9vdCDkuK3mr4/kuIDpobnnmoQgbm9kZUVkZ2VOb2RlTGFiZWwg5aSn5bCP77yM5oyJ54WnIG5vZGVMYWJlbDHjgIFlZGdlTGFiZeOAgW5vZGVMYWJlbDIg55qE6aG65bqP5q+U6L6DXG5cbiAgICB2YXIgbWluTGFiZWwgPSB0aGlzLmZpbmRNaW5MYWJlbChyb290KTsgLy8gbGluZSA0MTlcblxuICAgIGlmICghbWluTGFiZWwpIHJldHVybjtcbiAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UoMCwgMSwgbWluTGFiZWwubm9kZUxhYmVsMSwgbWluTGFiZWwuZWRnZUxhYmVsLCBtaW5MYWJlbC5ub2RlTGFiZWwyKSk7IC8vIGxpbmUgNDIzXG5cbiAgICB2YXIgcHJvamVjdElzTWluID0gZnVuY3Rpb24gcHJvamVjdElzTWluKHByb2plY3RlZCkge1xuICAgICAgLy8gcmlnaHQgbW9zdCBwYXRoXG4gICAgICB2YXIgcm1wYXRoID0gZGZzQ29kZU1pbi5idWlsZFJtcGF0aCgpO1xuICAgICAgdmFyIG1pbk5vZGVMYWJlbCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbMF0ubm9kZUVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMTtcbiAgICAgIHZhciBtYXhUb0MgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFswXV0udG9Ob2RlOyAvLyBub2RlIGlkXG5cbiAgICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICAgIHZhciBmbGFnID0gZmFsc2UsXG4gICAgICAgICAgbmV3VG8gPSAwO1xuICAgICAgdmFyIGVuZCA9IGRpcmVjdGVkID8gLTEgOiAwOyAvLyDpgY3ljobliLAgMSDov5jmmK/liLAgMFxuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjsgLy8gbGluZSA0MzVcblxuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgYmFja3dhcmRFZGdlID0gX3RoaXMuZmluZEJhY2t3YXJkRWRnZShncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbaV1dLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFswXV0sIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgICAgLy8gTGluZSA0NDFcbiAgICAgICAgICAgIGlmICghYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0pIHtcbiAgICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGJhY2t3YXJkRWRnZS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiYWNrd2FyZFJvb3RbYmFja3dhcmRFZGdlLmxhYmVsXS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICBlZGdlOiBiYWNrd2FyZFJvb3QsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbmV3VG8gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGU7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IHJtcGF0aC5sZW5ndGggLSAxOyBpID4gZW5kOyBpLS0pIHtcbiAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICB2YXIgbWluQmFja3dhcmRFZGdlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoYmFja3dhcmRSb290KTtcblxuICAgICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobWF4VG9DLCBuZXdUbywgVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgVkFDQU5UX05PREVfTEFCRUwpKTtcbiAgICAgICAgdmFyIGlkeF8xID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhfMV0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XzFdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oYmFja3dhcmRSb290W21pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbF0ucHJvamVjdGVkKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZvcndhcmRSb290ID0ge307XG4gICAgICBmbGFnID0gZmFsc2U7XG4gICAgICB2YXIgbmV3RnJvbSA9IDA7XG4gICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBpZiAoZm9yd2FyZFB1cmVFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgbmV3RnJvbSA9IG1heFRvQztcbiAgICAgICAgICBmb3J3YXJkUHVyZUVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVNYXBbZWRnZS50b10ubGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgZ3JhcGhJZDogZ3JhcGguaWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBwYXRoTGVuZ3RoID0gcm1wYXRoLmxlbmd0aDtcblxuICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJtcGF0aFtpXTtcbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbdmFsdWVdLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGZvcndhcmRSbXBhdGhFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld0Zyb20gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3ZhbHVlXS5mcm9tTm9kZTtcbiAgICAgICAgICAgIGZvcndhcmRSbXBhdGhFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF8yKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZsYWcpIHJldHVybiB0cnVlO1xuXG4gICAgICB2YXIgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoZm9yd2FyZFJvb3QpO1xuXG4gICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobmV3RnJvbSwgbWF4VG9DICsgMSwgVkFDQU5UX05PREVfTEFCRUwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLmVkZ2VMYWJlbCwgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMikpO1xuICAgICAgdmFyIGlkeCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHByb2plY3RJc01pbihmb3J3YXJkUm9vdFtcIlwiLmNvbmNhdChmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMildLnByb2plY3RlZCk7XG4gICAgfTtcblxuICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KG1pbkxhYmVsLmVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwyKTtcbiAgICByZXR1cm4gcHJvamVjdElzTWluKHJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5yZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCkgPCB0aGlzLm1pbk5vZGVOdW0pIHJldHVybjtcbiAgICB0aGlzLmNvdW50ZXIrKztcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmRmc0NvZGUudG9HcmFwaCh0aGlzLmNvdW50ZXIsIHRoaXMuZGlyZWN0ZWQpO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMucHVzaChjbG9uZShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBWQUNBTlRfTk9ERV9MQUJFTCwgZWRnZUxhYmVsLCBub2RlTGFiZWwyKSk7XG5cbiAgICAgIF90aGlzLnN1YkdyYXBoTWluaW5nKGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkO1xuICAgIHZhciBtaW5TdXBwb3J0ID0gdGhpcy5taW5TdXBwb3J0O1xuICAgIHZhciBmcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzO1xuICAgIHZhciBub2RlTGFiZWxDb3VudGVyID0ge30sXG4gICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXIgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6IqC54K555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktbm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVMYWJsZUNvdW50ZWQgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6L6555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktZnJvbU5vZGXnsbvlnostZWRnZeexu+Weiy10b05vZGXnsbvlnotcblxuICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhncmFwaHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLy8gTGluZSAyNzFcbiAgICAgIHZhciBncmFwaCA9IGdyYXBoc1trZXldO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyDpgY3ljoboioLngrnvvIzorrDlvZXlr7nlupTlm74g5LiOIOavj+S4quiKgueCueeahCBsYWJlbCDliLAgbm9kZUxhYmxlQ291bnRlZFxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICAgIC8vIExpbmUgMjcyXG4gICAgICAgIHZhciBub2RlTGFiZWwgPSBub2RlLmxhYmVsO1xuICAgICAgICB2YXIgZ3JhcGhOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbCk7XG5cbiAgICAgICAgaWYgKCFub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0pIHtcbiAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSB8fCAwO1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICBub2RlTGFiZWxDb3VudGVyW25vZGVMYWJlbF0gPSBjb3VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUxhYmxlQ291bnRlZFtncmFwaE5vZGVLZXldID0ge1xuICAgICAgICAgIGdyYXBoS2V5OiBrZXksXG4gICAgICAgICAgbGFiZWw6IG5vZGVMYWJlbFxuICAgICAgICB9OyAvLyDpgY3ljobor6XoioLngrnnmoTmiYDmnInovrnvvIzorrDlvZXlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7vliLAgbm9kZUVkZ2VOb2RlTGFiZWxDb3VudGVkLiBMaW5lIDI3NlxuXG4gICAgICAgIG5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBub2RlTGFiZWwxID0gbm9kZUxhYmVsO1xuICAgICAgICAgIHZhciBub2RlTGFiZWwyID0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbDtcblxuICAgICAgICAgIGlmICghZGlyZWN0ZWQgJiYgbm9kZUxhYmVsMSA+IG5vZGVMYWJlbDIpIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBub2RlTGFiZWwyO1xuICAgICAgICAgICAgbm9kZUxhYmVsMiA9IG5vZGVMYWJlbDE7XG4gICAgICAgICAgICBub2RlTGFiZWwxID0gdG1wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBlZGdlLmxhYmVsO1xuICAgICAgICAgIHZhciBncmFwaE5vZGVFZGdlTm9kZUtleSA9IFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQobm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChlZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsMik7XG5cbiAgICAgICAgICBpZiAoIW5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBub2RlRWRnZU5vZGVDb3VudGVyW25vZGVFZGdlTm9kZUtleV0gfHwgMDtcbiAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSA9IGNvdW50ZXI7IC8vIExpbmUyODFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWRbZ3JhcGhOb2RlRWRnZU5vZGVLZXldID0ge1xuICAgICAgICAgICAgZ3JhcGhJZDoga2V5LFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZUxhYmVsMlxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIOiuoeeul+mikee5geeahOiKgueCuVxuXG4gICAgT2JqZWN0LmtleXMobm9kZUxhYmVsQ291bnRlcikuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgIHZhciBjb3VudCA9IG5vZGVMYWJlbENvdW50ZXJbbGFiZWxdO1xuICAgICAgaWYgKGNvdW50IDwgbWluU3VwcG9ydCkgcmV0dXJuO1xuICAgICAgdmFyIGcgPSB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdXG4gICAgICB9O1xuICAgICAgZy5ub2Rlcy5wdXNoKHtcbiAgICAgICAgaWQ6IFwiMFwiLFxuICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgIH0pO1xuICAgICAgZnJlcXVlbnRTaXplMVN1YmdyYXBocy5wdXNoKGcpOyAvLyBpZiAobWluTm9kZU51bSA8PSAxKSByZXBvcnRTaXplMSBUT0RPXG4gICAgfSk7XG4gICAgcmV0dXJuIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyAtLS0tLS0tLSDnrKzkuIDmraUsIF9nZW5lcmF0ZV8xZWRnZV9mcmVxdWVudF9zdWJncmFwaHPvvJrpopHnuYHnmoTljZXkuKroioLngrktLS0tLS0tXG5cblxuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IHRoaXMuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzKCk7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IDIpIHJldHVybjtcbiAgICB2YXIgZ3JhcGhzID0gdGhpcy5ncmFwaHM7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDsgLy8gUERGUyDmlbDnu4TnmoQgbWFwIExpbmUgMzA0XG5cbiAgICB2YXIgcm9vdCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhJZCkge1xuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2dyYXBoSWRdO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyBMaW5lIDMwNlxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBmb3J3YXJkUm9vdEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpOyAvLyBMaW5lIDMwOFxuXG5cbiAgICAgICAgZm9yd2FyZFJvb3RFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIHRvTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KHRvTm9kZS5sYWJlbCk7XG4gICAgICAgICAgaWYgKCFyb290W25vZGVFZGdlTm9kZUxhYmVsXSkgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHBkZnMgPSB7XG4gICAgICAgICAgICBncmFwaElkOiBncmFwaElkLFxuICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLnByb2plY3RlZC5wdXNoKHBkZnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBMaW5lIDMxM1xuXG4gICAgT2JqZWN0LmtleXMocm9vdCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUVkZ2VOb2RlTGFiZWwpIHtcbiAgICAgIHZhciBfYSA9IHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIHByb2plY3RlZCA9IF9hLnByb2plY3RlZCxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZSgwLCAxLCBub2RlTGFiZWwxLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcocHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gR1NwYW47XG59KCk7XG5cbnZhciBmb3JtYXRHcmFwaHMgPSBmdW5jdGlvbiBmb3JtYXRHcmFwaHMoZ3JhcGhzLCBkaXJlY3RlZCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBpKSB7XG4gICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgdmFyIGZHcmFwaCA9IG5ldyBHcmFwaChpLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdmFyIG5vZGVJZHhNYXAgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBqKSB7XG4gICAgICBmR3JhcGguYWRkTm9kZShqLCBub2RlW25vZGVMYWJlbFByb3BdKTtcbiAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBqO1xuICAgIH0pO1xuICAgIGdyYXBoLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGspIHtcbiAgICAgIHZhciBzb3VyY2VJZHggPSBub2RlSWR4TWFwW2VkZ2Uuc291cmNlXTtcbiAgICAgIHZhciB0YXJnZXRJZHggPSBub2RlSWR4TWFwW2VkZ2UudGFyZ2V0XTtcbiAgICAgIGZHcmFwaC5hZGRFZGdlKC0xLCBzb3VyY2VJZHgsIHRhcmdldElkeCwgZWRnZVtlZGdlTGFiZWxQcm9wXSk7XG4gICAgfSk7XG4gICAgaWYgKGZHcmFwaCAmJiBmR3JhcGguZ2V0Tm9kZU51bSgpKSByZXN1bHRbZkdyYXBoLmlkXSA9IGZHcmFwaDtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgdG9HcmFwaERhdGFzID0gZnVuY3Rpb24gdG9HcmFwaERhdGFzKGdyYXBocywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaCkge1xuICAgIHZhciBncmFwaERhdGEgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgZ3JhcGhEYXRhLm5vZGVzLnB1c2goKF9hID0ge1xuICAgICAgICBpZDogXCJcIi5jb25jYXQobm9kZS5pZClcbiAgICAgIH0sIF9hW25vZGVMYWJlbFByb3BdID0gbm9kZS5sYWJlbCwgX2EpKTtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5lZGdlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgc291cmNlOiBcIlwiLmNvbmNhdChlZGdlLmZyb20pLFxuICAgICAgICB0YXJnZXQ6IFwiXCIuY29uY2F0KGVkZ2UudG8pXG4gICAgICB9LCBfYVtlZGdlTGFiZWxQcm9wXSA9IGVkZ2UubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2goZ3JhcGhEYXRhKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgREVGQVVMVF9MQUJFTF9OQU1FID0gXCJjbHVzdGVyXCI7XG4vKipcbiAqIGdTcGFuIOmikee5geWtkOWbvuiuoeeul+eul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8iVxuICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcbiAqL1xuXG52YXIgZ1NwYW4gPSBmdW5jdGlvbiBnU3BhbihwYXJhbXMpIHtcbiAgLy8gLS0tLS0tLSDlsIblm77mlbDmja4gR3JhcGhEYXRhIOeahCBtYXAg6L2s5o2i5Li65qC85byPIC0tLS0tLS1cbiAgdmFyIGdyYXBocyA9IHBhcmFtcy5ncmFwaHMsXG4gICAgICBfYSA9IHBhcmFtcy5kaXJlY3RlZCxcbiAgICAgIGRpcmVjdGVkID0gX2EgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EsXG4gICAgICBfYiA9IHBhcmFtcy5ub2RlTGFiZWxQcm9wLFxuICAgICAgbm9kZUxhYmVsUHJvcCA9IF9iID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYixcbiAgICAgIF9jID0gcGFyYW1zLmVkZ2VMYWJlbFByb3AsXG4gICAgICBlZGdlTGFiZWxQcm9wID0gX2MgPT09IHZvaWQgMCA/IERFRkFVTFRfTEFCRUxfTkFNRSA6IF9jO1xuICB2YXIgZm9ybWF0dGVkR3JhcGhzID0gZm9ybWF0R3JhcGhzKGdyYXBocywgZGlyZWN0ZWQsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICB2YXIgbWluU3VwcG9ydCA9IHBhcmFtcy5taW5TdXBwb3J0LFxuICAgICAgbWF4Tm9kZU51bSA9IHBhcmFtcy5tYXhOb2RlTnVtLFxuICAgICAgbWluTm9kZU51bSA9IHBhcmFtcy5taW5Ob2RlTnVtLFxuICAgICAgdmVyYm9zZSA9IHBhcmFtcy52ZXJib3NlLFxuICAgICAgdG9wID0gcGFyYW1zLnRvcDsgLy8gLS0tLS0tLSDliJ3lp4vljJbkuI7miafooYznrpfms5UgLS0tLS0tLVxuXG4gIHZhciBhbGdvUGFyYW1zID0ge1xuICAgIGdyYXBoczogZm9ybWF0dGVkR3JhcGhzLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBtaW5Ob2RlTnVtOiBtaW5Ob2RlTnVtLFxuICAgIHRvcDogdG9wLFxuICAgIHZlcmJvc2U6IHZlcmJvc2UsXG4gICAgZGlyZWN0ZWQ6IGRpcmVjdGVkXG4gIH07XG4gIHZhciBjYWxjdWxhdG9yID0gbmV3IEdTcGFuKGFsZ29QYXJhbXMpO1xuICBjYWxjdWxhdG9yLnJ1bigpO1xuICB2YXIgcmVzdWx0ID0gdG9HcmFwaERhdGFzKGNhbGN1bGF0b3IuZnJlcXVlbnRTdWJncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ1NwYW47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/gSpan/gSpan.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/gSpan/struct.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/gSpan/struct.js ***!
\*********************************************************/
/*! exports provided: VACANT_EDGE_ID, VACANT_NODE_ID, VACANT_EDGE_LABEL, VACANT_NODE_LABEL, VACANT_GRAPH_ID, AUTO_EDGE_ID, Edge, Node, Graph */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_ID\", function() { return VACANT_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_ID\", function() { return VACANT_NODE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_LABEL\", function() { return VACANT_EDGE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_LABEL\", function() { return VACANT_NODE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_GRAPH_ID\", function() { return VACANT_GRAPH_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUTO_EDGE_ID\", function() { return AUTO_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return Edge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return Graph; });\nvar VACANT_EDGE_ID = -1;\nvar VACANT_NODE_ID = -1;\nvar VACANT_EDGE_LABEL = \"-1\";\nvar VACANT_NODE_LABEL = \"-1\";\nvar VACANT_GRAPH_ID = -1;\nvar AUTO_EDGE_ID = \"-1\";\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\n\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\n\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL3N0cnVjdC5qcz8wZjc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVlOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWU7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vc3RydWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfTk9ERV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfRURHRV9MQUJFTCA9IFwiLTFcIjtcbmV4cG9ydCB2YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnQgdmFyIFZBQ0FOVF9HUkFQSF9JRCA9IC0xO1xuZXhwb3J0IHZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5cbnZhciBFZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX0VER0VfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGZyb20gPT09IHZvaWQgMCkge1xuICAgICAgZnJvbSA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmICh0byA9PT0gdm9pZCAwKSB7XG4gICAgICB0byA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChsYWJlbCA9PT0gdm9pZCAwKSB7XG4gICAgICBsYWJlbCA9IFZBQ0FOVF9FREdFX0xBQkVMO1xuICAgIH1cblxuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xuICAgIHRoaXMudG8gPSB0bztcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICByZXR1cm4gRWRnZTtcbn0oKTtcblxuZXhwb3J0IHsgRWRnZSB9O1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0IHsgTm9kZSB9O1xuXG52YXIgR3JhcGggPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaChpZCwgZWRnZUlkQXV0b0luY3JlYXNlLCBkaXJlY3RlZCkge1xuICAgIGlmIChpZCA9PT0gdm9pZCAwKSB7XG4gICAgICBpZCA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChlZGdlSWRBdXRvSW5jcmVhc2UgPT09IHZvaWQgMCkge1xuICAgICAgZWRnZUlkQXV0b0luY3JlYXNlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgPSBlZGdlSWRBdXRvSW5jcmVhc2U7XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VNYXAgPSB7fTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwID0ge307XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gIH1cblxuICBHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5sZW5ndGg7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZE5vZGUgPSBmdW5jdGlvbiAoaWQsIGxhYmVsKSB7XG4gICAgaWYgKHRoaXMubm9kZU1hcFtpZF0pIHJldHVybjtcbiAgICB2YXIgbm9kZSA9IG5ldyBOb2RlKGlkLCBsYWJlbCk7XG4gICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgIHRoaXMubm9kZU1hcFtpZF0gPSBub2RlO1xuICAgIGlmICghdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0ucHVzaChpZCk7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZEVkZ2UgPSBmdW5jdGlvbiAoaWQsIGZyb20sIHRvLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLmVkZ2VJZEF1dG9JbmNyZWFzZSB8fCBpZCA9PT0gdW5kZWZpbmVkKSBpZCA9IHRoaXMuY291bnRlcisrO1xuICAgIGlmICh0aGlzLm5vZGVNYXBbZnJvbV0gJiYgdGhpcy5ub2RlTWFwW3RvXSAmJiB0aGlzLm5vZGVNYXBbdG9dLmVkZ2VNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIGVkZ2UgPSBuZXcgRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKTtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2lkXSA9IGVkZ2U7XG4gICAgdGhpcy5ub2RlTWFwW2Zyb21dLmFkZEVkZ2UoZWRnZSk7XG4gICAgaWYgKCF0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0pIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuXG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICB2YXIgckVkZ2UgPSBuZXcgRWRnZShpZCwgdG8sIGZyb20sIGxhYmVsKTtcbiAgICAgIHRoaXMubm9kZU1hcFt0b10uYWRkRWRnZShyRWRnZSk7XG4gICAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChyRWRnZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBHcmFwaDtcbn0oKTtcblxuZXhwb3J0IHsgR3JhcGggfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/gSpan/struct.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/gaddi.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/algorithm/es/gaddi.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/@antv/algorithm/es/floydWarshall.js\");\n/* harmony import */ var _gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/@antv/algorithm/es/gSpan/gSpan.js\");\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\n\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util__WEBPACK_IMPORTED_MODULE_4__[\"uniqueId\"])] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = Object(_gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GADDI);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2dhZGRpLmpzPzQwYTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ007QUFDVjtBQUNBO0FBQ0E7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QztBQUM5QyxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxnREFBZ0Q7O0FBRWhEO0FBQ0E7O0FBRUEsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsa0JBQWtCLGdDQUFnQztBQUN4RztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHlCQUF5Qjs7QUFFekIsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0NBQW9DOztBQUVwQyx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLHNCQUFzQiw4Q0FBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsWUFBWSw4REFBYSxzQkFBc0I7QUFDL0M7QUFDQTs7QUFFQSxtQkFBbUIsOERBQWEsb0JBQW9CO0FBQ3BEO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCw2Q0FBNkMsMkRBQWEsQ0FBQywyREFBYTtBQUN4RSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBLHdGQUF3RjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0RkFBNEY7QUFDNUY7QUFDQTtBQUNBLGtDQUFrQyw0QkFBNEI7O0FBRTlELDBGQUEwRjs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBSyx1QkFBdUI7O0FBRWxELDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQztBQUNyQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7O0FBRUEsd0NBQXdDOztBQUV4Qyw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFO0FBQ1A7QUFDQTs7QUFFQSxrSUFBa0k7O0FBRWxJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsbUdBQW1HOztBQUVuRztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsUUFBUTtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7O0FBRUEsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxRUFBcUU7O0FBRXJFO0FBQ0E7QUFDQSx3RUFBd0U7O0FBRXhFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsNkdBQTZHOztBQUU3RztBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7O0FBRUEsc0NBQXNDLHlEQUFRO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdKQUF3SjtBQUN4SixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGO0FBQzlGLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnR0FBZ0c7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBLG1CQUFtQix5QkFBeUI7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxRQUFRO0FBQzlDOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIseURBQVE7QUFDckM7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVlLG9FQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBmbG95ZFdhcnNoYWxsIGZyb20gJy4vZmxveWRXYXJzaGFsbCc7XG5pbXBvcnQgZ1NwYW4gZnJvbSAnLi9nU3Bhbi9nU3Bhbic7XG5pbXBvcnQgZGlqa3N0cmEgZnJvbSAnLi9kaWprc3RyYSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqIOS4uiBncmFwaERhdGEg5Lit5q+P5Liq6IqC54K555Sf5oiQ6YK75bGF5Y2V5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcFxuICogQHBhcmFtIGsgay3ov5HpgrtcbiAqL1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXRzID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXRzKGdyYXBoRGF0YSwgc3BtLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGsgPT09IHZvaWQgMCkge1xuICAgIGsgPSAyO1xuICB9XG5cbiAgdmFyIHVuaXRzID0gW107XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHVuaXRzLnB1c2goZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykpO1xuICB9KTtcbiAgcmV0dXJuIHVuaXRzO1xufTtcblxudmFyIGZpbmRLTmVpZ2hib3JVbml0ID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykge1xuICB2YXIgdW5pdE5vZGVJZHhzID0gW2ldO1xuICB2YXIgbmVpZ2hib3JzID0gW107XG4gIHZhciBsYWJlbENvdW50TWFwID0ge307XG4gIHJvdy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBqKSB7XG4gICAgaWYgKHYgPD0gayAmJiBpICE9PSBqKSB7XG4gICAgICB1bml0Tm9kZUlkeHMucHVzaChqKTtcbiAgICAgIG5laWdoYm9ycy5wdXNoKG5vZGVzW2pdKTtcbiAgICAgIHZhciBsYWJlbCA9IG5vZGVzW2pdW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCFsYWJlbENvdW50TWFwW2xhYmVsXSkgbGFiZWxDb3VudE1hcFtsYWJlbF0gPSB7XG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBkaXN0czogW3ZdXG4gICAgICB9O2Vsc2Uge1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5jb3VudCsrO1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5wdXNoKHYpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7IC8vIOWwhiBsYWJlbENvdW50TWFwIOS4reeahCBkaXN0cyDmjInnhafku47lsI/liLDlpKfmjpLluo/vvIzmlrnkvr/lkI7pnaLkvb/nlKhcblxuICBPYmplY3Qua2V5cyhsYWJlbENvdW50TWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzID0gbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlSWR4OiBpLFxuICAgIG5vZGVJZDogbm9kZXNbaV0uaWQsXG4gICAgbm9kZUlkeHM6IHVuaXROb2RlSWR4cyxcbiAgICBuZWlnaGJvcnM6IG5laWdoYm9ycyxcbiAgICBuZWlnaGJvck51bTogdW5pdE5vZGVJZHhzLmxlbmd0aCAtIDEsXG4gICAgbm9kZUxhYmVsQ291bnRNYXA6IGxhYmVsQ291bnRNYXBcbiAgfTtcbn07XG4vKipcbiAqIOmaj+acuuWvu+aJvueCueWvue+8jOa7oei2s+i3neemu+Wwj+S6jiBrXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIG5vZGVOdW0g5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG1heE5vZGVQYWlyTnVtIOWvu+aJvueCueWvueeahOaVsOmHj+S4jei2hei/hyBtYXhOb2RlUGFpck51bVxuICogQHBhcmFtIHNwbSDmnIDnn63ot6/lvoTnn6npmLVcbiAqL1xuXG5cbnZhciBmaW5kTm9kZVBhaXJzUmFuZG9tbHkgPSBmdW5jdGlvbiBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pIHtcbiAgLy8g5q+P5Liq6IqC54K56ZyA6KaB6ZqP5py65om+5Ye655qE54K55a+55pWwXG4gIHZhciBub2RlUGFpck51bUVhY2hOb2RlID0gTWF0aC5jZWlsKG1heE5vZGVQYWlyTnVtIC8gbm9kZU51bSk7XG4gIHZhciBub2RlUGFpck1hcCA9IHt9O1xuICB2YXIgZm91bmROb2RlUGFpckNvdW50ID0gMDsgLy8g6YGN5Y6G6IqC54K577yM5Li65q+P5Liq6IqC54K56ZqP5py65om+5Ye6IG5vZGVQYWlyTnVtRWFjaE5vZGUg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGvjgILmib7liLDnmoTngrnlr7nmlbDph4/otoXov4cgbWF4Tm9kZVBhaXJOdW0g5oiW5omA5pyJ6IqC54K56YGN5Y6G57uT5p2f5pe257uI5q2iXG5cbiAga05laWdoYm9yVW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCwgaSkge1xuICAgIC8vIOiLpeacqui+vuWIsCBub2RlUGFpck51bUVhY2hOb2Rl77yM5oiW5b6q546v5qyh5pWw5bCP5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKe+8jOe7p+e7reW+queOr1xuICAgIHZhciBub2RlUGFpckZvcklDb3VudCA9IDA7XG4gICAgdmFyIG91dGVyTG9vcENvdW50ID0gMDtcbiAgICB2YXIgbmVpZ2hib3JzID0gdW5pdC5ub2RlSWR4czsgLy8gdGhlIGZpcnN0IG9uZSBpcyB0aGUgY2VudGVyIG5vZGVcblxuICAgIHZhciBuZWlnaGJvck51bSA9IHVuaXQubmVpZ2hib3JOdW0gLSAxO1xuXG4gICAgd2hpbGUgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgLy8g5Y+m5LiA56uv6IqC54K55Zyo6IqC54K55pWw57uE5Lit55qE55qEIGluZGV4XG4gICAgICB2YXIgb2lkeCA9IG5laWdoYm9yc1sxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmVpZ2hib3JOdW0pXTtcbiAgICAgIHZhciBpbm5lckxvb3BDb3VudCA9IDA7IC8vIOiLpemaj+acuuW+l+WIsOeahOWPpuS4gOerryBpZHgg5LiN56ym5ZCI5p2h5Lu277yM5YiZ57un57utIHJhbmRvbeOAguadoeS7tuaYr+S4jeaYr+WQjOS4gOS4quiKgueCueOAgei/meS4queCueWvueayoeacieiiq+iusOW9lei/h+OAgei3neemu+Wwj+S6jiBrXG5cbiAgICAgIHdoaWxlIChub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSB8fCBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChvaWR4LCBcIi1cIikuY29uY2F0KGkpXSkge1xuICAgICAgICBvaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZU51bSk7XG4gICAgICAgIGlubmVyTG9vcENvdW50Kys7XG4gICAgICAgIGlmIChpbm5lckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5uZXJMb29wQ291bnQgPCAyICogbm9kZU51bSkge1xuICAgICAgICAvLyDmnKrovr7liLDmnIDlpKflvqrnjq/mrKHmlbDvvIzor7TmmI7mib7liLDkuoblkIjpgILnmoTlj6bkuIDnq69cbiAgICAgICAgbm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoaSwgXCItXCIpLmNvbmNhdChvaWR4KV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IGksXG4gICAgICAgICAgZW5kOiBvaWR4LFxuICAgICAgICAgIGRpc3RhbmNlOiBzcG1baV1bb2lkeF1cbiAgICAgICAgfTtcbiAgICAgICAgbm9kZVBhaXJGb3JJQ291bnQrKztcbiAgICAgICAgZm91bmROb2RlUGFpckNvdW50Kys7IC8vIOWmguaenOW9k+WJjeaJvuWIsOeahOeCueWvueaVsOmHj+i+vuWIsOS6huS4iumZkO+8jOi/lOWbnue7k+aenFxuXG4gICAgICAgIGlmIChmb3VuZE5vZGVQYWlyQ291bnQgPj0gbWF4Tm9kZVBhaXJOdW0pIHJldHVybiBub2RlUGFpck1hcDtcbiAgICAgIH1cblxuICAgICAgb3V0ZXJMb29wQ291bnQrKztcbiAgICAgIGlmIChvdXRlckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgIH0gLy8g6L+Z5Liq6IqC54K55rKh5pyJ5om+5Yiw6Laz5aSfIG5vZGVQYWlyTnVtRWFjaE5vZGUg55qE54K55a+544CC5pu05pawIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzorqnlkI7nu63oioLngrnmib7mm7TlpJrnmoTngrnlr7lcblxuXG4gICAgaWYgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgdmFyIGdhcCA9IG5vZGVQYWlyTnVtRWFjaE5vZGUgLSBub2RlUGFpckZvcklDb3VudDtcbiAgICAgIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSAobm9kZVBhaXJOdW1FYWNoTm9kZSArIGdhcCkgLyAobm9kZU51bSAtIGkgLSAxKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbm9kZVBhaXJNYXA7XG59O1xuLyoqXG4gKiDorqHnrpfmiYDmnIkgbm9kZVBhaXJNYXAg5Lit6IqC54K55a+555qE55u45Lqk6YK75bGF6K+x5a+85a2Q5Zu+XG4gKiBAcGFyYW0gbm9kZVBhaXJNYXAg6IqC54K55a+5IG1hcO+8jGtleSDkuLogbm9kZTEuaWQtbm9kZTIuaWTvvIx2YWx1ZSDkuLogeyBzdGFydE5vZGVJZHgsIGVuZE5vZGVJZHgsIGRpc3RhbmNlIH1cbiAqIEBwYXJhbSBuZWlnaGJvclVuaXRzIOavj+S4quiKgueCueeahOmCu+WxheWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBlZGdlTWFwIOi+ueeahCBtYXDvvIzmlrnkvr/mo4DntKJcbiAqIEBwYXJhbSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAg57yT5a2Y55qE57uT5p6c77yM5LiL5qyh6L+b5YWl6K+l5Ye95pWw5bCG57un57ut5pu05paw6K+l57yT5a2Y77yM6IulIGtleSDlnKjnvJPlrZjkuK3lrZjlnKjliJnkuI3pnIDopoHph43lpI3orqHnrpdcbiAqL1xuXG5cbnZhciBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaCA9IGZ1bmN0aW9uIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyTWFwLCBuZWlnaGJvclVuaXRzLCBncmFwaERhdGEsIGNhY2hlZEluZHVjZWRHcmFwaE1hcCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXM7XG4gIGlmICghY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgPSB7fTtcbiAgT2JqZWN0LmtleXMobm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICBpZiAoY2FjaGVkSW5kdWNlZEdyYXBoTWFwICYmIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldKSByZXR1cm47XG4gICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0gPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIHZhciBwYWlyID0gbm9kZVBhaXJNYXBba2V5XTtcbiAgICB2YXIgc3RhcnRVbml0Tm9kZUlkcyA9IChfYSA9IG5laWdoYm9yVW5pdHNbcGFpci5zdGFydF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWR4cztcbiAgICB2YXIgZW5kVW5pdE5vZGVJZHMgPSAoX2IgPSBuZWlnaGJvclVuaXRzW3BhaXIuZW5kXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5vZGVJZHhzO1xuICAgIGlmICghc3RhcnRVbml0Tm9kZUlkcyB8fCAhZW5kVW5pdE5vZGVJZHMpIHJldHVybjsgLy8g5LiN5a2Y5Zyo6YK75YWD77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgZW5kU2V0ID0gbmV3IFNldChlbmRVbml0Tm9kZUlkcyk7XG4gICAgdmFyIGludGVyc2VjdCA9IHN0YXJ0VW5pdE5vZGVJZHMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gZW5kU2V0Lmhhcyh4KTtcbiAgICB9KTsgLy8g5Y+v6IO95Lya54iG5qCI77yI5ZyoIDE1ODAgKyA2IG5vZGVzIGZ1bGwtY29ubmVjdGVkIOaXtuWHuueOsO+8iVxuXG4gICAgaWYgKCFpbnRlcnNlY3QgfHwgIWludGVyc2VjdC5sZW5ndGgpIHJldHVybjsgLy8g5rKh5pyJ5Lqk6ZuG77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgaW50ZXJzZWN0SWRNYXAgPSB7fTtcbiAgICB2YXIgaW50ZXJzZWN0TGVuZ3RoID0gaW50ZXJzZWN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50ZXJzZWN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaW50ZXJzZWN0W2ldXTtcbiAgICAgIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLm5vZGVzLnB1c2gobm9kZSk7IC8vIOWwhuS6pOmbhuS4reeahOeCueWKoOWFpeivseWvvOWtkOWbvlxuXG4gICAgICBpbnRlcnNlY3RJZE1hcFtub2RlLmlkXSA9IHRydWU7XG4gICAgfSAvLyDpgY3ljobmiYDmnInovrnmlbDmja7vvIzlpoLmnpzovrnnmoTkuKTnq6/pg73lnKjkuqTpm4bkuK3vvIzlsIbor6XovrnliqDlhaXor7Hlr7zlrZDlm75cblxuXG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChpbnRlcnNlY3RJZE1hcFtlZGdlLnNvdXJjZV0gJiYgaW50ZXJzZWN0SWRNYXBbZWRnZS50YXJnZXRdKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGNhY2hlZEluZHVjZWRHcmFwaE1hcDtcbn07XG4vKipcbiAqIOiuoeeulyBzdHJjdXRyZSDlnKggZ3JhcGgg5LiK55qE5Yy56YWN5pWw6YePXG4gKiBAcGFyYW0gZ3JhcGgg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RydWN0dXJlIOebruWJjeaUr+aMgeWPquacieS4pOS4quiKgueCueS4gOadoei+ueeahOacgOeugOWNlee7k+aehFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K557G75Z6L5a2X5q615ZCNXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnnsbvlnovlrZfmrrXlkI1cbiAqL1xuXG5cbnZhciBnZXRNYXRjaGVkQ291bnQgPSBmdW5jdGlvbiBnZXRNYXRjaGVkQ291bnQoZ3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgX2EsIF9iO1xuXG4gIHZhciBub2RlTWFwID0ge307XG4gIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjb3VudCA9IDA7XG4gIGlmICghKChfYSA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgKChfYiA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5ub2RlcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPCAyKSByZXR1cm4gMDtcbiAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzb3VyY2VMYWJlbCA9IG5vZGVNYXBbZS5zb3VyY2VdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciB0YXJnZXRMYWJlbCA9IG5vZGVNYXBbZS50YXJnZXRdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwxID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzBdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwyID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzFdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJFZGdlTGFiZWwgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUuZWRnZXNbMF1bZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKGVbZWRnZUxhYmVsUHJvcF0gIT09IHN0ckVkZ2VMYWJlbCkgcmV0dXJuO1xuXG4gICAgaWYgKHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwxICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwyIHx8IHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwyICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwxKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4vKipcbiAqIHN0cnVjdHVyZXMg5Lit5a+75om+5pyA5YW35pyJ5Luj6KGo5oCn55qE5LiA5Liq44CC6L+Z5Liq57uT5p6E5piv5L2/5b6XIG1hdGNoZWRDb3VudE1hcCDnmoTliIbnu4TmlrnlvI/nsbvlhoXpl7Tot53mnIDlsI/vvIznsbvpl7Tpl7Tot53mnIDlpKdcbiAqIEBwYXJhbSBtYXRjaGVkQ291bnRNYXAg5q+P5LiqIHN0cnVjdHVyZSDliIbnsbvlkI7nmoTlkITlm77ljLnphY3mlbDph4/vvIzmoLzlvI8geyBbc3RyY3R1cmUuaWR4XTogeyBbaW50ZXJJbmR1Y2VkR3JhcGhLZXldOiBjb3VudCB9IH1cbiAqIEBwYXJhbSBzdHJ1Y3R1cmVOdW0gc3RyY3V0dXJlIOS4quaVsO+8jOS4jiBtYXRjaGVkQ291bnRNYXAubGVuZ3RoIOWvueW6lFxuICogQHBhcmFtIHN0cnVjdHVyZXNcbiAqL1xuXG5cbnZhciBmaW5kUmVwcmVzZW50U3RydWN0dXJlID0gZnVuY3Rpb24gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgc3RydWN0dXJlcykge1xuICB2YXIgbWF4T2Zmc2V0ID0gSW5maW5pdHksXG4gICAgICByZXByZXNlbnRDbHVzdGVyVHlwZSA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAvLyDkuIDnp43liIbnu4TnmoQgbWFw77yMa2V5IOaYryBpbnRHcmFwaCDnmoQga2V577yMdmFsdWUg5pivIHN0cnVjdHVyZXNbaV0g55qE5Yy56YWN5Liq5pWwXG4gICAgdmFyIGNvdW50TWFwSSA9IG1hdGNoZWRDb3VudE1hcFtpXTsgLy8g5oyJ54WnIHZhbHVlIOS4uuivpee7hOaOkuW6j++8jOeUn+aIkCBrZXlzIOeahOaVsOe7hO+8mlxuXG4gICAgdmFyIHNvcnRlZEdyYXBoS2V5cyA9IE9iamVjdC5rZXlzKGNvdW50TWFwSSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGNvdW50TWFwSVthXSAtIGNvdW50TWFwSVtiXTtcbiAgICB9KTsgLy8g5YWxIDEwMCDkuKogZ3JhcGhLZXlz77yM5bCGIGdyYXBoS2V5cyDmjInpobrluo/liIbkuLogZ3JvdXBOdW0g57uEXG5cbiAgICB2YXIgZ3JvdXBOdW0gPSAxMDtcbiAgICB2YXIgY2x1c3RlcnMgPSBbXTsgLy8g5oC75YWx5pyJIGdyb3VwTnVtIOS4qumhuVxuXG4gICAgc29ydGVkR3JhcGhLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaikge1xuICAgICAgaWYgKCFjbHVzdGVyc1tqICUgZ3JvdXBOdW1dKSBjbHVzdGVyc1tqICUgZ3JvdXBOdW1dID0ge1xuICAgICAgICBncmFwaHM6IFtdLFxuICAgICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgICBhdmVDb3VudDogMFxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0uZ3JhcGhzLnB1c2goa2V5KTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0udG90YWxDb3VudCArPSBjb3VudE1hcElba2V5XTtcbiAgICB9KTsgLy8g6K6h566XIGNsdXN0ZXIg5LiOIGNsdXN0ZXIg5LmL6Ze055qE6Led56a7IGlubmVyRGlzdO+8jOavj+S4qiBjbHVzdGVyIOWGhemDqOeahOi3neemuyBpbnRyYURpc3RcblxuICAgIHZhciBhdmVJbnRyYURpc3QgPSAwOyAvLyDor6XnsbvnmoTnsbvlhoXlubPlnYflgLxcblxuICAgIHZhciBhdmVDb3VudHMgPSBbXTsgLy8g57G75YaF5bmz5Z2H5Yy56YWN5pWw6YeP77yM5bCG55So5LqO6K6h566X57G76Ze06Led56a7XG5cbiAgICBjbHVzdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaHNJbkNsdXN0ZXIpIHtcbiAgICAgIC8vIOexu+WGheWdh+WAvFxuICAgICAgdmFyIGF2ZUNvdW50ID0gZ3JhcGhzSW5DbHVzdGVyLnRvdGFsQ291bnQgLyBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5hdmVDb3VudCA9IGF2ZUNvdW50O1xuICAgICAgYXZlQ291bnRzLnB1c2goYXZlQ291bnQpOyAvLyDlr7nkuo7mr4/nsbvvvIzorqHnrpfnsbvlhoXpl7Tot53lubPlnYflgLxcblxuICAgICAgdmFyIGF2ZUludHJhUGVyQ2x1c3RlciA9IDA7XG4gICAgICB2YXIgZ3JhcGhzTnVtID0gZ3JhcGhzSW5DbHVzdGVyLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkxLCBqKSB7XG4gICAgICAgIHZhciBncmFwaDFDb3VudCA9IGNvdW50TWFwSVtncmFwaEtleTFdO1xuICAgICAgICBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoS2V5Miwgaykge1xuICAgICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgICAgYXZlSW50cmFQZXJDbHVzdGVyICs9IE1hdGguYWJzKGdyYXBoMUNvdW50IC0gY291bnRNYXBJW2dyYXBoS2V5Ml0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50cmFQZXJDbHVzdGVyIC89IGdyYXBoc051bSAqIChncmFwaHNOdW0gLSAxKSAvIDI7XG4gICAgICBhdmVJbnRyYURpc3QgKz0gYXZlSW50cmFQZXJDbHVzdGVyO1xuICAgIH0pO1xuICAgIGF2ZUludHJhRGlzdCAvPSBjbHVzdGVycy5sZW5ndGg7IC8vIOeUqOexu+WGheWdh+WAvOiuoeeul+exu+mXtOi3nVxuXG4gICAgdmFyIGF2ZUludGVyRGlzdCA9IDA7IC8vIOexu+mXtOmXtOi3neW5s+Wdh+WAvFxuXG4gICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50MSwgaikge1xuICAgICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50Miwgaykge1xuICAgICAgICBpZiAoaiA9PT0gaykgcmV0dXJuO1xuICAgICAgICBhdmVJbnRlckRpc3QgKz0gTWF0aC5hYnMoYXZlQ291bnQxIC0gYXZlQ291bnQyKTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50ZXJEaXN0IC89IGF2ZUNvdW50cy5sZW5ndGggKiAoYXZlQ291bnRzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICB9KTsgLy8g5a+75om+ICjnsbvpl7Tpl7Tot53lnYflgLwt57G75YaF6Ze06Led5Z2H5YC8KSDmnIDlpKfnmoTkuIDnp43liIbnu4TmlrnlvI/vvIjlr7nlupTnmoQgc3RydWN0dXJlIOWwseaYr+acgOe7iOimgeaJvueahOWUr+S4gCBEUyhHKe+8iVxuXG4gICAgdmFyIG9mZnNldCA9IGF2ZUludGVyRGlzdCAtIGF2ZUludHJhRGlzdDtcblxuICAgIGlmIChtYXhPZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgIG1heE9mZnNldCA9IG9mZnNldDtcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gaTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJ1Y3R1cmVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0cnVjdHVyZTogc3RydWN0dXJlc1tyZXByZXNlbnRDbHVzdGVyVHlwZV0sXG4gICAgc3RydWN0dXJlQ291bnRNYXA6IG1hdGNoZWRDb3VudE1hcFtyZXByZXNlbnRDbHVzdGVyVHlwZV1cbiAgfTtcbn07XG5cbnZhciBnZXROb2RlTWFwcyA9IGZ1bmN0aW9uIGdldE5vZGVNYXBzKG5vZGVzLCBub2RlTGFiZWxQcm9wKSB7XG4gIHZhciBub2RlTWFwID0ge30sXG4gICAgICBub2RlTGFiZWxNYXAgPSB7fTtcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBub2RlOiBub2RlLFxuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgaWYgKCFub2RlTGFiZWxNYXBbbGFiZWxdKSBub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgbm9kZUxhYmVsTWFwW2xhYmVsXS5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlTWFwOiBub2RlTWFwLFxuICAgIG5vZGVMYWJlbE1hcDogbm9kZUxhYmVsTWFwXG4gIH07XG59O1xuXG52YXIgZ2V0RWRnZU1hcHMgPSBmdW5jdGlvbiBnZXRFZGdlTWFwcyhlZGdlcywgZWRnZUxhYmVsUHJvcCwgbm9kZU1hcCkge1xuICB2YXIgZWRnZU1hcCA9IHt9LFxuICAgICAgZWRnZUxhYmVsTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGkpIHtcbiAgICBlZGdlTWFwW1wiXCIuY29uY2F0KHVuaXF1ZUlkKV0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBlZGdlOiBlZGdlXG4gICAgfTtcbiAgICB2YXIgbGFiZWwgPSBlZGdlW2VkZ2VMYWJlbFByb3BdO1xuICAgIGlmICghZWRnZUxhYmVsTWFwW2xhYmVsXSkgZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIGVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcbiAgICB2YXIgc291cmNlTm9kZSA9IG5vZGVNYXBbZWRnZS5zb3VyY2VdO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUpIHtcbiAgICAgIHNvdXJjZU5vZGUuZGVncmVlKys7XG4gICAgICBzb3VyY2VOb2RlLm91dERlZ3JlZSsrO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXROb2RlID0gbm9kZU1hcFtlZGdlLnRhcmdldF07XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5kZWdyZWUrKztcbiAgICAgIHRhcmdldE5vZGUuaW5EZWdyZWUrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGVkZ2VNYXA6IGVkZ2VNYXAsXG4gICAgZWRnZUxhYmVsTWFwOiBlZGdlTGFiZWxNYXBcbiAgfTtcbn07XG4vKipcbiAqIOi+k+WHuuacgOefrei3r+W+hOeahCBtYXDvvIxrZXkg5Li6IHNvdXJjZU5vZGUuaWQtdGFyZ2V0Tm9kZS5pZO+8jHZhbHVlIOS4uui/meS4pOS4quiKgueCueeahOacgOefrei3r+W+hOmVv+W6plxuICogQHBhcmFtIG5vZGVzXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gZGlyZWN0ZWRcbiAqL1xuXG5cbnZhciBnZXRTcG1NYXAgPSBmdW5jdGlvbiBnZXRTcG1NYXAobm9kZXMsIHNwbSwgZGlyZWN0ZWQpIHtcbiAgdmFyIGxlbmd0aCA9IHNwbS5sZW5ndGg7XG4gIHZhciBtYXAgPSB7fTtcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBzdGFydCA9IGRpcmVjdGVkID8gMCA6IGkgKyAxO1xuICAgIHZhciBpSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGZvciAodmFyIGogPSBzdGFydDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSA9PT0gaikgY29udGludWU7XG4gICAgICB2YXIgaklkID0gbm9kZXNbal0uaWQ7XG4gICAgICB2YXIgZGlzdCA9IHJvd1tqXTtcbiAgICAgIG1hcFtcIlwiLmNvbmNhdChpSWQsIFwiLVwiKS5jb25jYXQoaklkKV0gPSBkaXN0O1xuICAgICAgaWYgKCFkaXJlY3RlZCkgbWFwW1wiXCIuY29uY2F0KGpJZCwgXCItXCIpLmNvbmNhdChpSWQpXSA9IGRpc3Q7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG1hcDtcbn07XG4vKipcbiAqIOiuoeeul+S4gOWvueiKgueCue+8iG5vZGUx77yMbm9kZTLvvInnmoQgTkRTIOi3neemu1xuICogQHBhcmFtIGdyYXBoIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIG5vZGUxXG4gKiBAcGFyYW0gbm9kZTJcbiAqL1xuXG5cbnZhciBnZXRORFNEaXN0ID0gZnVuY3Rpb24gZ2V0TkRTRGlzdChncmFwaCwgbm9kZTEsIG5vZGUyLCBub2RlTWFwLCBzcERpc3QsIGtOZWlnaGJvclVuaXRzLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3AsIGNhY2hlZE5EU01hcCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgdmFyIF9hO1xuXG4gIHZhciBrZXkgPSBcIlwiLmNvbmNhdChub2RlMS5pZCwgXCItXCIpLmNvbmNhdChub2RlMi5pZCk7XG4gIGlmIChjYWNoZWRORFNNYXAgJiYgY2FjaGVkTkRTTWFwW2tleV0pIHJldHVybiBjYWNoZWRORFNNYXBba2V5XTtcbiAgdmFyIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPyBjYWNoZWRJbnRlckluZHVjZWRHcmFwaFtrZXldIDogdW5kZWZpbmVkOyAvLyDoi6XmsqHmnInnvJPlrZjnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77vvIzorqHnrpdcblxuICBpZiAoIWludGVySW5kdWNlZEdyYXBoKSB7XG4gICAgdmFyIHBhaXJNYXAgPSAoX2EgPSB7fSwgX2Fba2V5XSA9IHtcbiAgICAgIHN0YXJ0OiBub2RlTWFwW25vZGUxLmlkXS5pZHgsXG4gICAgICBlbmQ6IG5vZGVNYXBbbm9kZTIuaWRdLmlkeCxcbiAgICAgIGRpc3RhbmNlOiBzcERpc3RcbiAgICB9LCBfYSk7XG4gICAgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGgsIGNhY2hlZEludGVySW5kdWNlZEdyYXBoKTtcbiAgICBpbnRlckluZHVjZWRHcmFwaCA9IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV07XG4gIH1cblxuICByZXR1cm4gZ2V0TWF0Y2hlZENvdW50KGludGVySW5kdWNlZEdyYXBoLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xufTtcbi8qKlxuICog6K6h566XIHBhdHRlcm4g5LiK57up54K555qE5bqm5pWw5bm25a2Y5YKo5YiwIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBcbiAqL1xuXG5cbnZhciBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAgPSBmdW5jdGlvbiBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgbmVpZ2hib3JMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApIHtcbiAgdmFyIF9hLCBfYiwgX2M7XG5cbiAgdmFyIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSAoX2EgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gKF9iID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluRGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IChfYyA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vdXREZWdyZWU7XG5cbiAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPT09IHVuZGVmaW5lZCkge1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gSW5maW5pdHk7XG4gICAgcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuTm9kZVdpdGhMYWJlbCkge1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmRlZ3JlZTtcbiAgICAgIGlmIChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID4gcGF0dGVybk5vZGVEZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBwYXR0ZXJuTm9kZURlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZUluRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmluRGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA+IHBhdHRlcm5Ob2RlSW5EZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IHBhdHRlcm5Ob2RlSW5EZWdyZWU7XG4gICAgICB2YXIgcGF0dGVybk5vZGVPdXREZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0ub3V0RGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPiBwYXR0ZXJuTm9kZU91dERlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlT3V0RGVncmVlO1xuICAgIH0pO1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPSB7XG4gICAgICBkZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICBpbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgICAgb3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gIH07XG59O1xuLyoqXG4gKiBHQURESSDmqKHlvI/ljLnphY1cbiAqIEBwYXJhbSBncmFwaERhdGEg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gcGF0dGVybiDmkJzntKLlm77vvIjpnIDopoHlnKjljp/lm77kuIrmkJzntKLnmoTmqKHlvI/vvInmlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKborqHnrpfmnInlkJHlm77vvIzpu5jorqQgZmFsc2VcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbGVuZ3RoIOWPguaVsCBsZW5ndGhcbiAqIEBwYXJhbSBub2RlTGFiZWxQcm9wIOiKgueCueaVsOaNruS4reS7o+ihqOiKgueCueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnmlbDmja7kuK3ku6PooajovrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICovXG5cblxudmFyIEdBRERJID0gZnVuY3Rpb24gR0FEREkoZ3JhcGhEYXRhLCBwYXR0ZXJuLCBkaXJlY3RlZCwgaywgbGVuZ3RoLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYTtcblxuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKCFncmFwaERhdGEgfHwgIWdyYXBoRGF0YS5ub2RlcykgcmV0dXJuOyAvLyDliIbkuLrkuInmraXvvJpcbiAgLy8gMC4g6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtVxuICAvLyAxLiDlpITnkIbljp/lm74gZ3JhcGhEYXRh44CC5YaN5YiG5Li6IDF+NSDlsI/mraVcbiAgLy8gMi4g5Yy56YWNXG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlOiBwcmVwcm9jZXNzaW5nIC0tLS0tLS1cIik7XG4gIC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOmihOiuoeeul++8muiKgueCuS/ovrnmlbDvvIzpgrvmjqXnn6npmLXjgIHmnIDnn63ot6/lvoTnn6npmLUtLS0tLS0tXG5cbiAgdmFyIG5vZGVOdW0gPSBncmFwaERhdGEubm9kZXMubGVuZ3RoO1xuICBpZiAoIW5vZGVOdW0pIHJldHVybjsgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmUuMTogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgZ3JhcGggLS0tLS0tLVwiKTtcblxuICB2YXIgc3BtID0gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZS1wcmUuMjogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbSA9IGZsb3lkV2Fyc2hhbGwocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMC4yOiBnb2luZyB0byBjYWxjdWxhdGUgaW50ZXJzZWN0IG5laWdoYm9yIGluZHVjZWQgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyAxLjIuIOeUn+aIkOS4iumdouiKgueCueWvueeahOebuOW6lOebuOS6pOmCu+WxheivseWvvOWtkOWbvuOAguagvOW8j+S4uiB7J2JlZ2luTm9kZUlkeC1lbmROb2RlSWR4Jzoge25vZGVzOiBbXSwgZWRnZXM6IFtdfX1cblxuICB2YXIgaW50R01hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyc01hcCwga05laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSk7IC8vIDEuMy4g5L2/55SoIGdTcGFuIOeul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8ieiuoeeulyBJU0ludEcg55qE5YmNIDEwIOS4qumikeeOh+acgOmrmOeahOWtkOe7k+aehO+8iDMtNOadoei+ue+8iVxuXG4gIHZhciB0b3AgPSAxMCxcbiAgICAgIG1pblN1cHBvcnQgPSAxLFxuICAgICAgbWluTm9kZU51bSA9IDEsXG4gICAgICBtYXhOb2RlTnVtID0gNDtcbiAgdmFyIHBhcmFtcyA9IHtcbiAgICBncmFwaHM6IGludEdNYXAsXG4gICAgbm9kZUxhYmVsUHJvcDogbm9kZUxhYmVsUHJvcCxcbiAgICBlZGdlTGFiZWxQcm9wOiBlZGdlTGFiZWxQcm9wLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICBtYXhOb2RlTnVtOiBtYXhOb2RlTnVtLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9OyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMTogKGdTcGFuKSBnb2luZyB0byBmaW5kIGZyZXF1ZW50IHN0cnVjdHVyZSBkc0cgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UxLjE6IGdvaW5nIHRvIHJ1biBnU3BhbiAtLS0tLS0tXCIpO1xuICAvLyDmmoLml7blgYforr7nlJ/miJDnmoQgc3ViIHN0cnVjdHVyZSDpg73lj6rmnInkuIDmnaHovrlcblxuICB2YXIgZnJlU3RydWN0dXJlcyA9IGdTcGFuKHBhcmFtcykuc2xpY2UoMCwgdG9wKTsgLy8gc3RydWN0dXJlTnVtIOWPr+iDveWwj+S6jiB0b3BcblxuICB2YXIgc3RydWN0dXJlTnVtID0gZnJlU3RydWN0dXJlcy5sZW5ndGg7IC8vIDEuNC4g6K6h566X5LiK6L+wIDEwIOS4quWtkOe7k+aehOWcqCBpbnRHTWFwIOS4reavj+S4quivseWvvOWtkOWbvueahOWMuemFjeS4quaVsFxuXG4gIHZhciBtYXRjaGVkQ291bnRNYXAgPSBbXTtcbiAgZnJlU3RydWN0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChzdHJ1Y3R1cmUsIGkpIHtcbiAgICBtYXRjaGVkQ291bnRNYXBbaV0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhpbnRHTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBncmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgIHZhciBzdWJTdHJ1Y3R1cmVDb3VudCA9IGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgIG1hdGNoZWRDb3VudE1hcFtpXVtrZXldID0gc3ViU3RydWN0dXJlQ291bnQ7XG4gICAgfSk7XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBmaW5kIHRoZSBtb3N0IHJlcHJlc2VudCBzdHJ1Y3V0cmUgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIDEuNS4g5a+55LqO5q+P5Liq5a2Q57uT5p6E77yM5qC55o2u5Yy56YWN5Liq5pWw5Li6IGludEdNYXAg5Lit55qE6K+x5a+85a2Q5Zu+5YiG57uE77yM55Sf5oiQIHN0cnVjdHVyZU51bSDnp43liIbnu4RcbiAgLy8g6K6h566X5q+P56eN5YiG57uE55qE57G76Ze06Led5ZKM57G75YaF6Ze06Led77yM5om+5Yiw57G76Ze06Led5pyA5aSn44CB57G75YaF6Ze06Led5pyA5bCP55qE5LiA56eN5YiG57uE77yM6L+Z56eN5YiG57uE5a+55bqU55qE5a2Q57uT5p6E6KKr6YCJ5Li65ZSv5LiA5Luj6KGo5oCn5a2Q57uT5p6EIERTKEcpXG5cbiAgdmFyIF9kID0gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgZnJlU3RydWN0dXJlcyksXG4gICAgICBkc0cgPSBfZC5zdHJ1Y3R1cmUsXG4gICAgICBuZHNEaXN0ID0gX2Quc3RydWN0dXJlQ291bnRNYXA7IC8vIC0tLS0tLS0tIOesrOS6jOatpe+8jOWMuemFjS0tLS0tLS1cbiAgLy8gMi4xIOaJvuWIsOS7jiBRIOS4reeahOS4gOS4quiKgueCueS9nOS4uui1t+Wni+iKgueCue+8jOWvu+aJviBHIOS4reeahOWMuemFjeOAgui/meS4quWFtuWunuiKgueCueeahOagh+etvuWPr+S7peWcqCBHIOS4reaJvuWIsOacgOWkmueahOiKgueCuVxuXG5cbiAgdmFyIGJlZ2luUE5vZGUgPSBwYXR0ZXJuLm5vZGVzWzBdLFxuICAgICAgY2FuZGlkYXRlcyA9IFtdLFxuICAgICAgbGFiZWwgPSAoX2EgPSBwYXR0ZXJuLm5vZGVzWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fbbm9kZUxhYmVsUHJvcF0sXG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IC1JbmZpbml0eTtcbiAgcGF0dGVybi5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHBMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIG5vZGVzV2l0aFNhbWVMYWJlbCA9IG5vZGVMYWJlbE1hcFtwTGFiZWxdO1xuXG4gICAgaWYgKChub2Rlc1dpdGhTYW1lTGFiZWwgPT09IG51bGwgfHwgbm9kZXNXaXRoU2FtZUxhYmVsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2Rlc1dpdGhTYW1lTGFiZWwubGVuZ3RoKSA+IG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsKSB7XG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IG5vZGVzV2l0aFNhbWVMYWJlbC5sZW5ndGg7XG4gICAgICBjYW5kaWRhdGVzID0gbm9kZXNXaXRoU2FtZUxhYmVsO1xuICAgICAgbGFiZWwgPSBwTGFiZWw7XG4gICAgICBiZWdpblBOb2RlID0gbm9kZTtcbiAgICB9XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMjogZ29pbmcgdG8gZmluZCBjYW5kaWRhdGVzIC0tLS0tLS1cIik7XG4gIC8vIOWFqOWxgOe8k+WtmO+8jOmBv+WFjemHjeWkjeiuoeeul1xuXG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwID0ge307IC8vIGtleSDmmK8gbGFiZWzvvIx2YWx1ZSDmmK/or6UgbGFiZWwg6IqC54K555qE5pyA5bCP5bqm5pWwXG5cbiAgdmFyIHBhdHRlcm5JbnRHcmFwaE1hcCA9IHt9LFxuICAgICAgcGF0dGVybk5EU0Rpc3QgPSB7fSxcbiAgICAgIC8vIGtleSDkuLogbm9kZS5pZC1ub2RlLmlkXG4gIHBhdHRlcm5ORFNEaXN0TWFwID0ge307IC8vIGtleSDkuLogbm9kZS5pZC1sYWJlbDLvvIx2YWx1ZSBuZHPot53nprvlgLzmlbDnu4TvvIjmjInku47lpKfliLDlsI/mjpLluo/vvIzml6DpnIDlhbPlv4PlhbfkvZPlr7nlupTlk6rkuKogbm9kZTLvvIlcbiAgLy8gMi4yLjIg5a+55LqOIFEg5Lit55qE5Y+m5LiA5Liq5qCH562+55qEIGsg5Liq6IqC54K577yM6K6h566X5a6D5Lus5YiwIG5vZGUg55qE5pyA55+t6Lev5b6E5Lul5Y+KIE5EUyDot53nprtcblxuICB2YXIgcGF0dGVyblNwRGlzdCA9IHt9O1xuICB2YXIgcGF0dGVyblNwRGlzdEJhY2sgPSB7fTtcbiAgT2JqZWN0LmtleXMocGF0dGVybk5vZGVMYWJlbE1hcCkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwyLCBqKSB7XG4gICAgcGF0dGVyblNwRGlzdFtsYWJlbDJdID0gW107XG5cbiAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWF4RGlzdCA9IC1JbmZpbml0eTtcbiAgICB2YXIgcGF0dGVybk5vZGVzV2l0aExhYmVsMiA9IHBhdHRlcm5Ob2RlTGFiZWxNYXBbbGFiZWwyXTtcbiAgICB2YXIgcGF0dGVybk5vZGVQYWlyTWFwID0ge307XG4gICAgcGF0dGVybk5vZGVzV2l0aExhYmVsMi5mb3JFYWNoKGZ1bmN0aW9uIChub2RlV2l0aExhYmVsMikge1xuICAgICAgdmFyIGRpc3QgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXTtcbiAgICAgIGRpc3QgJiYgcGF0dGVyblNwRGlzdFtsYWJlbDJdLnB1c2goZGlzdCk7XG4gICAgICBpZiAobWF4RGlzdCA8IGRpc3QpIG1heERpc3QgPSBkaXN0O1xuICAgICAgcGF0dGVybk5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXSA9IHtcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogcGF0dGVybk5vZGVNYXBbbm9kZVdpdGhMYWJlbDIuaWRdLmlkeCxcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICB2YXIgZGlzdEJhY2sgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkLCBcIi1cIikuY29uY2F0KGJlZ2luUE5vZGUuaWQpXTtcbiAgICAgICAgZGlzdEJhY2sgJiYgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXS5wdXNoKGRpc3RCYWNrKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gc3BEaXN0W2xhYmVsMl0g5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0gPSBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIGlmIChkaXJlY3RlZCkgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXSA9IHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyDorqHnrpcgUSDkuK3miYDmnIkgbGFiZWwyIOiKgueCueWIsCBiZWdpblBOb2RlIOeahCBORFMg6Led56a7XG4gICAgLy8g5omA5pyJIGxhYmVsMiDoioLngrnliLAgYmVnaW5QTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcbiAgICAvLyBrZXk6IG5vZGUxLmlkLW5vZGUyLmlkXG5cbiAgICBwYXR0ZXJuSW50R3JhcGhNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYXR0ZXJuTm9kZVBhaXJNYXAsIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgcGF0dGVybiwgcGF0dGVybkludEdyYXBoTWFwKTsgLy8gcGF0dGVybiDkuK0gYmVnaW5Ob2RlIOWIsOW9k+WJjSBsYWJlbDIg6IqC54K5IOeahCBORFMg6Led56a777yI5pWw57uE77yM5peg6ZyA5YWz5b+D5YW35L2T5a+55bqU5Yiw5ZOq5Liq6IqC54K577yJXG5cbiAgICB2YXIgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhwYXR0ZXJuTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKHBhdHRlcm5ORFNEaXN0W2tleV0pIHtcbiAgICAgICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkucHVzaChwYXR0ZXJuTkRTRGlzdFtrZXldKTtcbiAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgIH1cblxuICAgICAgdmFyIHBhdHRlcm5JbnRHcmFwaCA9IHBhdHRlcm5JbnRHcmFwaE1hcFtrZXldO1xuICAgICAgcGF0dGVybk5EU0Rpc3Rba2V5XSA9IGdldE1hdGNoZWRDb3VudChwYXR0ZXJuSW50R3JhcGgsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5wdXNoKHBhdHRlcm5ORFNEaXN0W2tleV0pO1xuICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudFBhdHRlcm5ORFNEaXN0IOS7juWkp+WIsOWwj+aOkuW6j1xuXG4gICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYiAtIGE7XG4gICAgfSk7XG4gICAgcGF0dGVybk5EU0Rpc3RNYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChsYWJlbDIpXSA9IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5O1xuICAgIGlmIChsYWJlbDIgPT09IGxhYmVsKSByZXR1cm47XG4gICAgdmFyIGNhbmRpZGF0ZXNOdW0gPSAoY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmxlbmd0aCkgfHwgMDtcblxuICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gX2xvb3BfNChtKSB7XG4gICAgICB2YXIgY05vZGUgPSBjYW5kaWRhdGVzW21dOyAvLyBwcnVuZTHvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg55qEIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55Liq5pWw5bCR5LqOIHBhdHRlcm4g5LitIGxhYmVsMiDkuKrmlbDvvIzliKDljrvlroNcblxuICAgICAgdmFyIGdyYXBoTmVpZ2hib3JVbml0ID0ga05laWdoYm9yVW5pdHNbbm9kZU1hcFtjTm9kZS5pZF0uaWR4XTtcbiAgICAgIHZhciBncmFwaE5laWdoYm9yVW5pdENvdW50TWFwID0gZ3JhcGhOZWlnaGJvclVuaXQubm9kZUxhYmVsQ291bnRNYXBbbGFiZWwyXTtcbiAgICAgIHZhciBwYXR0ZXJuTGFiZWwyTnVtID0gcGF0dGVybk5vZGVMYWJlbE1hcFtsYWJlbDJdLmxlbmd0aDtcblxuICAgICAgaWYgKCFncmFwaE5laWdoYm9yVW5pdENvdW50TWFwIHx8IGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAuY291bnQgPCBwYXR0ZXJuTGFiZWwyTnVtKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZTLvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg5YiwIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55pyA55+t6Lev5b6E5aSn5LqOIHBhdHRlcm5TcERpc3RbbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gKHBydW5lMiDop4TliJnljbPvvJpjYW5kaWRhdGUg55u45YWz55qE5pyA55+t6Lev5b6E55qE5pyA5aSnIHNwRGlzdFtsYWJlbDJdLmxlbmd0aCDkuKrvvIzmjInnhaflpKflsI/pobrluo/kvp3mrKHlkowgcGF0dGVyblNwRGlzdFtsYWJlbDJdIOS4reeahOWAvOavlOi+g++8jOWPquimgemBh+WIsOS4gOS4quaYryBHID4gUSDnmoTvvIzlsLHliKDljrvov5nkuKogY2FuZGlkYXRlKVxuXG5cbiAgICAgIHZhciBwcnVuZTJJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChncmFwaE5laWdoYm9yVW5pdENvdW50TWFwLmRpc3RzW25dID4gcGF0dGVyblNwRGlzdFtsYWJlbDJdW25dKSB7XG4gICAgICAgICAgcHJ1bmUySW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBydW5lMkludmFsaWQpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lM++8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDliLAga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrkgTkRTIOi3neemu+Wwj+S6jiBwYXR0ZXJuTkRTRGlzdFtiZWdpbk5vZGUuaWQtbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gVE9ET++8mnBydW5lM++8jGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5IOS4jiBjdXJyZW50TkRTRGlzdCDnmoTmr5TovoNcbiAgICAgIC8vIOiuoeeulyBHIOS4reaJgOaciSBsYWJlbDIg6IqC54K55YiwIGNOb2RlIOeahCBORFMg6Led56a7XG4gICAgICAvLyDmiYDmnIkgbGFiZWwyIOiKgueCueWIsCBjTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcblxuXG4gICAgICB2YXIgY05vZGVQYWlyTWFwID0ge307XG4gICAgICBncmFwaE5laWdoYm9yVW5pdC5uZWlnaGJvcnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlKSB7XG4gICAgICAgIHZhciBkaXN0ID0gc3BtTWFwW1wiXCIuY29uY2F0KGNOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCldO1xuICAgICAgICBjTm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoY05vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IG5vZGVNYXBbY05vZGUuaWRdLmlkeCxcbiAgICAgICAgICBlbmQ6IG5vZGVNYXBbbmVpZ2hib3JOb2RlLmlkXS5pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgICAgfTtcbiAgICAgIH0pOyAvLyDmm7TmlrAgaW50R01hcFxuXG4gICAgICBpbnRHTWFwID0gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgoY05vZGVQYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGhEYXRhLCBpbnRHTWFwKTsgLy8gY2FuZGlkYXRlIOWIsOWug+WRqOWbtCBsYWJlbDIg6IqC54K555qEIE5EUyDot53nprssIGtleSDmmK8gbm9kZS5pZC1ub2RlLmlkXG5cbiAgICAgIHZhciBjdXJyZW50TkRTRGlzdEFycmF5ID0gW107XG4gICAgICBPYmplY3Qua2V5cyhjTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAobmRzRGlzdFtrZXldKSB7XG4gICAgICAgICAgY3VycmVudE5EU0Rpc3RBcnJheS5wdXNoKG5kc0Rpc3Rba2V5XSk7XG4gICAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbnRHcmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgICAgbmRzRGlzdFtrZXldID0gZ2V0TWF0Y2hlZENvdW50KGludEdyYXBoLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgICBjdXJyZW50TkRTRGlzdEFycmF5LnB1c2gobmRzRGlzdFtrZXldKTtcbiAgICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudE5EU0Rpc3RBcnJheSDku47lpKfliLDlsI/mjpLluo9cblxuICAgICAgY3VycmVudE5EU0Rpc3RBcnJheSA9IGN1cnJlbnRORFNEaXN0QXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYiAtIGE7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcnVuZTNJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChjdXJyZW50TkRTRGlzdEFycmF5W25dIDwgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXlbbl0pIHtcbiAgICAgICAgICBwcnVuZTNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJ1bmUzSW52YWxpZCkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgbSA9IGNhbmRpZGF0ZXNOdW0gLSAxOyBtID49IDA7IG0tLSkge1xuICAgICAgX2xvb3BfNChtKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgY2FuZGlkYXRlR3JhcGhzID0gW107IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UzOiBnb2luZyB0byBzcGxpY2UgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gY2FuZGlkYXRlcyDnu4/ov4fnrZvpgInlkI7vvIzku6Xmr4/kuKogY2FuZGlkYXRlIOS4uuS4reW/g++8jOeUn+aIkCBMZW5ndGgtbmVpZ2hib3Ig55qE6YK75bGF6K+x5a+85a2Q5Zu+XG4gIC8vIOW5tuWcqOivseWvvOWtkOWbvuS4reWOu+mZpOS4jeWPr+iDveWcqCBRIOS4iuaJvuWIsOWMuemFjeeahOeCue+8muWcqCBRIOS4iuS4jeWtmOWcqOeahCBsYWJlbO+8jOWFtuS7liBsYWJlbCDliLAgY2FuZGlkYXRlIOeahOacgOWkp+acgOefrei3neemu+espuWQiCBR44CBTkRTIOi3neemu+espuWQiCBRXG5cbiAgY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgIHZhciBub2RlSWR4ID0gbm9kZU1hcFtjYW5kaWRhdGUuaWRdLmlkeDtcbiAgICB2YXIgbGVuZ3RoTmVpZ2hib3JVbml0ID0gZmluZEtOZWlnaGJvclVuaXQoZ3JhcGhEYXRhLm5vZGVzLCBzcG1bbm9kZUlkeF0sIG5vZGVJZHgsIG5vZGVMYWJlbFByb3AsIGxlbmd0aCk7XG4gICAgdmFyIG5laWdoYm9yTm9kZXMgPSBsZW5ndGhOZWlnaGJvclVuaXQubmVpZ2hib3JzOyAvLyDliKDpmaTkuI3lj6/og73mib7liLDljLnphY3nmoTpgrvlsYXngrlcblxuICAgIHZhciBuZWlnaGJvck51bSA9IG5laWdoYm9yTm9kZXMubGVuZ3RoO1xuICAgIHZhciB1bm1hdGNoZWQgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSBuZWlnaGJvck51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAvLyDlpoLmnpzpgJrov4foo4HliarvvIznrKblkIjmnaHku7bnmoToioLngrnmlbDph4/lt7Lov4flsJHvvIzor7TmmI7kuI3og73ljLnphY3ov5nkuKogY2FuZGlkYXRlIOebuOWFs+eahOWbvlxuICAgICAgaWYgKG5laWdoYm9yTm9kZXMubGVuZ3RoICsgMSA8IHBhdHRlcm4ubm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHVubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5laWdoYm9yTm9kZXNbaV07XG4gICAgICB2YXIgbmVpZ2hib3JMYWJlbCA9IG5laWdoYm9yTm9kZVtub2RlTGFiZWxQcm9wXTsgLy8gcHJ1bmUxOiDoi6Xor6XpgrvlsYXngrnnmoQgbGFiZWwg5LiN5a2Y5Zyo5LqOIHBhdHRlcm4g5Lit77yM56e76Zmk6L+Z5Liq54K5XG5cbiAgICAgIGlmICghcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXSB8fCAhcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBwcnVuZTI6IOiLpeivpemCu+WxheeCueWIsCBjYW5kaWRhdGUg55qE5pyA55+t6Lev5b6E5q+U5ZKM5a6D5pyJ55u45ZCMIGxhYmVsIOeahOiKgueCueWIsCBiZWdpblBOb2RlIOeahOacgOWkp+acgOefrei3r+W+hOmVv+W6pumVv++8jOenu+mZpOi/meS4queCuVxuICAgICAgLy8gcHJ1bmUyLjE6IOWmguaenOayoeaciei/meS4quagh+etvuWIsCBiZWdpblBOb2RlIOeahOi3neemu+iusOW9le+8jOivtOaYjiBwYXR0ZXJuIOS4iu+8iOWPr+iDvSBiZWdpblBOb2RlIOaYr+i/meS4qiBsYWJlbO+8ieayoeacieWFtuS7lui/meS4qiBsYWJlbCDnmoToioLngrlcblxuXG4gICAgICBpZiAoIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0gfHwgIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGNhbmRpZGF0ZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpOyAvLyBwcnVuZTIuMlxuXG4gICAgICB2YXIgZGlzdFRvQ2FuZGlkYXRlID0gc3BtTWFwW2tleV07XG4gICAgICB2YXIgaWR4ID0gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG1heERpc3RXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdW2lkeF07IC8vIHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0g5bey57uP5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICAgIGlmIChkaXN0VG9DYW5kaWRhdGUgPiBtYXhEaXN0V2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBrZXlCYWNrID0gXCJcIi5jb25jYXQobmVpZ2hib3JOb2RlLmlkLCBcIi1cIikuY29uY2F0KGNhbmRpZGF0ZS5pZCk7XG4gICAgICAgIHZhciBkaXN0RnJvbUNhbmRpZGF0ZSA9IHNwbU1hcFtrZXlCYWNrXTtcbiAgICAgICAgaWR4ID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIG1heEJhY2tEaXN0V2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF1baWR4XTtcblxuICAgICAgICBpZiAoZGlzdEZyb21DYW5kaWRhdGUgPiBtYXhCYWNrRGlzdFdpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIHBydW5lMzog6Iul6K+l6YK75bGF54K55YiwIGNhbmRpZGF0ZSDnmoQgTkRTIOi3neemu+avlOWSjOWug+acieebuOWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5QTm9kZSDnmoTmnIDlsI8gTkRTIOi3neemu+Wwj++8jOenu+mZpOi/meS4queCuVxuXG5cbiAgICAgIHZhciBuZHNUb0NhbmRpZGF0ZSA9IG5kc0Rpc3Rba2V5XSA/IG5kc0Rpc3Rba2V5XSA6IGdldE5EU0Rpc3QoZ3JhcGhEYXRhLCBjYW5kaWRhdGUsIG5laWdoYm9yTm9kZSwgbm9kZU1hcCwgZGlzdFRvQ2FuZGlkYXRlLCBrTmVpZ2hib3JVbml0cywgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wLCBuZHNEaXN0LCBpbnRHTWFwKTtcbiAgICAgIHZhciBwYXR0ZXJuS2V5ID0gXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvckxhYmVsKTtcbiAgICAgIHZhciBtaW5OZHNXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XVtwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XS5sZW5ndGggLSAxXTsgLy8gcGF0dGVybk5EU0Rpc3Rba2V5XSDkuIDlrprlrZjlnKhcblxuICAgICAgaWYgKG5kc1RvQ2FuZGlkYXRlIDwgbWluTmRzV2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcHJ1bmU0OiDoi6Xor6XpgrvlsYXngrnnmoTluqbmlbDlsI/kuo4gcGF0dGVybiDlkIwgbGFiZWwg6IqC54K55pyA5bCP5bqm5pWw77yM5Yig5Y676K+l54K5XG5cblxuICAgICAgdmFyIF9hID0gc3Rhc2hQYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAsIG5laWdoYm9yTGFiZWwsIHBhdHRlcm5Ob2RlTWFwLCBwYXR0ZXJuTm9kZUxhYmVsTWFwKSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU7XG5cbiAgICAgIGlmIChub2RlTWFwW25laWdoYm9yTm9kZS5pZF0uZGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyDoioLngrnlnKjkuKrmlbDkuIrnrKblkIjljLnphY3vvIjkuI3lsJHkuo4gcGF0dGVybiDnmoToioLngrnkuKrmlbDvvInvvIznjrDlnKjnrZvpgInnm7jlhbPovrlcblxuXG4gICAgaWYgKCF1bm1hdGNoZWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5wdXNoKHtcbiAgICAgICAgbm9kZXM6IFtjYW5kaWRhdGVdLmNvbmNhdChuZWlnaGJvck5vZGVzKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTQ6IGdvaW5nIHRvIHNwbGljZSBlZGdlcyBhbmQgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGUgPSBkaWprc3RyYShwYXR0ZXJuLCBiZWdpblBOb2RlLmlkLCBmYWxzZSkubGVuZ3RoO1xuICB2YXIgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCA9IHt9O1xuXG4gIGlmIChkaXJlY3RlZCkge1xuICAgIE9iamVjdC5rZXlzKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlSWQpIHtcbiAgICAgIHZhciBub2RlTGFiZWwgPSBwYXR0ZXJuTm9kZU1hcFtub2RlSWRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXSkgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtub2RlTGFiZWxdID0gW3VuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlW25vZGVJZF1dO2Vsc2UgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtub2RlTGFiZWxdLnB1c2godW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVbbm9kZUlkXSk7XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXModW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCkuZm9yRWFjaChmdW5jdGlvbiAocExhYmVsKSB7XG4gICAgICB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW3BMYWJlbF0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAtIGI7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwID0gcGF0dGVyblNwRGlzdDtcbiAgfSAvLyDnjrDlnKggY2FuZGlkYXRlR3JhcGhzIOmHjOmdouWPquacieiKgueCue+8jOi/m+ihjOi+ueeahOetm+mAiVxuXG5cbiAgdmFyIGNhbmRpZGF0ZUdyYXBoTnVtID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgIHZhciBjYW5kaWRhdGVHcmFwaCA9IGNhbmRpZGF0ZUdyYXBoc1tpXTtcbiAgICB2YXIgY2FuZGlkYXRlID0gY2FuZGlkYXRlR3JhcGgubm9kZXNbMF07XG4gICAgdmFyIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwID0ge307XG4gICAgdmFyIGNhbmRpZGF0ZU5vZGVNYXAgPSB7fTtcbiAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBxKSB7XG4gICAgICBjYW5kaWRhdGVOb2RlTWFwW25vZGUuaWRdID0ge1xuICAgICAgICBpZHg6IHEsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIGRlZ3JlZTogMCxcbiAgICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICAgIG91dERlZ3JlZTogMFxuICAgICAgfTtcbiAgICAgIHZhciBjTm9kZUxhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIGlmICghY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY05vZGVMYWJlbF0pIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdID0gMTtlbHNlIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdKys7XG4gICAgfSk7IC8vIOagueaNriBjYW5kaWRhdGUg5ZKMIG5laWdoYm9yTm9kZXMg5Lit55qE6IqC54K555Sf5oiQIEcg55qE6K+x5a+85a2Q5Zu+XG4gICAgLy8g5Y2z77yM5bCGIGdyYXBoRGF0YSDkuIrkuKTnq6/pg73lnKggY2FuZGlkYXRlR3JhcGgubm9kZXMg5Lit55qE6L655pS+5YWlIGNhbmRpZGF0ZUVkZ2VzXG5cbiAgICB2YXIgY2FuZGlkYXRlRWRnZXMgPSBbXTtcbiAgICB2YXIgZWRnZUxhYmVsQ291bnRNYXAgPSB7fTtcbiAgICBncmFwaERhdGEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdICYmIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgIGlmICghZWRnZUxhYmVsQ291bnRNYXBbZWRnZVtlZGdlTGFiZWxQcm9wXV0pIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dID0gMTtlbHNlIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gICAgICB9XG4gICAgfSk7IC8vIHBydW5l77ya6Iul5pyJ5LiA5LiqIGVkZ2VMYWJlbCDlnKggY2FuZGlkYXRlR3JhcGgg5LiK55qE5Liq5pWw5bCR5LqOIHBhdHRlcm7vvIzljrvpmaTor6Xlm75cblxuICAgIHZhciBwYXR0ZW5yRWRnZUxhYmVsTnVtID0gT2JqZWN0LmtleXMocGF0dGVybkVkZ2VMYWJlbE1hcCkubGVuZ3RoO1xuICAgIHZhciBwcnVuZWRCeUVkZ2VMYWJlbCA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgZSA9IDA7IGUgPCBwYXR0ZW5yRWRnZUxhYmVsTnVtOyBlKyspIHtcbiAgICAgIHZhciBsYWJlbF8xID0gT2JqZWN0LmtleXMocGF0dGVybkVkZ2VMYWJlbE1hcClbZV07XG5cbiAgICAgIGlmICghZWRnZUxhYmVsQ291bnRNYXBbbGFiZWxfMV0gfHwgZWRnZUxhYmVsQ291bnRNYXBbbGFiZWxfMV0gPCBwYXR0ZXJuRWRnZUxhYmVsTWFwW2xhYmVsXzFdLmxlbmd0aCkge1xuICAgICAgICBwcnVuZWRCeUVkZ2VMYWJlbCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcnVuZWRCeUVkZ2VMYWJlbCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfSAvLyDpgY3ljoYgY2FuZGlkYXRlRWRnZXPvvIzov5vooYzovrnnmoTnrZvpgIlcblxuXG4gICAgdmFyIGNhbmRpZGF0ZUVkZ2VOdW0gPSBjYW5kaWRhdGVFZGdlcy5sZW5ndGg7IC8vIHBydW5l77ya6Iul6L655pWw6L+H5bCR77yM5Y676Zmk6K+l5Zu+XG5cbiAgICBpZiAoY2FuZGlkYXRlRWRnZU51bSA8IHBhdHRlcm4uZWRnZXMubGVuZ3RoKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICB9XG5cbiAgICB2YXIgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gZmFsc2U7XG5cbiAgICB2YXIgX2xvb3BfNSA9IGZ1bmN0aW9uIF9sb29wXzUoZSkge1xuICAgICAgdmFyIGVkZ2UgPSBjYW5kaWRhdGVFZGdlc1tlXTtcbiAgICAgIHZhciBlZGdlTGFiZWwgPSBlZGdlW2VkZ2VMYWJlbFByb3BdO1xuICAgICAgdmFyIHBhdHRlcm5FZGdlc1dpdGhMYWJlbCA9IHBhdHRlcm5FZGdlTGFiZWxNYXBbZWRnZUxhYmVsXTsgLy8gcHJ1bmUgMTog6Iul6L6555qEIGxhYmVsIOS4jeWtmOWcqOS6jiBwYXR0ZXJuIOi+uSBsYWJlbCDkuK3vvIzljrvpmaTor6XovrlcblxuICAgICAgaWYgKCFwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgfHwgIXBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tOyAvLyDoi6Xov5nkuKogbGFiZWwg55qEIGNvdW50IOWHj+WwkeS5i+WQju+8jOivpSBsYWJlbCDnmoTovrnmlbDkuI3otrPvvIzljrvpmaTor6Xlm75cblxuICAgICAgICBpZiAocGF0dGVybkVkZ2VzV2l0aExhYmVsICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKGUsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZSAyOiDoi6XovrnnmoQgbGFiZWwgK+S4pOerryBsYWJlbCDnmoTkuInlhYPnu4TlhbPns7vkuI3og73lnKggcGF0dGVybiDkuK3mib7liLDvvIzljrvpmaTor6XovrlcblxuXG4gICAgICB2YXIgc291cmNlTGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgdmFyIHRhcmdldExhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIHZhciBlZGdlTWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmZvckVhY2goZnVuY3Rpb24gKHBhdHRlcm5FZGdlKSB7XG4gICAgICAgIHZhciBwYXR0ZXJuU291cmNlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybkVkZ2Uuc291cmNlXS5ub2RlO1xuICAgICAgICB2YXIgcGF0dGVyblRhcmdldCA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5FZGdlLnRhcmdldF0ubm9kZTtcbiAgICAgICAgaWYgKHBhdHRlcm5Tb3VyY2Vbbm9kZUxhYmVsUHJvcF0gPT09IHNvdXJjZUxhYmVsICYmIHBhdHRlcm5UYXJnZXRbbm9kZUxhYmVsUHJvcF0gPT09IHRhcmdldExhYmVsKSBlZGdlTWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIGlmICghZGlyZWN0ZWQgJiYgcGF0dGVyblNvdXJjZVtub2RlTGFiZWxQcm9wXSA9PT0gdGFyZ2V0TGFiZWwgJiYgcGF0dGVyblRhcmdldFtub2RlTGFiZWxQcm9wXSA9PT0gc291cmNlTGFiZWwpIGVkZ2VNYXRjaGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWVkZ2VNYXRjaGVkKSB7XG4gICAgICAgIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0tLTsgLy8g6Iul6L+Z5LiqIGxhYmVsIOeahCBjb3VudCDlh4/lsJHkuYvlkI7vvIzor6UgbGFiZWwg55qE6L655pWw5LiN6Laz77yM5Y676Zmk6K+l5Zu+XG5cbiAgICAgICAgaWYgKHBhdHRlcm5FZGdlc1dpdGhMYWJlbCAmJiBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdIDwgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZShlLCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUtLTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgZSA9IGNhbmRpZGF0ZUVkZ2VOdW0gLSAxOyBlID49IDA7IGUtLSkge1xuICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF81KGUpO1xuXG4gICAgICBpZiAoc3RhdGVfMiA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9IC8vIHBydW5lMjog5Yig6Zmk6L6555qE6L+H56iL5Lit77yM5Y+R546w6L655pWw6L+H5bCRL+i+uSBsYWJlbCDmlbDov4flsJHml7bvvIzljrvpmaTor6Xlm75cblxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuXG4gICAgY2FuZGlkYXRlR3JhcGguZWRnZXMgPSBjYW5kaWRhdGVFZGdlcztcbiAgICB2YXIgbGVuZ3Roc1RvQ2FuZGlkYXRlID0gZGlqa3N0cmEoY2FuZGlkYXRlR3JhcGgsIGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkLCBmYWxzZSkubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKGxlbmd0aHNUb0NhbmRpZGF0ZSkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldElkKSB7XG4gICAgICBpZiAodGFyZ2V0SWQgPT09IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkIHx8IGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkgcmV0dXJuOyAvLyBwcnVuZTQ6IOmAmui/h+S4iui/sOijgeWJqu+8jOWPr+iDveWvvOiHtOivpemCu+WxheWtkOWbvuWPmOS4uuS4jei/numAmuOAguijgeWJquaOieebruWJjeWcqOi/meS4qumCu+WxheWtkOWbvuS4reWSjCBjYW5kaWRhdGXvvIjnrKzkuIDkuKroioLngrnvvInkuI3ov57pgJrnmoToioLngrlcblxuICAgICAgaWYgKGxlbmd0aHNUb0NhbmRpZGF0ZVt0YXJnZXRJZF0gPT09IEluZmluaXR5KSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlTGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdLS07XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW3RhcmdldE5vZGVMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWR4ID0gY2FuZGlkYXRlR3JhcGgubm9kZXMuaW5kZXhPZihjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlKTtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIHBydW5lNTog57uP6L+H6L656KOB5Ymq5ZCO77yM5Y+v6IO95Y+I5Ye6546w5LqG5pyA55+t6Lev5b6E6L+H6ZW/55qE6IqC54K5IO+8iOavlCBwYXR0ZXJuIOS4reWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5Ob2RlIOacgOWkp+acgOefrei3neemu+i/nO+8ie+8jOWIoOWOu+i/meS6m+iKgueCuVxuXG5cbiAgICAgIHZhciBuTGFiZWwgPSBub2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICBpZiAoIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXSB8fCAhdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdLmxlbmd0aCB8fCBsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID4gdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdW3VuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggLSAxXSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIHZhciBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICB2YXIgbG9vcENvdW50ID0gMDtcblxuICAgIHdoaWxlIChkZWdyZWVDaGFuZ2VkICYmICFjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGRlZ3JlZUNoYW5nZWQgPSBmYWxzZTsgLy8gY2FuZGlkYXRlIOW6puaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG4gICAgICB2YXIgY29uZGl0aW9uID0gZGlyZWN0ZWQgPyBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5pbkRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmluRGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5vdXREZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5vdXREZWdyZWUgOiBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBjYW5kaWRhdGUgbGFiZWwg5Liq5pWw5LiN6Laz77yM5Yig5Y676K+l5Zu+XG5cblxuICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0ubGVuZ3RoKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBwcnVuZTbvvJrljrvpmaTluqbmlbDov4flsI/nmoToioLngrlcblxuXG4gICAgICB2YXIgY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIG8gPSBjdXJyZW50Q2FuZGlkYXRlTm9kZU51bSAtIDE7IG8gPj0gMDsgby0tKSB7XG4gICAgICAgIHZhciBjZ05vZGUgPSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1tvXTtcbiAgICAgICAgdmFyIG5vZGVEZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0uZGVncmVlO1xuICAgICAgICB2YXIgbm9kZUluRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmluRGVncmVlO1xuICAgICAgICB2YXIgbm9kZU91dERlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5vdXREZWdyZWU7XG4gICAgICAgIHZhciBjTm9kZUxhYmVsID0gY2dOb2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICAgIHZhciBfZSA9IHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBjTm9kZUxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCksXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlO1xuXG4gICAgICAgIHZhciBkZWxldGVDb25kaXRpb24gPSBkaXJlY3RlZCA/IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlIHx8IG5vZGVJbkRlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSB8fCBub2RlT3V0RGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA6IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlO1xuXG4gICAgICAgIGlmIChkZWxldGVDb25kaXRpb24pIHtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLS07IC8vIOiKgueCuSBsYWJlbCDkuKrmlbDkuI3otrNcblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShvLCAxKTtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCAhZGVncmVlQ2hhbmdlZCAmJiBsb29wQ291bnQgIT09IDApIGJyZWFrOyAvLyDnu4/ov4cgcHJ1bmU1IOiKgueCueijgeWJqu+8jOWIoOWOu+err+eCueW3sue7j+S4jeWcqCBjYW5kaWRhdGVHcmFwaCDkuK3nmoTovrlcblxuICAgICAgY2FuZGlkYXRlRWRnZU51bSA9IGNhbmRpZGF0ZUVkZ2VzLmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgeSA9IGNhbmRpZGF0ZUVkZ2VOdW0gLSAxOyB5ID49IDA7IHktLSkge1xuICAgICAgICB2YXIgY2VkZ2UgPSBjYW5kaWRhdGVFZGdlc1t5XTtcblxuICAgICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSB8fCAhY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdKSB7XG4gICAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKHksIDEpO1xuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBjZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07XG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgICAgfSAvLyDovrkgbGFiZWwg5pWw6YeP5LiN6LazXG5cblxuICAgICAgICAgIGlmIChwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0gJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlTGFiZWxNYXBbZWRnZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsb29wQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9IC8vIHBydW5lOiDoi6XoioLngrkv6L655pWw6L+H5bCR77yM6IqC54K5L+i+uSBsYWJlbCDov4flsJHvvIzljrvmjonov5nkuKrlm75cblxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGggPCBwYXR0ZXJuLm5vZGVzLmxlbmd0aCB8fCBjYW5kaWRhdGVFZGdlcy5sZW5ndGggPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSBjYW5kaWRhdGVHcmFwaE51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8yKGkpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8g5q2k5pe25bey57uP55Sf5oiQ55qE5aSa5LiqIGNhbmRpZGF0ZUdyYXBoc++8jOWPr+iDveaciemHjeWkjVxuICAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlNTogZ29pbmcgdG8gc3BsaWNlIGR1bHBsaWNhdGVkIGNhbmRpZGF0ZSBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIOWIoOWOuyBjYW5kaWRhdGVHcmFwaHMg5Lit5LiA5qih5LiA5qC355qE5a2Q5Zu+77yM6YCa6L+H6L6555qEIG5vZGUtbm9kZS1lZGdlTGFiZWwg5L2c5Li6IGtlee+8jOi/meexu+i+ueS4quaVsOS9nOS4uiB2YWx1Ze+8jOi/m+ihjOWMuemFjVxuXG5cbiAgdmFyIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gX2xvb3BfMyhpKSB7XG4gICAgdmFyIGNnMSA9IGNhbmRpZGF0ZUdyYXBoc1tpXTtcbiAgICB2YXIgY2cxRWRnZU1hcCA9IHt9OyAvLyBbbm9kZTEuaWQtbm9kZTIuaWQtZWRnZS5sYWJlbF06IGNvdW50XG5cbiAgICBjZzEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgaWYgKCFjZzFFZGdlTWFwW2tleV0pIGNnMUVkZ2VNYXBba2V5XSA9IDE7ZWxzZSBjZzFFZGdlTWFwW2tleV0rKztcbiAgICB9KTtcblxuICAgIHZhciBfbG9vcF82ID0gZnVuY3Rpb24gX2xvb3BfNihqKSB7XG4gICAgICB2YXIgY2cyID0gY2FuZGlkYXRlR3JhcGhzW2pdO1xuICAgICAgdmFyIGNnMkVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgICBjZzIuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoZWRnZS5zb3VyY2UsIFwiLVwiKS5jb25jYXQoZWRnZS50YXJnZXQsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCk7XG4gICAgICAgIGlmICghY2cyRWRnZU1hcFtrZXldKSBjZzJFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cyRWRnZU1hcFtrZXldKys7XG4gICAgICB9KTtcbiAgICAgIHZhciBzYW1lID0gdHJ1ZTtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNnMkVkZ2VNYXApLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY2cxRWRnZU1hcCkubGVuZ3RoKSB7XG4gICAgICAgIHNhbWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIGlmIChjZzJFZGdlTWFwW2tleV0gIT09IGNnMUVkZ2VNYXBba2V5XSkgc2FtZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhbWUpIHtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShqLCAxKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaiA9IGN1cnJlbnRMZW5ndGggLSAxOyBqID4gaTsgai0tKSB7XG4gICAgICBfbG9vcF82KGopO1xuICAgIH1cblxuICAgIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDw9IGN1cnJlbnRMZW5ndGggLSAxOyBpKyspIHtcbiAgICBfbG9vcF8zKGkpO1xuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZUdyYXBocztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEdBRERJOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/gaddi.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/i-louvain.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/algorithm/es/i-louvain.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _louvain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./louvain */ \"./node_modules/@antv/algorithm/es/louvain.js\");\n\n/**\n * 社区发现 i-louvain 算法:模块度 + 惯性模块度(即节点属性相似性)\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialWeight 惯性模块度权重\n */\n\nvar iLouvain = function iLouvain(graphData, directed, weightPropertyName, threshold, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n }\n\n return Object(_louvain__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed, weightPropertyName, threshold, true, inertialWeight);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (iLouvain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2ktbG91dmFpbi5qcz9kYjJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLHdEQUFPO0FBQ2hCOztBQUVlLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9pLWxvdXZhaW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG91dmFpbiBmcm9tICcuL2xvdXZhaW4nO1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgaS1sb3V2YWluIOeul+azle+8muaooeWdl+W6piArIOaDr+aAp+aooeWdl+W6pu+8iOWNs+iKgueCueWxnuaAp+ebuOS8vOaAp++8iVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbmnInlkJHlm77vvIzpu5jorqTkuLogZmFsc2VcbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg5p2D6YeN55qE5bGe5oCn5a2X5q61XG4gKiBAcGFyYW0gdGhyZXNob2xkIOW3ruWAvOmYiOWAvFxuICogQHBhcmFtIGluZXJ0aWFsV2VpZ2h0IOaDr+aAp+aooeWdl+W6puadg+mHjVxuICovXG5cbnZhciBpTG91dmFpbiA9IGZ1bmN0aW9uIGlMb3V2YWluKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSwgdGhyZXNob2xkLCBpbmVydGlhbFdlaWdodCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgIHRocmVzaG9sZCA9IDAuMDAwMTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9XG5cbiAgcmV0dXJuIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIHRydWUsIGluZXJ0aWFsV2VpZ2h0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlMb3V2YWluOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/i-louvain.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/index.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/algorithm/es/index.js ***!
\**************************************************/
/*! exports provided: getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, kMeans, cosineSimilarity, nodesCosineSimilarity, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectDirectedCycle\", function() { return detectDirectedCycle; });\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bfs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bfs */ \"./node_modules/@antv/algorithm/es/bfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"breadthFirstSearch\", function() { return _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/@antv/algorithm/es/connected-component.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"connectedComponent\", function() { return _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/es/degree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"]; });\n\n/* harmony import */ var _detect_cycle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./detect-cycle */ \"./node_modules/@antv/algorithm/es/detect-cycle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"]; });\n\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dfs */ \"./node_modules/@antv/algorithm/es/dfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"depthFirstSearch\", function() { return _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/es/dijkstra.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dijkstra\", function() { return _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _find_path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./find-path */ \"./node_modules/@antv/algorithm/es/find-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"]; });\n\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/@antv/algorithm/es/floydWarshall.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _label_propagation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./label-propagation */ \"./node_modules/@antv/algorithm/es/label-propagation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"labelPropagation\", function() { return _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _louvain__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./louvain */ \"./node_modules/@antv/algorithm/es/louvain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"louvain\", function() { return _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _i_louvain__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./i-louvain */ \"./node_modules/@antv/algorithm/es/i-louvain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"iLouvain\", function() { return _i_louvain__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _k_core__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./k-core */ \"./node_modules/@antv/algorithm/es/k-core.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"kCore\", function() { return _k_core__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _k_means__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./k-means */ \"./node_modules/@antv/algorithm/es/k-means.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"kMeans\", function() { return _k_means__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _cosine_similarity__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./cosine-similarity */ \"./node_modules/@antv/algorithm/es/cosine-similarity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cosineSimilarity\", function() { return _cosine_similarity__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _nodes_cosine_similarity__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./nodes-cosine-similarity */ \"./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nodesCosineSimilarity\", function() { return _nodes_cosine_similarity__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _mts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./mts */ \"./node_modules/@antv/algorithm/es/mts.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minimumSpanningTree\", function() { return _mts__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _pageRank__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./pageRank */ \"./node_modules/@antv/algorithm/es/pageRank.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageRank\", function() { return _pageRank__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _gaddi__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./gaddi */ \"./node_modules/@antv/algorithm/es/gaddi.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GADDI\", function() { return _gaddi__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _structs_stack__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./structs/stack */ \"./node_modules/@antv/algorithm/es/structs/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Stack\", function() { return _structs_stack__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return _util__WEBPACK_IMPORTED_MODULE_20__[\"getNeighbors\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar detectDirectedCycle = _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAdjMatrix: _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n breadthFirstSearch: _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n connectedComponent: _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n getDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getInDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"],\n getOutDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"],\n detectCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n detectDirectedCycle: detectDirectedCycle,\n detectAllCycles: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"],\n detectAllDirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"],\n detectAllUndirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"],\n depthFirstSearch: _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n dijkstra: _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n findAllPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"],\n findShortestPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"],\n floydWarshall: _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n labelPropagation: _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n louvain: _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n iLouvain: _i_louvain__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n kCore: _k_core__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n kMeans: _k_means__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n cosineSimilarity: _cosine_similarity__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n nodesCosineSimilarity: _nodes_cosine_similarity__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n minimumSpanningTree: _mts__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n pageRank: _pageRank__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n getNeighbors: _util__WEBPACK_IMPORTED_MODULE_20__[\"getNeighbors\"],\n Stack: _structs_stack__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n GADDI: _gaddi__WEBPACK_IMPORTED_MODULE_18__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2luZGV4LmpzPzk3YjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNOO0FBQ2dCO0FBQ3RCO0FBQ29CO0FBQzJEO0FBQzNFO0FBQ0g7QUFDMEI7QUFDaEI7QUFDTztBQUNuQjtBQUNHO0FBQ047QUFDRTtBQUNvQjtBQUNXO0FBQ3RCO0FBQ047QUFDTjtBQUNRO0FBQ0U7QUFDdEMsMEJBQTBCLHFEQUFXO0FBQ3dZO0FBQzlaO0FBQ2YsZ0JBQWdCLHdEQUFZO0FBQzVCLHNCQUFzQiw0Q0FBa0I7QUFDeEMsc0JBQXNCLDREQUFrQjtBQUN4QyxhQUFhLCtDQUFTO0FBQ3RCLGVBQWUsbURBQVc7QUFDMUIsZ0JBQWdCLG9EQUFZO0FBQzVCLGVBQWUscURBQVc7QUFDMUI7QUFDQSxtQkFBbUIsNkRBQWU7QUFDbEMsMEJBQTBCLG9FQUFzQjtBQUNoRCw0QkFBNEIsc0VBQXdCO0FBQ3BELG9CQUFvQiw0Q0FBZ0I7QUFDcEMsWUFBWSxpREFBUTtBQUNwQixlQUFlLHNEQUFXO0FBQzFCLG9CQUFvQiwyREFBZ0I7QUFDcEMsaUJBQWlCLHNEQUFhO0FBQzlCLG9CQUFvQiwwREFBZ0I7QUFDcEMsV0FBVyxpREFBTztBQUNsQixZQUFZLG1EQUFRO0FBQ3BCLFNBQVMsZ0RBQUs7QUFDZCxVQUFVLGlEQUFNO0FBQ2hCLG9CQUFvQiwyREFBZ0I7QUFDcEMseUJBQXlCLGlFQUFxQjtBQUM5Qyx1QkFBdUIsNkNBQW1CO0FBQzFDLFlBQVksa0RBQVE7QUFDcEIsZ0JBQWdCLG1EQUFZO0FBQzVCLFNBQVMsdURBQUs7QUFDZCxTQUFTLCtDQUFLO0FBQ2QsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gJy4vYWRqYWNlbnQtbWF0cml4JztcbmltcG9ydCBicmVhZHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9iZnMnO1xuaW1wb3J0IGNvbm5lY3RlZENvbXBvbmVudCBmcm9tICcuL2Nvbm5lY3RlZC1jb21wb25lbnQnO1xuaW1wb3J0IGdldERlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXRJbkRlZ3JlZSwgZ2V0T3V0RGVncmVlIH0gZnJvbSAnLi9kZWdyZWUnO1xuaW1wb3J0IGRldGVjdEN5Y2xlLCB7IGRldGVjdEFsbEN5Y2xlcywgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlIH0gZnJvbSAnLi9kZXRlY3QtY3ljbGUnO1xuaW1wb3J0IGRlcHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9kZnMnO1xuaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZmluZEFsbFBhdGgsIGZpbmRTaG9ydGVzdFBhdGggfSBmcm9tICcuL2ZpbmQtcGF0aCc7XG5pbXBvcnQgZmxveWRXYXJzaGFsbCBmcm9tICcuL2Zsb3lkV2Fyc2hhbGwnO1xuaW1wb3J0IGxhYmVsUHJvcGFnYXRpb24gZnJvbSAnLi9sYWJlbC1wcm9wYWdhdGlvbic7XG5pbXBvcnQgbG91dmFpbiBmcm9tICcuL2xvdXZhaW4nO1xuaW1wb3J0IGlMb3V2YWluIGZyb20gJy4vaS1sb3V2YWluJztcbmltcG9ydCBrQ29yZSBmcm9tICcuL2stY29yZSc7XG5pbXBvcnQga01lYW5zIGZyb20gJy4vay1tZWFucyc7XG5pbXBvcnQgY29zaW5lU2ltaWxhcml0eSBmcm9tICcuL2Nvc2luZS1zaW1pbGFyaXR5JztcbmltcG9ydCBub2Rlc0Nvc2luZVNpbWlsYXJpdHkgZnJvbSAnLi9ub2Rlcy1jb3NpbmUtc2ltaWxhcml0eSc7XG5pbXBvcnQgbWluaW11bVNwYW5uaW5nVHJlZSBmcm9tICcuL210cyc7XG5pbXBvcnQgcGFnZVJhbmsgZnJvbSAnLi9wYWdlUmFuayc7XG5pbXBvcnQgR0FEREkgZnJvbSAnLi9nYWRkaSc7XG5pbXBvcnQgU3RhY2sgZnJvbSAnLi9zdHJ1Y3RzL3N0YWNrJztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG52YXIgZGV0ZWN0RGlyZWN0ZWRDeWNsZSA9IGRldGVjdEN5Y2xlO1xuZXhwb3J0IHsgZ2V0QWRqTWF0cml4LCBicmVhZHRoRmlyc3RTZWFyY2gsIGNvbm5lY3RlZENvbXBvbmVudCwgZ2V0RGVncmVlLCBnZXRJbkRlZ3JlZSwgZ2V0T3V0RGVncmVlLCBkZXRlY3RDeWNsZSwgZGV0ZWN0RGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsQ3ljbGVzLCBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlLCBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUsIGRlcHRoRmlyc3RTZWFyY2gsIGRpamtzdHJhLCBmaW5kQWxsUGF0aCwgZmluZFNob3J0ZXN0UGF0aCwgZmxveWRXYXJzaGFsbCwgbGFiZWxQcm9wYWdhdGlvbiwgbG91dmFpbiwgaUxvdXZhaW4sIGtDb3JlLCBrTWVhbnMsIGNvc2luZVNpbWlsYXJpdHksIG5vZGVzQ29zaW5lU2ltaWxhcml0eSwgbWluaW11bVNwYW5uaW5nVHJlZSwgcGFnZVJhbmssIGdldE5laWdoYm9ycywgU3RhY2ssIEdBRERJIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldEFkak1hdHJpeDogZ2V0QWRqTWF0cml4LFxuICBicmVhZHRoRmlyc3RTZWFyY2g6IGJyZWFkdGhGaXJzdFNlYXJjaCxcbiAgY29ubmVjdGVkQ29tcG9uZW50OiBjb25uZWN0ZWRDb21wb25lbnQsXG4gIGdldERlZ3JlZTogZ2V0RGVncmVlLFxuICBnZXRJbkRlZ3JlZTogZ2V0SW5EZWdyZWUsXG4gIGdldE91dERlZ3JlZTogZ2V0T3V0RGVncmVlLFxuICBkZXRlY3RDeWNsZTogZGV0ZWN0Q3ljbGUsXG4gIGRldGVjdERpcmVjdGVkQ3ljbGU6IGRldGVjdERpcmVjdGVkQ3ljbGUsXG4gIGRldGVjdEFsbEN5Y2xlczogZGV0ZWN0QWxsQ3ljbGVzLFxuICBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlOiBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlLFxuICBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGU6IGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSxcbiAgZGVwdGhGaXJzdFNlYXJjaDogZGVwdGhGaXJzdFNlYXJjaCxcbiAgZGlqa3N0cmE6IGRpamtzdHJhLFxuICBmaW5kQWxsUGF0aDogZmluZEFsbFBhdGgsXG4gIGZpbmRTaG9ydGVzdFBhdGg6IGZpbmRTaG9ydGVzdFBhdGgsXG4gIGZsb3lkV2Fyc2hhbGw6IGZsb3lkV2Fyc2hhbGwsXG4gIGxhYmVsUHJvcGFnYXRpb246IGxhYmVsUHJvcGFnYXRpb24sXG4gIGxvdXZhaW46IGxvdXZhaW4sXG4gIGlMb3V2YWluOiBpTG91dmFpbixcbiAga0NvcmU6IGtDb3JlLFxuICBrTWVhbnM6IGtNZWFucyxcbiAgY29zaW5lU2ltaWxhcml0eTogY29zaW5lU2ltaWxhcml0eSxcbiAgbm9kZXNDb3NpbmVTaW1pbGFyaXR5OiBub2Rlc0Nvc2luZVNpbWlsYXJpdHksXG4gIG1pbmltdW1TcGFubmluZ1RyZWU6IG1pbmltdW1TcGFubmluZ1RyZWUsXG4gIHBhZ2VSYW5rOiBwYWdlUmFuayxcbiAgZ2V0TmVpZ2hib3JzOiBnZXROZWlnaGJvcnMsXG4gIFN0YWNrOiBTdGFjayxcbiAgR0FEREk6IEdBRERJXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/k-core.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/algorithm/es/k-core.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/es/degree.js\");\n\n\n/**\n * k-core算法 找出符合指定核心度的紧密关联的子图结构\n * @param graphData 图数据\n * @param k 核心度数\n */\n\nvar kCore = function kCore(graphData, k) {\n var _a;\n\n if (k === void 0) {\n k = 1;\n }\n\n var data = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(graphData);\n var _b = data.nodes,\n nodes = _b === void 0 ? [] : _b;\n var _c = data.edges,\n edges = _c === void 0 ? [] : _c;\n\n var _loop_1 = function _loop_1() {\n // 获取图中节点的度数\n var degrees = Object(_degree__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n nodes: nodes,\n edges: edges\n });\n var nodeIds = Object.keys(degrees); // 按照度数进行排序\n\n nodeIds.sort(function (a, b) {\n var _a, _b;\n\n return ((_a = degrees[a]) === null || _a === void 0 ? void 0 : _a.degree) - ((_b = degrees[b]) === null || _b === void 0 ? void 0 : _b.degree);\n });\n var minIndexId = nodeIds[0];\n\n if (!nodes.length || ((_a = degrees[minIndexId]) === null || _a === void 0 ? void 0 : _a.degree) >= k) {\n return \"break\";\n }\n\n var originIndex = nodes.findIndex(function (node) {\n return node.id === minIndexId;\n }); // 移除度数小于k的节点\n\n nodes.splice(originIndex, 1); // 移除度数小于k的节点相关的边\n\n edges = edges.filter(function (edge) {\n return !(edge.source === minIndexId || edge.target === minIndexId);\n });\n };\n\n while (true) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n }\n\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (kCore);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2stY29yZS5qcz8xYTdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNMO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSx3REFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLHVEQUFNO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsdUNBQXVDOztBQUV2QztBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvay1jb3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBkZWdyZWUgZnJvbSAnLi9kZWdyZWUnO1xuLyoqXG4gKiAgay1jb3Jl566X5rOVIOaJvuWHuuespuWQiOaMh+WumuaguOW/g+W6pueahOe0p+WvhuWFs+iBlOeahOWtkOWbvue7k+aehFxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBrIOaguOW/g+W6puaVsFxuICovXG5cbnZhciBrQ29yZSA9IGZ1bmN0aW9uIGtDb3JlKGdyYXBoRGF0YSwgaykge1xuICB2YXIgX2E7XG5cbiAgaWYgKGsgPT09IHZvaWQgMCkge1xuICAgIGsgPSAxO1xuICB9XG5cbiAgdmFyIGRhdGEgPSBjbG9uZShncmFwaERhdGEpO1xuICB2YXIgX2IgPSBkYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIF9jID0gZGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2M7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIC8vIOiOt+WPluWbvuS4reiKgueCueeahOW6puaVsFxuICAgIHZhciBkZWdyZWVzID0gZGVncmVlKHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlc1xuICAgIH0pO1xuICAgIHZhciBub2RlSWRzID0gT2JqZWN0LmtleXMoZGVncmVlcyk7IC8vIOaMieeFp+W6puaVsOi/m+ihjOaOkuW6j1xuXG4gICAgbm9kZUlkcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICB2YXIgX2EsIF9iO1xuXG4gICAgICByZXR1cm4gKChfYSA9IGRlZ3JlZXNbYV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWdyZWUpIC0gKChfYiA9IGRlZ3JlZXNbYl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kZWdyZWUpO1xuICAgIH0pO1xuICAgIHZhciBtaW5JbmRleElkID0gbm9kZUlkc1swXTtcblxuICAgIGlmICghbm9kZXMubGVuZ3RoIHx8ICgoX2EgPSBkZWdyZWVzW21pbkluZGV4SWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVncmVlKSA+PSBrKSB7XG4gICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgIH1cblxuICAgIHZhciBvcmlnaW5JbmRleCA9IG5vZGVzLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG1pbkluZGV4SWQ7XG4gICAgfSk7IC8vIOenu+mZpOW6puaVsOWwj+S6jmvnmoToioLngrlcblxuICAgIG5vZGVzLnNwbGljZShvcmlnaW5JbmRleCwgMSk7IC8vIOenu+mZpOW6puaVsOWwj+S6jmvnmoToioLngrnnm7jlhbPnmoTovrlcblxuICAgIGVkZ2VzID0gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gIShlZGdlLnNvdXJjZSA9PT0gbWluSW5kZXhJZCB8fCBlZGdlLnRhcmdldCA9PT0gbWluSW5kZXhJZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICB2YXIgc3RhdGVfMSA9IF9sb29wXzEoKTtcblxuICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub2Rlczogbm9kZXMsXG4gICAgZWRnZXM6IGVkZ2VzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBrQ29yZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/k-core.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/k-means.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/algorithm/es/k-means.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_node_properties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/es/utils/node-properties.js\");\n/* harmony import */ var _utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\");\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/algorithm/es/types.js\");\n\n\n\n\n/**\n * k-means算法 根据节点属性之间的欧氏距离将节点聚类为K个簇\n * @param data 图数据\n * @param k 质心(聚类中心)个数\n * @param seedNode 种子节点\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param propertyKey 属性的字段名\n * @param distanceType 距离类型\n */\n\nvar kMeans = function kMeans(data, k, involvedKeys, uninvolvedKeys, propertyKey, distanceType) {\n if (k === void 0) {\n k = 3;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = [];\n }\n\n if (propertyKey === void 0) {\n propertyKey = 'properties';\n }\n\n if (distanceType === void 0) {\n distanceType = _types__WEBPACK_IMPORTED_MODULE_3__[\"DistanceType\"].EuclideanDistance;\n }\n\n var nodes = data.nodes,\n edges = data.edges; // 所有节点属性集合\n\n var properties = Object(_utils_node_properties__WEBPACK_IMPORTED_MODULE_0__[\"getAllProperties\"])(nodes, propertyKey); // 所有节点属性one-hot特征向量集合s\n\n var allPropertiesWeight = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__[\"oneHot\"])(properties, involvedKeys, uninvolvedKeys); // 记录节点的原始index,与allPropertiesWeight对应\n\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].originIndex = i;\n } // 初始化质心(聚类中心)\n\n\n var centroids = [];\n var centroidIndexList = [];\n var clusters = [];\n\n for (var i = 0; i < k; i++) {\n if (i === 0) {\n // 随机选取质心(聚类中心)\n var randomIndex = Math.floor(Math.random() * nodes.length);\n centroids[i] = allPropertiesWeight[randomIndex];\n centroidIndexList.push(randomIndex);\n clusters[i] = [nodes[randomIndex]];\n nodes[randomIndex].clusterId = String(i);\n } else {\n var maxDistance = -Infinity;\n var maxDistanceIndex = 0; // 选取与已有质心平均距离最远的点做为新的质心\n\n for (var m = 0; m < nodes.length; m++) {\n if (!centroidIndexList.includes(m)) {\n var totalDistance = 0;\n\n for (var j = 0; j < centroids.length; j++) {\n // 求节点到质心距离(默认欧式距离)\n var distance = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__[\"getDistance\"])(allPropertiesWeight[nodes[m].originIndex], centroids[j], distanceType);\n totalDistance += distance;\n } // 节点到各质心的平均距离(默认欧式距离)\n\n\n var avgDistance = totalDistance / centroids.length; // 记录到已有质心最远的的距离和节点索引\n\n if (avgDistance > maxDistance) {\n maxDistance = avgDistance;\n maxDistanceIndex = m;\n }\n }\n }\n\n centroids[i] = allPropertiesWeight[maxDistanceIndex];\n centroidIndexList.push(maxDistanceIndex);\n clusters[i] = [nodes[maxDistanceIndex]];\n nodes[maxDistanceIndex].clusterId = String(i);\n }\n }\n\n var iterations = 0;\n\n while (true) {\n for (var i = 0; i < nodes.length; i++) {\n var minDistanceIndex = 0;\n var minDistance = Infinity;\n\n if (!(iterations === 0 && centroidIndexList.includes(i))) {\n for (var j = 0; j < centroids.length; j++) {\n // 求节点到质心的距离(默认欧式距离)\n var distance = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__[\"getDistance\"])(allPropertiesWeight[i], centroids[j], distanceType); // 记录节点最近的质心的索引\n\n if (distance < minDistance) {\n minDistance = distance;\n minDistanceIndex = j;\n }\n } // 从原来的类别删除节点\n\n\n if (nodes[i].clusterId !== String(minDistanceIndex)) {\n for (var n = 0; n < clusters[minDistanceIndex].length; n++) {\n if (clusters[minDistanceIndex][n].id === nodes[i].id) {\n clusters[minDistanceIndex].splice(n, 1);\n }\n } // 将节点划分到距离最小的质心(聚类中心)所对应的类中\n\n\n clusters[minDistanceIndex].push(nodes[i]);\n nodes[i].clusterId = String(minDistanceIndex);\n }\n }\n } // 是否存在质心(聚类中心)移动\n\n\n var centroidsEqualAvg = false;\n\n for (var i = 0; i < clusters.length; i++) {\n var clusterNodes = clusters[i];\n var totalVector = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]([]);\n\n for (var j = 0; j < clusterNodes.length; j++) {\n totalVector = totalVector.add(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[clusterNodes[j].originIndex]));\n } // 计算每个类别的均值向量\n\n\n var avgVector = totalVector.avg(clusterNodes.length); // 如果均值向量不等于质心向量\n\n if (!avgVector.equal(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](centroids[i]))) {\n centroidsEqualAvg = true; // 移动/更新每个类别的质心(聚类中心)到该均值向量\n\n centroids[i] = avgVector.getArr();\n }\n }\n\n iterations++; // 如果不存在质心(聚类中心)移动或者迭代次数超过1000,则停止\n\n if (centroidsEqualAvg || iterations >= 1000) {\n break;\n }\n } // get the cluster edges\n\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var _a, _b;\n\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = (_a = nodes.find(function (node) {\n return node.id === source;\n })) === null || _a === void 0 ? void 0 : _a.clusterId;\n var targetClusterId = (_b = nodes.find(function (node) {\n return node.id === target;\n })) === null || _b === void 0 ? void 0 : _b.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n return {\n clusters: clusters,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (kMeans);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2stbWVhbnMuanM/MTIyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJEO0FBQ007QUFDN0I7QUFDRztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixtREFBWTtBQUMvQjs7QUFFQTtBQUNBLHlCQUF5Qjs7QUFFekIsbUJBQW1CLCtFQUFnQixxQkFBcUI7O0FBRXhELDRCQUE0Qix3RUFBTSwyQ0FBMkM7O0FBRTdFLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSwrQkFBK0I7O0FBRS9CLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTs7QUFFQSx5QkFBeUIsc0JBQXNCO0FBQy9DO0FBQ0EsMkJBQTJCLDZFQUFXO0FBQ3RDO0FBQ0EsV0FBVzs7O0FBR1gsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBLHlCQUF5Qiw2RUFBVyxxREFBcUQ7O0FBRXpGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSx5QkFBeUIsdUNBQXVDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUEsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLDRCQUE0QixxREFBTTs7QUFFbEMscUJBQXFCLHlCQUF5QjtBQUM5QywwQ0FBMEMscURBQU07QUFDaEQsT0FBTzs7O0FBR1AsMkRBQTJEOztBQUUzRCwrQkFBK0IscURBQU07QUFDckMsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHFFQUFNIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9rLW1lYW5zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QWxsUHJvcGVydGllcyB9IGZyb20gJy4vdXRpbHMvbm9kZS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IG9uZUhvdCwgZ2V0RGlzdGFuY2UgfSBmcm9tICcuL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZyc7XG5pbXBvcnQgVmVjdG9yIGZyb20gJy4vdXRpbHMvdmVjdG9yJztcbmltcG9ydCB7IERpc3RhbmNlVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuLyoqXG4gKiAgay1tZWFuc+eul+azlSDmoLnmja7oioLngrnlsZ7mgKfkuYvpl7TnmoTmrKfmsI/ot53nprvlsIboioLngrnogZrnsbvkuLpL5Liq57CHXG4gKiBAcGFyYW0gZGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBrIOi0qOW/g++8iOiBmuexu+S4reW/g++8ieS4quaVsFxuICogQHBhcmFtIHNlZWROb2RlIOenjeWtkOiKgueCuVxuICogQHBhcmFtIGludm9sdmVkS2V5cyDlj4LkuI7orqHnrpfnmoRrZXnpm4blkIhcbiAqIEBwYXJhbSB1bmludm9sdmVkS2V5cyDkuI3lj4LkuI7orqHnrpfnmoRrZXnpm4blkIhcbiAqIEBwYXJhbSBwcm9wZXJ0eUtleSDlsZ7mgKfnmoTlrZfmrrXlkI1cbiAqIEBwYXJhbSBkaXN0YW5jZVR5cGUg6Led56a757G75Z6LXG4gKi9cblxudmFyIGtNZWFucyA9IGZ1bmN0aW9uIGtNZWFucyhkYXRhLCBrLCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzLCBwcm9wZXJ0eUtleSwgZGlzdGFuY2VUeXBlKSB7XG4gIGlmIChrID09PSB2b2lkIDApIHtcbiAgICBrID0gMztcbiAgfVxuXG4gIGlmIChpbnZvbHZlZEtleXMgPT09IHZvaWQgMCkge1xuICAgIGludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHVuaW52b2x2ZWRLZXlzID09PSB2b2lkIDApIHtcbiAgICB1bmludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5S2V5ID09PSB2b2lkIDApIHtcbiAgICBwcm9wZXJ0eUtleSA9ICdwcm9wZXJ0aWVzJztcbiAgfVxuXG4gIGlmIChkaXN0YW5jZVR5cGUgPT09IHZvaWQgMCkge1xuICAgIGRpc3RhbmNlVHlwZSA9IERpc3RhbmNlVHlwZS5FdWNsaWRlYW5EaXN0YW5jZTtcbiAgfVxuXG4gIHZhciBub2RlcyA9IGRhdGEubm9kZXMsXG4gICAgICBlZGdlcyA9IGRhdGEuZWRnZXM7IC8vIOaJgOacieiKgueCueWxnuaAp+mbhuWQiFxuXG4gIHZhciBwcm9wZXJ0aWVzID0gZ2V0QWxsUHJvcGVydGllcyhub2RlcywgcHJvcGVydHlLZXkpOyAvLyDmiYDmnInoioLngrnlsZ7mgKdvbmUtaG9054m55b6B5ZCR6YeP6ZuG5ZCIc1xuXG4gIHZhciBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gb25lSG90KHByb3BlcnRpZXMsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMpOyAvLyDorrDlvZXoioLngrnnmoTljp/lp4tpbmRleO+8jOS4jmFsbFByb3BlcnRpZXNXZWlnaHTlr7nlupRcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZXNbaV0ub3JpZ2luSW5kZXggPSBpO1xuICB9IC8vIOWIneWni+WMlui0qOW/g++8iOiBmuexu+S4reW/g++8iVxuXG5cbiAgdmFyIGNlbnRyb2lkcyA9IFtdO1xuICB2YXIgY2VudHJvaWRJbmRleExpc3QgPSBbXTtcbiAgdmFyIGNsdXN0ZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgLy8g6ZqP5py66YCJ5Y+W6LSo5b+D77yI6IGa57G75Lit5b+D77yJXG4gICAgICB2YXIgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBub2Rlcy5sZW5ndGgpO1xuICAgICAgY2VudHJvaWRzW2ldID0gYWxsUHJvcGVydGllc1dlaWdodFtyYW5kb21JbmRleF07XG4gICAgICBjZW50cm9pZEluZGV4TGlzdC5wdXNoKHJhbmRvbUluZGV4KTtcbiAgICAgIGNsdXN0ZXJzW2ldID0gW25vZGVzW3JhbmRvbUluZGV4XV07XG4gICAgICBub2Rlc1tyYW5kb21JbmRleF0uY2x1c3RlcklkID0gU3RyaW5nKGkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbWF4RGlzdGFuY2UgPSAtSW5maW5pdHk7XG4gICAgICB2YXIgbWF4RGlzdGFuY2VJbmRleCA9IDA7IC8vIOmAieWPluS4juW3suaciei0qOW/g+W5s+Wdh+i3neemu+acgOi/nOeahOeCueWBmuS4uuaWsOeahOi0qOW/g1xuXG4gICAgICBmb3IgKHZhciBtID0gMDsgbSA8IG5vZGVzLmxlbmd0aDsgbSsrKSB7XG4gICAgICAgIGlmICghY2VudHJvaWRJbmRleExpc3QuaW5jbHVkZXMobSkpIHtcbiAgICAgICAgICB2YXIgdG90YWxEaXN0YW5jZSA9IDA7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNlbnRyb2lkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgLy8g5rGC6IqC54K55Yiw6LSo5b+D6Led56a777yI6buY6K6k5qyn5byP6Led56a777yJXG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBnZXREaXN0YW5jZShhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVzW21dLm9yaWdpbkluZGV4XSwgY2VudHJvaWRzW2pdLCBkaXN0YW5jZVR5cGUpO1xuICAgICAgICAgICAgdG90YWxEaXN0YW5jZSArPSBkaXN0YW5jZTtcbiAgICAgICAgICB9IC8vIOiKgueCueWIsOWQhOi0qOW/g+eahOW5s+Wdh+i3neemu++8iOm7mOiupOasp+W8j+i3neemu++8iVxuXG5cbiAgICAgICAgICB2YXIgYXZnRGlzdGFuY2UgPSB0b3RhbERpc3RhbmNlIC8gY2VudHJvaWRzLmxlbmd0aDsgLy8g6K6w5b2V5Yiw5bey5pyJ6LSo5b+D5pyA6L+c55qE55qE6Led56a75ZKM6IqC54K557Si5byVXG5cbiAgICAgICAgICBpZiAoYXZnRGlzdGFuY2UgPiBtYXhEaXN0YW5jZSkge1xuICAgICAgICAgICAgbWF4RGlzdGFuY2UgPSBhdmdEaXN0YW5jZTtcbiAgICAgICAgICAgIG1heERpc3RhbmNlSW5kZXggPSBtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjZW50cm9pZHNbaV0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W21heERpc3RhbmNlSW5kZXhdO1xuICAgICAgY2VudHJvaWRJbmRleExpc3QucHVzaChtYXhEaXN0YW5jZUluZGV4KTtcbiAgICAgIGNsdXN0ZXJzW2ldID0gW25vZGVzW21heERpc3RhbmNlSW5kZXhdXTtcbiAgICAgIG5vZGVzW21heERpc3RhbmNlSW5kZXhdLmNsdXN0ZXJJZCA9IFN0cmluZyhpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbWluRGlzdGFuY2VJbmRleCA9IDA7XG4gICAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcblxuICAgICAgaWYgKCEoaXRlcmF0aW9ucyA9PT0gMCAmJiBjZW50cm9pZEluZGV4TGlzdC5pbmNsdWRlcyhpKSkpIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjZW50cm9pZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAvLyDmsYLoioLngrnliLDotKjlv4PnmoTot53nprvvvIjpu5jorqTmrKflvI/ot53nprvvvIlcbiAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBnZXREaXN0YW5jZShhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldLCBjZW50cm9pZHNbal0sIGRpc3RhbmNlVHlwZSk7IC8vIOiusOW9leiKgueCueacgOi/keeahOi0qOW/g+eahOe0ouW8lVxuXG4gICAgICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICAgICAgICBtaW5EaXN0YW5jZUluZGV4ID0gajtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8g5LuO5Y6f5p2l55qE57G75Yir5Yig6Zmk6IqC54K5XG5cblxuICAgICAgICBpZiAobm9kZXNbaV0uY2x1c3RlcklkICE9PSBTdHJpbmcobWluRGlzdGFuY2VJbmRleCkpIHtcbiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGNsdXN0ZXJzW21pbkRpc3RhbmNlSW5kZXhdLmxlbmd0aDsgbisrKSB7XG4gICAgICAgICAgICBpZiAoY2x1c3RlcnNbbWluRGlzdGFuY2VJbmRleF1bbl0uaWQgPT09IG5vZGVzW2ldLmlkKSB7XG4gICAgICAgICAgICAgIGNsdXN0ZXJzW21pbkRpc3RhbmNlSW5kZXhdLnNwbGljZShuLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIOWwhuiKgueCueWIkuWIhuWIsOi3neemu+acgOWwj+eahOi0qOW/g++8iOiBmuexu+S4reW/g++8ieaJgOWvueW6lOeahOexu+S4rVxuXG5cbiAgICAgICAgICBjbHVzdGVyc1ttaW5EaXN0YW5jZUluZGV4XS5wdXNoKG5vZGVzW2ldKTtcbiAgICAgICAgICBub2Rlc1tpXS5jbHVzdGVySWQgPSBTdHJpbmcobWluRGlzdGFuY2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIOaYr+WQpuWtmOWcqOi0qOW/g++8iOiBmuexu+S4reW/g++8ieenu+WKqFxuXG5cbiAgICB2YXIgY2VudHJvaWRzRXF1YWxBdmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjbHVzdGVyTm9kZXMgPSBjbHVzdGVyc1tpXTtcbiAgICAgIHZhciB0b3RhbFZlY3RvciA9IG5ldyBWZWN0b3IoW10pO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJOb2Rlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB0b3RhbFZlY3RvciA9IHRvdGFsVmVjdG9yLmFkZChuZXcgVmVjdG9yKGFsbFByb3BlcnRpZXNXZWlnaHRbY2x1c3Rlck5vZGVzW2pdLm9yaWdpbkluZGV4XSkpO1xuICAgICAgfSAvLyDorqHnrpfmr4/kuKrnsbvliKvnmoTlnYflgLzlkJHph49cblxuXG4gICAgICB2YXIgYXZnVmVjdG9yID0gdG90YWxWZWN0b3IuYXZnKGNsdXN0ZXJOb2Rlcy5sZW5ndGgpOyAvLyDlpoLmnpzlnYflgLzlkJHph4/kuI3nrYnkuo7otKjlv4PlkJHph49cblxuICAgICAgaWYgKCFhdmdWZWN0b3IuZXF1YWwobmV3IFZlY3RvcihjZW50cm9pZHNbaV0pKSkge1xuICAgICAgICBjZW50cm9pZHNFcXVhbEF2ZyA9IHRydWU7IC8vIOenu+WKqC/mm7TmlrDmr4/kuKrnsbvliKvnmoTotKjlv4PvvIjogZrnsbvkuK3lv4PvvInliLDor6XlnYflgLzlkJHph49cblxuICAgICAgICBjZW50cm9pZHNbaV0gPSBhdmdWZWN0b3IuZ2V0QXJyKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXRlcmF0aW9ucysrOyAvLyDlpoLmnpzkuI3lrZjlnKjotKjlv4PvvIjogZrnsbvkuK3lv4PvvInnp7vliqjmiJbogIXov63ku6PmrKHmlbDotoXov4cxMDAw77yM5YiZ5YGc5q2iXG5cbiAgICBpZiAoY2VudHJvaWRzRXF1YWxBdmcgfHwgaXRlcmF0aW9ucyA+PSAxMDAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cblxuICB2YXIgY2x1c3RlckVkZ2VzID0gW107XG4gIHZhciBjbHVzdGVyRWRnZU1hcCA9IHt9O1xuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IChfYSA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkID09PSBzb3VyY2U7XG4gICAgfSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IChfYiA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkID09PSB0YXJnZXQ7XG4gICAgfSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjbHVzdGVyczogY2x1c3RlcnMsXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGtNZWFuczsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/k-means.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/label-propagation.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/label-propagation.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (labelPropagation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2xhYmVsLXByb3BhZ2F0aW9uLmpzP2I5NTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1g7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBLGNBQWMsc0RBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGtCQUFrQixnRUFBWSxzQkFBc0I7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsK0VBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9sYWJlbC1wcm9wYWdhdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBZGpNYXRyaXggZnJvbSAnLi9hZGphY2VudC1tYXRyaXgnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGxhYmVsUHJvcGFnYXRpb24oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCBtYXhJdGVyYXRpb24pIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAobWF4SXRlcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICBtYXhJdGVyYXRpb24gPSAxMDAwO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGNsdXN0ZXJzID0ge307XG4gIHZhciBub2RlTWFwID0ge307IC8vIGluaXQgdGhlIGNsdXN0ZXJzIGFuZCBub2RlTWFwXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBjaWQgPSB1bmlxdWVJZCgpO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2lkO1xuICAgIGNsdXN0ZXJzW2NpZF0gPSB7XG4gICAgICBpZDogY2lkLFxuICAgICAgbm9kZXM6IFtub2RlXVxuICAgIH07XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBpZHg6IGlcbiAgICB9O1xuICB9KTsgLy8gdGhlIGFkamFjZW50IG1hdHJpeCBvZiBjYWxOb2RlcyBpbnNpZGUgY2x1c3RlcnNcblxuICB2YXIgYWRqTWF0cml4ID0gZ2V0QWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpOyAvLyB0aGUgc3VtIG9mIGVhY2ggcm93IGluIGFkamFjZW50IG1hdHJpeFxuXG4gIHZhciBrcyA9IFtdO1xuICAvKipcbiAgICogbmVpZ2hib3Igbm9kZXMgKGlkIGZvciBrZXkgYW5kIHdlaWdodCBmb3IgdmFsdWUpIGZvciBlYWNoIG5vZGVcbiAgICogbmVpZ2hib3JzID0ge1xuICAgKiAgaWQobm9kZV9pZCk6IHsgaWQobmVpZ2hib3JfMV9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCBpZChuZWlnaGJvcl8yX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIC4uLiB9LFxuICAgKiAgLi4uXG4gICAqIH1cbiAgICovXG5cbiAgdmFyIG5laWdoYm9ycyA9IHt9O1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICB9KTtcbiAgICBrcy5wdXNoKGspO1xuICB9KTtcbiAgdmFyIGl0ZXIgPSAwO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY2hhbmdlZCA9IGZhbHNlO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhuZWlnaGJvcnNbbm9kZS5pZF0pLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9ySWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yV2VpZ2h0ID0gbmVpZ2hib3JzW25vZGUuaWRdW25laWdoYm9ySWRdO1xuICAgICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbm9kZU1hcFtuZWlnaGJvcklkXS5ub2RlO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVySWQgPSBuZWlnaGJvck5vZGUuY2x1c3RlcklkO1xuICAgICAgICBpZiAoIW5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdKSBuZWlnaGJvckNsdXN0ZXJzW25laWdoYm9yQ2x1c3RlcklkXSA9IDA7XG4gICAgICAgIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdICs9IG5laWdoYm9yV2VpZ2h0O1xuICAgICAgfSk7IC8vIGZpbmQgdGhlIGNsdXN0ZXIgd2l0aCBtYXggd2VpZ2h0XG5cbiAgICAgIHZhciBtYXhXZWlnaHQgPSAtSW5maW5pdHk7XG4gICAgICB2YXIgYmVzdENsdXN0ZXJJZHMgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgICAgICBpZiAobWF4V2VpZ2h0IDwgbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdKSB7XG4gICAgICAgICAgbWF4V2VpZ2h0ID0gbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzID0gW2NsdXN0ZXJJZF07XG4gICAgICAgIH0gZWxzZSBpZiAobWF4V2VpZ2h0ID09PSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBiZXN0Q2x1c3Rlcklkcy5wdXNoKGNsdXN0ZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzLmxlbmd0aCA9PT0gMSAmJiBiZXN0Q2x1c3Rlcklkc1swXSA9PT0gbm9kZS5jbHVzdGVySWQpIHJldHVybjtcbiAgICAgIHZhciBzZWxmQ2x1c3RlcklkeCA9IGJlc3RDbHVzdGVySWRzLmluZGV4T2Yobm9kZS5jbHVzdGVySWQpO1xuICAgICAgaWYgKHNlbGZDbHVzdGVySWR4ID49IDApIGJlc3RDbHVzdGVySWRzLnNwbGljZShzZWxmQ2x1c3RlcklkeCwgMSk7XG5cbiAgICAgIGlmIChiZXN0Q2x1c3RlcklkcyAmJiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpIHtcbiAgICAgICAgY2hhbmdlZCA9IHRydWU7IC8vIHJlbW92ZSBmcm9tIG9yaWdpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICBzZWxmQ2x1c3Rlci5ub2Rlcy5zcGxpY2Uobm9kZUluU2VsZkNsdXN0ZXJJZHgsIDEpOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgcmFuZG9tSWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYmVzdENsdXN0ZXJJZHMubGVuZ3RoKTtcbiAgICAgICAgdmFyIGJlc3RDbHVzdGVyID0gY2x1c3RlcnNbYmVzdENsdXN0ZXJJZHNbcmFuZG9tSWR4XV07XG4gICAgICAgIGJlc3RDbHVzdGVyLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIG5vZGUuY2x1c3RlcklkID0gYmVzdENsdXN0ZXIuaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjaGFuZ2VkKSByZXR1cm4gXCJicmVha1wiO1xuICAgIGl0ZXIrKztcbiAgfTtcblxuICB3aGlsZSAoaXRlciA8IG1heEl0ZXJhdGlvbikge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMSgpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8gZGVsZXRlIHRoZSBlbXB0eSBjbHVzdGVyc1xuXG5cbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gY2x1c3RlcnNbY2x1c3RlcklkXTtcblxuICAgIGlmICghY2x1c3Rlci5ub2RlcyB8fCAhY2x1c3Rlci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRlbGV0ZSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIH1cbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICBjbHVzdGVyc0FycmF5LnB1c2goY2x1c3RlcnNbY2x1c3RlcklkXSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVyc0FycmF5LFxuICAgIGNsdXN0ZXJFZGdlczogY2x1c3RlckVkZ2VzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsYWJlbFByb3BhZ2F0aW9uOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/label-propagation.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/louvain.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/algorithm/es/louvain.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n/* harmony import */ var _utils_node_properties__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/es/utils/node-properties.js\");\n/* harmony import */ var _utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\");\n\n\n\n\n\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n } // 所有节点属性集合\n\n\n var properties = Object(_utils_node_properties__WEBPACK_IMPORTED_MODULE_3__[\"getAllProperties\"])(nodes); // 所有节点属性one-hot特征向量集合\n\n allPropertiesWeight = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_4__[\"oneHot\"])(properties);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (louvain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2xvdXZhaW4uanM/Yjg0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDVTtBQUNUO0FBQ3VCO0FBQ1A7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFEQUFNOztBQUVsQyxpQkFBaUIsWUFBWTtBQUM3Qiw4Q0FBOEMscURBQU07QUFDcEQsR0FBRzs7O0FBR0g7QUFDQSw0QkFBNEI7O0FBRTVCOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCLDBCQUEwQixxREFBTTtBQUNoQztBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxpQkFBaUIsWUFBWTtBQUM3QiwwQkFBMEIscURBQU07QUFDaEM7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHFEQUFNO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOzs7QUFHTCxxQkFBcUIsK0VBQWdCLFFBQVE7O0FBRTdDLDBCQUEwQix3RUFBTTtBQUNoQzs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGtCQUFrQixnRUFBWSxzQkFBc0I7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtKQUFrSjs7QUFFbEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNCQUFzQix3REFBSztBQUMzQjtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCw4SEFBOEg7O0FBRTlIO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWCx1RkFBdUY7O0FBRXZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYLHNIQUFzSDs7QUFFdEg7O0FBRUE7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEMsbUVBQW1FOztBQUVuRSwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHNFQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9sb3V2YWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBnZXRBZGpNYXRyaXggZnJvbSAnLi9hZGphY2VudC1tYXRyaXgnO1xuaW1wb3J0IFZlY3RvciBmcm9tICcuL3V0aWxzL3ZlY3Rvcic7XG5pbXBvcnQgeyBnZXRBbGxQcm9wZXJ0aWVzIH0gZnJvbSAnLi91dGlscy9ub2RlLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgb25lSG90IH0gZnJvbSAnLi91dGlscy9kYXRhLXByZXByb2Nlc3NpbmcnO1xuXG52YXIgZ2V0TW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pIHtcbiAgdmFyIGxlbmd0aCA9IGFkak1hdHJpeC5sZW5ndGg7XG4gIHZhciBwYXJhbSA9IDIgKiBtO1xuICB2YXIgbW9kdWxhcml0eSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGVudHJ5ID0gYWRqTWF0cml4W2ldW2pdIHx8IDA7XG4gICAgICB2YXIga2kgPSBrc1tpXSB8fCAwO1xuICAgICAgdmFyIGtqID0ga3Nbal0gfHwgMDtcbiAgICAgIG1vZHVsYXJpdHkgKz0gZW50cnkgLSBraSAqIGtqIC8gcGFyYW07XG4gICAgfVxuICB9XG5cbiAgbW9kdWxhcml0eSAqPSAxIC8gcGFyYW07XG4gIHJldHVybiBtb2R1bGFyaXR5O1xufTsgLy8g5qih5Z2X5oOv5oCn5bqm77yM6KGh6YeP5bGe5oCn55u45Ly85bqmXG5cblxudmFyIGdldEluZXJ0aWFsTW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldEluZXJ0aWFsTW9kdWxhcml0eShub2RlcywgYWxsUHJvcGVydGllc1dlaWdodCkge1xuICBpZiAobm9kZXMgPT09IHZvaWQgMCkge1xuICAgIG5vZGVzID0gW107XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICB2YXIgdG90YWxQcm9wZXJ0aWVzID0gbmV3IFZlY3RvcihbXSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHRvdGFsUHJvcGVydGllcyA9IHRvdGFsUHJvcGVydGllcy5hZGQobmV3IFZlY3RvcihhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldKSk7XG4gIH0gLy8g5Z2H5YC85ZCR6YePXG5cblxuICB2YXIgYXZnUHJvcGVydGllcyA9IHRvdGFsUHJvcGVydGllcy5hdmcobGVuZ3RoKTtcbiAgYXZnUHJvcGVydGllcy5ub3JtYWxpemUoKTsgLy8g6IqC54K56ZuG5ZCI55qE5pa55beuOiDoioLngrl25LiO5Z2H5YC85ZCR6YeP55qE5bmz5pa55qyn5byP6Led56a75LmL5ZKMXG5cbiAgdmFyIHZhcmlhbmNlID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3BlcnRpZXNpID0gbmV3IFZlY3RvcihhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldKTtcbiAgICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UgPSBwcm9wZXJ0aWVzaS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZShhdmdQcm9wZXJ0aWVzKTtcbiAgICB2YXJpYW5jZSArPSBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZTtcbiAgfSAvLyDku7vmhI/kuKTngrnpl7TnmoTmrKflvI/lubPmlrnot53nprtcblxuXG4gIHZhciBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZUluZm8gPSBbXTtcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvLnB1c2goW10pO1xuICB9KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3BlcnRpZXNpID0gbmV3IFZlY3RvcihhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldKTtcbiAgICBub2Rlc1tpXVsnY2x1c3RlckluZXJ0aWFsJ10gPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW5ndGg7IGorKykge1xuICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gMDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wZXJ0aWVzaiA9IG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtqXSk7XG4gICAgICBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZUluZm9baV1bal0gPSBwcm9wZXJ0aWVzaS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZShwcm9wZXJ0aWVzaik7XG4gICAgICBub2Rlc1tpXVsnY2x1c3RlckluZXJ0aWFsJ10gKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdO1xuICAgIH1cbiAgfSAvLyDorqHnrpfmqKHlnZfmg6/mgKfluqZcblxuXG4gIHZhciBpbmVydGlhbE1vZHVsYXJpdHkgPSAwO1xuICB2YXIgcGFyYW0gPSAyICogbGVuZ3RoICogdmFyaWFuY2U7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChpID09PSBqIHx8IGNsdXN0ZXJpICE9PSBjbHVzdGVyaikgY29udGludWU7XG4gICAgICB2YXIgaW5lcnRpYWwgPSBub2Rlc1tpXS5jbHVzdGVySW5lcnRpYWwgKiBub2Rlc1tqXS5jbHVzdGVySW5lcnRpYWwgLyBNYXRoLnBvdyhwYXJhbSwgMikgLSBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZUluZm9baV1bal0gLyBwYXJhbTtcbiAgICAgIGluZXJ0aWFsTW9kdWxhcml0eSArPSBpbmVydGlhbDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKGluZXJ0aWFsTW9kdWxhcml0eS50b0ZpeGVkKDQpKTtcbn07XG4vKipcbiAqIOekvuWMuuWPkeeOsCBsb3V2YWluIOeul+azlVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbmnInlkJHlm77vvIzpu5jorqTkuLogZmFsc2VcbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg5p2D6YeN55qE5bGe5oCn5a2X5q61XG4gKiBAcGFyYW0gdGhyZXNob2xkIOW3ruWAvOmYiOWAvFxuICogQHBhcmFtIGluZXJ0aWFsTW9kdWxhcml0eSDmmK/lkKbkvb/nlKjmg6/mgKfmqKHlnZfluqbvvIjljbPoioLngrnlsZ7mgKfnm7jkvLzmgKfvvIlcbiAqL1xuXG5cbnZhciBsb3V2YWluID0gZnVuY3Rpb24gbG91dmFpbihncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIHRocmVzaG9sZCwgaW5lcnRpYWxNb2R1bGFyaXR5LCBpbmVydGlhbFdlaWdodCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgIHRocmVzaG9sZCA9IDAuMDAwMTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbE1vZHVsYXJpdHkgPT09IHZvaWQgMCkge1xuICAgIGluZXJ0aWFsTW9kdWxhcml0eSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGluZXJ0aWFsV2VpZ2h0ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbFdlaWdodCA9IDE7XG4gIH0gLy8gdGhlIG9yaWdpbiBkYXRhXG5cblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IFtdO1xuXG4gIGlmIChpbmVydGlhbE1vZHVsYXJpdHkpIHtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgICAgbm9kZS5wcm9wZXJ0aWVzID0gbm9kZS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgbm9kZS5vcmlnaW5JbmRleCA9IGluZGV4O1xuICAgIH0pO1xuICAgIHZhciBub2RlVHlwZUluZm9fMSA9IFtdO1xuXG4gICAgaWYgKG5vZGVzLmV2ZXJ5KGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5oYXNPd25Qcm9wZXJ0eSgnbm9kZVR5cGUnKTtcbiAgICB9KSkge1xuICAgICAgbm9kZVR5cGVJbmZvXzEgPSBBcnJheS5mcm9tKG5ldyBTZXQobm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlO1xuICAgICAgfSkpKTtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5wcm9wZXJ0aWVzLm5vZGVUeXBlID0gbm9kZVR5cGVJbmZvXzEuZmluZEluZGV4KGZ1bmN0aW9uIChub2RlVHlwZSkge1xuICAgICAgICAgIHJldHVybiBub2RlVHlwZSA9PT0gbm9kZS5ub2RlVHlwZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IC8vIOaJgOacieiKgueCueWxnuaAp+mbhuWQiFxuXG5cbiAgICB2YXIgcHJvcGVydGllcyA9IGdldEFsbFByb3BlcnRpZXMobm9kZXMpOyAvLyDmiYDmnInoioLngrnlsZ7mgKdvbmUtaG9054m55b6B5ZCR6YeP6ZuG5ZCIXG5cbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gb25lSG90KHByb3BlcnRpZXMpO1xuICB9XG5cbiAgdmFyIHVuaXF1ZUlkID0gMTtcbiAgdmFyIGNsdXN0ZXJzID0ge307XG4gIHZhciBub2RlTWFwID0ge307IC8vIGluaXQgdGhlIGNsdXN0ZXJzIGFuZCBub2RlTWFwXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBjaWQgPSBTdHJpbmcodW5pcXVlSWQrKyk7XG4gICAgbm9kZS5jbHVzdGVySWQgPSBjaWQ7XG4gICAgY2x1c3RlcnNbY2lkXSA9IHtcbiAgICAgIGlkOiBjaWQsXG4gICAgICBub2RlczogW25vZGVdXG4gICAgfTtcbiAgICBub2RlTWFwW25vZGUuaWRdID0ge1xuICAgICAgbm9kZTogbm9kZSxcbiAgICAgIGlkeDogaVxuICAgIH07XG4gIH0pOyAvLyB0aGUgYWRqYWNlbnQgbWF0cml4IG9mIGNhbE5vZGVzIGluc2lkZSBjbHVzdGVyc1xuXG4gIHZhciBhZGpNYXRyaXggPSBnZXRBZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307IC8vIHRoZSBzdW0gb2YgdGhlIHdlaWdodHMgb2YgYWxsIGVkZ2VzIGluIHRoZSBncmFwaFxuXG4gIHZhciBtID0gMDtcbiAgYWRqTWF0cml4LmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBrID0gMDtcbiAgICB2YXIgaWlkID0gbm9kZXNbaV0uaWQ7XG4gICAgbmVpZ2hib3JzW2lpZF0gPSB7fTtcbiAgICByb3cuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIGopIHtcbiAgICAgIGlmICghZW50cnkpIHJldHVybjtcbiAgICAgIGsgKz0gZW50cnk7XG4gICAgICB2YXIgamlkID0gbm9kZXNbal0uaWQ7XG4gICAgICBuZWlnaGJvcnNbaWlkXVtqaWRdID0gZW50cnk7XG4gICAgICBtICs9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICBtIC89IDI7XG4gIHZhciB0b3RhbE1vZHVsYXJpdHkgPSBJbmZpbml0eTtcbiAgdmFyIHByZXZpb3VzTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgaXRlciA9IDA7XG4gIHZhciBmaW5hbE5vZGVzID0gW107XG4gIHZhciBmaW5hbENsdXN0ZXJzID0ge307XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ICYmIG5vZGVzLmV2ZXJ5KGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydGllcycpO1xuICAgIH0pKSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKSArIGdldEluZXJ0aWFsTW9kdWxhcml0eShub2RlcywgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgdG90YWxNb2R1bGFyaXR5ID0gZ2V0TW9kdWxhcml0eShub2RlcywgYWRqTWF0cml4LCBrcywgbSk7XG4gICAgfSAvLyDnrKzkuIDmrKHov63ku6NwcmV2aW91c01vZHVsYXJpdHnnm7TmjqXotYvlgLxcblxuXG4gICAgaWYgKGl0ZXIgPT09IDApIHtcbiAgICAgIHByZXZpb3VzTW9kdWxhcml0eSA9IHRvdGFsTW9kdWxhcml0eTtcbiAgICAgIGZpbmFsTm9kZXMgPSBub2RlcztcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSBjbHVzdGVycztcbiAgICB9XG5cbiAgICB2YXIgaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgPSB0b3RhbE1vZHVsYXJpdHkgPiAwICYmIHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSAmJiB0b3RhbE1vZHVsYXJpdHkgLSBwcmV2aW91c01vZHVsYXJpdHkgPCB0aHJlc2hvbGQ7IC8vIOaAu+aooeWdl+W6puWinuWKoOaJjeabtOaWsOacgOS8mOino1xuXG4gICAgaWYgKHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSkge1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgY2x1c3RlcklkOiBub2RlLmNsdXN0ZXJJZFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaW5hbENsdXN0ZXJzID0gY2xvbmUoY2x1c3RlcnMpO1xuICAgICAgcHJldmlvdXNNb2R1bGFyaXR5ID0gdG90YWxNb2R1bGFyaXR5O1xuICAgIH0gLy8gd2hldGhlciB0byB0ZXJtaW5hdGUgdGhlIGl0ZXJhdGlvbnNcblxuXG4gICAgaWYgKGluY3JlYXNlV2l0aGluVGhyZXNob2xkIHx8IGl0ZXIgPiAxMDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIDtcbiAgICBpdGVyKys7IC8vIHByZSBjb21wdXRlIHNvbWUgdmFsdWVzIGZvciBjdXJyZW50IGNsdXN0ZXJzXG5cbiAgICBPYmplY3Qua2V5cyhjbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgICAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyB0byBub2RlcyBpbiBjbHVzdGVyXG4gICAgICB2YXIgc3VtVG90ID0gMDtcbiAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG5cbiAgICAgICAgaWYgKHNvdXJjZUNsdXN0ZXJJZCA9PT0gY2x1c3RlcklkICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gY2x1c3RlcklkIHx8IHRhcmdldENsdXN0ZXJJZCA9PT0gY2x1c3RlcklkICYmIHNvdXJjZUNsdXN0ZXJJZCAhPT0gY2x1c3RlcklkKSB7XG4gICAgICAgICAgc3VtVG90ID0gc3VtVG90ICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbHVzdGVyc1tjbHVzdGVySWRdLnN1bVRvdCA9IHN1bVRvdDtcbiAgICB9KTsgLy8gbW92ZSB0aGUgbm9kZXMgdG8gaW5jcmVhc2UgdGhlIGRlbHRhIG1vZHVsYXJpdHlcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgIHZhciBzZWxmQ2x1c3RlciA9IGNsdXN0ZXJzW25vZGUuY2x1c3RlcklkXTtcbiAgICAgIHZhciBiZXN0SW5jcmVhc2UgPSAwO1xuICAgICAgdmFyIGJlc3RDbHVzdGVyO1xuICAgICAgdmFyIGNvbW1vblBhcmFtID0ga3NbaV0gLyAoMiAqIG0pOyAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyBmcm9tIG5vZGUgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICB2YXIga2lpbiA9IDA7XG4gICAgICB2YXIgc2VsZkNsdXN0ZXJOb2RlcyA9IHNlbGZDbHVzdGVyLm5vZGVzO1xuICAgICAgc2VsZkNsdXN0ZXJOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChzY05vZGUpIHtcbiAgICAgICAgdmFyIHNjTm9kZUlkeCA9IG5vZGVNYXBbc2NOb2RlLmlkXS5pZHg7XG4gICAgICAgIGtpaW4gKz0gYWRqTWF0cml4W2ldW3NjTm9kZUlkeF0gfHwgMDtcbiAgICAgIH0pOyAvLyB0aGUgbW9kdXJhcml0eSBmb3IgKipyZW1vdmluZyoqIHRoZSBub2RlIGkgZnJvbSB0aGUgb3JpZ2luIGNsdXN0ZXIgb2Ygbm9kZSBpXG5cbiAgICAgIHZhciByZW1vdmVNb2R1cmFyaXR5ID0ga2lpbiAtIHNlbGZDbHVzdGVyLnN1bVRvdCAqIGNvbW1vblBhcmFtOyAvLyBub2RlcyBmb3IgKipyZW1vdmluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICB2YXIgc2VsZkNsdXN0ZXJOb2Rlc0FmdGVyUmVtb3ZlID0gc2VsZkNsdXN0ZXJOb2Rlcy5maWx0ZXIoZnVuY3Rpb24gKHNjTm9kZSkge1xuICAgICAgICByZXR1cm4gc2NOb2RlLmlkICE9PSBub2RlLmlkO1xuICAgICAgfSk7XG4gICAgICB2YXIgcHJvcGVydGllc1dlaWdodFJlbW92ZSA9IFtdO1xuICAgICAgc2VsZkNsdXN0ZXJOb2Rlc0FmdGVyUmVtb3ZlLmZvckVhY2goZnVuY3Rpb24gKG5vZGVSZW1vdmUsIGluZGV4KSB7XG4gICAgICAgIHByb3BlcnRpZXNXZWlnaHRSZW1vdmVbaW5kZXhdID0gYWxsUHJvcGVydGllc1dlaWdodFtub2RlUmVtb3ZlLm9yaWdpbkluZGV4XTtcbiAgICAgIH0pOyAvLyB0aGUgaW5lcnRpYWxNb2R1bGFyaXR5IGZvciAqKnJlbW92aW5nKiogdGhlIG5vZGUgaSBmcm9tIHRoZSBvcmlnaW4gY2x1c3RlciBvZiBub2RlIGlcblxuICAgICAgdmFyIHJlbW92ZUluZXJ0aWFsTW9kdWxhcml0eSA9IGdldEluZXJ0aWFsTW9kdWxhcml0eShzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUsIGFsbFByb3BlcnRpZXNXZWlnaHQpICogaW5lcnRpYWxXZWlnaHQ7IC8vIHRoZSBuZWlnaHRib3JzIG9mIHRoZSBub2RlXG5cbiAgICAgIHZhciBub2RlTmVpZ2hib3JJZHMgPSBuZWlnaGJvcnNbbm9kZS5pZF07XG4gICAgICBPYmplY3Qua2V5cyhub2RlTmVpZ2hib3JJZHMpLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yTm9kZUlkKSB7XG4gICAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBub2RlTWFwW25laWdoYm9yTm9kZUlkXS5ub2RlO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVySWQgPSBuZWlnaGJvck5vZGUuY2x1c3RlcklkOyAvLyBpZiB0aGUgbm9kZSBhbmQgdGhlIG5laWdoYm9yIG9mIG5vZGUgYXJlIGluIHRoZSBzYW1lIGNsdXN0ZXIsIHJldXRyblxuXG4gICAgICAgIGlmIChuZWlnaGJvckNsdXN0ZXJJZCA9PT0gbm9kZS5jbHVzdGVySWQpIHJldHVybjtcbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlciA9IGNsdXN0ZXJzW25laWdoYm9yQ2x1c3RlcklkXTtcbiAgICAgICAgdmFyIGNsdXN0ZXJOb2RlcyA9IG5laWdoYm9yQ2x1c3Rlci5ub2RlczsgLy8gaWYgdGhlIGNsdXN0ZXIgaXMgZW1wdHksIHJlbW92ZSB0aGUgY2x1c3RlciBhbmQgcmV0dXJuXG5cbiAgICAgICAgaWYgKCFjbHVzdGVyTm9kZXMgfHwgIWNsdXN0ZXJOb2Rlcy5sZW5ndGgpIHJldHVybjsgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgZnJvbSBub2RlIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyS2lpbiA9IDA7XG4gICAgICAgIGNsdXN0ZXJOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChjTm9kZSkge1xuICAgICAgICAgIHZhciBjTm9kZUlkeCA9IG5vZGVNYXBbY05vZGUuaWRdLmlkeDtcbiAgICAgICAgICBuZWlnaGJvckNsdXN0ZXJLaWluICs9IGFkak1hdHJpeFtpXVtjTm9kZUlkeF0gfHwgMDtcbiAgICAgICAgfSk7IC8vIHRoZSBtb2R1cmFyaXR5IGZvciAqKmFkZGluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICAgIHZhciBhZGRNb2R1cmFyaXR5ID0gbmVpZ2hib3JDbHVzdGVyS2lpbiAtIG5laWdoYm9yQ2x1c3Rlci5zdW1Ub3QgKiBjb21tb25QYXJhbTsgLy8gbm9kZXMgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGNsdXN0ZXJOb2Rlc0FmdGVyQWRkID0gY2x1c3Rlck5vZGVzLmNvbmNhdChbbm9kZV0pO1xuICAgICAgICB2YXIgcHJvcGVydGllc1dlaWdodEFkZCA9IFtdO1xuICAgICAgICBjbHVzdGVyTm9kZXNBZnRlckFkZC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlQWRkLCBpbmRleCkge1xuICAgICAgICAgIHByb3BlcnRpZXNXZWlnaHRBZGRbaW5kZXhdID0gYWxsUHJvcGVydGllc1dlaWdodFtub2RlQWRkLm9yaWdpbkluZGV4XTtcbiAgICAgICAgfSk7IC8vIHRoZSBpbmVydGlhbE1vZHVsYXJpdHkgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGFkZEluZXJ0aWFsTW9kdWxhcml0eSA9IGdldEluZXJ0aWFsTW9kdWxhcml0eShjbHVzdGVyTm9kZXNBZnRlckFkZCwgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDsgLy8gdGhlIGluY3JlYXNlIG1vZHVyYXJpdHkgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhZGRNb2R1cmFyaXR5IGFuZCByZW1vdmVNb2R1cmFyaXR5XG5cbiAgICAgICAgdmFyIGluY3JlYXNlID0gYWRkTW9kdXJhcml0eSAtIHJlbW92ZU1vZHVyYXJpdHk7XG5cbiAgICAgICAgaWYgKGluZXJ0aWFsTW9kdWxhcml0eSkge1xuICAgICAgICAgIGluY3JlYXNlID0gYWRkTW9kdXJhcml0eSArIGFkZEluZXJ0aWFsTW9kdWxhcml0eSAtIChyZW1vdmVNb2R1cmFyaXR5ICsgcmVtb3ZlSW5lcnRpYWxNb2R1bGFyaXR5KTtcbiAgICAgICAgfSAvLyBmaW5kIHRoZSBiZXN0IGNsdXN0ZXIgdG8gbW92ZSBub2RlIGkgaW50b1xuXG5cbiAgICAgICAgaWYgKGluY3JlYXNlID4gYmVzdEluY3JlYXNlKSB7XG4gICAgICAgICAgYmVzdEluY3JlYXNlID0gaW5jcmVhc2U7XG4gICAgICAgICAgYmVzdENsdXN0ZXIgPSBuZWlnaGJvckNsdXN0ZXI7XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBpZiBmb3VuZCBhIGJlc3QgY2x1c3RlciB0byBtb3ZlIGludG9cblxuICAgICAgaWYgKGJlc3RJbmNyZWFzZSA+IDApIHtcbiAgICAgICAgYmVzdENsdXN0ZXIubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgdmFyIHByZXZpb3VzQ2x1c3RlcklkXzEgPSBub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgbm9kZS5jbHVzdGVySWQgPSBiZXN0Q2x1c3Rlci5pZDsgLy8gbW92ZSB0aGUgbm9kZSB0byB0aGUgYmVzdCBjbHVzdGVyXG5cbiAgICAgICAgdmFyIG5vZGVJblNlbGZDbHVzdGVySWR4ID0gc2VsZkNsdXN0ZXIubm9kZXMuaW5kZXhPZihub2RlKTsgLy8gcmVtb3ZlIGZyb20gb3JpZ2luIGNsdXN0ZXJcblxuICAgICAgICBzZWxmQ2x1c3Rlci5ub2Rlcy5zcGxpY2Uobm9kZUluU2VsZkNsdXN0ZXJJZHgsIDEpOyAvLyB1cGRhdGUgc3VtVG90IGZvciBjbHVzdGVyc1xuICAgICAgICAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xID0gMDtcbiAgICAgICAgdmFyIHNlbGZDbHVzdGVyU3VtVG90XzEgPSAwO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgICAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgICAgICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG5cbiAgICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBiZXN0Q2x1c3Rlci5pZCAmJiB0YXJnZXRDbHVzdGVySWQgIT09IGJlc3RDbHVzdGVyLmlkIHx8IHRhcmdldENsdXN0ZXJJZCA9PT0gYmVzdENsdXN0ZXIuaWQgJiYgc291cmNlQ2x1c3RlcklkICE9PSBiZXN0Q2x1c3Rlci5pZCkge1xuICAgICAgICAgICAgbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgPSBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNvdXJjZUNsdXN0ZXJJZCA9PT0gcHJldmlvdXNDbHVzdGVySWRfMSAmJiB0YXJnZXRDbHVzdGVySWQgIT09IHByZXZpb3VzQ2x1c3RlcklkXzEgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBwcmV2aW91c0NsdXN0ZXJJZF8xICYmIHNvdXJjZUNsdXN0ZXJJZCAhPT0gcHJldmlvdXNDbHVzdGVySWRfMSkge1xuICAgICAgICAgICAgc2VsZkNsdXN0ZXJTdW1Ub3RfMSA9IHNlbGZDbHVzdGVyU3VtVG90XzEgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7IC8vIHRoZSBub2RlcyBvZiB0aGUgY2x1c3RlcnMgdG8gbW92ZSBpbnRvIGFuZCByZW1vdmUgYXJlIGNoYW5nZWQsIHVwZGF0ZSB0aGVpciBzdW1Ub3RcblxuICAgICAgICBiZXN0Q2x1c3Rlci5zdW1Ub3QgPSBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMTtcbiAgICAgICAgc2VsZkNsdXN0ZXIuc3VtVG90ID0gc2VsZkNsdXN0ZXJTdW1Ub3RfMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSAvLyBkZWxldGUgdGhlIGVtcHR5IGNsdXN0ZXJzLCBhc3NpZ24gaW5jcmVhc2luZyBjbHVzdGVySWRcblxuXG4gIHZhciBuZXdDbHVzdGVySWRNYXAgPSB7fTtcbiAgdmFyIGNsdXN0ZXJJZHggPSAwO1xuICBPYmplY3Qua2V5cyhmaW5hbENsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICB2YXIgY2x1c3RlciA9IGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcblxuICAgIGlmICghY2x1c3Rlci5ub2RlcyB8fCAhY2x1c3Rlci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRlbGV0ZSBmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5ld0lkID0gU3RyaW5nKGNsdXN0ZXJJZHggKyAxKTtcblxuICAgIGlmIChuZXdJZCA9PT0gY2x1c3RlcklkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2x1c3Rlci5pZCA9IG5ld0lkO1xuICAgIGNsdXN0ZXIubm9kZXMgPSBjbHVzdGVyLm5vZGVzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIGNsdXN0ZXJJZDogbmV3SWRcbiAgICAgIH07XG4gICAgfSk7XG4gICAgZmluYWxDbHVzdGVyc1tuZXdJZF0gPSBjbHVzdGVyO1xuICAgIG5ld0NsdXN0ZXJJZE1hcFtjbHVzdGVySWRdID0gbmV3SWQ7XG4gICAgZGVsZXRlIGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcbiAgICBjbHVzdGVySWR4Kys7XG4gIH0pOyAvLyByZXN0b3JlIG5vZGUgY2x1c3RlcklkXG5cbiAgZmluYWxOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlSW5mbykge1xuICAgIHZhciBub2RlID0gbm9kZUluZm8ubm9kZSxcbiAgICAgICAgY2x1c3RlcklkID0gbm9kZUluZm8uY2x1c3RlcklkO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2x1c3RlcklkO1xuICAgIGlmIChub2RlLmNsdXN0ZXJJZCAmJiBuZXdDbHVzdGVySWRNYXBbbm9kZS5jbHVzdGVySWRdKSBub2RlLmNsdXN0ZXJJZCA9IG5ld0NsdXN0ZXJJZE1hcFtub2RlLmNsdXN0ZXJJZF07XG4gIH0pOyAvLyBnZXQgdGhlIGNsdXN0ZXIgZWRnZXNcblxuICB2YXIgY2x1c3RlckVkZ2VzID0gW107XG4gIHZhciBjbHVzdGVyRWRnZU1hcCA9IHt9O1xuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICB2YXIgd2VpZ2h0ID0gZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDE7XG4gICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgdGFyZ2V0Q2x1c3RlcklkID0gbm9kZU1hcFt0YXJnZXRdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciBuZXdFZGdlSWQgPSBcIlwiLmNvbmNhdChzb3VyY2VDbHVzdGVySWQsIFwiLS0tXCIpLmNvbmNhdCh0YXJnZXRDbHVzdGVySWQpO1xuXG4gICAgaWYgKGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0pIHtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0ud2VpZ2h0ICs9IHdlaWdodDtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0uY291bnQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5ld0VkZ2UgPSB7XG4gICAgICAgIHNvdXJjZTogc291cmNlQ2x1c3RlcklkLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldENsdXN0ZXJJZCxcbiAgICAgICAgd2VpZ2h0OiB3ZWlnaHQsXG4gICAgICAgIGNvdW50OiAxXG4gICAgICB9O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSA9IG5ld0VkZ2U7XG4gICAgICBjbHVzdGVyRWRnZXMucHVzaChuZXdFZGdlKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgY2x1c3RlcnNBcnJheSA9IFtdO1xuICBPYmplY3Qua2V5cyhmaW5hbENsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICBjbHVzdGVyc0FycmF5LnB1c2goZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2x1c3RlcnM6IGNsdXN0ZXJzQXJyYXksXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvdXZhaW47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/louvain.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/mts.js":
/*!************************************************!*\
!*** ./node_modules/@antv/algorithm/es/mts.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_union_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/union-find */ \"./node_modules/@antv/algorithm/es/structs/union-find.js\");\n/* harmony import */ var _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/@antv/algorithm/es/structs/binary-heap.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\n\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__[\"default\"](compareWeight);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _structs_union_find__WEBPACK_IMPORTED_MODULE_0__[\"default\"](nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minimumSpanningTree);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcz8yMjIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ0s7QUFDUjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBYTtBQUNuQyxFQUFFLDhEQUFnQjtBQUNsQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sOERBQWdCO0FBQ3RCO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxNQUFNLDhEQUFnQjtBQUN0QjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsd0JBQXdCLDJEQUFTO0FBQ2pDO0FBQ0EsR0FBRyxHQUFHO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxrRkFBbUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVbmlvbkZpbmQgZnJvbSAnLi9zdHJ1Y3RzL3VuaW9uLWZpbmQnO1xuaW1wb3J0IE1pbkJpbmFyeUhlYXAgZnJvbSAnLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwJztcbmltcG9ydCB7IGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cblxudmFyIHByaW1NU1QgPSBmdW5jdGlvbiBwcmltTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KSB7XG4gIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xuICB9IC8vIOS7jm5vZGVzWzBd5byA5aeLXG5cblxuICB2YXIgY3Vyck5vZGUgPSBub2Rlc1swXTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZpc2l0ZWQuYWRkKGN1cnJOb2RlKTsgLy8g55So5LqM5Y+J5aCG57u05oqk6Led5bey5Yqg5YWl6IqC54K555qE5YW25LuW6IqC54K555qE6L6555qE5p2D5YC8XG5cbiAgdmFyIGNvbXBhcmVXZWlnaHQgPSBmdW5jdGlvbiBjb21wYXJlV2VpZ2h0KGEsIGIpIHtcbiAgICBpZiAod2VpZ2h0KSB7XG4gICAgICByZXR1cm4gYS53ZWlnaHQgLSBiLndlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICB2YXIgZWRnZVF1ZXVlID0gbmV3IE1pbkJpbmFyeUhlYXAoY29tcGFyZVdlaWdodCk7XG4gIGdldEVkZ2VzQnlOb2RlSWQoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgZ2V0RWRnZXNCeU5vZGVJZChzb3VyY2UsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2l0ZWQuaGFzKHRhcmdldCkpIHtcbiAgICAgIHZpc2l0ZWQuYWRkKHRhcmdldCk7XG4gICAgICBnZXRFZGdlc0J5Tm9kZUlkKHRhcmdldCwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICogS3J1c2thbCBhbGdvcml0aG3vvIzlpI3mnYLluqYgTyhFKmxvZ0UpLCBFOiDovrnnmoTmlbDph49cbiAqIHJlZmVyOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIHdlaWdodCDmjIflrprnlKjkuo7kvZzkuLrovrnmnYPph43nmoTlsZ7mgKfvvIzoi6XkuI3mjIflrprvvIzliJnorqTkuLrmiYDmnInovrnmnYPph43kuIDoh7RcbiAqIEByZXR1cm4gSUVkZ2VbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBrcnVza2FsTVNUID0gZnVuY3Rpb24ga3J1c2thbE1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDoi6XmjIflrpp3ZWlnaHTvvIzliJnlsIbmiYDmnInnmoTovrnmjInmnYPlgLzku47lsI/liLDlpKfmjpLluo9cblxuXG4gIHZhciB3ZWlnaHRFZGdlcyA9IGVkZ2VzLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlO1xuICB9KTtcblxuICBpZiAod2VpZ2h0KSB7XG4gICAgd2VpZ2h0RWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgZGlzam9pbnRTZXQgPSBuZXcgVW5pb25GaW5kKG5vZGVzLm1hcChmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlkO1xuICB9KSk7IC8vIOS7juadg+WAvOacgOWwj+eahOi+ueW8gOWni++8jOWmguaenOi/meadoei+uei/nuaOpeeahOS4pOS4quiKgueCueS6juWbvkfkuK3kuI3lnKjlkIzkuIDkuKrov57pgJrliIbph4/kuK3vvIzliJnmt7vliqDov5nmnaHovrlcbiAgLy8g55u05Yiw6YGN5Y6G5a6M5omA5pyJ54K55oiW6L65XG5cbiAgd2hpbGUgKHdlaWdodEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY3VyRWRnZSA9IHdlaWdodEVkZ2VzLnNoaWZ0KCk7XG4gICAgdmFyIHNvdXJjZSA9IGN1ckVkZ2Uuc291cmNlO1xuICAgIHZhciB0YXJnZXQgPSBjdXJFZGdlLnRhcmdldDtcblxuICAgIGlmICghZGlzam9pbnRTZXQuY29ubmVjdGVkKHNvdXJjZSwgdGFyZ2V0KSkge1xuICAgICAgc2VsZWN0ZWRFZGdlcy5wdXNoKGN1ckVkZ2UpO1xuICAgICAgZGlzam9pbnRTZXQudW5pb24oc291cmNlLCB0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCRXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBtaW5pbXVtU3Bhbm5pbmdUcmVlID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZShncmFwaERhdGEsIHdlaWdodCwgYWxnbykge1xuICB2YXIgYWxnb3MgPSB7XG4gICAgcHJpbTogcHJpbU1TVCxcbiAgICBrcnVza2FsOiBrcnVza2FsTVNUXG4gIH07XG4gIGlmICghYWxnbykgcmV0dXJuIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpO1xuICByZXR1cm4gYWxnb3NbYWxnb10oZ3JhcGhEYXRhLCB3ZWlnaHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWluaW11bVNwYW5uaW5nVHJlZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/mts.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js":
/*!********************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js ***!
\********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _utils_node_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/es/utils/node-properties.js\");\n/* harmony import */ var _utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\");\n/* harmony import */ var _cosine_similarity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cosine-similarity */ \"./node_modules/@antv/algorithm/es/cosine-similarity.js\");\n\n\n\n\n/**\n * nodes-cosine-similarity算法 基于节点属性计算余弦相似度(基于种子节点寻找相似节点)\n * @param nodes 图节点数据\n * @param seedNode 种子节点\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param propertyKey 属性的字段名\n */\n\nvar nodesCosineSimilarity = function nodesCosineSimilarity(nodes, seedNode, involvedKeys, uninvolvedKeys, propertyKey) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = [];\n }\n\n if (propertyKey === void 0) {\n propertyKey = 'properties';\n }\n\n var similarNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(nodes.filter(function (node) {\n return node.id !== seedNode.id;\n }));\n var seedNodeIndex = nodes.findIndex(function (node) {\n return node.id === seedNode.id;\n }); // 所有节点属性集合\n\n var properties = Object(_utils_node_properties__WEBPACK_IMPORTED_MODULE_1__[\"getAllProperties\"])(nodes, propertyKey); // 所有节点属性one-hot特征向量集合s\n\n var allPropertiesWeight = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_2__[\"oneHot\"])(properties, involvedKeys, uninvolvedKeys); // 种子节点属性\n\n var seedNodeProperties = allPropertiesWeight[seedNodeIndex];\n var allCosineSimilarity = [];\n similarNodes.forEach(function (node, index) {\n if (node.id !== seedNode.id) {\n // 节点属性\n var nodeProperties = allPropertiesWeight[index]; // 计算节点向量和种子节点向量的余弦相似度\n\n var cosineSimilarityValue = Object(_cosine_similarity__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(nodeProperties, seedNodeProperties);\n allCosineSimilarity.push(cosineSimilarityValue);\n node.cosineSimilarity = cosineSimilarityValue;\n }\n }); // 将返回的节点按照余弦相似度大小排序\n\n similarNodes.sort(function (a, b) {\n return b.cosineSimilarity - a.cosineSimilarity;\n });\n return {\n allCosineSimilarity: allCosineSimilarity,\n similarNodes: similarNodes\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (nodesCosineSimilarity);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL25vZGVzLWNvc2luZS1zaW1pbGFyaXR5LmpzP2VjZjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUN3QjtBQUNQO0FBQ0Q7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxtQkFBbUIsK0VBQWdCLHFCQUFxQjs7QUFFeEQsNEJBQTRCLHdFQUFNLDJDQUEyQzs7QUFFN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRDs7QUFFdEQsa0NBQWtDLGtFQUFnQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG9GQUFxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvbm9kZXMtY29zaW5lLXNpbWlsYXJpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0QWxsUHJvcGVydGllcyB9IGZyb20gJy4vdXRpbHMvbm9kZS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IG9uZUhvdCB9IGZyb20gJy4vdXRpbHMvZGF0YS1wcmVwcm9jZXNzaW5nJztcbmltcG9ydCBjb3NpbmVTaW1pbGFyaXR5IGZyb20gJy4vY29zaW5lLXNpbWlsYXJpdHknO1xuLyoqXG4gKiAgbm9kZXMtY29zaW5lLXNpbWlsYXJpdHnnrpfms5Ug5Z+65LqO6IqC54K55bGe5oCn6K6h566X5L2Z5bym55u45Ly85bqmKOWfuuS6juenjeWtkOiKgueCueWvu+aJvuebuOS8vOiKgueCuSlcbiAqIEBwYXJhbSBub2RlcyDlm77oioLngrnmlbDmja5cbiAqIEBwYXJhbSBzZWVkTm9kZSDnp43lrZDoioLngrlcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gcHJvcGVydHlLZXkg5bGe5oCn55qE5a2X5q615ZCNXG4gKi9cblxudmFyIG5vZGVzQ29zaW5lU2ltaWxhcml0eSA9IGZ1bmN0aW9uIG5vZGVzQ29zaW5lU2ltaWxhcml0eShub2Rlcywgc2VlZE5vZGUsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMsIHByb3BlcnR5S2V5KSB7XG4gIGlmIChub2RlcyA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZXMgPSBbXTtcbiAgfVxuXG4gIGlmIChpbnZvbHZlZEtleXMgPT09IHZvaWQgMCkge1xuICAgIGludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHVuaW52b2x2ZWRLZXlzID09PSB2b2lkIDApIHtcbiAgICB1bmludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5S2V5ID09PSB2b2lkIDApIHtcbiAgICBwcm9wZXJ0eUtleSA9ICdwcm9wZXJ0aWVzJztcbiAgfVxuXG4gIHZhciBzaW1pbGFyTm9kZXMgPSBjbG9uZShub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5pZCAhPT0gc2VlZE5vZGUuaWQ7XG4gIH0pKTtcbiAgdmFyIHNlZWROb2RlSW5kZXggPSBub2Rlcy5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5pZCA9PT0gc2VlZE5vZGUuaWQ7XG4gIH0pOyAvLyDmiYDmnInoioLngrnlsZ7mgKfpm4blkIhcblxuICB2YXIgcHJvcGVydGllcyA9IGdldEFsbFByb3BlcnRpZXMobm9kZXMsIHByb3BlcnR5S2V5KTsgLy8g5omA5pyJ6IqC54K55bGe5oCnb25lLWhvdOeJueW+geWQkemHj+mbhuWQiHNcblxuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IG9uZUhvdChwcm9wZXJ0aWVzLCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKTsgLy8g56eN5a2Q6IqC54K55bGe5oCnXG5cbiAgdmFyIHNlZWROb2RlUHJvcGVydGllcyA9IGFsbFByb3BlcnRpZXNXZWlnaHRbc2VlZE5vZGVJbmRleF07XG4gIHZhciBhbGxDb3NpbmVTaW1pbGFyaXR5ID0gW107XG4gIHNpbWlsYXJOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgIGlmIChub2RlLmlkICE9PSBzZWVkTm9kZS5pZCkge1xuICAgICAgLy8g6IqC54K55bGe5oCnXG4gICAgICB2YXIgbm9kZVByb3BlcnRpZXMgPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W2luZGV4XTsgLy8g6K6h566X6IqC54K55ZCR6YeP5ZKM56eN5a2Q6IqC54K55ZCR6YeP55qE5L2Z5bym55u45Ly85bqmXG5cbiAgICAgIHZhciBjb3NpbmVTaW1pbGFyaXR5VmFsdWUgPSBjb3NpbmVTaW1pbGFyaXR5KG5vZGVQcm9wZXJ0aWVzLCBzZWVkTm9kZVByb3BlcnRpZXMpO1xuICAgICAgYWxsQ29zaW5lU2ltaWxhcml0eS5wdXNoKGNvc2luZVNpbWlsYXJpdHlWYWx1ZSk7XG4gICAgICBub2RlLmNvc2luZVNpbWlsYXJpdHkgPSBjb3NpbmVTaW1pbGFyaXR5VmFsdWU7XG4gICAgfVxuICB9KTsgLy8g5bCG6L+U5Zue55qE6IqC54K55oyJ54Wn5L2Z5bym55u45Ly85bqm5aSn5bCP5o6S5bqPXG5cbiAgc2ltaWxhck5vZGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5jb3NpbmVTaW1pbGFyaXR5IC0gYS5jb3NpbmVTaW1pbGFyaXR5O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhbGxDb3NpbmVTaW1pbGFyaXR5OiBhbGxDb3NpbmVTaW1pbGFyaXR5LFxuICAgIHNpbWlsYXJOb2Rlczogc2ltaWxhck5vZGVzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub2Rlc0Nvc2luZVNpbWlsYXJpdHk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/pageRank.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/algorithm/es/pageRank.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/es/degree.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = Object(_degree__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (pageRank);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzP2ZkYWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQThCO0FBQ1E7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsdURBQU07O0FBRXpCO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCx3QkFBd0IsMERBQVk7O0FBRXBDLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsdUVBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXROZWlnaGJvcnMgfSBmcm9tIFwiLi91dGlsXCI7XG4vKipcbiAqIFBhZ2VSYW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhZ2VSYW5rXG4gKiByZWZlcjogaHR0cHM6Ly9naXRodWIuY29tL2FudmFrYS9uZ3JhcGgucGFnZXJhbmtcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIGVwc2lsb24g5Yik5pat5piv5ZCm5pS25pWb55qE57K+5bqm5YC877yM6buY6K6kIDAuMDAwMDAxXG4gKiBAcGFyYW0gbGlua1Byb2Ig6Zi75bC857O75pWw77yIZHVtcGluZyBmYWN0b3LvvInvvIzmjIfku7vmhI/ml7bliLvvvIznlKjmiLforr/pl67liLDmn5DoioLngrnlkI7nu6fnu63orr/pl67or6XoioLngrnpk77mjqXnmoTkuIvkuIDkuKroioLngrnnmoTmpoLnjofvvIznu4/pqozlgLwgMC44NVxuICovXG5cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSBkZWdyZWUoZ3JhcGhEYXRhKTtcblxuICB3aGlsZSAobWF4SXRlcmF0aW9ucyA+IDAgJiYgZGlzdGFuY2UgPiBlcHNpbG9uKSB7XG4gICAgbGVha2VkUmFuayA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSAwO1xuXG4gICAgICBpZiAobm9kZURlZ3JlZVtub2RlLmlkXS5pbkRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMobm9kZUlkLCBlZGdlcywgJ3NvdXJjZScpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuICAgICAgICAgIHZhciBvdXREZWdyZWUgPSBub2RlRGVncmVlW25laWdoYm9yXS5vdXREZWdyZWU7XG4gICAgICAgICAgaWYgKG91dERlZ3JlZSA+IDApIGN1cnJlbnRSYW5rICs9IHByZXZSYW5rc1tuZWlnaGJvcl0gLyBvdXREZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gbGlua1Byb2IgKiBjdXJyZW50UmFuaztcbiAgICAgICAgbGVha2VkUmFuayArPSBjdXJSYW5rc1tub2RlSWRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxlYWtlZFJhbmsgPSAoMSAtIGxlYWtlZFJhbmspIC8gbm9kZXNDb3VudDtcbiAgICBkaXN0YW5jZSA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSBjdXJSYW5rc1tub2RlSWRdICsgbGVha2VkUmFuaztcbiAgICAgIGRpc3RhbmNlICs9IE1hdGguYWJzKGN1cnJlbnRSYW5rIC0gcHJldlJhbmtzW25vZGVJZF0pO1xuICAgICAgcHJldlJhbmtzW25vZGVJZF0gPSBjdXJyZW50UmFuaztcbiAgICB9XG5cbiAgICBtYXhJdGVyYXRpb25zIC09IDE7XG4gIH1cblxuICByZXR1cm4gcHJldlJhbmtzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGFnZVJhbms7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/pageRank.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/structs/binary-heap.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/structs/binary-heap.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MinBinaryHeap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvYmluYXJ5LWhlYXAuanM/Mjk4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw0RUFBYSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9iaW5hcnktaGVhcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZhdWx0Q29tcGFyZSA9IGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufTtcblxudmFyIE1pbkJpbmFyeUhlYXAgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNaW5CaW5hcnlIZWFwKGNvbXBhcmVGbikge1xuICAgIGlmIChjb21wYXJlRm4gPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyZUZuID0gZGVmYXVsdENvbXBhcmU7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYXJlRm4gPSBjb21wYXJlRm47XG4gICAgdGhpcy5saXN0ID0gW107XG4gIH1cblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgcmV0dXJuIDIgKiBpbmRleCArIDE7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZ2V0UmlnaHQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMjtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmZsb29yKChpbmRleCAtIDEpIC8gMik7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lmxlbmd0aCA8PSAwO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0VtcHR5KCkgPyB1bmRlZmluZWQgOiB0aGlzLmxpc3RbMF07XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZGVsTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0b3AgPSB0aGlzLnRvcCgpO1xuICAgIHZhciBib3R0b20gPSB0aGlzLmxpc3QucG9wKCk7XG5cbiAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGlzdFswXSA9IGJvdHRvbTtcbiAgICAgIHRoaXMubW92ZURvd24oMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvcDtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubGlzdC5wdXNoKHZhbHVlKTtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMubGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5tb3ZlVXAoaW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVVcCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG5cbiAgICB3aGlsZSAoaW5kZXggJiYgaW5kZXggPiAwICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtwYXJlbnRdLCB0aGlzLmxpc3RbaW5kZXhdKSA+IDApIHtcbiAgICAgIC8vIHN3YXBcbiAgICAgIHZhciB0bXAgPSB0aGlzLmxpc3RbcGFyZW50XTtcbiAgICAgIHRoaXMubGlzdFtwYXJlbnRdID0gdGhpcy5saXN0W2luZGV4XTtcbiAgICAgIHRoaXMubGlzdFtpbmRleF0gPSB0bXA7IC8vIFt0aGlzLmxpc3RbaW5kZXhdLCB0aGlzLmxpc3RbcGFyZW50XV0gPSBbdGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF1dXG5cbiAgICAgIGluZGV4ID0gcGFyZW50O1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoaW5kZXgpO1xuICAgIH1cbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5tb3ZlRG93biA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBlbGVtZW50ID0gaW5kZXg7XG4gICAgdmFyIGxlZnQgPSB0aGlzLmdldExlZnQoaW5kZXgpO1xuICAgIHZhciByaWdodCA9IHRoaXMuZ2V0UmlnaHQoaW5kZXgpO1xuICAgIHZhciBzaXplID0gdGhpcy5saXN0Lmxlbmd0aDtcblxuICAgIGlmIChsZWZ0ICE9PSBudWxsICYmIGxlZnQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2xlZnRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSBsZWZ0O1xuICAgIH0gZWxzZSBpZiAocmlnaHQgIT09IG51bGwgJiYgcmlnaHQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W3JpZ2h0XSkgPiAwKSB7XG4gICAgICBlbGVtZW50ID0gcmlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9PSBlbGVtZW50KSB7XG4gICAgICBfYSA9IFt0aGlzLmxpc3RbZWxlbWVudF0sIHRoaXMubGlzdFtpbmRleF1dLCB0aGlzLmxpc3RbaW5kZXhdID0gX2FbMF0sIHRoaXMubGlzdFtlbGVtZW50XSA9IF9hWzFdO1xuICAgICAgdGhpcy5tb3ZlRG93bihlbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIE1pbkJpbmFyeUhlYXA7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbkJpbmFyeUhlYXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/binary-heap.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/structs/linked-list.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/structs/linked-list.js ***!
\****************************************************************/
/*! exports provided: LinkedListNode, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkedListNode\", function() { return LinkedListNode; });\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\n\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LinkedList);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvbGlua2VkLWxpc3QuanM/OTQzOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRXlCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHlFQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmF1bHRDb21wYXJhdG9yID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICog6ZO+6KGo5Lit5Y2V5Liq5YWD57Sg6IqC54K5XG4gKi9cblxuXG52YXIgTGlua2VkTGlzdE5vZGUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgbmV4dCkge1xuICAgIGlmIChuZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIG5leHQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgTGlua2VkTGlzdE5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrID8gY2FsbGJhY2sodGhpcy52YWx1ZSkgOiBcIlwiLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdE5vZGU7XG59KCk7XG5cbmV4cG9ydCB7IExpbmtlZExpc3ROb2RlIH07XG5cbnZhciBMaW5rZWRMaXN0ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGlua2VkTGlzdChjb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IgPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyYXRvciA9IGRlZmF1bHRDb21wYXJhdG9yO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmNvbXBhcmUgPSBjb21wYXJhdG9yO1xuICB9XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajlpLTpg6hcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIOWcqOWktOmDqOa3u+WKoOS4gOS4quiKgueCuVxuICAgIHZhciBuZXdOb2RlID0gbmV3IExpbmtlZExpc3ROb2RlKHZhbHVlLCB0aGlzLmhlYWQpO1xuICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG5cbiAgICBpZiAoIXRoaXMudGFpbCkge1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumuWFg+e0oOa3u+WKoOWIsOmTvuihqOS4rVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSk7IC8vIOWmguaenOS4jeWtmOWcqOWktOiKgueCue+8jOWImeWwhuWIm+W7uueahOaWsOiKgueCueS9nOS4uuWktOiKgueCuVxuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG4gICAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSAvLyDlsIbmlrDoioLngrnpmYTliqDliLDpk77ooajmnKvlsL5cblxuXG4gICAgdGhpcy50YWlsLm5leHQgPSBuZXdOb2RlO1xuICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlIOimgeWIoOmZpOeahOWFg+e0oFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlTm9kZSA9IG51bGw7IC8vIOWmguaenOWIoOmZpOeahOaYr+WktOmDqOWFg+e0oO+8jOWImeWwhm5leHTkvZzkuLrlpLTlhYPntKBcblxuICAgIHdoaWxlICh0aGlzLmhlYWQgJiYgdGhpcy5jb21wYXJlKHRoaXMuaGVhZC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICBkZWxldGVOb2RlID0gdGhpcy5oZWFkO1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKGN1cnJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAvLyDlpoLmnpzliKDpmaTkuoboioLngrnku6XlkI7vvIzlsIZuZXh06IqC54K55YmN56e7XG4gICAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgICBpZiAodGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLm5leHQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgIGRlbGV0ZU5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBjdXJyZW50Tm9kZS5uZXh0Lm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyDmo4Dmn6XlsL7pg6joioLngrnmmK/lkKbooqvliKDpmaRcblxuXG4gICAgaWYgKHRoaXMuY29tcGFyZSh0aGlzLnRhaWwudmFsdWUsIHZhbHVlKSkge1xuICAgICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZU5vZGU7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7mjIflrprnmoTlhYPntKBcbiAgICogQHBhcmFtIHBhcmFtMFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgX2IgPSBfYS52YWx1ZSxcbiAgICAgICAgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2IsXG4gICAgICAgIF9jID0gX2EuY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrID0gX2MgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9jO1xuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5aaC5p6c5oyH5a6a5LqGIGNhbGxiYWNr77yM5YiZ5oyJ5oyH5a6a55qEIGNhbGxiYWNrIOafpeaJvlxuICAgICAgaWYgKGNhbGxiYWNrICYmIGNhbGxiYWNrKGN1cnJlbnROb2RlLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9IC8vIOWmguaenOaMh+WumuS6hiB2YWx1Ze+8jOWImeaMiSB2YWx1ZSDmn6Xmib5cblxuXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhcmUoY3VycmVudE5vZGUudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWwvumDqOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZVRhaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRlbGV0ZWRUYWlsID0gdGhpcy50YWlsO1xuXG4gICAgaWYgKHRoaXMuaGVhZCA9PT0gdGhpcy50YWlsKSB7XG4gICAgICAvLyDpk77ooajkuK3lj6rmnInkuIDkuKrlhYPntKBcbiAgICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZS5uZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnROb2RlLm5leHQubmV4dCkge1xuICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRhaWwgPSBjdXJyZW50Tm9kZTtcbiAgICByZXR1cm4gZGVsZXRlZFRhaWw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlpLTpg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVIZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlZEhlYWQgPSB0aGlzLmhlYWQ7XG5cbiAgICBpZiAodGhpcy5oZWFkLm5leHQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZEhlYWQ7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbkuIDnu4TlhYPntKDovazmiJDpk77ooajkuK3nmoToioLngrlcbiAgICogQHBhcmFtIHZhbHVlcyDpk77ooajkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5mcm9tQXJyYXkgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIF90aGlzLmFwcGVuZCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbpk77ooajkuK3nmoToioLngrnovazmiJDmlbDnu4TlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgbm9kZXMucHVzaChjdXJyZW50Tm9kZSk7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xuICAvKipcbiAgICog5Y+N6L2s6ZO+6KGo5Lit55qE5YWD57Sg6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHByZXZOb2RlID0gbnVsbDtcbiAgICB2YXIgbmV4dE5vZGUgPSBudWxsO1xuXG4gICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7XG4gICAgICAvLyDlrZjlgqjkuIvkuIDkuKrlhYPntKDoioLngrlcbiAgICAgIG5leHROb2RlID0gY3VycmVudE5vZGUubmV4dDsgLy8g5pu05pS55b2T5YmN6IqC54K555qE5LiL5LiA5Liq6IqC54K577yM5Lul5L6/5bCG5a6D6L+e5o6l5Yiw5LiK5LiA5Liq6IqC54K55LiKXG5cbiAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBwcmV2Tm9kZTsgLy8g5bCGIHByZXZOb2RlIOWSjCBjdXJyZW50Tm9kZSDlkJHliY3np7vliqjkuIDmraVcblxuICAgICAgcHJldk5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgIGN1cnJlbnROb2RlID0gbmV4dE5vZGU7XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gdGhpcy5oZWFkO1xuICAgIHRoaXMuaGVhZCA9IHByZXZOb2RlO1xuICB9O1xuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgICB9KS50b1N0cmluZygpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0O1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rZWRMaXN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/linked-list.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/structs/queue.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/structs/queue.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Queue);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvcXVldWUuanM/MjRmMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBVTtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMaW5rZWRMaXN0IGZyb20gJy4vbGlua2VkLWxpc3QnO1xuXG52YXIgUXVldWUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBRdWV1ZSgpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICB9XG4gIC8qKlxuICAgKiDpmJ/liJfmmK/lkKbkuLrnqbpcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMubGlua2VkTGlzdC5oZWFkO1xuICB9O1xuICAvKipcbiAgICog6K+75Y+W6Zif5YiX5aS06YOo55qE5YWD57Sg77yMIOS4jeWIoOmZpOmYn+WIl+S4reeahOWFg+e0oFxuICAgKi9cblxuXG4gIFF1ZXVlLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5saW5rZWRMaXN0LmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxpbmtlZExpc3QuaGVhZC52YWx1ZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWcqOmYn+WIl+eahOWwvumDqOaWsOWinuS4gOS4quWFg+e0oFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRoaXMubGlua2VkTGlzdC5hcHBlbmQodmFsdWUpO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk6Zif5YiX5Lit55qE5aS06YOo5YWD57Sg77yM5aaC5p6c6Zif5YiX5Li656m677yM5YiZ6L+U5ZueIG51bGxcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZGVxdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVtb3ZlSGVhZCA9IHRoaXMubGlua2VkTGlzdC5kZWxldGVIZWFkKCk7XG4gICAgcmV0dXJuIHJlbW92ZUhlYWQgPyByZW1vdmVIZWFkLnZhbHVlIDogbnVsbDtcbiAgfTtcblxuICBRdWV1ZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgfTtcblxuICByZXR1cm4gUXVldWU7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFF1ZXVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/queue.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/structs/stack.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/structs/stack.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Stack =\n/** @class */\nfunction () {\n function Stack(maxStep) {\n if (maxStep === void 0) {\n maxStep = 10;\n }\n\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.maxStep = maxStep;\n }\n\n Object.defineProperty(Stack.prototype, \"length\", {\n get: function get() {\n return this.linkedList.toArray().length;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * 判断栈是否为空,如果链表中没有头部元素,则栈为空\n */\n\n Stack.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 是否到定义的栈的最大长度,如果达到最大长度后,不再允许入栈\n */\n\n\n Stack.prototype.isMaxStack = function () {\n return this.toArray().length >= this.maxStep;\n };\n /**\n * 访问顶端元素\n */\n\n\n Stack.prototype.peek = function () {\n if (this.isEmpty()) {\n return null;\n } // 返回头部元素,不删除元素\n\n\n return this.linkedList.head.value;\n };\n\n Stack.prototype.push = function (value) {\n this.linkedList.prepend(value);\n\n if (this.length > this.maxStep) {\n this.linkedList.deleteTail();\n }\n };\n\n Stack.prototype.pop = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Stack.prototype.toArray = function () {\n return this.linkedList.toArray().map(function (node) {\n return node.value;\n });\n };\n\n Stack.prototype.clear = function () {\n while (!this.isEmpty()) {\n this.pop();\n }\n };\n\n return Stack;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Stack);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanM/MTg5MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsb0RBQVU7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlua2VkTGlzdCBmcm9tICcuL2xpbmtlZC1saXN0JztcblxudmFyIFN0YWNrID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3RhY2sobWF4U3RlcCkge1xuICAgIGlmIChtYXhTdGVwID09PSB2b2lkIDApIHtcbiAgICAgIG1heFN0ZXAgPSAxMDtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgIHRoaXMubWF4U3RlcCA9IG1heFN0ZXA7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RhY2sucHJvdG90eXBlLCBcImxlbmd0aFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvQXJyYXkoKS5sZW5ndGg7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIC8qKlxuICAgKiDliKTmlq3moIjmmK/lkKbkuLrnqbrvvIzlpoLmnpzpk77ooajkuK3msqHmnInlpLTpg6jlhYPntKDvvIzliJnmoIjkuLrnqbpcbiAgICovXG5cbiAgU3RhY2sucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuWIsOWumuS5ieeahOagiOeahOacgOWkp+mVv+W6pu+8jOWmguaenOi+vuWIsOacgOWkp+mVv+W6puWQju+8jOS4jeWGjeWFgeiuuOWFpeagiFxuICAgKi9cblxuXG4gIFN0YWNrLnByb3RvdHlwZS5pc01heFN0YWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGggPj0gdGhpcy5tYXhTdGVwO1xuICB9O1xuICAvKipcbiAgICog6K6/6Zeu6aG256uv5YWD57SgXG4gICAqL1xuXG5cbiAgU3RhY2sucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIOi/lOWbnuWktOmDqOWFg+e0oO+8jOS4jeWIoOmZpOWFg+e0oFxuXG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QucHJlcGVuZCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiB0aGlzLm1heFN0ZXApIHtcbiAgICAgIHRoaXMubGlua2VkTGlzdC5kZWxldGVUYWlsKCk7XG4gICAgfVxuICB9O1xuXG4gIFN0YWNrLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgd2hpbGUgKCF0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN0YWNrO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBTdGFjazsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/stack.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/structs/union-find.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/structs/union-find.js ***!
\***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (UnionFind);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvdW5pb24tZmluZC5qcz8wNDAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxxQkFBcUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL3VuaW9uLWZpbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOW5tuafpembhiBEaXNqb2ludCBzZXQgdG8gc3VwcG9ydCBxdWljayB1bmlvblxuICovXG52YXIgVW5pb25GaW5kID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVW5pb25GaW5kKGl0ZW1zKSB7XG4gICAgdGhpcy5jb3VudCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLnBhcmVudCA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2kgPSAwLCBpdGVtc18xID0gaXRlbXM7IF9pIDwgaXRlbXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpID0gaXRlbXNfMVtfaV07XG4gICAgICB0aGlzLnBhcmVudFtpXSA9IGk7XG4gICAgfVxuICB9IC8vIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIGl0ZW1cblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgd2hpbGUgKHRoaXMucGFyZW50W2l0ZW1dICE9PSBpdGVtKSB7XG4gICAgICBpdGVtID0gdGhpcy5wYXJlbnRbaXRlbV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS51bmlvbiA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIHJvb3RBID0gdGhpcy5maW5kKGEpO1xuICAgIHZhciByb290QiA9IHRoaXMuZmluZChiKTtcbiAgICBpZiAocm9vdEEgPT09IHJvb3RCKSByZXR1cm47IC8vIG1ha2UgdGhlIGVsZW1lbnQgd2l0aCBzbWFsbGVyIHJvb3QgdGhlIHBhcmVudFxuXG4gICAgaWYgKHJvb3RBIDwgcm9vdEIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFtiXSAhPT0gYikgdGhpcy51bmlvbih0aGlzLnBhcmVudFtiXSwgYSk7XG4gICAgICB0aGlzLnBhcmVudFtiXSA9IHRoaXMucGFyZW50W2FdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wYXJlbnRbYV0gIT09IGEpIHRoaXMudW5pb24odGhpcy5wYXJlbnRbYV0sIGIpO1xuICAgICAgdGhpcy5wYXJlbnRbYV0gPSB0aGlzLnBhcmVudFtiXTtcbiAgICB9XG4gIH07IC8vIHdoZXRoZXIgYSBhbmQgYiBhcmUgY29ubmVjdGVkLCBpLmUuIGEgYW5kIGIgaGF2ZSB0aGUgc2FtZSByb290XG5cblxuICBVbmlvbkZpbmQucHJvdG90eXBlLmNvbm5lY3RlZCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChhKSA9PT0gdGhpcy5maW5kKGIpO1xuICB9O1xuXG4gIHJldHVybiBVbmlvbkZpbmQ7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFVuaW9uRmluZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/union-find.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/types.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/algorithm/es/types.js ***!
\**************************************************/
/*! exports provided: DistanceType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DistanceType\", function() { return DistanceType; });\nvar DistanceType;\n\n(function (DistanceType) {\n DistanceType[\"EuclideanDistance\"] = \"euclideanDistance\";\n})(DistanceType || (DistanceType = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3R5cGVzLmpzPzBmMjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPOztBQUVQO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvdHlwZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIERpc3RhbmNlVHlwZTtcblxuKGZ1bmN0aW9uIChEaXN0YW5jZVR5cGUpIHtcbiAgRGlzdGFuY2VUeXBlW1wiRXVjbGlkZWFuRGlzdGFuY2VcIl0gPSBcImV1Y2xpZGVhbkRpc3RhbmNlXCI7XG59KShEaXN0YW5jZVR5cGUgfHwgKERpc3RhbmNlVHlwZSA9IHt9KSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/types.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/util.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/algorithm/es/util.js ***!
\*************************************************/
/*! exports provided: getNeighbors, getOutEdgesNodeId, getEdgesByNodeId, uniqueId */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return getNeighbors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutEdgesNodeId\", function() { return getOutEdgesNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdgesByNodeId\", function() { return getEdgesByNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWwuanM/NmZlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cbmV4cG9ydCB2YXIgZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JzKG5vZGVJZCwgZWRnZXMsIHR5cGUpIHtcbiAgaWYgKGVkZ2VzID09PSB2b2lkIDApIHtcbiAgICBlZGdlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRFZGdlcyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkIHx8IGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gIH0pO1xuXG4gIGlmICh0eXBlID09PSAndGFyZ2V0Jykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8xID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8xKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzEpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0O1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgLy8g5b2T5YmN6IqC54K55Li6IHRhcmdldO+8jOWug+aJgOaMh+WQkeeahOa6kOiKgueCuVxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzIoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJyZW50RWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMikubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2U7XG4gICAgfSk7XG4gIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlciA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXIoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkID8gZWRnZS50YXJnZXQgOiBlZGdlLnNvdXJjZTtcbiAgfTtcblxuICByZXR1cm4gY3VycmVudEVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbn07XG4vKipcbiAqIOiOt+WPluaMh+WumuiKgueCueeahOWHuui+uVxuICogQHBhcmFtIG5vZGVJZCDoioLngrkgSURcbiAqIEBwYXJhbSBlZGdlcyDlm77kuK3nmoTmiYDmnInovrnmlbDmja5cbiAqL1xuXG5leHBvcnQgdmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cbmV4cG9ydCB2YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQoaW5kZXgpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cblxuICB2YXIgcmFuZG9tMSA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICB2YXIgcmFuZG9tMiA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICByZXR1cm4gXCJcIi5jb25jYXQoaW5kZXgsIFwiLVwiKS5jb25jYXQocmFuZG9tMSkuY29uY2F0KHJhbmRvbTIpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/util.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/utils/data-preprocessing.js":
/*!*********************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/utils/data-preprocessing.js ***!
\*********************************************************************/
/*! exports provided: getAllKeyValueMap, oneHot, getDistance, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllKeyValueMap\", function() { return getAllKeyValueMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"oneHot\", function() { return oneHot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDistance\", function() { return getDistance; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types */ \"./node_modules/@antv/algorithm/es/types.js\");\n/* harmony import */ var _vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n\n\n\n/**\n * 获取数据中所有的属性及其对应的值\n * @param dataList 数据集\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nvar getAllKeyValueMap = function getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys) {\n var keys = []; // 指定了参与计算的keys时,使用指定的keys\n\n if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) {\n keys = involvedKeys;\n } else {\n // 未指定抽取的keys时,提取数据中所有的key\n dataList.forEach(function (data) {\n keys = keys.concat(Object.keys(data));\n });\n keys = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniq\"])(keys);\n } // 获取所有值非空的key的value数组\n\n\n var allKeyValueMap = {};\n keys.forEach(function (key) {\n var value = [];\n dataList.forEach(function (data) {\n if (data[key] !== undefined && data[key] !== '') {\n value.push(data[key]);\n }\n });\n\n if (value.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) {\n allKeyValueMap[key] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniq\"])(value);\n }\n });\n return allKeyValueMap;\n};\n/**\n * one-hot编码:数据特征提取\n * @param dataList 数据集\n * @param involvedKeys 参与计算的的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nvar oneHot = function oneHot(dataList, involvedKeys, uninvolvedKeys) {\n // 获取数据中所有的属性及其对应的值\n var allKeyValueMap = getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys);\n var oneHotCode = []; // 对数据进行one-hot编码\n\n dataList.forEach(function (data, index) {\n var code = [];\n Object.keys(allKeyValueMap).forEach(function (key) {\n var keyValue = data[key];\n var allKeyValue = allKeyValueMap[key];\n var valueIndex = allKeyValue.findIndex(function (value) {\n return keyValue === value;\n });\n var subCode = [];\n\n for (var i = 0; i < allKeyValue.length; i++) {\n if (i === valueIndex) {\n subCode.push(1);\n } else {\n subCode.push(0);\n }\n }\n\n code = code.concat(subCode);\n });\n oneHotCode[index] = code;\n });\n return oneHotCode;\n};\n/**\n * getDistance:获取两个元素之间的距离\n * @param item\n * @param otherItem\n * @param distanceType 距离类型\n * @param graphData 图数据\n */\n\nvar getDistance = function getDistance(item, otherItem, distanceType, graphData) {\n if (distanceType === void 0) {\n distanceType = _types__WEBPACK_IMPORTED_MODULE_1__[\"DistanceType\"].EuclideanDistance;\n }\n\n var distance = 0;\n\n switch (distanceType) {\n case _types__WEBPACK_IMPORTED_MODULE_1__[\"DistanceType\"].EuclideanDistance:\n distance = new _vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](item).euclideanDistance(new _vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](otherItem));\n break;\n\n default:\n break;\n }\n\n return distance;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAllKeyValueMap: getAllKeyValueMap,\n oneHot: oneHot,\n getDistance: getDistance\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZy5qcz80YjdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ007QUFDVjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFdBQVcsdURBQUk7QUFDZixHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw0QkFBNEIsdURBQUk7QUFDaEM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLHFCQUFxQix3QkFBd0I7QUFDN0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxtQkFBbUIsbURBQVk7QUFDL0I7O0FBRUE7O0FBRUE7QUFDQSxTQUFTLG1EQUFZO0FBQ3JCLHFCQUFxQiwrQ0FBTSw2QkFBNkIsK0NBQU07QUFDOUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVuaXEgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IERpc3RhbmNlVHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBWZWN0b3IgZnJvbSAnLi92ZWN0b3InO1xuLyoqXG4gKiDojrflj5bmlbDmja7kuK3miYDmnInnmoTlsZ7mgKflj4rlhbblr7nlupTnmoTlgLxcbiAqIEBwYXJhbSBkYXRhTGlzdCDmlbDmja7pm4ZcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKi9cblxuZXhwb3J0IHZhciBnZXRBbGxLZXlWYWx1ZU1hcCA9IGZ1bmN0aW9uIGdldEFsbEtleVZhbHVlTWFwKGRhdGFMaXN0LCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKSB7XG4gIHZhciBrZXlzID0gW107IC8vIOaMh+WumuS6huWPguS4juiuoeeul+eahGtleXPml7bvvIzkvb/nlKjmjIflrprnmoRrZXlzXG5cbiAgaWYgKGludm9sdmVkS2V5cyA9PT0gbnVsbCB8fCBpbnZvbHZlZEtleXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludm9sdmVkS2V5cy5sZW5ndGgpIHtcbiAgICBrZXlzID0gaW52b2x2ZWRLZXlzO1xuICB9IGVsc2Uge1xuICAgIC8vIOacquaMh+WumuaKveWPlueahGtleXPml7bvvIzmj5Dlj5bmlbDmja7kuK3miYDmnInnmoRrZXlcbiAgICBkYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoT2JqZWN0LmtleXMoZGF0YSkpO1xuICAgIH0pO1xuICAgIGtleXMgPSB1bmlxKGtleXMpO1xuICB9IC8vIOiOt+WPluaJgOacieWAvOmdnuepuueahGtleeeahHZhbHVl5pWw57uEXG5cblxuICB2YXIgYWxsS2V5VmFsdWVNYXAgPSB7fTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBbXTtcbiAgICBkYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQgJiYgZGF0YVtrZXldICE9PSAnJykge1xuICAgICAgICB2YWx1ZS5wdXNoKGRhdGFba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodmFsdWUubGVuZ3RoICYmICEodW5pbnZvbHZlZEtleXMgPT09IG51bGwgfHwgdW5pbnZvbHZlZEtleXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVuaW52b2x2ZWRLZXlzLmluY2x1ZGVzKGtleSkpKSB7XG4gICAgICBhbGxLZXlWYWx1ZU1hcFtrZXldID0gdW5pcSh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGFsbEtleVZhbHVlTWFwO1xufTtcbi8qKlxuICogb25lLWhvdOe8luegge+8muaVsOaNrueJueW+geaPkOWPllxuICogQHBhcmFtIGRhdGFMaXN0IOaVsOaNrumbhlxuICogQHBhcmFtIGludm9sdmVkS2V5cyDlj4LkuI7orqHnrpfnmoTnmoRrZXnpm4blkIhcbiAqIEBwYXJhbSB1bmludm9sdmVkS2V5cyDkuI3lj4LkuI7orqHnrpfnmoRrZXnpm4blkIhcbiAqL1xuXG5leHBvcnQgdmFyIG9uZUhvdCA9IGZ1bmN0aW9uIG9uZUhvdChkYXRhTGlzdCwgaW52b2x2ZWRLZXlzLCB1bmludm9sdmVkS2V5cykge1xuICAvLyDojrflj5bmlbDmja7kuK3miYDmnInnmoTlsZ7mgKflj4rlhbblr7nlupTnmoTlgLxcbiAgdmFyIGFsbEtleVZhbHVlTWFwID0gZ2V0QWxsS2V5VmFsdWVNYXAoZGF0YUxpc3QsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMpO1xuICB2YXIgb25lSG90Q29kZSA9IFtdOyAvLyDlr7nmlbDmja7ov5vooYxvbmUtaG9057yW56CBXG5cbiAgZGF0YUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGF0YSwgaW5kZXgpIHtcbiAgICB2YXIgY29kZSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGFsbEtleVZhbHVlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBrZXlWYWx1ZSA9IGRhdGFba2V5XTtcbiAgICAgIHZhciBhbGxLZXlWYWx1ZSA9IGFsbEtleVZhbHVlTWFwW2tleV07XG4gICAgICB2YXIgdmFsdWVJbmRleCA9IGFsbEtleVZhbHVlLmZpbmRJbmRleChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGtleVZhbHVlID09PSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN1YkNvZGUgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxLZXlWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA9PT0gdmFsdWVJbmRleCkge1xuICAgICAgICAgIHN1YkNvZGUucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWJDb2RlLnB1c2goMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29kZSA9IGNvZGUuY29uY2F0KHN1YkNvZGUpO1xuICAgIH0pO1xuICAgIG9uZUhvdENvZGVbaW5kZXhdID0gY29kZTtcbiAgfSk7XG4gIHJldHVybiBvbmVIb3RDb2RlO1xufTtcbi8qKlxuICogZ2V0RGlzdGFuY2XvvJrojrflj5bkuKTkuKrlhYPntKDkuYvpl7TnmoTot53nprtcbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gb3RoZXJJdGVtXG4gKiBAcGFyYW0gZGlzdGFuY2VUeXBlIOi3neemu+exu+Wei1xuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqL1xuXG5leHBvcnQgdmFyIGdldERpc3RhbmNlID0gZnVuY3Rpb24gZ2V0RGlzdGFuY2UoaXRlbSwgb3RoZXJJdGVtLCBkaXN0YW5jZVR5cGUsIGdyYXBoRGF0YSkge1xuICBpZiAoZGlzdGFuY2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBkaXN0YW5jZVR5cGUgPSBEaXN0YW5jZVR5cGUuRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH1cblxuICB2YXIgZGlzdGFuY2UgPSAwO1xuXG4gIHN3aXRjaCAoZGlzdGFuY2VUeXBlKSB7XG4gICAgY2FzZSBEaXN0YW5jZVR5cGUuRXVjbGlkZWFuRGlzdGFuY2U6XG4gICAgICBkaXN0YW5jZSA9IG5ldyBWZWN0b3IoaXRlbSkuZXVjbGlkZWFuRGlzdGFuY2UobmV3IFZlY3RvcihvdGhlckl0ZW0pKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGRpc3RhbmNlO1xufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWxsS2V5VmFsdWVNYXA6IGdldEFsbEtleVZhbHVlTWFwLFxuICBvbmVIb3Q6IG9uZUhvdCxcbiAgZ2V0RGlzdGFuY2U6IGdldERpc3RhbmNlXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/utils/node-properties.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/algorithm/es/utils/node-properties.js ***!
\******************************************************************/
/*! exports provided: getAllSortProperties, getPropertyWeight, getAllProperties, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllSortProperties\", function() { return getAllSortProperties; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPropertyWeight\", function() { return getPropertyWeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllProperties\", function() { return getAllProperties; });\n/* harmony import */ var _constants_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/time */ \"./node_modules/@antv/algorithm/es/constants/time.js\");\n // 获取所有属性并排序\n\nvar getAllSortProperties = function getAllSortProperties(nodes, n) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (n === void 0) {\n n = 100;\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量或者embedding\n if (propertyKey === 'id' || !\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"secondReg\"]) && !\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"dateReg\"]) && isNaN(Number(node.properties[propertyKey]))) {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < n ? sortKeys : sortKeys.slice(0, n);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"secondReg\"]) || properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"dateReg\"])) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(nodes) {\n var propertyKeys = getAllSortProperties(nodes);\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 获取所有节点的属性集合\n\nvar getAllProperties = function getAllProperties(nodes, key) {\n if (key === void 0) {\n key = 'properties';\n }\n\n var allProperties = [];\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n allProperties.push(node[key]);\n });\n return allProperties;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAllSortProperties: getAllSortProperties,\n getPropertyWeight: getPropertyWeight,\n getAllProperties: getAllProperties\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL25vZGUtcHJvcGVydGllcy5qcz81YjlkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUQ7O0FBRWhEO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpRkFBaUYseURBQVMsb0RBQW9ELHVEQUFPO0FBQ3JKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLGdDQUFnQyx5REFBUywyQkFBMkIsdURBQU87QUFDM0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0s7QUFDUDtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy91dGlscy9ub2RlLXByb3BlcnRpZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZWNvbmRSZWcsIGRhdGVSZWcgfSBmcm9tICcuLi9jb25zdGFudHMvdGltZSc7IC8vIOiOt+WPluaJgOacieWxnuaAp+W5tuaOkuW6j1xuXG5leHBvcnQgdmFyIGdldEFsbFNvcnRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsU29ydFByb3BlcnRpZXMobm9kZXMsIG4pIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgaWYgKG4gPT09IHZvaWQgMCkge1xuICAgIG4gPSAxMDA7XG4gIH1cblxuICB2YXIgcHJvcGVydHlLZXlJbmZvID0ge307XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKG5vZGUucHJvcGVydGllcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHlLZXkpIHtcbiAgICAgIC8vIOebruWJjei/h+a7pOWPquS/neeVmeWPr+S7pei9rOaIkOaVsOWAvOWei+eahOaIluaXpeacn+Wei+eahCwgdG9kbzog57uf5LiA6L2s5oiQb25lLWhvdOeJueW+geWQkemHj+aIluiAhWVtYmVkZGluZ1xuICAgICAgaWYgKHByb3BlcnR5S2V5ID09PSAnaWQnIHx8ICFcIlwiLmNvbmNhdChub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKS5tYXRjaChzZWNvbmRSZWcpICYmICFcIlwiLmNvbmNhdChub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKS5tYXRjaChkYXRlUmVnKSAmJiBpc05hTihOdW1iZXIobm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkpKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0eUtleUluZm8uaGFzT3duUHJvcGVydHkocHJvcGVydHlLZXkpKSB7XG4gICAgICAgICAgZGVsZXRlIHByb3BlcnR5S2V5SW5mb1twcm9wZXJ0eUtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eUtleUluZm8uaGFzT3duUHJvcGVydHkocHJvcGVydHlLZXkpKSB7XG4gICAgICAgIHByb3BlcnR5S2V5SW5mb1twcm9wZXJ0eUtleV0gKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BlcnR5S2V5SW5mb1twcm9wZXJ0eUtleV0gPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTsgLy8g5Y+WdG9wNTDnmoTlsZ7mgKdcblxuICB2YXIgc29ydEtleXMgPSBPYmplY3Qua2V5cyhwcm9wZXJ0eUtleUluZm8pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gcHJvcGVydHlLZXlJbmZvW2JdIC0gcHJvcGVydHlLZXlJbmZvW2FdO1xuICB9KTtcbiAgcmV0dXJuIHNvcnRLZXlzLmxlbmd0aCA8IG4gPyBzb3J0S2V5cyA6IHNvcnRLZXlzLnNsaWNlKDAsIG4pO1xufTtcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKHNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKGRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxuZXhwb3J0IHZhciBnZXRQcm9wZXJ0eVdlaWdodCA9IGZ1bmN0aW9uIGdldFByb3BlcnR5V2VpZ2h0KG5vZGVzKSB7XG4gIHZhciBwcm9wZXJ0eUtleXMgPSBnZXRBbGxTb3J0UHJvcGVydGllcyhub2Rlcyk7XG4gIHZhciBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGFsbFByb3BlcnRpZXNXZWlnaHRbaV0gPSBwcm9jZXNzUHJvcGVydHkobm9kZXNbaV0ucHJvcGVydGllcywgcHJvcGVydHlLZXlzKTtcbiAgfVxuXG4gIHJldHVybiBhbGxQcm9wZXJ0aWVzV2VpZ2h0O1xufTsgLy8g6I635Y+W5omA5pyJ6IqC54K555qE5bGe5oCn6ZuG5ZCIXG5cbmV4cG9ydCB2YXIgZ2V0QWxsUHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldEFsbFByb3BlcnRpZXMobm9kZXMsIGtleSkge1xuICBpZiAoa2V5ID09PSB2b2lkIDApIHtcbiAgICBrZXkgPSAncHJvcGVydGllcyc7XG4gIH1cblxuICB2YXIgYWxsUHJvcGVydGllcyA9IFtdO1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhbGxQcm9wZXJ0aWVzLnB1c2gobm9kZVtrZXldKTtcbiAgfSk7XG4gIHJldHVybiBhbGxQcm9wZXJ0aWVzO1xufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWxsU29ydFByb3BlcnRpZXM6IGdldEFsbFNvcnRQcm9wZXJ0aWVzLFxuICBnZXRQcm9wZXJ0eVdlaWdodDogZ2V0UHJvcGVydHlXZWlnaHQsXG4gIGdldEFsbFByb3BlcnRpZXM6IGdldEFsbFByb3BlcnRpZXNcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/utils/node-properties.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/es/utils/vector.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/algorithm/es/utils/vector.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/**\n * 向量运算\n */\n\n\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.getArr = function () {\n return this.arr || [];\n };\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] + otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] - otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n if (length !== 0) {\n for (var index in this.arr) {\n res[index] = this.arr[index] / length;\n }\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = -this.arr[index];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return res;\n }\n }; // 欧式距离\n\n\n Vector.prototype.euclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return Math.sqrt(res);\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var index in this.arr) {\n res[index] = (this.arr[index] - min) / (max - min);\n }\n\n return new Vector(res);\n }; // 2范数 or 模长\n\n\n Vector.prototype.norm2 = function () {\n var _a;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return 0;\n }\n\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index], 2);\n }\n\n return Math.sqrt(res);\n }; // 两个向量的点积\n\n\n Vector.prototype.dot = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += this.arr[index] * otherVector.arr[index];\n }\n\n return res;\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 两个向量比较\n\n\n Vector.prototype.equal = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return false;\n }\n\n for (var index in this.arr) {\n if (this.arr[index] !== otherArr[index]) {\n return false;\n }\n }\n\n return true;\n };\n\n return Vector;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL3ZlY3Rvci5qcz9iMTE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFLO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxxRUFBTSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvdXRpbHMvdmVjdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlkJHph4/ov5DnrpdcbiAqL1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcblxudmFyIFZlY3RvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZlY3RvcihhcnIpIHtcbiAgICB0aGlzLmFyciA9IGFycjtcbiAgfVxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZ2V0QXJyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmFyciB8fCBbXTtcbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3Iob3RoZXJBcnIpO1xuICAgIH1cblxuICAgIGlmICghKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLmFycik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gW107XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1tpbmRleF0gPSB0aGlzLmFycltpbmRleF0gKyBvdGhlckFycltpbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKG90aGVyQXJyKTtcbiAgICB9XG5cbiAgICBpZiAoIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy5hcnIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXNbaW5kZXhdID0gdGhpcy5hcnJbaW5kZXhdIC0gb3RoZXJBcnJbaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihyZXMpO1xuICAgIH1cbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLmF2ZyA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcbiAgICB2YXIgcmVzID0gW107XG5cbiAgICBpZiAobGVuZ3RoICE9PSAwKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXNbaW5kZXhdID0gdGhpcy5hcnJbaW5kZXhdIC8gbGVuZ3RoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1tpbmRleF0gPSAtdGhpcy5hcnJbaW5kZXhdO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07IC8vIOW5s+aWueasp+W8j+i3neemu1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAhKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJbaW5kZXhdIC0gb3RoZXJWZWN0b3IuYXJyW2luZGV4XSwgMik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICB9OyAvLyDmrKflvI/ot53nprtcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZXVjbGlkZWFuRGlzdGFuY2UgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gMDtcblxuICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzICs9IE1hdGgucG93KHRoaXMuYXJyW2luZGV4XSAtIG90aGVyVmVjdG9yLmFycltpbmRleF0sIDIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gTWF0aC5zcXJ0KHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSB0d28gdmVjdG9ycyBhcmUgdW5lcXVhbCBpbiBsZW5ndGguJyk7XG4gICAgfVxuICB9OyAvLyDlvZLkuIDljJblpITnkIZcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgY2xvbmVBcnIgPSBjbG9uZSh0aGlzLmFycik7XG4gICAgY2xvbmVBcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIHZhciBtYXggPSBjbG9uZUFycltjbG9uZUFyci5sZW5ndGggLSAxXTtcbiAgICB2YXIgbWluID0gY2xvbmVBcnJbMF07XG5cbiAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgcmVzW2luZGV4XSA9ICh0aGlzLmFycltpbmRleF0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTsgLy8gMuiMg+aVsCBvciDmqKHplb9cblxuXG4gIFZlY3Rvci5wcm90b3R5cGUubm9ybTIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gMDtcblxuICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJbaW5kZXhdLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlcyk7XG4gIH07IC8vIOS4pOS4quWQkemHj+eahOeCueenr1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5kb3QgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gMDtcblxuICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzICs9IHRoaXMuYXJyW2luZGV4XSAqIG90aGVyVmVjdG9yLmFycltpbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSB0d28gdmVjdG9ycyBhcmUgdW5lcXVhbCBpbiBsZW5ndGguJyk7XG4gICAgfVxuICB9OyAvLyDkuKTkuKrlkJHph4/mr5TovoNcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSAhPT0gKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgIGlmICh0aGlzLmFycltpbmRleF0gIT09IG90aGVyQXJyW2luZGV4XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFZlY3Rvcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVmVjdG9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/utils/vector.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/adjacent-matrix.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/adjacent-matrix.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\nvar _default = adjMatrix;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9hZGphY2VudC1tYXRyaXguanM/MTZjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvYWRqYWNlbnQtbWF0cml4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBhZGpNYXRyaXggPSBmdW5jdGlvbiBhZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBlZGdlcyA9IGdyYXBoRGF0YS5lZGdlcztcbiAgdmFyIG1hdHJpeCA9IFtdOyAvLyBtYXAgbm9kZSB3aXRoIGluZGV4IGluIGRhdGEubm9kZXNcblxuICB2YXIgbm9kZU1hcCA9IHt9O1xuXG4gIGlmICghbm9kZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIG5vZGVzIGRhdGEhXCIpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBpZiAoIXNJbmRleCAmJiBzSW5kZXggIT09IDAgfHwgIXRJbmRleCAmJiB0SW5kZXggIT09IDApIHJldHVybjtcbiAgICAgIG1hdHJpeFtzSW5kZXhdW3RJbmRleF0gPSAxO1xuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIG1hdHJpeFt0SW5kZXhdW3NJbmRleF0gPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1hdHJpeDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGFkak1hdHJpeDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/adjacent-matrix.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/asyncIndex.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/asyncIndex.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDIAsync\", {\n enumerable: true,\n get: function get() {\n return _index.GADDIAsync;\n }\n});\nObject.defineProperty(exports, \"connectedComponentAsync\", {\n enumerable: true,\n get: function get() {\n return _index.connectedComponentAsync;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"detectAllCyclesAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllCyclesAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllDirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllDirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllUndirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllUndirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectCycleAsync;\n }\n});\nexports.detectDirectedCycleAsync = void 0;\nObject.defineProperty(exports, \"dijkstraAsync\", {\n enumerable: true,\n get: function get() {\n return _index.dijkstraAsync;\n }\n});\nObject.defineProperty(exports, \"findAllPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findAllPathAsync;\n }\n});\nObject.defineProperty(exports, \"findShortestPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findShortestPathAsync;\n }\n});\nObject.defineProperty(exports, \"floydWarshallAsync\", {\n enumerable: true,\n get: function get() {\n return _index.floydWarshallAsync;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrixAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getAdjMatrixAsync;\n }\n});\nObject.defineProperty(exports, \"getDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getInDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getInDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getNeighborsAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getNeighborsAsync;\n }\n});\nObject.defineProperty(exports, \"getOutDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getOutDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"labelPropagationAsync\", {\n enumerable: true,\n get: function get() {\n return _index.labelPropagationAsync;\n }\n});\nObject.defineProperty(exports, \"louvainAsync\", {\n enumerable: true,\n get: function get() {\n return _index.louvainAsync;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.minimumSpanningTreeAsync;\n }\n});\nObject.defineProperty(exports, \"pageRankAsync\", {\n enumerable: true,\n get: function get() {\n return _index.pageRankAsync;\n }\n});\n\nvar _index = __webpack_require__(/*! ./workers/index */ \"./node_modules/@antv/algorithm/lib/workers/index.js\");\n\nvar detectDirectedCycleAsync = _index.detectCycleAsync;\nexports.detectDirectedCycleAsync = detectDirectedCycleAsync;\nvar _default = {\n getAdjMatrixAsync: _index.getAdjMatrixAsync,\n connectedComponentAsync: _index.connectedComponentAsync,\n getDegreeAsync: _index.getDegreeAsync,\n getInDegreeAsync: _index.getInDegreeAsync,\n getOutDegreeAsync: _index.getOutDegreeAsync,\n detectCycleAsync: _index.detectCycleAsync,\n detectDirectedCycleAsync: detectDirectedCycleAsync,\n detectAllCyclesAsync: _index.detectAllCyclesAsync,\n detectAllDirectedCycleAsync: _index.detectAllDirectedCycleAsync,\n detectAllUndirectedCycleAsync: _index.detectAllUndirectedCycleAsync,\n dijkstraAsync: _index.dijkstraAsync,\n findAllPathAsync: _index.findAllPathAsync,\n findShortestPathAsync: _index.findShortestPathAsync,\n floydWarshallAsync: _index.floydWarshallAsync,\n labelPropagationAsync: _index.labelPropagationAsync,\n louvainAsync: _index.louvainAsync,\n minimumSpanningTreeAsync: _index.minimumSpanningTreeAsync,\n pageRankAsync: _index.pageRankAsync,\n getNeighborsAsync: _index.getNeighborsAsync,\n GADDIAsync: _index.GADDIAsync\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzPzE2ODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsYUFBYSxtQkFBTyxDQUFDLDRFQUFpQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJHQURESUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5HQURESUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbm5lY3RlZENvbXBvbmVudEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYztcbiAgfVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZXRlY3RBbGxDeWNsZXNBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZGV0ZWN0QWxsQ3ljbGVzQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuZXhwb3J0cy5kZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmMgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkaWprc3RyYUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kaWprc3RyYUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmZpbmRBbGxQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmluZFNob3J0ZXN0UGF0aEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5maW5kU2hvcnRlc3RQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmxveWRXYXJzaGFsbEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5mbG95ZFdhcnNoYWxsQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0QWRqTWF0cml4QXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmdldEFkak1hdHJpeEFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldERlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXREZWdyZWVBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXRJbkRlZ3JlZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc0FzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXROZWlnaGJvcnNBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRPdXREZWdyZWVBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibGFiZWxQcm9wYWdhdGlvbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibG91dmFpbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sb3V2YWluQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5taW5pbXVtU3Bhbm5pbmdUcmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXgucGFnZVJhbmtBc3luYztcbiAgfVxufSk7XG5cbnZhciBfaW5kZXggPSByZXF1aXJlKFwiLi93b3JrZXJzL2luZGV4XCIpO1xuXG52YXIgZGV0ZWN0RGlyZWN0ZWRDeWNsZUFzeW5jID0gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG5leHBvcnRzLmRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYztcbnZhciBfZGVmYXVsdCA9IHtcbiAgZ2V0QWRqTWF0cml4QXN5bmM6IF9pbmRleC5nZXRBZGpNYXRyaXhBc3luYyxcbiAgY29ubmVjdGVkQ29tcG9uZW50QXN5bmM6IF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYyxcbiAgZ2V0RGVncmVlQXN5bmM6IF9pbmRleC5nZXREZWdyZWVBc3luYyxcbiAgZ2V0SW5EZWdyZWVBc3luYzogX2luZGV4LmdldEluRGVncmVlQXN5bmMsXG4gIGdldE91dERlZ3JlZUFzeW5jOiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmMsXG4gIGRldGVjdEN5Y2xlQXN5bmM6IF9pbmRleC5kZXRlY3RDeWNsZUFzeW5jLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmM6IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyxcbiAgZGV0ZWN0QWxsQ3ljbGVzQXN5bmM6IF9pbmRleC5kZXRlY3RBbGxDeWNsZXNBc3luYyxcbiAgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jOiBfaW5kZXguZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYzogX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkaWprc3RyYUFzeW5jOiBfaW5kZXguZGlqa3N0cmFBc3luYyxcbiAgZmluZEFsbFBhdGhBc3luYzogX2luZGV4LmZpbmRBbGxQYXRoQXN5bmMsXG4gIGZpbmRTaG9ydGVzdFBhdGhBc3luYzogX2luZGV4LmZpbmRTaG9ydGVzdFBhdGhBc3luYyxcbiAgZmxveWRXYXJzaGFsbEFzeW5jOiBfaW5kZXguZmxveWRXYXJzaGFsbEFzeW5jLFxuICBsYWJlbFByb3BhZ2F0aW9uQXN5bmM6IF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmMsXG4gIGxvdXZhaW5Bc3luYzogX2luZGV4LmxvdXZhaW5Bc3luYyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jOiBfaW5kZXgubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jLFxuICBwYWdlUmFua0FzeW5jOiBfaW5kZXgucGFnZVJhbmtBc3luYyxcbiAgZ2V0TmVpZ2hib3JzQXN5bmM6IF9pbmRleC5nZXROZWlnaGJvcnNBc3luYyxcbiAgR0FERElBc3luYzogX2luZGV4LkdBRERJQXN5bmNcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/asyncIndex.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/bfs.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/bfs.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _queue = _interopRequireDefault(__webpack_require__(/*! ./structs/queue */ \"./node_modules/@antv/algorithm/lib/structs/queue.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _queue.default();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n (0, _util.getNeighbors)(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\nvar _default = breadthFirstSearch;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9iZnMuanM/Mzg3MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLG9DQUFvQyxtQkFBTyxDQUFDLDRFQUFpQjs7QUFFN0QsWUFBWSxtQkFBTyxDQUFDLDBEQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvYmZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcXVldWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N0cnVjdHMvcXVldWVcIikpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuZnVuY3Rpb24gaW5pdENhbGxiYWNrcyhjYWxsYmFja3MpIHtcbiAgaWYgKGNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgY2FsbGJhY2tzID0ge307XG4gIH1cblxuICB2YXIgaW5pdGlhdGVkQ2FsbGJhY2sgPSBjYWxsYmFja3M7XG5cbiAgdmFyIHN0dWJDYWxsYmFjayA9IGZ1bmN0aW9uIHN0dWJDYWxsYmFjaygpIHt9O1xuXG4gIHZhciBhbGxvd1RyYXZlcnNhbENhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIG5leHQgPSBfYS5uZXh0O1xuICAgICAgdmFyIGlkID0gbmV4dDtcblxuICAgICAgaWYgKCFzZWVuW2lkXSkge1xuICAgICAgICBzZWVuW2lkXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfSgpO1xuXG4gIGluaXRpYXRlZENhbGxiYWNrLmFsbG93VHJhdmVyc2FsID0gY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsIHx8IGFsbG93VHJhdmVyc2FsQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmVudGVyID0gY2FsbGJhY2tzLmVudGVyIHx8IHN0dWJDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2subGVhdmUgPSBjYWxsYmFja3MubGVhdmUgfHwgc3R1YkNhbGxiYWNrO1xuICByZXR1cm4gaW5pdGlhdGVkQ2FsbGJhY2s7XG59XG4vKipcbiAqIOW5v+W6puS8mOWFiOmBjeWOhuWbvlxuICogQHBhcmFtIGdyYXBoIEdyYXBoIOWbvuWunuS+i1xuICogQHBhcmFtIHN0YXJ0Tm9kZSDlvIDlp4vpgY3ljobnmoToioLngrlcbiAqIEBwYXJhbSBvcmlnaW5hbENhbGxiYWNrcyDlm57osINcbiAqL1xuXG5cbnZhciBicmVhZHRoRmlyc3RTZWFyY2ggPSBmdW5jdGlvbiBicmVhZHRoRmlyc3RTZWFyY2goZ3JhcGhEYXRhLCBzdGFydE5vZGVJZCwgb3JpZ2luYWxDYWxsYmFja3MsIGRpcmVjdGVkKSB7XG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbGxiYWNrcyA9IGluaXRDYWxsYmFja3Mob3JpZ2luYWxDYWxsYmFja3MpO1xuICB2YXIgbm9kZVF1ZXVlID0gbmV3IF9xdWV1ZS5kZWZhdWx0KCk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7IC8vIOWIneWni+WMlumYn+WIl+WFg+e0oFxuXG4gIG5vZGVRdWV1ZS5lbnF1ZXVlKHN0YXJ0Tm9kZUlkKTtcbiAgdmFyIHByZXZpb3VzTm9kZSA9ICcnO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSBub2RlUXVldWUuZGVxdWV1ZSgpO1xuICAgIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgICBjdXJyZW50OiBjdXJyZW50Tm9kZSxcbiAgICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgICB9KTsgLy8g5bCG5omA5pyJ6YK75bGF5re75Yqg5Yiw6Zif5YiX5Lit5Lul5L6/6YGN5Y6GXG5cbiAgICAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxudmFyIF9kZWZhdWx0ID0gYnJlYWR0aEZpcnN0U2VhcmNoO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/bfs.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/connected-component.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/connected-component.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getConnectedComponents;\nexports.detectStrongConnectComponents = exports.detectConnectedComponents = void 0;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = (0, _util.getNeighbors)(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\n\nexports.detectConnectedComponents = detectConnectedComponents;\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = (0, _util.getNeighbors)(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\n\nexports.detectStrongConnectComponents = detectStrongConnectComponents;\n\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9jb25uZWN0ZWQtY29tcG9uZW50LmpzPzg2MmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLHFCQUFxQjtBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cztcbmV4cG9ydHMuZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMgPSBleHBvcnRzLmRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xudmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGUuaWQsIGVkZ2VzKTtcblxuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghdmlzaXRlZFtuZWlnaGJvcl0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5pZCA9PT0gbmVpZ2hib3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIF9sb29wXzEoaSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuXG4gICAgaWYgKCF2aXNpdGVkW25vZGUuaWRdKSB7XG4gICAgICAvLyDlr7nkuo7ml6DlkJHlm77ov5vooYxkZnPpgY3ljobvvIzmr4/kuIDmrKHosIPnlKjlkI7pg73lvpfliLDkuIDkuKrov57pgJrliIbph49cbiAgICAgIGdldENvbXBvbmVudChub2RlKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSBbXTtcblxuICAgICAgd2hpbGUgKG5vZGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbXBvbmVudC5wdXNoKG5vZGVTdGFjay5wb3AoKSk7XG4gICAgICB9XG5cbiAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbi8qKlxuICogVGFyamFuJ3MgQWxnb3JpdGhtIOWkjeadguW6piAgTyh8VnwrfEV8KVxuICogRm9yIGRpcmVjdGVkIGdyYXBoIG9ubHlcbiAqIGEgZGlyZWN0ZWQgZ3JhcGggaXMgc2FpZCB0byBiZSBzdHJvbmdseSBjb25uZWN0ZWQgaWYgXCJldmVyeSB2ZXJ0ZXggaXMgcmVhY2hhYmxlIGZyb20gZXZlcnkgb3RoZXIgdmVydGV4XCIuXG4gKiByZWZlcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYXJqYW4lMjdzX3N0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcmV0dXJuIGEgbGlzdCBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1xuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzID0gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cztcblxudmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykobm9kZS5pZCwgZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBub2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIHRhcmdldE5vZGVJRCA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgaWYgKCFpbmRpY2VzW3RhcmdldE5vZGVJRF0gJiYgaW5kaWNlc1t0YXJnZXROb2RlSURdICE9PSAwKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IHRhcmdldE5vZGVJRDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRhcmdldE5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGdldENvbXBvbmVudCh0YXJnZXROb2RlWzBdKTtcbiAgICAgICAgfSAvLyB0cmVlIGVkZ2VcblxuXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBsb3dMaW5rW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfSBlbHNlIGlmIChpblN0YWNrW3RhcmdldE5vZGVJRF0pIHtcbiAgICAgICAgLy8gYmFjayBlZGdlLCB0YXJnZXQgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBTQ0NcbiAgICAgICAgbG93TGlua1tub2RlLmlkXSA9IE1hdGgubWluKGxvd0xpbmtbbm9kZS5pZF0sIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH0gLy8gSWYgbm9kZSBpcyBhIHJvb3Qgbm9kZSwgZ2VuZXJhdGUgYW4gU0NDXG5cblxuICAgIGlmIChsb3dMaW5rW25vZGUuaWRdID09PSBpbmRpY2VzW25vZGUuaWRdKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdG1wTm9kZSA9IG5vZGVTdGFjay5wb3AoKTtcbiAgICAgICAgaW5TdGFja1t0bXBOb2RlLmlkXSA9IGZhbHNlO1xuICAgICAgICBjb21wb25lbnQucHVzaCh0bXBOb2RlKTtcbiAgICAgICAgaWYgKHRtcE5vZGUgPT09IG5vZGUpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWxsQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIF9pID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfaSA8IG5vZGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc18xW19pXTtcblxuICAgIGlmICghaW5kaWNlc1tub2RlLmlkXSAmJiBpbmRpY2VzW25vZGUuaWRdICE9PSAwKSB7XG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbENvbXBvbmVudHM7XG59O1xuXG5leHBvcnRzLmRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/connected-component.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/constants/time.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/constants/time.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.secondReg = exports.dateReg = void 0;\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nexports.secondReg = secondReg;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\nexports.dateReg = dateReg;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9jb25zdGFudHMvdGltZS5qcz84NjljIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxzQkFBc0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJO0FBQ3BEO0FBQ0Esb0JBQW9CLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSTtBQUNoRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL2NvbnN0YW50cy90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnNlY29uZFJlZyA9IGV4cG9ydHMuZGF0ZVJlZyA9IHZvaWQgMDtcbnZhciBzZWNvbmRSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkkLztcbmV4cG9ydHMuc2Vjb25kUmVnID0gc2Vjb25kUmVnO1xudmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLztcbmV4cG9ydHMuZGF0ZVJlZyA9IGRhdGVSZWc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/constants/time.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/degree.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/degree.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOutDegree = exports.getInDegree = exports.default = void 0;\n\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\nvar _default = degree;\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexports.default = _default;\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegree = getInDegree;\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};\n\nexports.getOutDegree = getOutDegree;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZWdyZWUuanM/ZDljNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvZGVncmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldE91dERlZ3JlZSA9IGV4cG9ydHMuZ2V0SW5EZWdyZWUgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG52YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZSA9IGdldEluRGVncmVlO1xuXG52YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcblxuZXhwb3J0cy5nZXRPdXREZWdyZWUgPSBnZXRPdXREZWdyZWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/degree.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/detect-cycle.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/detect-cycle.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.detectAllUndirectedCycle = exports.detectAllDirectedCycle = exports.detectAllCycles = exports.default = void 0;\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ./dfs */ \"./node_modules/@antv/algorithm/lib/dfs.js\"));\n\nvar _connectedComponent = _interopRequireWildcard(__webpack_require__(/*! ./connected-component */ \"./node_modules/@antv/algorithm/lib/connected-component.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n (0, _dfs.default)(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = (0, _connectedComponent.default)(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = (0, _util.getNeighbors)(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\n\nexports.detectAllUndirectedCycle = detectAllUndirectedCycle;\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = (0, _util.getNeighbors)(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = (0, _connectedComponent.detectStrongConnectComponents)({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\n\nexports.detectAllDirectedCycle = detectAllDirectedCycle;\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n\nexports.detectAllCycles = detectAllCycles;\nvar _default = detectDirectedCycle;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanM/NTE0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYix1QkFBdUIsMkJBQTJCLDJFQUEyRSxrQ0FBa0MsbUJBQW1CLEdBQUcsRUFBRSxPQUFPLGtDQUFrQyw4SEFBOEgsR0FBRyxFQUFFLHFCQUFxQjs7QUFFeFg7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxrQ0FBa0MsbUJBQU8sQ0FBQyx3REFBTzs7QUFFakQsa0RBQWtELG1CQUFPLENBQUMsd0ZBQXVCOztBQUVqRixZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLGdEQUFnRCxnREFBZ0QsdUNBQXVDLHNDQUFzQyxvRkFBb0YsMkRBQTJELEVBQUUsZUFBZTs7QUFFN1Usb0RBQW9ELDZDQUE2QyxZQUFZLEVBQUUsOEVBQThFLFNBQVMsZ0JBQWdCLEVBQUUsbURBQW1ELCtCQUErQix1QkFBdUIsRUFBRSxpQkFBaUIsc0ZBQXNGLHVCQUF1QiwyRUFBMkUscUZBQXFGLHNDQUFzQywwQ0FBMEMsRUFBRSxPQUFPLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxzQkFBc0IsYUFBYSx3QkFBd0IsRUFBRSxlQUFlOztBQUVweUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qix3QkFBd0I7O0FBRXhCLHVCQUF1Qjs7QUFFdkIsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0U7O0FBRXRFLDZDQUE2QywwQkFBMEI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQix1QkFBdUIsOEJBQThCOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBOztBQUVBLCtCQUErQiwwQkFBMEI7QUFDekQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUUsZ0JBQWdCO0FBQ3pCLDhCQUE4Qjs7QUFFOUI7QUFDQSxpQ0FBaUM7QUFDakMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Rmc1wiKSk7XG5cbnZhciBfY29ubmVjdGVkQ29tcG9uZW50ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vY29ubmVjdGVkLWNvbXBvbmVudFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRldGVjdERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3REaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSkge1xuICB2YXIgY3ljbGUgPSBudWxsO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hO1xuICB2YXIgZGZzUGFyZW50TWFwID0ge307IC8vIOaJgOacieayoeacieiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB1bnZpc2l0ZWRTZXQgPSB7fTsgLy8g5q2j5Zyo6KKr6K6/6Zeu55qE6IqC54K56ZuG5ZCIXG5cbiAgdmFyIHZpc2l0aW5nU2V0ID0ge307IC8vIOaJgOacieW3sue7j+iiq+iuv+mXrui/h+eahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGVkU2V0ID0ge307IC8vIOWIneWni+WMliB1bnZpc2l0ZWRTZXRcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdW52aXNpdGVkU2V0W25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjYWxsYmFja3MgPSB7XG4gICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKF9hKSB7XG4gICAgICB2YXIgY3VycmVudE5vZGUgPSBfYS5jdXJyZW50LFxuICAgICAgICAgIHByZXZpb3VzTm9kZSA9IF9hLnByZXZpb3VzO1xuXG4gICAgICBpZiAodmlzaXRpbmdTZXRbY3VycmVudE5vZGVdKSB7XG4gICAgICAgIC8vIOWmguaenOW9k+WJjeiKgueCueato+WcqOiuv+mXruS4re+8jOWImeivtOaYjuajgOa1i+WIsOeOr+i3r+S6hlxuICAgICAgICBjeWNsZSA9IHt9O1xuICAgICAgICB2YXIgY3VycmVudEN5Y2xlTm9kZSA9IGN1cnJlbnROb2RlO1xuICAgICAgICB2YXIgcHJldmlvdXNDeWNsZU5vZGUgPSBwcmV2aW91c05vZGU7XG5cbiAgICAgICAgd2hpbGUgKHByZXZpb3VzQ3ljbGVOb2RlICE9PSBjdXJyZW50Tm9kZSkge1xuICAgICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICAgICAgY3VycmVudEN5Y2xlTm9kZSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIHByZXZpb3VzQ3ljbGVOb2RlID0gZGZzUGFyZW50TWFwW3ByZXZpb3VzQ3ljbGVOb2RlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDlpoLmnpzkuI3lrZjlnKjmraPlnKjorr/pl67pm4blkIjkuK3vvIzliJnlsIblhbbmlL7lhaXmraPlnKjorr/pl67pm4blkIjvvIzlubbku47mnKrorr/pl67pm4blkIjkuK3liKDpmaRcbiAgICAgICAgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICAgIGRlbGV0ZSB1bnZpc2l0ZWRTZXRbY3VycmVudE5vZGVdOyAvLyDmm7TmlrAgRFNGIHBhcmVudHMg5YiX6KGoXG5cbiAgICAgICAgZGZzUGFyZW50TWFwW2N1cnJlbnROb2RlXSA9IHByZXZpb3VzTm9kZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudDsgLy8g5aaC5p6c5omA5pyJ55qE6IqC54K555qE5a2Q6IqC54K56YO95bey57uP6K6/6Zeu6L+H5LqG77yM5YiZ5LuO5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit5Yig6Zmk5o6J77yM5bm25bCG5YW256e75YWl5Yiw5bey6K6/6Zeu6ZuG5ZCI5Lit77yMXG4gICAgICAvLyDlkIzml7bkuZ/mhI/lkbPnnYDlvZPliY3oioLngrnnmoTmiYDmnInpgrvlsYXoioLngrnpg73ooqvorr/pl67ov4fkuoZcblxuICAgICAgdmlzaXRlZFNldFtjdXJyZW50Tm9kZV0gPSBjdXJyZW50Tm9kZTtcbiAgICAgIGRlbGV0ZSB2aXNpdGluZ1NldFtjdXJyZW50Tm9kZV07XG4gICAgfSxcbiAgICBhbGxvd1RyYXZlcnNhbDogZnVuY3Rpb24gYWxsb3dUcmF2ZXJzYWwoX2EpIHtcbiAgICAgIHZhciBuZXh0Tm9kZSA9IF9hLm5leHQ7IC8vIOWmguaenOajgOa1i+WIsOeOr+i3r+WImemcgOimgee7iOatouaJgOaciei/m+S4gOatpeeahOmBjeWOhu+8jOWQpuWImeS8muWvvOiHtOaXoOmZkOW+queOr+mBjeWOhlxuXG4gICAgICBpZiAoY3ljbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyDku4XlhYHorrjpgY3ljobmsqHmnInorr/pl67nmoToioLngrnvvIx2aXNpdGVkU2V0IOS4reeahOmDveW3sue7j+iuv+mXrui/h+S6hlxuXG5cbiAgICAgIHJldHVybiAhdmlzaXRlZFNldFtuZXh0Tm9kZV07XG4gICAgfVxuICB9OyAvLyDlvIDlp4vpgY3ljoboioLngrlcblxuICB3aGlsZSAoT2JqZWN0LmtleXModW52aXNpdGVkU2V0KS5sZW5ndGgpIHtcbiAgICAvLyDku47nrKzkuIDkuKroioLngrnlvIDlp4vov5vooYwgREZTIOmBjeWOhlxuICAgIHZhciBmaXJzZXRVblZpc2l0ZWRLZXkgPSBPYmplY3Qua2V5cyh1bnZpc2l0ZWRTZXQpWzBdO1xuICAgICgwLCBfZGZzLmRlZmF1bHQpKGdyYXBoRGF0YSwgZmlyc2V0VW5WaXNpdGVkS2V5LCBjYWxsYmFja3MpO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xlO1xufTtcbi8qKlxuICog5qOA5rWL5peg5ZCR5Zu+5Lit55qE5omA5pyJQmFzZSBjeWNsZXNcbiAqIHJlZmVyOiBodHRwczovL3d3dy5jb2RlcHJvamVjdC5jb20vQXJ0aWNsZXMvMTE1ODIzMi9FbnVtZXJhdGluZy1BbGwtQ3ljbGVzLWluLWFuLVVuZGlyZWN0ZWQtR3JhcGhcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG5vZGVJZHMg6IqC54K5IElEIOeahOaVsOe7hFxuICogQHBhcmFtIGluY2x1ZGUg5YyF5ZCr5oiW5o6S6Zmk5oyH5a6a55qE6IqC54K5XG4gKiBAcmV0dXJuIFt7W2tleTogc3RyaW5nXTogSU5vZGV9XSDov5Tlm57kuIDnu4RiYXNlIGN5Y2xlc1xuICovXG5cblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gKDAsIF9jb25uZWN0ZWRDb21wb25lbnQuZGVmYXVsdCkoZ3JhcGhEYXRhLCBmYWxzZSk7IC8vIGxvb3AgdGhyb3VnaCBhbGwgY29ubmVjdGVkIGNvbXBvbmVudHNcblxuICBmb3IgKHZhciBfaSA9IDAsIGNvbXBvbmVudHNfMSA9IGNvbXBvbmVudHM7IF9pIDwgY29tcG9uZW50c18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzXzFbX2ldO1xuICAgIGlmICghY29tcG9uZW50Lmxlbmd0aCkgY29udGludWU7XG4gICAgdmFyIHJvb3QgPSBjb21wb25lbnRbMF07XG4gICAgdmFyIHJvb3RJZCA9IHJvb3QuaWQ7XG4gICAgdmFyIHN0YWNrID0gW3Jvb3RdO1xuICAgIHZhciBwYXJlbnRfMSA9IChfYSA9IHt9LCBfYVtyb290SWRdID0gcm9vdCwgX2EpO1xuICAgIHZhciB1c2VkID0gKF9iID0ge30sIF9iW3Jvb3RJZF0gPSBuZXcgU2V0KCksIF9iKTsgLy8gd2FsayBhIHNwYW5uaW5nIHRyZWUgdG8gZmluZCBjeWNsZXNcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgY3VyTm9kZSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIGN1ck5vZGVJZCA9IGN1ck5vZGUuaWQ7XG4gICAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5cbmV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlID0gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUoZ3JhcGhEYXRhLCBub2RlSWRzLCBpbmNsdWRlKSB7XG4gIGlmIChpbmNsdWRlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBwYXRoID0gW107IC8vIHN0YWNrIG9mIG5vZGVzIGluIGN1cnJlbnQgcGF0aFxuXG4gIHZhciBibG9ja2VkID0gbmV3IFNldCgpO1xuICB2YXIgQiA9IFtdOyAvLyByZW1lbWJlciBwb3J0aW9ucyBvZiB0aGUgZ3JhcGggdGhhdCB5aWVsZCBubyBlbGVtZW50YXJ5IGNpcmN1aXRcblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBpZHgyTm9kZSA9IHt9O1xuICB2YXIgbm9kZTJJZHggPSB7fTsgLy8g6L6F5Yqp5Ye95pWw77yaIHVuYmxvY2sgYWxsIGJsb2NrZWQgbm9kZXNcblxuICB2YXIgdW5ibG9jayA9IGZ1bmN0aW9uIHVuYmxvY2sodGhpc05vZGUpIHtcbiAgICB2YXIgc3RhY2sgPSBbdGhpc05vZGVdO1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBub2RlID0gc3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChibG9ja2VkLmhhcyhub2RlKSkge1xuICAgICAgICBibG9ja2VkLmRlbGV0ZShub2RlKTtcbiAgICAgICAgQltub2RlLmlkXS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgc3RhY2sucHVzaChuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJbbm9kZS5pZF0uY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGNpcmN1aXQgPSBmdW5jdGlvbiBjaXJjdWl0KG5vZGUsIHN0YXJ0LCBhZGpMaXN0KSB7XG4gICAgdmFyIGNsb3NlZCA9IGZhbHNlOyAvLyB3aGV0aGVyIGEgcGF0aCBpcyBjbG9zZWRcblxuICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSByZXR1cm4gY2xvc2VkO1xuICAgIHBhdGgucHVzaChub2RlKTtcbiAgICBibG9ja2VkLmFkZChub2RlKTtcbiAgICB2YXIgbmVpZ2hib3JzID0gYWRqTGlzdFtub2RlLmlkXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBpZHgyTm9kZVtuZWlnaGJvcnNbaV1dO1xuXG4gICAgICBpZiAobmVpZ2hib3IgPT09IHN0YXJ0KSB7XG4gICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBwYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbaW5kZXggLSAxXS5pZF0gPSBwYXRoW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbcGF0aC5sZW5ndGggLSAxXS5pZF0gPSBwYXRoWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghYmxvY2tlZC5oYXMobmVpZ2hib3IpKSB7XG4gICAgICAgIGlmIChjaXJjdWl0KG5laWdoYm9yLCBzdGFydCwgYWRqTGlzdCkpIHtcbiAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgdW5ibG9jayhub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgICBpZiAoIUJbbmVpZ2hib3IuaWRdLmhhcyhub2RlKSkge1xuICAgICAgICAgIEJbbmVpZ2hib3IuaWRdLmFkZChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHBhdGgucG9wKCk7XG4gICAgcmV0dXJuIGNsb3NlZDtcbiAgfTtcblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hOyAvLyBKb2huc29uJ3MgYWxnb3JpdGhtIOimgeaxgue7meiKgueCuei1i+mhuuW6j++8jOWFiOaMieiKgueCueWcqOaVsOe7hOS4reeahOmhuuW6j1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIG5vZGUySWR4W25vZGVJZF0gPSBpO1xuICAgIGlkeDJOb2RlW2ldID0gbm9kZTtcbiAgfSAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrnvvIzliJnmiormjIflrproioLngrnmjpLluo/lnKjliY3vvIzku6Xkvr/mj5Dml6nnu5PmnZ/mkJzntKJcblxuXG4gIGlmIChub2RlSWRzICYmIGluY2x1ZGUpIHtcbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGVJZHNbaV07XG4gICAgICBub2RlMklkeFtub2Rlc1tpXS5pZF0gPSBub2RlMklkeFtub2RlSWRdO1xuICAgICAgbm9kZTJJZHhbbm9kZUlkXSA9IDA7XG4gICAgICBpZHgyTm9kZVswXSA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5vZGVJZDtcbiAgICAgIH0pO1xuICAgICAgaWR4Mk5vZGVbbm9kZTJJZHhbbm9kZXNbaV0uaWRdXSA9IG5vZGVzW2ldO1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9sb29wXzIoaSk7XG4gICAgfVxuICB9IC8vIOi/lOWbniDoioLngrnpobrluo8gPj0gbm9kZU9yZGVyIOeahOW8uui/numAmuWIhumHj+eahGFkakxpc3RcblxuXG4gIHZhciBnZXRNaW5Db21wb25lbnRBZGogPSBmdW5jdGlvbiBnZXRNaW5Db21wb25lbnRBZGooY29tcG9uZW50cykge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBtaW5Db21wSWR4O1xuICAgIHZhciBtaW5JZHggPSBJbmZpbml0eTsgLy8gRmluZCBsZWFzdCBjb21wb25lbnQgYW5kIHRoZSBsb3dlc3Qgbm9kZVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgY29tcCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29tcC5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbm9kZUlkeF8xID0gbm9kZTJJZHhbY29tcFtqXS5pZF07XG5cbiAgICAgICAgaWYgKG5vZGVJZHhfMSA8IG1pbklkeCkge1xuICAgICAgICAgIG1pbklkeCA9IG5vZGVJZHhfMTtcbiAgICAgICAgICBtaW5Db21wSWR4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzW21pbkNvbXBJZHhdO1xuICAgIHZhciBhZGpMaXN0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbaV07XG4gICAgICBhZGpMaXN0W25vZGUuaWRdID0gW107XG5cbiAgICAgIGZvciAodmFyIF9pID0gMCwgX2IgPSAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShub2RlLmlkLCBncmFwaERhdGEuZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICByZXR1cm4gYy5pZDtcbiAgICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgICAgfSk7IF9pIDwgX2IubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IF9iW19pXTsgLy8g5a+56Ieq546v5oOF5Ya1ICjngrnov57lkJHoh6rouqspIOeJueauiuWkhOeQhu+8muiusOW9leiHqueOr++8jOS9huS4jeWKoOWFpWFkakxpc3RcblxuICAgICAgICBpZiAobmVpZ2hib3IgPT09IG5vZGUuaWQgJiYgIShpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkpIHtcbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2EgPSB7fSwgX2Fbbm9kZS5pZF0gPSBub2RlLCBfYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkakxpc3Rbbm9kZS5pZF0ucHVzaChub2RlMklkeFtuZWlnaGJvcl0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgYWRqTGlzdDogYWRqTGlzdCxcbiAgICAgIG1pbklkeDogbWluSWR4XG4gICAgfTtcbiAgfTtcblxuICB2YXIgbm9kZUlkeCA9IDA7XG5cbiAgd2hpbGUgKG5vZGVJZHggPCBub2Rlcy5sZW5ndGgpIHtcbiAgICB2YXIgc3ViZ3JhcGhOb2RlcyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgcmV0dXJuIG5vZGUySWR4W24uaWRdID49IG5vZGVJZHg7XG4gICAgfSk7XG4gICAgdmFyIHNjY3MgPSAoMCwgX2Nvbm5lY3RlZENvbXBvbmVudC5kZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cykoe1xuICAgICAgbm9kZXM6IHN1YmdyYXBoTm9kZXMsXG4gICAgICBlZGdlczogZ3JhcGhEYXRhLmVkZ2VzXG4gICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnQubGVuZ3RoID4gMTtcbiAgICB9KTtcbiAgICBpZiAoc2Njcy5sZW5ndGggPT09IDApIGJyZWFrO1xuICAgIHZhciBzY2MgPSBnZXRNaW5Db21wb25lbnRBZGooc2Njcyk7XG4gICAgdmFyIG1pbklkeCA9IHNjYy5taW5JZHgsXG4gICAgICAgIGFkakxpc3QgPSBzY2MuYWRqTGlzdCxcbiAgICAgICAgY29tcG9uZW50ID0gc2NjLmNvbXBvbmVudDtcblxuICAgIGlmIChjb21wb25lbnQubGVuZ3RoID4gMSkge1xuICAgICAgY29tcG9uZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgQltub2RlLmlkXSA9IG5ldyBTZXQoKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN0YXJ0Tm9kZSA9IGlkeDJOb2RlW21pbklkeF07IC8vIHN0YXJ0Tm9kZSDkuI3lnKjmjIflrpropoHljIXlkKvnmoToioLngrnkuK3vvIzmj5DliY3nu5PmnZ/mkJzntKJcblxuICAgICAgaWYgKG5vZGVJZHMgJiYgaW5jbHVkZSAmJiBub2RlSWRzLmluZGV4T2Yoc3RhcnROb2RlLmlkKSA9PT0gLTEpIHJldHVybiBhbGxDeWNsZXM7XG4gICAgICBjaXJjdWl0KHN0YXJ0Tm9kZSwgc3RhcnROb2RlLCBhZGpMaXN0KTtcbiAgICAgIG5vZGVJZHggPSBtaW5JZHggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ3ljbGVzO1xufTtcbi8qKlxuICog5p+l5om+5Zu+5Lit5omA5pyJ5ruh6Laz6KaB5rGC55qE5ZyIXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4TvvIzoi6XkuI3mjIflrprvvIzliJnov5Tlm57lm77kuK3miYDmnInnmoTlnIhcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IE5vZGV9XSDljIXlkKvmiYDmnInnjq/nmoTmlbDnu4TvvIzmr4/kuKrnjq/nlKjkuIDkuKpPYmplY3TooajnpLrvvIzlhbbkuK1rZXnkuLroioLngrlpZO+8jHZhbHVl5Li66K+l6IqC54K55Zyo546v5Lit5oyH5ZCR55qE5LiL5LiA5Liq6IqC54K5XG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuXG5leHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGRldGVjdEFsbEN5Y2xlcztcbnZhciBfZGVmYXVsdCA9IGRldGVjdERpcmVjdGVkQ3ljbGU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/detect-cycle.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/dfs.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/dfs.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = depthFirstSearch;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n (0, _util.getNeighbors)(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZnMuanM/ZmU1MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvZGZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBkZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG5cbiAgICAgIGlmICghc2VlbltuZXh0XSkge1xuICAgICAgICBzZWVuW25leHRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICogQHBhcmFtIHtHcmFwaH0gZ3JhcGhcbiAqIEBwYXJhbSB7R3JhcGhOb2RlfSBjdXJyZW50Tm9kZVxuICogQHBhcmFtIHtHcmFwaE5vZGV9IHByZXZpb3VzTm9kZVxuICogQHBhcmFtIHtDYWxsYmFja3N9IGNhbGxiYWNrc1xuICovXG5cblxuZnVuY3Rpb24gZGVwdGhGaXJzdFNlYXJjaFJlY3Vyc2l2ZShncmFwaERhdGEsIGN1cnJlbnROb2RlLCBwcmV2aW91c05vZGUsIGNhbGxiYWNrcykge1xuICBjYWxsYmFja3MuZW50ZXIoe1xuICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgfSk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7XG4gICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/dfs.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/dijkstra.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/dijkstra.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _util2 = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = (0, _util2.getOutEdgesNodeId)(minNodeId, edges);else relatedEdges = (0, _util2.getEdgesByNodeId)(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\nvar _default = dijkstra;\nexports.default = _default;\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if ((0, _util.isArray)(prePath)) paths.push((0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kaWprc3RyYS5qcz85Yjk2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLGdEQUFPOztBQUU1QixZQUFZLG1CQUFPLENBQUMsMERBQVk7O0FBRWhDLGFBQWEsbUJBQU8sQ0FBQywwREFBUTs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLGlCQUFpQixhQUFhO0FBQzlCO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsc0NBQXNDLGdCQUFnQjtBQUN0RDtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDLHlCQUF5QjtBQUN0RTtBQUNBLDRJQUE0STtBQUM1STtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdHNsaWIgPSByZXF1aXJlKFwidHNsaWJcIik7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX3V0aWwyID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIG1pblZlcnRleCA9IGZ1bmN0aW9uIG1pblZlcnRleChELCBub2RlcywgbWFya3MpIHtcbiAgLy8g5om+5Ye65pyA5bCP55qE54K5XG4gIHZhciBtaW5EaXMgPSBJbmZpbml0eTtcbiAgdmFyIG1pbk5vZGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGlmICghbWFya3Nbbm9kZUlkXSAmJiBEW25vZGVJZF0gPD0gbWluRGlzKSB7XG4gICAgICBtaW5EaXMgPSBEW25vZGVJZF07XG4gICAgICBtaW5Ob2RlID0gbm9kZXNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbk5vZGU7XG59O1xuXG52YXIgZGlqa3N0cmEgPSBmdW5jdGlvbiBkaWprc3RyYShncmFwaERhdGEsIHNvdXJjZSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgbm9kZUlkcyA9IFtdO1xuICB2YXIgbWFya3MgPSB7fTtcbiAgdmFyIEQgPSB7fTtcbiAgdmFyIHByZXZzID0ge307IC8vIGtleTog6aG254K5LCB2YWx1ZTog6aG254K555qE5YmN6amx54K55pWw57uE77yI5Y+v6IO95pyJ5aSa5p2h562J6ZW/55qE5pyA55+t6Lev5b6E77yJXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBpZCA9IG5vZGUuaWQ7XG4gICAgbm9kZUlkcy5wdXNoKGlkKTtcbiAgICBEW2lkXSA9IEluZmluaXR5O1xuICAgIGlmIChpZCA9PT0gc291cmNlKSBEW2lkXSA9IDA7XG4gIH0pO1xuICB2YXIgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIFByb2Nlc3MgdGhlIHZlcnRpY2VzXG4gICAgdmFyIG1pbk5vZGUgPSBtaW5WZXJ0ZXgoRCwgbm9kZXMsIG1hcmtzKTtcbiAgICB2YXIgbWluTm9kZUlkID0gbWluTm9kZS5pZDtcbiAgICBtYXJrc1ttaW5Ob2RlSWRdID0gdHJ1ZTtcbiAgICBpZiAoRFttaW5Ob2RlSWRdID09PSBJbmZpbml0eSkgcmV0dXJuIFwiY29udGludWVcIjsgLy8gVW5yZWFjaGFibGUgdmVydGljZXMgY2Fubm90IGJlIHRoZSBpbnRlcm1lZGlhdGUgcG9pbnRcblxuICAgIHZhciByZWxhdGVkRWRnZXMgPSBbXTtcbiAgICBpZiAoZGlyZWN0ZWQpIHJlbGF0ZWRFZGdlcyA9ICgwLCBfdXRpbDIuZ2V0T3V0RWRnZXNOb2RlSWQpKG1pbk5vZGVJZCwgZWRnZXMpO2Vsc2UgcmVsYXRlZEVkZ2VzID0gKDAsIF91dGlsMi5nZXRFZGdlc0J5Tm9kZUlkKShtaW5Ob2RlSWQsIGVkZ2VzKTtcbiAgICByZWxhdGVkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGVkZ2VUYXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBlZGdlU291cmNlID0gZWRnZS5zb3VyY2U7XG4gICAgICB2YXIgdyA9IGVkZ2VUYXJnZXQgPT09IG1pbk5vZGVJZCA/IGVkZ2VTb3VyY2UgOiBlZGdlVGFyZ2V0O1xuICAgICAgdmFyIHdlaWdodCA9IHdlaWdodFByb3BlcnR5TmFtZSAmJiBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gPyBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gOiAxO1xuXG4gICAgICBpZiAoRFt3XSA+IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgRFt3XSA9IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQ7XG4gICAgICAgIHByZXZzW3ddID0gW21pbk5vZGUuaWRdO1xuICAgICAgfSBlbHNlIGlmIChEW3ddID09PSBEW21pbk5vZGUuaWRdICsgd2VpZ2h0KSB7XG4gICAgICAgIHByZXZzW3ddLnB1c2gobWluTm9kZS5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTnVtOyBpKyspIHtcbiAgICBfbG9vcF8xKGkpO1xuICB9XG5cbiAgcHJldnNbc291cmNlXSA9IFtzb3VyY2VdOyAvLyDmr4/kuKroioLngrnlrZjlj6/og73lrZjlnKjlpJrmnaHmnIDnn63ot6/lvoRcblxuICB2YXIgcGF0aHMgPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gRCkge1xuICAgIGlmIChEW3RhcmdldF0gIT09IEluZmluaXR5KSB7XG4gICAgICBmaW5kQWxsUGF0aHMoc291cmNlLCB0YXJnZXQsIHByZXZzLCBwYXRocyk7XG4gICAgfVxuICB9IC8vIOWFvOWuueS5i+WJjeWNlei3r+W+hFxuXG5cbiAgdmFyIHBhdGggPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gcGF0aHMpIHtcbiAgICBwYXRoW3RhcmdldF0gPSBwYXRoc1t0YXJnZXRdWzBdO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZW5ndGg6IEQsXG4gICAgcGF0aDogcGF0aCxcbiAgICBhbGxQYXRoOiBwYXRoc1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZGlqa3N0cmE7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmICgoMCwgX3V0aWwuaXNBcnJheSkocHJlUGF0aCkpIHBhdGhzLnB1c2goKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KSgoMCwgX3RzbGliLl9fc3ByZWFkQXJyYXkpKFtdLCBwcmVQYXRoLCB0cnVlKSwgW3RhcmdldF0sIGZhbHNlKSk7ZWxzZSBwYXRocy5wdXNoKFtwcmVQYXRoLCB0YXJnZXRdKTtcbiAgICB9XG4gIH1cblxuICBmb3VuZFBhdGhzW3RhcmdldF0gPSBwYXRocztcbiAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/dijkstra.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/find-path.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/find-path.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findShortestPath = exports.findAllPath = void 0;\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = (0, _dijkstra.default)(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\n\nexports.findShortestPath = findShortestPath;\n\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? (0, _util.getNeighbors)(start, edges, 'target') : (0, _util.getNeighbors)(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? (0, _util.getNeighbors)(child, edges, 'target') : (0, _util.getNeighbors)(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};\n\nexports.findAllPath = findAllPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanM/OThlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHVDQUF1QyxtQkFBTyxDQUFDLGtFQUFZOztBQUUzRCxZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZmluZFNob3J0ZXN0UGF0aCA9IGV4cG9ydHMuZmluZEFsbFBhdGggPSB2b2lkIDA7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGZpbmRTaG9ydGVzdFBhdGggPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoKGdyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoID0gZmluZFNob3J0ZXN0UGF0aDtcblxudmFyIGZpbmRBbGxQYXRoID0gZnVuY3Rpb24gZmluZEFsbFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCkge1xuICB2YXIgX2E7XG5cbiAgaWYgKHN0YXJ0ID09PSBlbmQpIHJldHVybiBbW3N0YXJ0XV07XG4gIHZhciBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciB2aXNpdGVkID0gW3N0YXJ0XTtcbiAgdmFyIGlzVmlzaXRlZCA9IChfYSA9IHt9LCBfYVtzdGFydF0gPSB0cnVlLCBfYSk7XG4gIHZhciBzdGFjayA9IFtdOyAvLyDovoXliqnmoIjvvIznlKjkuo7lrZjlgqjorr/pl67ov4fnmoToioLngrnnmoTpgrvlsYXoioLngrlcblxuICB2YXIgYWxsUGF0aCA9IFtdO1xuICB2YXIgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKHN0YXJ0LCBlZGdlcyk7XG4gIHN0YWNrLnB1c2gobmVpZ2hib3JzKTtcblxuICB3aGlsZSAodmlzaXRlZC5sZW5ndGggPiAwICYmIHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICB2aXNpdGVkLnB1c2goY2hpbGQpO1xuICAgICAgICBpc1Zpc2l0ZWRbY2hpbGRdID0gdHJ1ZTtcbiAgICAgICAgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjaGlsZCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07XG5cbmV4cG9ydHMuZmluZEFsbFBhdGggPSBmaW5kQWxsUGF0aDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/find-path.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/floydWarshall.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/floydWarshall.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = (0, _adjacentMatrix.default)(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\nvar _default = floydWarshall;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzPzAyNTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSw2Q0FBNkMsbUJBQU8sQ0FBQyxnRkFBbUI7O0FBRXhFLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjs7QUFFQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBmbG95ZFdhcnNoYWxsID0gZnVuY3Rpb24gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKSB7XG4gIHZhciBhZGphY2VudE1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZmxveWRXYXJzaGFsbDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/floydWarshall.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/gSpan/gSpan.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/gSpan/gSpan.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _struct = __webpack_require__(/*! ./struct */ \"./node_modules/@antv/algorithm/lib/gSpan/struct.js\");\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct.VACANT_NODE_LABEL,\n edgeLabel: edgeLabel || _struct.VACANT_EDGE_LABEL,\n nodeLabel2: toNodeLabel || _struct.VACANT_NODE_LABEL\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct.VACANT_GRAPH_ID;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct.Graph(graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct.VACANT_NODE_LABEL) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct.VACANT_GRAPH_ID, directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct.VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, _struct.VACANT_NODE_LABEL));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct.VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push((0, _util.clone)(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct.VACANT_NODE_LABEL, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct.Graph(i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\nvar _default = gSpan;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcz9hZGE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLDBEQUFZOztBQUVoQyxjQUFjLG1CQUFPLENBQUMsb0VBQVU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxHQUFHOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsMkNBQTJDOztBQUUzQztBQUNBLGlIQUFpSDs7QUFFakg7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEscUNBQXFDLFNBQVM7QUFDOUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkMscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87OztBQUdQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxRQUFROzs7QUFHUixxQkFBcUIsbUJBQW1CO0FBQ3hDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLGlDQUFpQzs7QUFFakMsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUNBQXFDO0FBQ3JDLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsdUVBQXVFOzs7QUFHdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxudmFyIF9zdHJ1Y3QgPSByZXF1aXJlKFwiLi9zdHJ1Y3RcIik7XG5cbnZhciBERlNlZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5mcm9tTm9kZSA9IGZyb21Ob2RlO1xuICAgIHRoaXMudG9Ob2RlID0gdG9Ob2RlO1xuICAgIHRoaXMubm9kZUVkZ2VOb2RlTGFiZWwgPSB7XG4gICAgICBub2RlTGFiZWwxOiBmcm9tTm9kZUxhYmVsIHx8IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBfc3RydWN0LlZBQ0FOVF9FREdFX0xBQkVMLFxuICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlTGFiZWwgfHwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTFxuICAgIH07XG4gIH1cblxuICBERlNlZGdlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU5vZGUgPT09IG90aGVyLmZvcm1Ob2RlICYmIHRoaXMudG9Ob2RlID09PSBvdGhlci50b05vZGUgJiYgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9PT0gb3RoZXIubm9kZUVkZ2VOb2RlTGFiZWw7XG4gIH07XG5cbiAgREZTZWRnZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcblxuICByZXR1cm4gREZTZWRnZTtcbn0oKTsgLy8gREZTY29kZSDmmK8gREVTZWRnZSDnmoTmlbDnu4RcblxuXG52YXIgREZTY29kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERGU2NvZGUoKSB7XG4gICAgdGhpcy5ybXBhdGggPSBbXTtcbiAgICB0aGlzLmRmc0VkZ2VMaXN0ID0gW107XG4gIH1cblxuICBERlNjb2RlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgdmFyIGFMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcbiAgICB2YXIgYkxlbmd0aCA9IG90aGVyLmxlbmd0aDtcbiAgICBpZiAoYUxlbmd0aCAhPT0gYkxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRmc0VkZ2VMaXN0W2ldICE9PSBvdGhlcltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIERGU2NvZGUucHJvdG90eXBlLm5vdEVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gIXRoaXMuZXF1YWxUbyhvdGhlcik7XG4gIH07XG4gIC8qKiDlop7liqDkuIDmnaEgZWRnZSDliLAgREZTY29kZSAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUucHVzaEJhY2sgPSBmdW5jdGlvbiAoZnJvbU5vZGUsIHRvTm9kZSwgZnJvbU5vZGVMYWJlbCwgZWRnZUxhYmVsLCB0b05vZGVMYWJlbCkge1xuICAgIHRoaXMuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSk7XG4gICAgcmV0dXJuIHRoaXMuZGZzRWRnZUxpc3Q7XG4gIH07XG4gIC8qKiDmoLnmja4gZGZzIOaehOW7uuWbviAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUudG9HcmFwaCA9IGZ1bmN0aW9uIChncmFwaElkLCBkaXJlY3RlZCkge1xuICAgIGlmIChncmFwaElkID09PSB2b2lkIDApIHtcbiAgICAgIGdyYXBoSWQgPSBfc3RydWN0LlZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgX3N0cnVjdC5HcmFwaChncmFwaElkLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICB2YXIgZnJvbU5vZGVJZCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWQgPSBkZnNFZGdlLnRvTm9kZTtcbiAgICAgIHZhciBfYSA9IGRmc0VkZ2Uubm9kZUVkZ2VOb2RlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMSA9IF9hLm5vZGVMYWJlbDEsXG4gICAgICAgICAgZWRnZUxhYmVsID0gX2EuZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDIgPSBfYS5ub2RlTGFiZWwyO1xuICAgICAgaWYgKG5vZGVMYWJlbDEgIT09IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwpIGdyYXBoLmFkZE5vZGUoZnJvbU5vZGVJZCwgbm9kZUxhYmVsMSk7XG4gICAgICBpZiAobm9kZUxhYmVsMiAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCAmJiBub2RlTGFiZWwyICE9PSBub2RlTGFiZWwxKSBncmFwaC5hZGRFZGdlKHVuZGVmaW5lZCwgZnJvbU5vZGVJZCwgdG9Ob2RlSWQsIGVkZ2VMYWJlbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyYXBoO1xuICB9OyAvLyDlu7rnq4sgcmlnaHRtb3N0IHBhdGhcblxuXG4gIERGU2NvZGUucHJvdG90eXBlLmJ1aWxkUm1wYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucm1wYXRoID0gW107XG4gICAgdmFyIG9sZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHNlbGZMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSBzZWxmTGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBkZnNFZGdlID0gdGhpcy5kZnNFZGdlTGlzdFtpXTtcbiAgICAgIHZhciBmcm9tTm9kZUlkeCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWR4ID0gZGZzRWRnZS50b05vZGU7XG5cbiAgICAgIGlmIChmcm9tTm9kZUlkeCA8IHRvTm9kZUlkeCAmJiAob2xkRnJvbSA9PT0gdW5kZWZpbmVkIHx8IHRvTm9kZUlkeCA9PT0gb2xkRnJvbSkpIHtcbiAgICAgICAgdGhpcy5ybXBhdGgucHVzaChpKTtcbiAgICAgICAgb2xkRnJvbSA9IGZyb21Ob2RlSWR4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJtcGF0aDtcbiAgfTtcblxuICBERlNjb2RlLnByb3RvdHlwZS5nZXROb2RlTnVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlTWFwID0ge307XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICBpZiAoIW5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0gPSB0cnVlO1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UudG9Ob2RlXSkgbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0gPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhub2RlTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIERGU2NvZGU7XG59KCk7XG5cbnZhciBIaXN0b3J5ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlzdG9yeShwZGZzKSB7XG4gICAgdGhpcy5oaXMgPSB7fTtcbiAgICB0aGlzLm5vZGVzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXNVc2VkID0ge307XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIGlmICghcGRmcykgcmV0dXJuO1xuXG4gICAgd2hpbGUgKHBkZnMpIHtcbiAgICAgIHZhciBlID0gcGRmcy5lZGdlO1xuICAgICAgdGhpcy5lZGdlcy5wdXNoKGUpO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS5mcm9tXSA9IDE7XG4gICAgICB0aGlzLm5vZGVzVXNlZFtlLnRvXSA9IDE7XG4gICAgICB0aGlzLmVkZ2VzVXNlZFtlLmlkXSA9IDE7XG4gICAgICBwZGZzID0gcGRmcy5wcmVOb2RlO1xuICAgIH0gLy8g5YCS5bqPXG5cblxuICAgIHRoaXMuZWRnZXMgPSB0aGlzLmVkZ2VzLnJldmVyc2UoKTtcbiAgfVxuXG4gIEhpc3RvcnkucHJvdG90eXBlLmhhc05vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzVXNlZFtub2RlLmlkXSA9PT0gMTtcbiAgfTtcblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlc1VzZWRbZWRnZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgcmV0dXJuIEhpc3Rvcnk7XG59KCk7XG5cbnZhciBHU3BhbiA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdTcGFuKF9hKSB7XG4gICAgdmFyIGdyYXBocyA9IF9hLmdyYXBocyxcbiAgICAgICAgX2IgPSBfYS5taW5TdXBwb3J0LFxuICAgICAgICBtaW5TdXBwb3J0ID0gX2IgPT09IHZvaWQgMCA/IDIgOiBfYixcbiAgICAgICAgX2MgPSBfYS5taW5Ob2RlTnVtLFxuICAgICAgICBtaW5Ob2RlTnVtID0gX2MgPT09IHZvaWQgMCA/IDEgOiBfYyxcbiAgICAgICAgX2QgPSBfYS5tYXhOb2RlTnVtLFxuICAgICAgICBtYXhOb2RlTnVtID0gX2QgPT09IHZvaWQgMCA/IDQgOiBfZCxcbiAgICAgICAgX2UgPSBfYS50b3AsXG4gICAgICAgIHRvcCA9IF9lID09PSB2b2lkIDAgPyAxMCA6IF9lLFxuICAgICAgICBfZiA9IF9hLmRpcmVjdGVkLFxuICAgICAgICBkaXJlY3RlZCA9IF9mID09PSB2b2lkIDAgPyBmYWxzZSA6IF9mLFxuICAgICAgICBfZyA9IF9hLnZlcmJvc2UsXG4gICAgICAgIHZlcmJvc2UgPSBfZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZzsgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM5Yid5aeL5YyWLS0tLS0tLVxuXG4gICAgdGhpcy5ncmFwaHMgPSBncmFwaHM7XG4gICAgdGhpcy5kZnNDb2RlID0gbmV3IERGU2NvZGUoKTtcbiAgICB0aGlzLnN1cHBvcnQgPSAwO1xuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IFtdO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLm1pblN1cHBvcnQgPSBtaW5TdXBwb3J0O1xuICAgIHRoaXMudG9wID0gdG9wO1xuICAgIHRoaXMuZGlyZWN0ZWQgPSBkaXJlY3RlZDtcbiAgICB0aGlzLmNvdW50ZXIgPSAwOyAvLyBUT0RPPyB0aW1lc3RhbXAgPSB7fVxuXG4gICAgdGhpcy5tYXhOb2RlTnVtID0gbWF4Tm9kZU51bTtcbiAgICB0aGlzLm1pbk5vZGVOdW0gPSBtaW5Ob2RlTnVtO1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2U7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IHRoaXMubWluTm9kZU51bSkgdGhpcy5tYXhOb2RlTnVtID0gdGhpcy5taW5Ob2RlTnVtO1xuICAgIHRoaXMucmVwb3J0REYgPSBbXTsgLy8gbWF0cml4XG4gIH0gLy8gTGluZSAzNTJcblxuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJvb3RFZGdlcyA9IGZ1bmN0aW9uIChncmFwaCwgZnJvbU5vZGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICBmcm9tTm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoX3RoaXMuZGlyZWN0ZWQgfHwgZnJvbU5vZGUubGFiZWwgPD0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbCkgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEJhY2t3YXJkRWRnZSA9IGZ1bmN0aW9uIChncmFwaCwgZWRnZTEsIGVkZ2UyLCBoaXN0b3J5KSB7XG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkICYmIGVkZ2UxID09PSBlZGdlMikgcmV0dXJuIG51bGw7XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciBlZGdlMlRvID0gbm9kZU1hcFtlZGdlMi50b107XG4gICAgdmFyIGVkZ2UyVG9FZGdlcyA9IGVkZ2UyVG8uZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlMlRvRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZTJUb0VkZ2VzW2ldO1xuICAgICAgaWYgKGhpc3RvcnkuaGFzRWRnZShlZGdlKSB8fCBlZGdlLnRvICE9PSBlZGdlMS5mcm9tKSBjb250aW51ZTtcblxuICAgICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChlZGdlMS5sYWJlbCA8IGVkZ2UubGFiZWwgfHwgZWRnZTEubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgbm9kZU1hcFtlZGdlMS50b10ubGFiZWwgPD0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5vZGVNYXBbZWRnZTEuZnJvbV0ubGFiZWwgPCBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCB8fCBub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsID09PSBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCAmJiBlZGdlMS5sYWJlbCA8PSBlZGdlLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRQdXJlRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgcmlnaHRtb3N0RWRnZVRvSWQgPSByaWdodG1vc3RFZGdlLnRvO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLm5vZGVNYXBbcmlnaHRtb3N0RWRnZVRvSWRdLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgdG9Ob2RlID0gZ3JhcGgubm9kZU1hcFtlZGdlLnRvXTtcblxuICAgICAgaWYgKG1pbk5vZGVMYWJlbCA8PSB0b05vZGUubGFiZWwgJiYgIWhpc3RvcnkuaGFzTm9kZSh0b05vZGUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIHRvTm9kZUxhYmVsID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLnRvXS5sYWJlbDtcbiAgICB2YXIgZnJvbU5vZGUgPSBub2RlTWFwW3JpZ2h0bW9zdEVkZ2UuZnJvbV07XG4gICAgdmFyIGVkZ2VzID0gZnJvbU5vZGUuZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIHZhciBuZXdUb05vZGVMYWJlbCA9IG5vZGVNYXBbZWRnZS50b10ubGFiZWw7XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLnRvID09PSBlZGdlLnRvIHx8IG1pbk5vZGVMYWJlbCA+IG5ld1RvTm9kZUxhYmVsIHx8IGhpc3RvcnkuaGFzTm9kZShub2RlTWFwW2VkZ2UudG9dKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0bW9zdEVkZ2UubGFiZWwgPCBlZGdlLmxhYmVsIHx8IHJpZ2h0bW9zdEVkZ2UubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgdG9Ob2RlTGFiZWwgPD0gbmV3VG9Ob2RlTGFiZWwpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2V0U3VwcG9ydCA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgZ3JhcGhNYXAgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocHJvKSB7XG4gICAgICBpZiAoIWdyYXBoTWFwW3Byby5ncmFwaElkXSkgZ3JhcGhNYXBbcHJvLmdyYXBoSWRdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JhcGhNYXApLmxlbmd0aDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZE1pbkxhYmVsID0gZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciBtaW5MYWJlbCA9IHVuZGVmaW5lZDtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKG5vZGVFZGdlTm9kZUxhYmVsKSB7XG4gICAgICB2YXIgX2EgPSBvYmpbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgaWYgKCFtaW5MYWJlbCkge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobm9kZUxhYmVsMSA8IG1pbkxhYmVsLm5vZGVMYWJlbDEgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPCBtaW5MYWJlbC5lZGdlTGFiZWwgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPT09IG1pbkxhYmVsLmVkZ2VMYWJlbCAmJiBub2RlTGFiZWwyIDwgbWluTGFiZWwubm9kZUxhYmVsMikge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWluTGFiZWw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmlzTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZGZzQ29kZSA9IHRoaXMuZGZzQ29kZTtcbiAgICBpZiAodGhpcy52ZXJib3NlKSBjb25zb2xlLmxvZyhcImlzTWluIGNoZWNraW5nXCIsIGRmc0NvZGUpO1xuICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDtcbiAgICB2YXIgZ3JhcGggPSBkZnNDb2RlLnRvR3JhcGgoX3N0cnVjdC5WQUNBTlRfR1JBUEhfSUQsIGRpcmVjdGVkKTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIGRmc0NvZGVNaW4gPSBuZXcgREZTY29kZSgpO1xuICAgIHZhciByb290ID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGZvcndhcmRFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm9vdEVkZ2VzKGdyYXBoLCBub2RlKTtcblxuICAgICAgZm9yd2FyZEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIG90aGVyTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbCA9IFwiXCIuY29uY2F0KG5vZGUubGFiZWwsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChvdGhlck5vZGUubGFiZWwpO1xuICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgIG5vZGVMYWJlbDE6IG5vZGUubGFiZWwsXG4gICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG90aGVyTm9kZS5sYWJlbFxuICAgICAgICB9O1xuICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g5q+U6L6DIHJvb3Qg5Lit5q+P5LiA6aG555qEIG5vZGVFZGdlTm9kZUxhYmVsIOWkp+Wwj++8jOaMieeFpyBub2RlTGFiZWwx44CBZWRnZUxhYmXjgIFub2RlTGFiZWwyIOeahOmhuuW6j+avlOi+g1xuXG4gICAgdmFyIG1pbkxhYmVsID0gdGhpcy5maW5kTWluTGFiZWwocm9vdCk7IC8vIGxpbmUgNDE5XG5cbiAgICBpZiAoIW1pbkxhYmVsKSByZXR1cm47XG4gICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG1pbkxhYmVsLm5vZGVMYWJlbDEsIG1pbkxhYmVsLmVkZ2VMYWJlbCwgbWluTGFiZWwubm9kZUxhYmVsMikpOyAvLyBsaW5lIDQyM1xuXG4gICAgdmFyIHByb2plY3RJc01pbiA9IGZ1bmN0aW9uIHByb2plY3RJc01pbihwcm9qZWN0ZWQpIHtcbiAgICAgIC8vIHJpZ2h0IG1vc3QgcGF0aFxuICAgICAgdmFyIHJtcGF0aCA9IGRmc0NvZGVNaW4uYnVpbGRSbXBhdGgoKTtcbiAgICAgIHZhciBtaW5Ob2RlTGFiZWwgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0WzBdLm5vZGVFZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDE7XG4gICAgICB2YXIgbWF4VG9DID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbMF1dLnRvTm9kZTsgLy8gbm9kZSBpZFxuXG4gICAgICB2YXIgYmFja3dhcmRSb290ID0ge307XG4gICAgICB2YXIgZmxhZyA9IGZhbHNlLFxuICAgICAgICAgIG5ld1RvID0gMDtcbiAgICAgIHZhciBlbmQgPSBkaXJlY3RlZCA/IC0xIDogMDsgLy8g6YGN5Y6G5YiwIDEg6L+Y5piv5YiwIDBcblxuICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7IC8vIGxpbmUgNDM1XG5cbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGJhY2t3YXJkRWRnZSA9IF90aGlzLmZpbmRCYWNrd2FyZEVkZ2UoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBoaXN0b3J5KTtcblxuICAgICAgICAgIGlmIChiYWNrd2FyZEVkZ2UpIHtcbiAgICAgICAgICAgIC8vIExpbmUgNDQxXG4gICAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdKSB7XG4gICAgICAgICAgICAgIGJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdID0ge1xuICAgICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogYmFja3dhcmRSb290LFxuICAgICAgICAgICAgICBwcmVOb2RlOiBwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5ld1RvID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlO1xuICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGkgPSBybXBhdGgubGVuZ3RoIC0gMTsgaSA+IGVuZDsgaS0tKSB7XG4gICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMShpKTtcblxuICAgICAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgdmFyIG1pbkJhY2t3YXJkRWRnZUxhYmVsID0gX3RoaXMuZmluZE1pbkxhYmVsKGJhY2t3YXJkUm9vdCk7XG5cbiAgICAgICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgbmV3VG8sIF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkpO1xuICAgICAgICB2YXIgaWR4XzEgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF8xXSAhPT0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtpZHhfMV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHByb2plY3RJc01pbihiYWNrd2FyZFJvb3RbbWluQmFja3dhcmRFZGdlTGFiZWwuZWRnZUxhYmVsXS5wcm9qZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZm9yd2FyZFJvb3QgPSB7fTtcbiAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgIHZhciBuZXdGcm9tID0gMDtcbiAgICAgIHByb2plY3RlZC5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgdmFyIGZvcndhcmRQdXJlRWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFB1cmVFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgIGlmIChmb3J3YXJkUHVyZUVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICBuZXdGcm9tID0gbWF4VG9DO1xuICAgICAgICAgIGZvcndhcmRQdXJlRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHBhdGhMZW5ndGggPSBybXBhdGgubGVuZ3RoO1xuXG4gICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgdmFyIHZhbHVlID0gcm1wYXRoW2ldO1xuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgZm9yd2FyZFJtcGF0aEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSbXBhdGhFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1t2YWx1ZV0sIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSk7XG5cbiAgICAgICAgICBpZiAoZm9yd2FyZFJtcGF0aEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgbmV3RnJvbSA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbdmFsdWVdLmZyb21Ob2RlO1xuICAgICAgICAgICAgZm9yd2FyZFJtcGF0aEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICAgIGlmICghZm9yd2FyZFJvb3Rba2V5XSkgZm9yd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGhMZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzIoaSk7XG5cbiAgICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmxhZykgcmV0dXJuIHRydWU7XG5cbiAgICAgIHZhciBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbCA9IF90aGlzLmZpbmRNaW5MYWJlbChmb3J3YXJkUm9vdCk7XG5cbiAgICAgIGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShuZXdGcm9tLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpKTtcbiAgICAgIHZhciBpZHggPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhdICE9PSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W2lkeF0pIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oZm9yd2FyZFJvb3RbXCJcIi5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwuZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpXS5wcm9qZWN0ZWQpO1xuICAgIH07XG5cbiAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMik7XG4gICAgcmV0dXJuIHByb2plY3RJc01pbihyb290W2tleV0ucHJvamVjdGVkKTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucmVwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRmc0NvZGUuZ2V0Tm9kZU51bSgpIDwgdGhpcy5taW5Ob2RlTnVtKSByZXR1cm47XG4gICAgdGhpcy5jb3VudGVyKys7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5kZnNDb2RlLnRvR3JhcGgodGhpcy5jb3VudGVyLCB0aGlzLmRpcmVjdGVkKTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzLnB1c2goKDAsIF91dGlsLmNsb25lKShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBocyA9IHRoaXMuZ3JhcGhzO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIG1pblN1cHBvcnQgPSB0aGlzLm1pblN1cHBvcnQ7XG4gICAgdmFyIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gICAgdmFyIG5vZGVMYWJlbENvdW50ZXIgPSB7fSxcbiAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlciA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6roioLngrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1ub2Rl57G75Z6LXG5cbiAgICB2YXIgbm9kZUxhYmxlQ291bnRlZCA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1mcm9tTm9kZeexu+Weiy1lZGdl57G75Z6LLXRvTm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvLyBMaW5lIDI3MVxuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIOmBjeWOhuiKgueCue+8jOiusOW9leWvueW6lOWbviDkuI4g5q+P5Liq6IqC54K555qEIGxhYmVsIOWIsCBub2RlTGFibGVDb3VudGVkXG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgICAgLy8gTGluZSAyNzJcbiAgICAgICAgdmFyIG5vZGVMYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgICAgIHZhciBncmFwaE5vZGVLZXkgPSBcIlwiLmNvbmNhdChrZXksIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsKTtcblxuICAgICAgICBpZiAoIW5vZGVMYWJsZUNvdW50ZWRbZ3JhcGhOb2RlS2V5XSkge1xuICAgICAgICAgIHZhciBjb3VudGVyID0gbm9kZUxhYmVsQ291bnRlcltub2RlTGFiZWxdIHx8IDA7XG4gICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgIG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSA9IGNvdW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0gPSB7XG4gICAgICAgICAgZ3JhcGhLZXk6IGtleSxcbiAgICAgICAgICBsYWJlbDogbm9kZUxhYmVsXG4gICAgICAgIH07IC8vIOmBjeWOhuivpeiKgueCueeahOaJgOaciei+ue+8jOiusOW9leWQhOS4quWbvuWSjOWQhOiHqui+ueeahOWFs+ezu+WIsCBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQuIExpbmUgMjc2XG5cbiAgICAgICAgbm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDEgPSBub2RlTGFiZWw7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDIgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBub2RlTGFiZWwxID4gbm9kZUxhYmVsMikge1xuICAgICAgICAgICAgdmFyIHRtcCA9IG5vZGVMYWJlbDI7XG4gICAgICAgICAgICBub2RlTGFiZWwyID0gbm9kZUxhYmVsMTtcbiAgICAgICAgICAgIG5vZGVMYWJlbDEgPSB0bXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGVkZ2VMYWJlbCA9IGVkZ2UubGFiZWw7XG4gICAgICAgICAgdmFyIGdyYXBoTm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDEsIFwiLVwiKS5jb25jYXQoZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDIpO1xuICAgICAgICAgIHZhciBub2RlRWRnZU5vZGVLZXkgPSBcIlwiLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcblxuICAgICAgICAgIGlmICghbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSB8fCAwO1xuICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldID0gY291bnRlcjsgLy8gTGluZTI4MVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZFtncmFwaE5vZGVFZGdlTm9kZUtleV0gPSB7XG4gICAgICAgICAgICBncmFwaElkOiBrZXksXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsXG4gICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g6K6h566X6aKR57mB55qE6IqC54K5XG5cbiAgICBPYmplY3Qua2V5cyhub2RlTGFiZWxDb3VudGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgdmFyIGNvdW50ID0gbm9kZUxhYmVsQ291bnRlcltsYWJlbF07XG4gICAgICBpZiAoY291bnQgPCBtaW5TdXBwb3J0KSByZXR1cm47XG4gICAgICB2YXIgZyA9IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW11cbiAgICAgIH07XG4gICAgICBnLm5vZGVzLnB1c2goe1xuICAgICAgICBpZDogXCIwXCIsXG4gICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICBmcmVxdWVudFNpemUxU3ViZ3JhcGhzLnB1c2goZyk7IC8vIGlmIChtaW5Ob2RlTnVtIDw9IDEpIHJlcG9ydFNpemUxIFRPRE9cbiAgICB9KTtcbiAgICByZXR1cm4gZnJlcXVlbnRTaXplMVN1YmdyYXBocztcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7IC8vIC0tLS0tLS0tIOesrOS4gOatpSwgX2dlbmVyYXRlXzFlZGdlX2ZyZXF1ZW50X3N1YmdyYXBoc++8mumikee5geeahOWNleS4quiKgueCuS0tLS0tLS1cblxuXG4gICAgdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMoKTtcbiAgICBpZiAodGhpcy5tYXhOb2RlTnVtIDwgMikgcmV0dXJuO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkOyAvLyBQREZTIOaVsOe7hOeahCBtYXAgTGluZSAzMDRcblxuICAgIHZhciByb290ID0ge307XG4gICAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaElkKSB7XG4gICAgICB2YXIgZ3JhcGggPSBncmFwaHNbZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIExpbmUgMzA2XG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSb290RWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFJvb3RFZGdlcyhncmFwaCwgbm9kZSk7IC8vIExpbmUgMzA4XG5cblxuICAgICAgICBmb3J3YXJkUm9vdEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgdG9Ob2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlTGFiZWwgPSBcIlwiLmNvbmNhdChub2RlLmxhYmVsLCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQodG9Ob2RlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlLmxhYmVsLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlLmxhYmVsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIExpbmUgMzEzXG5cbiAgICBPYmplY3Qua2V5cyhyb290KS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0sXG4gICAgICAgICAgcHJvamVjdGVkID0gX2EucHJvamVjdGVkLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG5vZGVMYWJlbDEsIGVkZ2VMYWJlbCwgbm9kZUxhYmVsMikpO1xuXG4gICAgICBfdGhpcy5zdWJHcmFwaE1pbmluZyhwcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBHU3Bhbjtcbn0oKTtcblxudmFyIGZvcm1hdEdyYXBocyA9IGZ1bmN0aW9uIGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGkpIHtcbiAgICB2YXIgZ3JhcGggPSBncmFwaHNba2V5XTtcbiAgICB2YXIgZkdyYXBoID0gbmV3IF9zdHJ1Y3QuR3JhcGgoaSwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlSWR4TWFwID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaikge1xuICAgICAgZkdyYXBoLmFkZE5vZGUoaiwgbm9kZVtub2RlTGFiZWxQcm9wXSk7XG4gICAgICBub2RlSWR4TWFwW25vZGUuaWRdID0gajtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlLCBrKSB7XG4gICAgICB2YXIgc291cmNlSWR4ID0gbm9kZUlkeE1hcFtlZGdlLnNvdXJjZV07XG4gICAgICB2YXIgdGFyZ2V0SWR4ID0gbm9kZUlkeE1hcFtlZGdlLnRhcmdldF07XG4gICAgICBmR3JhcGguYWRkRWRnZSgtMSwgc291cmNlSWR4LCB0YXJnZXRJZHgsIGVkZ2VbZWRnZUxhYmVsUHJvcF0pO1xuICAgIH0pO1xuICAgIGlmIChmR3JhcGggJiYgZkdyYXBoLmdldE5vZGVOdW0oKSkgcmVzdWx0W2ZHcmFwaC5pZF0gPSBmR3JhcGg7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIHRvR3JhcGhEYXRhcyA9IGZ1bmN0aW9uIHRvR3JhcGhEYXRhcyhncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGgpIHtcbiAgICB2YXIgZ3JhcGhEYXRhID0ge1xuICAgICAgbm9kZXM6IFtdLFxuICAgICAgZWRnZXM6IFtdXG4gICAgfTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5ub2Rlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KG5vZGUuaWQpXG4gICAgICB9LCBfYVtub2RlTGFiZWxQcm9wXSA9IG5vZGUubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIF9hO1xuXG4gICAgICBncmFwaERhdGEuZWRnZXMucHVzaCgoX2EgPSB7XG4gICAgICAgIHNvdXJjZTogXCJcIi5jb25jYXQoZWRnZS5mcm9tKSxcbiAgICAgICAgdGFyZ2V0OiBcIlwiLmNvbmNhdChlZGdlLnRvKVxuICAgICAgfSwgX2FbZWRnZUxhYmVsUHJvcF0gPSBlZGdlLmxhYmVsLCBfYSkpO1xuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKGdyYXBoRGF0YSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIERFRkFVTFRfTEFCRUxfTkFNRSA9IFwiY2x1c3RlclwiO1xuLyoqXG4gKiBnU3BhbiDpopHnuYHlrZDlm77orqHnrpfnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvIlcbiAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXG4gKi9cblxudmFyIGdTcGFuID0gZnVuY3Rpb24gZ1NwYW4ocGFyYW1zKSB7XG4gIC8vIC0tLS0tLS0g5bCG5Zu+5pWw5o2uIEdyYXBoRGF0YSDnmoQgbWFwIOi9rOaNouS4uuagvOW8jyAtLS0tLS0tXG4gIHZhciBncmFwaHMgPSBwYXJhbXMuZ3JhcGhzLFxuICAgICAgX2EgPSBwYXJhbXMuZGlyZWN0ZWQsXG4gICAgICBkaXJlY3RlZCA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hLFxuICAgICAgX2IgPSBwYXJhbXMubm9kZUxhYmVsUHJvcCxcbiAgICAgIG5vZGVMYWJlbFByb3AgPSBfYiA9PT0gdm9pZCAwID8gREVGQVVMVF9MQUJFTF9OQU1FIDogX2IsXG4gICAgICBfYyA9IHBhcmFtcy5lZGdlTGFiZWxQcm9wLFxuICAgICAgZWRnZUxhYmVsUHJvcCA9IF9jID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYztcbiAgdmFyIGZvcm1hdHRlZEdyYXBocyA9IGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgdmFyIG1pblN1cHBvcnQgPSBwYXJhbXMubWluU3VwcG9ydCxcbiAgICAgIG1heE5vZGVOdW0gPSBwYXJhbXMubWF4Tm9kZU51bSxcbiAgICAgIG1pbk5vZGVOdW0gPSBwYXJhbXMubWluTm9kZU51bSxcbiAgICAgIHZlcmJvc2UgPSBwYXJhbXMudmVyYm9zZSxcbiAgICAgIHRvcCA9IHBhcmFtcy50b3A7IC8vIC0tLS0tLS0g5Yid5aeL5YyW5LiO5omn6KGM566X5rOVIC0tLS0tLS1cblxuICB2YXIgYWxnb1BhcmFtcyA9IHtcbiAgICBncmFwaHM6IGZvcm1hdHRlZEdyYXBocyxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1heE5vZGVOdW06IG1heE5vZGVOdW0sXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICB0b3A6IHRvcCxcbiAgICB2ZXJib3NlOiB2ZXJib3NlLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9O1xuICB2YXIgY2FsY3VsYXRvciA9IG5ldyBHU3BhbihhbGdvUGFyYW1zKTtcbiAgY2FsY3VsYXRvci5ydW4oKTtcbiAgdmFyIHJlc3VsdCA9IHRvR3JhcGhEYXRhcyhjYWxjdWxhdG9yLmZyZXF1ZW50U3ViZ3JhcGhzLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGdTcGFuO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/gSpan/gSpan.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/gSpan/struct.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/gSpan/struct.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VACANT_NODE_LABEL = exports.VACANT_NODE_ID = exports.VACANT_GRAPH_ID = exports.VACANT_EDGE_LABEL = exports.VACANT_EDGE_ID = exports.Node = exports.Graph = exports.Edge = exports.AUTO_EDGE_ID = void 0;\nvar VACANT_EDGE_ID = -1;\nexports.VACANT_EDGE_ID = VACANT_EDGE_ID;\nvar VACANT_NODE_ID = -1;\nexports.VACANT_NODE_ID = VACANT_NODE_ID;\nvar VACANT_EDGE_LABEL = \"-1\";\nexports.VACANT_EDGE_LABEL = VACANT_EDGE_LABEL;\nvar VACANT_NODE_LABEL = \"-1\";\nexports.VACANT_NODE_LABEL = VACANT_NODE_LABEL;\nvar VACANT_GRAPH_ID = -1;\nexports.VACANT_GRAPH_ID = VACANT_GRAPH_ID;\nvar AUTO_EDGE_ID = \"-1\";\nexports.AUTO_EDGE_ID = AUTO_EDGE_ID;\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\nexports.Edge = Edge;\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\nexports.Node = Node;\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\nexports.Graph = Graph;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanM/OTE1NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuVkFDQU5UX05PREVfTEFCRUwgPSBleHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gZXhwb3J0cy5WQUNBTlRfR1JBUEhfSUQgPSBleHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IGV4cG9ydHMuTm9kZSA9IGV4cG9ydHMuR3JhcGggPSBleHBvcnRzLkVkZ2UgPSBleHBvcnRzLkFVVE9fRURHRV9JRCA9IHZvaWQgMDtcbnZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IFZBQ0FOVF9FREdFX0lEO1xudmFyIFZBQ0FOVF9OT0RFX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gVkFDQU5UX05PREVfSUQ7XG52YXIgVkFDQU5UX0VER0VfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gVkFDQU5UX0VER0VfTEFCRUw7XG52YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0xBQkVMID0gVkFDQU5UX05PREVfTEFCRUw7XG52YXIgVkFDQU5UX0dSQVBIX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9HUkFQSF9JRCA9IFZBQ0FOVF9HUkFQSF9JRDtcbnZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5leHBvcnRzLkFVVE9fRURHRV9JRCA9IEFVVE9fRURHRV9JRDtcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBFZGdlKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfRURHRV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKHRvID09PSB2b2lkIDApIHtcbiAgICAgIHRvID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX0VER0VfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgdGhpcy50byA9IHRvO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIHJldHVybiBFZGdlO1xufSgpO1xuXG5leHBvcnRzLkVkZ2UgPSBFZGdlO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0cy5Ob2RlID0gTm9kZTtcblxudmFyIEdyYXBoID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGgoaWQsIGVkZ2VJZEF1dG9JbmNyZWFzZSwgZGlyZWN0ZWQpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfTk9ERV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZWRnZUlkQXV0b0luY3JlYXNlID09PSB2b2lkIDApIHtcbiAgICAgIGVkZ2VJZEF1dG9JbmNyZWFzZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZWRnZUlkQXV0b0luY3JlYXNlID0gZWRnZUlkQXV0b0luY3JlYXNlO1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVzID0gW107XG4gICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gICAgdGhpcy5ub2RlTGFiZWxNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgdGhpcy5kaXJlY3RlZCA9IGRpcmVjdGVkO1xuICB9XG5cbiAgR3JhcGgucHJvdG90eXBlLmdldE5vZGVOdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKGlkLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLm5vZGVNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIG5vZGUgPSBuZXcgTm9kZShpZCwgbGFiZWwpO1xuICAgIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICB0aGlzLm5vZGVNYXBbaWRdID0gbm9kZTtcbiAgICBpZiAoIXRoaXMubm9kZUxhYmVsTWFwW2xhYmVsXSkgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2goaWQpO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAodGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgfHwgaWQgPT09IHVuZGVmaW5lZCkgaWQgPSB0aGlzLmNvdW50ZXIrKztcbiAgICBpZiAodGhpcy5ub2RlTWFwW2Zyb21dICYmIHRoaXMubm9kZU1hcFt0b10gJiYgdGhpcy5ub2RlTWFwW3RvXS5lZGdlTWFwW2lkXSkgcmV0dXJuO1xuICAgIHZhciBlZGdlID0gbmV3IEVkZ2UoaWQsIGZyb20sIHRvLCBsYWJlbCk7XG4gICAgdGhpcy5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIHRoaXMuZWRnZU1hcFtpZF0gPSBlZGdlO1xuICAgIHRoaXMubm9kZU1hcFtmcm9tXS5hZGRFZGdlKGVkZ2UpO1xuICAgIGlmICghdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcblxuICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgdmFyIHJFZGdlID0gbmV3IEVkZ2UoaWQsIHRvLCBmcm9tLCBsYWJlbCk7XG4gICAgICB0aGlzLm5vZGVNYXBbdG9dLmFkZEVkZ2UockVkZ2UpO1xuICAgICAgdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdLnB1c2gockVkZ2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gR3JhcGg7XG59KCk7XG5cbmV4cG9ydHMuR3JhcGggPSBHcmFwaDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/gSpan/struct.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/gaddi.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/gaddi.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ./floydWarshall */ \"./node_modules/@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _gSpan = _interopRequireDefault(__webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/@antv/algorithm/lib/gSpan/gSpan.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util.uniqueId)] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = (0, _floydWarshall.default)(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = (0, _floydWarshall.default)(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, (0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = (0, _gSpan.default)(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = (0, _dijkstra.default)(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = (0, _dijkstra.default)(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\nvar _default = GADDI;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcz82NDlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLGdEQUFPOztBQUU1Qiw0Q0FBNEMsbUJBQU8sQ0FBQyw0RUFBaUI7O0FBRXJFLG9DQUFvQyxtQkFBTyxDQUFDLHdFQUFlOztBQUUzRCx1Q0FBdUMsbUJBQU8sQ0FBQyxrRUFBWTs7QUFFM0QsWUFBWSxtQkFBTyxDQUFDLDBEQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBOztBQUVBO0FBQ0EsOENBQThDO0FBQzlDLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdEQUFnRDs7QUFFaEQ7QUFDQTs7QUFFQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxrQkFBa0IsZ0NBQWdDO0FBQ3hHO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVAseUJBQXlCOztBQUV6Qix1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQ0FBb0M7O0FBRXBDLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsNkRBQTZEO0FBQzdEO0FBQ0E7O0FBRUEsa0VBQWtFO0FBQ2xFO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0Esd0ZBQXdGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRGQUE0RjtBQUM1RjtBQUNBO0FBQ0Esa0NBQWtDLDRCQUE0Qjs7QUFFOUQsMEZBQTBGOztBQUUxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBLHdDQUF3Qzs7QUFFeEMsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QjtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQO0FBQ0E7O0FBRUEsa0lBQWtJOztBQUVsSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLFFBQVE7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSCwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBOztBQUVBLGlDQUFpQyxRQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Q7O0FBRXREO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0Esd0VBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLDZHQUE2Rzs7QUFFN0c7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0pBQXdKO0FBQ3hKLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RkFBOEY7QUFDOUYsS0FBSyxFQUFFO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdHQUFnRztBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUEsbUJBQW1CLHlCQUF5QjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDLFFBQVE7QUFDOUM7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3RzbGliID0gcmVxdWlyZShcInRzbGliXCIpO1xuXG52YXIgX2Zsb3lkV2Fyc2hhbGwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Zsb3lkV2Fyc2hhbGxcIikpO1xuXG52YXIgX2dTcGFuID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9nU3Bhbi9nU3BhblwiKSk7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiDkuLogZ3JhcGhEYXRhIOS4reavj+S4quiKgueCueeUn+aIkOmCu+WxheWNleWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YVxuICogQHBhcmFtIHNwbVxuICogQHBhcmFtIG5vZGVMYWJlbFByb3BcbiAqIEBwYXJhbSBrIGst6L+R6YK7XG4gKi9cbnZhciBmaW5kS05laWdoYm9yVW5pdHMgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspIHtcbiAgaWYgKG5vZGVMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIG5vZGVMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoayA9PT0gdm9pZCAwKSB7XG4gICAgayA9IDI7XG4gIH1cblxuICB2YXIgdW5pdHMgPSBbXTtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzO1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdW5pdHMucHVzaChmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSk7XG4gIH0pO1xuICByZXR1cm4gdW5pdHM7XG59O1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXQgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIHZhciB1bml0Tm9kZUlkeHMgPSBbaV07XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgdmFyIGxhYmVsQ291bnRNYXAgPSB7fTtcbiAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYsIGopIHtcbiAgICBpZiAodiA8PSBrICYmIGkgIT09IGopIHtcbiAgICAgIHVuaXROb2RlSWR4cy5wdXNoKGopO1xuICAgICAgbmVpZ2hib3JzLnB1c2gobm9kZXNbal0pO1xuICAgICAgdmFyIGxhYmVsID0gbm9kZXNbal1bbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWxhYmVsQ291bnRNYXBbbGFiZWxdKSBsYWJlbENvdW50TWFwW2xhYmVsXSA9IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIGRpc3RzOiBbdl1cbiAgICAgIH07ZWxzZSB7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmNvdW50Kys7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzLnB1c2godik7XG4gICAgICB9XG4gICAgfVxuICB9KTsgLy8g5bCGIGxhYmVsQ291bnRNYXAg5Lit55qEIGRpc3RzIOaMieeFp+S7juWwj+WIsOWkp+aOkuW6j++8jOaWueS+v+WQjumdouS9v+eUqFxuXG4gIE9iamVjdC5rZXlzKGxhYmVsQ291bnRNYXApLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMgPSBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVJZHg6IGksXG4gICAgbm9kZUlkOiBub2Rlc1tpXS5pZCxcbiAgICBub2RlSWR4czogdW5pdE5vZGVJZHhzLFxuICAgIG5laWdoYm9yczogbmVpZ2hib3JzLFxuICAgIG5laWdoYm9yTnVtOiB1bml0Tm9kZUlkeHMubGVuZ3RoIC0gMSxcbiAgICBub2RlTGFiZWxDb3VudE1hcDogbGFiZWxDb3VudE1hcFxuICB9O1xufTtcbi8qKlxuICog6ZqP5py65a+75om+54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGtcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbm9kZU51bSDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbWF4Tm9kZVBhaXJOdW0g5a+75om+54K55a+555qE5pWw6YeP5LiN6LaF6L+HIG1heE5vZGVQYWlyTnVtXG4gKiBAcGFyYW0gc3BtIOacgOefrei3r+W+hOefqemYtVxuICovXG5cblxudmFyIGZpbmROb2RlUGFpcnNSYW5kb21seSA9IGZ1bmN0aW9uIGZpbmROb2RlUGFpcnNSYW5kb21seShrLCBub2RlTnVtLCBtYXhOb2RlUGFpck51bSwga05laWdoYm9yVW5pdHMsIHNwbSkge1xuICAvLyDmr4/kuKroioLngrnpnIDopoHpmo/mnLrmib7lh7rnmoTngrnlr7nmlbBcbiAgdmFyIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSBNYXRoLmNlaWwobWF4Tm9kZVBhaXJOdW0gLyBub2RlTnVtKTtcbiAgdmFyIG5vZGVQYWlyTWFwID0ge307XG4gIHZhciBmb3VuZE5vZGVQYWlyQ291bnQgPSAwOyAvLyDpgY3ljoboioLngrnvvIzkuLrmr4/kuKroioLngrnpmo/mnLrmib7lh7ogbm9kZVBhaXJOdW1FYWNoTm9kZSDkuKrngrnlr7nvvIzmu6HotrPot53nprvlsI/kuo4ga+OAguaJvuWIsOeahOeCueWvueaVsOmHj+i2hei/hyBtYXhOb2RlUGFpck51bSDmiJbmiYDmnInoioLngrnpgY3ljobnu5PmnZ/ml7bnu4jmraJcblxuICBrTmVpZ2hib3JVbml0cy5mb3JFYWNoKGZ1bmN0aW9uICh1bml0LCBpKSB7XG4gICAgLy8g6Iul5pyq6L6+5YiwIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzmiJblvqrnjq/mrKHmlbDlsI/kuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p77yM57un57ut5b6q546vXG4gICAgdmFyIG5vZGVQYWlyRm9ySUNvdW50ID0gMDtcbiAgICB2YXIgb3V0ZXJMb29wQ291bnQgPSAwO1xuICAgIHZhciBuZWlnaGJvcnMgPSB1bml0Lm5vZGVJZHhzOyAvLyB0aGUgZmlyc3Qgb25lIGlzIHRoZSBjZW50ZXIgbm9kZVxuXG4gICAgdmFyIG5laWdoYm9yTnVtID0gdW5pdC5uZWlnaGJvck51bSAtIDE7XG5cbiAgICB3aGlsZSAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICAvLyDlj6bkuIDnq6/oioLngrnlnKjoioLngrnmlbDnu4TkuK3nmoTnmoQgaW5kZXhcbiAgICAgIHZhciBvaWR4ID0gbmVpZ2hib3JzWzEgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZWlnaGJvck51bSldO1xuICAgICAgdmFyIGlubmVyTG9vcENvdW50ID0gMDsgLy8g6Iul6ZqP5py65b6X5Yiw55qE5Y+m5LiA56uvIGlkeCDkuI3nrKblkIjmnaHku7bvvIzliJnnu6fnu60gcmFuZG9t44CC5p2h5Lu25piv5LiN5piv5ZCM5LiA5Liq6IqC54K544CB6L+Z5Liq54K55a+55rKh5pyJ6KKr6K6w5b2V6L+H44CB6Led56a75bCP5LqOIGtcblxuICAgICAgd2hpbGUgKG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGksIFwiLVwiKS5jb25jYXQob2lkeCldIHx8IG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KG9pZHgsIFwiLVwiKS5jb25jYXQoaSldKSB7XG4gICAgICAgIG9pZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBub2RlTnVtKTtcbiAgICAgICAgaW5uZXJMb29wQ291bnQrKztcbiAgICAgICAgaWYgKGlubmVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgICB9XG5cbiAgICAgIGlmIChpbm5lckxvb3BDb3VudCA8IDIgKiBub2RlTnVtKSB7XG4gICAgICAgIC8vIOacqui+vuWIsOacgOWkp+W+queOr+asoeaVsO+8jOivtOaYjuaJvuWIsOS6huWQiOmAgueahOWPpuS4gOerr1xuICAgICAgICBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSA9IHtcbiAgICAgICAgICBzdGFydDogaSxcbiAgICAgICAgICBlbmQ6IG9pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IHNwbVtpXVtvaWR4XVxuICAgICAgICB9O1xuICAgICAgICBub2RlUGFpckZvcklDb3VudCsrO1xuICAgICAgICBmb3VuZE5vZGVQYWlyQ291bnQrKzsgLy8g5aaC5p6c5b2T5YmN5om+5Yiw55qE54K55a+55pWw6YeP6L6+5Yiw5LqG5LiK6ZmQ77yM6L+U5Zue57uT5p6cXG5cbiAgICAgICAgaWYgKGZvdW5kTm9kZVBhaXJDb3VudCA+PSBtYXhOb2RlUGFpck51bSkgcmV0dXJuIG5vZGVQYWlyTWFwO1xuICAgICAgfVxuXG4gICAgICBvdXRlckxvb3BDb3VudCsrO1xuICAgICAgaWYgKG91dGVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgfSAvLyDov5nkuKroioLngrnmsqHmnInmib7liLDotrPlpJ8gbm9kZVBhaXJOdW1FYWNoTm9kZSDnmoTngrnlr7njgILmm7TmlrAgbm9kZVBhaXJOdW1FYWNoTm9kZe+8jOiuqeWQjue7reiKgueCueaJvuabtOWkmueahOeCueWvuVxuXG5cbiAgICBpZiAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICB2YXIgZ2FwID0gbm9kZVBhaXJOdW1FYWNoTm9kZSAtIG5vZGVQYWlyRm9ySUNvdW50O1xuICAgICAgbm9kZVBhaXJOdW1FYWNoTm9kZSA9IChub2RlUGFpck51bUVhY2hOb2RlICsgZ2FwKSAvIChub2RlTnVtIC0gaSAtIDEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBub2RlUGFpck1hcDtcbn07XG4vKipcbiAqIOiuoeeul+aJgOaciSBub2RlUGFpck1hcCDkuK3oioLngrnlr7nnmoTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm75cbiAqIEBwYXJhbSBub2RlUGFpck1hcCDoioLngrnlr7kgbWFw77yMa2V5IOS4uiBub2RlMS5pZC1ub2RlMi5pZO+8jHZhbHVlIOS4uiB7IHN0YXJ0Tm9kZUlkeCwgZW5kTm9kZUlkeCwgZGlzdGFuY2UgfVxuICogQHBhcmFtIG5laWdoYm9yVW5pdHMg5q+P5Liq6IqC54K555qE6YK75bGF5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIGVkZ2VNYXAg6L6555qEIG1hcO+8jOaWueS+v+ajgOe0olxuICogQHBhcmFtIGNhY2hlZEluZHVjZWRHcmFwaE1hcCDnvJPlrZjnmoTnu5PmnpzvvIzkuIvmrKHov5vlhaXor6Xlh73mlbDlsIbnu6fnu63mm7TmlrDor6XnvJPlrZjvvIzoi6Uga2V5IOWcqOe8k+WtmOS4reWtmOWcqOWImeS4jemcgOimgemHjeWkjeiuoeeul1xuICovXG5cblxudmFyIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoID0gZnVuY3Rpb24gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgobm9kZVBhaXJNYXAsIG5laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSwgY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSB7XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgaWYgKCFjYWNoZWRJbmR1Y2VkR3JhcGhNYXApIGNhY2hlZEluZHVjZWRHcmFwaE1hcCA9IHt9O1xuICBPYmplY3Qua2V5cyhub2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIGlmIChjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgJiYgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0pIHJldHVybjtcbiAgICBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XSA9IHtcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gICAgdmFyIHBhaXIgPSBub2RlUGFpck1hcFtrZXldO1xuICAgIHZhciBzdGFydFVuaXROb2RlSWRzID0gKF9hID0gbmVpZ2hib3JVbml0c1twYWlyLnN0YXJ0XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZHhzO1xuICAgIHZhciBlbmRVbml0Tm9kZUlkcyA9IChfYiA9IG5laWdoYm9yVW5pdHNbcGFpci5lbmRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iubm9kZUlkeHM7XG4gICAgaWYgKCFzdGFydFVuaXROb2RlSWRzIHx8ICFlbmRVbml0Tm9kZUlkcykgcmV0dXJuOyAvLyDkuI3lrZjlnKjpgrvlhYPvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBlbmRTZXQgPSBuZXcgU2V0KGVuZFVuaXROb2RlSWRzKTtcbiAgICB2YXIgaW50ZXJzZWN0ID0gc3RhcnRVbml0Tm9kZUlkcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBlbmRTZXQuaGFzKHgpO1xuICAgIH0pOyAvLyDlj6/og73kvJrniIbmoIjvvIjlnKggMTU4MCArIDYgbm9kZXMgZnVsbC1jb25uZWN0ZWQg5pe25Ye6546w77yJXG5cbiAgICBpZiAoIWludGVyc2VjdCB8fCAhaW50ZXJzZWN0Lmxlbmd0aCkgcmV0dXJuOyAvLyDmsqHmnInkuqTpm4bvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBpbnRlcnNlY3RJZE1hcCA9IHt9O1xuICAgIHZhciBpbnRlcnNlY3RMZW5ndGggPSBpbnRlcnNlY3QubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnRlcnNlY3RMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpbnRlcnNlY3RbaV1dO1xuICAgICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0ubm9kZXMucHVzaChub2RlKTsgLy8g5bCG5Lqk6ZuG5Lit55qE54K55Yqg5YWl6K+x5a+85a2Q5Zu+XG5cbiAgICAgIGludGVyc2VjdElkTWFwW25vZGUuaWRdID0gdHJ1ZTtcbiAgICB9IC8vIOmBjeWOhuaJgOaciei+ueaVsOaNru+8jOWmguaenOi+ueeahOS4pOerr+mDveWcqOS6pOmbhuS4re+8jOWwhuivpei+ueWKoOWFpeivseWvvOWtkOWbvlxuXG5cbiAgICBncmFwaERhdGEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGludGVyc2VjdElkTWFwW2VkZ2Uuc291cmNlXSAmJiBpbnRlcnNlY3RJZE1hcFtlZGdlLnRhcmdldF0pIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY2FjaGVkSW5kdWNlZEdyYXBoTWFwO1xufTtcbi8qKlxuICog6K6h566XIHN0cmN1dHJlIOWcqCBncmFwaCDkuIrnmoTljLnphY3mlbDph49cbiAqIEBwYXJhbSBncmFwaCDlm77mlbDmja5cbiAqIEBwYXJhbSBzdHJ1Y3R1cmUg55uu5YmN5pSv5oyB5Y+q5pyJ5Lik5Liq6IqC54K55LiA5p2h6L6555qE5pyA566A5Y2V57uT5p6EXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnnsbvlnovlrZfmrrXlkI1cbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueexu+Wei+Wtl+auteWQjVxuICovXG5cblxudmFyIGdldE1hdGNoZWRDb3VudCA9IGZ1bmN0aW9uIGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYSwgX2I7XG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcbiAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICB9KTtcbiAgdmFyIGNvdW50ID0gMDtcbiAgaWYgKCEoKF9hID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLmVkZ2VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAoKF9iID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA8IDIpIHJldHVybiAwO1xuICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsID0gbm9kZU1hcFtlLnNvdXJjZV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHRhcmdldExhYmVsID0gbm9kZU1hcFtlLnRhcmdldF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDEgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDIgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ckVkZ2VMYWJlbCA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlc1swXVtlZGdlTGFiZWxQcm9wXTtcbiAgICBpZiAoZVtlZGdlTGFiZWxQcm9wXSAhPT0gc3RyRWRnZUxhYmVsKSByZXR1cm47XG5cbiAgICBpZiAoc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDEgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgfHwgc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDEpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbi8qKlxuICogc3RydWN0dXJlcyDkuK3lr7vmib7mnIDlhbfmnInku6PooajmgKfnmoTkuIDkuKrjgILov5nkuKrnu5PmnoTmmK/kvb/lvpcgbWF0Y2hlZENvdW50TWFwIOeahOWIhue7hOaWueW8j+exu+WGhemXtOi3neacgOWwj++8jOexu+mXtOmXtOi3neacgOWkp1xuICogQHBhcmFtIG1hdGNoZWRDb3VudE1hcCDmr4/kuKogc3RydWN0dXJlIOWIhuexu+WQjueahOWQhOWbvuWMuemFjeaVsOmHj++8jOagvOW8jyB7IFtzdHJjdHVyZS5pZHhdOiB7IFtpbnRlckluZHVjZWRHcmFwaEtleV06IGNvdW50IH0gfVxuICogQHBhcmFtIHN0cnVjdHVyZU51bSBzdHJjdXR1cmUg5Liq5pWw77yM5LiOIG1hdGNoZWRDb3VudE1hcC5sZW5ndGgg5a+55bqUXG4gKiBAcGFyYW0gc3RydWN0dXJlc1xuICovXG5cblxudmFyIGZpbmRSZXByZXNlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbiBmaW5kUmVwcmVzZW50U3RydWN0dXJlKG1hdGNoZWRDb3VudE1hcCwgc3RydWN0dXJlTnVtLCBzdHJ1Y3R1cmVzKSB7XG4gIHZhciBtYXhPZmZzZXQgPSBJbmZpbml0eSxcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gMDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIOS4gOenjeWIhue7hOeahCBtYXDvvIxrZXkg5pivIGludEdyYXBoIOeahCBrZXnvvIx2YWx1ZSDmmK8gc3RydWN0dXJlc1tpXSDnmoTljLnphY3kuKrmlbBcbiAgICB2YXIgY291bnRNYXBJID0gbWF0Y2hlZENvdW50TWFwW2ldOyAvLyDmjInnhacgdmFsdWUg5Li66K+l57uE5o6S5bqP77yM55Sf5oiQIGtleXMg55qE5pWw57uE77yaXG5cbiAgICB2YXIgc29ydGVkR3JhcGhLZXlzID0gT2JqZWN0LmtleXMoY291bnRNYXBJKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gY291bnRNYXBJW2FdIC0gY291bnRNYXBJW2JdO1xuICAgIH0pOyAvLyDlhbEgMTAwIOS4qiBncmFwaEtleXPvvIzlsIYgZ3JhcGhLZXlzIOaMiemhuuW6j+WIhuS4uiBncm91cE51bSDnu4RcblxuICAgIHZhciBncm91cE51bSA9IDEwO1xuICAgIHZhciBjbHVzdGVycyA9IFtdOyAvLyDmgLvlhbHmnIkgZ3JvdXBOdW0g5Liq6aG5XG5cbiAgICBzb3J0ZWRHcmFwaEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBqKSB7XG4gICAgICBpZiAoIWNsdXN0ZXJzW2ogJSBncm91cE51bV0pIGNsdXN0ZXJzW2ogJSBncm91cE51bV0gPSB7XG4gICAgICAgIGdyYXBoczogW10sXG4gICAgICAgIHRvdGFsQ291bnQ6IDAsXG4gICAgICAgIGF2ZUNvdW50OiAwXG4gICAgICB9O1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS5ncmFwaHMucHVzaChrZXkpO1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS50b3RhbENvdW50ICs9IGNvdW50TWFwSVtrZXldO1xuICAgIH0pOyAvLyDorqHnrpcgY2x1c3RlciDkuI4gY2x1c3RlciDkuYvpl7TnmoTot53nprsgaW5uZXJEaXN077yM5q+P5LiqIGNsdXN0ZXIg5YaF6YOo55qE6Led56a7IGludHJhRGlzdFxuXG4gICAgdmFyIGF2ZUludHJhRGlzdCA9IDA7IC8vIOivpeexu+eahOexu+WGheW5s+Wdh+WAvFxuXG4gICAgdmFyIGF2ZUNvdW50cyA9IFtdOyAvLyDnsbvlhoXlubPlnYfljLnphY3mlbDph4/vvIzlsIbnlKjkuo7orqHnrpfnsbvpl7Tot53nprtcblxuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoc0luQ2x1c3Rlcikge1xuICAgICAgLy8g57G75YaF5Z2H5YC8XG4gICAgICB2YXIgYXZlQ291bnQgPSBncmFwaHNJbkNsdXN0ZXIudG90YWxDb3VudCAvIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmF2ZUNvdW50ID0gYXZlQ291bnQ7XG4gICAgICBhdmVDb3VudHMucHVzaChhdmVDb3VudCk7IC8vIOWvueS6juavj+exu++8jOiuoeeul+exu+WGhemXtOi3neW5s+Wdh+WAvFxuXG4gICAgICB2YXIgYXZlSW50cmFQZXJDbHVzdGVyID0gMDtcbiAgICAgIHZhciBncmFwaHNOdW0gPSBncmFwaHNJbkNsdXN0ZXIubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaEtleTEsIGopIHtcbiAgICAgICAgdmFyIGdyYXBoMUNvdW50ID0gY291bnRNYXBJW2dyYXBoS2V5MV07XG4gICAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkyLCBrKSB7XG4gICAgICAgICAgaWYgKGogPT09IGspIHJldHVybjtcbiAgICAgICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgKz0gTWF0aC5hYnMoZ3JhcGgxQ291bnQgLSBjb3VudE1hcElbZ3JhcGhLZXkyXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgLz0gZ3JhcGhzTnVtICogKGdyYXBoc051bSAtIDEpIC8gMjtcbiAgICAgIGF2ZUludHJhRGlzdCArPSBhdmVJbnRyYVBlckNsdXN0ZXI7XG4gICAgfSk7XG4gICAgYXZlSW50cmFEaXN0IC89IGNsdXN0ZXJzLmxlbmd0aDsgLy8g55So57G75YaF5Z2H5YC86K6h566X57G76Ze06LedXG5cbiAgICB2YXIgYXZlSW50ZXJEaXN0ID0gMDsgLy8g57G76Ze06Ze06Led5bmz5Z2H5YC8XG5cbiAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQxLCBqKSB7XG4gICAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQyLCBrKSB7XG4gICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgIGF2ZUludGVyRGlzdCArPSBNYXRoLmFicyhhdmVDb3VudDEgLSBhdmVDb3VudDIpO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRlckRpc3QgLz0gYXZlQ291bnRzLmxlbmd0aCAqIChhdmVDb3VudHMubGVuZ3RoIC0gMSkgLyAyO1xuICAgIH0pOyAvLyDlr7vmib4gKOexu+mXtOmXtOi3neWdh+WAvC3nsbvlhoXpl7Tot53lnYflgLwpIOacgOWkp+eahOS4gOenjeWIhue7hOaWueW8j++8iOWvueW6lOeahCBzdHJ1Y3R1cmUg5bCx5piv5pyA57uI6KaB5om+55qE5ZSv5LiAIERTKEcp77yJXG5cbiAgICB2YXIgb2Zmc2V0ID0gYXZlSW50ZXJEaXN0IC0gYXZlSW50cmFEaXN0O1xuXG4gICAgaWYgKG1heE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgbWF4T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmVwcmVzZW50Q2x1c3RlclR5cGUgPSBpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnVjdHVyZU51bTsgaSsrKSB7XG4gICAgX2xvb3BfMShpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RydWN0dXJlOiBzdHJ1Y3R1cmVzW3JlcHJlc2VudENsdXN0ZXJUeXBlXSxcbiAgICBzdHJ1Y3R1cmVDb3VudE1hcDogbWF0Y2hlZENvdW50TWFwW3JlcHJlc2VudENsdXN0ZXJUeXBlXVxuICB9O1xufTtcblxudmFyIGdldE5vZGVNYXBzID0gZnVuY3Rpb24gZ2V0Tm9kZU1hcHMobm9kZXMsIG5vZGVMYWJlbFByb3ApIHtcbiAgdmFyIG5vZGVNYXAgPSB7fSxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBkZWdyZWU6IDAsXG4gICAgICBpbkRlZ3JlZTogMCxcbiAgICAgIG91dERlZ3JlZTogMFxuICAgIH07XG4gICAgdmFyIGxhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICBpZiAoIW5vZGVMYWJlbE1hcFtsYWJlbF0pIG5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICBub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2gobm9kZSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVNYXA6IG5vZGVNYXAsXG4gICAgbm9kZUxhYmVsTWFwOiBub2RlTGFiZWxNYXBcbiAgfTtcbn07XG5cbnZhciBnZXRFZGdlTWFwcyA9IGZ1bmN0aW9uIGdldEVkZ2VNYXBzKGVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKSB7XG4gIHZhciBlZGdlTWFwID0ge30sXG4gICAgICBlZGdlTGFiZWxNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSwgaSkge1xuICAgIGVkZ2VNYXBbXCJcIi5jb25jYXQoX3V0aWwudW5pcXVlSWQpXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIGVkZ2U6IGVkZ2VcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IGVkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKCFlZGdlTGFiZWxNYXBbbGFiZWxdKSBlZGdlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuICAgIHZhciBzb3VyY2VOb2RlID0gbm9kZU1hcFtlZGdlLnNvdXJjZV07XG5cbiAgICBpZiAoc291cmNlTm9kZSkge1xuICAgICAgc291cmNlTm9kZS5kZWdyZWUrKztcbiAgICAgIHNvdXJjZU5vZGUub3V0RGVncmVlKys7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldE5vZGUgPSBub2RlTWFwW2VkZ2UudGFyZ2V0XTtcblxuICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmRlZ3JlZSsrO1xuICAgICAgdGFyZ2V0Tm9kZS5pbkRlZ3JlZSsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZWRnZU1hcDogZWRnZU1hcCxcbiAgICBlZGdlTGFiZWxNYXA6IGVkZ2VMYWJlbE1hcFxuICB9O1xufTtcbi8qKlxuICog6L6T5Ye65pyA55+t6Lev5b6E55qEIG1hcO+8jGtleSDkuLogc291cmNlTm9kZS5pZC10YXJnZXROb2RlLmlk77yMdmFsdWUg5Li66L+Z5Lik5Liq6IqC54K555qE5pyA55+t6Lev5b6E6ZW/5bqmXG4gKiBAcGFyYW0gbm9kZXNcbiAqIEBwYXJhbSBzcG1cbiAqIEBwYXJhbSBkaXJlY3RlZFxuICovXG5cblxudmFyIGdldFNwbU1hcCA9IGZ1bmN0aW9uIGdldFNwbU1hcChub2Rlcywgc3BtLCBkaXJlY3RlZCkge1xuICB2YXIgbGVuZ3RoID0gc3BtLmxlbmd0aDtcbiAgdmFyIG1hcCA9IHt9O1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIHN0YXJ0ID0gZGlyZWN0ZWQgPyAwIDogaSArIDE7XG4gICAgdmFyIGlJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBqSWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIHZhciBkaXN0ID0gcm93W2pdO1xuICAgICAgbWFwW1wiXCIuY29uY2F0KGlJZCwgXCItXCIpLmNvbmNhdChqSWQpXSA9IGRpc3Q7XG4gICAgICBpZiAoIWRpcmVjdGVkKSBtYXBbXCJcIi5jb25jYXQoaklkLCBcIi1cIikuY29uY2F0KGlJZCldID0gZGlzdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbWFwO1xufTtcbi8qKlxuICog6K6h566X5LiA5a+56IqC54K577yIbm9kZTHvvIxub2RlMu+8ieeahCBORFMg6Led56a7XG4gKiBAcGFyYW0gZ3JhcGgg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZTFcbiAqIEBwYXJhbSBub2RlMlxuICovXG5cblxudmFyIGdldE5EU0Rpc3QgPSBmdW5jdGlvbiBnZXRORFNEaXN0KGdyYXBoLCBub2RlMSwgbm9kZTIsIG5vZGVNYXAsIHNwRGlzdCwga05laWdoYm9yVW5pdHMsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCwgY2FjaGVkTkRTTWFwLCBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCkge1xuICB2YXIgX2E7XG5cbiAgdmFyIGtleSA9IFwiXCIuY29uY2F0KG5vZGUxLmlkLCBcIi1cIikuY29uY2F0KG5vZGUyLmlkKTtcbiAgaWYgKGNhY2hlZE5EU01hcCAmJiBjYWNoZWRORFNNYXBba2V5XSkgcmV0dXJuIGNhY2hlZE5EU01hcFtrZXldO1xuICB2YXIgaW50ZXJJbmR1Y2VkR3JhcGggPSBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA/IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV0gOiB1bmRlZmluZWQ7IC8vIOiLpeayoeaciee8k+WtmOebuOS6pOmCu+WxheivseWvvOWtkOWbvu+8jOiuoeeul1xuXG4gIGlmICghaW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgICB2YXIgcGFpck1hcCA9IChfYSA9IHt9LCBfYVtrZXldID0ge1xuICAgICAgc3RhcnQ6IG5vZGVNYXBbbm9kZTEuaWRdLmlkeCxcbiAgICAgIGVuZDogbm9kZU1hcFtub2RlMi5pZF0uaWR4LFxuICAgICAgZGlzdGFuY2U6IHNwRGlzdFxuICAgIH0sIF9hKTtcbiAgICBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKHBhaXJNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpO1xuICAgIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGhba2V5XTtcbiAgfVxuXG4gIHJldHVybiBnZXRNYXRjaGVkQ291bnQoaW50ZXJJbmR1Y2VkR3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG59O1xuLyoqXG4gKiDorqHnrpcgcGF0dGVybiDkuIrnu6nngrnnmoTluqbmlbDlubblrZjlgqjliLAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFxuICovXG5cblxudmFyIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCA9IGZ1bmN0aW9uIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBuZWlnaGJvckxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCkge1xuICB2YXIgX2EsIF9iLCBfYztcblxuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IChfYSA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSAoX2IgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5EZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gKF9jID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm91dERlZ3JlZTtcblxuICBpZiAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBJbmZpbml0eTtcbiAgICBwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdLmZvckVhY2goZnVuY3Rpb24gKHBhdHRlcm5Ob2RlV2l0aExhYmVsKSB7XG4gICAgICB2YXIgcGF0dGVybk5vZGVEZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uZGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPiBwYXR0ZXJuTm9kZURlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IHBhdHRlcm5Ob2RlRGVncmVlO1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlSW5EZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uaW5EZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID4gcGF0dGVybk5vZGVJbkRlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gcGF0dGVybk5vZGVJbkRlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZU91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5Ob2RlV2l0aExhYmVsLmlkXS5vdXREZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA+IHBhdHRlcm5Ob2RlT3V0RGVncmVlKSBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gcGF0dGVybk5vZGVPdXREZWdyZWU7XG4gICAgfSk7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9IHtcbiAgICAgIGRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgIGluRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICBvdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgfTtcbn07XG4vKipcbiAqIEdBRERJIOaooeW8j+WMuemFjVxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBwYXR0ZXJuIOaQnOe0ouWbvu+8iOmcgOimgeWcqOWOn+WbvuS4iuaQnOe0oueahOaooeW8j++8ieaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuiuoeeul+acieWQkeWbvu+8jOm7mOiupCBmYWxzZVxuICogQHBhcmFtIGsg5Y+C5pWwIGvvvIzooajnpLogay3ov5HpgrtcbiAqIEBwYXJhbSBsZW5ndGgg5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K55pWw5o2u5Lit5Luj6KGo6IqC54K55qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueaVsOaNruS4reS7o+ihqOi+ueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKi9cblxuXG52YXIgR0FEREkgPSBmdW5jdGlvbiBHQURESShncmFwaERhdGEsIHBhdHRlcm4sIGRpcmVjdGVkLCBrLCBsZW5ndGgsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIF9hO1xuXG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGVkZ2VMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIGVkZ2VMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoIWdyYXBoRGF0YSB8fCAhZ3JhcGhEYXRhLm5vZGVzKSByZXR1cm47IC8vIOWIhuS4uuS4ieatpe+8mlxuICAvLyAwLiDpooTorqHnrpfvvJroioLngrkv6L655pWw77yM6YK75o6l55+p6Zi144CB5pyA55+t6Lev5b6E55+p6Zi1XG4gIC8vIDEuIOWkhOeQhuWOn+WbviBncmFwaERhdGHjgILlho3liIbkuLogMX41IOWwj+atpVxuICAvLyAyLiDljLnphY1cbiAgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmU6IHByZXByb2Nlc3NpbmcgLS0tLS0tLVwiKTtcbiAgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtS0tLS0tLS1cblxuICB2YXIgbm9kZU51bSA9IGdyYXBoRGF0YS5ub2Rlcy5sZW5ndGg7XG4gIGlmICghbm9kZU51bSkgcmV0dXJuOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlLXByZS4xOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IGZvciBncmFwaCAtLS0tLS0tXCIpO1xuXG4gIHZhciBzcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UtcHJlLjI6IGNhbGMgc2hvcnRlc3QgcGF0aCBtYXRyaXggZm9yIHBhdHRlcm4gLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHBhdHRlcm5TcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsICgwLCBfdHNsaWIuX19zcHJlYWRBcnJheSkoKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMC4yOiBnb2luZyB0byBjYWxjdWxhdGUgaW50ZXJzZWN0IG5laWdoYm9yIGluZHVjZWQgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyAxLjIuIOeUn+aIkOS4iumdouiKgueCueWvueeahOebuOW6lOebuOS6pOmCu+WxheivseWvvOWtkOWbvuOAguagvOW8j+S4uiB7J2JlZ2luTm9kZUlkeC1lbmROb2RlSWR4Jzoge25vZGVzOiBbXSwgZWRnZXM6IFtdfX1cblxuICB2YXIgaW50R01hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyc01hcCwga05laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSk7IC8vIDEuMy4g5L2/55SoIGdTcGFuIOeul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8ieiuoeeulyBJU0ludEcg55qE5YmNIDEwIOS4qumikeeOh+acgOmrmOeahOWtkOe7k+aehO+8iDMtNOadoei+ue+8iVxuXG4gIHZhciB0b3AgPSAxMCxcbiAgICAgIG1pblN1cHBvcnQgPSAxLFxuICAgICAgbWluTm9kZU51bSA9IDEsXG4gICAgICBtYXhOb2RlTnVtID0gNDtcbiAgdmFyIHBhcmFtcyA9IHtcbiAgICBncmFwaHM6IGludEdNYXAsXG4gICAgbm9kZUxhYmVsUHJvcDogbm9kZUxhYmVsUHJvcCxcbiAgICBlZGdlTGFiZWxQcm9wOiBlZGdlTGFiZWxQcm9wLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICBtYXhOb2RlTnVtOiBtYXhOb2RlTnVtLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9OyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMTogKGdTcGFuKSBnb2luZyB0byBmaW5kIGZyZXF1ZW50IHN0cnVjdHVyZSBkc0cgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UxLjE6IGdvaW5nIHRvIHJ1biBnU3BhbiAtLS0tLS0tXCIpO1xuICAvLyDmmoLml7blgYforr7nlJ/miJDnmoQgc3ViIHN0cnVjdHVyZSDpg73lj6rmnInkuIDmnaHovrlcblxuICB2YXIgZnJlU3RydWN0dXJlcyA9ICgwLCBfZ1NwYW4uZGVmYXVsdCkocGFyYW1zKS5zbGljZSgwLCB0b3ApOyAvLyBzdHJ1Y3R1cmVOdW0g5Y+v6IO95bCP5LqOIHRvcFxuXG4gIHZhciBzdHJ1Y3R1cmVOdW0gPSBmcmVTdHJ1Y3R1cmVzLmxlbmd0aDsgLy8gMS40LiDorqHnrpfkuIrov7AgMTAg5Liq5a2Q57uT5p6E5ZyoIGludEdNYXAg5Lit5q+P5Liq6K+x5a+85a2Q5Zu+55qE5Yy56YWN5Liq5pWwXG5cbiAgdmFyIG1hdGNoZWRDb3VudE1hcCA9IFtdO1xuICBmcmVTdHJ1Y3R1cmVzLmZvckVhY2goZnVuY3Rpb24gKHN0cnVjdHVyZSwgaSkge1xuICAgIG1hdGNoZWRDb3VudE1hcFtpXSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGludEdNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGdyYXBoID0gaW50R01hcFtrZXldO1xuICAgICAgdmFyIHN1YlN0cnVjdHVyZUNvdW50ID0gZ2V0TWF0Y2hlZENvdW50KGdyYXBoLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgbWF0Y2hlZENvdW50TWFwW2ldW2tleV0gPSBzdWJTdHJ1Y3R1cmVDb3VudDtcbiAgICB9KTtcbiAgfSk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UxLjE6IGdvaW5nIHRvIGZpbmQgdGhlIG1vc3QgcmVwcmVzZW50IHN0cnVjdXRyZSAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gMS41LiDlr7nkuo7mr4/kuKrlrZDnu5PmnoTvvIzmoLnmja7ljLnphY3kuKrmlbDkuLogaW50R01hcCDkuK3nmoTor7Hlr7zlrZDlm77liIbnu4TvvIznlJ/miJAgc3RydWN0dXJlTnVtIOenjeWIhue7hFxuICAvLyDorqHnrpfmr4/np43liIbnu4TnmoTnsbvpl7Tot53lkoznsbvlhoXpl7Tot53vvIzmib7liLDnsbvpl7Tot53mnIDlpKfjgIHnsbvlhoXpl7Tot53mnIDlsI/nmoTkuIDnp43liIbnu4TvvIzov5nnp43liIbnu4Tlr7nlupTnmoTlrZDnu5PmnoTooqvpgInkuLrllK/kuIDku6PooajmgKflrZDnu5PmnoQgRFMoRylcblxuICB2YXIgX2QgPSBmaW5kUmVwcmVzZW50U3RydWN0dXJlKG1hdGNoZWRDb3VudE1hcCwgc3RydWN0dXJlTnVtLCBmcmVTdHJ1Y3R1cmVzKSxcbiAgICAgIGRzRyA9IF9kLnN0cnVjdHVyZSxcbiAgICAgIG5kc0Rpc3QgPSBfZC5zdHJ1Y3R1cmVDb3VudE1hcDsgLy8gLS0tLS0tLS0g56ys5LqM5q2l77yM5Yy56YWNLS0tLS0tLVxuICAvLyAyLjEg5om+5Yiw5LuOIFEg5Lit55qE5LiA5Liq6IqC54K55L2c5Li66LW35aeL6IqC54K577yM5a+75om+IEcg5Lit55qE5Yy56YWN44CC6L+Z5Liq5YW25a6e6IqC54K555qE5qCH562+5Y+v5Lul5ZyoIEcg5Lit5om+5Yiw5pyA5aSa55qE6IqC54K5XG5cblxuICB2YXIgYmVnaW5QTm9kZSA9IHBhdHRlcm4ubm9kZXNbMF0sXG4gICAgICBjYW5kaWRhdGVzID0gW10sXG4gICAgICBsYWJlbCA9IChfYSA9IHBhdHRlcm4ubm9kZXNbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtub2RlTGFiZWxQcm9wXSxcbiAgICAgIG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsID0gLUluZmluaXR5O1xuICBwYXR0ZXJuLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgcExhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICB2YXIgbm9kZXNXaXRoU2FtZUxhYmVsID0gbm9kZUxhYmVsTWFwW3BMYWJlbF07XG5cbiAgICBpZiAoKG5vZGVzV2l0aFNhbWVMYWJlbCA9PT0gbnVsbCB8fCBub2Rlc1dpdGhTYW1lTGFiZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVzV2l0aFNhbWVMYWJlbC5sZW5ndGgpID4gbWF4Tm9kZU51bVdpdGhTYW1lTGFiZWwpIHtcbiAgICAgIG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsID0gbm9kZXNXaXRoU2FtZUxhYmVsLmxlbmd0aDtcbiAgICAgIGNhbmRpZGF0ZXMgPSBub2Rlc1dpdGhTYW1lTGFiZWw7XG4gICAgICBsYWJlbCA9IHBMYWJlbDtcbiAgICAgIGJlZ2luUE5vZGUgPSBub2RlO1xuICAgIH1cbiAgfSk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UyOiBnb2luZyB0byBmaW5kIGNhbmRpZGF0ZXMgLS0tLS0tLVwiKTtcbiAgLy8g5YWo5bGA57yT5a2Y77yM6YG/5YWN6YeN5aSN6K6h566XXG5cbiAgdmFyIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAgPSB7fTsgLy8ga2V5IOaYryBsYWJlbO+8jHZhbHVlIOaYr+ivpSBsYWJlbCDoioLngrnnmoTmnIDlsI/luqbmlbBcblxuICB2YXIgcGF0dGVybkludEdyYXBoTWFwID0ge30sXG4gICAgICBwYXR0ZXJuTkRTRGlzdCA9IHt9LFxuICAgICAgLy8ga2V5IOS4uiBub2RlLmlkLW5vZGUuaWRcbiAgcGF0dGVybk5EU0Rpc3RNYXAgPSB7fTsgLy8ga2V5IOS4uiBub2RlLmlkLWxhYmVsMu+8jHZhbHVlIG5kc+i3neemu+WAvOaVsOe7hO+8iOaMieS7juWkp+WIsOWwj+aOkuW6j++8jOaXoOmcgOWFs+W/g+WFt+S9k+WvueW6lOWTquS4qiBub2RlMu+8iVxuICAvLyAyLjIuMiDlr7nkuo4gUSDkuK3nmoTlj6bkuIDkuKrmoIfnrb7nmoQgayDkuKroioLngrnvvIzorqHnrpflroPku6zliLAgbm9kZSDnmoTmnIDnn63ot6/lvoTku6Xlj4ogTkRTIOi3neemu1xuXG4gIHZhciBwYXR0ZXJuU3BEaXN0ID0ge307XG4gIHZhciBwYXR0ZXJuU3BEaXN0QmFjayA9IHt9O1xuICBPYmplY3Qua2V5cyhwYXR0ZXJuTm9kZUxhYmVsTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbDIsIGopIHtcbiAgICBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0gPSBbXTtcblxuICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXSA9IFtdO1xuICAgIH1cblxuICAgIHZhciBtYXhEaXN0ID0gLUluZmluaXR5O1xuICAgIHZhciBwYXR0ZXJuTm9kZXNXaXRoTGFiZWwyID0gcGF0dGVybk5vZGVMYWJlbE1hcFtsYWJlbDJdO1xuICAgIHZhciBwYXR0ZXJuTm9kZVBhaXJNYXAgPSB7fTtcbiAgICBwYXR0ZXJuTm9kZXNXaXRoTGFiZWwyLmZvckVhY2goZnVuY3Rpb24gKG5vZGVXaXRoTGFiZWwyKSB7XG4gICAgICB2YXIgZGlzdCA9IHBhdHRlcm5TcG1NYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChub2RlV2l0aExhYmVsMi5pZCldO1xuICAgICAgZGlzdCAmJiBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0ucHVzaChkaXN0KTtcbiAgICAgIGlmIChtYXhEaXN0IDwgZGlzdCkgbWF4RGlzdCA9IGRpc3Q7XG4gICAgICBwYXR0ZXJuTm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChub2RlV2l0aExhYmVsMi5pZCldID0ge1xuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgZW5kOiBwYXR0ZXJuTm9kZU1hcFtub2RlV2l0aExhYmVsMi5pZF0uaWR4LFxuICAgICAgICBkaXN0YW5jZTogZGlzdFxuICAgICAgfTtcblxuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBkaXN0QmFjayA9IHBhdHRlcm5TcG1NYXBbXCJcIi5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQsIFwiLVwiKS5jb25jYXQoYmVnaW5QTm9kZS5pZCldO1xuICAgICAgICBkaXN0QmFjayAmJiBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdLnB1c2goZGlzdEJhY2spO1xuICAgICAgfVxuICAgIH0pOyAvLyBzcERpc3RbbGFiZWwyXSDmjInnhafku47lsI/liLDlpKfmjpLluo9cblxuICAgIHBhdHRlcm5TcERpc3RbbGFiZWwyXSA9IHBhdHRlcm5TcERpc3RbbGFiZWwyXS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gICAgaWYgKGRpcmVjdGVkKSBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdID0gcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7IC8vIOiuoeeulyBRIOS4reaJgOaciSBsYWJlbDIg6IqC54K55YiwIGJlZ2luUE5vZGUg55qEIE5EUyDot53nprtcbiAgICAvLyDmiYDmnIkgbGFiZWwyIOiKgueCueWIsCBiZWdpblBOb2RlIOeahOmCu+WxheebuOS6pOivseWvvOWtkOWbvu+8mlxuICAgIC8vIGtleTogbm9kZTEuaWQtbm9kZTIuaWRcblxuICAgIHBhdHRlcm5JbnRHcmFwaE1hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKHBhdHRlcm5Ob2RlUGFpck1hcCwgcGF0dGVybktOZWlnaGJvclVuaXRzLCBwYXR0ZXJuLCBwYXR0ZXJuSW50R3JhcGhNYXApOyAvLyBwYXR0ZXJuIOS4rSBiZWdpbk5vZGUg5Yiw5b2T5YmNIGxhYmVsMiDoioLngrkg55qEIE5EUyDot53nprvvvIjmlbDnu4TvvIzml6DpnIDlhbPlv4PlhbfkvZPlr7nlupTliLDlk6rkuKroioLngrnvvIlcblxuICAgIHZhciBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKHBhdHRlcm5Ob2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAocGF0dGVybk5EU0Rpc3Rba2V5XSkge1xuICAgICAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5wdXNoKHBhdHRlcm5ORFNEaXN0W2tleV0pO1xuICAgICAgICByZXR1cm47IC8vIOe8k+WtmOi/h+WImeS4jemcgOimgeWGjeasoeiuoeeul1xuICAgICAgfVxuXG4gICAgICB2YXIgcGF0dGVybkludEdyYXBoID0gcGF0dGVybkludEdyYXBoTWFwW2tleV07XG4gICAgICBwYXR0ZXJuTkRTRGlzdFtrZXldID0gZ2V0TWF0Y2hlZENvdW50KHBhdHRlcm5JbnRHcmFwaCwgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5LnB1c2gocGF0dGVybk5EU0Rpc3Rba2V5XSk7XG4gICAgfSk7IC8vIOagueaNruWAvOS4uiBjdXJyZW50UGF0dGVybk5EU0Rpc3Qg5LuO5aSn5Yiw5bCP5o6S5bqPXG5cbiAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheSA9IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBiIC0gYTtcbiAgICB9KTtcbiAgICBwYXR0ZXJuTkRTRGlzdE1hcFtcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KGxhYmVsMildID0gY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXk7XG4gICAgaWYgKGxhYmVsMiA9PT0gbGFiZWwpIHJldHVybjtcbiAgICB2YXIgY2FuZGlkYXRlc051bSA9IChjYW5kaWRhdGVzID09PSBudWxsIHx8IGNhbmRpZGF0ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhbmRpZGF0ZXMubGVuZ3RoKSB8fCAwO1xuXG4gICAgdmFyIF9sb29wXzQgPSBmdW5jdGlvbiBfbG9vcF80KG0pIHtcbiAgICAgIHZhciBjTm9kZSA9IGNhbmRpZGF0ZXNbbV07IC8vIHBydW5lMe+8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDnmoQga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrnkuKrmlbDlsJHkuo4gcGF0dGVybiDkuK0gbGFiZWwyIOS4quaVsO+8jOWIoOWOu+Wug1xuXG4gICAgICB2YXIgZ3JhcGhOZWlnaGJvclVuaXQgPSBrTmVpZ2hib3JVbml0c1tub2RlTWFwW2NOb2RlLmlkXS5pZHhdO1xuICAgICAgdmFyIGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAgPSBncmFwaE5laWdoYm9yVW5pdC5ub2RlTGFiZWxDb3VudE1hcFtsYWJlbDJdO1xuICAgICAgdmFyIHBhdHRlcm5MYWJlbDJOdW0gPSBwYXR0ZXJuTm9kZUxhYmVsTWFwW2xhYmVsMl0ubGVuZ3RoO1xuXG4gICAgICBpZiAoIWdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAgfHwgZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcC5jb3VudCA8IHBhdHRlcm5MYWJlbDJOdW0pIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lMu+8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDliLAga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrnmnIDnn63ot6/lvoTlpKfkuo4gcGF0dGVyblNwRGlzdFtsYWJlbDJd77yM5Yig5Y675a6DXG4gICAgICAvLyAocHJ1bmUyIOinhOWImeWNs++8mmNhbmRpZGF0ZSDnm7jlhbPnmoTmnIDnn63ot6/lvoTnmoTmnIDlpKcgc3BEaXN0W2xhYmVsMl0ubGVuZ3RoIOS4qu+8jOaMieeFp+Wkp+Wwj+mhuuW6j+S+neasoeWSjCBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0g5Lit55qE5YC85q+U6L6D77yM5Y+q6KaB6YGH5Yiw5LiA5Liq5pivIEcgPiBRIOeahO+8jOWwseWIoOWOu+i/meS4qiBjYW5kaWRhdGUpXG5cblxuICAgICAgdmFyIHBydW5lMkludmFsaWQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBwYXR0ZXJuTGFiZWwyTnVtOyBuKyspIHtcbiAgICAgICAgaWYgKGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAuZGlzdHNbbl0gPiBwYXR0ZXJuU3BEaXN0W2xhYmVsMl1bbl0pIHtcbiAgICAgICAgICBwcnVuZTJJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJ1bmUySW52YWxpZCkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUz77ya6IulIGNhbmRpZGF0ZXMg5Lit6IqC54K5IGNOb2RlIOWIsCBrTmVpZ2hib3JVbml0cyDkuK3moIfnrb7kuLogbGFiZWwyIOeahOiKgueCuSBORFMg6Led56a75bCP5LqOIHBhdHRlcm5ORFNEaXN0W2JlZ2luTm9kZS5pZC1sYWJlbDJd77yM5Yig5Y675a6DXG4gICAgICAvLyBUT0RP77yacHJ1bmUz77yMY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkg5LiOIGN1cnJlbnRORFNEaXN0IOeahOavlOi+g1xuICAgICAgLy8g6K6h566XIEcg5Lit5omA5pyJIGxhYmVsMiDoioLngrnliLAgY05vZGUg55qEIE5EUyDot53nprtcbiAgICAgIC8vIOaJgOaciSBsYWJlbDIg6IqC54K55YiwIGNOb2RlIOeahOmCu+WxheebuOS6pOivseWvvOWtkOWbvu+8mlxuXG5cbiAgICAgIHZhciBjTm9kZVBhaXJNYXAgPSB7fTtcbiAgICAgIGdyYXBoTmVpZ2hib3JVbml0Lm5laWdoYm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvck5vZGUpIHtcbiAgICAgICAgdmFyIGRpc3QgPSBzcG1NYXBbXCJcIi5jb25jYXQoY05vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKV07XG4gICAgICAgIGNOb2RlUGFpck1hcFtcIlwiLmNvbmNhdChjTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpXSA9IHtcbiAgICAgICAgICBzdGFydDogbm9kZU1hcFtjTm9kZS5pZF0uaWR4LFxuICAgICAgICAgIGVuZDogbm9kZU1hcFtuZWlnaGJvck5vZGUuaWRdLmlkeCxcbiAgICAgICAgICBkaXN0YW5jZTogZGlzdFxuICAgICAgICB9O1xuICAgICAgfSk7IC8vIOabtOaWsCBpbnRHTWFwXG5cbiAgICAgIGludEdNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChjTm9kZVBhaXJNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaERhdGEsIGludEdNYXApOyAvLyBjYW5kaWRhdGUg5Yiw5a6D5ZGo5Zu0IGxhYmVsMiDoioLngrnnmoQgTkRTIOi3neemuywga2V5IOaYryBub2RlLmlkLW5vZGUuaWRcblxuICAgICAgdmFyIGN1cnJlbnRORFNEaXN0QXJyYXkgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKGNOb2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChuZHNEaXN0W2tleV0pIHtcbiAgICAgICAgICBjdXJyZW50TkRTRGlzdEFycmF5LnB1c2gobmRzRGlzdFtrZXldKTtcbiAgICAgICAgICByZXR1cm47IC8vIOe8k+WtmOi/h+WImeS4jemcgOimgeWGjeasoeiuoeeul1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGludEdyYXBoID0gaW50R01hcFtrZXldO1xuICAgICAgICBuZHNEaXN0W2tleV0gPSBnZXRNYXRjaGVkQ291bnQoaW50R3JhcGgsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICAgIGN1cnJlbnRORFNEaXN0QXJyYXkucHVzaChuZHNEaXN0W2tleV0pO1xuICAgICAgfSk7IC8vIOagueaNruWAvOS4uiBjdXJyZW50TkRTRGlzdEFycmF5IOS7juWkp+WIsOWwj+aOkuW6j1xuXG4gICAgICBjdXJyZW50TkRTRGlzdEFycmF5ID0gY3VycmVudE5EU0Rpc3RBcnJheS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBiIC0gYTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHBydW5lM0ludmFsaWQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBwYXR0ZXJuTGFiZWwyTnVtOyBuKyspIHtcbiAgICAgICAgaWYgKGN1cnJlbnRORFNEaXN0QXJyYXlbbl0gPCBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheVtuXSkge1xuICAgICAgICAgIHBydW5lM0ludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcnVuZTNJbnZhbGlkKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBtID0gY2FuZGlkYXRlc051bSAtIDE7IG0gPj0gMDsgbS0tKSB7XG4gICAgICBfbG9vcF80KG0pO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjYW5kaWRhdGVHcmFwaHMgPSBbXTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTM6IGdvaW5nIHRvIHNwbGljZSBuZWlnaGJvcnMgZm9yIGVhY2ggY2FuZGlkYXRlIGdyYXBoIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyBjYW5kaWRhdGVzIOe7j+i/h+etm+mAieWQju+8jOS7peavj+S4qiBjYW5kaWRhdGUg5Li65Lit5b+D77yM55Sf5oiQIExlbmd0aC1uZWlnaGJvciDnmoTpgrvlsYXor7Hlr7zlrZDlm75cbiAgLy8g5bm25Zyo6K+x5a+85a2Q5Zu+5Lit5Y676Zmk5LiN5Y+v6IO95ZyoIFEg5LiK5om+5Yiw5Yy56YWN55qE54K577ya5ZyoIFEg5LiK5LiN5a2Y5Zyo55qEIGxhYmVs77yM5YW25LuWIGxhYmVsIOWIsCBjYW5kaWRhdGUg55qE5pyA5aSn5pyA55+t6Led56a756ym5ZCIIFHjgIFORFMg6Led56a756ym5ZCIIFFcblxuICBjYW5kaWRhdGVzID09PSBudWxsIHx8IGNhbmRpZGF0ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhbmRpZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoY2FuZGlkYXRlKSB7XG4gICAgdmFyIG5vZGVJZHggPSBub2RlTWFwW2NhbmRpZGF0ZS5pZF0uaWR4O1xuICAgIHZhciBsZW5ndGhOZWlnaGJvclVuaXQgPSBmaW5kS05laWdoYm9yVW5pdChncmFwaERhdGEubm9kZXMsIHNwbVtub2RlSWR4XSwgbm9kZUlkeCwgbm9kZUxhYmVsUHJvcCwgbGVuZ3RoKTtcbiAgICB2YXIgbmVpZ2hib3JOb2RlcyA9IGxlbmd0aE5laWdoYm9yVW5pdC5uZWlnaGJvcnM7IC8vIOWIoOmZpOS4jeWPr+iDveaJvuWIsOWMuemFjeeahOmCu+WxheeCuVxuXG4gICAgdmFyIG5laWdoYm9yTnVtID0gbmVpZ2hib3JOb2Rlcy5sZW5ndGg7XG4gICAgdmFyIHVubWF0Y2hlZCA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IG5laWdoYm9yTnVtIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIC8vIOWmguaenOmAmui/h+ijgeWJqu+8jOespuWQiOadoeS7tueahOiKgueCueaVsOmHj+W3sui/h+Wwke+8jOivtOaYjuS4jeiDveWMuemFjei/meS4qiBjYW5kaWRhdGUg55u45YWz55qE5Zu+XG4gICAgICBpZiAobmVpZ2hib3JOb2Rlcy5sZW5ndGggKyAxIDwgcGF0dGVybi5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdW5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbmVpZ2hib3JOb2Rlc1tpXTtcbiAgICAgIHZhciBuZWlnaGJvckxhYmVsID0gbmVpZ2hib3JOb2RlW25vZGVMYWJlbFByb3BdOyAvLyBwcnVuZTE6IOiLpeivpemCu+WxheeCueeahCBsYWJlbCDkuI3lrZjlnKjkuo4gcGF0dGVybiDkuK3vvIznp7vpmaTov5nkuKrngrlcblxuICAgICAgaWYgKCFwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdIHx8ICFwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIHBydW5lMjog6Iul6K+l6YK75bGF54K55YiwIGNhbmRpZGF0ZSDnmoTmnIDnn63ot6/lvoTmr5TlkozlroPmnInnm7jlkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luUE5vZGUg55qE5pyA5aSn5pyA55+t6Lev5b6E6ZW/5bqm6ZW/77yM56e76Zmk6L+Z5Liq54K5XG4gICAgICAvLyBwcnVuZTIuMTog5aaC5p6c5rKh5pyJ6L+Z5Liq5qCH562+5YiwIGJlZ2luUE5vZGUg55qE6Led56a76K6w5b2V77yM6K+05piOIHBhdHRlcm4g5LiK77yI5Y+v6IO9IGJlZ2luUE5vZGUg5piv6L+Z5LiqIGxhYmVs77yJ5rKh5pyJ5YW25LuW6L+Z5LiqIGxhYmVsIOeahOiKgueCuVxuXG5cbiAgICAgIGlmICghcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXSB8fCAhcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoY2FuZGlkYXRlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCk7IC8vIHBydW5lMi4yXG5cbiAgICAgIHZhciBkaXN0VG9DYW5kaWRhdGUgPSBzcG1NYXBba2V5XTtcbiAgICAgIHZhciBpZHggPSBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgbWF4RGlzdFdpdGhMYWJlbEluUGF0dGVybiA9IHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF1baWR4XTsgLy8gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXSDlt7Lnu4/mjInnhafku47lsI/liLDlpKfmjpLluo9cblxuICAgICAgaWYgKGRpc3RUb0NhbmRpZGF0ZSA+IG1heERpc3RXaXRoTGFiZWxJblBhdHRlcm4pIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgICAgdmFyIGtleUJhY2sgPSBcIlwiLmNvbmNhdChuZWlnaGJvck5vZGUuaWQsIFwiLVwiKS5jb25jYXQoY2FuZGlkYXRlLmlkKTtcbiAgICAgICAgdmFyIGRpc3RGcm9tQ2FuZGlkYXRlID0gc3BtTWFwW2tleUJhY2tdO1xuICAgICAgICBpZHggPSBwYXR0ZXJuU3BEaXN0QmFja1tuZWlnaGJvckxhYmVsXS5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgbWF4QmFja0Rpc3RXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuU3BEaXN0QmFja1tuZWlnaGJvckxhYmVsXVtpZHhdO1xuXG4gICAgICAgIGlmIChkaXN0RnJvbUNhbmRpZGF0ZSA+IG1heEJhY2tEaXN0V2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gcHJ1bmUzOiDoi6Xor6XpgrvlsYXngrnliLAgY2FuZGlkYXRlIOeahCBORFMg6Led56a75q+U5ZKM5a6D5pyJ55u45ZCMIGxhYmVsIOeahOiKgueCueWIsCBiZWdpblBOb2RlIOeahOacgOWwjyBORFMg6Led56a75bCP77yM56e76Zmk6L+Z5Liq54K5XG5cblxuICAgICAgdmFyIG5kc1RvQ2FuZGlkYXRlID0gbmRzRGlzdFtrZXldID8gbmRzRGlzdFtrZXldIDogZ2V0TkRTRGlzdChncmFwaERhdGEsIGNhbmRpZGF0ZSwgbmVpZ2hib3JOb2RlLCBub2RlTWFwLCBkaXN0VG9DYW5kaWRhdGUsIGtOZWlnaGJvclVuaXRzLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3AsIG5kc0Rpc3QsIGludEdNYXApO1xuICAgICAgdmFyIHBhdHRlcm5LZXkgPSBcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTGFiZWwpO1xuICAgICAgdmFyIG1pbk5kc1dpdGhMYWJlbEluUGF0dGVybiA9IHBhdHRlcm5ORFNEaXN0TWFwW3BhdHRlcm5LZXldW3BhdHRlcm5ORFNEaXN0TWFwW3BhdHRlcm5LZXldLmxlbmd0aCAtIDFdOyAvLyBwYXR0ZXJuTkRTRGlzdFtrZXldIOS4gOWumuWtmOWcqFxuXG4gICAgICBpZiAobmRzVG9DYW5kaWRhdGUgPCBtaW5OZHNXaXRoTGFiZWxJblBhdHRlcm4pIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBwcnVuZTQ6IOiLpeivpemCu+WxheeCueeahOW6puaVsOWwj+S6jiBwYXR0ZXJuIOWQjCBsYWJlbCDoioLngrnmnIDlsI/luqbmlbDvvIzliKDljrvor6XngrlcblxuXG4gICAgICB2YXIgX2EgPSBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgbmVpZ2hib3JMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApLFxuICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlLFxuICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZTtcblxuICAgICAgaWYgKG5vZGVNYXBbbmVpZ2hib3JOb2RlLmlkXS5kZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9IC8vIOiKgueCueWcqOS4quaVsOS4iuespuWQiOWMuemFje+8iOS4jeWwkeS6jiBwYXR0ZXJuIOeahOiKgueCueS4quaVsO+8ie+8jOeOsOWcqOetm+mAieebuOWFs+i+uVxuXG5cbiAgICBpZiAoIXVubWF0Y2hlZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnB1c2goe1xuICAgICAgICBub2RlczogW2NhbmRpZGF0ZV0uY29uY2F0KG5laWdoYm9yTm9kZXMpXG4gICAgICB9KTtcbiAgICB9XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlNDogZ29pbmcgdG8gc3BsaWNlIGVkZ2VzIGFuZCBuZWlnaGJvcnMgZm9yIGVhY2ggY2FuZGlkYXRlIGdyYXBoIC0tLS0tLS1cIlxuICAvLyApO1xuXG4gIHZhciB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZSA9ICgwLCBfZGlqa3N0cmEuZGVmYXVsdCkocGF0dGVybiwgYmVnaW5QTm9kZS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgdmFyIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXAgPSB7fTtcblxuICBpZiAoZGlyZWN0ZWQpIHtcbiAgICBPYmplY3Qua2V5cyh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUlkKSB7XG4gICAgICB2YXIgbm9kZUxhYmVsID0gcGF0dGVybk5vZGVNYXBbbm9kZUlkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0pIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXSA9IFt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZVtub2RlSWRdXTtlbHNlIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXS5wdXNoKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlW25vZGVJZF0pO1xuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXApLmZvckVhY2goZnVuY3Rpb24gKHBMYWJlbCkge1xuICAgICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtwTGFiZWxdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgLSBiO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCA9IHBhdHRlcm5TcERpc3Q7XG4gIH0gLy8g546w5ZyoIGNhbmRpZGF0ZUdyYXBocyDph4zpnaLlj6rmnInoioLngrnvvIzov5vooYzovrnnmoTnrZvpgIlcblxuXG4gIHZhciBjYW5kaWRhdGVHcmFwaE51bSA9IGNhbmRpZGF0ZUdyYXBocy5sZW5ndGg7XG5cbiAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICB2YXIgY2FuZGlkYXRlR3JhcGggPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdO1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcCA9IHt9O1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTWFwID0ge307XG4gICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgcSkge1xuICAgICAgY2FuZGlkYXRlTm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgICAgaWR4OiBxLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICBkZWdyZWU6IDAsXG4gICAgICAgIGluRGVncmVlOiAwLFxuICAgICAgICBvdXREZWdyZWU6IDBcbiAgICAgIH07XG4gICAgICB2YXIgY05vZGVMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdKSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSA9IDE7ZWxzZSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSsrO1xuICAgIH0pOyAvLyDmoLnmja4gY2FuZGlkYXRlIOWSjCBuZWlnaGJvck5vZGVzIOS4reeahOiKgueCueeUn+aIkCBHIOeahOivseWvvOWtkOWbvlxuICAgIC8vIOWNs++8jOWwhiBncmFwaERhdGEg5LiK5Lik56uv6YO95ZyoIGNhbmRpZGF0ZUdyYXBoLm5vZGVzIOS4reeahOi+ueaUvuWFpSBjYW5kaWRhdGVFZGdlc1xuXG4gICAgdmFyIGNhbmRpZGF0ZUVkZ2VzID0gW107XG4gICAgdmFyIGVkZ2VMYWJlbENvdW50TWFwID0ge307XG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXSAmJiBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICBjYW5kaWRhdGVFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dKSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSA9IDE7ZWxzZSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZSsrO1xuICAgICAgfVxuICAgIH0pOyAvLyBwcnVuZe+8muiLpeacieS4gOS4qiBlZGdlTGFiZWwg5ZyoIGNhbmRpZGF0ZUdyYXBoIOS4iueahOS4quaVsOWwkeS6jiBwYXR0ZXJu77yM5Y676Zmk6K+l5Zu+XG5cbiAgICB2YXIgcGF0dGVuckVkZ2VMYWJlbE51bSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApLmxlbmd0aDtcbiAgICB2YXIgcHJ1bmVkQnlFZGdlTGFiZWwgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGUgPSAwOyBlIDwgcGF0dGVuckVkZ2VMYWJlbE51bTsgZSsrKSB7XG4gICAgICB2YXIgbGFiZWxfMSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApW2VdO1xuXG4gICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIHx8IGVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIDwgcGF0dGVybkVkZ2VMYWJlbE1hcFtsYWJlbF8xXS5sZW5ndGgpIHtcbiAgICAgICAgcHJ1bmVkQnlFZGdlTGFiZWwgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJ1bmVkQnlFZGdlTGFiZWwpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH0gLy8g6YGN5Y6GIGNhbmRpZGF0ZUVkZ2Vz77yM6L+b6KGM6L6555qE562b6YCJXG5cblxuICAgIHZhciBjYW5kaWRhdGVFZGdlTnVtID0gY2FuZGlkYXRlRWRnZXMubGVuZ3RoOyAvLyBwcnVuZe+8muiLpei+ueaVsOi/h+Wwke+8jOWOu+mZpOivpeWbvlxuXG4gICAgaWYgKGNhbmRpZGF0ZUVkZ2VOdW0gPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgfVxuXG4gICAgdmFyIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzUgPSBmdW5jdGlvbiBfbG9vcF81KGUpIHtcbiAgICAgIHZhciBlZGdlID0gY2FuZGlkYXRlRWRnZXNbZV07XG4gICAgICB2YXIgZWRnZUxhYmVsID0gZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgIHZhciBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgPSBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF07IC8vIHBydW5lIDE6IOiLpei+ueeahCBsYWJlbCDkuI3lrZjlnKjkuo4gcGF0dGVybiDovrkgbGFiZWwg5Lit77yM5Y676Zmk6K+l6L65XG5cbiAgICAgIGlmICghcGF0dGVybkVkZ2VzV2l0aExhYmVsIHx8ICFwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0tLTsgLy8g6Iul6L+Z5LiqIGxhYmVsIOeahCBjb3VudCDlh4/lsJHkuYvlkI7vvIzor6UgbGFiZWwg55qE6L655pWw5LiN6Laz77yM5Y676Zmk6K+l5Zu+XG5cbiAgICAgICAgaWYgKHBhdHRlcm5FZGdlc1dpdGhMYWJlbCAmJiBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdIDwgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZShlLCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUtLTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUgMjog6Iul6L6555qEIGxhYmVsICvkuKTnq68gbGFiZWwg55qE5LiJ5YWD57uE5YWz57O75LiN6IO95ZyoIHBhdHRlcm4g5Lit5om+5Yiw77yM5Y676Zmk6K+l6L65XG5cblxuICAgICAgdmFyIHNvdXJjZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIHZhciB0YXJnZXRMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICB2YXIgZWRnZU1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuRWRnZSkge1xuICAgICAgICB2YXIgcGF0dGVyblNvdXJjZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5FZGdlLnNvdXJjZV0ubm9kZTtcbiAgICAgICAgdmFyIHBhdHRlcm5UYXJnZXQgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuRWRnZS50YXJnZXRdLm5vZGU7XG4gICAgICAgIGlmIChwYXR0ZXJuU291cmNlW25vZGVMYWJlbFByb3BdID09PSBzb3VyY2VMYWJlbCAmJiBwYXR0ZXJuVGFyZ2V0W25vZGVMYWJlbFByb3BdID09PSB0YXJnZXRMYWJlbCkgZWRnZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIWRpcmVjdGVkICYmIHBhdHRlcm5Tb3VyY2Vbbm9kZUxhYmVsUHJvcF0gPT09IHRhcmdldExhYmVsICYmIHBhdHRlcm5UYXJnZXRbbm9kZUxhYmVsUHJvcF0gPT09IHNvdXJjZUxhYmVsKSBlZGdlTWF0Y2hlZCA9IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFlZGdlTWF0Y2hlZCkge1xuICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07IC8vIOiLpei/meS4qiBsYWJlbCDnmoQgY291bnQg5YeP5bCR5LmL5ZCO77yM6K+lIGxhYmVsIOeahOi+ueaVsOS4jei2s++8jOWOu+mZpOivpeWbvlxuXG4gICAgICAgIGlmIChwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjYW5kaWRhdGVFZGdlcy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGUgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgZSA+PSAwOyBlLS0pIHtcbiAgICAgIHZhciBzdGF0ZV8yID0gX2xvb3BfNShlKTtcblxuICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfSAvLyBwcnVuZTI6IOWIoOmZpOi+ueeahOi/h+eoi+S4re+8jOWPkeeOsOi+ueaVsOi/h+WwkS/ovrkgbGFiZWwg5pWw6L+H5bCR5pe277yM5Y676Zmk6K+l5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIGNhbmRpZGF0ZUdyYXBoLmVkZ2VzID0gY2FuZGlkYXRlRWRnZXM7XG4gICAgdmFyIGxlbmd0aHNUb0NhbmRpZGF0ZSA9ICgwLCBfZGlqa3N0cmEuZGVmYXVsdCkoY2FuZGlkYXRlR3JhcGgsIGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkLCBmYWxzZSkubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKGxlbmd0aHNUb0NhbmRpZGF0ZSkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldElkKSB7XG4gICAgICBpZiAodGFyZ2V0SWQgPT09IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkIHx8IGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkgcmV0dXJuOyAvLyBwcnVuZTQ6IOmAmui/h+S4iui/sOijgeWJqu+8jOWPr+iDveWvvOiHtOivpemCu+WxheWtkOWbvuWPmOS4uuS4jei/numAmuOAguijgeWJquaOieebruWJjeWcqOi/meS4qumCu+WxheWtkOWbvuS4reWSjCBjYW5kaWRhdGXvvIjnrKzkuIDkuKroioLngrnvvInkuI3ov57pgJrnmoToioLngrlcblxuICAgICAgaWYgKGxlbmd0aHNUb0NhbmRpZGF0ZVt0YXJnZXRJZF0gPT09IEluZmluaXR5KSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlTGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdLS07XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW3RhcmdldE5vZGVMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWR4ID0gY2FuZGlkYXRlR3JhcGgubm9kZXMuaW5kZXhPZihjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlKTtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIHBydW5lNTog57uP6L+H6L656KOB5Ymq5ZCO77yM5Y+v6IO95Y+I5Ye6546w5LqG5pyA55+t6Lev5b6E6L+H6ZW/55qE6IqC54K5IO+8iOavlCBwYXR0ZXJuIOS4reWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5Ob2RlIOacgOWkp+acgOefrei3neemu+i/nO+8ie+8jOWIoOWOu+i/meS6m+iKgueCuVxuXG5cbiAgICAgIHZhciBuTGFiZWwgPSBub2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICBpZiAoIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXSB8fCAhdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdLmxlbmd0aCB8fCBsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID4gdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdW3VuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggLSAxXSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIHZhciBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICB2YXIgbG9vcENvdW50ID0gMDtcblxuICAgIHdoaWxlIChkZWdyZWVDaGFuZ2VkICYmICFjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGRlZ3JlZUNoYW5nZWQgPSBmYWxzZTsgLy8gY2FuZGlkYXRlIOW6puaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG4gICAgICB2YXIgY29uZGl0aW9uID0gZGlyZWN0ZWQgPyBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5pbkRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmluRGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5vdXREZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5vdXREZWdyZWUgOiBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBjYW5kaWRhdGUgbGFiZWwg5Liq5pWw5LiN6Laz77yM5Yig5Y676K+l5Zu+XG5cblxuICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0ubGVuZ3RoKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBwcnVuZTbvvJrljrvpmaTluqbmlbDov4flsI/nmoToioLngrlcblxuXG4gICAgICB2YXIgY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIG8gPSBjdXJyZW50Q2FuZGlkYXRlTm9kZU51bSAtIDE7IG8gPj0gMDsgby0tKSB7XG4gICAgICAgIHZhciBjZ05vZGUgPSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1tvXTtcbiAgICAgICAgdmFyIG5vZGVEZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0uZGVncmVlO1xuICAgICAgICB2YXIgbm9kZUluRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmluRGVncmVlO1xuICAgICAgICB2YXIgbm9kZU91dERlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5vdXREZWdyZWU7XG4gICAgICAgIHZhciBjTm9kZUxhYmVsID0gY2dOb2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICAgIHZhciBfZSA9IHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBjTm9kZUxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCksXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlO1xuXG4gICAgICAgIHZhciBkZWxldGVDb25kaXRpb24gPSBkaXJlY3RlZCA/IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlIHx8IG5vZGVJbkRlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSB8fCBub2RlT3V0RGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA6IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlO1xuXG4gICAgICAgIGlmIChkZWxldGVDb25kaXRpb24pIHtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLS07IC8vIOiKgueCuSBsYWJlbCDkuKrmlbDkuI3otrNcblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShvLCAxKTtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCAhZGVncmVlQ2hhbmdlZCAmJiBsb29wQ291bnQgIT09IDApIGJyZWFrOyAvLyDnu4/ov4cgcHJ1bmU1IOiKgueCueijgeWJqu+8jOWIoOWOu+err+eCueW3sue7j+S4jeWcqCBjYW5kaWRhdGVHcmFwaCDkuK3nmoTovrlcblxuICAgICAgY2FuZGlkYXRlRWRnZU51bSA9IGNhbmRpZGF0ZUVkZ2VzLmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgeSA9IGNhbmRpZGF0ZUVkZ2VOdW0gLSAxOyB5ID49IDA7IHktLSkge1xuICAgICAgICB2YXIgY2VkZ2UgPSBjYW5kaWRhdGVFZGdlc1t5XTtcblxuICAgICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSB8fCAhY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdKSB7XG4gICAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKHksIDEpO1xuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBjZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07XG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgICAgfSAvLyDovrkgbGFiZWwg5pWw6YeP5LiN6LazXG5cblxuICAgICAgICAgIGlmIChwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0gJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlTGFiZWxNYXBbZWRnZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsb29wQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9IC8vIHBydW5lOiDoi6XoioLngrkv6L655pWw6L+H5bCR77yM6IqC54K5L+i+uSBsYWJlbCDov4flsJHvvIzljrvmjonov5nkuKrlm75cblxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGggPCBwYXR0ZXJuLm5vZGVzLmxlbmd0aCB8fCBjYW5kaWRhdGVFZGdlcy5sZW5ndGggPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSBjYW5kaWRhdGVHcmFwaE51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8yKGkpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8g5q2k5pe25bey57uP55Sf5oiQ55qE5aSa5LiqIGNhbmRpZGF0ZUdyYXBoc++8jOWPr+iDveaciemHjeWkjVxuICAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlNTogZ29pbmcgdG8gc3BsaWNlIGR1bHBsaWNhdGVkIGNhbmRpZGF0ZSBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIOWIoOWOuyBjYW5kaWRhdGVHcmFwaHMg5Lit5LiA5qih5LiA5qC355qE5a2Q5Zu+77yM6YCa6L+H6L6555qEIG5vZGUtbm9kZS1lZGdlTGFiZWwg5L2c5Li6IGtlee+8jOi/meexu+i+ueS4quaVsOS9nOS4uiB2YWx1Ze+8jOi/m+ihjOWMuemFjVxuXG5cbiAgdmFyIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gX2xvb3BfMyhpKSB7XG4gICAgdmFyIGNnMSA9IGNhbmRpZGF0ZUdyYXBoc1tpXTtcbiAgICB2YXIgY2cxRWRnZU1hcCA9IHt9OyAvLyBbbm9kZTEuaWQtbm9kZTIuaWQtZWRnZS5sYWJlbF06IGNvdW50XG5cbiAgICBjZzEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgaWYgKCFjZzFFZGdlTWFwW2tleV0pIGNnMUVkZ2VNYXBba2V5XSA9IDE7ZWxzZSBjZzFFZGdlTWFwW2tleV0rKztcbiAgICB9KTtcblxuICAgIHZhciBfbG9vcF82ID0gZnVuY3Rpb24gX2xvb3BfNihqKSB7XG4gICAgICB2YXIgY2cyID0gY2FuZGlkYXRlR3JhcGhzW2pdO1xuICAgICAgdmFyIGNnMkVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgICBjZzIuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoZWRnZS5zb3VyY2UsIFwiLVwiKS5jb25jYXQoZWRnZS50YXJnZXQsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCk7XG4gICAgICAgIGlmICghY2cyRWRnZU1hcFtrZXldKSBjZzJFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cyRWRnZU1hcFtrZXldKys7XG4gICAgICB9KTtcbiAgICAgIHZhciBzYW1lID0gdHJ1ZTtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNnMkVkZ2VNYXApLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY2cxRWRnZU1hcCkubGVuZ3RoKSB7XG4gICAgICAgIHNhbWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIGlmIChjZzJFZGdlTWFwW2tleV0gIT09IGNnMUVkZ2VNYXBba2V5XSkgc2FtZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhbWUpIHtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShqLCAxKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaiA9IGN1cnJlbnRMZW5ndGggLSAxOyBqID4gaTsgai0tKSB7XG4gICAgICBfbG9vcF82KGopO1xuICAgIH1cblxuICAgIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDw9IGN1cnJlbnRMZW5ndGggLSAxOyBpKyspIHtcbiAgICBfbG9vcF8zKGkpO1xuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZUdyYXBocztcbn07XG5cbnZhciBfZGVmYXVsdCA9IEdBRERJO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/gaddi.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/label-propagation.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/label-propagation.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = (0, _util.uniqueId)();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = labelPropagation;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9sYWJlbC1wcm9wYWdhdGlvbi5qcz82MWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsNkNBQTZDLG1CQUFPLENBQUMsZ0ZBQW1COztBQUV4RSxZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL2xhYmVsLXByb3BhZ2F0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5qCH562+5Lyg5pKt566X5rOVXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuacieWQkeWbvu+8jOm7mOiupOS4uiBmYWxzZVxuICogQHBhcmFtIHdlaWdodFByb3BlcnR5TmFtZSDmnYPph43nmoTlsZ7mgKflrZfmrrVcbiAqIEBwYXJhbSBtYXhJdGVyYXRpb24g5pyA5aSn6L+t5Luj5qyh5pWwXG4gKi9cbnZhciBsYWJlbFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbihncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbikge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH0gLy8gdGhlIG9yaWdpbiBkYXRhXG5cblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9ICgwLCBfdXRpbC51bmlxdWVJZCkoKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307XG4gIGFkak1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHtcbiAgICB2YXIgayA9IDA7XG4gICAgdmFyIGlpZCA9IG5vZGVzW2ldLmlkO1xuICAgIG5laWdoYm9yc1tpaWRdID0ge307XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKGVudHJ5LCBqKSB7XG4gICAgICBpZiAoIWVudHJ5KSByZXR1cm47XG4gICAgICBrICs9IGVudHJ5O1xuICAgICAgdmFyIGppZCA9IG5vZGVzW2pdLmlkO1xuICAgICAgbmVpZ2hib3JzW2lpZF1bamlkXSA9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICB2YXIgaXRlciA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcnMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yc1tub2RlLmlkXSkuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JJZCkge1xuICAgICAgICB2YXIgbmVpZ2hib3JXZWlnaHQgPSBuZWlnaGJvcnNbbm9kZS5pZF1bbmVpZ2hib3JJZF07XG4gICAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBub2RlTWFwW25laWdoYm9ySWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIGlmICghbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0pIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdID0gMDtcbiAgICAgICAgbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0gKz0gbmVpZ2hib3JXZWlnaHQ7XG4gICAgICB9KTsgLy8gZmluZCB0aGUgY2x1c3RlciB3aXRoIG1heCB3ZWlnaHRcblxuICAgICAgdmFyIG1heFdlaWdodCA9IC1JbmZpbml0eTtcbiAgICAgIHZhciBiZXN0Q2x1c3RlcklkcyA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMobmVpZ2hib3JDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgICAgIGlmIChtYXhXZWlnaHQgPCBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBtYXhXZWlnaHQgPSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgICAgICAgYmVzdENsdXN0ZXJJZHMgPSBbY2x1c3RlcklkXTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhXZWlnaHQgPT09IG5laWdoYm9yQ2x1c3RlcnNbY2x1c3RlcklkXSkge1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzLnB1c2goY2x1c3RlcklkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYmVzdENsdXN0ZXJJZHMubGVuZ3RoID09PSAxICYmIGJlc3RDbHVzdGVySWRzWzBdID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgdmFyIHNlbGZDbHVzdGVySWR4ID0gYmVzdENsdXN0ZXJJZHMuaW5kZXhPZihub2RlLmNsdXN0ZXJJZCk7XG4gICAgICBpZiAoc2VsZkNsdXN0ZXJJZHggPj0gMCkgYmVzdENsdXN0ZXJJZHMuc3BsaWNlKHNlbGZDbHVzdGVySWR4LCAxKTtcblxuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzICYmIGJlc3RDbHVzdGVySWRzLmxlbmd0aCkge1xuICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsgLy8gcmVtb3ZlIGZyb20gb3JpZ2luIGNsdXN0ZXJcblxuICAgICAgICB2YXIgc2VsZkNsdXN0ZXIgPSBjbHVzdGVyc1tub2RlLmNsdXN0ZXJJZF07XG4gICAgICAgIHZhciBub2RlSW5TZWxmQ2x1c3RlcklkeCA9IHNlbGZDbHVzdGVyLm5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGJlc3QgY2x1c3RlclxuXG4gICAgICAgIHZhciByYW5kb21JZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpO1xuICAgICAgICB2YXIgYmVzdENsdXN0ZXIgPSBjbHVzdGVyc1tiZXN0Q2x1c3Rlcklkc1tyYW5kb21JZHhdXTtcbiAgICAgICAgYmVzdENsdXN0ZXIubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgbm9kZS5jbHVzdGVySWQgPSBiZXN0Q2x1c3Rlci5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWNoYW5nZWQpIHJldHVybiBcImJyZWFrXCI7XG4gICAgaXRlcisrO1xuICB9O1xuXG4gIHdoaWxlIChpdGVyIDwgbWF4SXRlcmF0aW9uKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKCk7XG5cbiAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgfSAvLyBkZWxldGUgdGhlIGVtcHR5IGNsdXN0ZXJzXG5cblxuICBPYmplY3Qua2V5cyhjbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgdmFyIGNsdXN0ZXIgPSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgfVxuICB9KTsgLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cbiAgdmFyIGNsdXN0ZXJFZGdlcyA9IFtdO1xuICB2YXIgY2x1c3RlckVkZ2VNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHdlaWdodCA9IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxO1xuICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgbmV3RWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlQ2x1c3RlcklkLCBcIi0tLVwiKS5jb25jYXQodGFyZ2V0Q2x1c3RlcklkKTtcblxuICAgIGlmIChjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdKSB7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLndlaWdodCArPSB3ZWlnaHQ7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLmNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXdFZGdlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZUNsdXN0ZXJJZCxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRDbHVzdGVySWQsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNsdXN0ZXJzQXJyYXkgPSBbXTtcbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChjbHVzdGVyc1tjbHVzdGVySWRdKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2x1c3RlcnM6IGNsdXN0ZXJzQXJyYXksXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGxhYmVsUHJvcGFnYXRpb247XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/label-propagation.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/louvain.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/louvain.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _vector = _interopRequireDefault(__webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/lib/utils/vector.js\"));\n\nvar _nodeProperties = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/lib/utils/node-properties.js\");\n\nvar _dataPreprocessing = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _vector.default([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _vector.default(allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _vector.default(allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n } // 所有节点属性集合\n\n\n var properties = (0, _nodeProperties.getAllProperties)(nodes); // 所有节点属性one-hot特征向量集合\n\n allPropertiesWeight = (0, _dataPreprocessing.oneHot)(properties);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = (0, _util.clone)(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = louvain;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9sb3V2YWluLmpzP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxZQUFZLG1CQUFPLENBQUMsMERBQVk7O0FBRWhDLDZDQUE2QyxtQkFBTyxDQUFDLGdGQUFtQjs7QUFFeEUscUNBQXFDLG1CQUFPLENBQUMsMEVBQWdCOztBQUU3RCxzQkFBc0IsbUJBQU8sQ0FBQyw0RkFBeUI7O0FBRXZELHlCQUF5QixtQkFBTyxDQUFDLGtHQUE0Qjs7QUFFN0Qsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQSxHQUFHOzs7QUFHSDtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQSxpQkFBaUIsWUFBWTtBQUM3Qjs7QUFFQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7OztBQUdMLGtFQUFrRTs7QUFFbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLG9FQUFvRTs7QUFFcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0dBQW9HO0FBQ3hIO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0pBQWtKOztBQUVsSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCw4SEFBOEg7O0FBRTlIO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWCx1RkFBdUY7O0FBRXZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYLHNIQUFzSDs7QUFFdEg7O0FBRUE7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEMsbUVBQW1FOztBQUVuRSwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9sb3V2YWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX2FkamFjZW50TWF0cml4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9hZGphY2VudC1tYXRyaXhcIikpO1xuXG52YXIgX3ZlY3RvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvdmVjdG9yXCIpKTtcblxudmFyIF9ub2RlUHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL3V0aWxzL25vZGUtcHJvcGVydGllc1wiKTtcblxudmFyIF9kYXRhUHJlcHJvY2Vzc2luZyA9IHJlcXVpcmUoXCIuL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZ1wiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGdldE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKSB7XG4gIHZhciBsZW5ndGggPSBhZGpNYXRyaXgubGVuZ3RoO1xuICB2YXIgcGFyYW0gPSAyICogbTtcbiAgdmFyIG1vZHVsYXJpdHkgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoY2x1c3RlcmkgIT09IGNsdXN0ZXJqKSBjb250aW51ZTtcbiAgICAgIHZhciBlbnRyeSA9IGFkak1hdHJpeFtpXVtqXSB8fCAwO1xuICAgICAgdmFyIGtpID0ga3NbaV0gfHwgMDtcbiAgICAgIHZhciBraiA9IGtzW2pdIHx8IDA7XG4gICAgICBtb2R1bGFyaXR5ICs9IGVudHJ5IC0ga2kgKiBraiAvIHBhcmFtO1xuICAgIH1cbiAgfVxuXG4gIG1vZHVsYXJpdHkgKj0gMSAvIHBhcmFtO1xuICByZXR1cm4gbW9kdWxhcml0eTtcbn07IC8vIOaooeWdl+aDr+aAp+W6pu+8jOihoemHj+WxnuaAp+ebuOS8vOW6plxuXG5cbnZhciBnZXRJbmVydGlhbE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRJbmVydGlhbE1vZHVsYXJpdHkobm9kZXMsIGFsbFByb3BlcnRpZXNXZWlnaHQpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHRvdGFsUHJvcGVydGllcyA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoW10pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB0b3RhbFByb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYWRkKG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSkpO1xuICB9IC8vIOWdh+WAvOWQkemHj1xuXG5cbiAgdmFyIGF2Z1Byb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYXZnKGxlbmd0aCk7XG4gIGF2Z1Byb3BlcnRpZXMubm9ybWFsaXplKCk7IC8vIOiKgueCuembhuWQiOeahOaWueW3rjog6IqC54K5duS4juWdh+WAvOWQkemHj+eahOW5s+aWueasp+W8j+i3neemu+S5i+WSjFxuXG4gIHZhciB2YXJpYW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgdmFyIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UoYXZnUHJvcGVydGllcyk7XG4gICAgdmFyaWFuY2UgKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH0gLy8g5Lu75oSP5Lik54K56Ze055qE5qyn5byP5bmz5pa56Led56a7XG5cblxuICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mby5wdXNoKFtdKTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXSA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydGllc2ogPSBuZXcgX3ZlY3Rvci5kZWZhdWx0KGFsbFByb3BlcnRpZXNXZWlnaHRbal0pO1xuICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UocHJvcGVydGllc2opO1xuICAgICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddICs9IHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXTtcbiAgICB9XG4gIH0gLy8g6K6h566X5qih5Z2X5oOv5oCn5bqmXG5cblxuICB2YXIgaW5lcnRpYWxNb2R1bGFyaXR5ID0gMDtcbiAgdmFyIHBhcmFtID0gMiAqIGxlbmd0aCAqIHZhcmlhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoaSA9PT0gaiB8fCBjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGluZXJ0aWFsID0gbm9kZXNbaV0uY2x1c3RlckluZXJ0aWFsICogbm9kZXNbal0uY2x1c3RlckluZXJ0aWFsIC8gTWF0aC5wb3cocGFyYW0sIDIpIC0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdIC8gcGFyYW07XG4gICAgICBpbmVydGlhbE1vZHVsYXJpdHkgKz0gaW5lcnRpYWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihpbmVydGlhbE1vZHVsYXJpdHkudG9GaXhlZCg0KSk7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZCDlt67lgLzpmIjlgLxcbiAqIEBwYXJhbSBpbmVydGlhbE1vZHVsYXJpdHkg5piv5ZCm5L2/55So5oOv5oCn5qih5Z2X5bqm77yI5Y2z6IqC54K55bGe5oCn55u45Ly85oCn77yJXG4gKi9cblxuXG52YXIgbG91dmFpbiA9IGZ1bmN0aW9uIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIGluZXJ0aWFsTW9kdWxhcml0eSwgaW5lcnRpYWxXZWlnaHQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjAwMDE7XG4gIH1cblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbE1vZHVsYXJpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgIG5vZGUucHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIG5vZGUub3JpZ2luSW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgICB2YXIgbm9kZVR5cGVJbmZvXzEgPSBbXTtcblxuICAgIGlmIChub2Rlcy5ldmVyeShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzT3duUHJvcGVydHkoJ25vZGVUeXBlJyk7XG4gICAgfSkpIHtcbiAgICAgIG5vZGVUeXBlSW5mb18xID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZTtcbiAgICAgIH0pKSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUucHJvcGVydGllcy5ub2RlVHlwZSA9IG5vZGVUeXBlSW5mb18xLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09IG5vZGUubm9kZVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSAvLyDmiYDmnInoioLngrnlsZ7mgKfpm4blkIhcblxuXG4gICAgdmFyIHByb3BlcnRpZXMgPSAoMCwgX25vZGVQcm9wZXJ0aWVzLmdldEFsbFByb3BlcnRpZXMpKG5vZGVzKTsgLy8g5omA5pyJ6IqC54K55bGe5oCnb25lLWhvdOeJueW+geWQkemHj+mbhuWQiFxuXG4gICAgYWxsUHJvcGVydGllc1dlaWdodCA9ICgwLCBfZGF0YVByZXByb2Nlc3Npbmcub25lSG90KShwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHZhciB1bmlxdWVJZCA9IDE7XG4gIHZhciBjbHVzdGVycyA9IHt9O1xuICB2YXIgbm9kZU1hcCA9IHt9OyAvLyBpbml0IHRoZSBjbHVzdGVycyBhbmQgbm9kZU1hcFxuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICB2YXIgY2lkID0gU3RyaW5nKHVuaXF1ZUlkKyspO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2lkO1xuICAgIGNsdXN0ZXJzW2NpZF0gPSB7XG4gICAgICBpZDogY2lkLFxuICAgICAgbm9kZXM6IFtub2RlXVxuICAgIH07XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBpZHg6IGlcbiAgICB9O1xuICB9KTsgLy8gdGhlIGFkamFjZW50IG1hdHJpeCBvZiBjYWxOb2RlcyBpbnNpZGUgY2x1c3RlcnNcblxuICB2YXIgYWRqTWF0cml4ID0gKDAsIF9hZGphY2VudE1hdHJpeC5kZWZhdWx0KShncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gdGhlIHN1bSBvZiBlYWNoIHJvdyBpbiBhZGphY2VudCBtYXRyaXhcblxuICB2YXIga3MgPSBbXTtcbiAgLyoqXG4gICAqIG5laWdoYm9yIG5vZGVzIChpZCBmb3Iga2V5IGFuZCB3ZWlnaHQgZm9yIHZhbHVlKSBmb3IgZWFjaCBub2RlXG4gICAqIG5laWdoYm9ycyA9IHtcbiAgICogIGlkKG5vZGVfaWQpOiB7IGlkKG5laWdoYm9yXzFfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgaWQobmVpZ2hib3JfMl9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCAuLi4gfSxcbiAgICogIC4uLlxuICAgKiB9XG4gICAqL1xuXG4gIHZhciBuZWlnaGJvcnMgPSB7fTsgLy8gdGhlIHN1bSBvZiB0aGUgd2VpZ2h0cyBvZiBhbGwgZWRnZXMgaW4gdGhlIGdyYXBoXG5cbiAgdmFyIG0gPSAwO1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICAgIG0gKz0gZW50cnk7XG4gICAgfSk7XG4gICAga3MucHVzaChrKTtcbiAgfSk7XG4gIG0gLz0gMjtcbiAgdmFyIHRvdGFsTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgcHJldmlvdXNNb2R1bGFyaXR5ID0gSW5maW5pdHk7XG4gIHZhciBpdGVyID0gMDtcbiAgdmFyIGZpbmFsTm9kZXMgPSBbXTtcbiAgdmFyIGZpbmFsQ2x1c3RlcnMgPSB7fTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChpbmVydGlhbE1vZHVsYXJpdHkgJiYgbm9kZXMuZXZlcnkoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJyk7XG4gICAgfSkpIHtcbiAgICAgIHRvdGFsTW9kdWxhcml0eSA9IGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pICsgZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KG5vZGVzLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKTtcbiAgICB9IC8vIOesrOS4gOasoei/reS7o3ByZXZpb3VzTW9kdWxhcml0eeebtOaOpei1i+WAvFxuXG5cbiAgICBpZiAoaXRlciA9PT0gMCkge1xuICAgICAgcHJldmlvdXNNb2R1bGFyaXR5ID0gdG90YWxNb2R1bGFyaXR5O1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzO1xuICAgICAgZmluYWxDbHVzdGVycyA9IGNsdXN0ZXJzO1xuICAgIH1cblxuICAgIHZhciBpbmNyZWFzZVdpdGhpblRocmVzaG9sZCA9IHRvdGFsTW9kdWxhcml0eSA+IDAgJiYgdG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5ICYmIHRvdGFsTW9kdWxhcml0eSAtIHByZXZpb3VzTW9kdWxhcml0eSA8IHRocmVzaG9sZDsgLy8g5oC75qih5Z2X5bqm5aKe5Yqg5omN5pu05paw5pyA5LyY6KejXG5cbiAgICBpZiAodG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5KSB7XG4gICAgICBmaW5hbE5vZGVzID0gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICBjbHVzdGVySWQ6IG5vZGUuY2x1c3RlcklkXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSAoMCwgX3V0aWwuY2xvbmUpKGNsdXN0ZXJzKTtcbiAgICAgIHByZXZpb3VzTW9kdWxhcml0eSA9IHRvdGFsTW9kdWxhcml0eTtcbiAgICB9IC8vIHdoZXRoZXIgdG8gdGVybWluYXRlIHRoZSBpdGVyYXRpb25zXG5cblxuICAgIGlmIChpbmNyZWFzZVdpdGhpblRocmVzaG9sZCB8fCBpdGVyID4gMTAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICA7XG4gICAgaXRlcisrOyAvLyBwcmUgY29tcHV0ZSBzb21lIHZhbHVlcyBmb3IgY3VycmVudCBjbHVzdGVyc1xuXG4gICAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgICAgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgdG8gbm9kZXMgaW4gY2x1c3RlclxuICAgICAgdmFyIHN1bVRvdCA9IDA7XG4gICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgICAgICB2YXIgdGFyZ2V0Q2x1c3RlcklkID0gbm9kZU1hcFt0YXJnZXRdLm5vZGUuY2x1c3RlcklkO1xuXG4gICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IGNsdXN0ZXJJZCAmJiB0YXJnZXRDbHVzdGVySWQgIT09IGNsdXN0ZXJJZCB8fCB0YXJnZXRDbHVzdGVySWQgPT09IGNsdXN0ZXJJZCAmJiBzb3VyY2VDbHVzdGVySWQgIT09IGNsdXN0ZXJJZCkge1xuICAgICAgICAgIHN1bVRvdCA9IHN1bVRvdCArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY2x1c3RlcnNbY2x1c3RlcklkXS5zdW1Ub3QgPSBzdW1Ub3Q7XG4gICAgfSk7IC8vIG1vdmUgdGhlIG5vZGVzIHRvIGluY3JlYXNlIHRoZSBkZWx0YSBtb2R1bGFyaXR5XG5cbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICB2YXIgc2VsZkNsdXN0ZXIgPSBjbHVzdGVyc1tub2RlLmNsdXN0ZXJJZF07XG4gICAgICB2YXIgYmVzdEluY3JlYXNlID0gMDtcbiAgICAgIHZhciBiZXN0Q2x1c3RlcjtcbiAgICAgIHZhciBjb21tb25QYXJhbSA9IGtzW2ldIC8gKDIgKiBtKTsgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgZnJvbSBub2RlIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgdmFyIGtpaW4gPSAwO1xuICAgICAgdmFyIHNlbGZDbHVzdGVyTm9kZXMgPSBzZWxmQ2x1c3Rlci5ub2RlcztcbiAgICAgIHNlbGZDbHVzdGVyTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoc2NOb2RlKSB7XG4gICAgICAgIHZhciBzY05vZGVJZHggPSBub2RlTWFwW3NjTm9kZS5pZF0uaWR4O1xuICAgICAgICBraWluICs9IGFkak1hdHJpeFtpXVtzY05vZGVJZHhdIHx8IDA7XG4gICAgICB9KTsgLy8gdGhlIG1vZHVyYXJpdHkgZm9yICoqcmVtb3ZpbmcqKiB0aGUgbm9kZSBpIGZyb20gdGhlIG9yaWdpbiBjbHVzdGVyIG9mIG5vZGUgaVxuXG4gICAgICB2YXIgcmVtb3ZlTW9kdXJhcml0eSA9IGtpaW4gLSBzZWxmQ2x1c3Rlci5zdW1Ub3QgKiBjb21tb25QYXJhbTsgLy8gbm9kZXMgZm9yICoqcmVtb3ZpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgdmFyIHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZSA9IHNlbGZDbHVzdGVyTm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChzY05vZGUpIHtcbiAgICAgICAgcmV0dXJuIHNjTm9kZS5pZCAhPT0gbm9kZS5pZDtcbiAgICAgIH0pO1xuICAgICAgdmFyIHByb3BlcnRpZXNXZWlnaHRSZW1vdmUgPSBbXTtcbiAgICAgIHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlUmVtb3ZlLCBpbmRleCkge1xuICAgICAgICBwcm9wZXJ0aWVzV2VpZ2h0UmVtb3ZlW2luZGV4XSA9IGFsbFByb3BlcnRpZXNXZWlnaHRbbm9kZVJlbW92ZS5vcmlnaW5JbmRleF07XG4gICAgICB9KTsgLy8gdGhlIGluZXJ0aWFsTW9kdWxhcml0eSBmb3IgKipyZW1vdmluZyoqIHRoZSBub2RlIGkgZnJvbSB0aGUgb3JpZ2luIGNsdXN0ZXIgb2Ygbm9kZSBpXG5cbiAgICAgIHZhciByZW1vdmVJbmVydGlhbE1vZHVsYXJpdHkgPSBnZXRJbmVydGlhbE1vZHVsYXJpdHkoc2VsZkNsdXN0ZXJOb2Rlc0FmdGVyUmVtb3ZlLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0OyAvLyB0aGUgbmVpZ2h0Ym9ycyBvZiB0aGUgbm9kZVxuXG4gICAgICB2YXIgbm9kZU5laWdoYm9ySWRzID0gbmVpZ2hib3JzW25vZGUuaWRdO1xuICAgICAgT2JqZWN0LmtleXMobm9kZU5laWdoYm9ySWRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvck5vZGVJZCkge1xuICAgICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbm9kZU1hcFtuZWlnaGJvck5vZGVJZF0ubm9kZTtcbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcklkID0gbmVpZ2hib3JOb2RlLmNsdXN0ZXJJZDsgLy8gaWYgdGhlIG5vZGUgYW5kIHRoZSBuZWlnaGJvciBvZiBub2RlIGFyZSBpbiB0aGUgc2FtZSBjbHVzdGVyLCByZXV0cm5cblxuICAgICAgICBpZiAobmVpZ2hib3JDbHVzdGVySWQgPT09IG5vZGUuY2x1c3RlcklkKSByZXR1cm47XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXIgPSBjbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF07XG4gICAgICAgIHZhciBjbHVzdGVyTm9kZXMgPSBuZWlnaGJvckNsdXN0ZXIubm9kZXM7IC8vIGlmIHRoZSBjbHVzdGVyIGlzIGVtcHR5LCByZW1vdmUgdGhlIGNsdXN0ZXIgYW5kIHJldHVyblxuXG4gICAgICAgIGlmICghY2x1c3Rlck5vZGVzIHx8ICFjbHVzdGVyTm9kZXMubGVuZ3RoKSByZXR1cm47IC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIGZyb20gbm9kZSB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcktpaW4gPSAwO1xuICAgICAgICBjbHVzdGVyTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoY05vZGUpIHtcbiAgICAgICAgICB2YXIgY05vZGVJZHggPSBub2RlTWFwW2NOb2RlLmlkXS5pZHg7XG4gICAgICAgICAgbmVpZ2hib3JDbHVzdGVyS2lpbiArPSBhZGpNYXRyaXhbaV1bY05vZGVJZHhdIHx8IDA7XG4gICAgICAgIH0pOyAvLyB0aGUgbW9kdXJhcml0eSBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgYWRkTW9kdXJhcml0eSA9IG5laWdoYm9yQ2x1c3RlcktpaW4gLSBuZWlnaGJvckNsdXN0ZXIuc3VtVG90ICogY29tbW9uUGFyYW07IC8vIG5vZGVzIGZvciAqKmFkZGluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICAgIHZhciBjbHVzdGVyTm9kZXNBZnRlckFkZCA9IGNsdXN0ZXJOb2Rlcy5jb25jYXQoW25vZGVdKTtcbiAgICAgICAgdmFyIHByb3BlcnRpZXNXZWlnaHRBZGQgPSBbXTtcbiAgICAgICAgY2x1c3Rlck5vZGVzQWZ0ZXJBZGQuZm9yRWFjaChmdW5jdGlvbiAobm9kZUFkZCwgaW5kZXgpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzV2VpZ2h0QWRkW2luZGV4XSA9IGFsbFByb3BlcnRpZXNXZWlnaHRbbm9kZUFkZC5vcmlnaW5JbmRleF07XG4gICAgICAgIH0pOyAvLyB0aGUgaW5lcnRpYWxNb2R1bGFyaXR5IGZvciAqKmFkZGluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICAgIHZhciBhZGRJbmVydGlhbE1vZHVsYXJpdHkgPSBnZXRJbmVydGlhbE1vZHVsYXJpdHkoY2x1c3Rlck5vZGVzQWZ0ZXJBZGQsIGFsbFByb3BlcnRpZXNXZWlnaHQpICogaW5lcnRpYWxXZWlnaHQ7IC8vIHRoZSBpbmNyZWFzZSBtb2R1cmFyaXR5IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRkTW9kdXJhcml0eSBhbmQgcmVtb3ZlTW9kdXJhcml0eVxuXG4gICAgICAgIHZhciBpbmNyZWFzZSA9IGFkZE1vZHVyYXJpdHkgLSByZW1vdmVNb2R1cmFyaXR5O1xuXG4gICAgICAgIGlmIChpbmVydGlhbE1vZHVsYXJpdHkpIHtcbiAgICAgICAgICBpbmNyZWFzZSA9IGFkZE1vZHVyYXJpdHkgKyBhZGRJbmVydGlhbE1vZHVsYXJpdHkgLSAocmVtb3ZlTW9kdXJhcml0eSArIHJlbW92ZUluZXJ0aWFsTW9kdWxhcml0eSk7XG4gICAgICAgIH0gLy8gZmluZCB0aGUgYmVzdCBjbHVzdGVyIHRvIG1vdmUgbm9kZSBpIGludG9cblxuXG4gICAgICAgIGlmIChpbmNyZWFzZSA+IGJlc3RJbmNyZWFzZSkge1xuICAgICAgICAgIGJlc3RJbmNyZWFzZSA9IGluY3JlYXNlO1xuICAgICAgICAgIGJlc3RDbHVzdGVyID0gbmVpZ2hib3JDbHVzdGVyO1xuICAgICAgICB9XG4gICAgICB9KTsgLy8gaWYgZm91bmQgYSBiZXN0IGNsdXN0ZXIgdG8gbW92ZSBpbnRvXG5cbiAgICAgIGlmIChiZXN0SW5jcmVhc2UgPiAwKSB7XG4gICAgICAgIGJlc3RDbHVzdGVyLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIHZhciBwcmV2aW91c0NsdXN0ZXJJZF8xID0gbm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIG5vZGUuY2x1c3RlcklkID0gYmVzdENsdXN0ZXIuaWQ7IC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGJlc3QgY2x1c3RlclxuXG4gICAgICAgIHZhciBub2RlSW5TZWxmQ2x1c3RlcklkeCA9IHNlbGZDbHVzdGVyLm5vZGVzLmluZGV4T2Yobm9kZSk7IC8vIHJlbW92ZSBmcm9tIG9yaWdpbiBjbHVzdGVyXG5cbiAgICAgICAgc2VsZkNsdXN0ZXIubm9kZXMuc3BsaWNlKG5vZGVJblNlbGZDbHVzdGVySWR4LCAxKTsgLy8gdXBkYXRlIHN1bVRvdCBmb3IgY2x1c3RlcnNcbiAgICAgICAgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSA9IDA7XG4gICAgICAgIHZhciBzZWxmQ2x1c3RlclN1bVRvdF8xID0gMDtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgICAgICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgICB2YXIgdGFyZ2V0Q2x1c3RlcklkID0gbm9kZU1hcFt0YXJnZXRdLm5vZGUuY2x1c3RlcklkO1xuXG4gICAgICAgICAgaWYgKHNvdXJjZUNsdXN0ZXJJZCA9PT0gYmVzdENsdXN0ZXIuaWQgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBiZXN0Q2x1c3Rlci5pZCB8fCB0YXJnZXRDbHVzdGVySWQgPT09IGJlc3RDbHVzdGVyLmlkICYmIHNvdXJjZUNsdXN0ZXJJZCAhPT0gYmVzdENsdXN0ZXIuaWQpIHtcbiAgICAgICAgICAgIG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xID0gbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IHByZXZpb3VzQ2x1c3RlcklkXzEgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBwcmV2aW91c0NsdXN0ZXJJZF8xIHx8IHRhcmdldENsdXN0ZXJJZCA9PT0gcHJldmlvdXNDbHVzdGVySWRfMSAmJiBzb3VyY2VDbHVzdGVySWQgIT09IHByZXZpb3VzQ2x1c3RlcklkXzEpIHtcbiAgICAgICAgICAgIHNlbGZDbHVzdGVyU3VtVG90XzEgPSBzZWxmQ2x1c3RlclN1bVRvdF8xICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pOyAvLyB0aGUgbm9kZXMgb2YgdGhlIGNsdXN0ZXJzIHRvIG1vdmUgaW50byBhbmQgcmVtb3ZlIGFyZSBjaGFuZ2VkLCB1cGRhdGUgdGhlaXIgc3VtVG90XG5cbiAgICAgICAgYmVzdENsdXN0ZXIuc3VtVG90ID0gbmVpZ2hib3JDbHVzdGVyU3VtVG90XzE7XG4gICAgICAgIHNlbGZDbHVzdGVyLnN1bVRvdCA9IHNlbGZDbHVzdGVyU3VtVG90XzE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gLy8gZGVsZXRlIHRoZSBlbXB0eSBjbHVzdGVycywgYXNzaWduIGluY3JlYXNpbmcgY2x1c3RlcklkXG5cblxuICB2YXIgbmV3Q2x1c3RlcklkTWFwID0ge307XG4gIHZhciBjbHVzdGVySWR4ID0gMDtcbiAgT2JqZWN0LmtleXMoZmluYWxDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgdmFyIGNsdXN0ZXIgPSBmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF07XG5cbiAgICBpZiAoIWNsdXN0ZXIubm9kZXMgfHwgIWNsdXN0ZXIubm9kZXMubGVuZ3RoKSB7XG4gICAgICBkZWxldGUgZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBuZXdJZCA9IFN0cmluZyhjbHVzdGVySWR4ICsgMSk7XG5cbiAgICBpZiAobmV3SWQgPT09IGNsdXN0ZXJJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNsdXN0ZXIuaWQgPSBuZXdJZDtcbiAgICBjbHVzdGVyLm5vZGVzID0gY2x1c3Rlci5ub2Rlcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICBjbHVzdGVySWQ6IG5ld0lkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGZpbmFsQ2x1c3RlcnNbbmV3SWRdID0gY2x1c3RlcjtcbiAgICBuZXdDbHVzdGVySWRNYXBbY2x1c3RlcklkXSA9IG5ld0lkO1xuICAgIGRlbGV0ZSBmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgY2x1c3RlcklkeCsrO1xuICB9KTsgLy8gcmVzdG9yZSBub2RlIGNsdXN0ZXJJZFxuXG4gIGZpbmFsTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZUluZm8pIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVJbmZvLm5vZGUsXG4gICAgICAgIGNsdXN0ZXJJZCA9IG5vZGVJbmZvLmNsdXN0ZXJJZDtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNsdXN0ZXJJZDtcbiAgICBpZiAobm9kZS5jbHVzdGVySWQgJiYgbmV3Q2x1c3RlcklkTWFwW25vZGUuY2x1c3RlcklkXSkgbm9kZS5jbHVzdGVySWQgPSBuZXdDbHVzdGVySWRNYXBbbm9kZS5jbHVzdGVySWRdO1xuICB9KTsgLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cbiAgdmFyIGNsdXN0ZXJFZGdlcyA9IFtdO1xuICB2YXIgY2x1c3RlckVkZ2VNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHdlaWdodCA9IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxO1xuICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgbmV3RWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlQ2x1c3RlcklkLCBcIi0tLVwiKS5jb25jYXQodGFyZ2V0Q2x1c3RlcklkKTtcblxuICAgIGlmIChjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdKSB7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLndlaWdodCArPSB3ZWlnaHQ7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLmNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXdFZGdlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZUNsdXN0ZXJJZCxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRDbHVzdGVySWQsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNsdXN0ZXJzQXJyYXkgPSBbXTtcbiAgT2JqZWN0LmtleXMoZmluYWxDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgY2x1c3RlcnNBcnJheS5wdXNoKGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVyc0FycmF5LFxuICAgIGNsdXN0ZXJFZGdlczogY2x1c3RlckVkZ2VzXG4gIH07XG59O1xuXG52YXIgX2RlZmF1bHQgPSBsb3V2YWluO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/louvain.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/mts.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/mts.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _unionFind = _interopRequireDefault(__webpack_require__(/*! ./structs/union-find */ \"./node_modules/@antv/algorithm/lib/structs/union-find.js\"));\n\nvar _binaryHeap = _interopRequireDefault(__webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/@antv/algorithm/lib/structs/binary-heap.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _binaryHeap.default(compareWeight);\n (0, _util.getEdgesByNodeId)(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n (0, _util.getEdgesByNodeId)(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n (0, _util.getEdgesByNodeId)(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _unionFind.default(nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\nvar _default = minimumSpanningTree;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9tdHMuanM/M2VmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLHNGQUFzQjs7QUFFdEUseUNBQXlDLG1CQUFPLENBQUMsd0ZBQXVCOztBQUV4RSxZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEdBQUcsR0FBRztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3VuaW9uRmluZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc3RydWN0cy91bmlvbi1maW5kXCIpKTtcblxudmFyIF9iaW5hcnlIZWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cbnZhciBwcmltTVNUID0gZnVuY3Rpb24gcHJpbU1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDku45ub2Rlc1swXeW8gOWni1xuXG5cbiAgdmFyIGN1cnJOb2RlID0gbm9kZXNbMF07XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2aXNpdGVkLmFkZChjdXJyTm9kZSk7IC8vIOeUqOS6jOWPieWghue7tOaKpOi3neW3suWKoOWFpeiKgueCueeahOWFtuS7luiKgueCueeahOi+ueeahOadg+WAvFxuXG4gIHZhciBjb21wYXJlV2VpZ2h0ID0gZnVuY3Rpb24gY29tcGFyZVdlaWdodChhLCBiKSB7XG4gICAgaWYgKHdlaWdodCkge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgdmFyIGVkZ2VRdWV1ZSA9IG5ldyBfYmluYXJ5SGVhcC5kZWZhdWx0KGNvbXBhcmVXZWlnaHQpO1xuICAoMCwgX3V0aWwuZ2V0RWRnZXNCeU5vZGVJZCkoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgKDAsIF91dGlsLmdldEVkZ2VzQnlOb2RlSWQpKHNvdXJjZSwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdmlzaXRlZC5oYXModGFyZ2V0KSkge1xuICAgICAgdmlzaXRlZC5hZGQodGFyZ2V0KTtcbiAgICAgICgwLCBfdXRpbC5nZXRFZGdlc0J5Tm9kZUlkKSh0YXJnZXQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIEtydXNrYWwgYWxnb3JpdGht77yM5aSN5p2C5bqmIE8oRSpsb2dFKSwgRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcmV0dXJuIElFZGdlW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIga3J1c2thbE1TVCA9IGZ1bmN0aW9uIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpIHtcbiAgdmFyIHNlbGVjdGVkRWRnZXMgPSBbXTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWRnZXM7XG4gIH0gLy8g6Iul5oyH5a6ad2VpZ2h077yM5YiZ5bCG5omA5pyJ55qE6L655oyJ5p2D5YC85LuO5bCP5Yiw5aSn5o6S5bqPXG5cblxuICB2YXIgd2VpZ2h0RWRnZXMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZTtcbiAgfSk7XG5cbiAgaWYgKHdlaWdodCkge1xuICAgIHdlaWdodEVkZ2VzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndlaWdodCAtIGIud2VpZ2h0O1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGRpc2pvaW50U2V0ID0gbmV3IF91bmlvbkZpbmQuZGVmYXVsdChub2Rlcy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pZDtcbiAgfSkpOyAvLyDku47mnYPlgLzmnIDlsI/nmoTovrnlvIDlp4vvvIzlpoLmnpzov5nmnaHovrnov57mjqXnmoTkuKTkuKroioLngrnkuo7lm75H5Lit5LiN5Zyo5ZCM5LiA5Liq6L+e6YCa5YiG6YeP5Lit77yM5YiZ5re75Yqg6L+Z5p2h6L65XG4gIC8vIOebtOWIsOmBjeWOhuWujOaJgOacieeCueaIlui+uVxuXG4gIHdoaWxlICh3ZWlnaHRFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGN1ckVkZ2UgPSB3ZWlnaHRFZGdlcy5zaGlmdCgpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJFZGdlLnNvdXJjZTtcbiAgICB2YXIgdGFyZ2V0ID0gY3VyRWRnZS50YXJnZXQ7XG5cbiAgICBpZiAoIWRpc2pvaW50U2V0LmNvbm5lY3RlZChzb3VyY2UsIHRhcmdldCkpIHtcbiAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChjdXJFZGdlKTtcbiAgICAgIGRpc2pvaW50U2V0LnVuaW9uKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIOacgOWwj+eUn+aIkOagkVxuICogcmVmZXI6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tydXNrYWwlMjdzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gd2VpZ2h0IOaMh+WumueUqOS6juS9nOS4uui+ueadg+mHjeeahOWxnuaAp++8jOiLpeS4jeaMh+Wumu+8jOWImeiupOS4uuaJgOaciei+ueadg+mHjeS4gOiHtFxuICogQHBhcmFtIGFsZ28gJ3ByaW0nIHwgJ2tydXNrYWwnIOeul+azleexu+Wei1xuICogQHJldHVybiBFZGdlQ29uZmlnW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZSA9IGZ1bmN0aW9uIG1pbmltdW1TcGFubmluZ1RyZWUoZ3JhcGhEYXRhLCB3ZWlnaHQsIGFsZ28pIHtcbiAgdmFyIGFsZ29zID0ge1xuICAgIHByaW06IHByaW1NU1QsXG4gICAga3J1c2thbDoga3J1c2thbE1TVFxuICB9O1xuICBpZiAoIWFsZ28pIHJldHVybiBrcnVza2FsTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbiAgcmV0dXJuIGFsZ29zW2FsZ29dKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IG1pbmltdW1TcGFubmluZ1RyZWU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/mts.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/pageRank.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/pageRank.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _degree = _interopRequireDefault(__webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/lib/degree.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = (0, _degree.default)(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = (0, _util.getNeighbors)(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\nvar _default = pageRank;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9wYWdlUmFuay5qcz8wNzY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEscUNBQXFDLG1CQUFPLENBQUMsOERBQVU7O0FBRXZELFlBQVksbUJBQU8sQ0FBQywwREFBUTs7QUFFNUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvcGFnZVJhbmsuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZWdyZWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RlZ3JlZVwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogUGFnZVJhbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFnZVJhbmtcbiAqIHJlZmVyOiBodHRwczovL2dpdGh1Yi5jb20vYW52YWthL25ncmFwaC5wYWdlcmFua1xuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZXBzaWxvbiDliKTmlq3mmK/lkKbmlLbmlZvnmoTnsr7luqblgLzvvIzpu5jorqQgMC4wMDAwMDFcbiAqIEBwYXJhbSBsaW5rUHJvYiDpmLvlsLzns7vmlbDvvIhkdW1waW5nIGZhY3Rvcu+8ie+8jOaMh+S7u+aEj+aXtuWIu++8jOeUqOaIt+iuv+mXruWIsOafkOiKgueCueWQjue7p+e7reiuv+mXruivpeiKgueCuemTvuaOpeeahOS4i+S4gOS4quiKgueCueeahOamgueOh++8jOe7j+mqjOWAvCAwLjg1XG4gKi9cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSAoMCwgX2RlZ3JlZS5kZWZhdWx0KShncmFwaERhdGEpO1xuXG4gIHdoaWxlIChtYXhJdGVyYXRpb25zID4gMCAmJiBkaXN0YW5jZSA+IGVwc2lsb24pIHtcbiAgICBsZWFrZWRSYW5rID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXNDb3VudDsgKytqKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGUuaWQ7XG4gICAgICBjdXJyZW50UmFuayA9IDA7XG5cbiAgICAgIGlmIChub2RlRGVncmVlW25vZGUuaWRdLmluRGVncmVlID09PSAwKSB7XG4gICAgICAgIGN1clJhbmtzW25vZGVJZF0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGVJZCwgZWRnZXMsICdzb3VyY2UnKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcbiAgICAgICAgICB2YXIgb3V0RGVncmVlID0gbm9kZURlZ3JlZVtuZWlnaGJvcl0ub3V0RGVncmVlO1xuICAgICAgICAgIGlmIChvdXREZWdyZWUgPiAwKSBjdXJyZW50UmFuayArPSBwcmV2UmFua3NbbmVpZ2hib3JdIC8gb3V0RGVncmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VyUmFua3Nbbm9kZUlkXSA9IGxpbmtQcm9iICogY3VycmVudFJhbms7XG4gICAgICAgIGxlYWtlZFJhbmsgKz0gY3VyUmFua3Nbbm9kZUlkXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWFrZWRSYW5rID0gKDEgLSBsZWFrZWRSYW5rKSAvIG5vZGVzQ291bnQ7XG4gICAgZGlzdGFuY2UgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbal07XG4gICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICAgIGN1cnJlbnRSYW5rID0gY3VyUmFua3Nbbm9kZUlkXSArIGxlYWtlZFJhbms7XG4gICAgICBkaXN0YW5jZSArPSBNYXRoLmFicyhjdXJyZW50UmFuayAtIHByZXZSYW5rc1tub2RlSWRdKTtcbiAgICAgIHByZXZSYW5rc1tub2RlSWRdID0gY3VycmVudFJhbms7XG4gICAgfVxuXG4gICAgbWF4SXRlcmF0aW9ucyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIHByZXZSYW5rcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IHBhZ2VSYW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/pageRank.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/structs/binary-heap.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/structs/binary-heap.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\nvar _default = MinBinaryHeap;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2JpbmFyeS1oZWFwLmpzPzljMmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL3N0cnVjdHMvYmluYXJ5LWhlYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIGRlZmF1bHRDb21wYXJlID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59O1xuXG52YXIgTWluQmluYXJ5SGVhcCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbkJpbmFyeUhlYXAoY29tcGFyZUZuKSB7XG4gICAgaWYgKGNvbXBhcmVGbiA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wYXJlRm4gPSBkZWZhdWx0Q29tcGFyZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBhcmVGbiA9IGNvbXBhcmVGbjtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgfVxuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiAyICogaW5kZXggKyAyO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGluZGV4IC0gMSkgLyAyKTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QubGVuZ3RoIDw9IDA7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUudG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmlzRW1wdHkoKSA/IHVuZGVmaW5lZCA6IHRoaXMubGlzdFswXTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5kZWxNaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRvcCA9IHRoaXMudG9wKCk7XG4gICAgdmFyIGJvdHRvbSA9IHRoaXMubGlzdC5wb3AoKTtcblxuICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5saXN0WzBdID0gYm90dG9tO1xuICAgICAgdGhpcy5tb3ZlRG93bigwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9wO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5saXN0LnB1c2godmFsdWUpO1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5saXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLm1vdmVVcChpbmRleCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUubW92ZVVwID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KGluZGV4KTtcblxuICAgIHdoaWxlIChpbmRleCAmJiBpbmRleCA+IDAgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF0pID4gMCkge1xuICAgICAgLy8gc3dhcFxuICAgICAgdmFyIHRtcCA9IHRoaXMubGlzdFtwYXJlbnRdO1xuICAgICAgdGhpcy5saXN0W3BhcmVudF0gPSB0aGlzLmxpc3RbaW5kZXhdO1xuICAgICAgdGhpcy5saXN0W2luZGV4XSA9IHRtcDsgLy8gW3RoaXMubGlzdFtpbmRleF0sIHRoaXMubGlzdFtwYXJlbnRdXSA9IFt0aGlzLmxpc3RbcGFyZW50XSwgdGhpcy5saXN0W2luZGV4XV1cblxuICAgICAgaW5kZXggPSBwYXJlbnQ7XG4gICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG4gICAgfVxuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVEb3duID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGVsZW1lbnQgPSBpbmRleDtcbiAgICB2YXIgbGVmdCA9IHRoaXMuZ2V0TGVmdChpbmRleCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5nZXRSaWdodChpbmRleCk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmxpc3QubGVuZ3RoO1xuXG4gICAgaWYgKGxlZnQgIT09IG51bGwgJiYgbGVmdCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbbGVmdF0pID4gMCkge1xuICAgICAgZWxlbWVudCA9IGxlZnQ7XG4gICAgfSBlbHNlIGlmIChyaWdodCAhPT0gbnVsbCAmJiByaWdodCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbcmlnaHRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSByaWdodDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT09IGVsZW1lbnQpIHtcbiAgICAgIF9hID0gW3RoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2luZGV4XV0sIHRoaXMubGlzdFtpbmRleF0gPSBfYVswXSwgdGhpcy5saXN0W2VsZW1lbnRdID0gX2FbMV07XG4gICAgICB0aGlzLm1vdmVEb3duKGVsZW1lbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gTWluQmluYXJ5SGVhcDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTWluQmluYXJ5SGVhcDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/binary-heap.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/structs/linked-list.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/structs/linked-list.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.LinkedListNode = void 0;\n\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\nexports.LinkedListNode = LinkedListNode;\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\nvar _default = LinkedList;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzPzVjYjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLkxpbmtlZExpc3ROb2RlID0gdm9pZCAwO1xuXG52YXIgZGVmYXVsdENvbXBhcmF0b3IgPSBmdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDpk77ooajkuK3ljZXkuKrlhYPntKDoioLngrlcbiAqL1xuXG5cbnZhciBMaW5rZWRMaXN0Tm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3ROb2RlKHZhbHVlLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgPT09IHZvaWQgMCkge1xuICAgICAgbmV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cblxuICBMaW5rZWRMaXN0Tm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gY2FsbGJhY2sgPyBjYWxsYmFjayh0aGlzLnZhbHVlKSA6IFwiXCIuY29uY2F0KHRoaXMudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0Tm9kZTtcbn0oKTtcblxuZXhwb3J0cy5MaW5rZWRMaXN0Tm9kZSA9IExpbmtlZExpc3ROb2RlO1xuXG52YXIgTGlua2VkTGlzdCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3QoY29tcGFyYXRvcikge1xuICAgIGlmIChjb21wYXJhdG9yID09PSB2b2lkIDApIHtcbiAgICAgIGNvbXBhcmF0b3IgPSBkZWZhdWx0Q29tcGFyYXRvcjtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5jb21wYXJlID0gY29tcGFyYXRvcjtcbiAgfVxuICAvKipcbiAgICog5bCG5oyH5a6a5YWD57Sg5re75Yqg5Yiw6ZO+6KGo5aS06YOoXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnByZXBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyDlnKjlpLTpg6jmt7vliqDkuIDkuKroioLngrlcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgdGhpcy5oZWFkKTtcbiAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuXG4gICAgaWYgKCF0aGlzLnRhaWwpIHtcbiAgICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajkuK1cbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIG5ld05vZGUgPSBuZXcgTGlua2VkTGlzdE5vZGUodmFsdWUpOyAvLyDlpoLmnpzkuI3lrZjlnKjlpLToioLngrnvvIzliJnlsIbliJvlu7rnmoTmlrDoioLngrnkvZzkuLrlpLToioLngrlcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8g5bCG5paw6IqC54K56ZmE5Yqg5Yiw6ZO+6KGo5pyr5bC+XG5cblxuICAgIHRoaXMudGFpbC5uZXh0ID0gbmV3Tm9kZTtcbiAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB2YWx1ZSDopoHliKDpmaTnmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZU5vZGUgPSBudWxsOyAvLyDlpoLmnpzliKDpmaTnmoTmmK/lpLTpg6jlhYPntKDvvIzliJnlsIZuZXh05L2c5Li65aS05YWD57SgXG5cbiAgICB3aGlsZSAodGhpcy5oZWFkICYmIHRoaXMuY29tcGFyZSh0aGlzLmhlYWQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgZGVsZXRlTm9kZSA9IHRoaXMuaGVhZDtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIGlmIChjdXJyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgLy8g5aaC5p6c5Yig6Zmk5LqG6IqC54K55Lul5ZCO77yM5bCGbmV4dOiKgueCueWJjeenu1xuICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLm5leHQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFyZShjdXJyZW50Tm9kZS5uZXh0LnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZWxldGVOb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gY3VycmVudE5vZGUubmV4dC5uZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8g5qOA5p+l5bC+6YOo6IqC54K55piv5ZCm6KKr5Yig6ZmkXG5cblxuICAgIGlmICh0aGlzLmNvbXBhcmUodGhpcy50YWlsLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMudGFpbCA9IGN1cnJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVOb2RlO1xuICB9O1xuICAvKipcbiAgICog5p+l5om+5oyH5a6a55qE5YWD57SgXG4gICAqIEBwYXJhbSBwYXJhbTBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2EudmFsdWUsXG4gICAgICAgIHZhbHVlID0gX2IgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9iLFxuICAgICAgICBfYyA9IF9hLmNhbGxiYWNrLFxuICAgICAgICBjYWxsYmFjayA9IF9jID09PSB2b2lkIDAgPyB1bmRlZmluZWQgOiBfYztcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIC8vIOWmguaenOaMh+WumuS6hiBjYWxsYmFja++8jOWImeaMieaMh+WumueahCBjYWxsYmFjayDmn6Xmib5cbiAgICAgIGlmIChjYWxsYmFjayAmJiBjYWxsYmFjayhjdXJyZW50Tm9kZS52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfSAvLyDlpoLmnpzmjIflrprkuoYgdmFsdWXvvIzliJnmjIkgdmFsdWUg5p+l5om+XG5cblxuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlsL7pg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVUYWlsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBkZWxldGVkVGFpbCA9IHRoaXMudGFpbDtcblxuICAgIGlmICh0aGlzLmhlYWQgPT09IHRoaXMudGFpbCkge1xuICAgICAgLy8g6ZO+6KGo5Lit5Y+q5pyJ5LiA5Liq5YWD57SgXG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHJldHVybiBkZWxldGVkVGFpbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50Tm9kZS5uZXh0Lm5leHQpIHtcbiAgICAgICAgY3VycmVudE5vZGUubmV4dCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5aS06YOo6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZGVsZXRlSGVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZWRIZWFkID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKHRoaXMuaGVhZC5uZXh0KSB7XG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWRIZWFkO1xuICB9O1xuICAvKipcbiAgICog5bCG5LiA57uE5YWD57Sg6L2s5oiQ6ZO+6KGo5Lit55qE6IqC54K5XG4gICAqIEBwYXJhbSB2YWx1ZXMg6ZO+6KGo5Lit55qE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZnJvbUFycmF5ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBfdGhpcy5hcHBlbmQodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5bCG6ZO+6KGo5Lit55qE6IqC54K56L2s5oiQ5pWw57uE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIG5vZGVzLnB1c2goY3VycmVudE5vZGUpO1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfTtcbiAgLyoqXG4gICAqIOWPjei9rOmTvuihqOS4reeahOWFg+e0oOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuICAgIHZhciBwcmV2Tm9kZSA9IG51bGw7XG4gICAgdmFyIG5leHROb2RlID0gbnVsbDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5a2Y5YKo5LiL5LiA5Liq5YWD57Sg6IqC54K5XG4gICAgICBuZXh0Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7IC8vIOabtOaUueW9k+WJjeiKgueCueeahOS4i+S4gOS4quiKgueCue+8jOS7peS+v+WwhuWug+i/nuaOpeWIsOS4iuS4gOS4quiKgueCueS4ilxuXG4gICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gcHJldk5vZGU7IC8vIOWwhiBwcmV2Tm9kZSDlkowgY3VycmVudE5vZGUg5ZCR5YmN56e75Yqo5LiA5q2lXG5cbiAgICAgIHByZXZOb2RlID0gY3VycmVudE5vZGU7XG4gICAgICBjdXJyZW50Tm9kZSA9IG5leHROb2RlO1xuICAgIH1cblxuICAgIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcbiAgICB0aGlzLmhlYWQgPSBwcmV2Tm9kZTtcbiAgfTtcblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50b1N0cmluZyhjYWxsYmFjayk7XG4gICAgfSkudG9TdHJpbmcoKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTGlua2VkTGlzdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/linked-list.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/structs/queue.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/structs/queue.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _linkedList = _interopRequireDefault(__webpack_require__(/*! ./linked-list */ \"./node_modules/@antv/algorithm/lib/structs/linked-list.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linkedList.default();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\nvar _default = Queue;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3F1ZXVlLmpzPzUyYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSx5Q0FBeUMsbUJBQU8sQ0FBQyxnRkFBZTs7QUFFaEUsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2xpbmtlZExpc3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpbmtlZC1saXN0XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFF1ZXVlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUXVldWUoKSB7XG4gICAgdGhpcy5saW5rZWRMaXN0ID0gbmV3IF9saW5rZWRMaXN0LmRlZmF1bHQoKTtcbiAgfVxuICAvKipcbiAgICog6Zif5YiX5piv5ZCm5Li656m6XG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOivu+WPlumYn+WIl+WktOmDqOeahOWFg+e0oO+8jCDkuI3liKDpmaTpmJ/liJfkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMubGlua2VkTGlzdC5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG4gIC8qKlxuICAgKiDlnKjpmJ/liJfnmoTlsL7pg6jmlrDlop7kuIDkuKrlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QuYXBwZW5kKHZhbHVlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOmYn+WIl+S4reeahOWktOmDqOWFg+e0oO+8jOWmguaenOmYn+WIl+S4uuepuu+8jOWImei/lOWbniBudWxsXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmRlcXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgUXVldWUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b1N0cmluZyhjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIFF1ZXVlO1xufSgpO1xuXG52YXIgX2RlZmF1bHQgPSBRdWV1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/queue.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/structs/union-find.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/structs/union-find.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\nvar _default = UnionFind;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3VuaW9uLWZpbmQuanM/ODNhZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy91bmlvbi1maW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbi8qKlxuICog5bm25p+l6ZuGIERpc2pvaW50IHNldCB0byBzdXBwb3J0IHF1aWNrIHVuaW9uXG4gKi9cbnZhciBVbmlvbkZpbmQgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbmlvbkZpbmQoaXRlbXMpIHtcbiAgICB0aGlzLmNvdW50ID0gaXRlbXMubGVuZ3RoO1xuICAgIHRoaXMucGFyZW50ID0ge307XG5cbiAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1zXzEgPSBpdGVtczsgX2kgPCBpdGVtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGkgPSBpdGVtc18xW19pXTtcbiAgICAgIHRoaXMucGFyZW50W2ldID0gaTtcbiAgICB9XG4gIH0gLy8gZmluZCB0aGUgcm9vdCBvZiB0aGUgaXRlbVxuXG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB3aGlsZSAodGhpcy5wYXJlbnRbaXRlbV0gIT09IGl0ZW0pIHtcbiAgICAgIGl0ZW0gPSB0aGlzLnBhcmVudFtpdGVtXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBVbmlvbkZpbmQucHJvdG90eXBlLnVuaW9uID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgcm9vdEEgPSB0aGlzLmZpbmQoYSk7XG4gICAgdmFyIHJvb3RCID0gdGhpcy5maW5kKGIpO1xuICAgIGlmIChyb290QSA9PT0gcm9vdEIpIHJldHVybjsgLy8gbWFrZSB0aGUgZWxlbWVudCB3aXRoIHNtYWxsZXIgcm9vdCB0aGUgcGFyZW50XG5cbiAgICBpZiAocm9vdEEgPCByb290Qikge1xuICAgICAgaWYgKHRoaXMucGFyZW50W2JdICE9PSBiKSB0aGlzLnVuaW9uKHRoaXMucGFyZW50W2JdLCBhKTtcbiAgICAgIHRoaXMucGFyZW50W2JdID0gdGhpcy5wYXJlbnRbYV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFthXSAhPT0gYSkgdGhpcy51bmlvbih0aGlzLnBhcmVudFthXSwgYik7XG4gICAgICB0aGlzLnBhcmVudFthXSA9IHRoaXMucGFyZW50W2JdO1xuICAgIH1cbiAgfTsgLy8gd2hldGhlciBhIGFuZCBiIGFyZSBjb25uZWN0ZWQsIGkuZS4gYSBhbmQgYiBoYXZlIHRoZSBzYW1lIHJvb3RcblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuY29ubmVjdGVkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kKGEpID09PSB0aGlzLmZpbmQoYik7XG4gIH07XG5cbiAgcmV0dXJuIFVuaW9uRmluZDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gVW5pb25GaW5kO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/union-find.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/types.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/types.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DistanceType = void 0;\nvar DistanceType;\nexports.DistanceType = DistanceType;\n\n(function (DistanceType) {\n DistanceType[\"EuclideanDistance\"] = \"euclideanDistance\";\n})(DistanceType || (exports.DistanceType = DistanceType = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi90eXBlcy5qcz81ZDZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDLDJEQUEyRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL3R5cGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkRpc3RhbmNlVHlwZSA9IHZvaWQgMDtcbnZhciBEaXN0YW5jZVR5cGU7XG5leHBvcnRzLkRpc3RhbmNlVHlwZSA9IERpc3RhbmNlVHlwZTtcblxuKGZ1bmN0aW9uIChEaXN0YW5jZVR5cGUpIHtcbiAgRGlzdGFuY2VUeXBlW1wiRXVjbGlkZWFuRGlzdGFuY2VcIl0gPSBcImV1Y2xpZGVhbkRpc3RhbmNlXCI7XG59KShEaXN0YW5jZVR5cGUgfHwgKGV4cG9ydHMuRGlzdGFuY2VUeXBlID0gRGlzdGFuY2VUeXBlID0ge30pKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/types.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/util.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/util.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uniqueId = exports.getOutEdgesNodeId = exports.getNeighbors = exports.getEdgesByNodeId = void 0;\n\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getNeighbors = getNeighbors;\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getOutEdgesNodeId = getOutEdgesNodeId;\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\n\nexports.getEdgesByNodeId = getEdgesByNodeId;\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};\n\nexports.uniqueId = uniqueId;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlsLmpzP2RjZmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy51bmlxdWVJZCA9IGV4cG9ydHMuZ2V0T3V0RWRnZXNOb2RlSWQgPSBleHBvcnRzLmdldE5laWdoYm9ycyA9IGV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IHZvaWQgMDtcblxuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTmiYDmnInpgrvlsYVcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDpgrvlsYXnsbvlnotcbiAqL1xudmFyIGdldE5laWdoYm9ycyA9IGZ1bmN0aW9uIGdldE5laWdoYm9ycyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIGlmIChlZGdlcyA9PT0gdm9pZCAwKSB7XG4gICAgZWRnZXMgPSBbXTtcbiAgfVxuXG4gIHZhciBjdXJyZW50RWRnZXMgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICB9KTtcblxuICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAvLyDlvZPliY3oioLngrnkuLogc291cmNl77yM5a6D5omA5oyH5ZCR55qE55uu5qCH6IqC54K5XG4gICAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXJfMSA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXJfMShlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGN1cnJlbnRFZGdlcy5maWx0ZXIobmVpZ2hoYm9yc0NvbnZlcnRlcl8xKS5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldDtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnc291cmNlJykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiB0YXJnZXTvvIzlroPmiYDmjIflkJHnmoTmupDoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2Uuc291cmNlO1xuICAgIH0pO1xuICB9IC8vIOiLpeacquaMh+WumiB0eXBlIO+8jOWImei/lOWbnuaJgOaciemCu+WxhVxuXG5cbiAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCA/IGVkZ2UudGFyZ2V0IDogZWRnZS5zb3VyY2U7XG4gIH07XG5cbiAgcmV0dXJuIGN1cnJlbnRFZGdlcy5tYXAobmVpZ2hoYm9yc0NvbnZlcnRlcik7XG59O1xuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTlh7rovrlcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmdldE5laWdoYm9ycyA9IGdldE5laWdoYm9ycztcblxudmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5nZXRPdXRFZGdlc05vZGVJZCA9IGdldE91dEVkZ2VzTm9kZUlkO1xuXG52YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IGdldEVkZ2VzQnlOb2RlSWQ7XG5cbnZhciB1bmlxdWVJZCA9IGZ1bmN0aW9uIHVuaXF1ZUlkKGluZGV4KSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG5cbiAgdmFyIHJhbmRvbTEgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgdmFyIHJhbmRvbTIgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KGluZGV4LCBcIi1cIikuY29uY2F0KHJhbmRvbTEpLmNvbmNhdChyYW5kb20yKTtcbn07XG5cbmV4cG9ydHMudW5pcXVlSWQgPSB1bmlxdWVJZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/util.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.oneHot = exports.getDistance = exports.getAllKeyValueMap = exports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _types = __webpack_require__(/*! ../types */ \"./node_modules/@antv/algorithm/lib/types.js\");\n\nvar _vector = _interopRequireDefault(__webpack_require__(/*! ./vector */ \"./node_modules/@antv/algorithm/lib/utils/vector.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 获取数据中所有的属性及其对应的值\n * @param dataList 数据集\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\nvar getAllKeyValueMap = function getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys) {\n var keys = []; // 指定了参与计算的keys时,使用指定的keys\n\n if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) {\n keys = involvedKeys;\n } else {\n // 未指定抽取的keys时,提取数据中所有的key\n dataList.forEach(function (data) {\n keys = keys.concat(Object.keys(data));\n });\n keys = (0, _util.uniq)(keys);\n } // 获取所有值非空的key的value数组\n\n\n var allKeyValueMap = {};\n keys.forEach(function (key) {\n var value = [];\n dataList.forEach(function (data) {\n if (data[key] !== undefined && data[key] !== '') {\n value.push(data[key]);\n }\n });\n\n if (value.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) {\n allKeyValueMap[key] = (0, _util.uniq)(value);\n }\n });\n return allKeyValueMap;\n};\n/**\n * one-hot编码:数据特征提取\n * @param dataList 数据集\n * @param involvedKeys 参与计算的的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\n\nexports.getAllKeyValueMap = getAllKeyValueMap;\n\nvar oneHot = function oneHot(dataList, involvedKeys, uninvolvedKeys) {\n // 获取数据中所有的属性及其对应的值\n var allKeyValueMap = getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys);\n var oneHotCode = []; // 对数据进行one-hot编码\n\n dataList.forEach(function (data, index) {\n var code = [];\n Object.keys(allKeyValueMap).forEach(function (key) {\n var keyValue = data[key];\n var allKeyValue = allKeyValueMap[key];\n var valueIndex = allKeyValue.findIndex(function (value) {\n return keyValue === value;\n });\n var subCode = [];\n\n for (var i = 0; i < allKeyValue.length; i++) {\n if (i === valueIndex) {\n subCode.push(1);\n } else {\n subCode.push(0);\n }\n }\n\n code = code.concat(subCode);\n });\n oneHotCode[index] = code;\n });\n return oneHotCode;\n};\n/**\n * getDistance:获取两个元素之间的距离\n * @param item\n * @param otherItem\n * @param distanceType 距离类型\n * @param graphData 图数据\n */\n\n\nexports.oneHot = oneHot;\n\nvar getDistance = function getDistance(item, otherItem, distanceType, graphData) {\n if (distanceType === void 0) {\n distanceType = _types.DistanceType.EuclideanDistance;\n }\n\n var distance = 0;\n\n switch (distanceType) {\n case _types.DistanceType.EuclideanDistance:\n distance = new _vector.default(item).euclideanDistance(new _vector.default(otherItem));\n break;\n\n default:\n break;\n }\n\n return distance;\n};\n\nexports.getDistance = getDistance;\nvar _default = {\n getAllKeyValueMap: getAllKeyValueMap,\n oneHot: oneHot,\n getDistance: getDistance\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy9kYXRhLXByZXByb2Nlc3NpbmcuanM/NzE2MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBWTs7QUFFaEMsYUFBYSxtQkFBTyxDQUFDLDZEQUFVOztBQUUvQixxQ0FBcUMsbUJBQU8sQ0FBQyxvRUFBVTs7QUFFdkQsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxxQkFBcUIsd0JBQXdCO0FBQzdDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy9kYXRhLXByZXByb2Nlc3NpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMub25lSG90ID0gZXhwb3J0cy5nZXREaXN0YW5jZSA9IGV4cG9ydHMuZ2V0QWxsS2V5VmFsdWVNYXAgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX3R5cGVzID0gcmVxdWlyZShcIi4uL3R5cGVzXCIpO1xuXG52YXIgX3ZlY3RvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdmVjdG9yXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiDojrflj5bmlbDmja7kuK3miYDmnInnmoTlsZ7mgKflj4rlhbblr7nlupTnmoTlgLxcbiAqIEBwYXJhbSBkYXRhTGlzdCDmlbDmja7pm4ZcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKi9cbnZhciBnZXRBbGxLZXlWYWx1ZU1hcCA9IGZ1bmN0aW9uIGdldEFsbEtleVZhbHVlTWFwKGRhdGFMaXN0LCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKSB7XG4gIHZhciBrZXlzID0gW107IC8vIOaMh+WumuS6huWPguS4juiuoeeul+eahGtleXPml7bvvIzkvb/nlKjmjIflrprnmoRrZXlzXG5cbiAgaWYgKGludm9sdmVkS2V5cyA9PT0gbnVsbCB8fCBpbnZvbHZlZEtleXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludm9sdmVkS2V5cy5sZW5ndGgpIHtcbiAgICBrZXlzID0gaW52b2x2ZWRLZXlzO1xuICB9IGVsc2Uge1xuICAgIC8vIOacquaMh+WumuaKveWPlueahGtleXPml7bvvIzmj5Dlj5bmlbDmja7kuK3miYDmnInnmoRrZXlcbiAgICBkYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoT2JqZWN0LmtleXMoZGF0YSkpO1xuICAgIH0pO1xuICAgIGtleXMgPSAoMCwgX3V0aWwudW5pcSkoa2V5cyk7XG4gIH0gLy8g6I635Y+W5omA5pyJ5YC86Z2e56m655qEa2V555qEdmFsdWXmlbDnu4RcblxuXG4gIHZhciBhbGxLZXlWYWx1ZU1hcCA9IHt9O1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgIGRhdGFMaXN0LmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCAmJiBkYXRhW2tleV0gIT09ICcnKSB7XG4gICAgICAgIHZhbHVlLnB1c2goZGF0YVtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh2YWx1ZS5sZW5ndGggJiYgISh1bmludm9sdmVkS2V5cyA9PT0gbnVsbCB8fCB1bmludm9sdmVkS2V5cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdW5pbnZvbHZlZEtleXMuaW5jbHVkZXMoa2V5KSkpIHtcbiAgICAgIGFsbEtleVZhbHVlTWFwW2tleV0gPSAoMCwgX3V0aWwudW5pcSkodmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhbGxLZXlWYWx1ZU1hcDtcbn07XG4vKipcbiAqIG9uZS1ob3TnvJbnoIHvvJrmlbDmja7nibnlvoHmj5Dlj5ZcbiAqIEBwYXJhbSBkYXRhTGlzdCDmlbDmja7pm4ZcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qE55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKi9cblxuXG5leHBvcnRzLmdldEFsbEtleVZhbHVlTWFwID0gZ2V0QWxsS2V5VmFsdWVNYXA7XG5cbnZhciBvbmVIb3QgPSBmdW5jdGlvbiBvbmVIb3QoZGF0YUxpc3QsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMpIHtcbiAgLy8g6I635Y+W5pWw5o2u5Lit5omA5pyJ55qE5bGe5oCn5Y+K5YW25a+55bqU55qE5YC8XG4gIHZhciBhbGxLZXlWYWx1ZU1hcCA9IGdldEFsbEtleVZhbHVlTWFwKGRhdGFMaXN0LCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKTtcbiAgdmFyIG9uZUhvdENvZGUgPSBbXTsgLy8g5a+55pWw5o2u6L+b6KGMb25lLWhvdOe8lueggVxuXG4gIGRhdGFMaXN0LmZvckVhY2goZnVuY3Rpb24gKGRhdGEsIGluZGV4KSB7XG4gICAgdmFyIGNvZGUgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhhbGxLZXlWYWx1ZU1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIga2V5VmFsdWUgPSBkYXRhW2tleV07XG4gICAgICB2YXIgYWxsS2V5VmFsdWUgPSBhbGxLZXlWYWx1ZU1hcFtrZXldO1xuICAgICAgdmFyIHZhbHVlSW5kZXggPSBhbGxLZXlWYWx1ZS5maW5kSW5kZXgoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBrZXlWYWx1ZSA9PT0gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdWJDb2RlID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsS2V5VmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPT09IHZhbHVlSW5kZXgpIHtcbiAgICAgICAgICBzdWJDb2RlLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3ViQ29kZS5wdXNoKDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvZGUgPSBjb2RlLmNvbmNhdChzdWJDb2RlKTtcbiAgICB9KTtcbiAgICBvbmVIb3RDb2RlW2luZGV4XSA9IGNvZGU7XG4gIH0pO1xuICByZXR1cm4gb25lSG90Q29kZTtcbn07XG4vKipcbiAqIGdldERpc3RhbmNl77ya6I635Y+W5Lik5Liq5YWD57Sg5LmL6Ze055qE6Led56a7XG4gKiBAcGFyYW0gaXRlbVxuICogQHBhcmFtIG90aGVySXRlbVxuICogQHBhcmFtIGRpc3RhbmNlVHlwZSDot53nprvnsbvlnotcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLm9uZUhvdCA9IG9uZUhvdDtcblxudmFyIGdldERpc3RhbmNlID0gZnVuY3Rpb24gZ2V0RGlzdGFuY2UoaXRlbSwgb3RoZXJJdGVtLCBkaXN0YW5jZVR5cGUsIGdyYXBoRGF0YSkge1xuICBpZiAoZGlzdGFuY2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBkaXN0YW5jZVR5cGUgPSBfdHlwZXMuRGlzdGFuY2VUeXBlLkV1Y2xpZGVhbkRpc3RhbmNlO1xuICB9XG5cbiAgdmFyIGRpc3RhbmNlID0gMDtcblxuICBzd2l0Y2ggKGRpc3RhbmNlVHlwZSkge1xuICAgIGNhc2UgX3R5cGVzLkRpc3RhbmNlVHlwZS5FdWNsaWRlYW5EaXN0YW5jZTpcbiAgICAgIGRpc3RhbmNlID0gbmV3IF92ZWN0b3IuZGVmYXVsdChpdGVtKS5ldWNsaWRlYW5EaXN0YW5jZShuZXcgX3ZlY3Rvci5kZWZhdWx0KG90aGVySXRlbSkpO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gZGlzdGFuY2U7XG59O1xuXG5leHBvcnRzLmdldERpc3RhbmNlID0gZ2V0RGlzdGFuY2U7XG52YXIgX2RlZmF1bHQgPSB7XG4gIGdldEFsbEtleVZhbHVlTWFwOiBnZXRBbGxLZXlWYWx1ZU1hcCxcbiAgb25lSG90OiBvbmVIb3QsXG4gIGdldERpc3RhbmNlOiBnZXREaXN0YW5jZVxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/utils/node-properties.js":
/*!*******************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/utils/node-properties.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPropertyWeight = exports.getAllSortProperties = exports.getAllProperties = exports.default = void 0;\n\nvar _time = __webpack_require__(/*! ../constants/time */ \"./node_modules/@antv/algorithm/lib/constants/time.js\");\n\n// 获取所有属性并排序\nvar getAllSortProperties = function getAllSortProperties(nodes, n) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (n === void 0) {\n n = 100;\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量或者embedding\n if (propertyKey === 'id' || !\"\".concat(node.properties[propertyKey]).match(_time.secondReg) && !\"\".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey]))) {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < n ? sortKeys : sortKeys.slice(0, n);\n};\n\nexports.getAllSortProperties = getAllSortProperties;\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_time.secondReg) || properties[key].match(_time.dateReg)) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(nodes) {\n var propertyKeys = getAllSortProperties(nodes);\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 获取所有节点的属性集合\n\n\nexports.getPropertyWeight = getPropertyWeight;\n\nvar getAllProperties = function getAllProperties(nodes, key) {\n if (key === void 0) {\n key = 'properties';\n }\n\n var allProperties = [];\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n allProperties.push(node[key]);\n });\n return allProperties;\n};\n\nexports.getAllProperties = getAllProperties;\nvar _default = {\n getAllSortProperties: getAllSortProperties,\n getPropertyWeight: getPropertyWeight,\n getAllProperties: getAllProperties\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy9ub2RlLXByb3BlcnRpZXMuanM/MjdmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywrRUFBbUI7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvdXRpbHMvbm9kZS1wcm9wZXJ0aWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldFByb3BlcnR5V2VpZ2h0ID0gZXhwb3J0cy5nZXRBbGxTb3J0UHJvcGVydGllcyA9IGV4cG9ydHMuZ2V0QWxsUHJvcGVydGllcyA9IGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF90aW1lID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy90aW1lXCIpO1xuXG4vLyDojrflj5bmiYDmnInlsZ7mgKflubbmjpLluo9cbnZhciBnZXRBbGxTb3J0UHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzLCBuKSB7XG4gIGlmIChub2RlcyA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZXMgPSBbXTtcbiAgfVxuXG4gIGlmIChuID09PSB2b2lkIDApIHtcbiAgICBuID0gMTAwO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5S2V5SW5mbyA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhub2RlLnByb3BlcnRpZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5S2V5KSB7XG4gICAgICAvLyDnm67liY3ov4fmu6Tlj6rkv53nlZnlj6/ku6XovazmiJDmlbDlgLzlnovnmoTmiJbml6XmnJ/lnovnmoQsIHRvZG86IOe7n+S4gOi9rOaIkG9uZS1ob3TnibnlvoHlkJHph4/miJbogIVlbWJlZGRpbmdcbiAgICAgIGlmIChwcm9wZXJ0eUtleSA9PT0gJ2lkJyB8fCAhXCJcIi5jb25jYXQobm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkubWF0Y2goX3RpbWUuc2Vjb25kUmVnKSAmJiAhXCJcIi5jb25jYXQobm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkubWF0Y2goX3RpbWUuZGF0ZVJlZykgJiYgaXNOYU4oTnVtYmVyKG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pKSkge1xuICAgICAgICBpZiAocHJvcGVydHlLZXlJbmZvLmhhc093blByb3BlcnR5KHByb3BlcnR5S2V5KSkge1xuICAgICAgICAgIGRlbGV0ZSBwcm9wZXJ0eUtleUluZm9bcHJvcGVydHlLZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHlLZXlJbmZvLmhhc093blByb3BlcnR5KHByb3BlcnR5S2V5KSkge1xuICAgICAgICBwcm9wZXJ0eUtleUluZm9bcHJvcGVydHlLZXldICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wZXJ0eUtleUluZm9bcHJvcGVydHlLZXldID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7IC8vIOWPlnRvcDUw55qE5bGe5oCnXG5cbiAgdmFyIHNvcnRLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydHlLZXlJbmZvKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5S2V5SW5mb1tiXSAtIHByb3BlcnR5S2V5SW5mb1thXTtcbiAgfSk7XG4gIHJldHVybiBzb3J0S2V5cy5sZW5ndGggPCBuID8gc29ydEtleXMgOiBzb3J0S2V5cy5zbGljZSgwLCBuKTtcbn07XG5cbmV4cG9ydHMuZ2V0QWxsU29ydFByb3BlcnRpZXMgPSBnZXRBbGxTb3J0UHJvcGVydGllcztcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLnNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLmRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxudmFyIGdldFByb3BlcnR5V2VpZ2h0ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHlXZWlnaHQobm9kZXMpIHtcbiAgdmFyIHByb3BlcnR5S2V5cyA9IGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzKTtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgYWxsUHJvcGVydGllc1dlaWdodFtpXSA9IHByb2Nlc3NQcm9wZXJ0eShub2Rlc1tpXS5wcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpO1xuICB9XG5cbiAgcmV0dXJuIGFsbFByb3BlcnRpZXNXZWlnaHQ7XG59OyAvLyDojrflj5bmiYDmnInoioLngrnnmoTlsZ7mgKfpm4blkIhcblxuXG5leHBvcnRzLmdldFByb3BlcnR5V2VpZ2h0ID0gZ2V0UHJvcGVydHlXZWlnaHQ7XG5cbnZhciBnZXRBbGxQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsUHJvcGVydGllcyhub2Rlcywga2V5KSB7XG4gIGlmIChrZXkgPT09IHZvaWQgMCkge1xuICAgIGtleSA9ICdwcm9wZXJ0aWVzJztcbiAgfVxuXG4gIHZhciBhbGxQcm9wZXJ0aWVzID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFsbFByb3BlcnRpZXMucHVzaChub2RlW2tleV0pO1xuICB9KTtcbiAgcmV0dXJuIGFsbFByb3BlcnRpZXM7XG59O1xuXG5leHBvcnRzLmdldEFsbFByb3BlcnRpZXMgPSBnZXRBbGxQcm9wZXJ0aWVzO1xudmFyIF9kZWZhdWx0ID0ge1xuICBnZXRBbGxTb3J0UHJvcGVydGllczogZ2V0QWxsU29ydFByb3BlcnRpZXMsXG4gIGdldFByb3BlcnR5V2VpZ2h0OiBnZXRQcm9wZXJ0eVdlaWdodCxcbiAgZ2V0QWxsUHJvcGVydGllczogZ2V0QWxsUHJvcGVydGllc1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/utils/node-properties.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/utils/vector.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/utils/vector.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n/**\n * 向量运算\n */\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.getArr = function () {\n return this.arr || [];\n };\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] + otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] - otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n if (length !== 0) {\n for (var index in this.arr) {\n res[index] = this.arr[index] / length;\n }\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = -this.arr[index];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return res;\n }\n }; // 欧式距离\n\n\n Vector.prototype.euclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return Math.sqrt(res);\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = (0, _util.clone)(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var index in this.arr) {\n res[index] = (this.arr[index] - min) / (max - min);\n }\n\n return new Vector(res);\n }; // 2范数 or 模长\n\n\n Vector.prototype.norm2 = function () {\n var _a;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return 0;\n }\n\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index], 2);\n }\n\n return Math.sqrt(res);\n }; // 两个向量的点积\n\n\n Vector.prototype.dot = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += this.arr[index] * otherVector.arr[index];\n }\n\n return res;\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 两个向量比较\n\n\n Vector.prototype.equal = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return false;\n }\n\n for (var index in this.arr) {\n if (this.arr[index] !== otherArr[index]) {\n return false;\n }\n }\n\n return true;\n };\n\n return Vector;\n}();\n\nvar _default = Vector;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy92ZWN0b3IuanM/MGM2MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBWTs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvdXRpbHMvdmVjdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG4vKipcbiAqIOWQkemHj+i/kOeul1xuICovXG52YXIgVmVjdG9yID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmVjdG9yKGFycikge1xuICAgIHRoaXMuYXJyID0gYXJyO1xuICB9XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5nZXRBcnIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyIHx8IFtdO1xuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihvdGhlckFycik7XG4gICAgfVxuXG4gICAgaWYgKCEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMuYXJyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzW2luZGV4XSA9IHRoaXMuYXJyW2luZGV4XSArIG90aGVyQXJyW2luZGV4XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgICB9XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3Iob3RoZXJBcnIpO1xuICAgIH1cblxuICAgIGlmICghKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLmFycik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gW107XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1tpbmRleF0gPSB0aGlzLmFycltpbmRleF0gLSBvdGhlckFycltpbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuYXZnID0gZnVuY3Rpb24gKGxlbmd0aCkge1xuICAgIHZhciByZXMgPSBbXTtcblxuICAgIGlmIChsZW5ndGggIT09IDApIHtcbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1tpbmRleF0gPSB0aGlzLmFycltpbmRleF0gLyBsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gW107XG5cbiAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgcmVzW2luZGV4XSA9IC10aGlzLmFycltpbmRleF07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTsgLy8g5bmz5pa55qyn5byP6Led56a7XG5cblxuICBWZWN0b3IucHJvdG90eXBlLnNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8ICEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlcyArPSBNYXRoLnBvdyh0aGlzLmFycltpbmRleF0gLSBvdGhlclZlY3Rvci5hcnJbaW5kZXhdLCAyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07IC8vIOasp+W8j+i3neemu1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5ldWNsaWRlYW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAhKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJbaW5kZXhdIC0gb3RoZXJWZWN0b3IuYXJyW2luZGV4XSwgMik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBNYXRoLnNxcnQocmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlIHR3byB2ZWN0b3JzIGFyZSB1bmVxdWFsIGluIGxlbmd0aC4nKTtcbiAgICB9XG4gIH07IC8vIOW9kuS4gOWMluWkhOeQhlxuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBjbG9uZUFyciA9ICgwLCBfdXRpbC5jbG9uZSkodGhpcy5hcnIpO1xuICAgIGNsb25lQXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICB2YXIgbWF4ID0gY2xvbmVBcnJbY2xvbmVBcnIubGVuZ3RoIC0gMV07XG4gICAgdmFyIG1pbiA9IGNsb25lQXJyWzBdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1tpbmRleF0gPSAodGhpcy5hcnJbaW5kZXhdIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07IC8vIDLojIPmlbAgb3Ig5qih6ZW/XG5cblxuICBWZWN0b3IucHJvdG90eXBlLm5vcm0yID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYTtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IDA7XG5cbiAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgcmVzICs9IE1hdGgucG93KHRoaXMuYXJyW2luZGV4XSwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguc3FydChyZXMpO1xuICB9OyAvLyDkuKTkuKrlkJHph4/nmoTngrnnp69cblxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZG90ID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8ICEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlcyArPSB0aGlzLmFycltpbmRleF0gKiBvdGhlclZlY3Rvci5hcnJbaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUaGUgdHdvIHZlY3RvcnMgYXJlIHVuZXF1YWwgaW4gbGVuZ3RoLicpO1xuICAgIH1cbiAgfTsgLy8g5Lik5Liq5ZCR6YeP5q+U6L6DXG5cblxuICBWZWN0b3IucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgIT09IChvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICBpZiAodGhpcy5hcnJbaW5kZXhdICE9PSBvdGhlckFycltpbmRleF0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBWZWN0b3I7XG59KCk7XG5cbnZhciBfZGVmYXVsdCA9IFZlY3RvcjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/utils/vector.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/workers/algorithm.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/workers/algorithm.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDI\", {\n enumerable: true,\n get: function get() {\n return _gaddi.default;\n }\n});\nObject.defineProperty(exports, \"breadthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _bfs.default;\n }\n});\nObject.defineProperty(exports, \"connectedComponent\", {\n enumerable: true,\n get: function get() {\n return _connectedComponent.default;\n }\n});\nObject.defineProperty(exports, \"depthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _dfs.default;\n }\n});\nObject.defineProperty(exports, \"detectCycle\", {\n enumerable: true,\n get: function get() {\n return _detectCycle.default;\n }\n});\nObject.defineProperty(exports, \"dijkstra\", {\n enumerable: true,\n get: function get() {\n return _dijkstra.default;\n }\n});\nObject.defineProperty(exports, \"findAllPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findAllPath;\n }\n});\nObject.defineProperty(exports, \"findShortestPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findShortestPath;\n }\n});\nObject.defineProperty(exports, \"floydWarshall\", {\n enumerable: true,\n get: function get() {\n return _floydWarshall.default;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrix\", {\n enumerable: true,\n get: function get() {\n return _adjacentMatrix.default;\n }\n});\nObject.defineProperty(exports, \"getDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.default;\n }\n});\nObject.defineProperty(exports, \"getInDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getInDegree;\n }\n});\nObject.defineProperty(exports, \"getNeighbors\", {\n enumerable: true,\n get: function get() {\n return _util.getNeighbors;\n }\n});\nObject.defineProperty(exports, \"getOutDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getOutDegree;\n }\n});\nObject.defineProperty(exports, \"labelPropagation\", {\n enumerable: true,\n get: function get() {\n return _labelPropagation.default;\n }\n});\nObject.defineProperty(exports, \"louvain\", {\n enumerable: true,\n get: function get() {\n return _louvain.default;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTree\", {\n enumerable: true,\n get: function get() {\n return _mts.default;\n }\n});\nObject.defineProperty(exports, \"pageRank\", {\n enumerable: true,\n get: function get() {\n return _pageRank.default;\n }\n});\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ../adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _bfs = _interopRequireDefault(__webpack_require__(/*! ../bfs */ \"./node_modules/@antv/algorithm/lib/bfs.js\"));\n\nvar _connectedComponent = _interopRequireDefault(__webpack_require__(/*! ../connected-component */ \"./node_modules/@antv/algorithm/lib/connected-component.js\"));\n\nvar _degree = _interopRequireWildcard(__webpack_require__(/*! ../degree */ \"./node_modules/@antv/algorithm/lib/degree.js\"));\n\nvar _detectCycle = _interopRequireDefault(__webpack_require__(/*! ../detect-cycle */ \"./node_modules/@antv/algorithm/lib/detect-cycle.js\"));\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ../dfs */ \"./node_modules/@antv/algorithm/lib/dfs.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ../dijkstra */ \"./node_modules/@antv/algorithm/lib/dijkstra.js\"));\n\nvar _findPath = __webpack_require__(/*! ../find-path */ \"./node_modules/@antv/algorithm/lib/find-path.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ../floydWarshall */ \"./node_modules/@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _labelPropagation = _interopRequireDefault(__webpack_require__(/*! ../label-propagation */ \"./node_modules/@antv/algorithm/lib/label-propagation.js\"));\n\nvar _louvain = _interopRequireDefault(__webpack_require__(/*! ../louvain */ \"./node_modules/@antv/algorithm/lib/louvain.js\"));\n\nvar _mts = _interopRequireDefault(__webpack_require__(/*! ../mts */ \"./node_modules/@antv/algorithm/lib/mts.js\"));\n\nvar _pageRank = _interopRequireDefault(__webpack_require__(/*! ../pageRank */ \"./node_modules/@antv/algorithm/lib/pageRank.js\"));\n\nvar _gaddi = _interopRequireDefault(__webpack_require__(/*! ../gaddi */ \"./node_modules/@antv/algorithm/lib/gaddi.js\"));\n\nvar _util = __webpack_require__(/*! ../util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2FsZ29yaXRobS5qcz8yNjRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCw2Q0FBNkMsbUJBQU8sQ0FBQyxpRkFBb0I7O0FBRXpFLGtDQUFrQyxtQkFBTyxDQUFDLHlEQUFROztBQUVsRCxpREFBaUQsbUJBQU8sQ0FBQyx5RkFBd0I7O0FBRWpGLHNDQUFzQyxtQkFBTyxDQUFDLCtEQUFXOztBQUV6RCwwQ0FBMEMsbUJBQU8sQ0FBQywyRUFBaUI7O0FBRW5FLGtDQUFrQyxtQkFBTyxDQUFDLHlEQUFROztBQUVsRCx1Q0FBdUMsbUJBQU8sQ0FBQyxtRUFBYTs7QUFFNUQsZ0JBQWdCLG1CQUFPLENBQUMscUVBQWM7O0FBRXRDLDRDQUE0QyxtQkFBTyxDQUFDLDZFQUFrQjs7QUFFdEUsK0NBQStDLG1CQUFPLENBQUMscUZBQXNCOztBQUU3RSxzQ0FBc0MsbUJBQU8sQ0FBQyxpRUFBWTs7QUFFMUQsa0NBQWtDLG1CQUFPLENBQUMseURBQVE7O0FBRWxELHVDQUF1QyxtQkFBTyxDQUFDLG1FQUFhOztBQUU1RCxvQ0FBb0MsbUJBQU8sQ0FBQyw2REFBVTs7QUFFdEQsWUFBWSxtQkFBTyxDQUFDLDJEQUFTOztBQUU3QixnREFBZ0QsZ0RBQWdELHVDQUF1QyxzQ0FBc0Msb0ZBQW9GLDJEQUEyRCxFQUFFLGVBQWU7O0FBRTdVLG9EQUFvRCw2Q0FBNkMsWUFBWSxFQUFFLDhFQUE4RSxTQUFTLGdCQUFnQixFQUFFLG1EQUFtRCwrQkFBK0IsdUJBQXVCLEVBQUUsaUJBQWlCLHNGQUFzRix1QkFBdUIsMkVBQTJFLHFGQUFxRixzQ0FBc0MsMENBQTBDLEVBQUUsT0FBTyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsc0JBQXNCLGFBQWEsd0JBQXdCLEVBQUUsZUFBZTs7QUFFcHlCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9hbGdvcml0aG0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiR0FERElcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2dhZGRpLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYnJlYWR0aEZpcnN0U2VhcmNoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9iZnMuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjb25uZWN0ZWRDb21wb25lbnRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Nvbm5lY3RlZENvbXBvbmVudC5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlcHRoRmlyc3RTZWFyY2hcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Rmcy5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZXRlY3RDeWNsZS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRpamtzdHJhXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kaWprc3RyYS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kQWxsUGF0aDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmaW5kU2hvcnRlc3RQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kU2hvcnRlc3RQYXRoO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZsb3lkV2Fyc2hhbGxcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRBZGpNYXRyaXhcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2FkamFjZW50TWF0cml4LmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfZGVncmVlLmdldEluRGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfdXRpbC5nZXROZWlnaGJvcnM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0T3V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZ2V0T3V0RGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImxhYmVsUHJvcGFnYXRpb25cIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2xhYmVsUHJvcGFnYXRpb24uZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJsb3V2YWluXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9sb3V2YWluLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfbXRzLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX3BhZ2VSYW5rLmRlZmF1bHQ7XG4gIH1cbn0pO1xuXG52YXIgX2FkamFjZW50TWF0cml4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vYWRqYWNlbnQtbWF0cml4XCIpKTtcblxudmFyIF9iZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9iZnNcIikpO1xuXG52YXIgX2Nvbm5lY3RlZENvbXBvbmVudCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2Nvbm5lY3RlZC1jb21wb25lbnRcIikpO1xuXG52YXIgX2RlZ3JlZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuLi9kZWdyZWVcIikpO1xuXG52YXIgX2RldGVjdEN5Y2xlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGV0ZWN0LWN5Y2xlXCIpKTtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9kZnNcIikpO1xuXG52YXIgX2RpamtzdHJhID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGlqa3N0cmFcIikpO1xuXG52YXIgX2ZpbmRQYXRoID0gcmVxdWlyZShcIi4uL2ZpbmQtcGF0aFwiKTtcblxudmFyIF9mbG95ZFdhcnNoYWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZmxveWRXYXJzaGFsbFwiKSk7XG5cbnZhciBfbGFiZWxQcm9wYWdhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xhYmVsLXByb3BhZ2F0aW9uXCIpKTtcblxudmFyIF9sb3V2YWluID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG91dmFpblwiKSk7XG5cbnZhciBfbXRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbXRzXCIpKTtcblxudmFyIF9wYWdlUmFuayA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL3BhZ2VSYW5rXCIpKTtcblxudmFyIF9nYWRkaSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2dhZGRpXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/algorithm.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/workers/constant.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/workers/constant.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MESSAGE = exports.ALGORITHM = void 0;\nvar ALGORITHM = {\n pageRank: 'pageRank',\n breadthFirstSearch: 'breadthFirstSearch',\n connectedComponent: 'connectedComponent',\n depthFirstSearch: 'depthFirstSearch',\n detectCycle: 'detectCycle',\n detectDirectedCycle: 'detectDirectedCycle',\n detectAllCycles: 'detectAllCycles',\n detectAllDirectedCycle: 'detectAllDirectedCycle',\n detectAllUndirectedCycle: 'detectAllUndirectedCycle',\n dijkstra: 'dijkstra',\n findAllPath: 'findAllPath',\n findShortestPath: 'findShortestPath',\n floydWarshall: 'floydWarshall',\n getAdjMatrix: 'getAdjMatrix',\n getDegree: 'getDegree',\n getInDegree: 'getInDegree',\n getNeighbors: 'getNeighbors',\n getOutDegree: 'getOutDegree',\n labelPropagation: 'labelPropagation',\n louvain: 'louvain',\n GADDI: 'GADDI',\n minimumSpanningTree: 'minimumSpanningTree',\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.ALGORITHM = ALGORITHM;\nvar MESSAGE = {\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.MESSAGE = MESSAGE;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzPzkwMjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLk1FU1NBR0UgPSBleHBvcnRzLkFMR09SSVRITSA9IHZvaWQgMDtcbnZhciBBTEdPUklUSE0gPSB7XG4gIHBhZ2VSYW5rOiAncGFnZVJhbmsnLFxuICBicmVhZHRoRmlyc3RTZWFyY2g6ICdicmVhZHRoRmlyc3RTZWFyY2gnLFxuICBjb25uZWN0ZWRDb21wb25lbnQ6ICdjb25uZWN0ZWRDb21wb25lbnQnLFxuICBkZXB0aEZpcnN0U2VhcmNoOiAnZGVwdGhGaXJzdFNlYXJjaCcsXG4gIGRldGVjdEN5Y2xlOiAnZGV0ZWN0Q3ljbGUnLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0RGlyZWN0ZWRDeWNsZScsXG4gIGRldGVjdEFsbEN5Y2xlczogJ2RldGVjdEFsbEN5Y2xlcycsXG4gIGRldGVjdEFsbERpcmVjdGVkQ3ljbGU6ICdkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlJyxcbiAgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlJyxcbiAgZGlqa3N0cmE6ICdkaWprc3RyYScsXG4gIGZpbmRBbGxQYXRoOiAnZmluZEFsbFBhdGgnLFxuICBmaW5kU2hvcnRlc3RQYXRoOiAnZmluZFNob3J0ZXN0UGF0aCcsXG4gIGZsb3lkV2Fyc2hhbGw6ICdmbG95ZFdhcnNoYWxsJyxcbiAgZ2V0QWRqTWF0cml4OiAnZ2V0QWRqTWF0cml4JyxcbiAgZ2V0RGVncmVlOiAnZ2V0RGVncmVlJyxcbiAgZ2V0SW5EZWdyZWU6ICdnZXRJbkRlZ3JlZScsXG4gIGdldE5laWdoYm9yczogJ2dldE5laWdoYm9ycycsXG4gIGdldE91dERlZ3JlZTogJ2dldE91dERlZ3JlZScsXG4gIGxhYmVsUHJvcGFnYXRpb246ICdsYWJlbFByb3BhZ2F0aW9uJyxcbiAgbG91dmFpbjogJ2xvdXZhaW4nLFxuICBHQURESTogJ0dBRERJJyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZTogJ21pbmltdW1TcGFubmluZ1RyZWUnLFxuICBTVUNDRVNTOiAnU1VDQ0VTUycsXG4gIEZBSUxVUkU6ICdGQUlMVVJFJ1xufTtcbmV4cG9ydHMuQUxHT1JJVEhNID0gQUxHT1JJVEhNO1xudmFyIE1FU1NBR0UgPSB7XG4gIFNVQ0NFU1M6ICdTVUNDRVNTJyxcbiAgRkFJTFVSRTogJ0ZBSUxVUkUnXG59O1xuZXhwb3J0cy5NRVNTQUdFID0gTUVTU0FHRTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/constant.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/workers/createWorker.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/workers/createWorker.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/algorithm/lib/workers/constant.js\");\n\nvar _index = _interopRequireDefault(__webpack_require__(/*! ./index.worker */ \"./node_modules/@antv/algorithm/lib/workers/index.worker.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 创建一个在worker中运行的算法\n * @param type 算法类型\n */\nvar createWorker = function createWorker(type) {\n return function () {\n var data = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n\n return new Promise(function (resolve, reject) {\n var worker = new _index.default();\n worker.postMessage({\n _algorithmType: type,\n data: data\n });\n\n worker.onmessage = function (event) {\n var _a = event.data,\n data = _a.data,\n _algorithmType = _a._algorithmType;\n\n if (_constant.MESSAGE.SUCCESS === _algorithmType) {\n resolve(data);\n } else {\n reject();\n }\n\n worker.terminate();\n };\n });\n };\n};\n\nvar _default = createWorker;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcz9jMGQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQVk7O0FBRXBDLG9DQUFvQyxtQkFBTyxDQUFDLGtGQUFnQjs7QUFFNUQsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2NvbnN0YW50ID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5cbnZhciBfaW5kZXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2luZGV4LndvcmtlclwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5Yib5bu65LiA5Liq5Zyod29ya2Vy5Lit6L+Q6KGM55qE566X5rOVXG4gKiBAcGFyYW0gdHlwZSDnrpfms5XnsbvlnotcbiAqL1xudmFyIGNyZWF0ZVdvcmtlciA9IGZ1bmN0aW9uIGNyZWF0ZVdvcmtlcih0eXBlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBkYXRhW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgX2luZGV4LmRlZmF1bHQoKTtcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIF9hbGdvcml0aG1UeXBlOiB0eXBlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcblxuICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgX2EgPSBldmVudC5kYXRhLFxuICAgICAgICAgICAgZGF0YSA9IF9hLmRhdGEsXG4gICAgICAgICAgICBfYWxnb3JpdGhtVHlwZSA9IF9hLl9hbGdvcml0aG1UeXBlO1xuXG4gICAgICAgIGlmIChfY29uc3RhbnQuTUVTU0FHRS5TVUNDRVNTID09PSBfYWxnb3JpdGhtVHlwZSkge1xuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gY3JlYXRlV29ya2VyO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/createWorker.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/workers/index.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/workers/index.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pageRankAsync = exports.minimumSpanningTreeAsync = exports.louvainAsync = exports.labelPropagationAsync = exports.getOutDegreeAsync = exports.getNeighborsAsync = exports.getInDegreeAsync = exports.getDegreeAsync = exports.getAdjMatrixAsync = exports.floydWarshallAsync = exports.findShortestPathAsync = exports.findAllPathAsync = exports.dijkstraAsync = exports.detectCycleAsync = exports.detectAllUndirectedCycleAsync = exports.detectAllDirectedCycleAsync = exports.detectAllCyclesAsync = exports.connectedComponentAsync = exports.GADDIAsync = void 0;\n\nvar _createWorker = _interopRequireDefault(__webpack_require__(/*! ./createWorker */ \"./node_modules/@antv/algorithm/lib/workers/createWorker.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/algorithm/lib/workers/constant.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\nvar getAdjMatrixAsync = function getAdjMatrixAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getAdjMatrix).apply(void 0, [graphData, directed]);\n};\n/**\n * 图的连通分量\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.getAdjMatrixAsync = getAdjMatrixAsync;\n\nvar connectedComponentAsync = function connectedComponentAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.connectedComponent).apply(void 0, [graphData, directed]);\n};\n/**\n * 获取节点的度\n * @param graphData 图数据\n */\n\n\nexports.connectedComponentAsync = connectedComponentAsync;\n\nvar getDegreeAsync = function getDegreeAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getDegree)(graphData);\n};\n/**\n * 获取节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getDegreeAsync = getDegreeAsync;\n\nvar getInDegreeAsync = function getInDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getInDegree)(graphData, nodeId);\n};\n/**\n * 获取节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegreeAsync = getInDegreeAsync;\n\nvar getOutDegreeAsync = function getOutDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getOutDegree)(graphData, nodeId);\n};\n/**\n * 检测图中的(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.getOutDegreeAsync = getOutDegreeAsync;\n\nvar detectCycleAsync = function detectCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectCycle)(graphData);\n};\n/**\n * 检测图中的(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectCycleAsync = detectCycleAsync;\n\nvar detectAllCyclesAsync = function detectAllCyclesAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllCycles)(graphData);\n};\n/**\n * 检测图中的所有(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllCyclesAsync = detectAllCyclesAsync;\n\nvar detectAllDirectedCycleAsync = function detectAllDirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllDirectedCycle)(graphData);\n};\n/**\n * 检测图中的所有(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllDirectedCycleAsync = detectAllDirectedCycleAsync;\n\nvar detectAllUndirectedCycleAsync = function detectAllUndirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllUndirectedCycle)(graphData);\n};\n/**\n * Dijkstra's algorithm, See {@link https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm}\n * @param graphData 图数据\n */\n\n\nexports.detectAllUndirectedCycleAsync = detectAllUndirectedCycleAsync;\n\nvar dijkstraAsync = function dijkstraAsync(graphData, source, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.dijkstra).apply(void 0, [graphData, source, directed, weightPropertyName]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n */\n\n\nexports.dijkstraAsync = dijkstraAsync;\n\nvar findAllPathAsync = function findAllPathAsync(graphData, start, end, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findAllPath).apply(void 0, [graphData, start, end, directed]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n * @param weightPropertyName 边权重的属名称,若数据中没有权重,则默认每条边权重为 1\n */\n\n\nexports.findAllPathAsync = findAllPathAsync;\n\nvar findShortestPathAsync = function findShortestPathAsync(graphData, start, end, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findShortestPath).apply(void 0, [graphData, start, end, directed, weightPropertyName]);\n};\n/**\n * Floyd–Warshall algorithm, See {@link https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm}\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.findShortestPathAsync = findShortestPathAsync;\n\nvar floydWarshallAsync = function floydWarshallAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.floydWarshall).apply(void 0, [graphData, directed]);\n};\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\n\nexports.floydWarshallAsync = floydWarshallAsync;\n\nvar labelPropagationAsync = function labelPropagationAsync(graphData, directed, weightPropertyName, maxIteration) {\n if (maxIteration === void 0) {\n maxIteration = 1000;\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.labelPropagation)(graphData, directed, weightPropertyName, maxIteration);\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold\n */\n\n\nexports.labelPropagationAsync = labelPropagationAsync;\n\nvar louvainAsync = function louvainAsync(graphData, directed, weightPropertyName, threshold) {\n return (0, _createWorker.default)(_constant.ALGORITHM.louvain)(graphData, directed, weightPropertyName, threshold);\n};\n/**\n * 最小生成树,See {@link https://en.wikipedia.org/wiki/Kruskal%27s_algorithm}\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nexports.louvainAsync = louvainAsync;\n\nvar minimumSpanningTreeAsync = function minimumSpanningTreeAsync(graphData, weight, algo) {\n return (0, _createWorker.default)(_constant.ALGORITHM.minimumSpanningTree).apply(void 0, [graphData, weight, algo]);\n};\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\n\nexports.minimumSpanningTreeAsync = minimumSpanningTreeAsync;\n\nvar pageRankAsync = function pageRankAsync(graphData, epsilon, linkProb) {\n return (0, _createWorker.default)(_constant.ALGORITHM.pageRank).apply(void 0, [graphData, epsilon, linkProb]);\n};\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\n\n\nexports.pageRankAsync = pageRankAsync;\n\nvar getNeighborsAsync = function getNeighborsAsync(nodeId, edges, type) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getNeighbors).apply(void 0, [nodeId, edges, type]);\n};\n/**\n * GADDI 图模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nexports.getNeighborsAsync = getNeighborsAsync;\n\nvar GADDIAsync = function GADDIAsync(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.GADDI).apply(void 0, [graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp]);\n};\n\nexports.GADDIAsync = GADDIAsync;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzP2U5OGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSwyQ0FBMkMsbUJBQU8sQ0FBQyxrRkFBZ0I7O0FBRW5FLGdCQUFnQixtQkFBTyxDQUFDLDBFQUFZOztBQUVwQyxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBleHBvcnRzLm1pbmltdW1TcGFubmluZ1RyZWVBc3luYyA9IGV4cG9ydHMubG91dmFpbkFzeW5jID0gZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBleHBvcnRzLmdldE91dERlZ3JlZUFzeW5jID0gZXhwb3J0cy5nZXROZWlnaGJvcnNBc3luYyA9IGV4cG9ydHMuZ2V0SW5EZWdyZWVBc3luYyA9IGV4cG9ydHMuZ2V0RGVncmVlQXN5bmMgPSBleHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZXhwb3J0cy5mbG95ZFdhcnNoYWxsQXN5bmMgPSBleHBvcnRzLmZpbmRTaG9ydGVzdFBhdGhBc3luYyA9IGV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGV4cG9ydHMuZGV0ZWN0Q3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsQ3ljbGVzQXN5bmMgPSBleHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gZXhwb3J0cy5HQURESUFzeW5jID0gdm9pZCAwO1xuXG52YXIgX2NyZWF0ZVdvcmtlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY3JlYXRlV29ya2VyXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cbnZhciBnZXRBZGpNYXRyaXhBc3luYyA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0QWRqTWF0cml4KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDlm77nmoTov57pgJrliIbph49cbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cblxuXG5leHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZ2V0QWRqTWF0cml4QXN5bmM7XG5cbnZhciBjb25uZWN0ZWRDb21wb25lbnRBc3luYyA9IGZ1bmN0aW9uIGNvbm5lY3RlZENvbXBvbmVudEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uY29ubmVjdGVkQ29tcG9uZW50KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gY29ubmVjdGVkQ29tcG9uZW50QXN5bmM7XG5cbnZhciBnZXREZWdyZWVBc3luYyA9IGZ1bmN0aW9uIGdldERlZ3JlZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXREZWdyZWUpKGdyYXBoRGF0YSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTlhaXluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuUlEXG4gKi9cblxuXG5leHBvcnRzLmdldERlZ3JlZUFzeW5jID0gZ2V0RGVncmVlQXN5bmM7XG5cbnZhciBnZXRJbkRlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0SW5EZWdyZWVBc3luYyhncmFwaERhdGEsIG5vZGVJZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXRJbkRlZ3JlZSkoZ3JhcGhEYXRhLCBub2RlSWQpO1xufTtcbi8qKlxuICog6I635Y+W6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZUFzeW5jID0gZ2V0SW5EZWdyZWVBc3luYztcblxudmFyIGdldE91dERlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlQXN5bmMoZ3JhcGhEYXRhLCBub2RlSWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0T3V0RGVncmVlKShncmFwaERhdGEsIG5vZGVJZCk7XG59O1xuLyoqXG4gKiDmo4DmtYvlm77kuK3nmoQo5pyJ5ZCRKSBDeWNsZVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqL1xuXG5cbmV4cG9ydHMuZ2V0T3V0RGVncmVlQXN5bmMgPSBnZXRPdXREZWdyZWVBc3luYztcblxudmFyIGRldGVjdEN5Y2xlQXN5bmMgPSBmdW5jdGlvbiBkZXRlY3RDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahCjml6DlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDeWNsZUFzeW5jID0gZGV0ZWN0Q3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbEN5Y2xlc0FzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbEN5Y2xlcykoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahOaJgOaciSjmnInlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxDeWNsZXNBc3luYyA9IGRldGVjdEFsbEN5Y2xlc0FzeW5jO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKShncmFwaERhdGEpO1xufTtcbi8qKlxuICog5qOA5rWL5Zu+5Lit55qE5omA5pyJKOaXoOWQkSkgQ3ljbGVcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIERpamtzdHJhJ3MgYWxnb3JpdGhtLCBTZWUge0BsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpamtzdHJhJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuXG52YXIgZGlqa3N0cmFBc3luYyA9IGZ1bmN0aW9uIGRpamtzdHJhQXN5bmMoZ3JhcGhEYXRhLCBzb3VyY2UsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZGlqa3N0cmEpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqL1xuXG5cbmV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGRpamtzdHJhQXN5bmM7XG5cbnZhciBmaW5kQWxsUGF0aEFzeW5jID0gZnVuY3Rpb24gZmluZEFsbFBhdGhBc3luYyhncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRBbGxQYXRoKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg6L655p2D6YeN55qE5bGe5ZCN56ew77yM6Iul5pWw5o2u5Lit5rKh5pyJ5p2D6YeN77yM5YiZ6buY6K6k5q+P5p2h6L655p2D6YeN5Li6IDFcbiAqL1xuXG5cbmV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGZpbmRBbGxQYXRoQXN5bmM7XG5cbnZhciBmaW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoQXN5bmMoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRTaG9ydGVzdFBhdGgpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZV0pO1xufTtcbi8qKlxuICogRmxveWTigJNXYXJzaGFsbCBhbGdvcml0aG0sIFNlZSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxveWQlRTIlODAlOTNXYXJzaGFsbF9hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuS4uuacieWQkeWbvlxuICovXG5cblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmaW5kU2hvcnRlc3RQYXRoQXN5bmM7XG5cbnZhciBmbG95ZFdhcnNoYWxsQXN5bmMgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5mbG95ZFdhcnNoYWxsKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG5cbmV4cG9ydHMuZmxveWRXYXJzaGFsbEFzeW5jID0gZmxveWRXYXJzaGFsbEFzeW5jO1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbkFzeW5jID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbkFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSwgbWF4SXRlcmF0aW9uKSB7XG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH1cblxuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5sYWJlbFByb3BhZ2F0aW9uKShncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbik7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZFxuICovXG5cblxuZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBsYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG5cbnZhciBsb3V2YWluQXN5bmMgPSBmdW5jdGlvbiBsb3V2YWluQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0ubG91dmFpbikoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCR77yMU2VlIHtAbGluayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbmV4cG9ydHMubG91dmFpbkFzeW5jID0gbG91dmFpbkFzeW5jO1xuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jKGdyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLm1pbmltdW1TcGFubmluZ1RyZWUpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvXSk7XG59O1xuLyoqXG4gKiBQYWdlUmFuayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWdlUmFua1xuICogcmVmZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnZha2EvbmdyYXBoLnBhZ2VyYW5rXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBlcHNpbG9uIOWIpOaWreaYr+WQpuaUtuaVm+eahOeyvuW6puWAvO+8jOm7mOiupCAwLjAwMDAwMVxuICogQHBhcmFtIGxpbmtQcm9iIOmYu+WwvOezu+aVsO+8iGR1bXBpbmcgZmFjdG9y77yJ77yM5oyH5Lu75oSP5pe25Yi777yM55So5oi36K6/6Zeu5Yiw5p+Q6IqC54K55ZCO57un57ut6K6/6Zeu6K+l6IqC54K56ZO+5o6l55qE5LiL5LiA5Liq6IqC54K555qE5qaC546H77yM57uP6aqM5YC8IDAuODVcbiAqL1xuXG5cbmV4cG9ydHMubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jO1xuXG52YXIgcGFnZVJhbmtBc3luYyA9IGZ1bmN0aW9uIHBhZ2VSYW5rQXN5bmMoZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYikge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5wYWdlUmFuaykuYXBwbHkodm9pZCAwLCBbZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYl0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cblxuXG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBwYWdlUmFua0FzeW5jO1xuXG52YXIgZ2V0TmVpZ2hib3JzQXN5bmMgPSBmdW5jdGlvbiBnZXROZWlnaGJvcnNBc3luYyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmdldE5laWdoYm9ycykuYXBwbHkodm9pZCAwLCBbbm9kZUlkLCBlZGdlcywgdHlwZV0pO1xufTtcbi8qKlxuICogR0FEREkg5Zu+5qih5byP5Yy56YWNXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIHBhdHRlcm4g5pCc57Si5Zu+77yI6ZyA6KaB5Zyo5Y6f5Zu+5LiK5pCc57Si55qE5qih5byP77yJ5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm6K6h566X5pyJ5ZCR5Zu+77yM6buY6K6kIGZhbHNlXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIGxlbmd0aCDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnmlbDmja7kuK3ku6PooajoioLngrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICogQHBhcmFtIGVkZ2VMYWJlbFByb3Ag6L655pWw5o2u5Lit5Luj6KGo6L655qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0TmVpZ2hib3JzQXN5bmMgPSBnZXROZWlnaGJvcnNBc3luYztcblxudmFyIEdBRERJQXN5bmMgPSBmdW5jdGlvbiBHQURESUFzeW5jKGdyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uR0FEREkpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcF0pO1xufTtcblxuZXhwb3J0cy5HQURESUFzeW5jID0gR0FERElBc3luYzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/algorithm/lib/workers/index.worker.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/algorithm/lib/workers/index.worker.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar algorithm = _interopRequireWildcard(__webpack_require__(/*! ./algorithm */ \"./node_modules/@antv/algorithm/lib/workers/algorithm.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/algorithm/lib/workers/constant.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ctx = typeof self !== 'undefined' ? self : {};\n\nctx.onmessage = function (event) {\n var _a = event.data,\n _algorithmType = _a._algorithmType,\n data = _a.data; // 如果发送内容没有私有类型。说明不是自己发的。不管\n // fix: https://github.com/antvis/algorithm/issues/25\n\n if (!_algorithmType) {\n return;\n }\n\n if (typeof algorithm[_algorithmType] === 'function') {\n var result = algorithm[_algorithmType].apply(algorithm, data);\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.SUCCESS,\n data: result\n });\n return;\n }\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.FAILURE\n });\n}; // https://stackoverflow.com/questions/50210416/webpack-worker-loader-fails-to-compile-typescript-worker\n\n\nvar _default = null;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4Lndvcmtlci5qcz85ZmJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLDRFQUFhOztBQUU3RCxnQkFBZ0IsbUJBQU8sQ0FBQywwRUFBWTs7QUFFcEMsZ0RBQWdELGdEQUFnRCx1Q0FBdUMsc0NBQXNDLG9GQUFvRiwyREFBMkQsRUFBRSxlQUFlOztBQUU3VSxvREFBb0QsNkNBQTZDLFlBQVksRUFBRSw4RUFBOEUsU0FBUyxnQkFBZ0IsRUFBRSxtREFBbUQsK0JBQStCLHVCQUF1QixFQUFFLGlCQUFpQixzRkFBc0YsdUJBQXVCLDJFQUEyRSxxRkFBcUYsc0NBQXNDLDBDQUEwQyxFQUFFLE9BQU8sd0JBQXdCLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixhQUFhLHdCQUF3QixFQUFFLGVBQWU7O0FBRXB5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9pbmRleC53b3JrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgYWxnb3JpdGhtID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vYWxnb3JpdGhtXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgZGVmYXVsdDogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBjdHggPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307XG5cbmN0eC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgdmFyIF9hID0gZXZlbnQuZGF0YSxcbiAgICAgIF9hbGdvcml0aG1UeXBlID0gX2EuX2FsZ29yaXRobVR5cGUsXG4gICAgICBkYXRhID0gX2EuZGF0YTsgLy8g5aaC5p6c5Y+R6YCB5YaF5a655rKh5pyJ56eB5pyJ57G75Z6L44CC6K+05piO5LiN5piv6Ieq5bex5Y+R55qE44CC5LiN566hXG4gIC8vIGZpeDogaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9hbGdvcml0aG0vaXNzdWVzLzI1XG5cbiAgaWYgKCFfYWxnb3JpdGhtVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYWxnb3JpdGhtW19hbGdvcml0aG1UeXBlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBhbGdvcml0aG1bX2FsZ29yaXRobVR5cGVdLmFwcGx5KGFsZ29yaXRobSwgZGF0YSk7XG5cbiAgICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgICAgX2FsZ29yaXRobVR5cGU6IF9jb25zdGFudC5NRVNTQUdFLlNVQ0NFU1MsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgIF9hbGdvcml0aG1UeXBlOiBfY29uc3RhbnQuTUVTU0FHRS5GQUlMVVJFXG4gIH0pO1xufTsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTAyMTA0MTYvd2VicGFjay13b3JrZXItbG9hZGVyLWZhaWxzLXRvLWNvbXBpbGUtdHlwZXNjcmlwdC13b3JrZXJcblxuXG52YXIgX2RlZmF1bHQgPSBudWxsO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/index.worker.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/add-event-listener.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/add-event-listener.js ***!
\***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addEventListener; });\nfunction addEventListener(target, eventType, callback) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function () {\n target.removeEventListener(eventType, callback, false);\n },\n };\n // @ts-ignore\n }\n if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function () {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n },\n };\n }\n }\n}\n//# sourceMappingURL=add-event-listener.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2FkZC1ldmVudC1saXN0ZW5lci5qcz9mNTg3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2RvbS11dGlsL2VzbS9hZGQtZXZlbnQtbGlzdGVuZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0LmF0dGFjaEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWRkLWV2ZW50LWxpc3RlbmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/add-event-listener.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/create-dom.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/create-dom.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return createDom; });\n/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\nvar TABLE;\nvar TABLE_TR;\nvar FRAGMENT_REG;\nvar CONTAINERS;\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div'),\n };\n}\nfunction createDom(str) {\n if (!TABLE) {\n initConstants();\n }\n var name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n var container = CONTAINERS[name];\n str = typeof str === 'string' ? str.replace(/(^\\s*)|(\\s*$)/g, '') : str;\n container.innerHTML = '' + str;\n var dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}\n//# sourceMappingURL=create-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2NyZWF0ZS1kb20uanM/M2E2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2NyZWF0ZS1kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWIm+W7ukRPTSDoioLngrlcbiAqIEBwYXJhbSAge1N0cmluZ30gc3RyIERvbSDlrZfnrKbkuLJcbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgRE9NIOiKgueCuVxuICovXG52YXIgVEFCTEU7XG52YXIgVEFCTEVfVFI7XG52YXIgRlJBR01FTlRfUkVHO1xudmFyIENPTlRBSU5FUlM7XG5mdW5jdGlvbiBpbml0Q29uc3RhbnRzKCkge1xuICAgIFRBQkxFID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICBUQUJMRV9UUiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgRlJBR01FTlRfUkVHID0gL15cXHMqPChcXHcrfCEpW14+XSo+LztcbiAgICBDT05UQUlORVJTID0ge1xuICAgICAgICB0cjogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKSxcbiAgICAgICAgdGJvZHk6IFRBQkxFLFxuICAgICAgICB0aGVhZDogVEFCTEUsXG4gICAgICAgIHRmb290OiBUQUJMRSxcbiAgICAgICAgdGQ6IFRBQkxFX1RSLFxuICAgICAgICB0aDogVEFCTEVfVFIsXG4gICAgICAgICcqJzogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZURvbShzdHIpIHtcbiAgICBpZiAoIVRBQkxFKSB7XG4gICAgICAgIGluaXRDb25zdGFudHMoKTtcbiAgICB9XG4gICAgdmFyIG5hbWUgPSBGUkFHTUVOVF9SRUcudGVzdChzdHIpICYmIFJlZ0V4cC4kMTtcbiAgICBpZiAoIW5hbWUgfHwgIShuYW1lIGluIENPTlRBSU5FUlMpKSB7XG4gICAgICAgIG5hbWUgPSAnKic7XG4gICAgfVxuICAgIHZhciBjb250YWluZXIgPSBDT05UQUlORVJTW25hbWVdO1xuICAgIHN0ciA9IHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyLnJlcGxhY2UoLyheXFxzKil8KFxccyokKS9nLCAnJykgOiBzdHI7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnICsgc3RyO1xuICAgIHZhciBkb20gPSBjb250YWluZXIuY2hpbGROb2Rlc1swXTtcbiAgICBpZiAoZG9tICYmIGNvbnRhaW5lci5jb250YWlucyhkb20pKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChkb20pO1xuICAgIH1cbiAgICByZXR1cm4gZG9tO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlLWRvbS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/create-dom.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/get-height.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/get-height.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var height = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}\n//# sourceMappingURL=get-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1oZWlnaHQuanM/YjJlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDcEI7QUFDZixpQkFBaUIsMERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2RvbS11dGlsL2VzbS9nZXQtaGVpZ2h0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFN0eWxlIGZyb20gJy4vZ2V0LXN0eWxlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhlaWdodChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIGhlaWdodCA9IGdldFN0eWxlKGVsLCAnaGVpZ2h0JywgZGVmYXVsdFZhbHVlKTtcbiAgICBpZiAoaGVpZ2h0ID09PSAnYXV0bycpIHtcbiAgICAgICAgaGVpZ2h0ID0gZWwub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdChoZWlnaHQpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LWhlaWdodC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-height.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/get-outer-height.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/get-outer-height.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getOuterHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-height */ \"./node_modules/@antv/dom-util/esm/get-height.js\");\n\n\nfunction getOuterHeight(el, defaultValue) {\n var height = Object(_get_height__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderTopWidth')) || 0;\n var pTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingTop')) || 0;\n var pBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingBottom')) || 0;\n var bBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderBottomWidth')) || 0;\n var mTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginTop')) || 0;\n var mBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}\n//# sourceMappingURL=get-outer-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1vdXRlci1oZWlnaHQuanM/NGIwMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNFO0FBQ3RCO0FBQ2YsaUJBQWlCLDJEQUFTO0FBQzFCLDBCQUEwQiwwREFBUTtBQUNsQywwQkFBMEIsMERBQVE7QUFDbEMsNkJBQTZCLDBEQUFRO0FBQ3JDLDZCQUE2QiwwREFBUTtBQUNyQywwQkFBMEIsMERBQVE7QUFDbEMsNkJBQTZCLDBEQUFRO0FBQ3JDO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vZ2V0LW91dGVyLWhlaWdodC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRTdHlsZSBmcm9tICcuL2dldC1zdHlsZSc7XG5pbXBvcnQgZ2V0SGVpZ2h0IGZyb20gJy4vZ2V0LWhlaWdodCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPdXRlckhlaWdodChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIGhlaWdodCA9IGdldEhlaWdodChlbCwgZGVmYXVsdFZhbHVlKTtcbiAgICB2YXIgYlRvcCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJUb3BXaWR0aCcpKSB8fCAwO1xuICAgIHZhciBwVG9wID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ3BhZGRpbmdUb3AnKSkgfHwgMDtcbiAgICB2YXIgcEJvdHRvbSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdwYWRkaW5nQm90dG9tJykpIHx8IDA7XG4gICAgdmFyIGJCb3R0b20gPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnYm9yZGVyQm90dG9tV2lkdGgnKSkgfHwgMDtcbiAgICB2YXIgbVRvcCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5Ub3AnKSkgfHwgMDtcbiAgICB2YXIgbUJvdHRvbSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5Cb3R0b20nKSkgfHwgMDtcbiAgICByZXR1cm4gaGVpZ2h0ICsgYlRvcCArIGJCb3R0b20gKyBwVG9wICsgcEJvdHRvbSArIG1Ub3AgKyBtQm90dG9tO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LW91dGVyLWhlaWdodC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-outer-height.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/get-outer-width.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/get-outer-width.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getOuterWidth; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-width */ \"./node_modules/@antv/dom-util/esm/get-width.js\");\n\n\nfunction getOuterWidth(el, defaultValue) {\n var width = Object(_get_width__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderLeftWidth')) || 0;\n var pLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingLeft')) || 0;\n var pRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingRight')) || 0;\n var bRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderRightWidth')) || 0;\n var mRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginRight')) || 0;\n var mLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}\n//# sourceMappingURL=get-outer-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1vdXRlci13aWR0aC5qcz8zZDE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ0E7QUFDcEI7QUFDZixnQkFBZ0IsMERBQVE7QUFDeEIsMkJBQTJCLDBEQUFRO0FBQ25DLDJCQUEyQiwwREFBUTtBQUNuQyw0QkFBNEIsMERBQVE7QUFDcEMsNEJBQTRCLDBEQUFRO0FBQ3BDLDRCQUE0QiwwREFBUTtBQUNwQywyQkFBMkIsMERBQVE7QUFDbkM7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItd2lkdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0U3R5bGUgZnJvbSAnLi9nZXQtc3R5bGUnO1xuaW1wb3J0IGdldFdpZHRoIGZyb20gJy4vZ2V0LXdpZHRoJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE91dGVyV2lkdGgoZWwsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB3aWR0aCA9IGdldFdpZHRoKGVsLCBkZWZhdWx0VmFsdWUpO1xuICAgIHZhciBiTGVmdCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJMZWZ0V2lkdGgnKSkgfHwgMDtcbiAgICB2YXIgcExlZnQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAncGFkZGluZ0xlZnQnKSkgfHwgMDtcbiAgICB2YXIgcFJpZ2h0ID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ3BhZGRpbmdSaWdodCcpKSB8fCAwO1xuICAgIHZhciBiUmlnaHQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnYm9yZGVyUmlnaHRXaWR0aCcpKSB8fCAwO1xuICAgIHZhciBtUmlnaHQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnbWFyZ2luUmlnaHQnKSkgfHwgMDtcbiAgICB2YXIgbUxlZnQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnbWFyZ2luTGVmdCcpKSB8fCAwO1xuICAgIHJldHVybiB3aWR0aCArIGJMZWZ0ICsgYlJpZ2h0ICsgcExlZnQgKyBwUmlnaHQgKyBtTGVmdCArIG1SaWdodDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1vdXRlci13aWR0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-outer-width.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/get-ratio.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/get-ratio.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getRatio; });\nfunction getRatio() {\n return window.devicePixelRatio ? window.devicePixelRatio : 2;\n}\n//# sourceMappingURL=get-ratio.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1yYXRpby5qcz9mYmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vZ2V0LXJhdGlvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UmF0aW8oKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiAyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXJhdGlvLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-ratio.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/get-style.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/get-style.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getStyle; });\n/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nfunction getStyle(dom, name, defaultValue) {\n var v;\n try {\n v = window.getComputedStyle ?\n window.getComputedStyle(dom, null)[name] :\n dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n }\n catch (e) {\n // do nothing\n }\n finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}\n//# sourceMappingURL=get-style.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1zdHlsZS5qcz80MDJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLElBQUk7QUFDaEIsWUFBWSxPQUFPO0FBQ25CO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vZ2V0LXN0eWxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDojrflj5bmoLflvI9cbiAqIEBwYXJhbSAge09iamVjdH0gZG9tIERPTeiKgueCuVxuICogQHBhcmFtICB7U3RyaW5nfSBuYW1lIOagt+W8j+WQjVxuICogQHBhcmFtICB7QW55fSBkZWZhdWx0VmFsdWUg6buY6K6k5YC8XG4gKiBAcmV0dXJuIHtTdHJpbmd9IOWxnuaAp+WAvFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTdHlsZShkb20sIG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB2O1xuICAgIHRyeSB7XG4gICAgICAgIHYgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/XG4gICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb20sIG51bGwpW25hbWVdIDpcbiAgICAgICAgICAgIGRvbS5zdHlsZVtuYW1lXTsgLy8g5LiA6Iis5LiN5Lya6LWw5Yiw6L+Z5Liq6YC76L6R77yMZG9tLnN0eWxlIOiOt+WPlueahOaYr+agh+etviBzdHlsZSDlsZ7mgKfvvIzkuZ/kuI3lh4bnoa5cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdiA9IHYgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHY7XG4gICAgfVxuICAgIHJldHVybiB2O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXN0eWxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-style.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/get-width.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/get-width.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var width = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}\n//# sourceMappingURL=get-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC13aWR0aC5qcz84MGMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNwQjtBQUNmLGdCQUFnQiwwREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC13aWR0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRTdHlsZSBmcm9tICcuL2dldC1zdHlsZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIZWlnaHQoZWwsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB3aWR0aCA9IGdldFN0eWxlKGVsLCAnd2lkdGgnLCBkZWZhdWx0VmFsdWUpO1xuICAgIGlmICh3aWR0aCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHdpZHRoID0gZWwub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUZsb2F0KHdpZHRoKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC13aWR0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-width.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/index.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/index.js ***!
\**************************************************/
/*! exports provided: addEventListener, createDom, getHeight, getOuterHeight, getOuterWidth, getRatio, getStyle, getWidth, modifyCSS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_event_listener__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-event-listener */ \"./node_modules/@antv/dom-util/esm/add-event-listener.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEventListener\", function() { return _add_event_listener__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _create_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-dom */ \"./node_modules/@antv/dom-util/esm/create-dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return _create_dom__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-height */ \"./node_modules/@antv/dom-util/esm/get-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getHeight\", function() { return _get_height__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _get_outer_height__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./get-outer-height */ \"./node_modules/@antv/dom-util/esm/get-outer-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterHeight\", function() { return _get_outer_height__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _get_outer_width__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-outer-width */ \"./node_modules/@antv/dom-util/esm/get-outer-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterWidth\", function() { return _get_outer_width__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _get_ratio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./get-ratio */ \"./node_modules/@antv/dom-util/esm/get-ratio.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getRatio\", function() { return _get_ratio__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStyle\", function() { return _get_style__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./get-width */ \"./node_modules/@antv/dom-util/esm/get-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getWidth\", function() { return _get_width__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _modify_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modify-css */ \"./node_modules/@antv/dom-util/esm/modify-css.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"modifyCSS\", function() { return _modify_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n// dom\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2luZGV4LmpzPzdjOGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNtRTtBQUNmO0FBQ0E7QUFDVztBQUNGO0FBQ1g7QUFDQTtBQUNBO0FBQ0U7QUFDcEQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZG9tXG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZEV2ZW50TGlzdGVuZXIgfSBmcm9tICcuL2FkZC1ldmVudC1saXN0ZW5lcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZURvbSB9IGZyb20gJy4vY3JlYXRlLWRvbSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEhlaWdodCB9IGZyb20gJy4vZ2V0LWhlaWdodCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldE91dGVySGVpZ2h0IH0gZnJvbSAnLi9nZXQtb3V0ZXItaGVpZ2h0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0T3V0ZXJXaWR0aCB9IGZyb20gJy4vZ2V0LW91dGVyLXdpZHRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0UmF0aW8gfSBmcm9tICcuL2dldC1yYXRpbyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFN0eWxlIH0gZnJvbSAnLi9nZXQtc3R5bGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXaWR0aCB9IGZyb20gJy4vZ2V0LXdpZHRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW9kaWZ5Q1NTIH0gZnJvbSAnLi9tb2RpZnktY3NzJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/dom-util/esm/modify-css.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/dom-util/esm/modify-css.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return modifyCSS; });\nfunction modifyCSS(dom, css) {\n if (dom) {\n for (var key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}\n//# sourceMappingURL=modify-css.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL21vZGlmeS1jc3MuanM/ODExOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vbW9kaWZ5LWNzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vZGlmeUNTUyhkb20sIGNzcykge1xuICAgIGlmIChkb20pIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGNzcykge1xuICAgICAgICAgICAgaWYgKGNzcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgZG9tLnN0eWxlW2tleV0gPSBjc3Nba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZG9tO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kaWZ5LWNzcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/modify-css.js\n");
/***/ }),
/***/ "./node_modules/@antv/event-emitter/esm/index.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/event-emitter/esm/index.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once,\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n this.on(evt, callback, true);\n return this;\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function (es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i], callback = _a.callback, once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n }\n else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n }\n else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventEmitter);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanM/N2ZhMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixZQUFZO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgV0lMRENBUkQgPSAnKic7XG4vKiBldmVudC1lbWl0dGVyICovXG52YXIgRXZlbnRFbWl0dGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOebkeWQrOS4gOS4quS6i+S7tlxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0gb25jZVxuICAgICAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZ0LCBjYWxsYmFjaywgb25jZSkge1xuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1tldnRdKSB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudHNbZXZ0XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldnRdLnB1c2goe1xuICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgb25jZTogISFvbmNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnm5HlkKzkuIDkuKrkuovku7bkuIDmrKFcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gKGV2dCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5vbihldnQsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDop6blj5HkuIDkuKrkuovku7ZcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGFyZ3NcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgdmFyIHdpbGRjYXJkRXZlbnRzID0gdGhpcy5fZXZlbnRzW1dJTERDQVJEXSB8fCBbXTtcbiAgICAgICAgLy8g5a6e6ZmF55qE5aSE55CGIGVtaXQg5pa55rOVXG4gICAgICAgIHZhciBkb0VtaXQgPSBmdW5jdGlvbiAoZXMpIHtcbiAgICAgICAgICAgIHZhciBsZW5ndGggPSBlcy5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gZXNbaV0sIGNhbGxiYWNrID0gX2EuY2FsbGJhY2ssIG9uY2UgPSBfYS5vbmNlO1xuICAgICAgICAgICAgICAgIGlmIChvbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzLl9ldmVudHNbZXZ0XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShfdGhpcywgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGRvRW1pdChldmVudHMpO1xuICAgICAgICBkb0VtaXQod2lsZGNhcmRFdmVudHMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Y+W5raI55uR5ZCs5LiA5Liq5LqL5Lu277yM5oiW6ICF5LiA5LiqY2hhbm5lbFxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uIChldnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghZXZ0KSB7XG4gICAgICAgICAgICAvLyBldnQg5Li656m65YWo6YOo5riF6ZmkXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyBldnQg5a2Y5Zyo77yMY2FsbGJhY2sg5Li656m677yM5riF6Zmk5LqL5Lu25omA5pyJ5pa55rOVXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZXZ0IOWtmOWcqO+8jGNhbGxiYWNrIOWtmOWcqO+8jOa4hemZpOWMuemFjeeahFxuICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoXzEgPSBldmVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoXzE7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzW2ldLmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF8xLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qIOW9k+WJjeaJgOacieeahOS6i+S7tiAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlcjtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBFdmVudEVtaXR0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/event-emitter/esm/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/abstract/base.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/abstract/base.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n\n\n\nvar Base = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Base);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9iYXNlLmpzPzJlNjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRztBQUNGO0FBQ25DO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzREFBRztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFFO0FBQ1csbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBFRSBmcm9tICdAYW50di9ldmVudC1lbWl0dGVyJztcbmltcG9ydCB7IG1peCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG52YXIgQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQmFzZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCYXNlKGNmZykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICAvKipcbiAgICAgICAgICog5piv5ZCm6KKr6ZSA5q+BXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgX3RoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIHZhciBkZWZhdWx0Q2ZnID0gX3RoaXMuZ2V0RGVmYXVsdENmZygpO1xuICAgICAgICBfdGhpcy5jZmcgPSBtaXgoZGVmYXVsdENmZywgY2ZnKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog6buY6K6k55qE6YWN572u6aG5XG4gICAgICogQHJldHVybnMge29iamVjdH0g6buY6K6k55qE6YWN572u6aG5XG4gICAgICovXG4gICAgQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+j55qE5pa55rOVXG4gICAgQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnW25hbWVdO1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+j55qE5pa55rOVXG4gICAgQmFzZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2ZnW25hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6PnmoTmlrnms5VcbiAgICBCYXNlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNmZyA9IHtcbiAgICAgICAgICAgIGRlc3Ryb3llZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vZmYoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIEJhc2U7XG59KEVFKSk7XG5leHBvcnQgZGVmYXVsdCBCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/base.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/abstract/canvas.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/abstract/canvas.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! detect-browser */ \"./node_modules/detect-browser/es/index.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ \"./node_modules/@antv/g-base/esm/abstract/container.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _animate_timeline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../animate/timeline */ \"./node_modules/@antv/g-base/esm/animate/timeline.js\");\n/* harmony import */ var _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../event/event-contoller */ \"./node_modules/@antv/g-base/esm/event/event-contoller.js\");\n\n\n\n\n\n\nvar PX_SUFFIX = 'px';\nvar browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_1__[\"detect\"])();\nvar isFirefox = browser && browser.name === 'firefox';\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initContainer();\n _this.initDom();\n _this.initEvents();\n _this.initTimeline();\n return _this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n };\n /**\n * @protected\n * 初始化容器\n */\n Canvas.prototype.initContainer = function () {\n var container = this.get('container');\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n };\n /**\n * @protected\n * 初始化 DOM\n */\n Canvas.prototype.initDom = function () {\n var el = this.createDom();\n this.set('el', el);\n // 附加到容器\n var container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n };\n /**\n * @protected\n * 初始化绑定的事件\n */\n Canvas.prototype.initEvents = function () {\n var eventController = new _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n canvas: this,\n });\n eventController.init();\n this.set('eventController', eventController);\n };\n /**\n * @protected\n * 初始化时间轴\n */\n Canvas.prototype.initTimeline = function () {\n var timeline = new _animate_timeline__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this);\n this.set('timeline', timeline);\n };\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n Canvas.prototype.setDOMSize = function (width, height) {\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"]) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n };\n // 实现接口\n Canvas.prototype.changeSize = function (width, height) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n };\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n Canvas.prototype.getRenderer = function () {\n return this.get('renderer');\n };\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n Canvas.prototype.getCursor = function () {\n return this.get('cursor');\n };\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n Canvas.prototype.setCursor = function (cursor) {\n this.set('cursor', cursor);\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"] && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n };\n // 实现接口\n Canvas.prototype.getPointByEvent = function (ev) {\n var supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.layerX) && ev.layerX !== ev.offsetX) {\n return {\n x: ev.layerX,\n y: ev.layerY,\n };\n }\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n var _a = this.getClientByEvent(ev), clientX = _a.x, clientY = _a.y;\n return this.getPointByClient(clientX, clientY);\n };\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n Canvas.prototype.getClientByEvent = function (ev) {\n var clientInfo = ev;\n if (ev.touches) {\n if (ev.type === 'touchend') {\n clientInfo = ev.changedTouches[0];\n }\n else {\n clientInfo = ev.touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY,\n };\n };\n // 实现接口\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.getClientByPoint = function (x, y) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.draw = function () { };\n /**\n * @protected\n * 销毁 DOM 容器\n */\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n el.parentNode.removeChild(el);\n };\n /**\n * @protected\n * 清理所有的事件\n */\n Canvas.prototype.clearEvents = function () {\n var eventController = this.get('eventController');\n eventController.destroy();\n };\n Canvas.prototype.isCanvas = function () {\n return true;\n };\n Canvas.prototype.getParent = function () {\n return null;\n };\n Canvas.prototype.destroy = function () {\n var timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n return Canvas;\n}(_container__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9jYW52YXMuanM/MTI0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNNO0FBQ0o7QUFDc0I7QUFDZjtBQUNZO0FBQ3ZEO0FBQ0EsY0FBYyw2REFBTTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyw4REFBZTtBQUNqRDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHlEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsd0RBQUs7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsa0RBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3QvY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBkZXRlY3QgfSBmcm9tICdkZXRlY3QtYnJvd3Nlcic7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJztcbmltcG9ydCB7IGlzQnJvd3NlciwgaXNOaWwsIGlzU3RyaW5nIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCBUaW1lbGluZSBmcm9tICcuLi9hbmltYXRlL3RpbWVsaW5lJztcbmltcG9ydCBFdmVudENvbnRyb2xsZXIgZnJvbSAnLi4vZXZlbnQvZXZlbnQtY29udG9sbGVyJztcbnZhciBQWF9TVUZGSVggPSAncHgnO1xudmFyIGJyb3dzZXIgPSBkZXRlY3QoKTtcbnZhciBpc0ZpcmVmb3ggPSBicm93c2VyICYmIGJyb3dzZXIubmFtZSA9PT0gJ2ZpcmVmb3gnO1xudmFyIENhbnZhcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FudmFzLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhbnZhcyhjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pbml0Q29udGFpbmVyKCk7XG4gICAgICAgIF90aGlzLmluaXREb20oKTtcbiAgICAgICAgX3RoaXMuaW5pdEV2ZW50cygpO1xuICAgICAgICBfdGhpcy5pbml0VGltZWxpbmUoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDYW52YXMucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8gc2V0IGRlZmF1bHQgY3Vyc29yIHN0eWxlIGZvciBjYW52YXNcbiAgICAgICAgY2ZnWydjdXJzb3InXSA9ICdkZWZhdWx0JztcbiAgICAgICAgLy8gQ1NTIHRyYW5zZm9ybSDnm67liY3lsJrmnKrnu4/ov4fplb/ml7bpl7Tpqozor4HvvIzkuLrkuobpgb/lhY3lvbHlk43kuIrlsYLkuJrliqHvvIzpu5jorqTlhbPpl63vvIzkuIrlsYLmjInpnIDlvIDlkK9cbiAgICAgICAgY2ZnWydzdXBwb3J0Q1NTVHJhbnNmb3JtJ10gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNmZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJblrrnlmahcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmluaXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gICAgICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2NvbnRhaW5lcicsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJYgRE9NXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5pbml0RG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmNyZWF0ZURvbSgpO1xuICAgICAgICB0aGlzLnNldCgnZWwnLCBlbCk7XG4gICAgICAgIC8vIOmZhOWKoOWIsOWuueWZqFxuICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgICAvLyDorr7nva7liJ3lp4vlrr3luqZcbiAgICAgICAgdGhpcy5zZXRET01TaXplKHRoaXMuZ2V0KCd3aWR0aCcpLCB0aGlzLmdldCgnaGVpZ2h0JykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWIneWni+WMlue7keWumueahOS6i+S7tlxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuaW5pdEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGV2ZW50Q29udHJvbGxlciA9IG5ldyBFdmVudENvbnRyb2xsZXIoe1xuICAgICAgICAgICAgY2FudmFzOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgICAgZXZlbnRDb250cm9sbGVyLmluaXQoKTtcbiAgICAgICAgdGhpcy5zZXQoJ2V2ZW50Q29udHJvbGxlcicsIGV2ZW50Q29udHJvbGxlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyW5pe26Ze06L20XG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5pbml0VGltZWxpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IG5ldyBUaW1lbGluZSh0aGlzKTtcbiAgICAgICAgdGhpcy5zZXQoJ3RpbWVsaW5lJywgdGltZWxpbmUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOS/ruaUueeUu+W4g+WvueW6lOeahCBET00g55qE5aSn5bCPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoICDlrr3luqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IOmrmOW6plxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuc2V0RE9NU2l6ZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBlbC5zdHlsZS53aWR0aCA9IHdpZHRoICsgUFhfU1VGRklYO1xuICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgUFhfU1VGRklYO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgICAgICB0aGlzLnNldERPTVNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHRoaXMuc2V0KCd3aWR0aCcsIHdpZHRoKTtcbiAgICAgICAgdGhpcy5zZXQoJ2hlaWdodCcsIGhlaWdodCk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ2NoYW5nZVNpemUnKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluW9k+WJjeeahOa4suafk+W8leaTjlxuICAgICAqIEByZXR1cm4ge1JlbmRlcmVyfSDov5Tlm57lvZPliY3nmoTmuLLmn5PlvJXmk45cbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFJlbmRlcmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3JlbmRlcmVyJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bnlLvluIPnmoQgY3Vyc29yIOagt+W8j1xuICAgICAqIEByZXR1cm4ge0N1cnNvcn1cbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmdldEN1cnNvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjdXJzb3InKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiuvue9rueUu+W4g+eahCBjdXJzb3Ig5qC35byPXG4gICAgICogQHBhcmFtIHtDdXJzb3J9IGN1cnNvciAgY3Vyc29yIOagt+W8j1xuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuc2V0Q3Vyc29yID0gZnVuY3Rpb24gKGN1cnNvcikge1xuICAgICAgICB0aGlzLnNldCgnY3Vyc29yJywgY3Vyc29yKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChpc0Jyb3dzZXIgJiYgZWwpIHtcbiAgICAgICAgICAgIC8vIOebtOaOpeiuvue9ruagt+W8j++8jOS4jeetieW+hem8oOagh+enu+WKqOaXtuWGjeiuvue9rlxuICAgICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBvaW50QnlFdmVudCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgc3VwcG9ydENTU1RyYW5zZm9ybSA9IHRoaXMuZ2V0KCdzdXBwb3J0Q1NTVHJhbnNmb3JtJyk7XG4gICAgICAgIGlmIChzdXBwb3J0Q1NTVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAvLyBGb3IgRmlyZWZveCA8PSAzOFxuICAgICAgICAgICAgaWYgKGlzRmlyZWZveCAmJiAhaXNOaWwoZXYubGF5ZXJYKSAmJiBldi5sYXllclggIT09IGV2Lm9mZnNldFgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldi5sYXllclgsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2LmxheWVyWSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc05pbChldi5vZmZzZXRYKSkge1xuICAgICAgICAgICAgICAgIC8vIEZvciBJRTYrLCBGaXJlZm94ID49IDM5LCBDaHJvbWUsIFNhZmFyaSwgT3BlcmFcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldi5vZmZzZXRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldi5vZmZzZXRZLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2hvdWxkIGNhbGN1bGF0ZSBieSBzZWxmIGZvciBvdGhlciBjYXNlcywgbGlrZSBTYWZhcmkgaW4gaW9zXG4gICAgICAgIC8vIFRPRE86IHN1cHBvcnQgQ1NTIHRyYW5zZm9ybVxuICAgICAgICB2YXIgX2EgPSB0aGlzLmdldENsaWVudEJ5RXZlbnQoZXYpLCBjbGllbnRYID0gX2EueCwgY2xpZW50WSA9IF9hLnk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFBvaW50QnlDbGllbnQoY2xpZW50WCwgY2xpZW50WSk7XG4gICAgfTtcbiAgICAvLyDojrflj5YgdG91Y2gg5LqL5Lu255qEIGNsaWVudFgg5ZKMIGNsaWVudFkg6ZyA6KaB5Y2V54us5aSE55CGXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRDbGllbnRCeUV2ZW50ID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIHZhciBjbGllbnRJbmZvID0gZXY7XG4gICAgICAgIGlmIChldi50b3VjaGVzKSB7XG4gICAgICAgICAgICBpZiAoZXYudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICAgICAgICAgIGNsaWVudEluZm8gPSBldi5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsaWVudEluZm8gPSBldi50b3VjaGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBjbGllbnRJbmZvLmNsaWVudFgsXG4gICAgICAgICAgICB5OiBjbGllbnRJbmZvLmNsaWVudFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBvaW50QnlDbGllbnQgPSBmdW5jdGlvbiAoY2xpZW50WCwgY2xpZW50WSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGJib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IGNsaWVudFggLSBiYm94LmxlZnQsXG4gICAgICAgICAgICB5OiBjbGllbnRZIC0gYmJveC50b3AsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmdldENsaWVudEJ5UG9pbnQgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGJib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKyBiYm94LmxlZnQsXG4gICAgICAgICAgICB5OiB5ICsgYmJveC50b3AsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7IH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOmUgOavgSBET00g5a655ZmoXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5yZW1vdmVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDmuIXnkIbmiYDmnInnmoTkuovku7ZcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmNsZWFyRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZXZlbnRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2V2ZW50Q29udHJvbGxlcicpO1xuICAgICAgICBldmVudENvbnRyb2xsZXIuZGVzdHJveSgpO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5pc0NhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAvLyDlkIzliJ3lp4vljJbml7bnm7jlj43pobrluo/osIPnlKhcbiAgICAgICAgaWYgKHRpbWVsaW5lKSB7XG4gICAgICAgICAgICAvLyDnlLvluIPplIDmr4Hml7boh6rliqjlgZzmraLliqjnlLtcbiAgICAgICAgICAgIHRpbWVsaW5lLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyRXZlbnRzKCk7XG4gICAgICAgIHRoaXMucmVtb3ZlRG9tKCk7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIENhbnZhcztcbn0oQ29udGFpbmVyKSk7XG5leHBvcnQgZGVmYXVsdCBDYW52YXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW52YXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/abstract/container.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g-base/esm/abstract/container.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n\n\n\n\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) { destroy = true; }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n }\n else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getCanvasBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isObject\"])(type)) {\n cfg = type;\n }\n else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0], cfg = args[1];\n var group;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isFunction\"])(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n }\n else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n }\n else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n }\n else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n }\n else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n }\n else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return this.get('children');\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) { destroy = true; }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst = element;\n }\n else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(_element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Container);\n//# sourceMappingURL=container.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9jb250YWluZXIuanM/MzMwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0k7QUFDTjtBQUN1RTtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsZ0JBQWdCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGtFQUFlO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDZEQUFVO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRUFBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLFFBQVE7QUFDakQ7QUFDQSxnQkFBZ0IsaUVBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsUUFBUTtBQUNqRCxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVM7QUFDeEIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnQkFBZ0I7QUFDaEMsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQjtBQUNoQyxnQkFBZ0IsY0FBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsZ0JBQWdCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxDQUFDLGdEQUFPO0FBQ00sd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NvbnRhaW5lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBFbGVtZW50IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc09iamVjdCwgZWFjaCwgcmVtb3ZlRnJvbUFycmF5LCB1cHBlckZpcnN0LCBpc0FsbG93Q2FwdHVyZSB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG52YXIgU0hBUEVfTUFQID0ge307XG52YXIgSU5ERVggPSAnX0lOREVYJztcbi8qKlxuICog6K6+572uIGNhbnZhc1xuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCDlhYPntKBcbiAqIEBwYXJhbSB7SUNhbnZhc30gIGNhbnZhcyAg55S75biDXG4gKi9cbmZ1bmN0aW9uIHNldENhbnZhcyhlbGVtZW50LCBjYW52YXMpIHtcbiAgICBlbGVtZW50LnNldCgnY2FudmFzJywgY2FudmFzKTtcbiAgICBpZiAoZWxlbWVudC5pc0dyb3VwKCkpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gZWxlbWVudC5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgc2V0Q2FudmFzKGNoaWxkLCBjYW52YXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIOiuvue9riB0aW1lbGluZVxuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCAg5YWD57SgXG4gKiBAcGFyYW0ge1RpbWVsaW5lfSB0aW1lbGluZSDml7bpl7TovbRcbiAqL1xuZnVuY3Rpb24gc2V0VGltZWxpbmUoZWxlbWVudCwgdGltZWxpbmUpIHtcbiAgICBlbGVtZW50LnNldCgndGltZWxpbmUnLCB0aW1lbGluZSk7XG4gICAgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IGVsZW1lbnQuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVsaW5lKGNoaWxkLCB0aW1lbGluZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRhaW5lciwgZWxlbWVudCkge1xuICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXRDaGlsZHJlbigpO1xuICAgIHJldHVybiBjaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpID49IDA7XG59XG5mdW5jdGlvbiByZW1vdmVDaGlsZChjb250YWluZXIsIGVsZW1lbnQsIGRlc3Ryb3kpIHtcbiAgICBpZiAoZGVzdHJveSA9PT0gdm9pZCAwKSB7IGRlc3Ryb3kgPSB0cnVlOyB9XG4gICAgLy8g5LiN5YaN6LCD55SoIGVsZW1lbnQucmVtb3ZlKCkg5pa55rOV77yM5Lya5Ye6546w5b6q546v6LCD55SoXG4gICAgaWYgKGRlc3Ryb3kpIHtcbiAgICAgICAgZWxlbWVudC5kZXN0cm95KCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldCgncGFyZW50JywgbnVsbCk7XG4gICAgICAgIGVsZW1lbnQuc2V0KCdjYW52YXMnLCBudWxsKTtcbiAgICB9XG4gICAgcmVtb3ZlRnJvbUFycmF5KGNvbnRhaW5lci5nZXRDaGlsZHJlbigpLCBlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldENvbXBhcmVyKGNvbXBhcmUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlKGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IGxlZnRbSU5ERVhdIC0gcmlnaHRbSU5ERVhdIDogcmVzdWx0O1xuICAgIH07XG59XG52YXIgQ29udGFpbmVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb250YWluZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29udGFpbmVyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuaXNDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8vIOagueaNruWtkOiKgueCueehruWumiBCQm94XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDmiYDmnInnmoTlgLzlj6/og73lnKjnlLvluIPnmoTlj6/op4bljLrlpJZcbiAgICAgICAgdmFyIG1pblggPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIG1heFggPSAtSW5maW5pdHk7XG4gICAgICAgIHZhciBtaW5ZID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhZID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICAvLyDlsIblj6/op4HlhYPntKDjgIHlm77lvaLku6Xlj4rkuI3kuLrnqbrnmoTlm77lvaLliIbnu4TnrZvpgInlh7rmnaXvvIznlKjkuo7ljIXlm7Tnm5LlkIjlubZcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpLmZpbHRlcihmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoJ3Zpc2libGUnKSAmJiAoIWNoaWxkLmlzR3JvdXAoKSB8fCAoY2hpbGQuaXNHcm91cCgpICYmIGNoaWxkLmdldENoaWxkcmVuKCkubGVuZ3RoID4gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHZhciBib3ggPSBjaGlsZC5nZXRCQm94KCk7XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGJveC5taW5YLCBib3gubWF4WCk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGJveC5taW5ZLCBib3gubWF4WSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1pblggPSBtaW4oeEFycik7XG4gICAgICAgICAgICBtYXhYID0gbWF4KHhBcnIpO1xuICAgICAgICAgICAgbWluWSA9IG1pbih5QXJyKTtcbiAgICAgICAgICAgIG1heFkgPSBtYXgoeUFycik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtaW5YID0gMDtcbiAgICAgICAgICAgIG1heFggPSAwO1xuICAgICAgICAgICAgbWluWSA9IDA7XG4gICAgICAgICAgICBtYXhZID0gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm94ID0ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGJveDtcbiAgICB9O1xuICAgIC8vIOiOt+WPlueUu+W4g+eahOWMheWbtOebklxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Q2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG1pblggPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIG1heFggPSAtSW5maW5pdHk7XG4gICAgICAgIHZhciBtaW5ZID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhZID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICAvLyDlsIblj6/op4HlhYPntKDjgIHlm77lvaLku6Xlj4rkuI3kuLrnqbrnmoTlm77lvaLliIbnu4TnrZvpgInlh7rmnaXvvIznlKjkuo7ljIXlm7Tnm5LlkIjlubZcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpLmZpbHRlcihmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoJ3Zpc2libGUnKSAmJiAoIWNoaWxkLmlzR3JvdXAoKSB8fCAoY2hpbGQuaXNHcm91cCgpICYmIGNoaWxkLmdldENoaWxkcmVuKCkubGVuZ3RoID4gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHZhciBib3ggPSBjaGlsZC5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGJveC5taW5YLCBib3gubWF4WCk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGJveC5taW5ZLCBib3gubWF4WSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1pblggPSBtaW4oeEFycik7XG4gICAgICAgICAgICBtYXhYID0gbWF4KHhBcnIpO1xuICAgICAgICAgICAgbWluWSA9IG1pbih5QXJyKTtcbiAgICAgICAgICAgIG1heFkgPSBtYXgoeUFycik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtaW5YID0gMDtcbiAgICAgICAgICAgIG1heFggPSAwO1xuICAgICAgICAgICAgbWluWSA9IDA7XG4gICAgICAgICAgICBtYXhZID0gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm94ID0ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGJveDtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNmZyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZy5jYWxsKHRoaXMpO1xuICAgICAgICBjZmdbJ2NoaWxkcmVuJ10gPSBbXTtcbiAgICAgICAgcmV0dXJuIGNmZztcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIGlmIChuYW1lID09PSAnbWF0cml4Jykge1xuICAgICAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICAgICAgdGhpcy5fYXBwbHlDaGlsZHJlbk1hcml4KHRvdGFsTWF0cml4KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5LiN5L2G5bqU55So5Yiw6Ieq5bex6Lqr5LiK6L+Y6KaB5bqU55So5LqO5a2Q5YWD57SgXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5hcHBseU1hdHJpeCA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgdmFyIHByZVRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFwcGx5TWF0cml4LmNhbGwodGhpcywgbWF0cml4KTtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICAvLyB0b3RhbE1hdHJpeCDmsqHmnInlj5HnlJ/lj5jljJbml7bvvIzov5nph4zku4XogIPomZHkuKTogIXpg73kuLogbnVsbCDml7ZcbiAgICAgICAgLy8g5LiN57un57ut5ZCR5LiL5Lyg6YCS55+p6Zi1XG4gICAgICAgIGlmICh0b3RhbE1hdHJpeCA9PT0gcHJlVG90YWxNYXRyaXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hcHBseUNoaWxkcmVuTWFyaXgodG90YWxNYXRyaXgpO1xuICAgIH07XG4gICAgLy8g5Zyo5a2Q5YWD57Sg5LiK6K6+572u55+p6Zi1XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5fYXBwbHlDaGlsZHJlbk1hcml4ID0gZnVuY3Rpb24gKHRvdGFsTWF0cml4KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICBjaGlsZC5hcHBseU1hdHJpeCh0b3RhbE1hdHJpeCk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8g5YW85a656ICB54mI5pys55qE5o6l5Y+jXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5hZGRTaGFwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHlwZSA9IGFyZ3NbMF07XG4gICAgICAgIHZhciBjZmcgPSBhcmdzWzFdO1xuICAgICAgICBpZiAoaXNPYmplY3QodHlwZSkpIHtcbiAgICAgICAgICAgIGNmZyA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjZmdbJ3R5cGUnXSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNoYXBlVHlwZSA9IFNIQVBFX01BUFtjZmcudHlwZV07XG4gICAgICAgIGlmICghc2hhcGVUeXBlKSB7XG4gICAgICAgICAgICBzaGFwZVR5cGUgPSB1cHBlckZpcnN0KGNmZy50eXBlKTtcbiAgICAgICAgICAgIFNIQVBFX01BUFtjZmcudHlwZV0gPSBzaGFwZVR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIFNoYXBlQmFzZSA9IHRoaXMuZ2V0U2hhcGVCYXNlKCk7XG4gICAgICAgIHZhciBzaGFwZSA9IG5ldyBTaGFwZUJhc2Vbc2hhcGVUeXBlXShjZmcpO1xuICAgICAgICB0aGlzLmFkZChzaGFwZSk7XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYWRkR3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGdyb3VwQ2xhc3MgPSBhcmdzWzBdLCBjZmcgPSBhcmdzWzFdO1xuICAgICAgICB2YXIgZ3JvdXA7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGdyb3VwQ2xhc3MpKSB7XG4gICAgICAgICAgICBpZiAoY2ZnKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAgPSBuZXcgZ3JvdXBDbGFzcyhjZmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAgPSBuZXcgZ3JvdXBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbnZhcyxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRtcENmZyA9IGdyb3VwQ2xhc3MgfHwge307XG4gICAgICAgICAgICB2YXIgVG1wR3JvdXBDbGFzcyA9IHRoaXMuZ2V0R3JvdXBCYXNlKCk7XG4gICAgICAgICAgICBncm91cCA9IG5ldyBUbXBHcm91cENsYXNzKHRtcENmZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGQoZ3JvdXApO1xuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNhbnZhcztcbiAgICAgICAgaWYgKHRoaXMuaXNDYW52YXMoKSkge1xuICAgICAgICAgICAgY2FudmFzID0gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FudmFzO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRTaGFwZSA9IGZ1bmN0aW9uICh4LCB5LCBldikge1xuICAgICAgICAvLyDlpoLmnpzkuI3mlK/mjIHmi77lj5bvvIzliJnnm7TmjqXov5Tlm55cbiAgICAgICAgaWYgKCFpc0FsbG93Q2FwdHVyZSh0aGlzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICB2YXIgc2hhcGU7XG4gICAgICAgIC8vIOWmguaenOWuueWZqOaYryBncm91cFxuICAgICAgICBpZiAoIXRoaXMuaXNDYW52YXMoKSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbeCwgeSwgMV07XG4gICAgICAgICAgICAvLyDlsIYgeCwgeSDovazmjaLmiJDlr7nlupTkuo4gZ3JvdXAg55qE5bGA6YOo5Z2Q5qCHXG4gICAgICAgICAgICB2ID0gdGhpcy5pbnZlcnRGcm9tTWF0cml4KHYpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2xpcHBlZCh2WzBdLCB2WzFdKSkge1xuICAgICAgICAgICAgICAgIHNoYXBlID0gdGhpcy5fZmluZFNoYXBlKGNoaWxkcmVuLCB2WzBdLCB2WzFdLCBldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaGFwZSA9IHRoaXMuX2ZpbmRTaGFwZShjaGlsZHJlbiwgeCwgeSwgZXYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuX2ZpbmRTaGFwZSA9IGZ1bmN0aW9uIChjaGlsZHJlbiwgeCwgeSwgZXYpIHtcbiAgICAgICAgdmFyIHNoYXBlID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmIChpc0FsbG93Q2FwdHVyZShjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYXBlID0gY2hpbGQuZ2V0U2hhcGUoeCwgeSwgZXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5pc0hpdCh4LCB5KSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IGNoaWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0Q2FudmFzKCk7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIHZhciBwcmVQYXJlbnQgPSBlbGVtZW50LmdldFBhcmVudCgpO1xuICAgICAgICBpZiAocHJlUGFyZW50KSB7XG4gICAgICAgICAgICByZW1vdmVDaGlsZChwcmVQYXJlbnQsIGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50LnNldCgncGFyZW50JywgdGhpcyk7XG4gICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgIHNldENhbnZhcyhlbGVtZW50LCBjYW52YXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lbGluZSkge1xuICAgICAgICAgICAgc2V0VGltZWxpbmUoZWxlbWVudCwgdGltZWxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkcmVuLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQub25DYW52YXNDaGFuZ2UoJ2FkZCcpO1xuICAgICAgICB0aGlzLl9hcHBseUVsZW1lbnRNYXRyaXgoZWxlbWVudCk7XG4gICAgfTtcbiAgICAvLyDlsIblvZPliY3lrrnlmajnmoTnn6npmLXlupTnlKjliLDlrZDlhYPntKBcbiAgICBDb250YWluZXIucHJvdG90eXBlLl9hcHBseUVsZW1lbnRNYXRyaXggPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgdG90YWxNYXRyaXggPSB0aGlzLmdldFRvdGFsTWF0cml4KCk7XG4gICAgICAgIC8vIOa3u+WKoOWbvuW9ouaIluiAheWIhue7hOaXtu+8jOmcgOimgeaKiuW9k+WJjeWbvuWFg+eahOefqemYteiuvue9rui/m+WOu1xuICAgICAgICBpZiAodG90YWxNYXRyaXgpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuYXBwbHlNYXRyaXgodG90YWxNYXRyaXgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnNvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgLy8g56iz5a6a5o6S5bqPXG4gICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNoaWxkW0lOREVYXSA9IGluZGV4O1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgY2hpbGRyZW4uc29ydChnZXRDb21wYXJlcihmdW5jdGlvbiAob2JqMSwgb2JqMikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajEuZ2V0KCd6SW5kZXgnKSAtIG9iajIuZ2V0KCd6SW5kZXgnKTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdzb3J0Jyk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnY2xlYXJpbmcnLCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBmb3IgKHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNoaWxkcmVuW2ldLmRlc3Ryb3koKTsgLy8g6ZSA5q+B5a2Q5YWD57SgXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ2NoaWxkcmVuJywgW10pO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdjbGVhcicpO1xuICAgICAgICB0aGlzLnNldCgnY2xlYXJpbmcnLCBmYWxzZSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldCgnZGVzdHJveWVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W56ys5LiA5Liq5a2Q5YWD57SgXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOesrOS4gOS4quWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Rmlyc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENoaWxkQnlJbmRleCgwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluacgOWQjuS4gOS4quWtkOWFg+e0oFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldExhc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRCeUluZGV4KGNoaWxkcmVuLmxlbmd0aCAtIDEpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5qC55o2u57Si5byV6I635Y+W5a2Q5YWD57SgXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOesrOS4gOS4quWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Q2hpbGRCeUluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2luZGV4XTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWtkOWFg+e0oOeahOaVsOmHj1xuICAgICAqIEByZXR1cm4ge251bWJlcn0g5a2Q5YWD57Sg5pWw6YePXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4ubGVuZ3RoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5YyF5ZCr5a+55bqU5YWD57SgXG4gICAgICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCDlhYPntKBcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuY29udGFpbiA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmluZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOenu+mZpOWvueW6lOWtkOWFg+e0oFxuICAgICAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQg5a2Q5YWD57SgXG4gICAgICogQHBhcmFtIHtib29sZWFufSBkZXN0cm95IOaYr+WQpumUgOavgeWtkOWFg+e0oO+8jOm7mOiupOS4uiB0cnVlXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIChlbGVtZW50LCBkZXN0cm95KSB7XG4gICAgICAgIGlmIChkZXN0cm95ID09PSB2b2lkIDApIHsgZGVzdHJveSA9IHRydWU7IH1cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbihlbGVtZW50KSkge1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmUoZGVzdHJveSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOafpeaJvuaJgOacieWMuemFjeeahOWFg+e0oFxuICAgICAqIEBwYXJhbSAge0VsZW1lbnRGaWx0ZXJGbn0gICBmbiAg5Yy56YWN5Ye95pWwXG4gICAgICogQHJldHVybiB7SUVsZW1lbnRbXX0g5YWD57Sg5pWw57uEXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHZhciByc3QgPSBbXTtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGZuKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcnN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSByc3QuY29uY2F0KGVsZW1lbnQuZmluZEFsbChmbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJzdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOafpeaJvuWFg+e0oO+8jOaJvuWIsOesrOS4gOS4qui/lOWbnlxuICAgICAqIEBwYXJhbSAge0VsZW1lbnRGaWx0ZXJGbn0gZm4gICAg5Yy56YWN5Ye95pWwXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR8bnVsbH0g5YWD57Sg77yM5Y+v5Lul5Li656m6XG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHZhciByc3QgPSBudWxsO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZm4oZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSBlbGVtZW50LmZpbmQoZm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJzdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByc3Q7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmoLnmja4gSUQg5p+l5om+5YWD57SgXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIOWFg+e0oCBpZFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fG51bGx9IOWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdpZCcpID09PSBpZDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDor6Xmlrnms5XljbPlsIblup/lvIPvvIzkuI3lu7rorq7kvb/nlKhcbiAgICAgKiDmoLnmja4gY2xhc3NOYW1lIOafpeaJvuWFg+e0oFxuICAgICAqIFRPRE86IOivpeaWueW8j+WumuS5ieaaguaXtuWPque7mSBHNiAzLjMg5Lul5ZCO55qE54mI5pys5L2/55So77yM5b6FIEc2IOS4reeahCBmaW5kQnlDbGFzc05hbWUg5pa55rOV56e76Zmk5ZCO77yMRyDkuZ/pnIDopoHlkIzmraXnp7vpmaRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIOWFg+e0oCBjbGFzc05hbWVcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudCB8IG51bGx9IOWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZEJ5Q2xhc3NOYW1lID0gZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSBjbGFzc05hbWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5qC55o2uIG5hbWUg5p+l5om+5YWD57Sg5YiX6KGoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9ICAgICAgbmFtZSDlhYPntKDlkI3np7BcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudFtdfSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmZpbmRBbGxCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQWxsKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ25hbWUnKSA9PT0gbmFtZTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGFpbmVyO1xufShFbGVtZW50KSk7XG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250YWluZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/container.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/abstract/element.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/abstract/element.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/@antv/g-base/esm/util/matrix.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-base/esm/abstract/base.js\");\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(arr[i])) {\n result.push([].concat(arr[i]));\n }\n else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isEqual\"])(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime, delay = animation.delay, duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) { };\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) { };\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0], value = args[1];\n if (!name)\n return this.attrs;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {},\n _a[name] = value,\n _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n }\n else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) { destroy = true; }\n var parent = this.getParent();\n if (parent) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n }\n else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(parentMatrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(matrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"invert\"])(matrix);\n if (invertMatrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas,\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(originAttrs, function (i, k) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n }\n else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({ attrs: attrs });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0], duration = args[1], _a = args[2], easing = _a === void 0 ? 'easeLinear' : _a, _b = args[3], callback = _b === void 0 ? _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"] : _b, _c = args[4], delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n }\n else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n pauseCallback = animateCfg.pauseCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n resumeCallback = animateCfg.resumeCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n }\n else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(easing)) {\n callback = easing;\n easing = 'easeLinear';\n }\n else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])(),\n onFrame: onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n }\n else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) { toEnd = true; }\n var animations = this.get('animations');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n }\n else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime,\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n }\n else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function (i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isParent\"])(element, relativeShape)) {\n return \"break\";\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(name_1)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n }\n else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) { translateX = 0; }\n if (translateY === void 0) { translateY = 0; }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(), x = _a.x, y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Element);\n//# sourceMappingURL=element.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9lbGVtZW50LmpzP2NjYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDbUY7QUFDN0U7QUFDaUI7QUFDYTtBQUM1QztBQUMxQixnQkFBZ0IscURBQUc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1IsaURBQWlELDBEQUFPO0FBQ3hEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFHO0FBQ1g7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsSUFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsSUFBSTtBQUNuQixlQUFlLElBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCO0FBQ2pEO0FBQ0E7QUFDQSxZQUFZLGtFQUFlO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixtRUFBYztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixtRUFBYztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixjQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQU07QUFDckM7QUFDQSx1QkFBdUIsaUVBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDZEQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osZ0JBQWdCLDBEQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDhCQUE4QixlQUFlO0FBQzdDLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0pBQXNKLCtDQUFJO0FBQzFKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywrQ0FBSTtBQUNsRCx3REFBd0QsK0NBQUk7QUFDNUQsMERBQTBELCtDQUFJO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2REFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtCQUFrQjtBQUM5QztBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFRO0FBQzVCO0FBQ0E7QUFDQSxvQkFBb0IsMERBQU87QUFDM0Isb0JBQW9CLHVEQUFJO0FBQ3hCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBLG9DQUFvQyxnQkFBZ0I7QUFDcEQsb0NBQW9DLGdCQUFnQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQUk7QUFDUyxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3QvZWxlbWVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNFcXVhbCwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc0FycmF5LCBub29wLCBtaXgsIHVwcGVyRmlyc3QsIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyByZW1vdmVGcm9tQXJyYXksIGlzUGFyZW50IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IG11bHRpcGx5TWF0cml4LCBtdWx0aXBseVZlYzIsIGludmVydCB9IGZyb20gJy4uL3V0aWwvbWF0cml4JztcbmltcG9ydCBCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBNQVRSSVggPSAnbWF0cml4JztcbnZhciBDTE9ORV9DRkdTID0gWyd6SW5kZXgnLCAnY2FwdHVyZScsICd2aXNpYmxlJywgJ3R5cGUnXTtcbi8vIOWPr+S7peWcqCB0b0F0dHJzIOS4reiuvue9ru+8jOS9huS4jeWxnuS6jue7mOWbvuWxnuaAp+eahOWtl+autVxudmFyIFJFU0VSVkVEX1BPUlBTID0gWydyZXBlYXQnXTtcbnZhciBERUxFR0FUSU9OX1NQTElUID0gJzonO1xudmFyIFdJTERDQVJEID0gJyonO1xuLy8g6ZyA6KaB6ICD6JmR5pWw57uE5bWM5aWX5pWw57uE55qE5Zy65pmvXG4vLyDmlbDnu4TltYzlpZflr7nosaHnmoTlnLrmma/kuI3ogIPomZFcbmZ1bmN0aW9uIF9jbG9uZUFycmF5QXR0cihhcnIpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXJyW2ldKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goW10uY29uY2F0KGFycltpXSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goYXJyW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0Rm9ybWF0RnJvbUF0dHJzKHRvQXR0cnMsIHNoYXBlKSB7XG4gICAgdmFyIGZyb21BdHRycyA9IHt9O1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHJzO1xuICAgIGZvciAodmFyIGsgaW4gdG9BdHRycykge1xuICAgICAgICBmcm9tQXR0cnNba10gPSBhdHRyc1trXTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21BdHRycztcbn1cbmZ1bmN0aW9uIGdldEZvcm1hdFRvQXR0cnMocHJvcHMsIHNoYXBlKSB7XG4gICAgdmFyIHRvQXR0cnMgPSB7fTtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgZWFjaChwcm9wcywgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgaWYgKFJFU0VSVkVEX1BPUlBTLmluZGV4T2YoaykgPT09IC0xICYmICFpc0VxdWFsKGF0dHJzW2tdLCB2KSkge1xuICAgICAgICAgICAgdG9BdHRyc1trXSA9IHY7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdG9BdHRycztcbn1cbmZ1bmN0aW9uIGNoZWNrRXhpc3RlZEF0dHJzKGFuaW1hdGlvbnMsIGFuaW1hdGlvbikge1xuICAgIGlmIChhbmltYXRpb24ub25GcmFtZSkge1xuICAgICAgICByZXR1cm4gYW5pbWF0aW9ucztcbiAgICB9XG4gICAgdmFyIHN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWUsIGRlbGF5ID0gYW5pbWF0aW9uLmRlbGF5LCBkdXJhdGlvbiA9IGFuaW1hdGlvbi5kdXJhdGlvbjtcbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuICAgIGVhY2goYW5pbWF0aW9ucywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgLy8g5ZCO5LiA5Liq5Yqo55S75byA5aeL5omn6KGM55qE5pe26Ze0IDwg5YmN5LiA5Liq5Yqo55S755qE57uT5p2f5pe26Ze0ICYmIOWQjuS4gOS4quWKqOeUu+eahOaJp+ihjOaXtumXtCA+IOWJjeS4gOS4quWKqOeUu+eahOW7tui/n1xuICAgICAgICBpZiAoc3RhcnRUaW1lICsgZGVsYXkgPCBpdGVtLnN0YXJ0VGltZSArIGl0ZW0uZGVsYXkgKyBpdGVtLmR1cmF0aW9uICYmIGR1cmF0aW9uID4gaXRlbS5kZWxheSkge1xuICAgICAgICAgICAgZWFjaChhbmltYXRpb24udG9BdHRycywgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLnRvQXR0cnMsIGspKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnRvQXR0cnNba107XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLmZyb21BdHRyc1trXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbmltYXRpb25zO1xufVxudmFyIEVsZW1lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsZW1lbnQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRWxlbWVudChjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuICAgICAgICAvKipcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKiDlm77lvaLlsZ7mgKdcbiAgICAgICAgICogQHR5cGUge1NoYXBlQXR0cnN9XG4gICAgICAgICAqL1xuICAgICAgICBfdGhpcy5hdHRycyA9IHt9O1xuICAgICAgICB2YXIgYXR0cnMgPSBfdGhpcy5nZXREZWZhdWx0QXR0cnMoKTtcbiAgICAgICAgbWl4KGF0dHJzLCBjZmcuYXR0cnMpO1xuICAgICAgICBfdGhpcy5hdHRycyA9IGF0dHJzO1xuICAgICAgICBfdGhpcy5pbml0QXR0cnMoYXR0cnMpO1xuICAgICAgICBfdGhpcy5pbml0QW5pbWF0ZSgpOyAvLyDliJ3lp4vljJbliqjnlLtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvLyBvdmVycmlkZVxuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgIHpJbmRleDogMCxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDojrflj5bpu5jorqTnmoTlsZ7nm7hcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXRyaXg6IHRoaXMuZ2V0RGVmYXVsdE1hdHJpeCgpLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkgeyB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJblsZ7mgKfvvIzmnInkupvlsZ7mgKfpnIDopoHliqDlt6VcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXR0cnMg5bGe5oCn5YC8XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7IH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWIneWni+WMluWKqOeUu1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmluaXRBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnYW5pbWFibGUnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hdGluZycsIGZhbHNlKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmlzR3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdwYXJlbnQnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmF0dHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IGFyZ3NbMF0sIHZhbHVlID0gYXJnc1sxXTtcbiAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cnM7XG4gICAgICAgIGlmIChpc09iamVjdChuYW1lKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBuYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyKGssIG5hbWVba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZnRlckF0dHJzQ2hhbmdlKG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLnNldEF0dHIobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5hZnRlckF0dHJzQ2hhbmdlKChfYSA9IHt9LFxuICAgICAgICAgICAgICAgIF9hW25hbWVdID0gdmFsdWUsXG4gICAgICAgICAgICAgICAgX2EpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmF0dHJzW25hbWVdO1xuICAgIH07XG4gICAgLy8g5piv5ZCm6KKr6KOB5Ymq77yM6KKr6KOB5Ymq5YiZ5LiN5pi+56S677yM5LiN5Y+C5LiO5ou+5Y+WXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaXNDbGlwcGVkID0gZnVuY3Rpb24gKHJlZlgsIHJlZlkpIHtcbiAgICAgICAgdmFyIGNsaXAgPSB0aGlzLmdldENsaXAoKTtcbiAgICAgICAgcmV0dXJuIGNsaXAgJiYgIWNsaXAuaXNIaXQocmVmWCwgcmVmWSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlhoXpg6jorr7nva7lsZ7mgKflgLznmoTmjqXlj6NcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSDlsZ7mgKflkI1cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsdWUg5bGe5oCn5YC8XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0ciA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgb3JpZ2luVmFsdWUgPSB0aGlzLmF0dHJzW25hbWVdO1xuICAgICAgICBpZiAob3JpZ2luVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uQXR0ckNoYW5nZShuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5bGe5oCn5YC85Y+R55Sf5pS55Y+YXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUg5bGe5oCn5ZCNXG4gICAgICogQHBhcmFtIHthbnl9IHZhbHVlIOWxnuaAp+WAvFxuICAgICAqIEBwYXJhbSB7YW55fSBvcmlnaW5WYWx1ZSDlsZ7mgKflgLxcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnbWF0cml4Jykge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTWF0cml4JywgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWxnuaAp+abtOaUueWQjumcgOimgeWBmueahOS6i+aDhVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIGlmICh0aGlzLmNmZy5pc0NsaXBTaGFwZSkge1xuICAgICAgICAgICAgdmFyIGFwcGx5VG8gPSB0aGlzLmNmZy5hcHBseVRvO1xuICAgICAgICAgICAgaWYgKGFwcGx5VG8pIHtcbiAgICAgICAgICAgICAgICBhcHBseVRvLm9uQ2FudmFzQ2hhbmdlKCdjbGlwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdhdHRyJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOS4jeaYr+mrmOmikeaTjeS9nOebtOaOpeS9v+eUqCBzZXRcbiAgICAgICAgdGhpcy5zZXQoJ3Zpc2libGUnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnc2hvdycpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmhpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOS4jeaYr+mrmOmikeaTjeS9nOebtOaOpeS9v+eUqCBzZXRcbiAgICAgICAgdGhpcy5zZXQoJ3Zpc2libGUnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ2hpZGUnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zZXRaSW5kZXggPSBmdW5jdGlvbiAoekluZGV4KSB7XG4gICAgICAgIHRoaXMuc2V0KCd6SW5kZXgnLCB6SW5kZXgpO1xuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgLy8g5pS55Y+YIHpJbmRleCDkuI3lupTor6Xnq4vljbPop6blj5HmuLLmn5MgKOiwg+eUqCBvbkNhbnZhc0NoYW5nZSgnekluZGV4Jykp77yM6ZyA6KaB57uP6L+HIHNvcnQg5YaN6Kem5Y+RXG4gICAgICAgICAgICBwYXJlbnQuc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUudG9Gcm9udCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgaW5kZXggPSBjaGlsZHJlbi5pbmRleE9mKHRoaXMpO1xuICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBjaGlsZHJlbi5wdXNoKHRoaXMpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCd6SW5kZXgnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnRvQmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgaW5kZXggPSBjaGlsZHJlbi5pbmRleE9mKHRoaXMpO1xuICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBjaGlsZHJlbi51bnNoaWZ0KHRoaXMpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCd6SW5kZXgnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChkZXN0cm95KSB7XG4gICAgICAgIGlmIChkZXN0cm95ID09PSB2b2lkIDApIHsgZGVzdHJveSA9IHRydWU7IH1cbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheShwYXJlbnQuZ2V0Q2hpbGRyZW4oKSwgdGhpcyk7XG4gICAgICAgICAgICBpZiAoIXBhcmVudC5nZXQoJ2NsZWFyaW5nJykpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzniLblhYPntKDmraPlnKjmuIXnkIbvvIzlvZPliY3lhYPntKDkuI3op6blj5EgcmVtb3ZlXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgncmVtb3ZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdyZW1vdmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzdHJveSkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJlc2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmF0dHIoTUFUUklYLCB0aGlzLmdldERlZmF1bHRNYXRyaXgoKSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ21hdHJpeCcpO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyKE1BVFJJWCk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zZXRNYXRyaXggPSBmdW5jdGlvbiAobSkge1xuICAgICAgICB0aGlzLmF0dHIoTUFUUklYLCBtKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnbWF0cml4Jyk7XG4gICAgfTtcbiAgICAvLyDojrflj5bmgLvnmoQgbWF0cml4XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0VG90YWxNYXRyaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuY2ZnLnRvdGFsTWF0cml4O1xuICAgICAgICBpZiAoIXRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudE1hdHJpeCA9IHRoaXMuYXR0cignbWF0cml4Jyk7XG4gICAgICAgICAgICB2YXIgcGFyZW50TWF0cml4ID0gdGhpcy5jZmcucGFyZW50TWF0cml4O1xuICAgICAgICAgICAgaWYgKHBhcmVudE1hdHJpeCAmJiBjdXJyZW50TWF0cml4KSB7XG4gICAgICAgICAgICAgICAgdG90YWxNYXRyaXggPSBtdWx0aXBseU1hdHJpeChwYXJlbnRNYXRyaXgsIGN1cnJlbnRNYXRyaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdG90YWxNYXRyaXggPSBjdXJyZW50TWF0cml4IHx8IHBhcmVudE1hdHJpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0KCd0b3RhbE1hdHJpeCcsIHRvdGFsTWF0cml4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG90YWxNYXRyaXg7XG4gICAgfTtcbiAgICAvLyDkuIrlsYLliIbnu4Torr7nva4gbWF0cml4XG4gICAgRWxlbWVudC5wcm90b3R5cGUuYXBwbHlNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIHZhciBjdXJyZW50TWF0cml4ID0gdGhpcy5hdHRyKCdtYXRyaXgnKTtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gbnVsbDtcbiAgICAgICAgaWYgKG1hdHJpeCAmJiBjdXJyZW50TWF0cml4KSB7XG4gICAgICAgICAgICB0b3RhbE1hdHJpeCA9IG11bHRpcGx5TWF0cml4KG1hdHJpeCwgY3VycmVudE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0b3RhbE1hdHJpeCA9IGN1cnJlbnRNYXRyaXggfHwgbWF0cml4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbE1hdHJpeCcsIHRvdGFsTWF0cml4KTtcbiAgICAgICAgdGhpcy5zZXQoJ3BhcmVudE1hdHJpeCcsIG1hdHJpeCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog6I635Y+W6buY6K6k55qE55+p6Zi1XG4gICAgICogQHJldHVybnMge251bWJlcltdfG51bGx9IOm7mOiupOeahOefqemYtVxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldERlZmF1bHRNYXRyaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgLy8g5bCG5ZCR6YeP5bqU55So6K6+572u55qE55+p6Zi1XG4gICAgRWxlbWVudC5wcm90b3R5cGUuYXBwbHlUb01hdHJpeCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmF0dHIoJ21hdHJpeCcpO1xuICAgICAgICBpZiAobWF0cml4KSB7XG4gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHlWZWMyKG1hdHJpeCwgdik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfTtcbiAgICAvLyDmoLnmja7orr7nva7nmoTnn6npmLXvvIzlsIblkJHph4/ovazmjaLnm7jlr7nkuo7lm77lvaIv5YiG57uE55qE5L2N572uXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaW52ZXJ0RnJvbU1hdHJpeCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmF0dHIoJ21hdHJpeCcpO1xuICAgICAgICBpZiAobWF0cml4KSB7XG4gICAgICAgICAgICB2YXIgaW52ZXJ0TWF0cml4ID0gaW52ZXJ0KG1hdHJpeCk7XG4gICAgICAgICAgICBpZiAoaW52ZXJ0TWF0cml4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5VmVjMihpbnZlcnRNYXRyaXgsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgIH07XG4gICAgLy8g6K6+572uIGNsaXBcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zZXRDbGlwID0gZnVuY3Rpb24gKGNsaXBDZmcpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0Q2FudmFzKCk7XG4gICAgICAgIC8vIOW6lOivpeWPquiuvue9ruW9k+WJjeWFg+e0oOeahCBjbGlw77yM5LiN5bqU6K+l5Y675L+u5pS5IGNsaXAg5pys6Lqr77yM5pa55L6/IGNsaXAg6KKr5aSN55SoXG4gICAgICAgIC8vIFRPRE86IHNldENsaXAg55qE5Lyg5Y+C5peiIHNoYXBlIOmFjee9ru+8jOS5n+aUr+aMgSBzaGFwZSDlr7nosaFcbiAgICAgICAgLy8gY29uc3QgcHJlU2hhcGUgPSB0aGlzLmdldCgnY2xpcFNoYXBlJyk7XG4gICAgICAgIC8vIGlmIChwcmVTaGFwZSkge1xuICAgICAgICAvLyAgIC8vIOWwhuS5i+WJjeeahCBjbGlwU2hhcGUg6ZSA5q+BXG4gICAgICAgIC8vICAgcHJlU2hhcGUuZGVzdHJveSgpO1xuICAgICAgICAvLyB9XG4gICAgICAgIHZhciBjbGlwU2hhcGUgPSBudWxsO1xuICAgICAgICAvLyDlpoLmnpzphY3nva7pobnkuLogbnVsbO+8jOWImeS4jeenu+mZpCBjbGlwU2hhcGVcbiAgICAgICAgaWYgKGNsaXBDZmcpIHtcbiAgICAgICAgICAgIHZhciBTaGFwZUJhc2UgPSB0aGlzLmdldFNoYXBlQmFzZSgpO1xuICAgICAgICAgICAgdmFyIHNoYXBlVHlwZSA9IHVwcGVyRmlyc3QoY2xpcENmZy50eXBlKTtcbiAgICAgICAgICAgIHZhciBDb25zID0gU2hhcGVCYXNlW3NoYXBlVHlwZV07XG4gICAgICAgICAgICBpZiAoQ29ucykge1xuICAgICAgICAgICAgICAgIGNsaXBTaGFwZSA9IG5ldyBDb25zKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogY2xpcENmZy50eXBlLFxuICAgICAgICAgICAgICAgICAgICBpc0NsaXBTaGFwZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlUbzogdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IGNsaXBDZmcuYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgIGNhbnZhczogY2FudmFzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdjbGlwU2hhcGUnLCBjbGlwU2hhcGUpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdjbGlwJyk7XG4gICAgICAgIHJldHVybiBjbGlwU2hhcGU7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRDbGlwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDpq5jpopHnjofosIPnlKjnmoTlnLDmlrnnm7TmjqXkvb/nlKggdGhpcy5jZmcueHh4XG4gICAgICAgIHZhciBjbGlwU2hhcGUgPSB0aGlzLmNmZy5jbGlwU2hhcGU7XG4gICAgICAgIC8vIOacquiuvue9ruaXtui/lOWbniBOdWxs77yM5L+d6K+B5LiA6Ie05oCnXG4gICAgICAgIGlmICghY2xpcFNoYXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xpcFNoYXBlO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBvcmlnaW5BdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIHZhciBhdHRycyA9IHt9O1xuICAgICAgICBlYWNoKG9yaWdpbkF0dHJzLCBmdW5jdGlvbiAoaSwgaykge1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkob3JpZ2luQXR0cnNba10pKSB7XG4gICAgICAgICAgICAgICAgYXR0cnNba10gPSBfY2xvbmVBcnJheUF0dHIob3JpZ2luQXR0cnNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0cnNba10gPSBvcmlnaW5BdHRyc1trXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb25zID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB2YXIgY2xvbmUgPSBuZXcgY29ucyh7IGF0dHJzOiBhdHRycyB9KTtcbiAgICAgICAgZWFjaChDTE9ORV9DRkdTLCBmdW5jdGlvbiAoY2ZnTmFtZSkge1xuICAgICAgICAgICAgY2xvbmUuc2V0KGNmZ05hbWUsIF90aGlzLmdldChjZmdOYW1lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGVzdHJveWVkID0gdGhpcy5kZXN0cm95ZWQ7XG4gICAgICAgIGlmIChkZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF0dHJzID0ge307XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICAgICAgICAvLyB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdkZXN0cm95Jyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblpITkuo7liqjnlLvmmoLlgZznirbmgIFcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSDmmK/lkKblpITkuo7liqjnlLvmmoLlgZznirbmgIFcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5pc0FuaW1hdGVQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnX3BhdXNlJykuaXNQYXVzZWQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmiafooYzliqjnlLvvvIzmlK/mjIHlpJrnp43lh73mlbDnrb7lkI1cbiAgICAgKiAxLiBhbmltYXRlKHRvQXR0cnM6IEVsZW1lbnRBdHRycywgZHVyYXRpb246IG51bWJlciwgZWFzaW5nPzogc3RyaW5nLCBjYWxsYmFjaz86ICgpID0+IHZvaWQsIGRlbGF5PzogbnVtYmVyKVxuICAgICAqIDIuIGFuaW1hdGUob25GcmFtZTogT25GcmFtZSwgZHVyYXRpb246IG51bWJlciwgZWFzaW5nPzogc3RyaW5nLCBjYWxsYmFjaz86ICgpID0+IHZvaWQsIGRlbGF5PzogbnVtYmVyKVxuICAgICAqIDMuIGFuaW1hdGUodG9BdHRyczogRWxlbWVudEF0dHJzLCBjZmc6IEFuaW1hdGVDZmcpXG4gICAgICogNC4gYW5pbWF0ZShvbkZyYW1lOiBPbkZyYW1lLCBjZmc6IEFuaW1hdGVDZmcpXG4gICAgICog5ZCE5Liq5Y+C5pWw55qE5ZCr5LmJ5Li6OlxuICAgICAqICAgdG9BdHRycyAg5Yqo55S75pyA57uI54q25oCBXG4gICAgICogICBvbkZyYW1lICDoh6rlrprkuYnluKfliqjnlLvlh73mlbBcbiAgICAgKiAgIGR1cmF0aW9uIOWKqOeUu+aJp+ihjOaXtumXtFxuICAgICAqICAgZWFzaW5nICAg5Yqo55S757yT5Yqo5pWI5p6cXG4gICAgICogICBjYWxsYmFjayDliqjnlLvmiafooYzlkI7nmoTlm57osINcbiAgICAgKiAgIGRlbGF5ICAgIOWKqOeUu+W7tui/n+aXtumXtFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdldCgndGltZWxpbmUnKSAmJiAhdGhpcy5nZXQoJ2NhbnZhcycpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hdGluZycsIHRydWUpO1xuICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgaWYgKCF0aW1lbGluZSkge1xuICAgICAgICAgICAgdGltZWxpbmUgPSB0aGlzLmdldCgnY2FudmFzJykuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RpbWVsaW5lJywgdGltZWxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5nZXQoJ2FuaW1hdGlvbnMnKSB8fCBbXTtcbiAgICAgICAgLy8g5Yid5aeL5YyWIHRpY2tcbiAgICAgICAgaWYgKCF0aW1lbGluZS50aW1lcikge1xuICAgICAgICAgICAgdGltZWxpbmUuaW5pdFRpbWVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvQXR0cnMgPSBhcmdzWzBdLCBkdXJhdGlvbiA9IGFyZ3NbMV0sIF9hID0gYXJnc1syXSwgZWFzaW5nID0gX2EgPT09IHZvaWQgMCA/ICdlYXNlTGluZWFyJyA6IF9hLCBfYiA9IGFyZ3NbM10sIGNhbGxiYWNrID0gX2IgPT09IHZvaWQgMCA/IG5vb3AgOiBfYiwgX2MgPSBhcmdzWzRdLCBkZWxheSA9IF9jID09PSB2b2lkIDAgPyAwIDogX2M7XG4gICAgICAgIHZhciBvbkZyYW1lO1xuICAgICAgICB2YXIgcmVwZWF0O1xuICAgICAgICB2YXIgcGF1c2VDYWxsYmFjaztcbiAgICAgICAgdmFyIHJlc3VtZUNhbGxiYWNrO1xuICAgICAgICB2YXIgYW5pbWF0ZUNmZztcbiAgICAgICAgLy8g56ys5LqM5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv5Yqo55S75pyA57uI54q25oCBIHRvQXR0cnPvvIzkuZ/lj6/ku6XmmK/oh6rlrprkuYnluKfliqjnlLvlh73mlbAgb25GcmFtZVxuICAgICAgICBpZiAoaXNGdW5jdGlvbih0b0F0dHJzKSkge1xuICAgICAgICAgICAgb25GcmFtZSA9IHRvQXR0cnM7XG4gICAgICAgICAgICB0b0F0dHJzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodG9BdHRycykgJiYgdG9BdHRycy5vbkZyYW1lKSB7XG4gICAgICAgICAgICAvLyDlhbzlrrkgMy4wIOS4reeahOWGmeazle+8jG9uRnJhbWUg5ZKMIHJlcGVhdCDlj6/lnKggdG9BdHRycyDkuK3orr7nva5cbiAgICAgICAgICAgIG9uRnJhbWUgPSB0b0F0dHJzLm9uRnJhbWU7XG4gICAgICAgICAgICByZXBlYXQgPSB0b0F0dHJzLnJlcGVhdDtcbiAgICAgICAgfVxuICAgICAgICAvLyDnrKzkuozkuKrlj4LmlbDvvIzml6Llj6/ku6XmmK/miafooYzml7bpl7QgZHVyYXRpb27vvIzkuZ/lj6/ku6XmmK/liqjnlLvlj4LmlbAgYW5pbWF0ZUNmZ1xuICAgICAgICBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XG4gICAgICAgICAgICBhbmltYXRlQ2ZnID0gZHVyYXRpb247XG4gICAgICAgICAgICBkdXJhdGlvbiA9IGFuaW1hdGVDZmcuZHVyYXRpb247XG4gICAgICAgICAgICBlYXNpbmcgPSBhbmltYXRlQ2ZnLmVhc2luZyB8fCAnZWFzZUxpbmVhcic7XG4gICAgICAgICAgICBkZWxheSA9IGFuaW1hdGVDZmcuZGVsYXkgfHwgMDtcbiAgICAgICAgICAgIC8vIGFuaW1hdGVDZmcg5Lit55qE6K6+572u5LyY5YWI57qn5pu06auYXG4gICAgICAgICAgICByZXBlYXQgPSBhbmltYXRlQ2ZnLnJlcGVhdCB8fCByZXBlYXQgfHwgZmFsc2U7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGFuaW1hdGVDZmcuY2FsbGJhY2sgfHwgbm9vcDtcbiAgICAgICAgICAgIHBhdXNlQ2FsbGJhY2sgPSBhbmltYXRlQ2ZnLnBhdXNlQ2FsbGJhY2sgfHwgbm9vcDtcbiAgICAgICAgICAgIHJlc3VtZUNhbGxiYWNrID0gYW5pbWF0ZUNmZy5yZXN1bWVDYWxsYmFjayB8fCBub29wO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g56ys5Zub5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv5Zue6LCD5Ye95pWwIGNhbGxiYWNr77yM5Lmf5Y+v5Lul5piv5bu26L+f5pe26Ze0IGRlbGF5XG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICAgICAgZGVsYXkgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDnrKzkuInkuKrlj4LmlbDvvIzml6Llj6/ku6XmmK/nvJPliqjlj4LmlbAgZWFzaW5n77yM5Lmf5Y+v5Lul5piv5Zue6LCD5Ye95pWwIGNhbGxiYWNrXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihlYXNpbmcpKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBlYXNpbmc7XG4gICAgICAgICAgICAgICAgZWFzaW5nID0gJ2Vhc2VMaW5lYXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZWFzaW5nID0gZWFzaW5nIHx8ICdlYXNlTGluZWFyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZm9ybWF0VG9BdHRycyA9IGdldEZvcm1hdFRvQXR0cnModG9BdHRycywgdGhpcyk7XG4gICAgICAgIHZhciBhbmltYXRpb24gPSB7XG4gICAgICAgICAgICBmcm9tQXR0cnM6IGdldEZvcm1hdEZyb21BdHRycyhmb3JtYXRUb0F0dHJzLCB0aGlzKSxcbiAgICAgICAgICAgIHRvQXR0cnM6IGZvcm1hdFRvQXR0cnMsXG4gICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICAgICAgICBlYXNpbmc6IGVhc2luZyxcbiAgICAgICAgICAgIHJlcGVhdDogcmVwZWF0LFxuICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgcGF1c2VDYWxsYmFjazogcGF1c2VDYWxsYmFjayxcbiAgICAgICAgICAgIHJlc3VtZUNhbGxiYWNrOiByZXN1bWVDYWxsYmFjayxcbiAgICAgICAgICAgIGRlbGF5OiBkZWxheSxcbiAgICAgICAgICAgIHN0YXJ0VGltZTogdGltZWxpbmUuZ2V0VGltZSgpLFxuICAgICAgICAgICAgaWQ6IHVuaXF1ZUlkKCksXG4gICAgICAgICAgICBvbkZyYW1lOiBvbkZyYW1lLFxuICAgICAgICAgICAgcGF0aEZvcm1hdHRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIC8vIOWmguaenOWKqOeUu+WFg+e0oOmYn+WIl+S4reW3sue7j+aciei/meS4quWbvuW9ouS6hlxuICAgICAgICBpZiAoYW5pbWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyDlhYjmo4Dmn6XmmK/lkKbpnIDopoHlkIjlubblsZ7mgKfjgILoi6XmnInnm7jlkIznmoTliqjnlLvvvIzlsIbor6XlsZ7mgKfku47liY3kuIDkuKrliqjnlLvkuK3liKDpmaQs55u05o6l55So5ZCO5LiA5Liq5Yqo55S75LitXG4gICAgICAgICAgICBhbmltYXRpb25zID0gY2hlY2tFeGlzdGVkQXR0cnMoYW5pbWF0aW9ucywgYW5pbWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWQpuWImeWwhuWbvuW9oua3u+WKoOWIsOWKqOeUu+WFg+e0oOmYn+WIl1xuICAgICAgICAgICAgdGltZWxpbmUuYWRkQW5pbWF0b3IodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYW5pbWF0aW9ucy5wdXNoKGFuaW1hdGlvbik7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpb25zJywgYW5pbWF0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0KCdfcGF1c2UnLCB7IGlzUGF1c2VkOiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWBnOatouWKqOeUu1xuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdG9FbmQg5piv5ZCm5Yiw5Yqo55S755qE5pyA57uI54q25oCBXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuc3RvcEFuaW1hdGUgPSBmdW5jdGlvbiAodG9FbmQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRvRW5kID09PSB2b2lkIDApIHsgdG9FbmQgPSB0cnVlOyB9XG4gICAgICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5nZXQoJ2FuaW1hdGlvbnMnKTtcbiAgICAgICAgZWFjaChhbmltYXRpb25zLCBmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAvLyDlsIbliqjnlLvmiafooYzliLDmnIDlkI7kuIDluKdcbiAgICAgICAgICAgIGlmICh0b0VuZCkge1xuICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb24ub25GcmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKGFuaW1hdGlvbi5vbkZyYW1lKDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmF0dHIoYW5pbWF0aW9uLnRvQXR0cnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbmltYXRpb24uY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyDliqjnlLvlgZzmraLml7bnmoTlm57osINcbiAgICAgICAgICAgICAgICBhbmltYXRpb24uY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpbmcnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpb25zJywgW10pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5pqC5YGc5Yqo55S7XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucGF1c2VBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgdmFyIGFuaW1hdGlvbnMgPSB0aGlzLmdldCgnYW5pbWF0aW9ucycpO1xuICAgICAgICB2YXIgcGF1c2VUaW1lID0gdGltZWxpbmUuZ2V0VGltZSgpO1xuICAgICAgICBlYWNoKGFuaW1hdGlvbnMsIGZ1bmN0aW9uIChhbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbi5fcGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi5fcGF1c2VUaW1lID0gcGF1c2VUaW1lO1xuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi5wYXVzZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75pqC5YGc5pe255qE5Zue6LCDXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOiusOW9leS4i+aYr+WcqOS7gOS5iOaXtuWAmeaaguWBnOeahFxuICAgICAgICB0aGlzLnNldCgnX3BhdXNlJywge1xuICAgICAgICAgICAgaXNQYXVzZWQ6IHRydWUsXG4gICAgICAgICAgICBwYXVzZVRpbWU6IHBhdXNlVGltZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5oGi5aSN5Yqo55S7XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucmVzdW1lQW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIHZhciBjdXJyZW50ID0gdGltZWxpbmUuZ2V0VGltZSgpO1xuICAgICAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuZ2V0KCdhbmltYXRpb25zJyk7XG4gICAgICAgIHZhciBwYXVzZVRpbWUgPSB0aGlzLmdldCgnX3BhdXNlJykucGF1c2VUaW1lO1xuICAgICAgICAvLyDkuYvlkI7mm7TmlrDlsZ7mgKfpnIDopoHorqHnrpfliqjnlLvlt7Lnu4/miafooYznmoTml7bplb/vvIzlpoLmnpzmmoLlgZzkuobvvIzlsLHmiorliJ3lp4vml7bpl7TosIPlkI5cbiAgICAgICAgZWFjaChhbmltYXRpb25zLCBmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnN0YXJ0VGltZSArIChjdXJyZW50IC0gcGF1c2VUaW1lKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi5fcGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlVGltZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoYW5pbWF0aW9uLnJlc3VtZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLnJlc3VtZUNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgnX3BhdXNlJywge1xuICAgICAgICAgICAgaXNQYXVzZWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hdGlvbnMnLCBhbmltYXRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDop6blj5Hlp5TmiZjkuovku7ZcbiAgICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgICB0eXBlIOS6i+S7tuexu+Wei1xuICAgICAqIEBwYXJhbSAge0dyYXBoRXZlbnR9IGV2ZW50T2JqIOS6i+S7tuWvueixoVxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmVtaXREZWxlZ2F0aW9uID0gZnVuY3Rpb24gKHR5cGUsIGV2ZW50T2JqKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwYXRocyA9IGV2ZW50T2JqLnByb3BhZ2F0aW9uUGF0aDtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICAgIHZhciByZWxhdGl2ZVNoYXBlO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICAgICAgICByZWxhdGl2ZVNoYXBlID0gZXZlbnRPYmouZnJvbVNoYXBlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLnRvU2hhcGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBwYXRoc1tpXTtcbiAgICAgICAgICAgIC8vIOaaguWumui3nyBuYW1lIOe7keWumlxuICAgICAgICAgICAgdmFyIG5hbWVfMSA9IGVsZW1lbnQuZ2V0KCduYW1lJyk7XG4gICAgICAgICAgICBpZiAobmFtZV8xKSB7XG4gICAgICAgICAgICAgICAgLy8g56ys5LiA5LiqIG1vdXNlZW50ZXIg5ZKMIG1vdXNlbGVhdmUg55qE5YGc5q2i5Y2z5Y+v77yM5Zug5Li65ZCO6Z2i55qE6YO95piv5YmN6Z2i55qEIFBhcmVudFxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAvLyDlj6rmnIkgZWxlbWVudCDmmK8gR3JvdXAg5oiW6ICFIENhbnZhcyDnmoTml7blgJnvvIzmiY3pnIDopoHliKTmlq0gaXNQYXJlbnRcbiAgICAgICAgICAgICAgICAoZWxlbWVudC5pc0dyb3VwKCkgfHwgKGVsZW1lbnQuaXNDYW52YXMgJiYgZWxlbWVudC5pc0NhbnZhcygpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSAmJlxuICAgICAgICAgICAgICAgICAgICBpc1BhcmVudChlbGVtZW50LCByZWxhdGl2ZVNoYXBlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShuYW1lXzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVhY2gobmFtZV8xLCBmdW5jdGlvbiAoc3ViTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW1pdERlbGVnYXRlRXZlbnQoZWxlbWVudCwgc3ViTmFtZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNfMS5lbWl0RGVsZWdhdGVFdmVudChlbGVtZW50LCBuYW1lXzEsIGV2ZW50T2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0aGlzXzEgPSB0aGlzO1xuICAgICAgICAvLyDoh7PlsJHmnInkuIDkuKrlr7nosaHvvIzkuJTnrKzkuIDkuKrlr7nosaHkuLogc2hhcGVcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGkpO1xuICAgICAgICAgICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIilcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZW1pdERlbGVnYXRlRXZlbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSwgZXZlbnRPYmopIHtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICAgIC8vIOS6i+S7tuWnlOaJmOeahOW9ouW8jyBuYW1lOnR5cGVcbiAgICAgICAgdmFyIGV2ZW50TmFtZSA9IG5hbWUgKyBERUxFR0FUSU9OX1NQTElUICsgZXZlbnRPYmoudHlwZTtcbiAgICAgICAgaWYgKGV2ZW50c1tldmVudE5hbWVdIHx8IGV2ZW50c1tXSUxEQ0FSRF0pIHtcbiAgICAgICAgICAgIC8vIOWvueS6jumAmumFjeespiAq77yM5LqL5Lu25ZCN56ewID0g5aeU5omY5LqL5Lu25ZCN56ewXG4gICAgICAgICAgICBldmVudE9iai5uYW1lID0gZXZlbnROYW1lO1xuICAgICAgICAgICAgZXZlbnRPYmouY3VycmVudFRhcmdldCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBldmVudE9iai5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7XG4gICAgICAgICAgICAvLyDlsIblp5TmiZjkuovku7bnmoTnm5HlkKzlr7nosaEgZGVsZWdhdGVPYmplY3Qg5oyC6L295Yiw5LqL5Lu25a+56LGh5LiKXG4gICAgICAgICAgICBldmVudE9iai5kZWxlZ2F0ZU9iamVjdCA9IGVsZW1lbnQuZ2V0KCdkZWxlZ2F0ZU9iamVjdCcpO1xuICAgICAgICAgICAgdGhpcy5lbWl0KGV2ZW50TmFtZSwgZXZlbnRPYmopO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vliqjlhYPntKBcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNsYXRlWCDmsLTlubPnp7vliqjot53nprtcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNsYXRlWSDlnoLnm7Tnp7vliqjot53nprtcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVkpIHtcbiAgICAgICAgaWYgKHRyYW5zbGF0ZVggPT09IHZvaWQgMCkgeyB0cmFuc2xhdGVYID0gMDsgfVxuICAgICAgICBpZiAodHJhbnNsYXRlWSA9PT0gdm9pZCAwKSB7IHRyYW5zbGF0ZVkgPSAwOyB9XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICB2YXIgbmV3TWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sndCcsIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVldXSk7XG4gICAgICAgIHRoaXMuc2V0TWF0cml4KG5ld01hdHJpeCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog56e75Yqo5YWD57Sg5Yiw55uu5qCH5L2N572uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFgg55uu5qCH5L2N572u55qE5rC05bmz5Z2Q5qCHXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFgg55uu5qCH5L2N572u55qE5Z6C55u05Z2Q5qCHXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAodGFyZ2V0WCwgdGFyZ2V0WSkge1xuICAgICAgICB2YXIgeCA9IHRoaXMuYXR0cigneCcpIHx8IDA7XG4gICAgICAgIHZhciB5ID0gdGhpcy5hdHRyKCd5JykgfHwgMDtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUodGFyZ2V0WCAtIHgsIHRhcmdldFkgLSB5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vliqjlhYPntKDliLDnm67moIfkvY3nva7vvIznrYnku7fkuo4gbW92ZSDmlrnms5XjgILnlLHkuo4gbW92ZVRvIOeahOivreS5ieaAp+abtOW8uu+8jOWboOatpOWcqOaWh+aho+S4reaOqOiNkOS9v+eUqCBtb3ZlVG8g5pa55rOVXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFgg55uu5qCH5L2N572u55qEIHgg6L205Z2Q5qCHXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFkg55uu5qCH5L2N572u55qEIHkg6L205Z2Q5qCHXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLm1vdmVUbyA9IGZ1bmN0aW9uICh0YXJnZXRYLCB0YXJnZXRZKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vdmUodGFyZ2V0WCwgdGFyZ2V0WSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnvKnmlL7lhYPntKBcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9YIOawtOW5s+e8qeaUvuavlOS+i1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1kg5Z6C55u057yp5pS+5q+U5L6LXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHJhdGlvWCwgcmF0aW9ZKSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICB2YXIgbmV3TWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncycsIHJhdGlvWCwgcmF0aW9ZIHx8IHJhdGlvWF1dKTtcbiAgICAgICAgdGhpcy5zZXRNYXRyaXgobmV3TWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDku6XnlLvluIPlt6bkuIrop5IgKDAsIDApIOS4uuS4reW/g+aXi+i9rOWFg+e0oFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpYW4g5peL6L2s6KeS5bqmKOW8p+W6puWAvClcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucm90YXRlID0gZnVuY3Rpb24gKHJhZGlhbikge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3InLCByYWRpYW5dXSk7XG4gICAgICAgIHRoaXMuc2V0TWF0cml4KG5ld01hdHJpeCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Lul6LW35aeL54K55Li65Lit5b+D5peL6L2s5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGlhbiDml4vovazop5LluqYo5byn5bqm5YC8KVxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5yb3RhdGVBdFN0YXJ0ID0gZnVuY3Rpb24gKHJvdGF0ZSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtcbiAgICAgICAgICAgIFsndCcsIC14LCAteV0sXG4gICAgICAgICAgICBbJ3InLCByb3RhdGVdLFxuICAgICAgICAgICAgWyd0JywgeCwgeV0sXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOS7peS7u+aEj+eCuSAoeCwgeSkg5Li65Lit5b+D5peL6L2s5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGlhbiDml4vovazop5LluqYo5byn5bqm5YC8KVxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5yb3RhdGVBdFBvaW50ID0gZnVuY3Rpb24gKHgsIHksIHJvdGF0ZSkge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtcbiAgICAgICAgICAgIFsndCcsIC14LCAteV0sXG4gICAgICAgICAgICBbJ3InLCByb3RhdGVdLFxuICAgICAgICAgICAgWyd0JywgeCwgeV0sXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBFbGVtZW50O1xufShCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBFbGVtZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxlbWVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/element.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/abstract/group.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/abstract/group.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ \"./node_modules/@antv/g-base/esm/abstract/container.js\");\n\n\nvar AbstractGroup = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGroup);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9ncm91cC5qcz9mODNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNFO0FBQ3BDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsa0RBQVM7QUFDSSw0RUFBYSxFQUFDO0FBQzdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3QvZ3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBDb250YWluZXIgZnJvbSAnLi9jb250YWluZXInO1xudmFyIEFic3RyYWN0R3JvdXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFic3RyYWN0R3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQWJzdHJhY3RHcm91cCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBYnN0cmFjdEdyb3VwLnByb3RvdHlwZS5pc0dyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEFic3RyYWN0R3JvdXAucHJvdG90eXBlLmlzRW50aXR5R3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEFic3RyYWN0R3JvdXAucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2xvbmUgPSBfc3VwZXIucHJvdG90eXBlLmNsb25lLmNhbGwodGhpcyk7XG4gICAgICAgIC8vIOiOt+WPluaehOmAoOWHveaVsFxuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgY2xvbmUuYWRkKGNoaWxkLmNsb25lKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9O1xuICAgIHJldHVybiBBYnN0cmFjdEdyb3VwO1xufShDb250YWluZXIpKTtcbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0R3JvdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/group.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/abstract/shape.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/abstract/shape.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/@antv/g-base/esm/util/matrix.js\");\n\n\n\nvar AbstractShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur, shadowBlur = _a === void 0 ? 0 : _a, _b = attrs.shadowOffsetX, shadowOffsetX = _b === void 0 ? 0 : _b, _c = attrs.shadowOffsetY, shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0], refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(_element__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractShape);\n//# sourceMappingURL=shape.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9zaGFwZS5qcz8zMWExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0Y7QUFDYztBQUM5QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixLQUFLO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpRUFBWTtBQUN0QywyQkFBMkIsaUVBQVk7QUFDdkMsNkJBQTZCLGlFQUFZO0FBQ3pDLDhCQUE4QixpRUFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkIsZ0JBQWdCLE9BQU87QUFDdkIsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxnREFBTztBQUNNLDRFQUFhLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IG11bHRpcGx5VmVjMiB9IGZyb20gJy4uL3V0aWwvbWF0cml4JztcbnZhciBBYnN0cmFjdFNoYXBlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBYnN0cmFjdFNoYXBlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFic3RyYWN0U2hhcGUoY2ZnKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjZmcpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8vIOaYr+WQpuWcqOWMheWbtOebkuWGhVxuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLl9pc0luQkJveCA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG4gICAgICAgIHJldHVybiBiYm94Lm1pblggPD0gcmVmWCAmJiBiYm94Lm1heFggPj0gcmVmWCAmJiBiYm94Lm1pblkgPD0gcmVmWSAmJiBiYm94Lm1heFkgPj0gcmVmWTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWxnuaAp+abtOaUueWQjumcgOimgeWBmueahOS6i+aDhVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAcGFyYW0ge1NoYXBlQXR0cnN9IHRhcmdldEF0dHJzIOa4suafk+eahOWbvuWDj+WxnuaAp1xuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmFmdGVyQXR0cnNDaGFuZ2UgPSBmdW5jdGlvbiAodGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlLmNhbGwodGhpcywgdGFyZ2V0QXR0cnMpO1xuICAgICAgICB0aGlzLmNsZWFyQ2FjaGVCQm94KCk7XG4gICAgfTtcbiAgICAvLyDorqHnrpfljIXlm7Tnm5Lml7bvvIzpnIDopoHnvJPlrZjvvIzov5nmmK/kuIDkuKrpq5jpopHnmoTmk43kvZxcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYmJveCA9IHRoaXMuY2ZnLmJib3g7XG4gICAgICAgIGlmICghYmJveCkge1xuICAgICAgICAgICAgYmJveCA9IHRoaXMuY2FsY3VsYXRlQkJveCgpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2Jib3gnLCBiYm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmJveDtcbiAgICB9O1xuICAgIC8vIOiuoeeul+ebuOWvueS6jueUu+W4g+eahOWMheWbtOebklxuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXNCQm94ID0gdGhpcy5jZmcuY2FudmFzQkJveDtcbiAgICAgICAgaWYgKCFjYW52YXNCQm94KSB7XG4gICAgICAgICAgICBjYW52YXNCQm94ID0gdGhpcy5jYWxjdWxhdGVDYW52YXNCQm94KCk7XG4gICAgICAgICAgICB0aGlzLnNldCgnY2FudmFzQkJveCcsIGNhbnZhc0JCb3gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW52YXNCQm94O1xuICAgIH07XG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuYXBwbHlNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYXBwbHlNYXRyaXguY2FsbCh0aGlzLCBtYXRyaXgpO1xuICAgICAgICAvLyDmuIXnkIbmjonnvJPlrZjnmoTljIXlm7Tnm5JcbiAgICAgICAgdGhpcy5zZXQoJ2NhbnZhc0JCb3gnLCBudWxsKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiuoeeul+ebuOWvueS6jueUu+W4g+eahOWMheWbtOebku+8jOm7mOiupOetieWQjOS6jiBiYm94XG4gICAgICogQHJldHVybiB7QkJveH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuY2FsY3VsYXRlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJib3ggPSB0aGlzLmdldEJCb3goKTtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICB2YXIgbWluWCA9IGJib3gubWluWCwgbWluWSA9IGJib3gubWluWSwgbWF4WCA9IGJib3gubWF4WCwgbWF4WSA9IGJib3gubWF4WTtcbiAgICAgICAgaWYgKHRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICB2YXIgdG9wTGVmdCA9IG11bHRpcGx5VmVjMih0b3RhbE1hdHJpeCwgW2Jib3gubWluWCwgYmJveC5taW5ZXSk7XG4gICAgICAgICAgICB2YXIgdG9wUmlnaHQgPSBtdWx0aXBseVZlYzIodG90YWxNYXRyaXgsIFtiYm94Lm1heFgsIGJib3gubWluWV0pO1xuICAgICAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSBtdWx0aXBseVZlYzIodG90YWxNYXRyaXgsIFtiYm94Lm1pblgsIGJib3gubWF4WV0pO1xuICAgICAgICAgICAgdmFyIGJvdHRvbVJpZ2h0ID0gbXVsdGlwbHlWZWMyKHRvdGFsTWF0cml4LCBbYmJveC5tYXhYLCBiYm94Lm1heFldKTtcbiAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbih0b3BMZWZ0WzBdLCB0b3BSaWdodFswXSwgYm90dG9tTGVmdFswXSwgYm90dG9tUmlnaHRbMF0pO1xuICAgICAgICAgICAgbWF4WCA9IE1hdGgubWF4KHRvcExlZnRbMF0sIHRvcFJpZ2h0WzBdLCBib3R0b21MZWZ0WzBdLCBib3R0b21SaWdodFswXSk7XG4gICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4odG9wTGVmdFsxXSwgdG9wUmlnaHRbMV0sIGJvdHRvbUxlZnRbMV0sIGJvdHRvbVJpZ2h0WzFdKTtcbiAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heCh0b3BMZWZ0WzFdLCB0b3BSaWdodFsxXSwgYm90dG9tTGVmdFsxXSwgYm90dG9tUmlnaHRbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIC8vIOWmguaenOWtmOWcqCBzaGFkb3cg5YiZ6K6h566XIHNoYWRvd1xuICAgICAgICBpZiAoYXR0cnMuc2hhZG93Q29sb3IpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IGF0dHJzLnNoYWRvd0JsdXIsIHNoYWRvd0JsdXIgPSBfYSA9PT0gdm9pZCAwID8gMCA6IF9hLCBfYiA9IGF0dHJzLnNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFggPSBfYiA9PT0gdm9pZCAwID8gMCA6IF9iLCBfYyA9IGF0dHJzLnNoYWRvd09mZnNldFksIHNoYWRvd09mZnNldFkgPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jO1xuICAgICAgICAgICAgdmFyIHNoYWRvd0xlZnQgPSBtaW5YIC0gc2hhZG93Qmx1ciArIHNoYWRvd09mZnNldFg7XG4gICAgICAgICAgICB2YXIgc2hhZG93UmlnaHQgPSBtYXhYICsgc2hhZG93Qmx1ciArIHNoYWRvd09mZnNldFg7XG4gICAgICAgICAgICB2YXIgc2hhZG93VG9wID0gbWluWSAtIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRZO1xuICAgICAgICAgICAgdmFyIHNoYWRvd0JvdHRvbSA9IG1heFkgKyBzaGFkb3dCbHVyICsgc2hhZG93T2Zmc2V0WTtcbiAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCBzaGFkb3dMZWZ0KTtcbiAgICAgICAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCBzaGFkb3dSaWdodCk7XG4gICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgc2hhZG93VG9wKTtcbiAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCBzaGFkb3dCb3R0b20pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgIG1pblg6IG1pblgsXG4gICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgICAgIG1heFk6IG1heFksXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOa4heeQhue8k+WtmOeahCBiYm94XG4gICAgICovXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuY2xlYXJDYWNoZUJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0KCdiYm94JywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCdjYW52YXNCQm94JywgbnVsbCk7XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5pc0NsaXBTaGFwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdpc0NsaXBTaGFwZScpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOS4jeWQjOeahOWbvuW9ouiHquW3seWunueOsOaYr+WQpuWcqOWbvuW9ouWGhemDqOeahOmAu+i+ke+8jOimgeWIpOaWrei+ueWSjOWhq+WFheWMuuWfn1xuICAgICAqIEBwYXJhbSAge251bWJlcn0gIHJlZlgg55u45a+55LqO5Zu+5b2i55qE5Z2Q5qCHIHhcbiAgICAgKiBAcGFyYW0gIHtudW1iZXJ9ICByZWZZIOebuOWvueS6juWbvuW9oueahOWdkOaghyBZXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0g54K55piv5ZCm5Zyo5Zu+5b2i5YaF6YOoXG4gICAgICovXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuaXNJblNoYXBlID0gZnVuY3Rpb24gKHJlZlgsIHJlZlkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5LuF5LuF5L2/55SoIEJCb3gg5qOA5rWL5bCx5Y+v5Lul5Yik5a6a5ou+5Y+W5Yiw5Zu+5b2iXG4gICAgICog6buY6K6k5pivIGZhbHNl77yM5L2G5piv5pyJ5Lqb5Zu+5b2i5L6L5aaCIGltYWdl44CBbWFya2VyIOetiemDveWPr+ebtOaOpeS9v+eUqCBCQm94IOeahOajgOa1i+iAjOS4jemcgOimgeS9v+eUqOWbvuW9ouaLvuWPllxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IOS7heS7heS9v+eUqCBCQm94IOi/m+ihjOaLvuWPllxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLy8g5LiN5ZCM55qEIFNoYXBlIOWQhOiHquWunueOsFxuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmlzSGl0ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdzdGFydEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIGVuZEFycm93U2hhcGUgPSB0aGlzLmdldCgnZW5kQXJyb3dTaGFwZScpO1xuICAgICAgICB2YXIgdmVjID0gW3gsIHksIDFdO1xuICAgICAgICB2ZWMgPSB0aGlzLmludmVydEZyb21NYXRyaXgodmVjKTtcbiAgICAgICAgdmFyIHJlZlggPSB2ZWNbMF0sIHJlZlkgPSB2ZWNbMV07XG4gICAgICAgIHZhciBpbkJCb3ggPSB0aGlzLl9pc0luQkJveChyZWZYLCByZWZZKTtcbiAgICAgICAgLy8g6Lez6L+H5Zu+5b2i55qE5ou+5Y+W77yM5Zyo5p+Q5Lqb5Zu+5b2i5Lit5Y+v5Lul55yB55Wl5LiA5YCN55qE5qOA5rWL5oiQ5pysXG4gICAgICAgIGlmICh0aGlzLmlzT25seUhpdEJveCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5CQm94O1xuICAgICAgICB9XG4gICAgICAgIC8vIOiiq+ijgeWHj+aOieeahOWSjOS4jeWcqOWMheWbtOebkuWGheeahOS4jei/m+ihjOiuoeeul1xuICAgICAgICBpZiAoaW5CQm94ICYmICF0aGlzLmlzQ2xpcHBlZChyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgLy8g5a+55Zu+5b2i6L+b6KGM5ou+5Y+W5Yik5patXG4gICAgICAgICAgICBpZiAodGhpcy5pc0luU2hhcGUocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWvuei1t+Wni+eureWktOi/m+ihjOaLvuWPluWIpOaWrVxuICAgICAgICAgICAgaWYgKHN0YXJ0QXJyb3dTaGFwZSAmJiBzdGFydEFycm93U2hhcGUuaXNIaXQocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWvuee7k+adn+eureWktOi/m+ihjOaLvuWPluWIpOaWrVxuICAgICAgICAgICAgaWYgKGVuZEFycm93U2hhcGUgJiYgZW5kQXJyb3dTaGFwZS5pc0hpdChyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBBYnN0cmFjdFNoYXBlO1xufShFbGVtZW50KSk7XG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdFNoYXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hhcGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/shape.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/animate/timeline.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/animate/timeline.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/d3-timer/src/index.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g-base/esm/util/path.js\");\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/color */ \"./node_modules/@antv/g-base/esm/util/color.js\");\n\n\n\n // 目前整体动画只需要数值和数组的差值计算\n\n\nvar IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape, animation, ratio) {\n var cProps = {}; // 此刻属性\n var fromAttrs = animation.fromAttrs, toAttrs = animation.toAttrs;\n if (shape.destroyed) {\n return;\n }\n var interf; // 差值函数\n for (var k in toAttrs) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEqual\"])(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n var toPath = toAttrs[k];\n var fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]); // 终点状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]); // 起始状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"fillPathByDiff\"](fromPath, toPath);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n }\n else if (!animation.pathFormatted) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (var i = 0; i < toPath.length; i++) {\n var toPathPoint = toPath[i];\n var fromPathPoint = fromPath[i];\n var cPathPoint = [];\n for (var j = 0; j < toPathPoint.length; j++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(toPathPoint[j]) && fromPathPoint && Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(fromPathPoint[j])) {\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n }\n else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n }\n else if (k === 'matrix') {\n /*\n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n var matrixFn = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolateArray\"])(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n var currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n }\n else if (Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isColorProp\"])(k) && Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isGradientColor\"])(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n }\n else if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape, animation, elapsed) {\n var startTime = animation.startTime, delay = animation.delay;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n var ratio;\n var duration = animation.duration;\n var easing = animation.easing;\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = (elapsed % duration) / duration;\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n }\n else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n var attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n }\n else {\n _update(shape, animation, ratio);\n }\n return false;\n}\nvar Timeline = /** @class */ (function () {\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n function Timeline(canvas) {\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n this.animators = [];\n /**\n * 当前时间\n * @type {number}\n */\n this.current = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n this.timer = null;\n this.canvas = canvas;\n }\n /**\n * 初始化定时器\n */\n Timeline.prototype.initTimer = function () {\n var _this = this;\n var isFinished = false;\n var shape;\n var animations;\n var animation;\n this.timer = d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"](function (elapsed) {\n _this.current = elapsed;\n if (_this.animators.length > 0) {\n for (var i = _this.animators.length - 1; i >= 0; i--) {\n shape = _this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n _this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (var j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n _this.removeAnimator(i);\n }\n }\n var autoDraw = _this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n _this.canvas.draw();\n }\n }\n });\n };\n /**\n * 增加动画元素\n */\n Timeline.prototype.addAnimator = function (shape) {\n this.animators.push(shape);\n };\n /**\n * 移除动画元素\n */\n Timeline.prototype.removeAnimator = function (index) {\n this.animators.splice(index, 1);\n };\n /**\n * 是否有动画在执行\n */\n Timeline.prototype.isAnimating = function () {\n return !!this.animators.length;\n };\n /**\n * 停止定时器\n */\n Timeline.prototype.stop = function () {\n if (this.timer) {\n this.timer.stop();\n }\n };\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n Timeline.prototype.stopAllAnimations = function (toEnd) {\n if (toEnd === void 0) { toEnd = true; }\n this.animators.forEach(function (animator) {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n };\n /**\n * 获取当前时间\n */\n Timeline.prototype.getTime = function () {\n return this.current;\n };\n return Timeline;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Timeline);\n//# sourceMappingURL=timeline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hbmltYXRlL3RpbWVsaW5lLmpzPzU5YzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkQ7QUFDdkI7QUFDRjtBQUM2QjtBQUN0QjtBQUNvQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsT0FBTztBQUNsQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLGFBQWEsMERBQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMERBQXdCLGFBQWE7QUFDbEUsK0JBQStCLDBEQUF3QixlQUFlO0FBQ3RFLCtCQUErQix5REFBdUI7QUFDdEQsK0JBQStCLHFEQUFtQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBd0I7QUFDckQsK0JBQStCLDBEQUF3QjtBQUN2RCwrQkFBK0IscURBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsbUJBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0I7QUFDM0QsNEJBQTRCLDJEQUFRLHFDQUFxQywyREFBUTtBQUNqRixxQ0FBcUMsa0VBQVc7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1RUFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtEQUFXLE9BQU8sbUVBQWU7QUFDdEQ7QUFDQTtBQUNBLHNCQUFzQiw2REFBVTtBQUNoQztBQUNBLHlCQUF5QixrRUFBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsVUFBVTtBQUNyQixXQUFXLE9BQU87QUFDbEIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvQ0FBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9DQUFNO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOENBQWE7QUFDbEM7QUFDQTtBQUNBLHdEQUF3RCxRQUFRO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsUUFBUTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYW5pbWF0ZS90aW1lbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwsIGlzTnVtYmVyLCBpc0Z1bmN0aW9uIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgKiBhcyBkM1RpbWVyIGZyb20gJ2QzLXRpbWVyJztcbmltcG9ydCAqIGFzIGQzRWFzZSBmcm9tICdkMy1lYXNlJztcbmltcG9ydCB7IGludGVycG9sYXRlLCBpbnRlcnBvbGF0ZUFycmF5IH0gZnJvbSAnZDMtaW50ZXJwb2xhdGUnOyAvLyDnm67liY3mlbTkvZPliqjnlLvlj6rpnIDopoHmlbDlgLzlkozmlbDnu4TnmoTlt67lgLzorqHnrpdcbmltcG9ydCAqIGFzIFBhdGhVdGlsIGZyb20gJy4uL3V0aWwvcGF0aCc7XG5pbXBvcnQgeyBpc0NvbG9yUHJvcCwgaXNHcmFkaWVudENvbG9yIH0gZnJvbSAnLi4vdXRpbC9jb2xvcic7XG52YXIgSURFTlRJVFlfTUFUUklYID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuLyoqXG4gKiDkvb/nlKggcmF0aW8g6L+b6KGM5o+S5YC86K6h566X5p2l5pu05paw5bGe5oCnXG4gKiBAcGFyYW0ge0lFbGVtZW50fSAgc2hhcGUgICAg5YWD57SgXG4gKiBAcGFyYW0ge0FuaW1hdGlvbn0gYW5pbWF0aW9uIOWKqOeUu1xuICogQHBhcmFtIHtudW1iZXJ9ICAgIHJhdGlvICAgIOavlOS+i1xuICogQHJldHVybiB7Ym9vbGVhbn0gIOWKqOeUu+aYr+WQpuaJp+ihjOWujOaIkFxuICovXG5mdW5jdGlvbiBfdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIHJhdGlvKSB7XG4gICAgdmFyIGNQcm9wcyA9IHt9OyAvLyDmraTliLvlsZ7mgKdcbiAgICB2YXIgZnJvbUF0dHJzID0gYW5pbWF0aW9uLmZyb21BdHRycywgdG9BdHRycyA9IGFuaW1hdGlvbi50b0F0dHJzO1xuICAgIGlmIChzaGFwZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgaW50ZXJmOyAvLyAg5beu5YC85Ye95pWwXG4gICAgZm9yICh2YXIgayBpbiB0b0F0dHJzKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChmcm9tQXR0cnNba10sIHRvQXR0cnNba10pKSB7XG4gICAgICAgICAgICBpZiAoayA9PT0gJ3BhdGgnKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvUGF0aCA9IHRvQXR0cnNba107XG4gICAgICAgICAgICAgICAgdmFyIGZyb21QYXRoID0gZnJvbUF0dHJzW2tdO1xuICAgICAgICAgICAgICAgIGlmICh0b1BhdGgubGVuZ3RoID4gZnJvbVBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyh0b0F0dHJzW2tdKTsgLy8g57uI54K554q25oCBXG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoID0gUGF0aFV0aWwucGFyc2VQYXRoU3RyaW5nKGZyb21BdHRyc1trXSk7IC8vIOi1t+Wni+eKtuaAgVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLmZpbGxQYXRoQnlEaWZmKGZyb21QYXRoLCB0b1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLmZvcm1hdFBhdGgoZnJvbVBhdGgsIHRvUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5mcm9tQXR0cnMucGF0aCA9IGZyb21QYXRoO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24udG9BdHRycy5wYXRoID0gdG9QYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghYW5pbWF0aW9uLnBhdGhGb3JtYXR0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9QYXRoID0gUGF0aFV0aWwucGFyc2VQYXRoU3RyaW5nKHRvQXR0cnNba10pO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyhmcm9tQXR0cnNba10pO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLmZvcm1hdFBhdGgoZnJvbVBhdGgsIHRvUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5mcm9tQXR0cnMucGF0aCA9IGZyb21QYXRoO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24udG9BdHRycy5wYXRoID0gdG9QYXRoO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24ucGF0aEZvcm1hdHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNQcm9wc1trXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9QYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0b1BhdGhQb2ludCA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZyb21QYXRoUG9pbnQgPSBmcm9tUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNQYXRoUG9pbnQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0b1BhdGhQb2ludC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKHRvUGF0aFBvaW50W2pdKSAmJiBmcm9tUGF0aFBvaW50ICYmIGlzTnVtYmVyKGZyb21QYXRoUG9pbnRbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmID0gaW50ZXJwb2xhdGUoZnJvbVBhdGhQb2ludFtqXSwgdG9QYXRoUG9pbnRbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNQYXRoUG9pbnQucHVzaChpbnRlcmYocmF0aW8pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNQYXRoUG9pbnQucHVzaCh0b1BhdGhQb2ludFtqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY1Byb3BzW2tdLnB1c2goY1BhdGhQb2ludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoayA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICDlr7nnn6npmLXov5vooYzmj5LlgLzml7bvvIzpnIDopoHkv53or4Hnn6npmLXkuI3kuLrnqbrvvIzkuLrnqbrliJnkvb/nlKjljZXkvY3nn6npmLVcbiAgICAgICAgICAgICAgICAgVE9ETzog5LqM57u05ZKM5LiJ57u05Zy65pmv5LiL5Y2V5L2N55+p6Zi15LiN5ZCM77yM5LmL5ZCOIFdlYkdMIOeJiOmcgOimgeWBmui/m+S4gOatpeWkhOeQhlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHZhciBtYXRyaXhGbiA9IGludGVycG9sYXRlQXJyYXkoZnJvbUF0dHJzW2tdIHx8IElERU5USVRZX01BVFJJWCwgdG9BdHRyc1trXSB8fCBJREVOVElUWV9NQVRSSVgpO1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50TWF0cml4ID0gbWF0cml4Rm4ocmF0aW8pO1xuICAgICAgICAgICAgICAgIGNQcm9wc1trXSA9IGN1cnJlbnRNYXRyaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0NvbG9yUHJvcChrKSAmJiBpc0dyYWRpZW50Q29sb3IodG9BdHRyc1trXSkpIHtcbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSB0b0F0dHJzW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzRnVuY3Rpb24odG9BdHRyc1trXSkpIHtcbiAgICAgICAgICAgICAgICAvLyDpnZ7lh73mlbDnsbvlnovnmoTlgLzmiY3og73lgZrmj5LlgLxcbiAgICAgICAgICAgICAgICBpbnRlcmYgPSBpbnRlcnBvbGF0ZShmcm9tQXR0cnNba10sIHRvQXR0cnNba10pO1xuICAgICAgICAgICAgICAgIGNQcm9wc1trXSA9IGludGVyZihyYXRpbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hhcGUuYXR0cihjUHJvcHMpO1xufVxuLyoqXG4gKiDmoLnmja7oh6rlrprkuYnluKfliqjnlLvlh73mlbAgb25GcmFtZSDmnaXmm7TmlrDlsZ7mgKdcbiAqIEBwYXJhbSB7SUVsZW1lbnR9ICBzaGFwZSAgICDlhYPntKBcbiAqIEBwYXJhbSB7QW5pbWF0aW9ufSBhbmltYXRpb24g5Yqo55S7XG4gKiBAcGFyYW0ge251bWJlcn0gICAgZWxhcHNlZCAg5Yqo55S75omn6KGM5pe26Ze0KOavq+enkilcbiAqIEByZXR1cm4ge2Jvb2xlYW59ICDliqjnlLvmmK/lkKbmiafooYzlrozmiJBcbiAqL1xuZnVuY3Rpb24gdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIGVsYXBzZWQpIHtcbiAgICB2YXIgc3RhcnRUaW1lID0gYW5pbWF0aW9uLnN0YXJ0VGltZSwgZGVsYXkgPSBhbmltYXRpb24uZGVsYXk7XG4gICAgLy8g5aaC5p6c6L+Y5rKh5pyJ5byA5aeL5omn6KGM5oiW5pqC5YGc77yM5YWI5LiN5pu05pawXG4gICAgaWYgKGVsYXBzZWQgPCBzdGFydFRpbWUgKyBkZWxheSB8fCBhbmltYXRpb24uX3BhdXNlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciByYXRpbztcbiAgICB2YXIgZHVyYXRpb24gPSBhbmltYXRpb24uZHVyYXRpb247XG4gICAgdmFyIGVhc2luZyA9IGFuaW1hdGlvbi5lYXNpbmc7XG4gICAgLy8g5bey5omn6KGM5pe26Ze0XG4gICAgZWxhcHNlZCA9IGVsYXBzZWQgLSBzdGFydFRpbWUgLSBhbmltYXRpb24uZGVsYXk7XG4gICAgaWYgKGFuaW1hdGlvbi5yZXBlYXQpIHtcbiAgICAgICAgLy8g5aaC5p6c5Yqo55S76YeN5aSN5omn6KGM77yM5YiZIGVsYXBzZWQgPiBkdXJhdGlvbu+8jOiuoeeulyByYXRpbyDml7bpnIDlj5bmqKFcbiAgICAgICAgcmF0aW8gPSAoZWxhcHNlZCAlIGR1cmF0aW9uKSAvIGR1cmF0aW9uO1xuICAgICAgICByYXRpbyA9IGQzRWFzZVtlYXNpbmddKHJhdGlvKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJhdGlvID0gZWxhcHNlZCAvIGR1cmF0aW9uO1xuICAgICAgICBpZiAocmF0aW8gPCAxKSB7XG4gICAgICAgICAgICAvLyDliqjnlLvmnKrmiafooYzlroxcbiAgICAgICAgICAgIHJhdGlvID0gZDNFYXNlW2Vhc2luZ10ocmF0aW8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g5Yqo55S75bey5omn6KGM5a6MXG4gICAgICAgICAgICBpZiAoYW5pbWF0aW9uLm9uRnJhbWUpIHtcbiAgICAgICAgICAgICAgICBzaGFwZS5hdHRyKGFuaW1hdGlvbi5vbkZyYW1lKDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNoYXBlLmF0dHIoYW5pbWF0aW9uLnRvQXR0cnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFuaW1hdGlvbi5vbkZyYW1lKSB7XG4gICAgICAgIHZhciBhdHRycyA9IGFuaW1hdGlvbi5vbkZyYW1lKHJhdGlvKTtcbiAgICAgICAgc2hhcGUuYXR0cihhdHRycyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBfdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIHJhdGlvKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxudmFyIFRpbWVsaW5lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIOaXtumXtOi9tOaehOmAoOWHveaVsO+8jOS+nei1luS6jueUu+W4g1xuICAgICAqIEBwYXJhbSB7fVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFRpbWVsaW5lKGNhbnZhcykge1xuICAgICAgICAvKipcbiAgICAgICAgICog5omn6KGM5Yqo55S755qE5YWD57Sg5YiX6KGoXG4gICAgICAgICAqIEB0eXBlIHtJRWxlbWVudFtdfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hbmltYXRvcnMgPSBbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOW9k+WJjeaXtumXtFxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50ID0gMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWumuaXtuWZqFxuICAgICAgICAgKiBAdHlwZSB7ZDNUaW1lci5UaW1lcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyW5a6a5pe25ZmoXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLmluaXRUaW1lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHNoYXBlO1xuICAgICAgICB2YXIgYW5pbWF0aW9ucztcbiAgICAgICAgdmFyIGFuaW1hdGlvbjtcbiAgICAgICAgdGhpcy50aW1lciA9IGQzVGltZXIudGltZXIoZnVuY3Rpb24gKGVsYXBzZWQpIHtcbiAgICAgICAgICAgIF90aGlzLmN1cnJlbnQgPSBlbGFwc2VkO1xuICAgICAgICAgICAgaWYgKF90aGlzLmFuaW1hdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IF90aGlzLmFuaW1hdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IF90aGlzLmFuaW1hdG9yc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5bey57uP6KKr6ZSA5q+B77yM55u05o6l56e75Ye66Zif5YiXXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmVBbmltYXRvcihpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hhcGUuaXNBbmltYXRlUGF1c2VkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMgPSBzaGFwZS5nZXQoJ2FuaW1hdGlvbnMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBhbmltYXRpb25zLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIGVsYXBzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuc3BsaWNlKGosIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb24uY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5jYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQW5pbWF0b3IoaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGF1dG9EcmF3ID0gX3RoaXMuY2FudmFzLmdldCgnYXV0b0RyYXcnKTtcbiAgICAgICAgICAgICAgICAvLyDpnZ7oh6rliqjmuLLmn5PmqKHlvI/kuIvvvIzmiYvliqjosIPnlKggY2FudmFzLmRyYXcoKSDph43mlrDmuLLmn5NcbiAgICAgICAgICAgICAgICBpZiAoIWF1dG9EcmF3KSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmNhbnZhcy5kcmF3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWinuWKoOWKqOeUu+WFg+e0oFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5hZGRBbmltYXRvciA9IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICB0aGlzLmFuaW1hdG9ycy5wdXNoKHNoYXBlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOenu+mZpOWKqOeUu+WFg+e0oFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5yZW1vdmVBbmltYXRvciA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB0aGlzLmFuaW1hdG9ycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5pyJ5Yqo55S75Zyo5omn6KGMXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLmlzQW5pbWF0aW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmFuaW1hdG9ycy5sZW5ndGg7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlgZzmraLlrprml7blmahcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIHRoaXMudGltZXIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlgZzmraLml7bpl7TovbTkuIrmiYDmnInlhYPntKDnmoTliqjnlLvvvIzlubbnva7nqbrliqjnlLvlhYPntKDliJfooahcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRvRW5kIOaYr+WQpuWIsOWKqOeUu+eahOacgOe7iOeKtuaAge+8jOeUqOadpemAj+S8oOe7meWKqOeUu+WFg+e0oOeahCBzdG9wQW5pbWF0ZSDmlrnms5VcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuc3RvcEFsbEFuaW1hdGlvbnMgPSBmdW5jdGlvbiAodG9FbmQpIHtcbiAgICAgICAgaWYgKHRvRW5kID09PSB2b2lkIDApIHsgdG9FbmQgPSB0cnVlOyB9XG4gICAgICAgIHRoaXMuYW5pbWF0b3JzLmZvckVhY2goZnVuY3Rpb24gKGFuaW1hdG9yKSB7XG4gICAgICAgICAgICBhbmltYXRvci5zdG9wQW5pbWF0ZSh0b0VuZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFuaW1hdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLmNhbnZhcy5kcmF3KCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3ml7bpl7RcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuZ2V0VGltZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudDtcbiAgICB9O1xuICAgIHJldHVybiBUaW1lbGluZTtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBUaW1lbGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWVsaW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/animate/timeline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/circle.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/circle.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var _a = shape.attr(), x = _a.x, y = _a.y, r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n});\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2NpcmNsZS5qcz83NTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIF9hID0gc2hhcGUuYXR0cigpLCB4ID0gX2EueCwgeSA9IF9hLnksIHIgPSBfYS5yO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggLSByLFxuICAgICAgICB5OiB5IC0gcixcbiAgICAgICAgd2lkdGg6IHIgKiAyLFxuICAgICAgICBoZWlnaHQ6IHIgKiAyLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/circle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/ellipse.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/ellipse.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, rx = attrs.rx, ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2VsbGlwc2UuanM/NDFmNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvZWxsaXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55LCByeCA9IGF0dHJzLnJ4LCByeSA9IGF0dHJzLnJ5O1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggLSByeCxcbiAgICAgICAgeTogeSAtIHJ5LFxuICAgICAgICB3aWR0aDogcnggKiAyLFxuICAgICAgICBoZWlnaHQ6IHJ5ICogMixcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxsaXBzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/ellipse.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/index.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/index.js ***!
\*****************************************************/
/*! exports provided: getBBoxMethod */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ \"./node_modules/@antv/g-base/esm/bbox/register.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_0__[\"getMethod\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g-base/esm/bbox/rect.js\");\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g-base/esm/bbox/circle.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-base/esm/bbox/polyline.js\");\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-base/esm/bbox/polygon.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \"./node_modules/@antv/g-base/esm/bbox/text.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g-base/esm/bbox/path.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-base/esm/bbox/line.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-base/esm/bbox/ellipse.js\");\n\n\n\n\n\n\n\n\n\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('rect', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('image', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]); // image 使用 rect 的包围盒计算\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('circle', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('marker', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]); // marker 使用 circle 的计算方案\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polyline', _polyline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polygon', _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('text', _text__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('path', _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('line', _line__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('ellipse', _ellipse__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2luZGV4LmpzP2Q0YzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ3ZCO0FBQ0k7QUFDSTtBQUNGO0FBQ047QUFDQTtBQUNBO0FBQ007QUFDaEMsMERBQVEsU0FBUyw2Q0FBSTtBQUNyQiwwREFBUSxVQUFVLDZDQUFJLEVBQUU7QUFDeEIsMERBQVEsV0FBVywrQ0FBTTtBQUN6QiwwREFBUSxXQUFXLCtDQUFNLEVBQUU7QUFDM0IsMERBQVEsYUFBYSxpREFBUTtBQUM3QiwwREFBUSxZQUFZLGdEQUFPO0FBQzNCLDBEQUFRLFNBQVMsNkNBQUk7QUFDckIsMERBQVEsU0FBUyw2Q0FBSTtBQUNyQiwwREFBUSxTQUFTLDZDQUFJO0FBQ3JCLDBEQUFRLFlBQVksZ0RBQU87QUFDVztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlciwgZ2V0TWV0aG9kIH0gZnJvbSAnLi9yZWdpc3Rlcic7XG5pbXBvcnQgcmVjdCBmcm9tICcuL3JlY3QnO1xuaW1wb3J0IGNpcmNsZSBmcm9tICcuL2NpcmNsZSc7XG5pbXBvcnQgcG9seWxpbmUgZnJvbSAnLi9wb2x5bGluZSc7XG5pbXBvcnQgcG9seWdvbiBmcm9tICcuL3BvbHlnb24nO1xuaW1wb3J0IHRleHQgZnJvbSAnLi90ZXh0JztcbmltcG9ydCBwYXRoIGZyb20gJy4vcGF0aCc7XG5pbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IGVsbGlwc2UgZnJvbSAnLi9lbGxpcHNlJztcbnJlZ2lzdGVyKCdyZWN0JywgcmVjdCk7XG5yZWdpc3RlcignaW1hZ2UnLCByZWN0KTsgLy8gaW1hZ2Ug5L2/55SoIHJlY3Qg55qE5YyF5Zu055uS6K6h566XXG5yZWdpc3RlcignY2lyY2xlJywgY2lyY2xlKTtcbnJlZ2lzdGVyKCdtYXJrZXInLCBjaXJjbGUpOyAvLyBtYXJrZXIg5L2/55SoIGNpcmNsZSDnmoTorqHnrpfmlrnmoYhcbnJlZ2lzdGVyKCdwb2x5bGluZScsIHBvbHlsaW5lKTtcbnJlZ2lzdGVyKCdwb2x5Z29uJywgcG9seWdvbik7XG5yZWdpc3RlcigndGV4dCcsIHRleHQpO1xucmVnaXN0ZXIoJ3BhdGgnLCBwYXRoKTtcbnJlZ2lzdGVyKCdsaW5lJywgbGluZSk7XG5yZWdpc3RlcignZWxsaXBzZScsIGVsbGlwc2UpO1xuZXhwb3J0IHsgZ2V0TWV0aG9kIGFzIGdldEJCb3hNZXRob2QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/line.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/line.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/bbox/util.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2xpbmUuanM/NTQ3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXdDO0FBQ3pCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0REFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZUFycm93QkJveCB9IGZyb20gJy4vdXRpbCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHgxID0gYXR0cnMueDEsIHkxID0gYXR0cnMueTEsIHgyID0gYXR0cnMueDIsIHkyID0gYXR0cnMueTI7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih4MSwgeDIpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgoeDEsIHgyKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHkxLCB5Mik7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh5MSwgeTIpO1xuICAgIHZhciBiYm94ID0ge1xuICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICBtYXhZOiBtYXhZLFxuICAgIH07XG4gICAgYmJveCA9IG1lcmdlQXJyb3dCQm94KHNoYXBlLCBiYm94KTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYm94Lm1pblgsXG4gICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgd2lkdGg6IGJib3gubWF4WCAtIGJib3gubWluWCxcbiAgICAgICAgaGVpZ2h0OiBiYm94Lm1heFkgLSBiYm94Lm1pblksXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/line.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/path.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/path.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/bbox/util.js\");\n\n\n\n\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Quad\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Cubic\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Arc\"].box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n xArr = xArr.filter(function (item) { return !Number.isNaN(item); });\n yArr = yArr.filter(function (item) { return !Number.isNaN(item); });\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(yArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(xArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n }\n else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n }\n else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint, currentPoint = segment.currentPoint, nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumberEqual\"])(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var path = attrs.path, stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"path2Segments\"])(path);\n var _a = getPathBox(segments, lineWidth), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3BhdGguanM/YjcwYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJGO0FBQzNDO0FBQ0s7QUFDYjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixpREFBUTtBQUM5QjtBQUNBO0FBQ0Esc0JBQXNCLGtEQUFTO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixnREFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDRCQUE0QixFQUFFO0FBQ3RFLHdDQUF3Qyw0QkFBNEIsRUFBRTtBQUN0RSxlQUFlLHNEQUFHO0FBQ2xCLGVBQWUsc0RBQUc7QUFDbEIsZUFBZSxzREFBRztBQUNsQixlQUFlLHNEQUFHO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQThCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxnRUFBYTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pELDRDQUE0QyxxRUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNERBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVhZCBhcyBRdWFkVXRpbCwgQ3ViaWMgYXMgQ3ViaWNVdGlsLCBBcmMgYXMgRWxsaXBzZUFyY1V0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgcGF0aDJTZWdtZW50cyB9IGZyb20gJ0BhbnR2L3BhdGgtdXRpbCc7XG5pbXBvcnQgeyBpc051bWJlckVxdWFsLCBtYXgsIG1pbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgbWVyZ2VBcnJvd0JCb3ggfSBmcm9tICcuL3V0aWwnO1xuZnVuY3Rpb24gZ2V0UGF0aEJveChzZWdtZW50cywgbGluZVdpZHRoKSB7XG4gICAgdmFyIHhBcnIgPSBbXTtcbiAgICB2YXIgeUFyciA9IFtdO1xuICAgIHZhciBzZWdtZW50c1dpdGhBbmdsZSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZ21lbnQgPSBzZWdtZW50c1tpXTtcbiAgICAgICAgdmFyIGN1cnJlbnRQb2ludCA9IHNlZ21lbnQuY3VycmVudFBvaW50LCBwYXJhbXMgPSBzZWdtZW50LnBhcmFtcywgcHJlUG9pbnQgPSBzZWdtZW50LnByZVBvaW50O1xuICAgICAgICB2YXIgYm94ID0gdm9pZCAwO1xuICAgICAgICBzd2l0Y2ggKHNlZ21lbnQuY29tbWFuZCkge1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgYm94ID0gUXVhZFV0aWwuYm94KHByZVBvaW50WzBdLCBwcmVQb2ludFsxXSwgcGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSwgcGFyYW1zWzRdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIGJveCA9IEN1YmljVXRpbC5ib3gocHJlUG9pbnRbMF0sIHByZVBvaW50WzFdLCBwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHBhcmFtc1s1XSwgcGFyYW1zWzZdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIHZhciBhcmNQYXJhbXMgPSBzZWdtZW50LmFyY1BhcmFtcztcbiAgICAgICAgICAgICAgICBib3ggPSBFbGxpcHNlQXJjVXRpbC5ib3goYXJjUGFyYW1zLmN4LCBhcmNQYXJhbXMuY3ksIGFyY1BhcmFtcy5yeCwgYXJjUGFyYW1zLnJ5LCBhcmNQYXJhbXMueFJvdGF0aW9uLCBhcmNQYXJhbXMuc3RhcnRBbmdsZSwgYXJjUGFyYW1zLmVuZEFuZ2xlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGN1cnJlbnRQb2ludFswXSk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGN1cnJlbnRQb2ludFsxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJveCkge1xuICAgICAgICAgICAgc2VnbWVudC5ib3ggPSBib3g7XG4gICAgICAgICAgICB4QXJyLnB1c2goYm94LngsIGJveC54ICsgYm94LndpZHRoKTtcbiAgICAgICAgICAgIHlBcnIucHVzaChib3gueSwgYm94LnkgKyBib3guaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGluZVdpZHRoICYmIChzZWdtZW50LmNvbW1hbmQgPT09ICdMJyB8fCBzZWdtZW50LmNvbW1hbmQgPT09ICdNJykgJiYgc2VnbWVudC5wcmVQb2ludCAmJiBzZWdtZW50Lm5leHRQb2ludCkge1xuICAgICAgICAgICAgc2VnbWVudHNXaXRoQW5nbGUucHVzaChzZWdtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBiYm94IGNhbGN1bGF0aW9uIHNob3VsZCBpZ25vcmUgTmFOIGZvciBwYXRoIGF0dHJpYnV0ZVxuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9nL2lzc3Vlcy8yMTBcbiAgICB4QXJyID0geEFyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuICFOdW1iZXIuaXNOYU4oaXRlbSk7IH0pO1xuICAgIHlBcnIgPSB5QXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gIU51bWJlci5pc05hTihpdGVtKTsgfSk7XG4gICAgdmFyIG1pblggPSBtaW4oeEFycik7XG4gICAgdmFyIG1pblkgPSBtaW4oeUFycik7XG4gICAgdmFyIG1heFggPSBtYXgoeEFycik7XG4gICAgdmFyIG1heFkgPSBtYXgoeUFycik7XG4gICAgaWYgKHNlZ21lbnRzV2l0aEFuZ2xlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzV2l0aEFuZ2xlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNXaXRoQW5nbGVbaV07XG4gICAgICAgIHZhciBjdXJyZW50UG9pbnQgPSBzZWdtZW50LmN1cnJlbnRQb2ludDtcbiAgICAgICAgdmFyIGV4dHJhID0gdm9pZCAwO1xuICAgICAgICBpZiAoY3VycmVudFBvaW50WzBdID09PSBtaW5YKSB7XG4gICAgICAgICAgICBleHRyYSA9IGdldEV4dHJhRnJvbVNlZ21lbnRXaXRoQW5nbGUoc2VnbWVudCwgbGluZVdpZHRoKTtcbiAgICAgICAgICAgIG1pblggPSBtaW5YIC0gZXh0cmEueEV4dHJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRQb2ludFswXSA9PT0gbWF4WCkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtYXhYID0gbWF4WCArIGV4dHJhLnhFeHRyYTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudFBvaW50WzFdID09PSBtaW5ZKSB7XG4gICAgICAgICAgICBleHRyYSA9IGdldEV4dHJhRnJvbVNlZ21lbnRXaXRoQW5nbGUoc2VnbWVudCwgbGluZVdpZHRoKTtcbiAgICAgICAgICAgIG1pblkgPSBtaW5ZIC0gZXh0cmEueUV4dHJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRQb2ludFsxXSA9PT0gbWF4WSkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtYXhZID0gbWF4WSArIGV4dHJhLnlFeHRyYTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBtaW5YLFxuICAgICAgICB5OiBtaW5ZLFxuICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldEV4dHJhRnJvbVNlZ21lbnRXaXRoQW5nbGUoc2VnbWVudCwgbGluZVdpZHRoKSB7XG4gICAgdmFyIHByZVBvaW50ID0gc2VnbWVudC5wcmVQb2ludCwgY3VycmVudFBvaW50ID0gc2VnbWVudC5jdXJyZW50UG9pbnQsIG5leHRQb2ludCA9IHNlZ21lbnQubmV4dFBvaW50O1xuICAgIHZhciBjdXJyZW50QW5kUHJlID0gTWF0aC5wb3coY3VycmVudFBvaW50WzBdIC0gcHJlUG9pbnRbMF0sIDIpICsgTWF0aC5wb3coY3VycmVudFBvaW50WzFdIC0gcHJlUG9pbnRbMV0sIDIpO1xuICAgIHZhciBjdXJyZW50QW5kTmV4dCA9IE1hdGgucG93KGN1cnJlbnRQb2ludFswXSAtIG5leHRQb2ludFswXSwgMikgKyBNYXRoLnBvdyhjdXJyZW50UG9pbnRbMV0gLSBuZXh0UG9pbnRbMV0sIDIpO1xuICAgIHZhciBwcmVBbmROZXh0ID0gTWF0aC5wb3cocHJlUG9pbnRbMF0gLSBuZXh0UG9pbnRbMF0sIDIpICsgTWF0aC5wb3cocHJlUG9pbnRbMV0gLSBuZXh0UG9pbnRbMV0sIDIpO1xuICAgIC8vIOS7pSBjdXJyZW50UG9pbnQg5Li66aG254K555qE5aS56KeSXG4gICAgdmFyIGN1cnJlbnRBbmdsZSA9IE1hdGguYWNvcygoY3VycmVudEFuZFByZSArIGN1cnJlbnRBbmROZXh0IC0gcHJlQW5kTmV4dCkgLyAoMiAqIE1hdGguc3FydChjdXJyZW50QW5kUHJlKSAqIE1hdGguc3FydChjdXJyZW50QW5kTmV4dCkpKTtcbiAgICAvLyDlpLnop5LkuLrnqbrjgIEgMCDmiJYgUEkg5pe277yM5LiN6ZyA6KaB6K6h566X5aS56KeS5aSE55qE6aKd5aSW5a695bqmXG4gICAgLy8g5rOo5oSPOiDnlLHkuo7orqHnrpfnsr7luqbpl67popjvvIzlpLnop5LkuLogMCDnmoTmg4XlhrXorqHnrpflh7rmnaXnmoTop5Lluqblj6/og73mmK/kuIDkuKrlvojlsI/nmoTlgLzvvIzov5jpnIDopoHliKTmlq3lhbbkuI4gMCDmmK/lkKbov5HkvLznm7jnrYlcbiAgICBpZiAoIWN1cnJlbnRBbmdsZSB8fCBNYXRoLnNpbihjdXJyZW50QW5nbGUpID09PSAwIHx8IGlzTnVtYmVyRXF1YWwoY3VycmVudEFuZ2xlLCAwKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeEV4dHJhOiAwLFxuICAgICAgICAgICAgeUV4dHJhOiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgeEFuZ2xlID0gTWF0aC5hYnMoTWF0aC5hdGFuMihuZXh0UG9pbnRbMV0gLSBjdXJyZW50UG9pbnRbMV0sIG5leHRQb2ludFswXSAtIGN1cnJlbnRQb2ludFswXSkpO1xuICAgIHZhciB5QW5nbGUgPSBNYXRoLmFicyhNYXRoLmF0YW4yKG5leHRQb2ludFswXSAtIGN1cnJlbnRQb2ludFswXSwgbmV4dFBvaW50WzFdIC0gY3VycmVudFBvaW50WzFdKSk7XG4gICAgLy8g5bCG5aS56KeS6L2s5Li66ZSQ6KeSXG4gICAgeEFuZ2xlID0geEFuZ2xlID4gTWF0aC5QSSAvIDIgPyBNYXRoLlBJIC0geEFuZ2xlIDogeEFuZ2xlO1xuICAgIHlBbmdsZSA9IHlBbmdsZSA+IE1hdGguUEkgLyAyID8gTWF0aC5QSSAtIHlBbmdsZSA6IHlBbmdsZTtcbiAgICAvLyDov5nph4zkuI3ogIPomZHlnKjmsLTlubPlkozlnoLnm7TmlrnlkJHnmoTmipXlvbHvvIznm7TmjqXkvb/nlKjmnIDlpKflt67lgLxcbiAgICAvLyDnlLHkuo7kuIrlsYLnu5/kuIDliqDlh4/kuobkuozliIbkuYvkuIDnur/lrr3vvIzov5nph4zpnIDopoHov5vooYzlvKXooaVcbiAgICB2YXIgZXh0cmEgPSB7XG4gICAgICAgIC8vIOawtOW5s+aWueWQkeaKleW9sVxuICAgICAgICB4RXh0cmE6IE1hdGguY29zKGN1cnJlbnRBbmdsZSAvIDIgLSB4QW5nbGUpICogKChsaW5lV2lkdGggLyAyKSAqICgxIC8gTWF0aC5zaW4oY3VycmVudEFuZ2xlIC8gMikpKSAtIGxpbmVXaWR0aCAvIDIgfHwgMCxcbiAgICAgICAgLy8g5Z6C55u05pa55ZCR5oqV5b2xXG4gICAgICAgIHlFeHRyYTogTWF0aC5jb3MoeUFuZ2xlIC0gY3VycmVudEFuZ2xlIC8gMikgKiAoKGxpbmVXaWR0aCAvIDIpICogKDEgLyBNYXRoLnNpbihjdXJyZW50QW5nbGUgLyAyKSkpIC0gbGluZVdpZHRoIC8gMiB8fCAwLFxuICAgIH07XG4gICAgcmV0dXJuIGV4dHJhO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciBwYXRoID0gYXR0cnMucGF0aCwgc3Ryb2tlID0gYXR0cnMuc3Ryb2tlO1xuICAgIHZhciBsaW5lV2lkdGggPSBzdHJva2UgPyBhdHRycy5saW5lV2lkdGggOiAwOyAvLyDlj6rmnInmnIkgc3Ryb2tlIOaXtu+8jGxpbmVXaWR0aCDmiY3nlJ/mlYhcbiAgICB2YXIgc2VnbWVudHMgPSBzaGFwZS5nZXQoJ3NlZ21lbnRzJykgfHwgcGF0aDJTZWdtZW50cyhwYXRoKTtcbiAgICB2YXIgX2EgPSBnZXRQYXRoQm94KHNlZ21lbnRzLCBsaW5lV2lkdGgpLCB4ID0gX2EueCwgeSA9IF9hLnksIHdpZHRoID0gX2Eud2lkdGgsIGhlaWdodCA9IF9hLmhlaWdodDtcbiAgICB2YXIgYmJveCA9IHtcbiAgICAgICAgbWluWDogeCxcbiAgICAgICAgbWluWTogeSxcbiAgICAgICAgbWF4WDogeCArIHdpZHRoLFxuICAgICAgICBtYXhZOiB5ICsgaGVpZ2h0LFxuICAgIH07XG4gICAgYmJveCA9IG1lcmdlQXJyb3dCQm94KHNoYXBlLCBiYm94KTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYm94Lm1pblgsXG4gICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgd2lkdGg6IGJib3gubWF4WCAtIGJib3gubWluWCxcbiAgICAgICAgaGVpZ2h0OiBiYm94Lm1heFkgLSBiYm94Lm1pblksXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/polygon.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/polygon.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr);\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3BvbHlnb24uanM/YzEyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW9DO0FBQ3JCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBSTtBQUNmLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWdvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciBwb2ludHMgPSBhdHRycy5wb2ludHM7XG4gICAgdmFyIHhBcnIgPSBbXTtcbiAgICB2YXIgeUFyciA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgeEFyci5wdXNoKHBvaW50WzBdKTtcbiAgICAgICAgeUFyci5wdXNoKHBvaW50WzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIFV0aWwuZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFycik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/polygon.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/polyline.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/polyline.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/bbox/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3BvbHlsaW5lLmpzP2Y3MDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9DO0FBQ0k7QUFDekI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlEQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNERBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgbWVyZ2VBcnJvd0JCb3ggfSBmcm9tICcuL3V0aWwnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciBwb2ludHMgPSBhdHRycy5wb2ludHM7XG4gICAgdmFyIHhBcnIgPSBbXTtcbiAgICB2YXIgeUFyciA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgeEFyci5wdXNoKHBvaW50WzBdKTtcbiAgICAgICAgeUFyci5wdXNoKHBvaW50WzFdKTtcbiAgICB9XG4gICAgdmFyIF9hID0gVXRpbC5nZXRCQm94QnlBcnJheSh4QXJyLCB5QXJyKSwgeCA9IF9hLngsIHkgPSBfYS55LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gICAgdmFyIGJib3ggPSB7XG4gICAgICAgIG1pblg6IHgsXG4gICAgICAgIG1pblk6IHksXG4gICAgICAgIG1heFg6IHggKyB3aWR0aCxcbiAgICAgICAgbWF4WTogeSArIGhlaWdodCxcbiAgICB9O1xuICAgIGJib3ggPSBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICB5OiBiYm94Lm1pblksXG4gICAgICAgIHdpZHRoOiBiYm94Lm1heFggLSBiYm94Lm1pblgsXG4gICAgICAgIGhlaWdodDogYmJveC5tYXhZIC0gYmJveC5taW5ZLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/polyline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/rect.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/rect.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n});\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlY3QuanM/MWI1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55LCB3aWR0aCA9IGF0dHJzLndpZHRoLCBoZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/register.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/register.js ***!
\********************************************************/
/*! exports provided: register, getMethod */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMethod\", function() { return getMethod; });\nvar cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nfunction register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nfunction getMethod(type) {\n return cache.get(type);\n}\n//# sourceMappingURL=register.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlZ2lzdGVyLmpzP2NmZDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvcmVnaXN0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2FjaGUgPSBuZXcgTWFwKCk7XG4vKipcbiAqIOazqOWGjOiuoeeul+WMheWbtOebkueahOeul+azlVxuICogQHBhcmFtIHR5cGUg5pa55rOV5ZCNXG4gKiBAcGFyYW0gbWV0aG9kIOaWueazlVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIodHlwZSwgbWV0aG9kKSB7XG4gICAgY2FjaGUuc2V0KHR5cGUsIG1ldGhvZCk7XG59XG4vKipcbiAqIOiOt+WPluiuoeeul+WMheWbtOebkueahOeul+azlVxuICogQHBhcmFtIHR5cGUg5pa55rOV5ZCNXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRob2QodHlwZSkge1xuICAgIHJldHVybiBjYWNoZS5nZXQodHlwZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWdpc3Rlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/register.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/text.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/text.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/text */ \"./node_modules/@antv/g-base/esm/util/text.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, text = attrs.text, fontSize = attrs.fontSize, lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"assembleFont\"])(attrs);\n }\n var width = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextWidth\"])(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0,\n };\n }\n else {\n var textAlign = attrs.textAlign, textBaseline = attrs.textBaseline;\n var height = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextHeight\"])(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n }\n else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n }\n else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n});\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3RleHQuanM/NWZhZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXlFO0FBQzFEO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0RBQVk7QUFDM0I7QUFDQSxnQkFBZ0IsK0RBQVk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdFQUFhLDZCQUE2QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC90ZXh0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0VGV4dFdpZHRoLCBnZXRUZXh0SGVpZ2h0LCBhc3NlbWJsZUZvbnQgfSBmcm9tICcuLi91dGlsL3RleHQnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciB4ID0gYXR0cnMueCwgeSA9IGF0dHJzLnksIHRleHQgPSBhdHRycy50ZXh0LCBmb250U2l6ZSA9IGF0dHJzLmZvbnRTaXplLCBsaW5lSGVpZ2h0ID0gYXR0cnMubGluZUhlaWdodDtcbiAgICB2YXIgZm9udCA9IGF0dHJzLmZvbnQ7XG4gICAgaWYgKCFmb250KSB7XG4gICAgICAgIC8vIOWmguaenOacque7hOijhSBmb250XG4gICAgICAgIGZvbnQgPSBhc3NlbWJsZUZvbnQoYXR0cnMpO1xuICAgIH1cbiAgICB2YXIgd2lkdGggPSBnZXRUZXh0V2lkdGgodGV4dCwgZm9udCk7XG4gICAgdmFyIGJib3g7XG4gICAgaWYgKCF3aWR0aCkge1xuICAgICAgICAvLyDlpoLmnpx3aWR0aOS4jeWtmOWcqO+8jOWbm+eCueWFseWFtuWunueCuVxuICAgICAgICBiYm94ID0ge1xuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciB0ZXh0QWxpZ24gPSBhdHRycy50ZXh0QWxpZ24sIHRleHRCYXNlbGluZSA9IGF0dHJzLnRleHRCYXNlbGluZTtcbiAgICAgICAgdmFyIGhlaWdodCA9IGdldFRleHRIZWlnaHQodGV4dCwgZm9udFNpemUsIGxpbmVIZWlnaHQpOyAvLyBhdHRycy5oZWlnaHRcbiAgICAgICAgLy8g6buY6K6k5bem5Y+z5a+56b2Q77yabGVmdCwg6buY6K6k5LiK5LiL5a+56b2QIGJvdHRvbVxuICAgICAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgeTogeSAtIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRleHRBbGlnbikge1xuICAgICAgICAgICAgaWYgKHRleHRBbGlnbiA9PT0gJ2VuZCcgfHwgdGV4dEFsaWduID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgcG9pbnQueCAtPSB3aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRleHRBbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBwb2ludC54IC09IHdpZHRoIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGV4dEJhc2VsaW5lKSB7XG4gICAgICAgICAgICBpZiAodGV4dEJhc2VsaW5lID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHBvaW50LnkgKz0gaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGV4dEJhc2VsaW5lID09PSAnbWlkZGxlJykge1xuICAgICAgICAgICAgICAgIHBvaW50LnkgKz0gaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBiYm94ID0ge1xuICAgICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJib3g7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10ZXh0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/text.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/bbox/util.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/bbox/util.js ***!
\****************************************************/
/*! exports provided: mergeBBox, mergeArrowBBox */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeArrowBBox\", function() { return mergeArrowBBox; });\n// 合并包围盒\nfunction mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n// 合并箭头的包围盒\nfunction mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3V0aWwuanM/NjhhOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5ZCI5bm25YyF5Zu055uSXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VCQm94KGJib3gxLCBiYm94Mikge1xuICAgIGlmICghYmJveDEgfHwgIWJib3gyKSB7XG4gICAgICAgIHJldHVybiBiYm94MSB8fCBiYm94MjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluWDogTWF0aC5taW4oYmJveDEubWluWCwgYmJveDIubWluWCksXG4gICAgICAgIG1pblk6IE1hdGgubWluKGJib3gxLm1pblksIGJib3gyLm1pblkpLFxuICAgICAgICBtYXhYOiBNYXRoLm1heChiYm94MS5tYXhYLCBiYm94Mi5tYXhYKSxcbiAgICAgICAgbWF4WTogTWF0aC5tYXgoYmJveDEubWF4WSwgYmJveDIubWF4WSksXG4gICAgfTtcbn1cbi8vIOWQiOW5tueureWktOeahOWMheWbtOebklxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQXJyb3dCQm94KHNoYXBlLCBiYm94KSB7XG4gICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHNoYXBlLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgdmFyIGVuZEFycm93U2hhcGUgPSBzaGFwZS5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICB2YXIgc3RhcnRBcnJvd0JCb3ggPSBudWxsO1xuICAgIHZhciBlbmRBcnJvd0JCb3ggPSBudWxsO1xuICAgIGlmIChzdGFydEFycm93U2hhcGUpIHtcbiAgICAgICAgc3RhcnRBcnJvd0JCb3ggPSBzdGFydEFycm93U2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICBiYm94ID0gbWVyZ2VCQm94KGJib3gsIHN0YXJ0QXJyb3dCQm94KTtcbiAgICB9XG4gICAgaWYgKGVuZEFycm93U2hhcGUpIHtcbiAgICAgICAgZW5kQXJyb3dCQm94ID0gZW5kQXJyb3dTaGFwZS5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgIGJib3ggPSBtZXJnZUJCb3goYmJveCwgZW5kQXJyb3dCQm94KTtcbiAgICB9XG4gICAgcmV0dXJuIGJib3g7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/util.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/event/event-contoller.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g-base/esm/event/event-contoller.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph-event */ \"./node_modules/@antv/g-base/esm/event/graph-event.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\n\n\nvar CLICK_OFFSET = 40;\nvar LEFT_BTN_CODE = 0;\nvar DELEGATION_SPLIT = ':';\nvar EVENTS = [\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'mouseout',\n 'mouseover',\n 'mousemove',\n 'mouseleave',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'drop',\n 'contextmenu',\n 'mousewheel',\n];\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (var key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n var relativeShape = void 0;\n var isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n }\n else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"isParent\"])(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\nvar EventController = /** @class */ (function () {\n function EventController(cfg) {\n var _this = this;\n // 正在被拖拽的图形\n this.draggingShape = null;\n this.dragging = false;\n // 当前鼠标/touch所在位置的图形\n this.currentShape = null;\n this.mousedownShape = null;\n this.mousedownPoint = null;\n // 统一处理所有的回调\n this._eventCallback = function (ev) {\n var type = ev.type;\n _this._triggerEvent(type, ev);\n };\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n this._onDocumentMove = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging || _this.currentShape) {\n var pointInfo = _this._getPointInfo(ev);\n // 还在拖拽过程中\n if (_this.dragging) {\n _this._emitEvent('drag', ev, pointInfo, _this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n this._onDocumentMouseUp = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging) {\n var pointInfo = _this._getPointInfo(ev);\n if (_this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n _this._emitEvent('drop', ev, pointInfo, null);\n }\n _this._emitEvent('dragend', ev, pointInfo, _this.draggingShape);\n _this._afterDrag(_this.draggingShape, pointInfo, ev);\n }\n }\n };\n this.canvas = cfg.canvas;\n }\n EventController.prototype.init = function () {\n this._bindEvents();\n };\n // 注册事件\n EventController.prototype._bindEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.addEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n // 清理事件\n EventController.prototype._clearEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.removeEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n EventController.prototype._getEventObj = function (type, event, point, target, fromShape, toShape) {\n var eventObj = new _graph_event__WEBPACK_IMPORTED_MODULE_0__[\"default\"](type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n };\n // 根据点获取图形,提取成独立方法,便于后续优化\n EventController.prototype._getShape = function (point, ev) {\n return this.canvas.getShape(point.x, point.y, ev);\n };\n // 获取事件的当前点的信息\n EventController.prototype._getPointInfo = function (ev) {\n var canvas = this.canvas;\n var clientPoint = canvas.getClientByEvent(ev);\n var point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n };\n };\n // 触发事件\n EventController.prototype._triggerEvent = function (type, ev) {\n var pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n var shape = this._getShape(pointInfo, ev);\n var method = this[\"_on\" + type];\n var leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n }\n else {\n var preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n }\n else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n }\n else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n var canvas = this.canvas;\n var el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n };\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n EventController.prototype._onmousedown = function (pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n };\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n EventController.prototype._emitMouseoverEvents = function (event, pointInfo, fromShape, toShape) {\n var el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n };\n // dragover 不等同于 mouseover,而等同于 mousemove\n EventController.prototype._emitDragoverEvents = function (event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n }\n else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n };\n // drag 完成后,需要做一些清理工作\n EventController.prototype._afterDrag = function (draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n var shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n };\n // 按键抬起时,会终止拖拽、触发点击\n EventController.prototype._onmouseup = function (pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n var draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n }\n else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n };\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n EventController.prototype._ondragover = function (pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n var preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n };\n // 大量的图形事件,都通过 mousemove 模拟\n EventController.prototype._onmousemove = function (pointInfo, shape, event) {\n var canvas = this.canvas;\n var preShape = this.currentShape;\n var draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n }\n else {\n var mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n var mousedownShape = this.mousedownShape;\n var now = event.timeStamp;\n var timeWindow = now - this.mousedownTimeStamp;\n var dx = mousedownPoint.clientX - pointInfo.clientX;\n var dy = mousedownPoint.clientY - pointInfo.clientY;\n var dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n };\n // 触发事件\n EventController.prototype._emitEvent = function (type, event, pointInfo, shape, fromShape, toShape) {\n var eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n var parent_1 = shape.getParent();\n // 执行冒泡\n while (parent_1) {\n // 委托事件要先触发\n parent_1.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent_1, type, eventObj);\n }\n eventObj.propagationPath.push(parent_1);\n parent_1 = parent_1.getParent();\n }\n }\n else {\n // 如果没有 shape 直接在 canvas 上触发\n var canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n };\n EventController.prototype.destroy = function () {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n };\n return EventController;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);\n//# sourceMappingURL=event-contoller.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9ldmVudC9ldmVudC1jb250b2xsZXIuanM/ZDI0NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUN1QztBQUNPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwyREFBUTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9EQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0EsNkVBQTZFO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBLDJFQUEyRTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVELDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyw4RUFBZSxFQUFDO0FBQy9CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vZXZlbnQvZXZlbnQtY29udG9sbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOS6i+S7tuWkhOeQhuWZqFxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCBHcmFwaEV2ZW50IGZyb20gJy4vZ3JhcGgtZXZlbnQnO1xuaW1wb3J0IHsgZWFjaCwgaXNQYXJlbnQgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIENMSUNLX09GRlNFVCA9IDQwO1xudmFyIExFRlRfQlROX0NPREUgPSAwO1xudmFyIERFTEVHQVRJT05fU1BMSVQgPSAnOic7XG52YXIgRVZFTlRTID0gW1xuICAgICdtb3VzZWRvd24nLFxuICAgICdtb3VzZXVwJyxcbiAgICAnZGJsY2xpY2snLFxuICAgICdtb3VzZW91dCcsXG4gICAgJ21vdXNlb3ZlcicsXG4gICAgJ21vdXNlbW92ZScsXG4gICAgJ21vdXNlbGVhdmUnLFxuICAgICdtb3VzZWVudGVyJyxcbiAgICAndG91Y2hzdGFydCcsXG4gICAgJ3RvdWNobW92ZScsXG4gICAgJ3RvdWNoZW5kJyxcbiAgICAnZHJhZ2VudGVyJyxcbiAgICAnZHJhZ292ZXInLFxuICAgICdkcmFnbGVhdmUnLFxuICAgICdkcm9wJyxcbiAgICAnY29udGV4dG1lbnUnLFxuICAgICdtb3VzZXdoZWVsJyxcbl07XG4vLyDmmK/lkKbmnInlp5TmiZjkuovku7bnm5HlkKxcbmZ1bmN0aW9uIGhhc0RlbGVnYXRpb24oZXZlbnRzLCB0eXBlKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGV2ZW50cykge1xuICAgICAgICBpZiAoZXZlbnRzLmhhc093blByb3BlcnR5KGtleSkgJiYga2V5LmluZGV4T2YoREVMRUdBVElPTl9TUExJVCArIHR5cGUpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIOinpuWPkeebruagh+S6i+S7tu+8jOebruagh+WPquiDveaYryBzaGFwZSDmiJYgY2FudmFzXG5mdW5jdGlvbiBlbWl0VGFyZ2V0RXZlbnQodGFyZ2V0LCB0eXBlLCBldmVudE9iaikge1xuICAgIGV2ZW50T2JqLm5hbWUgPSB0eXBlO1xuICAgIGV2ZW50T2JqLnRhcmdldCA9IHRhcmdldDtcbiAgICBldmVudE9iai5jdXJyZW50VGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGV2ZW50T2JqLmRlbGVnYXRlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRhcmdldC5lbWl0KHR5cGUsIGV2ZW50T2JqKTtcbn1cbi8vIOS6i+S7tuWGkuazoSwgZW50ZXIg5ZKMIGxlYXZlIOmcgOimgeWvuSBmcm9tU2hhcGUg5ZKMIHRvU2hhcGUg6L+b6KGM5Yik5ZCMXG5mdW5jdGlvbiBidWJibGVFdmVudChjb250YWluZXIsIHR5cGUsIGV2ZW50T2JqKSB7XG4gICAgaWYgKGV2ZW50T2JqLmJ1YmJsZXMpIHtcbiAgICAgICAgdmFyIHJlbGF0aXZlU2hhcGUgPSB2b2lkIDA7XG4gICAgICAgIHZhciBpc092ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICAgICAgICByZWxhdGl2ZVNoYXBlID0gZXZlbnRPYmouZnJvbVNoYXBlO1xuICAgICAgICAgICAgaXNPdmVyRXZlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICAgICAgaXNPdmVyRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLnRvU2hhcGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2FudmFzIOS4iueahCBtb3VzZWVudGVy77yMIG1vdXNlbGVhdmUg5LqL5Lu277yM5LuF5b2T6L+b5YWl5oiW6ICF56e75Ye6IGNhbnZhcyDml7bop6blj5FcbiAgICAgICAgaWYgKGNvbnRhaW5lci5pc0NhbnZhcygpICYmIGlzT3ZlckV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aaC5p6c55u45YWz5Zu+5b2i5ZCM5b2T5YmN5Zu+5b2i5Zyo5ZCM5LiA5Liq5a655Zmo5YaF77yM5LiN6Kem5Y+R5LqL5Lu2XG4gICAgICAgIGlmIChyZWxhdGl2ZVNoYXBlICYmIGlzUGFyZW50KGNvbnRhaW5lciwgcmVsYXRpdmVTaGFwZSkpIHtcbiAgICAgICAgICAgIC8vIOmYu+atoue7p+e7reWQkeS4iuWGkuazoVxuICAgICAgICAgICAgZXZlbnRPYmouYnViYmxlcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIOS6i+S7tuWQjeensOWPr+iDveWcqOWnlOaJmOi/h+eoi+S4reiiq+S/ruaUue+8jOWboOatpOS6i+S7tuWGkuazoeaXtumcgOimgemHjeaWsOiuvue9ruS6i+S7tuWQjeensFxuICAgICAgICBldmVudE9iai5uYW1lID0gdHlwZTtcbiAgICAgICAgZXZlbnRPYmouY3VycmVudFRhcmdldCA9IGNvbnRhaW5lcjtcbiAgICAgICAgZXZlbnRPYmouZGVsZWdhdGVUYXJnZXQgPSBjb250YWluZXI7XG4gICAgICAgIGNvbnRhaW5lci5lbWl0KHR5cGUsIGV2ZW50T2JqKTtcbiAgICB9XG59XG52YXIgRXZlbnRDb250cm9sbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50Q29udHJvbGxlcihjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgLy8g5q2j5Zyo6KKr5ouW5ou955qE5Zu+5b2iXG4gICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8g5b2T5YmN6byg5qCHL3RvdWNo5omA5Zyo5L2N572u55qE5Zu+5b2iXG4gICAgICAgIHRoaXMuY3VycmVudFNoYXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBudWxsO1xuICAgICAgICAvLyDnu5/kuIDlpITnkIbmiYDmnInnmoTlm57osINcbiAgICAgICAgdGhpcy5fZXZlbnRDYWxsYmFjayA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBldi50eXBlO1xuICAgICAgICAgICAgX3RoaXMuX3RyaWdnZXJFdmVudCh0eXBlLCBldik7XG4gICAgICAgIH07XG4gICAgICAgIC8vIOWcqCBkb2N1bWVudCDlpITnkIbmi5bmi73liLDnlLvluIPlpJbnmoTkuovku7bvvIzlpITnkIbku47lm77lvaLkuIrnp7vpmaTnlLvluIPmnKrooqvmjZXmjYnnmoTpl67pophcbiAgICAgICAgdGhpcy5fb25Eb2N1bWVudE1vdmUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBfdGhpcy5jYW52YXM7XG4gICAgICAgICAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICAgICAgaWYgKGVsICE9PSBldi50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyDkuI3lnKggY2FudmFzIOS4iuenu+WKqFxuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZyB8fCBfdGhpcy5jdXJyZW50U2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50SW5mbyA9IF90aGlzLl9nZXRQb2ludEluZm8oZXYpO1xuICAgICAgICAgICAgICAgICAgICAvLyDov5jlnKjmi5bmi73ov4fnqIvkuK1cbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZW1pdEV2ZW50KCdkcmFnJywgZXYsIHBvaW50SW5mbywgX3RoaXMuZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8g6K+05piO5LuO5p+Q5Liq5Zu+5b2i55u05o6l56e75Yqo5Yiw5LqG55S75biD5aSW6Z2i77yMXG4gICAgICAgICAgICAgICAgICAgIC8vIOS/ruWkjeS6hiBtb3VzZWxlYXZlIOeahCBidWcg5ZCO5LiN5YaN5Ye6546w6L+Z56eN5oOF5Ya1XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLmN1cnJlbnRTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2VsZWF2ZScsIGV2LCBwb2ludEluZm8sIHRoaXMuY3VycmVudFNoYXBlLCB0aGlzLmN1cnJlbnRTaGFwZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5jdXJyZW50U2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyDlnKggZG9jdW1lbnQg5LiK5aSE55CG5ouW5ou95Yiw5aSW6Z2i77yM6YeK5pS+6byg5qCH5pe26Kem5Y+RIGRyYWdlbmRcbiAgICAgICAgdGhpcy5fb25Eb2N1bWVudE1vdXNlVXAgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBfdGhpcy5jYW52YXM7XG4gICAgICAgICAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICAgICAgaWYgKGVsICE9PSBldi50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyDkuI3lnKggY2FudmFzIOS4iuenu+WKqFxuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcG9pbnRJbmZvID0gX3RoaXMuX2dldFBvaW50SW5mbyhldik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjmi5bmi73nmoTlm77lvaLvvIzliJnkuZ/op6blj5EgZHJvcCDkuovku7ZcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9lbWl0RXZlbnQoJ2Ryb3AnLCBldiwgcG9pbnRJbmZvLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZW1pdEV2ZW50KCdkcmFnZW5kJywgZXYsIHBvaW50SW5mbywgX3RoaXMuZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9hZnRlckRyYWcoX3RoaXMuZHJhZ2dpbmdTaGFwZSwgcG9pbnRJbmZvLCBldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNmZy5jYW52YXM7XG4gICAgfVxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYmluZEV2ZW50cygpO1xuICAgIH07XG4gICAgLy8g5rOo5YaM5LqL5Lu2XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fYmluZEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKEVWRU5UUywgZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLl9ldmVudENhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgICAgICAgLy8g5aSE55CG56e75Yqo5Yiw5aSW6Z2i5rKh5pyJ6Kem5Y+RIHNoYXBlIG1vdXNlIGxlYXZlIOeahOS6i+S7tlxuICAgICAgICAgICAgLy8g5aSE55CG5ouW5ou95Yiw5aSW6YOo55qE6Zeu6aKYXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLl9vbkRvY3VtZW50TW92ZSk7XG4gICAgICAgICAgICAvLyDlpITnkIbmi5bmi73ov4fnqIvkuK3lnKjlpJbpg6jph4rmlL7pvKDmoIfnmoTpl67pophcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9vbkRvY3VtZW50TW91c2VVcCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOa4heeQhuS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2NsZWFyRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2goRVZFTlRTLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX3RoaXMuX2V2ZW50Q2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLl9vbkRvY3VtZW50TW92ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fb25Eb2N1bWVudE1vdXNlVXApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRFdmVudE9iaiA9IGZ1bmN0aW9uICh0eXBlLCBldmVudCwgcG9pbnQsIHRhcmdldCwgZnJvbVNoYXBlLCB0b1NoYXBlKSB7XG4gICAgICAgIHZhciBldmVudE9iaiA9IG5ldyBHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgZXZlbnRPYmouZnJvbVNoYXBlID0gZnJvbVNoYXBlO1xuICAgICAgICBldmVudE9iai50b1NoYXBlID0gdG9TaGFwZTtcbiAgICAgICAgZXZlbnRPYmoueCA9IHBvaW50Lng7XG4gICAgICAgIGV2ZW50T2JqLnkgPSBwb2ludC55O1xuICAgICAgICBldmVudE9iai5jbGllbnRYID0gcG9pbnQuY2xpZW50WDtcbiAgICAgICAgZXZlbnRPYmouY2xpZW50WSA9IHBvaW50LmNsaWVudFk7XG4gICAgICAgIGV2ZW50T2JqLnByb3BhZ2F0aW9uUGF0aC5wdXNoKHRhcmdldCk7XG4gICAgICAgIC8vIOS6i+S7tueahHgseeW6lOivpeaYr+WfuuS6jueUu+W4g+W3puS4iuinkueahO+8jOS4jmNhbnZhc+eahG1hdHJpeOaXoOWFs1xuICAgICAgICByZXR1cm4gZXZlbnRPYmo7XG4gICAgfTtcbiAgICAvLyDmoLnmja7ngrnojrflj5blm77lvaLvvIzmj5Dlj5bmiJDni6znq4vmlrnms5XvvIzkvr/kuo7lkI7nu63kvJjljJZcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRTaGFwZSA9IGZ1bmN0aW9uIChwb2ludCwgZXYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FudmFzLmdldFNoYXBlKHBvaW50LngsIHBvaW50LnksIGV2KTtcbiAgICB9O1xuICAgIC8vIOiOt+WPluS6i+S7tueahOW9k+WJjeeCueeahOS/oeaBr1xuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2dldFBvaW50SW5mbyA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgIHZhciBjbGllbnRQb2ludCA9IGNhbnZhcy5nZXRDbGllbnRCeUV2ZW50KGV2KTtcbiAgICAgICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlFdmVudChldik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwb2ludC54LFxuICAgICAgICAgICAgeTogcG9pbnQueSxcbiAgICAgICAgICAgIGNsaWVudFg6IGNsaWVudFBvaW50LngsXG4gICAgICAgICAgICBjbGllbnRZOiBjbGllbnRQb2ludC55LFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g6Kem5Y+R5LqL5Lu2XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fdHJpZ2dlckV2ZW50ID0gZnVuY3Rpb24gKHR5cGUsIGV2KSB7XG4gICAgICAgIHZhciBwb2ludEluZm8gPSB0aGlzLl9nZXRQb2ludEluZm8oZXYpO1xuICAgICAgICAvLyDmr4/mrKHpg73ojrflj5blm77lvaLmnInkuIDlrprmiJDmnKzvvIzlkI7mnJ/lj6/ku6XogIPomZHov5vooYznvJPlrZjnrZbnlaVcbiAgICAgICAgdmFyIHNoYXBlID0gdGhpcy5fZ2V0U2hhcGUocG9pbnRJbmZvLCBldik7XG4gICAgICAgIHZhciBtZXRob2QgPSB0aGlzW1wiX29uXCIgKyB0eXBlXTtcbiAgICAgICAgdmFyIGxlYXZlQ2FudmFzID0gZmFsc2U7XG4gICAgICAgIGlmIChtZXRob2QpIHtcbiAgICAgICAgICAgIG1ldGhvZC5jYWxsKHRoaXMsIHBvaW50SW5mbywgc2hhcGUsIGV2KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBwcmVTaGFwZSA9IHRoaXMuY3VycmVudFNoYXBlO1xuICAgICAgICAgICAgLy8g5aaC5p6c6L+b5YWl44CB56e75Ye655S75biD5pe25a2Y5Zyo5Zu+5b2i77yM5YiZ6KaB5YiG5Yir6Kem5Y+R5LqL5Lu2XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInIHx8IHR5cGUgPT09ICdkcmFnZW50ZXInIHx8IHR5cGUgPT09ICdtb3VzZW92ZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KHR5cGUsIGV2LCBwb2ludEluZm8sIG51bGwsIG51bGwsIHNoYXBlKTsgLy8g5YWI6L+b5YWl55S75biDXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBzaGFwZSwgbnVsbCwgc2hhcGUpOyAvLyDlho3op6blj5Hlm77lvaLnmoTkuovku7ZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJyAmJiB0aGlzLmRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5q2j5Zyo5ouW5ou95Zu+5b2iLCDliJnop6blj5EgZHJhZ2xlYXZlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2VudGVyJywgZXYsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ21vdXNlbGVhdmUnIHx8IHR5cGUgPT09ICdkcmFnbGVhdmUnIHx8IHR5cGUgPT09ICdtb3VzZW91dCcpIHtcbiAgICAgICAgICAgICAgICBsZWF2ZUNhbnZhcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHByZVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgcHJlU2hhcGUsIG51bGwpOyAvLyDlhYjop6blj5Hlm77lvaLnmoTkuovku7ZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KHR5cGUsIGV2LCBwb2ludEluZm8sIG51bGwsIHByZVNoYXBlLCBudWxsKTsgLy8g5YaN6Kem5Y+R56a75byA55S75biD5LqL5Lu2XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJyAmJiB0aGlzLmRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnbGVhdmUnLCBldiwgcG9pbnRJbmZvLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQodHlwZSwgZXYsIHBvaW50SW5mbywgc2hhcGUsIG51bGwsIG51bGwpOyAvLyDkuIDoiKzkuovku7bkuK3kuI3pnIDopoHogIPomZEgZnJvbSwgdG9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxlYXZlQ2FudmFzKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTaGFwZSA9IHNoYXBlO1xuICAgICAgICB9XG4gICAgICAgIC8vIOW9k+m8oOagh+S7jueUu+W4g+enu+WKqOWIsCBzaGFwZSDmiJbogIXku44gcHJlU2hhcGUg56e75Yqo5YiwIHNoYXBlIOaXtu+8jOW6lOeUqCBzaGFwZSDkuIrnmoTpvKDmoIfmoLflvI9cbiAgICAgICAgaWYgKHNoYXBlICYmICFzaGFwZS5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgICAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gc2hhcGUuYXR0cignY3Vyc29yJykgfHwgY2FudmFzLmdldCgnY3Vyc29yJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOiusOW9leS4i+eCueWHu+eahOS9jee9ruOAgeWbvuW9ou+8jOS+v+S6juaLluaLveS6i+S7tuOAgWNsaWNrIOS6i+S7tueahOWIpOWumlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX29ubW91c2Vkb3duID0gZnVuY3Rpb24gKHBvaW50SW5mbywgc2hhcGUsIGV2ZW50KSB7XG4gICAgICAgIC8vIOWPquaciem8oOagh+W3pumUrueahCBtb3VzZWRvd24g5LqL5Lu25omN5Lya6K6+572uIG1vdXNlZG93blNoYXBlIOetieWxnuaAp++8jOmBv+WFjem8oOagh+WPs+mUrueahCBtb3VzZWRvd24g5LqL5Lu25byV6LW35YW25LuW5LqL5Lu25Y+R55SfXG4gICAgICAgIGlmIChldmVudC5idXR0b24gPT09IExFRlRfQlROX0NPREUpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBwb2ludEluZm87XG4gICAgICAgICAgICB0aGlzLm1vdXNlZG93blRpbWVTdGFtcCA9IGV2ZW50LnRpbWVTdGFtcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlZG93bicsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlLCBudWxsLCBudWxsKTsgLy8gbW91c2Vkb3duIOS4jeiAg+iZkWZyb21TaGFwZSwgdG9TaGFwZVxuICAgIH07XG4gICAgLy8gbW91c2VsZWF2ZSDlkowgbW91c2VlbnRlciDpg73mmK/miJDlr7nlrZjlnKjnmoRcbiAgICAvLyBtb3VzZWVudGVyIOWSjCBtb3VzZW92ZXIg5ZCM5pe26Kem5Y+RXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZW1pdE1vdXNlb3ZlckV2ZW50cyA9IGZ1bmN0aW9uIChldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIHRvU2hhcGUpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoZnJvbVNoYXBlICE9PSB0b1NoYXBlKSB7XG4gICAgICAgICAgICBpZiAoZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZW91dCcsIGV2ZW50LCBwb2ludEluZm8sIGZyb21TaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbGVhdmUnLCBldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICAgICAgLy8g5b2T6byg5qCH5LuOIGZyb21TaGFwZSDnp7vliqjliLDnlLvluIPkuIrml7bvvIzph43nva7pvKDmoIfmoLflvI9cbiAgICAgICAgICAgICAgICBpZiAoIXRvU2hhcGUgfHwgdG9TaGFwZS5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9IHRoaXMuY2FudmFzLmdldCgnY3Vyc29yJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRvU2hhcGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlb3ZlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZWVudGVyJywgZXZlbnQsIHBvaW50SW5mbywgdG9TaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gZHJhZ292ZXIg5LiN562J5ZCM5LqOIG1vdXNlb3Zlcu+8jOiAjOetieWQjOS6jiBtb3VzZW1vdmVcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9lbWl0RHJhZ292ZXJFdmVudHMgPSBmdW5jdGlvbiAoZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCB0b1NoYXBlLCBpc0NhbnZhc0VtaXQpIHtcbiAgICAgICAgaWYgKHRvU2hhcGUpIHtcbiAgICAgICAgICAgIGlmICh0b1NoYXBlICE9PSBmcm9tU2hhcGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2xlYXZlJywgZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdlbnRlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzQ2FudmFzRW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ292ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmcm9tU2hhcGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IOatpOWkhOWIpOaWreaciemXrumimO+8jOW9kyBkcmFnIOWbvuW9ouaXtu+8jOS5n+S8muinpuWPkeS4gOasoSBkcmFnbGVhdmUg5LqL5Lu277yM5Zug5Li65q2k5pe2IHRvU2hhcGUg5Li6IG51bGzvvIzov5nkuI3mmK/miYDmnJ/mnJvnmoRcbiAgICAgICAgICAgIC8vIOe7j+i/h+epuueZveWMuuWfn1xuICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnbGVhdmUnLCBldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FudmFzRW1pdCkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnb3ZlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBkcmFnIOWujOaIkOWQju+8jOmcgOimgeWBmuS4gOS6m+a4heeQhuW3peS9nFxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2FmdGVyRHJhZyA9IGZ1bmN0aW9uIChkcmFnZ2luZ1NoYXBlLCBwb2ludEluZm8sIGV2ZW50KSB7XG4gICAgICAgIGlmIChkcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICBkcmFnZ2luZ1NoYXBlLnNldCgnY2FwdHVyZScsIHRydWUpOyAvLyDmgaLlpI3lj6/ku6Xmi77lj5ZcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAvLyBkcmFnIOWujOaIkOWQju+8jOacieWPr+iDvSBkcmFnZ2luZ1NoYXBlIOW3sue7j+enu+WKqOWIsOS6huW9k+WJjeS9jee9ru+8jOaJgOS7peS4jeiDveebtOaOpeWPluW9k+WJjeWbvuW9olxuICAgICAgICB2YXIgc2hhcGUgPSB0aGlzLl9nZXRTaGFwZShwb2ludEluZm8sIGV2ZW50KTtcbiAgICAgICAgLy8g5ouW5ou95a6M5oiQ5ZCO77yM6L+b6KGMIGVudGVy77yMbGVhdmUg55qE5Yik5a6aXG4gICAgICAgIGlmIChzaGFwZSAhPT0gZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdE1vdXNlb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlLCBzaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50U2hhcGUgPSBzaGFwZTsgLy8g5pu05paw5b2T5YmNIHNoYXBl77yM5aaC5p6c5LiN5aSE55CG5b2T5YmN5Zu+5b2i55qEIG1vdXNlbGVhdmUg5LqL5Lu25Y+v6IO95Lya5Ye66Zeu6aKYXG4gICAgfTtcbiAgICAvLyDmjInplK7miqzotbfml7bvvIzkvJrnu4jmraLmi5bmi73jgIHop6blj5Hngrnlh7tcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9vbm1vdXNldXAgPSBmdW5jdGlvbiAocG9pbnRJbmZvLCBzaGFwZSwgZXZlbnQpIHtcbiAgICAgICAgLy8gZWV2ZW50LmJ1dHRvbiA9PT0gMCDooajnpLrpvKDmoIflt6bplK7kuovku7bvvIzmraTlpITliqDkuIrliKTmlq3kuLvopoHmmK/kuLrkuobpgb/lhY3lj7PplK7pvKDmoIfkvJrop6blj5EgbW91c2V1cCDlkowgY2xpY2sg5LqL5Lu2XG4gICAgICAgIC8vIHJlZjogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01vdXNlRXZlbnQvYnV0dG9uXG4gICAgICAgIGlmIChldmVudC5idXR0b24gPT09IExFRlRfQlROX0NPREUpIHtcbiAgICAgICAgICAgIHZhciBkcmFnZ2luZ1NoYXBlID0gdGhpcy5kcmFnZ2luZ1NoYXBlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyDlrZjlnKjlj6/ku6Xmi5bmi73nmoTlm77lvaLvvIzlkIzml7bmi5bmi73liLDlhbbku5blm77lvaLkuIrml7bop6blj5EgZHJhZyDkuovku7ZcbiAgICAgICAgICAgICAgICBpZiAoZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2Ryb3AnLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2VuZCcsIGV2ZW50LCBwb2ludEluZm8sIGRyYWdnaW5nU2hhcGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyRHJhZyhkcmFnZ2luZ1NoYXBlLCBwb2ludEluZm8sIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2V1cCcsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTsgLy8g5YWI6Kem5Y+RIG1vdXNldXAg5YaN6Kem5Y+RIGNsaWNrXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlID09PSB0aGlzLm1vdXNlZG93blNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnY2xpY2snLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlvZPop6blj5HmtY/op4jlmajnmoQgZHJhZ292ZXIg5LqL5Lu25pe277yM5LiN5Lya5YaN6Kem5Y+RIG1vdXNlbW92ZSDvvIzmiYDku6Xov5nml7blgJnnmoQgZHJhZ2VudGVyLCBkcmFnbGVhdmUg5LqL5Lu26ZyA6KaB6YeN5paw5aSE55CGXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fb25kcmFnb3ZlciA9IGZ1bmN0aW9uIChwb2ludEluZm8sIHNoYXBlLCBldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlpoLmnpzkuI3lr7kgZHJhZ292ZXIg6L+b6KGMIHByZXZlbnREZWZhdWx077yM5YiZ5LiN5Lya5ZyoIGNhbnZhcyDkuIrop6blj5EgZHJvcCDkuovku7ZcbiAgICAgICAgdmFyIHByZVNoYXBlID0gdGhpcy5jdXJyZW50U2hhcGU7XG4gICAgICAgIHRoaXMuX2VtaXREcmFnb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgc2hhcGUsIHRydWUpO1xuICAgIH07XG4gICAgLy8g5aSn6YeP55qE5Zu+5b2i5LqL5Lu277yM6YO96YCa6L+HIG1vdXNlbW92ZSDmqKHmi59cbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9vbm1vdXNlbW92ZSA9IGZ1bmN0aW9uIChwb2ludEluZm8sIHNoYXBlLCBldmVudCkge1xuICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgIHZhciBwcmVTaGFwZSA9IHRoaXMuY3VycmVudFNoYXBlO1xuICAgICAgICB2YXIgZHJhZ2dpbmdTaGFwZSA9IHRoaXMuZHJhZ2dpbmdTaGFwZTtcbiAgICAgICAgLy8g5q2j5Zyo5ouW5ou95pe2XG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAvLyDmraPlnKjmi5bmi73kuK1cbiAgICAgICAgICAgIGlmIChkcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5ouW5ou95LqGIHNoYXBlIOS8muinpuWPkSBkcmFnZW50ZXIsIGRyYWdsZWF2ZSwgZHJhZ292ZXIg5ZKMIGRyYWcg5LqL5Lu2XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdERyYWdvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5ZyoIGRyYWdnaW5nU2hhcGUg5YiZ5Lya5ZyoIGRyYWdnaW5nU2hhcGUg5LiK6Kem5Y+RIGRyYWcg5LqL5Lu277yM5YaS5rOh5YiwIGNhbnZhcyDkuIpcbiAgICAgICAgICAgIC8vIOWQpuWImeWcqCBjYW52YXMg5LiK6Kem5Y+RIGRyYWcg5LqL5Lu2XG4gICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWcnLCBldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBtb3VzZWRvd25Qb2ludCA9IHRoaXMubW91c2Vkb3duUG9pbnQ7XG4gICAgICAgICAgICBpZiAobW91c2Vkb3duUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAvLyDlvZPpvKDmoIfngrnlh7vkuIvljrvvvIzlkIzml7bnp7vliqjml7bvvIzov5vooYwgZHJhZyDliKTlrppcbiAgICAgICAgICAgICAgICB2YXIgbW91c2Vkb3duU2hhcGUgPSB0aGlzLm1vdXNlZG93blNoYXBlO1xuICAgICAgICAgICAgICAgIHZhciBub3cgPSBldmVudC50aW1lU3RhbXA7XG4gICAgICAgICAgICAgICAgdmFyIHRpbWVXaW5kb3cgPSBub3cgLSB0aGlzLm1vdXNlZG93blRpbWVTdGFtcDtcbiAgICAgICAgICAgICAgICB2YXIgZHggPSBtb3VzZWRvd25Qb2ludC5jbGllbnRYIC0gcG9pbnRJbmZvLmNsaWVudFg7XG4gICAgICAgICAgICAgICAgdmFyIGR5ID0gbW91c2Vkb3duUG9pbnQuY2xpZW50WSAtIHBvaW50SW5mby5jbGllbnRZO1xuICAgICAgICAgICAgICAgIHZhciBkaXN0ID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICAgICAgICAgICAgaWYgKHRpbWVXaW5kb3cgPiAxMjAgfHwgZGlzdCA+IENMSUNLX09GRlNFVCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobW91c2Vkb3duU2hhcGUgJiYgbW91c2Vkb3duU2hhcGUuZ2V0KCdkcmFnZ2FibGUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6K6+572u5LqGIGRyYWdnYWJsZSDnmoQgc2hhcGUg5omN6IO96Kem5Y+RIGRyYWcg55u45YWz55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2luZ1NoYXBlID0gdGhpcy5tb3VzZWRvd25TaGFwZTsgLy8g5ouW5Yqo6byg5qCH54K55LiL5pe255qEIHNoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2luZ1NoYXBlLnNldCgnY2FwdHVyZScsIGZhbHNlKTsgLy8g56aB5q2i57un57ut5ou+5Y+W77yM5ZCm5YiZ5peg5rOV6L+b6KGMIGRyYWdvdmVyLGRyYWdlbnRlcixkcmFnbGVhdmUsZHJvcOeahOWIpOWumlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZ1NoYXBlID0gZHJhZ2dpbmdTaGFwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnc3RhcnQnLCBldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heeQhuaMieS4i+m8oOagh+aXtue8k+WtmOeahOWAvFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghbW91c2Vkb3duU2hhcGUgJiYgY2FudmFzLmdldCgnZHJhZ2dhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruS6hiBkcmFnZ2FibGUg55qEIGNhbnZhcyDmiY3og73op6blj5EgZHJhZyDnm7jlhbPnmoTkuovku7ZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnc3RhcnQnLCBldmVudCwgcG9pbnRJbmZvLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heeQhuaMieS4i+m8oOagh+aXtue8k+WtmOeahOWAvFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRNb3VzZW92ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgcHJlU2hhcGUsIHNoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2Vtb3ZlJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0TW91c2VvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2Vtb3ZlJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOayoeacieaMiemUruaMieS4i+aXtu+8jOWImeebtOaOpeinpuWPkSBtb3VzZSBvdmVyIOebuOWFs+eahOWQhOenjeS6i+S7tlxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRNb3VzZW92ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgcHJlU2hhcGUsIHNoYXBlKTtcbiAgICAgICAgICAgICAgICAvLyDlp4vnu4jop6blj5Hnp7vliqhcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbW92ZScsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g6Kem5Y+R5LqL5Lu2XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZW1pdEV2ZW50ID0gZnVuY3Rpb24gKHR5cGUsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpIHtcbiAgICAgICAgdmFyIGV2ZW50T2JqID0gdGhpcy5fZ2V0RXZlbnRPYmoodHlwZSwgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgIC8vIOWtmOWcqCBzaGFwZSDop6blj5HvvIzliJnov5vooYzlhpLms6HlpITnkIZcbiAgICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgICAgICBldmVudE9iai5zaGFwZSA9IHNoYXBlO1xuICAgICAgICAgICAgLy8g6Kem5Y+RIHNoYXBlIOS4iueahOS6i+S7tlxuICAgICAgICAgICAgZW1pdFRhcmdldEV2ZW50KHNoYXBlLCB0eXBlLCBldmVudE9iaik7XG4gICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBzaGFwZS5nZXRQYXJlbnQoKTtcbiAgICAgICAgICAgIC8vIOaJp+ihjOWGkuazoVxuICAgICAgICAgICAgd2hpbGUgKHBhcmVudF8xKSB7XG4gICAgICAgICAgICAgICAgLy8g5aeU5omY5LqL5Lu26KaB5YWI6Kem5Y+RXG4gICAgICAgICAgICAgICAgcGFyZW50XzEuZW1pdERlbGVnYXRpb24odHlwZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgICAgIC8vIOS6i+S7tuWGkuazoeWBnOatou+8jOS4jeiDveWmqOeijeWnlOaJmOS6i+S7tlxuICAgICAgICAgICAgICAgIGlmICghZXZlbnRPYmoucHJvcGFnYXRpb25TdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1YmJsZUV2ZW50KHBhcmVudF8xLCB0eXBlLCBldmVudE9iaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50T2JqLnByb3BhZ2F0aW9uUGF0aC5wdXNoKHBhcmVudF8xKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRfMSA9IHBhcmVudF8xLmdldFBhcmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g5aaC5p6c5rKh5pyJIHNoYXBlIOebtOaOpeWcqCBjYW52YXMg5LiK6Kem5Y+RXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgICAgICAvLyDnm7TmjqXop6blj5EgY2FudmFzIOS4iueahOS6i+S7tlxuICAgICAgICAgICAgZW1pdFRhcmdldEV2ZW50KGNhbnZhcywgdHlwZSwgZXZlbnRPYmopO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOa4heeQhuS6i+S7tlxuICAgICAgICB0aGlzLl9jbGVhckV2ZW50cygpO1xuICAgICAgICAvLyDmuIXnkIbnvJPlrZjnmoTlr7nosaFcbiAgICAgICAgdGhpcy5jYW52YXMgPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBudWxsO1xuICAgICAgICB0aGlzLm1vdXNlZG93blNoYXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VzZWRvd25UaW1lU3RhbXAgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50Q29udHJvbGxlcjtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ldmVudC1jb250b2xsZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/event/event-contoller.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/event/graph-event.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-base/esm/event/graph-event.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar GraphEvent = /** @class */ (function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () { };\n GraphEvent.prototype.restore = function () { };\n return GraphEvent;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (GraphEvent);\n//# sourceMappingURL=graph-event.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9ldmVudC9ncmFwaC1ldmVudC5qcz9lNWUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0MsZ0RBQWdEO0FBQ2hEO0FBQ0EsQ0FBQztBQUNjLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9ldmVudC9ncmFwaC1ldmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBHcmFwaEV2ZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdyYXBoRXZlbnQodHlwZSwgZXZlbnQpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpuWFgeiuuOWGkuazoVxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYnViYmxlcyA9IHRydWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDop6blj5Hlr7nosaFcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOebkeWQrOWvueixoVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWnlOaJmOWvueixoVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWxlZ2F0ZVRhcmdldCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlp5TmiZjkuovku7bnm5HlkKzlr7nosaHnmoTku6PnkIblr7nosaHvvIzljbMgZXYuZGVsZWdhdGVPYmplY3QgPSBldi5jdXJyZW50VGFyZ2V0LmdldCgnZGVsZWdhdGVPYmplY3QnKVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWxlZ2F0ZU9iamVjdCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbpmLvmraLkuobljp/nlJ/kuovku7ZcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpumYu+atouS8oOaSre+8iOWQkeS4iuWGkuazoe+8iVxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDop6blj5Hkuovku7bnmoTlm77lvaJcbiAgICAgICAgICogQHR5cGUge0lTaGFwZX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuc2hhcGUgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5byA5aeL6Kem5Y+R5LqL5Lu255qE5Zu+5b2iXG4gICAgICAgICAqIEB0eXBlIHtJU2hhcGV9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZyb21TaGFwZSA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDkuovku7bnu5PmnZ/ml7bnmoTop6blj5Hlm77lvaJcbiAgICAgICAgICogQHR5cGUge0lTaGFwZX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudG9TaGFwZSA9IG51bGw7XG4gICAgICAgIC8vIOinpuWPkeS6i+S7tueahOi3r+W+hFxuICAgICAgICB0aGlzLnByb3BhZ2F0aW9uUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLm5hbWUgPSB0eXBlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBldmVudDtcbiAgICAgICAgdGhpcy50aW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmYu+atoua1j+iniOWZqOm7mOiupOeahOihjOS4ulxuICAgICAqL1xuICAgIEdyYXBoRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog6Zi75q2i5YaS5rOhXG4gICAgICovXG4gICAgR3JhcGhFdmVudC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWU7XG4gICAgfTtcbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgIHJldHVybiBcIltFdmVudCAodHlwZT1cIiArIHR5cGUgKyBcIildXCI7XG4gICAgfTtcbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIEdyYXBoRXZlbnQucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiAoKSB7IH07XG4gICAgcmV0dXJuIEdyYXBoRXZlbnQ7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JhcGhFdmVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyYXBoLWV2ZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/event/graph-event.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/index.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g-base/esm/index.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/path */ \"./node_modules/@antv/g-base/esm/util/path.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"PathUtil\", function() { return _util_path__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/g-base/esm/types.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _types__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/@antv/g-base/esm/interfaces.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_interfaces__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _interfaces__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _interfaces__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _event_graph_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./event/graph-event */ \"./node_modules/@antv/g-base/esm/event/graph-event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Event\", function() { return _event_graph_event__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _abstract_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/base */ \"./node_modules/@antv/g-base/esm/abstract/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _abstract_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./abstract/canvas */ \"./node_modules/@antv/g-base/esm/abstract/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractCanvas\", function() { return _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _abstract_group__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./abstract/group */ \"./node_modules/@antv/g-base/esm/abstract/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGroup\", function() { return _abstract_group__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _abstract_shape__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./abstract/shape */ \"./node_modules/@antv/g-base/esm/abstract/shape.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractShape\", function() { return _abstract_shape__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _bbox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bbox */ \"./node_modules/@antv/g-base/esm/bbox/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _bbox__WEBPACK_IMPORTED_MODULE_8__[\"getBBoxMethod\"]; });\n\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util/text */ \"./node_modules/@antv/g-base/esm/util/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"getTextHeight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"assembleFont\"]; });\n\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return _util_util__WEBPACK_IMPORTED_MODULE_10__[\"isAllowCapture\"]; });\n\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./util/matrix */ \"./node_modules/@antv/g-base/esm/util/matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"multiplyVec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"invert\"]; });\n\n/* harmony import */ var _util_offscreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./util/offscreen */ \"./node_modules/@antv/g-base/esm/util/offscreen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return _util_offscreen__WEBPACK_IMPORTED_MODULE_12__[\"getOffScreenContext\"]; });\n\n/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9pbmRleC5qcz82ODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUN3QztBQUNoQjtBQUNLO0FBQzBCO0FBQ0w7QUFDWTtBQUNGO0FBQ0E7QUFDeEM7QUFDbUI7QUFDbUI7QUFDYjtBQUNRO0FBQ0U7QUFDaEQ7QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEcg55qE5Z+656GA5o6l5Y+j5a6a5LmJ5ZKM5omA5pyJ55qE5oq96LGh57G7XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0ICogYXMgUGF0aFV0aWwgZnJvbSAnLi91dGlsL3BhdGgnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFdmVudCB9IGZyb20gJy4vZXZlbnQvZ3JhcGgtZXZlbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBCYXNlIH0gZnJvbSAnLi9hYnN0cmFjdC9iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQWJzdHJhY3RDYW52YXMgfSBmcm9tICcuL2Fic3RyYWN0L2NhbnZhcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0R3JvdXAgfSBmcm9tICcuL2Fic3RyYWN0L2dyb3VwJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQWJzdHJhY3RTaGFwZSB9IGZyb20gJy4vYWJzdHJhY3Qvc2hhcGUnO1xuZXhwb3J0IHsgUGF0aFV0aWwgfTtcbmV4cG9ydCB7IGdldEJCb3hNZXRob2QgfSBmcm9tICcuL2Jib3gnO1xuZXhwb3J0IHsgZ2V0VGV4dEhlaWdodCwgYXNzZW1ibGVGb250IH0gZnJvbSAnLi91dGlsL3RleHQnO1xuZXhwb3J0IHsgaXNBbGxvd0NhcHR1cmUgfSBmcm9tICcuL3V0aWwvdXRpbCc7XG5leHBvcnQgeyBtdWx0aXBseVZlYzIsIGludmVydCB9IGZyb20gJy4vdXRpbC9tYXRyaXgnO1xuZXhwb3J0IHsgZ2V0T2ZmU2NyZWVuQ29udGV4dCB9IGZyb20gJy4vdXRpbC9vZmZzY3JlZW4nO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzAuNS42Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/interfaces.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/interfaces.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("//# sourceMappingURL=interfaces.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9pbnRlcmZhY2VzLmpzP2I1ZDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9pbnRlcmZhY2VzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJmYWNlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/interfaces.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/types.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g-base/esm/types.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS90eXBlcy5qcz9lMWM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vdHlwZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/types.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/util/color.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/util/color.js ***!
\*****************************************************/
/*! exports provided: isColorProp, isGradientColor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isColorProp\", function() { return isColorProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGradientColor\", function() { return isGradientColor; });\nvar isColorProp = function (prop) { return ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop); };\nvar isGradientColor = function (val) { return /^[r,R,L,l]{1}[\\s]*\\(/.test(val); };\n//# sourceMappingURL=color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL2NvbG9yLmpzPzZjYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sbUNBQW1DLHNFQUFzRTtBQUN6RyxzQ0FBc0Msb0JBQW9CLEVBQUUsbUJBQW1CO0FBQ3RGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vdXRpbC9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgaXNDb2xvclByb3AgPSBmdW5jdGlvbiAocHJvcCkgeyByZXR1cm4gWydmaWxsJywgJ3N0cm9rZScsICdmaWxsU3R5bGUnLCAnc3Ryb2tlU3R5bGUnXS5pbmNsdWRlcyhwcm9wKTsgfTtcbmV4cG9ydCB2YXIgaXNHcmFkaWVudENvbG9yID0gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gL15bcixSLEwsbF17MX1bXFxzXSpcXCgvLnRlc3QodmFsKTsgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbG9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/color.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/util/matrix.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-base/esm/util/matrix.js ***!
\******************************************************/
/*! exports provided: multiplyMatrix, multiplyVec2, invert */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyMatrix\", function() { return multiplyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return multiplyVec2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nfunction multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nfunction multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nfunction invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n//# sourceMappingURL=matrix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL21hdHJpeC5qcz82OTI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL3V0aWwvbWF0cml4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOefqemYtei/kOeul++8jOacrOadpeaYr+imgeW8leWFpSBnbC1tYXRyaXgsIOS9huaYr+iAg+iZkeWIsCBnLW1vYmlsZSDlr7nlpKflsI/mnInpmZDliLbvvIzlkIzml7YgZy13ZWJnbCDkvb/nlKjnmoQgbWF0cml4IOS4jeS4gOiHtFxuICog5omA5Lul77yM6L+Z6YeM5LuF5a6e546wIDJEIOWHoOS4qui/kOeul++8jOS4iuWxguiHquW3seW8leWFpSBnbC1tYXRyaXhcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG4vKipcbiAqIDPpmLbnn6npmLXnm7jkuZhcbiAqIEBwYXJhbSB7bnVtYmVyW119IGEg55+p6Zi1MVxuICogQHBhcmFtIHtudW1iZXJbXX0gYiDnn6npmLUyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseU1hdHJpeChhLCBiKSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciBhMDAgPSBhWzBdO1xuICAgIHZhciBhMDEgPSBhWzFdO1xuICAgIHZhciBhMDIgPSBhWzJdO1xuICAgIHZhciBhMTAgPSBhWzNdO1xuICAgIHZhciBhMTEgPSBhWzRdO1xuICAgIHZhciBhMTIgPSBhWzVdO1xuICAgIHZhciBhMjAgPSBhWzZdO1xuICAgIHZhciBhMjEgPSBhWzddO1xuICAgIHZhciBhMjIgPSBhWzhdO1xuICAgIHZhciBiMDAgPSBiWzBdO1xuICAgIHZhciBiMDEgPSBiWzFdO1xuICAgIHZhciBiMDIgPSBiWzJdO1xuICAgIHZhciBiMTAgPSBiWzNdO1xuICAgIHZhciBiMTEgPSBiWzRdO1xuICAgIHZhciBiMTIgPSBiWzVdO1xuICAgIHZhciBiMjAgPSBiWzZdO1xuICAgIHZhciBiMjEgPSBiWzddO1xuICAgIHZhciBiMjIgPSBiWzhdO1xuICAgIG91dFswXSA9IGIwMCAqIGEwMCArIGIwMSAqIGExMCArIGIwMiAqIGEyMDtcbiAgICBvdXRbMV0gPSBiMDAgKiBhMDEgKyBiMDEgKiBhMTEgKyBiMDIgKiBhMjE7XG4gICAgb3V0WzJdID0gYjAwICogYTAyICsgYjAxICogYTEyICsgYjAyICogYTIyO1xuICAgIG91dFszXSA9IGIxMCAqIGEwMCArIGIxMSAqIGExMCArIGIxMiAqIGEyMDtcbiAgICBvdXRbNF0gPSBiMTAgKiBhMDEgKyBiMTEgKiBhMTEgKyBiMTIgKiBhMjE7XG4gICAgb3V0WzVdID0gYjEwICogYTAyICsgYjExICogYTEyICsgYjEyICogYTIyO1xuICAgIG91dFs2XSA9IGIyMCAqIGEwMCArIGIyMSAqIGExMCArIGIyMiAqIGEyMDtcbiAgICBvdXRbN10gPSBiMjAgKiBhMDEgKyBiMjEgKiBhMTEgKyBiMjIgKiBhMjE7XG4gICAgb3V0WzhdID0gYjIwICogYTAyICsgYjIxICogYTEyICsgYjIyICogYTIyO1xuICAgIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIDPpmLbnn6npmLXlkIwy6Zi25ZCR6YeP55u45LmYXG4gKiBAcGFyYW0ge251bWJlcltdfSBtIOefqemYtVxuICogQHBhcmFtIHtudW1iZXJbXX0gdiDkuozpmLblkJHph49cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5VmVjMihtLCB2KSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciB4ID0gdlswXTtcbiAgICB2YXIgeSA9IHZbMV07XG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzNdICogeSArIG1bNl07XG4gICAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzRdICogeSArIG1bN107XG4gICAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICog55+p6Zi155qE6YCGXG4gKiBAcGFyYW0ge251bWJlcltdfSBhIOefqemYtVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KGEpIHtcbiAgICB2YXIgb3V0ID0gW107XG4gICAgdmFyIGEwMCA9IGFbMF07XG4gICAgdmFyIGEwMSA9IGFbMV07XG4gICAgdmFyIGEwMiA9IGFbMl07XG4gICAgdmFyIGExMCA9IGFbM107XG4gICAgdmFyIGExMSA9IGFbNF07XG4gICAgdmFyIGExMiA9IGFbNV07XG4gICAgdmFyIGEyMCA9IGFbNl07XG4gICAgdmFyIGEyMSA9IGFbN107XG4gICAgdmFyIGEyMiA9IGFbOF07XG4gICAgdmFyIGIwMSA9IGEyMiAqIGExMSAtIGExMiAqIGEyMTtcbiAgICB2YXIgYjExID0gLWEyMiAqIGExMCArIGExMiAqIGEyMDtcbiAgICB2YXIgYjIxID0gYTIxICogYTEwIC0gYTExICogYTIwO1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnRcbiAgICB2YXIgZGV0ID0gYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxO1xuICAgIGlmICghZGV0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBkZXQgPSAxLjAgLyBkZXQ7XG4gICAgb3V0WzBdID0gYjAxICogZGV0O1xuICAgIG91dFsxXSA9ICgtYTIyICogYTAxICsgYTAyICogYTIxKSAqIGRldDtcbiAgICBvdXRbMl0gPSAoYTEyICogYTAxIC0gYTAyICogYTExKSAqIGRldDtcbiAgICBvdXRbM10gPSBiMTEgKiBkZXQ7XG4gICAgb3V0WzRdID0gKGEyMiAqIGEwMCAtIGEwMiAqIGEyMCkgKiBkZXQ7XG4gICAgb3V0WzVdID0gKC1hMTIgKiBhMDAgKyBhMDIgKiBhMTApICogZGV0O1xuICAgIG91dFs2XSA9IGIyMSAqIGRldDtcbiAgICBvdXRbN10gPSAoLWEyMSAqIGEwMCArIGEwMSAqIGEyMCkgKiBkZXQ7XG4gICAgb3V0WzhdID0gKGExMSAqIGEwMCAtIGEwMSAqIGExMCkgKiBkZXQ7XG4gICAgcmV0dXJuIG91dDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hdHJpeC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/matrix.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/util/offscreen.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-base/esm/util/offscreen.js ***!
\*********************************************************/
/*! exports provided: getOffScreenContext */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return getOffScreenContext; });\n// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nfunction getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n//# sourceMappingURL=offscreen.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL29mZnNjcmVlbi5qcz85NmRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL29mZnNjcmVlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOWFqOWxgOiuvue9ruS4gOS4quWUr+S4gOemu+Wxj+eahCBjdHjvvIznlKjkuo7orqHnrpcgaXNQb2ludEluUGF0aFxudmFyIG9mZlNjcmVlbkN0eCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZ2V0T2ZmU2NyZWVuQ29udGV4dCgpIHtcbiAgICBpZiAoIW9mZlNjcmVlbkN0eCkge1xuICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IDE7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSAxO1xuICAgICAgICBvZmZTY3JlZW5DdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mZlNjcmVlbkN0eDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9mZnNjcmVlbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/offscreen.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/util/path.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/util/path.js ***!
\****************************************************/
/*! exports provided: catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catmullRomToBezier\", function() { return catmullRomToBezier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPath\", function() { return fillPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPathByDiff\", function() { return fillPathByDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPath\", function() { return formatPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return intersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathArray\", function() { return parsePathArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathString\", function() { return parsePathString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToAbsolute\", function() { return pathToAbsolute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToCurve\", function() { return pathToCurve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectPath\", function() { return rectPath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function (crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n }\n else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n }\n else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n }\n else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n }\n else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n return d;\n};\nvar ellipsePath = function (x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n }\n else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n }\n else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n }\n else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n }\n else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n }\n else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function (x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function (x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function (path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function (path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in\n {\n T: 1,\n Q: 1,\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n var fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C')\n pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [\n -0.1252,\n 0.1252,\n -0.3678,\n 0.3678,\n -0.5873,\n 0.5873,\n -0.7699,\n 0.7699,\n -0.9041,\n 0.9041,\n -0.9816,\n 0.9816,\n ];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function (x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y))));\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function (source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\n\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3BhdGguanM/YjZmYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLG1CQUFtQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLFFBQVE7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxRQUFRO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxtREFBbUQsUUFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxRQUFRO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsUUFBUTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0Isd0NBQXdDO0FBQ3hDO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMERBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQix1QkFBdUIsUUFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxRQUFRO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxRQUFRO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1QkFBdUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkJBQTJCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQyxzQkFBc0I7QUFDdEI7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsZ0RBQWdEO0FBQzlFO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxRQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFVBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMko7QUFDM0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgU1BBQ0VTID0gJ1xceDA5XFx4MGFcXHgwYlxceDBjXFx4MGRcXHgyMFxceGEwXFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMFxcdTIwMjhcXHUyMDI5JztcbnZhciBQQVRIX0NPTU1BTkQgPSBuZXcgUmVnRXhwKFwiKFthLXpdKVtcIiArIFNQQUNFUyArIFwiLF0qKCgtP1xcXFxkKlxcXFwuP1xcXFxkKig/OmVbXFxcXC0rXT9cXFxcZCspP1tcIiArIFNQQUNFUyArIFwiXSosP1tcIiArIFNQQUNFUyArIFwiXSopKylcIiwgJ2lnJyk7XG52YXIgUEFUSF9WQUxVRVMgPSBuZXcgUmVnRXhwKFwiKC0/XFxcXGQqXFxcXC4/XFxcXGQqKD86ZVtcXFxcLStdP1xcXFxkKyk/KVtcIiArIFNQQUNFUyArIFwiXSosP1tcIiArIFNQQUNFUyArIFwiXSpcIiwgJ2lnJyk7XG4vLyBQYXJzZSBnaXZlbiBwYXRoIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIGFycmF5cyBvZiBwYXRoIHNlZ21lbnRzXG52YXIgcGFyc2VQYXRoU3RyaW5nID0gZnVuY3Rpb24gKHBhdGhTdHJpbmcpIHtcbiAgICBpZiAoIXBhdGhTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHBhdGhTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBwYXRoU3RyaW5nO1xuICAgIH1cbiAgICB2YXIgcGFyYW1Db3VudHMgPSB7XG4gICAgICAgIGE6IDcsXG4gICAgICAgIGM6IDYsXG4gICAgICAgIG86IDIsXG4gICAgICAgIGg6IDEsXG4gICAgICAgIGw6IDIsXG4gICAgICAgIG06IDIsXG4gICAgICAgIHI6IDQsXG4gICAgICAgIHE6IDQsXG4gICAgICAgIHM6IDQsXG4gICAgICAgIHQ6IDIsXG4gICAgICAgIHY6IDEsXG4gICAgICAgIHU6IDMsXG4gICAgICAgIHo6IDAsXG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IFtdO1xuICAgIFN0cmluZyhwYXRoU3RyaW5nKS5yZXBsYWNlKFBBVEhfQ09NTUFORCwgZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgICAgICB2YXIgbmFtZSA9IGIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYy5yZXBsYWNlKFBBVEhfVkFMVUVTLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgYiAmJiBwYXJhbXMucHVzaCgrYik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ20nICYmIHBhcmFtcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goW2JdLmNvbmNhdChwYXJhbXMuc3BsaWNlKDAsIDIpKSk7XG4gICAgICAgICAgICBuYW1lID0gJ2wnO1xuICAgICAgICAgICAgYiA9IGIgPT09ICdtJyA/ICdsJyA6ICdMJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ28nICYmIHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGRhdGEucHVzaChbYiwgcGFyYW1zWzBdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09ICdyJykge1xuICAgICAgICAgICAgZGF0YS5wdXNoKFtiXS5jb25jYXQocGFyYW1zKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAocGFyYW1zLmxlbmd0aCA+PSBwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChbYl0uY29uY2F0KHBhcmFtcy5zcGxpY2UoMCwgcGFyYW1Db3VudHNbbmFtZV0pKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGhTdHJpbmc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuLy8gaHR0cDovL3NjaGVwZXJzLmNjL2dldHRpbmctdG8tdGhlLXBvaW50XG52YXIgY2F0bXVsbFJvbVRvQmV6aWVyID0gZnVuY3Rpb24gKGNycCwgeikge1xuICAgIHZhciBkID0gW107XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGZvciAodmFyIGkgPSAwLCBpTGVuID0gY3JwLmxlbmd0aDsgaUxlbiAtIDIgKiAheiA+IGk7IGkgKz0gMikge1xuICAgICAgICB2YXIgcCA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiArY3JwW2kgLSAyXSxcbiAgICAgICAgICAgICAgICB5OiArY3JwW2kgLSAxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogK2NycFtpXSxcbiAgICAgICAgICAgICAgICB5OiArY3JwW2kgKyAxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogK2NycFtpICsgMl0sXG4gICAgICAgICAgICAgICAgeTogK2NycFtpICsgM10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6ICtjcnBbaSArIDRdLFxuICAgICAgICAgICAgICAgIHk6ICtjcnBbaSArIDVdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHopIHtcbiAgICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgICAgIHBbMF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICtjcnBbaUxlbiAtIDJdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwW2lMZW4gLSAxXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaUxlbiAtIDQgPT09IGkpIHtcbiAgICAgICAgICAgICAgICBwWzNdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwWzBdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwWzFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpTGVuIC0gMiA9PT0gaSkge1xuICAgICAgICAgICAgICAgIHBbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICtjcnBbMF0sXG4gICAgICAgICAgICAgICAgICAgIHk6ICtjcnBbMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBwWzNdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwWzJdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwWzNdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaUxlbiAtIDQgPT09IGkpIHtcbiAgICAgICAgICAgICAgICBwWzNdID0gcFsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpKSB7XG4gICAgICAgICAgICAgICAgcFswXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogK2NycFtpXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFtpICsgMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkLnB1c2goW1xuICAgICAgICAgICAgJ0MnLFxuICAgICAgICAgICAgKC1wWzBdLnggKyA2ICogcFsxXS54ICsgcFsyXS54KSAvIDYsXG4gICAgICAgICAgICAoLXBbMF0ueSArIDYgKiBwWzFdLnkgKyBwWzJdLnkpIC8gNixcbiAgICAgICAgICAgIChwWzFdLnggKyA2ICogcFsyXS54IC0gcFszXS54KSAvIDYsXG4gICAgICAgICAgICAocFsxXS55ICsgNiAqIHBbMl0ueSAtIHBbM10ueSkgLyA2LFxuICAgICAgICAgICAgcFsyXS54LFxuICAgICAgICAgICAgcFsyXS55LFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcmV0dXJuIGQ7XG59O1xudmFyIGVsbGlwc2VQYXRoID0gZnVuY3Rpb24gKHgsIHksIHJ4LCByeSwgYSkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBpZiAoYSA9PT0gbnVsbCAmJiByeSA9PT0gbnVsbCkge1xuICAgICAgICByeSA9IHJ4O1xuICAgIH1cbiAgICB4ID0gK3g7XG4gICAgeSA9ICt5O1xuICAgIHJ4ID0gK3J4O1xuICAgIHJ5ID0gK3J5O1xuICAgIGlmIChhICE9PSBudWxsKSB7XG4gICAgICAgIHZhciByYWQgPSBNYXRoLlBJIC8gMTgwO1xuICAgICAgICB2YXIgeDEgPSB4ICsgcnggKiBNYXRoLmNvcygtcnkgKiByYWQpO1xuICAgICAgICB2YXIgeDIgPSB4ICsgcnggKiBNYXRoLmNvcygtYSAqIHJhZCk7XG4gICAgICAgIHZhciB5MSA9IHkgKyByeCAqIE1hdGguc2luKC1yeSAqIHJhZCk7XG4gICAgICAgIHZhciB5MiA9IHkgKyByeCAqIE1hdGguc2luKC1hICogcmFkKTtcbiAgICAgICAgcmVzID0gW1xuICAgICAgICAgICAgWydNJywgeDEsIHkxXSxcbiAgICAgICAgICAgIFsnQScsIHJ4LCByeCwgMCwgKyhhIC0gcnkgPiAxODApLCAwLCB4MiwgeTJdLFxuICAgICAgICBdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzID0gW1snTScsIHgsIHldLCBbJ20nLCAwLCAtcnldLCBbJ2EnLCByeCwgcnksIDAsIDEsIDEsIDAsIDIgKiByeV0sIFsnYScsIHJ4LCByeSwgMCwgMSwgMSwgMCwgLTIgKiByeV0sIFsneiddXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgcGF0aFRvQWJzb2x1dGUgPSBmdW5jdGlvbiAocGF0aEFycmF5KSB7XG4gICAgcGF0aEFycmF5ID0gcGFyc2VQYXRoU3RyaW5nKHBhdGhBcnJheSk7XG4gICAgaWYgKCFwYXRoQXJyYXkgfHwgIXBhdGhBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCAwLCAwXV07XG4gICAgfVxuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIHZhciBteCA9IDA7XG4gICAgdmFyIG15ID0gMDtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBwYTA7XG4gICAgdmFyIGRvdHM7XG4gICAgaWYgKHBhdGhBcnJheVswXVswXSA9PT0gJ00nKSB7XG4gICAgICAgIHggPSArcGF0aEFycmF5WzBdWzFdO1xuICAgICAgICB5ID0gK3BhdGhBcnJheVswXVsyXTtcbiAgICAgICAgbXggPSB4O1xuICAgICAgICBteSA9IHk7XG4gICAgICAgIHN0YXJ0Kys7XG4gICAgICAgIHJlc1swXSA9IFsnTScsIHgsIHldO1xuICAgIH1cbiAgICB2YXIgY3J6ID0gcGF0aEFycmF5Lmxlbmd0aCA9PT0gMyAmJlxuICAgICAgICBwYXRoQXJyYXlbMF1bMF0gPT09ICdNJyAmJlxuICAgICAgICBwYXRoQXJyYXlbMV1bMF0udG9VcHBlckNhc2UoKSA9PT0gJ1InICYmXG4gICAgICAgIHBhdGhBcnJheVsyXVswXS50b1VwcGVyQ2FzZSgpID09PSAnWic7XG4gICAgZm9yICh2YXIgciA9IHZvaWQgMCwgcGEgPSB2b2lkIDAsIGkgPSBzdGFydCwgaWkgPSBwYXRoQXJyYXkubGVuZ3RoOyBpIDwgaWk7IGkrKykge1xuICAgICAgICByZXMucHVzaCgociA9IFtdKSk7XG4gICAgICAgIHBhID0gcGF0aEFycmF5W2ldO1xuICAgICAgICBwYTAgPSBwYVswXTtcbiAgICAgICAgaWYgKHBhMCAhPT0gcGEwLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIHJbMF0gPSBwYTAudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoclswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICByWzFdID0gcGFbMV07XG4gICAgICAgICAgICAgICAgICAgIHJbMl0gPSBwYVsyXTtcbiAgICAgICAgICAgICAgICAgICAgclszXSA9IHBhWzNdO1xuICAgICAgICAgICAgICAgICAgICByWzRdID0gcGFbNF07XG4gICAgICAgICAgICAgICAgICAgIHJbNV0gPSBwYVs1XTtcbiAgICAgICAgICAgICAgICAgICAgcls2XSA9ICtwYVs2XSArIHg7XG4gICAgICAgICAgICAgICAgICAgIHJbN10gPSArcGFbN10gKyB5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICAgICAgclsxXSA9ICtwYVsxXSArIHk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICByWzFdID0gK3BhWzFdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUic6XG4gICAgICAgICAgICAgICAgICAgIGRvdHMgPSBbeCwgeV0uY29uY2F0KHBhLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDIsIGpqID0gZG90cy5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb3RzW2pdID0gK2RvdHNbal0gKyB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZG90c1srK2pdID0gK2RvdHNbal0gKyB5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gcmVzLmNvbmNhdChjYXRtdWxsUm9tVG9CZXppZXIoZG90cywgY3J6KSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ08nOlxuICAgICAgICAgICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGRvdHMgPSBlbGxpcHNlUGF0aCh4LCB5LCBwYVsxXSwgcGFbMl0pO1xuICAgICAgICAgICAgICAgICAgICBkb3RzLnB1c2goZG90c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZG90cyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdLCBwYVszXSkpO1xuICAgICAgICAgICAgICAgICAgICByID0gWydVJ10uY29uY2F0KHJlc1tyZXMubGVuZ3RoIC0gMV0uc2xpY2UoLTIpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG14ID0gK3BhWzFdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgbXkgPSArcGFbMl0gKyB5O1xuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gZm9yIGxpbnRcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMSwgamogPSBwYS5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByW2pdID0gK3BhW2pdICsgKGogJSAyID8geCA6IHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGEwID09PSAnUicpIHtcbiAgICAgICAgICAgIGRvdHMgPSBbeCwgeV0uY29uY2F0KHBhLnNsaWNlKDEpKTtcbiAgICAgICAgICAgIHJlcy5wb3AoKTtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoY2F0bXVsbFJvbVRvQmV6aWVyKGRvdHMsIGNyeikpO1xuICAgICAgICAgICAgciA9IFsnUiddLmNvbmNhdChwYS5zbGljZSgtMikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhMCA9PT0gJ08nKSB7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICBkb3RzID0gZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdKTtcbiAgICAgICAgICAgIGRvdHMucHVzaChkb3RzWzBdKTtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZG90cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGEwID09PSAnVScpIHtcbiAgICAgICAgICAgIHJlcy5wb3AoKTtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdLCBwYVszXSkpO1xuICAgICAgICAgICAgciA9IFsnVSddLmNvbmNhdChyZXNbcmVzLmxlbmd0aCAtIDFdLnNsaWNlKC0yKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBwYS5sZW5ndGg7IGsgPCBrazsgaysrKSB7XG4gICAgICAgICAgICAgICAgcltrXSA9IHBhW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhMCA9IHBhMC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBpZiAocGEwICE9PSAnTycpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoclswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgICAgICB4ID0gK214O1xuICAgICAgICAgICAgICAgICAgICB5ID0gK215O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgeCA9IHJbMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1YnOlxuICAgICAgICAgICAgICAgICAgICB5ID0gclsxXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG14ID0gcltyLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgICAgICBteSA9IHJbci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvciBsaW50XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgeCA9IHJbci5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgeSA9IHJbci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBsMmMgPSBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4gW3gxLCB5MSwgeDIsIHkyLCB4MiwgeTJdO1xufTtcbnZhciBxMmMgPSBmdW5jdGlvbiAoeDEsIHkxLCBheCwgYXksIHgyLCB5Mikge1xuICAgIHZhciBfMTMgPSAxIC8gMztcbiAgICB2YXIgXzIzID0gMiAvIDM7XG4gICAgcmV0dXJuIFtfMTMgKiB4MSArIF8yMyAqIGF4LCBfMTMgKiB5MSArIF8yMyAqIGF5LCBfMTMgKiB4MiArIF8yMyAqIGF4LCBfMTMgKiB5MiArIF8yMyAqIGF5LCB4MiwgeTJdO1xufTtcbnZhciBhMmMgPSBmdW5jdGlvbiAoeDEsIHkxLCByeCwgcnksIGFuZ2xlLCBsYXJnZV9hcmNfZmxhZywgc3dlZXBfZmxhZywgeDIsIHkyLCByZWN1cnNpdmUpIHtcbiAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvZiB3aGVyZSB0aGlzIG1hdGggY2FtZSBmcm9tIHZpc2l0OlxuICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ltcGxub3RlLmh0bWwjQXJjSW1wbGVtZW50YXRpb25Ob3Rlc1xuICAgIGlmIChyeCA9PT0gcnkpIHtcbiAgICAgICAgcnggKz0gMTtcbiAgICB9XG4gICAgdmFyIF8xMjAgPSAoTWF0aC5QSSAqIDEyMCkgLyAxODA7XG4gICAgdmFyIHJhZCA9IChNYXRoLlBJIC8gMTgwKSAqICgrYW5nbGUgfHwgMCk7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciB4eTtcbiAgICB2YXIgZjE7XG4gICAgdmFyIGYyO1xuICAgIHZhciBjeDtcbiAgICB2YXIgY3k7XG4gICAgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uICh4LCB5LCByYWQpIHtcbiAgICAgICAgdmFyIFggPSB4ICogTWF0aC5jb3MocmFkKSAtIHkgKiBNYXRoLnNpbihyYWQpO1xuICAgICAgICB2YXIgWSA9IHggKiBNYXRoLnNpbihyYWQpICsgeSAqIE1hdGguY29zKHJhZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBYLFxuICAgICAgICAgICAgeTogWSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGlmICghcmVjdXJzaXZlKSB7XG4gICAgICAgIHh5ID0gcm90YXRlKHgxLCB5MSwgLXJhZCk7XG4gICAgICAgIHgxID0geHkueDtcbiAgICAgICAgeTEgPSB4eS55O1xuICAgICAgICB4eSA9IHJvdGF0ZSh4MiwgeTIsIC1yYWQpO1xuICAgICAgICB4MiA9IHh5Lng7XG4gICAgICAgIHkyID0geHkueTtcbiAgICAgICAgaWYgKHgxID09PSB4MiAmJiB5MSA9PT0geTIpIHtcbiAgICAgICAgICAgIC8vIOiLpeW8p+eahOi1t+Wni+eCueWSjOe7iOeCuemHjeWPoOWImemUmeW8gOS4gOeCuVxuICAgICAgICAgICAgeDIgKz0gMTtcbiAgICAgICAgICAgIHkyICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc3QgY29zID0gTWF0aC5jb3MoTWF0aC5QSSAvIDE4MCAqIGFuZ2xlKTtcbiAgICAgICAgLy8gY29uc3Qgc2luID0gTWF0aC5zaW4oTWF0aC5QSSAvIDE4MCAqIGFuZ2xlKTtcbiAgICAgICAgdmFyIHggPSAoeDEgLSB4MikgLyAyO1xuICAgICAgICB2YXIgeSA9ICh5MSAtIHkyKSAvIDI7XG4gICAgICAgIHZhciBoID0gKHggKiB4KSAvIChyeCAqIHJ4KSArICh5ICogeSkgLyAocnkgKiByeSk7XG4gICAgICAgIGlmIChoID4gMSkge1xuICAgICAgICAgICAgaCA9IE1hdGguc3FydChoKTtcbiAgICAgICAgICAgIHJ4ID0gaCAqIHJ4O1xuICAgICAgICAgICAgcnkgPSBoICogcnk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ4MiA9IHJ4ICogcng7XG4gICAgICAgIHZhciByeTIgPSByeSAqIHJ5O1xuICAgICAgICB2YXIgayA9IChsYXJnZV9hcmNfZmxhZyA9PT0gc3dlZXBfZmxhZyA/IC0xIDogMSkgKlxuICAgICAgICAgICAgTWF0aC5zcXJ0KE1hdGguYWJzKChyeDIgKiByeTIgLSByeDIgKiB5ICogeSAtIHJ5MiAqIHggKiB4KSAvIChyeDIgKiB5ICogeSArIHJ5MiAqIHggKiB4KSkpO1xuICAgICAgICBjeCA9IChrICogcnggKiB5KSAvIHJ5ICsgKHgxICsgeDIpIC8gMjtcbiAgICAgICAgY3kgPSAoayAqIC1yeSAqIHgpIC8gcnggKyAoeTEgKyB5MikgLyAyO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGYxID0gTWF0aC5hc2luKCgoeTEgLSBjeSkgLyByeSkudG9GaXhlZCg5KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZjIgPSBNYXRoLmFzaW4oKCh5MiAtIGN5KSAvIHJ5KS50b0ZpeGVkKDkpKTtcbiAgICAgICAgZjEgPSB4MSA8IGN4ID8gTWF0aC5QSSAtIGYxIDogZjE7XG4gICAgICAgIGYyID0geDIgPCBjeCA/IE1hdGguUEkgLSBmMiA6IGYyO1xuICAgICAgICBmMSA8IDAgJiYgKGYxID0gTWF0aC5QSSAqIDIgKyBmMSk7XG4gICAgICAgIGYyIDwgMCAmJiAoZjIgPSBNYXRoLlBJICogMiArIGYyKTtcbiAgICAgICAgaWYgKHN3ZWVwX2ZsYWcgJiYgZjEgPiBmMikge1xuICAgICAgICAgICAgZjEgPSBmMSAtIE1hdGguUEkgKiAyO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3dlZXBfZmxhZyAmJiBmMiA+IGYxKSB7XG4gICAgICAgICAgICBmMiA9IGYyIC0gTWF0aC5QSSAqIDI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGYxID0gcmVjdXJzaXZlWzBdO1xuICAgICAgICBmMiA9IHJlY3Vyc2l2ZVsxXTtcbiAgICAgICAgY3ggPSByZWN1cnNpdmVbMl07XG4gICAgICAgIGN5ID0gcmVjdXJzaXZlWzNdO1xuICAgIH1cbiAgICB2YXIgZGYgPSBmMiAtIGYxO1xuICAgIGlmIChNYXRoLmFicyhkZikgPiBfMTIwKSB7XG4gICAgICAgIHZhciBmMm9sZCA9IGYyO1xuICAgICAgICB2YXIgeDJvbGQgPSB4MjtcbiAgICAgICAgdmFyIHkyb2xkID0geTI7XG4gICAgICAgIGYyID0gZjEgKyBfMTIwICogKHN3ZWVwX2ZsYWcgJiYgZjIgPiBmMSA/IDEgOiAtMSk7XG4gICAgICAgIHgyID0gY3ggKyByeCAqIE1hdGguY29zKGYyKTtcbiAgICAgICAgeTIgPSBjeSArIHJ5ICogTWF0aC5zaW4oZjIpO1xuICAgICAgICByZXMgPSBhMmMoeDIsIHkyLCByeCwgcnksIGFuZ2xlLCAwLCBzd2VlcF9mbGFnLCB4Mm9sZCwgeTJvbGQsIFtmMiwgZjJvbGQsIGN4LCBjeV0pO1xuICAgIH1cbiAgICBkZiA9IGYyIC0gZjE7XG4gICAgdmFyIGMxID0gTWF0aC5jb3MoZjEpO1xuICAgIHZhciBzMSA9IE1hdGguc2luKGYxKTtcbiAgICB2YXIgYzIgPSBNYXRoLmNvcyhmMik7XG4gICAgdmFyIHMyID0gTWF0aC5zaW4oZjIpO1xuICAgIHZhciB0ID0gTWF0aC50YW4oZGYgLyA0KTtcbiAgICB2YXIgaHggPSAoNCAvIDMpICogcnggKiB0O1xuICAgIHZhciBoeSA9ICg0IC8gMykgKiByeSAqIHQ7XG4gICAgdmFyIG0xID0gW3gxLCB5MV07XG4gICAgdmFyIG0yID0gW3gxICsgaHggKiBzMSwgeTEgLSBoeSAqIGMxXTtcbiAgICB2YXIgbTMgPSBbeDIgKyBoeCAqIHMyLCB5MiAtIGh5ICogYzJdO1xuICAgIHZhciBtNCA9IFt4MiwgeTJdO1xuICAgIG0yWzBdID0gMiAqIG0xWzBdIC0gbTJbMF07XG4gICAgbTJbMV0gPSAyICogbTFbMV0gLSBtMlsxXTtcbiAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgIHJldHVybiBbbTIsIG0zLCBtNF0uY29uY2F0KHJlcyk7XG4gICAgfVxuICAgIHJlcyA9IFttMiwgbTMsIG00XS5jb25jYXQocmVzKS5qb2luKCkuc3BsaXQoJywnKTtcbiAgICB2YXIgbmV3cmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGlpID0gcmVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgbmV3cmVzW2ldID0gaSAlIDIgPyByb3RhdGUocmVzW2kgLSAxXSwgcmVzW2ldLCByYWQpLnkgOiByb3RhdGUocmVzW2ldLCByZXNbaSArIDFdLCByYWQpLng7XG4gICAgfVxuICAgIHJldHVybiBuZXdyZXM7XG59O1xudmFyIHBhdGhUb0N1cnZlID0gZnVuY3Rpb24gKHBhdGgsIHBhdGgyKSB7XG4gICAgdmFyIHAgPSBwYXRoVG9BYnNvbHV0ZShwYXRoKTtcbiAgICB2YXIgcDIgPSBwYXRoMiAmJiBwYXRoVG9BYnNvbHV0ZShwYXRoMik7XG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICBieDogMCxcbiAgICAgICAgYnk6IDAsXG4gICAgICAgIFg6IDAsXG4gICAgICAgIFk6IDAsXG4gICAgICAgIHF4OiBudWxsLFxuICAgICAgICBxeTogbnVsbCxcbiAgICB9O1xuICAgIHZhciBhdHRyczIgPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIGJ4OiAwLFxuICAgICAgICBieTogMCxcbiAgICAgICAgWDogMCxcbiAgICAgICAgWTogMCxcbiAgICAgICAgcXg6IG51bGwsXG4gICAgICAgIHF5OiBudWxsLFxuICAgIH07XG4gICAgdmFyIHBjb21zMSA9IFtdOyAvLyBwYXRoIGNvbW1hbmRzIG9mIG9yaWdpbmFsIHBhdGggcFxuICAgIHZhciBwY29tczIgPSBbXTsgLy8gcGF0aCBjb21tYW5kcyBvZiBvcmlnaW5hbCBwYXRoIHAyXG4gICAgdmFyIHBmaXJzdCA9ICcnOyAvLyB0ZW1wb3JhcnkgaG9sZGVyIGZvciBvcmlnaW5hbCBwYXRoIGNvbW1hbmRcbiAgICB2YXIgcGNvbSA9ICcnOyAvLyBob2xkZXIgZm9yIHByZXZpb3VzIHBhdGggY29tbWFuZCBvZiBvcmlnaW5hbCBwYXRoXG4gICAgdmFyIGlpO1xuICAgIHZhciBwcm9jZXNzUGF0aCA9IGZ1bmN0aW9uIChwYXRoLCBkLCBwY29tKSB7XG4gICAgICAgIHZhciBueDtcbiAgICAgICAgdmFyIG55O1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbJ0MnLCBkLngsIGQueSwgZC54LCBkLnksIGQueCwgZC55XTtcbiAgICAgICAgfVxuICAgICAgICAhKHBhdGhbMF0gaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUOiAxLFxuICAgICAgICAgICAgICAgIFE6IDEsXG4gICAgICAgICAgICB9KSAmJiAoZC5xeCA9IGQucXkgPSBudWxsKTtcbiAgICAgICAgc3dpdGNoIChwYXRoWzBdKSB7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBkLlggPSBwYXRoWzFdO1xuICAgICAgICAgICAgICAgIGQuWSA9IHBhdGhbMl07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGEyYy5hcHBseSgwLCBbZC54LCBkLnldLmNvbmNhdChwYXRoLnNsaWNlKDEpKSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgaWYgKHBjb20gPT09ICdDJyB8fCBwY29tID09PSAnUycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gXCJTXCIgY2FzZSB3ZSBoYXZlIHRvIHRha2UgaW50byBhY2NvdW50LCBpZiB0aGUgcHJldmlvdXMgY29tbWFuZCBpcyBDL1MuXG4gICAgICAgICAgICAgICAgICAgIG54ID0gZC54ICogMiAtIGQuYng7IC8vIEFuZCByZWZsZWN0IHRoZSBwcmV2aW91c1xuICAgICAgICAgICAgICAgICAgICBueSA9IGQueSAqIDIgLSBkLmJ5OyAvLyBjb21tYW5kJ3MgY29udHJvbCBwb2ludCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb2ludC5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9yIHNvbWUgZWxzZSBvciBub3RoaW5nXG4gICAgICAgICAgICAgICAgICAgIG54ID0gZC54O1xuICAgICAgICAgICAgICAgICAgICBueSA9IGQueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQycsIG54LCBueV0uY29uY2F0KHBhdGguc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgaWYgKHBjb20gPT09ICdRJyB8fCBwY29tID09PSAnVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gXCJUXCIgY2FzZSB3ZSBoYXZlIHRvIHRha2UgaW50byBhY2NvdW50LCBpZiB0aGUgcHJldmlvdXMgY29tbWFuZCBpcyBRL1QuXG4gICAgICAgICAgICAgICAgICAgIGQucXggPSBkLnggKiAyIC0gZC5xeDsgLy8gQW5kIG1ha2UgYSByZWZsZWN0aW9uIHNpbWlsYXJcbiAgICAgICAgICAgICAgICAgICAgZC5xeSA9IGQueSAqIDIgLSBkLnF5OyAvLyB0byBjYXNlIFwiU1wiLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3Igc29tZXRoaW5nIGVsc2Ugb3Igbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBkLnF4ID0gZC54O1xuICAgICAgICAgICAgICAgICAgICBkLnF5ID0gZC55O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KHEyYyhkLngsIGQueSwgZC5xeCwgZC5xeSwgcGF0aFsxXSwgcGF0aFsyXSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgZC5xeCA9IHBhdGhbMV07XG4gICAgICAgICAgICAgICAgZC5xeSA9IHBhdGhbMl07XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChxMmMoZC54LCBkLnksIHBhdGhbMV0sIHBhdGhbMl0sIHBhdGhbM10sIHBhdGhbNF0pKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgIHBhdGggPSBbJ0MnXS5jb25jYXQobDJjKGQueCwgZC55LCBwYXRoWzFdLCBwYXRoWzJdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgcGF0aFsxXSwgZC55KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgZC54LCBwYXRoWzFdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgZC5YLCBkLlkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfTtcbiAgICB2YXIgZml4QXJjID0gZnVuY3Rpb24gKHBwLCBpKSB7XG4gICAgICAgIGlmIChwcFtpXS5sZW5ndGggPiA3KSB7XG4gICAgICAgICAgICBwcFtpXS5zaGlmdCgpO1xuICAgICAgICAgICAgdmFyIHBpID0gcHBbaV07XG4gICAgICAgICAgICB3aGlsZSAocGkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGNvbXMxW2ldID0gJ0EnOyAvLyBpZiBjcmVhdGVkIG11bHRpcGxlIEM6cywgdGhlaXIgb3JpZ2luYWwgc2VnIGlzIHNhdmVkXG4gICAgICAgICAgICAgICAgcDIgJiYgKHBjb21zMltpXSA9ICdBJyk7IC8vIHRoZSBzYW1lIGFzIGFib3ZlXG4gICAgICAgICAgICAgICAgcHAuc3BsaWNlKGkrKywgMCwgWydDJ10uY29uY2F0KHBpLnNwbGljZSgwLCA2KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHAuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgaWkgPSBNYXRoLm1heChwLmxlbmd0aCwgKHAyICYmIHAyLmxlbmd0aCkgfHwgMCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBmaXhNID0gZnVuY3Rpb24gKHBhdGgxLCBwYXRoMiwgYTEsIGEyLCBpKSB7XG4gICAgICAgIGlmIChwYXRoMSAmJiBwYXRoMiAmJiBwYXRoMVtpXVswXSA9PT0gJ00nICYmIHBhdGgyW2ldWzBdICE9PSAnTScpIHtcbiAgICAgICAgICAgIHBhdGgyLnNwbGljZShpLCAwLCBbJ00nLCBhMi54LCBhMi55XSk7XG4gICAgICAgICAgICBhMS5ieCA9IDA7XG4gICAgICAgICAgICBhMS5ieSA9IDA7XG4gICAgICAgICAgICBhMS54ID0gcGF0aDFbaV1bMV07XG4gICAgICAgICAgICBhMS55ID0gcGF0aDFbaV1bMl07XG4gICAgICAgICAgICBpaSA9IE1hdGgubWF4KHAubGVuZ3RoLCAocDIgJiYgcDIubGVuZ3RoKSB8fCAwKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgaWkgPSBNYXRoLm1heChwLmxlbmd0aCwgKHAyICYmIHAyLmxlbmd0aCkgfHwgMCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpaTsgaSsrKSB7XG4gICAgICAgIHBbaV0gJiYgKHBmaXJzdCA9IHBbaV1bMF0pOyAvLyBzYXZlIGN1cnJlbnQgcGF0aCBjb21tYW5kXG4gICAgICAgIGlmIChwZmlyc3QgIT09ICdDJykge1xuICAgICAgICAgICAgLy8gQyBpcyBub3Qgc2F2ZWQgeWV0LCBiZWNhdXNlIGl0IG1heSBiZSByZXN1bHQgb2YgY29udmVyc2lvblxuICAgICAgICAgICAgcGNvbXMxW2ldID0gcGZpcnN0OyAvLyBTYXZlIGN1cnJlbnQgcGF0aCBjb21tYW5kXG4gICAgICAgICAgICBpICYmIChwY29tID0gcGNvbXMxW2kgLSAxXSk7IC8vIEdldCBwcmV2aW91cyBwYXRoIGNvbW1hbmQgcGNvbVxuICAgICAgICB9XG4gICAgICAgIHBbaV0gPSBwcm9jZXNzUGF0aChwW2ldLCBhdHRycywgcGNvbSk7IC8vIFByZXZpb3VzIHBhdGggY29tbWFuZCBpcyBpbnB1dHRlZCB0byBwcm9jZXNzUGF0aFxuICAgICAgICBpZiAocGNvbXMxW2ldICE9PSAnQScgJiYgcGZpcnN0ID09PSAnQycpXG4gICAgICAgICAgICBwY29tczFbaV0gPSAnQyc7IC8vIEEgaXMgdGhlIG9ubHkgY29tbWFuZFxuICAgICAgICAvLyB3aGljaCBtYXkgcHJvZHVjZSBtdWx0aXBsZSBDOnNcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBDIGlzIGFsc28gQyBpbiBvcmlnaW5hbCBwYXRoXG4gICAgICAgIGZpeEFyYyhwLCBpKTsgLy8gZml4QXJjIGFkZHMgYWxzbyB0aGUgcmlnaHQgYW1vdW50IG9mIEE6cyB0byBwY29tczFcbiAgICAgICAgaWYgKHAyKSB7XG4gICAgICAgICAgICAvLyB0aGUgc2FtZSBwcm9jZWR1cmVzIGlzIGRvbmUgdG8gcDJcbiAgICAgICAgICAgIHAyW2ldICYmIChwZmlyc3QgPSBwMltpXVswXSk7XG4gICAgICAgICAgICBpZiAocGZpcnN0ICE9PSAnQycpIHtcbiAgICAgICAgICAgICAgICBwY29tczJbaV0gPSBwZmlyc3Q7XG4gICAgICAgICAgICAgICAgaSAmJiAocGNvbSA9IHBjb21zMltpIC0gMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcDJbaV0gPSBwcm9jZXNzUGF0aChwMltpXSwgYXR0cnMyLCBwY29tKTtcbiAgICAgICAgICAgIGlmIChwY29tczJbaV0gIT09ICdBJyAmJiBwZmlyc3QgPT09ICdDJykge1xuICAgICAgICAgICAgICAgIHBjb21zMltpXSA9ICdDJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpeEFyYyhwMiwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgZml4TShwLCBwMiwgYXR0cnMsIGF0dHJzMiwgaSk7XG4gICAgICAgIGZpeE0ocDIsIHAsIGF0dHJzMiwgYXR0cnMsIGkpO1xuICAgICAgICB2YXIgc2VnID0gcFtpXTtcbiAgICAgICAgdmFyIHNlZzIgPSBwMiAmJiBwMltpXTtcbiAgICAgICAgdmFyIHNlZ2xlbiA9IHNlZy5sZW5ndGg7XG4gICAgICAgIHZhciBzZWcybGVuID0gcDIgJiYgc2VnMi5sZW5ndGg7XG4gICAgICAgIGF0dHJzLnggPSBzZWdbc2VnbGVuIC0gMl07XG4gICAgICAgIGF0dHJzLnkgPSBzZWdbc2VnbGVuIC0gMV07XG4gICAgICAgIGF0dHJzLmJ4ID0gcGFyc2VGbG9hdChzZWdbc2VnbGVuIC0gNF0pIHx8IGF0dHJzLng7XG4gICAgICAgIGF0dHJzLmJ5ID0gcGFyc2VGbG9hdChzZWdbc2VnbGVuIC0gM10pIHx8IGF0dHJzLnk7XG4gICAgICAgIGF0dHJzMi5ieCA9IHAyICYmIChwYXJzZUZsb2F0KHNlZzJbc2VnMmxlbiAtIDRdKSB8fCBhdHRyczIueCk7XG4gICAgICAgIGF0dHJzMi5ieSA9IHAyICYmIChwYXJzZUZsb2F0KHNlZzJbc2VnMmxlbiAtIDNdKSB8fCBhdHRyczIueSk7XG4gICAgICAgIGF0dHJzMi54ID0gcDIgJiYgc2VnMltzZWcybGVuIC0gMl07XG4gICAgICAgIGF0dHJzMi55ID0gcDIgJiYgc2VnMltzZWcybGVuIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBwMiA/IFtwLCBwMl0gOiBwO1xufTtcbnZhciBwMnMgPSAvLD8oW2Etel0pLD8vZ2k7XG52YXIgcGFyc2VQYXRoQXJyYXkgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgIHJldHVybiBwYXRoLmpvaW4oJywnKS5yZXBsYWNlKHAycywgJyQxJyk7XG59O1xudmFyIGJhc2UzID0gZnVuY3Rpb24gKHQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgdmFyIHQxID0gLTMgKiBwMSArIDkgKiBwMiAtIDkgKiBwMyArIDMgKiBwNDtcbiAgICB2YXIgdDIgPSB0ICogdDEgKyA2ICogcDEgLSAxMiAqIHAyICsgNiAqIHAzO1xuICAgIHJldHVybiB0ICogdDIgLSAzICogcDEgKyAzICogcDI7XG59O1xudmFyIGJlemxlbiA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHopIHtcbiAgICBpZiAoeiA9PT0gbnVsbCkge1xuICAgICAgICB6ID0gMTtcbiAgICB9XG4gICAgeiA9IHogPiAxID8gMSA6IHogPCAwID8gMCA6IHo7XG4gICAgdmFyIHoyID0geiAvIDI7XG4gICAgdmFyIG4gPSAxMjtcbiAgICB2YXIgVHZhbHVlcyA9IFtcbiAgICAgICAgLTAuMTI1MixcbiAgICAgICAgMC4xMjUyLFxuICAgICAgICAtMC4zNjc4LFxuICAgICAgICAwLjM2NzgsXG4gICAgICAgIC0wLjU4NzMsXG4gICAgICAgIDAuNTg3MyxcbiAgICAgICAgLTAuNzY5OSxcbiAgICAgICAgMC43Njk5LFxuICAgICAgICAtMC45MDQxLFxuICAgICAgICAwLjkwNDEsXG4gICAgICAgIC0wLjk4MTYsXG4gICAgICAgIDAuOTgxNixcbiAgICBdO1xuICAgIHZhciBDdmFsdWVzID0gWzAuMjQ5MSwgMC4yNDkxLCAwLjIzMzUsIDAuMjMzNSwgMC4yMDMyLCAwLjIwMzIsIDAuMTYwMSwgMC4xNjAxLCAwLjEwNjksIDAuMTA2OSwgMC4wNDcyLCAwLjA0NzJdO1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIHZhciBjdCA9IHoyICogVHZhbHVlc1tpXSArIHoyO1xuICAgICAgICB2YXIgeGJhc2UgPSBiYXNlMyhjdCwgeDEsIHgyLCB4MywgeDQpO1xuICAgICAgICB2YXIgeWJhc2UgPSBiYXNlMyhjdCwgeTEsIHkyLCB5MywgeTQpO1xuICAgICAgICB2YXIgY29tYiA9IHhiYXNlICogeGJhc2UgKyB5YmFzZSAqIHliYXNlO1xuICAgICAgICBzdW0gKz0gQ3ZhbHVlc1tpXSAqIE1hdGguc3FydChjb21iKTtcbiAgICB9XG4gICAgcmV0dXJuIHoyICogc3VtO1xufTtcbnZhciBjdXJ2ZURpbSA9IGZ1bmN0aW9uICh4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICB2YXIgdHZhbHVlcyA9IFtdO1xuICAgIHZhciBib3VuZHMgPSBbW10sIFtdXTtcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICB2YXIgYztcbiAgICB2YXIgdDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgYiA9IDYgKiB4MCAtIDEyICogeDEgKyA2ICogeDI7XG4gICAgICAgICAgICBhID0gLTMgKiB4MCArIDkgKiB4MSAtIDkgKiB4MiArIDMgKiB4MztcbiAgICAgICAgICAgIGMgPSAzICogeDEgLSAzICogeDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBiID0gNiAqIHkwIC0gMTIgKiB5MSArIDYgKiB5MjtcbiAgICAgICAgICAgIGEgPSAtMyAqIHkwICsgOSAqIHkxIC0gOSAqIHkyICsgMyAqIHkzO1xuICAgICAgICAgICAgYyA9IDMgKiB5MSAtIDMgKiB5MDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnMoYSkgPCAxZS0xMikge1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGIpIDwgMWUtMTIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtYyAvIGI7XG4gICAgICAgICAgICBpZiAodCA+IDAgJiYgdCA8IDEpIHtcbiAgICAgICAgICAgICAgICB0dmFsdWVzLnB1c2godCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYjJhYyA9IGIgKiBiIC0gNCAqIGMgKiBhO1xuICAgICAgICB2YXIgc3FydGIyYWMgPSBNYXRoLnNxcnQoYjJhYyk7XG4gICAgICAgIGlmIChiMmFjIDwgMCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHQxID0gKC1iICsgc3FydGIyYWMpIC8gKDIgKiBhKTtcbiAgICAgICAgaWYgKHQxID4gMCAmJiB0MSA8IDEpIHtcbiAgICAgICAgICAgIHR2YWx1ZXMucHVzaCh0MSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHQyID0gKC1iIC0gc3FydGIyYWMpIC8gKDIgKiBhKTtcbiAgICAgICAgaWYgKHQyID4gMCAmJiB0MiA8IDEpIHtcbiAgICAgICAgICAgIHR2YWx1ZXMucHVzaCh0Mik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGogPSB0dmFsdWVzLmxlbmd0aDtcbiAgICB2YXIgamxlbiA9IGo7XG4gICAgdmFyIG10O1xuICAgIHdoaWxlIChqLS0pIHtcbiAgICAgICAgdCA9IHR2YWx1ZXNbal07XG4gICAgICAgIG10ID0gMSAtIHQ7XG4gICAgICAgIGJvdW5kc1swXVtqXSA9IG10ICogbXQgKiBtdCAqIHgwICsgMyAqIG10ICogbXQgKiB0ICogeDEgKyAzICogbXQgKiB0ICogdCAqIHgyICsgdCAqIHQgKiB0ICogeDM7XG4gICAgICAgIGJvdW5kc1sxXVtqXSA9IG10ICogbXQgKiBtdCAqIHkwICsgMyAqIG10ICogbXQgKiB0ICogeTEgKyAzICogbXQgKiB0ICogdCAqIHkyICsgdCAqIHQgKiB0ICogeTM7XG4gICAgfVxuICAgIGJvdW5kc1swXVtqbGVuXSA9IHgwO1xuICAgIGJvdW5kc1sxXVtqbGVuXSA9IHkwO1xuICAgIGJvdW5kc1swXVtqbGVuICsgMV0gPSB4MztcbiAgICBib3VuZHNbMV1bamxlbiArIDFdID0geTM7XG4gICAgYm91bmRzWzBdLmxlbmd0aCA9IGJvdW5kc1sxXS5sZW5ndGggPSBqbGVuICsgMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWluLmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1pbi5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgICAgICBtYXg6IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWF4LmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1heC5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgIH07XG59O1xudmFyIGludGVyc2VjdCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQpIHtcbiAgICBpZiAoTWF0aC5tYXgoeDEsIHgyKSA8IE1hdGgubWluKHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeDEsIHgyKSA+IE1hdGgubWF4KHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5tYXgoeTEsIHkyKSA8IE1hdGgubWluKHkzLCB5NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeTEsIHkyKSA+IE1hdGgubWF4KHkzLCB5NCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbnggPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHgzIC0geDQpIC0gKHgxIC0geDIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgbnkgPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHkzIC0geTQpIC0gKHkxIC0geTIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgZGVub21pbmF0b3IgPSAoeDEgLSB4MikgKiAoeTMgLSB5NCkgLSAoeTEgLSB5MikgKiAoeDMgLSB4NCk7XG4gICAgaWYgKCFkZW5vbWluYXRvcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBweCA9IG54IC8gZGVub21pbmF0b3I7XG4gICAgdmFyIHB5ID0gbnkgLyBkZW5vbWluYXRvcjtcbiAgICB2YXIgcHgyID0gK3B4LnRvRml4ZWQoMik7XG4gICAgdmFyIHB5MiA9ICtweS50b0ZpeGVkKDIpO1xuICAgIGlmIChweDIgPCArTWF0aC5taW4oeDEsIHgyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB4MiA+ICtNYXRoLm1heCh4MSwgeDIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHgyIDwgK01hdGgubWluKHgzLCB4NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweDIgPiArTWF0aC5tYXgoeDMsIHg0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA8ICtNYXRoLm1pbih5MSwgeTIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHkyID4gK01hdGgubWF4KHkxLCB5MikudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPCArTWF0aC5taW4oeTMsIHk0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA+ICtNYXRoLm1heCh5MywgeTQpLnRvRml4ZWQoMikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBweCxcbiAgICAgICAgeTogcHksXG4gICAgfTtcbn07XG52YXIgaXNQb2ludEluc2lkZUJCb3ggPSBmdW5jdGlvbiAoYmJveCwgeCwgeSkge1xuICAgIHJldHVybiB4ID49IGJib3gueCAmJiB4IDw9IGJib3gueCArIGJib3gud2lkdGggJiYgeSA+PSBiYm94LnkgJiYgeSA8PSBiYm94LnkgKyBiYm94LmhlaWdodDtcbn07XG52YXIgcmVjdFBhdGggPSBmdW5jdGlvbiAoeCwgeSwgdywgaCwgcikge1xuICAgIGlmIChyKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCAreCArICtyLCB5XSxcbiAgICAgICAgICAgIFsnbCcsIHcgLSByICogMiwgMF0sXG4gICAgICAgICAgICBbJ2EnLCByLCByLCAwLCAwLCAxLCByLCByXSxcbiAgICAgICAgICAgIFsnbCcsIDAsIGggLSByICogMl0sXG4gICAgICAgICAgICBbJ2EnLCByLCByLCAwLCAwLCAxLCAtciwgcl0sXG4gICAgICAgICAgICBbJ2wnLCByICogMiAtIHcsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgLXIsIC1yXSxcbiAgICAgICAgICAgIFsnbCcsIDAsIHIgKiAyIC0gaF0sXG4gICAgICAgICAgICBbJ2EnLCByLCByLCAwLCAwLCAxLCByLCAtcl0sXG4gICAgICAgICAgICBbJ3onXSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IFtbJ00nLCB4LCB5XSwgWydsJywgdywgMF0sIFsnbCcsIDAsIGhdLCBbJ2wnLCAtdywgMF0sIFsneiddXTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmVzLnBhcnNlUGF0aEFycmF5ID0gcGFyc2VQYXRoQXJyYXk7XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgYm94ID0gZnVuY3Rpb24gKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICB4ID0geSA9IHdpZHRoID0gaGVpZ2h0ID0gMDtcbiAgICB9XG4gICAgaWYgKHkgPT09IG51bGwpIHtcbiAgICAgICAgeSA9IHgueTtcbiAgICAgICAgd2lkdGggPSB4LndpZHRoO1xuICAgICAgICBoZWlnaHQgPSB4LmhlaWdodDtcbiAgICAgICAgeCA9IHgueDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICB3OiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGg6IGhlaWdodCxcbiAgICAgICAgeDI6IHggKyB3aWR0aCxcbiAgICAgICAgeTI6IHkgKyBoZWlnaHQsXG4gICAgICAgIGN4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgICBjeTogeSArIGhlaWdodCAvIDIsXG4gICAgICAgIHIxOiBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIyOiBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIwOiBNYXRoLnNxcnQod2lkdGggKiB3aWR0aCArIGhlaWdodCAqIGhlaWdodCkgLyAyLFxuICAgICAgICBwYXRoOiByZWN0UGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSxcbiAgICAgICAgdmI6IFt4LCB5LCB3aWR0aCwgaGVpZ2h0XS5qb2luKCcgJyksXG4gICAgfTtcbn07XG52YXIgaXNCQm94SW50ZXJzZWN0ID0gZnVuY3Rpb24gKGJib3gxLCBiYm94Mikge1xuICAgIGJib3gxID0gYm94KGJib3gxKTtcbiAgICBiYm94MiA9IGJveChiYm94Mik7XG4gICAgcmV0dXJuIChpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueCwgYmJveDEueSkgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngyLCBiYm94MS55KSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueCwgYmJveDEueTIpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gyLCBiYm94MS54MiwgYmJveDEueTIpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54LCBiYm94Mi55KSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueDIsIGJib3gyLnkpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54LCBiYm94Mi55MikgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDEsIGJib3gyLngyLCBiYm94Mi55MikgfHxcbiAgICAgICAgKCgoYmJveDEueCA8IGJib3gyLngyICYmIGJib3gxLnggPiBiYm94Mi54KSB8fCAoYmJveDIueCA8IGJib3gxLngyICYmIGJib3gyLnggPiBiYm94MS54KSkgJiZcbiAgICAgICAgICAgICgoYmJveDEueSA8IGJib3gyLnkyICYmIGJib3gxLnkgPiBiYm94Mi55KSB8fCAoYmJveDIueSA8IGJib3gxLnkyICYmIGJib3gyLnkgPiBiYm94MS55KSkpKTtcbn07XG52YXIgYmV6aWVyQkJveCA9IGZ1bmN0aW9uIChwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeSkge1xuICAgIGlmICghaXNBcnJheShwMXgpKSB7XG4gICAgICAgIHAxeCA9IFtwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeV07XG4gICAgfVxuICAgIHZhciBiYm94ID0gY3VydmVEaW0uYXBwbHkobnVsbCwgcDF4KTtcbiAgICByZXR1cm4gYm94KGJib3gubWluLngsIGJib3gubWluLnksIGJib3gubWF4LnggLSBiYm94Lm1pbi54LCBiYm94Lm1heC55IC0gYmJveC5taW4ueSk7XG59O1xudmFyIGZpbmREb3RzQXRTZWdtZW50ID0gZnVuY3Rpb24gKHAxeCwgcDF5LCBjMXgsIGMxeSwgYzJ4LCBjMnksIHAyeCwgcDJ5LCB0KSB7XG4gICAgdmFyIHQxID0gMSAtIHQ7XG4gICAgdmFyIHQxMyA9IE1hdGgucG93KHQxLCAzKTtcbiAgICB2YXIgdDEyID0gTWF0aC5wb3codDEsIDIpO1xuICAgIHZhciB0MiA9IHQgKiB0O1xuICAgIHZhciB0MyA9IHQyICogdDtcbiAgICB2YXIgeCA9IHQxMyAqIHAxeCArIHQxMiAqIDMgKiB0ICogYzF4ICsgdDEgKiAzICogdCAqIHQgKiBjMnggKyB0MyAqIHAyeDtcbiAgICB2YXIgeSA9IHQxMyAqIHAxeSArIHQxMiAqIDMgKiB0ICogYzF5ICsgdDEgKiAzICogdCAqIHQgKiBjMnkgKyB0MyAqIHAyeTtcbiAgICB2YXIgbXggPSBwMXggKyAyICogdCAqIChjMXggLSBwMXgpICsgdDIgKiAoYzJ4IC0gMiAqIGMxeCArIHAxeCk7XG4gICAgdmFyIG15ID0gcDF5ICsgMiAqIHQgKiAoYzF5IC0gcDF5KSArIHQyICogKGMyeSAtIDIgKiBjMXkgKyBwMXkpO1xuICAgIHZhciBueCA9IGMxeCArIDIgKiB0ICogKGMyeCAtIGMxeCkgKyB0MiAqIChwMnggLSAyICogYzJ4ICsgYzF4KTtcbiAgICB2YXIgbnkgPSBjMXkgKyAyICogdCAqIChjMnkgLSBjMXkpICsgdDIgKiAocDJ5IC0gMiAqIGMyeSArIGMxeSk7XG4gICAgdmFyIGF4ID0gdDEgKiBwMXggKyB0ICogYzF4O1xuICAgIHZhciBheSA9IHQxICogcDF5ICsgdCAqIGMxeTtcbiAgICB2YXIgY3ggPSB0MSAqIGMyeCArIHQgKiBwMng7XG4gICAgdmFyIGN5ID0gdDEgKiBjMnkgKyB0ICogcDJ5O1xuICAgIHZhciBhbHBoYSA9IDkwIC0gKE1hdGguYXRhbjIobXggLSBueCwgbXkgLSBueSkgKiAxODApIC8gTWF0aC5QSTtcbiAgICAvLyAobXggPiBueCB8fCBteSA8IG55KSAmJiAoYWxwaGEgKz0gMTgwKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICBtOiB7XG4gICAgICAgICAgICB4OiBteCxcbiAgICAgICAgICAgIHk6IG15LFxuICAgICAgICB9LFxuICAgICAgICBuOiB7XG4gICAgICAgICAgICB4OiBueCxcbiAgICAgICAgICAgIHk6IG55LFxuICAgICAgICB9LFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgeDogYXgsXG4gICAgICAgICAgICB5OiBheSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICB4OiBjeCxcbiAgICAgICAgICAgIHk6IGN5LFxuICAgICAgICB9LFxuICAgICAgICBhbHBoYTogYWxwaGEsXG4gICAgfTtcbn07XG52YXIgaW50ZXJIZWxwZXIgPSBmdW5jdGlvbiAoYmV6MSwgYmV6MiwganVzdENvdW50KSB7XG4gICAgdmFyIGJib3gxID0gYmV6aWVyQkJveChiZXoxKTtcbiAgICB2YXIgYmJveDIgPSBiZXppZXJCQm94KGJlejIpO1xuICAgIGlmICghaXNCQm94SW50ZXJzZWN0KGJib3gxLCBiYm94MikpIHtcbiAgICAgICAgcmV0dXJuIGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICB9XG4gICAgdmFyIGwxID0gYmV6bGVuLmFwcGx5KDAsIGJlejEpO1xuICAgIHZhciBsMiA9IGJlemxlbi5hcHBseSgwLCBiZXoyKTtcbiAgICB2YXIgbjEgPSB+fihsMSAvIDgpO1xuICAgIHZhciBuMiA9IH5+KGwyIC8gOCk7XG4gICAgdmFyIGRvdHMxID0gW107XG4gICAgdmFyIGRvdHMyID0gW107XG4gICAgdmFyIHh5ID0ge307XG4gICAgdmFyIHJlcyA9IGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4xICsgMTsgaSsrKSB7XG4gICAgICAgIHZhciBkID0gZmluZERvdHNBdFNlZ21lbnQuYXBwbHkoMCwgYmV6MS5jb25jYXQoaSAvIG4xKSk7XG4gICAgICAgIGRvdHMxLnB1c2goe1xuICAgICAgICAgICAgeDogZC54LFxuICAgICAgICAgICAgeTogZC55LFxuICAgICAgICAgICAgdDogaSAvIG4xLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMiArIDE7IGkrKykge1xuICAgICAgICB2YXIgZCA9IGZpbmREb3RzQXRTZWdtZW50LmFwcGx5KDAsIGJlejIuY29uY2F0KGkgLyBuMikpO1xuICAgICAgICBkb3RzMi5wdXNoKHtcbiAgICAgICAgICAgIHg6IGQueCxcbiAgICAgICAgICAgIHk6IGQueSxcbiAgICAgICAgICAgIHQ6IGkgLyBuMixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjE7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4yOyBqKyspIHtcbiAgICAgICAgICAgIHZhciBkaSA9IGRvdHMxW2ldO1xuICAgICAgICAgICAgdmFyIGRpMSA9IGRvdHMxW2kgKyAxXTtcbiAgICAgICAgICAgIHZhciBkaiA9IGRvdHMyW2pdO1xuICAgICAgICAgICAgdmFyIGRqMSA9IGRvdHMyW2ogKyAxXTtcbiAgICAgICAgICAgIHZhciBjaSA9IE1hdGguYWJzKGRpMS54IC0gZGkueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBjaiA9IE1hdGguYWJzKGRqMS54IC0gZGoueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBpcyA9IGludGVyc2VjdChkaS54LCBkaS55LCBkaTEueCwgZGkxLnksIGRqLngsIGRqLnksIGRqMS54LCBkajEueSk7XG4gICAgICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoeHlbaXMueC50b0ZpeGVkKDQpXSA9PT0gaXMueS50b0ZpeGVkKDQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4eVtpcy54LnRvRml4ZWQoNCldID0gaXMueS50b0ZpeGVkKDQpO1xuICAgICAgICAgICAgICAgIHZhciB0MSA9IGRpLnQgKyBNYXRoLmFicygoaXNbY2ldIC0gZGlbY2ldKSAvIChkaTFbY2ldIC0gZGlbY2ldKSkgKiAoZGkxLnQgLSBkaS50KTtcbiAgICAgICAgICAgICAgICB2YXIgdDIgPSBkai50ICsgTWF0aC5hYnMoKGlzW2NqXSAtIGRqW2NqXSkgLyAoZGoxW2NqXSAtIGRqW2NqXSkpICogKGRqMS50IC0gZGoudCk7XG4gICAgICAgICAgICAgICAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSAmJiB0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpcy55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxOiB0MSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MjogdDIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBpbnRlclBhdGhIZWxwZXIgPSBmdW5jdGlvbiAocGF0aDEsIHBhdGgyLCBqdXN0Q291bnQpIHtcbiAgICBwYXRoMSA9IHBhdGhUb0N1cnZlKHBhdGgxKTtcbiAgICBwYXRoMiA9IHBhdGhUb0N1cnZlKHBhdGgyKTtcbiAgICB2YXIgeDE7XG4gICAgdmFyIHkxO1xuICAgIHZhciB4MjtcbiAgICB2YXIgeTI7XG4gICAgdmFyIHgxbTtcbiAgICB2YXIgeTFtO1xuICAgIHZhciB4Mm07XG4gICAgdmFyIHkybTtcbiAgICB2YXIgYmV6MTtcbiAgICB2YXIgYmV6MjtcbiAgICB2YXIgcmVzID0ganVzdENvdW50ID8gMCA6IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBhdGgxLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgdmFyIHBpID0gcGF0aDFbaV07XG4gICAgICAgIGlmIChwaVswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICB4MSA9IHgxbSA9IHBpWzFdO1xuICAgICAgICAgICAgeTEgPSB5MW0gPSBwaVsyXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwaVswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgYmV6MSA9IFt4MSwgeTFdLmNvbmNhdChwaS5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgeDEgPSBiZXoxWzZdO1xuICAgICAgICAgICAgICAgIHkxID0gYmV6MVs3XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJlejEgPSBbeDEsIHkxLCB4MSwgeTEsIHgxbSwgeTFtLCB4MW0sIHkxbV07XG4gICAgICAgICAgICAgICAgeDEgPSB4MW07XG4gICAgICAgICAgICAgICAgeTEgPSB5MW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBwYXRoMi5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBqID0gcGF0aDJbal07XG4gICAgICAgICAgICAgICAgaWYgKHBqWzBdID09PSAnTScpIHtcbiAgICAgICAgICAgICAgICAgICAgeDIgPSB4Mm0gPSBwalsxXTtcbiAgICAgICAgICAgICAgICAgICAgeTIgPSB5Mm0gPSBwalsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwalswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXoyID0gW3gyLCB5Ml0uY29uY2F0KHBqLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHgyID0gYmV6Mls2XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0gYmV6Mls3XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlejIgPSBbeDIsIHkyLCB4MiwgeTIsIHgybSwgeTJtLCB4Mm0sIHkybV07XG4gICAgICAgICAgICAgICAgICAgICAgICB4MiA9IHgybTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0geTJtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRyID0gaW50ZXJIZWxwZXIoYmV6MSwgYmV6MiwganVzdENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IGludHI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBpbnRyLmxlbmd0aDsgayA8IGtrOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQxID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQyID0gajtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLmJlejEgPSBiZXoxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJba10uYmV6MiA9IGJlejI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGludHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xudmFyIGludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwYXRoMSwgcGF0aDIpIHtcbiAgICByZXR1cm4gaW50ZXJQYXRoSGVscGVyKHBhdGgxLCBwYXRoMik7XG59O1xuZnVuY3Rpb24gZGVjYXN0ZWxqYXUocG9pbnRzLCB0KSB7XG4gICAgdmFyIGxlZnQgPSBbXTtcbiAgICB2YXIgcmlnaHQgPSBbXTtcbiAgICBmdW5jdGlvbiByZWN1cnNlKHBvaW50cywgdCkge1xuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbGVmdC5wdXNoKHBvaW50c1swXSk7XG4gICAgICAgICAgICByaWdodC5wdXNoKHBvaW50c1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbWlkZGxlUG9pbnRzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0LnB1c2gocG9pbnRzWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IHBvaW50cy5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0LnB1c2gocG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1pZGRsZVBvaW50c1tpXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDEgLSB0KSAqIHBvaW50c1tpXVswXSArIHQgKiBwb2ludHNbaSArIDFdWzBdLFxuICAgICAgICAgICAgICAgICAgICAoMSAtIHQpICogcG9pbnRzW2ldWzFdICsgdCAqIHBvaW50c1tpICsgMV1bMV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlY3Vyc2UobWlkZGxlUG9pbnRzLCB0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWN1cnNlKHBvaW50cywgdCk7XG4gICAgfVxuICAgIHJldHVybiB7IGxlZnQ6IGxlZnQsIHJpZ2h0OiByaWdodC5yZXZlcnNlKCkgfTtcbn1cbmZ1bmN0aW9uIHNwbGl0Q3VydmUoc3RhcnQsIGVuZCwgY291bnQpIHtcbiAgICB2YXIgcG9pbnRzID0gW1tzdGFydFsxXSwgc3RhcnRbMl1dXTtcbiAgICBjb3VudCA9IGNvdW50IHx8IDI7XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgaWYgKGVuZFswXSA9PT0gJ0EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs2XSk7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs3XSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ0MnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFs1XSwgZW5kWzZdXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ1MnIHx8IGVuZFswXSA9PT0gJ1EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgIH1cbiAgICB2YXIgbGVmdFNlZ21lbnRzID0gcG9pbnRzO1xuICAgIHZhciB0ID0gMSAvIGNvdW50O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHJ0ID0gdCAvICgxIC0gdCAqIGkpO1xuICAgICAgICB2YXIgc3BsaXQgPSBkZWNhc3RlbGphdShsZWZ0U2VnbWVudHMsIHJ0KTtcbiAgICAgICAgc2VnbWVudHMucHVzaChzcGxpdC5sZWZ0KTtcbiAgICAgICAgbGVmdFNlZ21lbnRzID0gc3BsaXQucmlnaHQ7XG4gICAgfVxuICAgIHNlZ21lbnRzLnB1c2gobGVmdFNlZ21lbnRzKTtcbiAgICB2YXIgcmVzdWx0ID0gc2VnbWVudHMubWFwKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgIHZhciBjbWQgPSBbXTtcbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnQycpO1xuICAgICAgICAgICAgY21kID0gY21kLmNvbmNhdChzZWdtZW50WzJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgY21kLnB1c2goJ1EnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnTCcpO1xuICAgICAgICB9XG4gICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFtzZWdtZW50Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgcmV0dXJuIGNtZDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxudmFyIHNwbGl0U2VnbWVudCA9IGZ1bmN0aW9uIChzdGFydCwgZW5kLCBjb3VudCkge1xuICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gW1tdLmNvbmNhdChzdGFydCldO1xuICAgIH1cbiAgICB2YXIgc2VnbWVudHMgPSBbXTtcbiAgICBpZiAoZW5kWzBdID09PSAnTCcgfHwgZW5kWzBdID09PSAnQycgfHwgZW5kWzBdID09PSAnUScpIHtcbiAgICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy5jb25jYXQoc3BsaXRDdXJ2ZShzdGFydCwgZW5kLCBjb3VudCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHRlbXAgPSBbXS5jb25jYXQoc3RhcnQpO1xuICAgICAgICBpZiAodGVtcFswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICB0ZW1wWzBdID0gJ0wnO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBzZWdtZW50cy5wdXNoKHRlbXApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZWdtZW50cztcbn07XG52YXIgZmlsbFBhdGggPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aCAtIDE7XG4gICAgdmFyIHRhcmdldExlbiA9IHRhcmdldC5sZW5ndGggLSAxO1xuICAgIHZhciByYXRpbyA9IHNvdXJjZUxlbiAvIHRhcmdldExlbjtcbiAgICB2YXIgc2VnbWVudHNUb0ZpbGwgPSBbXTtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSAmJiBzb3VyY2VbMF1bMF0gPT09ICdNJykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldExlbiAtIHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICBzb3VyY2UucHVzaChzb3VyY2VbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0TGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5mbG9vcihyYXRpbyAqIGkpO1xuICAgICAgICBzZWdtZW50c1RvRmlsbFtpbmRleF0gPSAoc2VnbWVudHNUb0ZpbGxbaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG4gICAgdmFyIGZpbGxlZCA9IHNlZ21lbnRzVG9GaWxsLnJlZHVjZShmdW5jdGlvbiAoZmlsbGVkLCBjb3VudCwgaSkge1xuICAgICAgICBpZiAoaSA9PT0gc291cmNlTGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsbGVkLmNvbmNhdChzb3VyY2Vbc291cmNlTGVuXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGxlZC5jb25jYXQoc3BsaXRTZWdtZW50KHNvdXJjZVtpXSwgc291cmNlW2kgKyAxXSwgY291bnQpKTtcbiAgICB9LCBbXSk7XG4gICAgZmlsbGVkLnVuc2hpZnQoc291cmNlWzBdKTtcbiAgICBpZiAodGFyZ2V0W3RhcmdldExlbl0gPT09ICdaJyB8fCB0YXJnZXRbdGFyZ2V0TGVuXSA9PT0gJ3onKSB7XG4gICAgICAgIGZpbGxlZC5wdXNoKCdaJyk7XG4gICAgfVxuICAgIHJldHVybiBmaWxsZWQ7XG59O1xudmFyIGlzRXF1YWwgPSBmdW5jdGlvbiAob2JqMSwgb2JqMikge1xuICAgIGlmIChvYmoxLmxlbmd0aCAhPT0gb2JqMi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICBlYWNoKG9iajEsIGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICAgIGlmIChpdGVtICE9PSBvYmoyW2ldKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZnVuY3Rpb24gZ2V0TWluRGlmZihkZWwsIGFkZCwgbW9kaWZ5KSB7XG4gICAgdmFyIHR5cGUgPSBudWxsO1xuICAgIHZhciBtaW4gPSBtb2RpZnk7XG4gICAgaWYgKGFkZCA8IG1pbikge1xuICAgICAgICBtaW4gPSBhZGQ7XG4gICAgICAgIHR5cGUgPSAnYWRkJztcbiAgICB9XG4gICAgaWYgKGRlbCA8IG1pbikge1xuICAgICAgICBtaW4gPSBkZWw7XG4gICAgICAgIHR5cGUgPSAnZGVsJztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgbWluOiBtaW4sXG4gICAgfTtcbn1cbi8qXG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZVxuICog6K6h566X5Lik5p2hcGF0aOeahOe8lui+kei3neemu1xuICovXG52YXIgbGV2ZW5zaHRlaW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCkge1xuICAgIHZhciBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoO1xuICAgIHZhciBzb3VyY2VTZWdtZW50O1xuICAgIHZhciB0YXJnZXRTZWdtZW50O1xuICAgIHZhciB0ZW1wID0gMDtcbiAgICBpZiAoc291cmNlTGVuID09PSAwIHx8IHRhcmdldExlbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGRpc3QgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBzb3VyY2VMZW47IGkrKykge1xuICAgICAgICBkaXN0W2ldID0gW107XG4gICAgICAgIGRpc3RbaV1bMF0gPSB7IG1pbjogaSB9O1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICBkaXN0WzBdW2pdID0geyBtaW46IGogfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc291cmNlTGVuOyBpKyspIHtcbiAgICAgICAgc291cmNlU2VnbWVudCA9IHNvdXJjZVtpIC0gMV07XG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDw9IHRhcmdldExlbjsgaisrKSB7XG4gICAgICAgICAgICB0YXJnZXRTZWdtZW50ID0gdGFyZ2V0W2ogLSAxXTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKHNvdXJjZVNlZ21lbnQsIHRhcmdldFNlZ21lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGVtcCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0ZW1wID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkZWwgPSBkaXN0W2kgLSAxXVtqXS5taW4gKyAxO1xuICAgICAgICAgICAgdmFyIGFkZCA9IGRpc3RbaV1baiAtIDFdLm1pbiArIDE7XG4gICAgICAgICAgICB2YXIgbW9kaWZ5ID0gZGlzdFtpIC0gMV1baiAtIDFdLm1pbiArIHRlbXA7XG4gICAgICAgICAgICBkaXN0W2ldW2pdID0gZ2V0TWluRGlmZihkZWwsIGFkZCwgbW9kaWZ5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzdDtcbn07XG52YXIgZmlsbFBhdGhCeURpZmYgPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgZGlmZk1hdHJpeCA9IGxldmVuc2h0ZWluRGlzdGFuY2Uoc291cmNlLCB0YXJnZXQpO1xuICAgIHZhciBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoO1xuICAgIHZhciBjaGFuZ2VzID0gW107XG4gICAgdmFyIGluZGV4ID0gMTtcbiAgICB2YXIgbWluUG9zID0gMTtcbiAgICAvLyDlpoLmnpxzb3VyY2Xlkox0YXJnZXTkuI3mmK/lrozlhajkuI3nm7jnrYlcbiAgICBpZiAoZGlmZk1hdHJpeFtzb3VyY2VMZW5dW3RhcmdldExlbl0ubWluICE9PSBzb3VyY2VMZW4pIHtcbiAgICAgICAgLy8g6I635Y+W5LuOc291cmNl5YiwdGFyZ2V05omA6ZyA5pS55YqoXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbWluID0gZGlmZk1hdHJpeFtpXVtpXS5taW47XG4gICAgICAgICAgICBtaW5Qb3MgPSBpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGluZGV4OyBqIDw9IHRhcmdldExlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1bal0ubWluIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGRpZmZNYXRyaXhbaV1bal0ubWluO1xuICAgICAgICAgICAgICAgICAgICBtaW5Qb3MgPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4ID0gbWluUG9zO1xuICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLnB1c2goeyBpbmRleDogaSAtIDEsIHR5cGU6IGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5a+5c291cmNl6L+b6KGM5aKe5YigcGF0aFxuICAgICAgICBmb3IgKHZhciBpID0gY2hhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaW5kZXggPSBjaGFuZ2VzW2ldLmluZGV4O1xuICAgICAgICAgICAgaWYgKGNoYW5nZXNbaV0udHlwZSA9PT0gJ2FkZCcpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaWNlKGluZGV4LCAwLCBbXS5jb25jYXQoc291cmNlW2luZGV4XSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc291cmNl5bC+6YOo6KGl6b2QXG4gICAgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgZGlmZiA9IHRhcmdldExlbiAtIHNvdXJjZUxlbjtcbiAgICBpZiAoc291cmNlTGVuIDwgdGFyZ2V0TGVuKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAneicgfHwgc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaWNlKHNvdXJjZUxlbiAtIDIsIDAsIHNvdXJjZVtzb3VyY2VMZW4gLSAyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzb3VyY2UucHVzaChzb3VyY2Vbc291cmNlTGVuIC0gMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlTGVuICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbn07XG4vLyDlsIbkuKTkuKrngrnlnYfliIbmiJBjb3VudOS4queCuVxuZnVuY3Rpb24gX3NwbGl0UG9pbnRzKHBvaW50cywgZm9ybWVyLCBjb3VudCkge1xuICAgIHZhciByZXN1bHQgPSBbXS5jb25jYXQocG9pbnRzKTtcbiAgICB2YXIgaW5kZXg7XG4gICAgdmFyIHQgPSAxIC8gKGNvdW50ICsgMSk7XG4gICAgdmFyIGZvcm1lckVuZCA9IF9nZXRTZWdtZW50UG9pbnRzKGZvcm1lcilbMF07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgICB0ICo9IGk7XG4gICAgICAgIGluZGV4ID0gTWF0aC5mbG9vcihwb2ludHMubGVuZ3RoICogdCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzdWx0LnVuc2hpZnQoW2Zvcm1lckVuZFswXSAqIHQgKyBwb2ludHNbaW5kZXhdWzBdICogKDEgLSB0KSwgZm9ybWVyRW5kWzFdICogdCArIHBvaW50c1tpbmRleF1bMV0gKiAoMSAtIHQpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuc3BsaWNlKGluZGV4LCAwLCBbXG4gICAgICAgICAgICAgICAgZm9ybWVyRW5kWzBdICogdCArIHBvaW50c1tpbmRleF1bMF0gKiAoMSAtIHQpLFxuICAgICAgICAgICAgICAgIGZvcm1lckVuZFsxXSAqIHQgKyBwb2ludHNbaW5kZXhdWzFdICogKDEgLSB0KSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKlxuICog5oq95Y+WcGF0aFNlZ21lbnTkuK3nmoTlhbPplK7ngrlcbiAqIE0sTCxBLFEsSCxW5LiA5Liq56uv54K5XG4gKiBRLCBT5oq95Y+W5LiA5Liq56uv54K577yM5LiA5Liq5o6n5Yi254K5XG4gKiBD5oq95Y+W5LiA5Liq56uv54K577yM5Lik5Liq5o6n5Yi254K5XG4gKi9cbmZ1bmN0aW9uIF9nZXRTZWdtZW50UG9pbnRzKHNlZ21lbnQpIHtcbiAgICB2YXIgcG9pbnRzID0gW107XG4gICAgc3dpdGNoIChzZWdtZW50WzBdKSB7XG4gICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFs2XSwgc2VnbWVudFs3XV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbM10sIHNlZ21lbnRbNF1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbNV0sIHNlZ21lbnRbNl1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFszXSwgc2VnbWVudFs0XV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbM10sIHNlZ21lbnRbNF1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsxXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1YnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMV1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRzO1xufVxudmFyIGZvcm1hdFBhdGggPSBmdW5jdGlvbiAoZnJvbVBhdGgsIHRvUGF0aCkge1xuICAgIGlmIChmcm9tUGF0aC5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gZnJvbVBhdGg7XG4gICAgfVxuICAgIHZhciBwb2ludHM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b1BhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZyb21QYXRoW2ldWzBdICE9PSB0b1BhdGhbaV1bMF0pIHtcbiAgICAgICAgICAgIC8vIOiOt+WPlmZyb21QYXRo55qEcGF0aFNlZ21lbnTnmoTnq6/ngrnvvIzmoLnmja50b1BhdGjnmoTmjIfku6Tlr7nlhbbmlLnpgKBcbiAgICAgICAgICAgIHBvaW50cyA9IF9nZXRTZWdtZW50UG9pbnRzKGZyb21QYXRoW2ldKTtcbiAgICAgICAgICAgIHN3aXRjaCAodG9QYXRoW2ldWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydNJ10uY29uY2F0KHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnTCddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbXS5jb25jYXQodG9QYXRoW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV1bNl0gPSBwb2ludHNbMF1bMF07XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldWzddID0gcG9pbnRzWzBdWzFdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ1EnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydUJ10uY29uY2F0KHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IF9zcGxpdFBvaW50cyhwb2ludHMsIGZyb21QYXRoW2kgLSAxXSwgMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnQyddLmNvbmNhdChwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhcnIsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnIuY29uY2F0KGkpO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ1MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZyb21QYXRoO1xufTtcbmV4cG9ydCB7IGNhdG11bGxSb21Ub0JlemllciwgZmlsbFBhdGgsIGZpbGxQYXRoQnlEaWZmLCBmb3JtYXRQYXRoLCBpbnRlcnNlY3Rpb24sIHBhcnNlUGF0aEFycmF5LCBwYXJzZVBhdGhTdHJpbmcsIHBhdGhUb0Fic29sdXRlLCBwYXRoVG9DdXJ2ZSwgcmVjdFBhdGgsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/util/text.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/util/text.js ***!
\****************************************************/
/*! exports provided: getTextHeight, getLineSpaceing, getTextWidth, assembleFont */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return getTextHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineSpaceing\", function() { return getLineSpaceing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextWidth\", function() { return getTextWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return assembleFont; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _offscreen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./offscreen */ \"./node_modules/@antv/g-base/esm/util/offscreen.js\");\n\n\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nfunction getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nfunction getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nfunction getTextWidth(text, font) {\n var context = Object(_offscreen__WEBPACK_IMPORTED_MODULE_1__[\"getOffScreenContext\"])(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n }\n else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nfunction assembleFont(attrs) {\n var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3RleHQuanM/YmM4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQztBQUNHO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1Asa0JBQWtCLHNFQUFtQixHQUFHO0FBQ3hDO0FBQ0E7QUFDQSxRQUFRLG1EQUFLO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0EsUUFBUSxrREFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL3V0aWwvdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTmlsLCBlYWNoLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBnZXRPZmZTY3JlZW5Db250ZXh0IH0gZnJvbSAnLi9vZmZzY3JlZW4nO1xuLyoqXG4gKiDojrflj5bmlofmnKznmoTpq5jluqZcbiAqIEBwYXJhbSB0ZXh0IOaWh+acrFxuICogQHBhcmFtIGZvbnRTaXplIOWtl+S9k+Wkp+Wwj1xuICogQHBhcmFtIGxpbmVIZWlnaHQg6KGM6auY77yM5Y+v5Lul5Li656m6XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0SGVpZ2h0KHRleHQsIGZvbnRTaXplLCBsaW5lSGVpZ2h0KSB7XG4gICAgdmFyIGxpbmVDb3VudCA9IDE7XG4gICAgaWYgKGlzU3RyaW5nKHRleHQpKSB7XG4gICAgICAgIGxpbmVDb3VudCA9IHRleHQuc3BsaXQoJ1xcbicpLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGxpbmVDb3VudCA+IDEpIHtcbiAgICAgICAgdmFyIHNwYWNlaW5nWSA9IGdldExpbmVTcGFjZWluZyhmb250U2l6ZSwgbGluZUhlaWdodCk7XG4gICAgICAgIHJldHVybiBmb250U2l6ZSAqIGxpbmVDb3VudCArIHNwYWNlaW5nWSAqIChsaW5lQ291bnQgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvbnRTaXplO1xufVxuLyoqXG4gKiDojrflj5booYzpl7Tot53lpoLmnpzmlofmnKzlpJrooYzvvIzpnIDopoHojrflj5bmlofmnKzpl7Tot51cbiAqIEBwYXJhbSBmb250U2l6ZSDlrZfkvZPlpKflsI9cbiAqIEBwYXJhbSBsaW5lSGVpZ2h0IOihjOmrmFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZVNwYWNlaW5nKGZvbnRTaXplLCBsaW5lSGVpZ2h0KSB7XG4gICAgcmV0dXJuIGxpbmVIZWlnaHQgPyBsaW5lSGVpZ2h0IC0gZm9udFNpemUgOiBmb250U2l6ZSAqIDAuMTQ7XG59XG4vKipcbiAqIOWtl+S9k+WuveW6plxuICogQHBhcmFtIHRleHQg5paH5pysXG4gKiBAcGFyYW0gZm9udCDlrZfkvZNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRXaWR0aCh0ZXh0LCBmb250KSB7XG4gICAgdmFyIGNvbnRleHQgPSBnZXRPZmZTY3JlZW5Db250ZXh0KCk7IC8vIOiOt+WPluemu+Wxj+eahCBjdHgg6L+b6KGM6K6h566XXG4gICAgdmFyIHdpZHRoID0gMDtcbiAgICAvLyBudWxsIOaIluiAhSB1bmRlZmluZWQg5pe277yM5a695bqm5Li6IDBcbiAgICBpZiAoaXNOaWwodGV4dCkgfHwgdGV4dCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cbiAgICBjb250ZXh0LnNhdmUoKTtcbiAgICBjb250ZXh0LmZvbnQgPSBmb250O1xuICAgIGlmIChpc1N0cmluZyh0ZXh0KSAmJiB0ZXh0LmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICB2YXIgdGV4dEFyciA9IHRleHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBlYWNoKHRleHRBcnIsIGZ1bmN0aW9uIChzdWJUZXh0KSB7XG4gICAgICAgICAgICB2YXIgbWVhc3VyZVdpZHRoID0gY29udGV4dC5tZWFzdXJlVGV4dChzdWJUZXh0KS53aWR0aDtcbiAgICAgICAgICAgIGlmICh3aWR0aCA8IG1lYXN1cmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gbWVhc3VyZVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdpZHRoID0gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcbiAgICB9XG4gICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgcmV0dXJuIHdpZHRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VtYmxlRm9udChhdHRycykge1xuICAgIHZhciBmb250U2l6ZSA9IGF0dHJzLmZvbnRTaXplLCBmb250RmFtaWx5ID0gYXR0cnMuZm9udEZhbWlseSwgZm9udFdlaWdodCA9IGF0dHJzLmZvbnRXZWlnaHQsIGZvbnRTdHlsZSA9IGF0dHJzLmZvbnRTdHlsZSwgZm9udFZhcmlhbnQgPSBhdHRycy5mb250VmFyaWFudDtcbiAgICByZXR1cm4gW2ZvbnRTdHlsZSwgZm9udFZhcmlhbnQsIGZvbnRXZWlnaHQsIGZvbnRTaXplICsgXCJweFwiLCBmb250RmFtaWx5XS5qb2luKCcgJykudHJpbSgpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/text.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-base/esm/util/util.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-base/esm/util/util.js ***!
\****************************************************/
/*! exports provided: removeFromArray, isBrowser, isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst, isParent, isAllowCapture */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFromArray\", function() { return removeFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBrowser\", function() { return isBrowser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isParent\", function() { return isParent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return isAllowCapture; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"]; });\n\nfunction removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// 是否元素的父容器\nfunction isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nfunction isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3V0aWwuanM/YjJjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQzRGO0FBQ25HO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vdXRpbC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnIsIG9iaikge1xuICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKG9iaik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG59XG5leHBvcnQgdmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0IHsgaXNOaWwsIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc09iamVjdCwgaXNBcnJheSwgbWl4LCBlYWNoLCB1cHBlckZpcnN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG4vLyDmmK/lkKblhYPntKDnmoTniLblrrnlmahcbmV4cG9ydCBmdW5jdGlvbiBpc1BhcmVudChjb250YWluZXIsIHNoYXBlKSB7XG4gICAgLy8g5omA5pyJIHNoYXBlIOmDveaYryBjYW52YXMg55qE5a2Q5YWD57SgXG4gICAgaWYgKGNvbnRhaW5lci5pc0NhbnZhcygpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgcGFyZW50ID0gc2hhcGUuZ2V0UGFyZW50KCk7XG4gICAgdmFyIGlzUGFyZW50ID0gZmFsc2U7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50ID09PSBjb250YWluZXIpIHtcbiAgICAgICAgICAgIGlzUGFyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzUGFyZW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQWxsb3dDYXB0dXJlKGVsZW1lbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGVsZW1lbnQuY2ZnLnZpc2libGUgJiYgZWxlbWVudC5jZmcuY2FwdHVyZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/util.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/canvas.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/canvas.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_hit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/hit */ \"./node_modules/@antv/g-canvas/esm/util/hit.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-canvas/esm/group.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n };\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n };\n /**\n * 获取屏幕像素比\n */\n Canvas.prototype.getPixelRatio = function () {\n var pixelRatio = this.get('pixelRatio') || Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"getPixelRatio\"])();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n };\n Canvas.prototype.getViewRange = function () {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height,\n };\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = document.createElement('canvas');\n var context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n Canvas.prototype.setDOMSize = function (width, height) {\n _super.prototype.setDOMSize.call(this, width, height);\n var context = this.get('context');\n var el = this.get('el');\n var pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n };\n // 复写基类方法\n Canvas.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n var context = this.get('context');\n var element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n };\n Canvas.prototype.getShape = function (x, y) {\n var shape;\n if (this.get('quickHit')) {\n shape = Object(_util_hit__WEBPACK_IMPORTED_MODULE_2__[\"getShape\"])(this, x, y);\n }\n else {\n shape = _super.prototype.getShape.call(this, x, y, null);\n }\n return shape;\n };\n // 对绘制区域边缘取整,避免浮点数问题\n Canvas.prototype._getRefreshRegion = function () {\n var elements = this.get('refreshElements');\n var viewRegion = this.getViewRange();\n var region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n }\n else {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"getMergedRegion\"])(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n var clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"mergeView\"])(region, viewRegion);\n }\n }\n }\n return region;\n };\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n Canvas.prototype.refreshElement = function (element) {\n var refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n };\n // 清理还在进行的绘制\n Canvas.prototype._clearFrame = function () {\n var drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"clearAnimationFrame\"])(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n };\n // 手工调用绘制接口\n Canvas.prototype.draw = function () {\n var drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n };\n // 绘制所有图形\n Canvas.prototype._drawAll = function () {\n var context = this.get('context');\n var element = this.get('el');\n var children = this.getChildren();\n context.clearRect(0, 0, element.width, element.height);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n };\n // 绘制局部\n Canvas.prototype._drawRegion = function () {\n var context = this.get('context');\n var refreshElements = this.get('refreshElements');\n var children = this.getChildren();\n var region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"checkRefresh\"])(this, children, region);\n // 绘制子元素\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children, region);\n context.restore();\n }\n else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"clearChanged\"])(refreshElements);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"each\"])(refreshElements, function (element) {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n };\n // 触发绘制\n Canvas.prototype._startDraw = function () {\n var _this = this;\n var drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"requestAnimationFrame\"])(function () {\n if (_this.get('localRefresh')) {\n _this._drawRegion();\n }\n else {\n _this._drawAll();\n }\n _this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n };\n Canvas.prototype.skipDraw = function () { };\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2NhbnZhcy5qcz9iMTgyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDWTtBQUNSO0FBQ0w7QUFDTDtBQUNrRTtBQUMwQjtBQUN4SDtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLDhDQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0VBQWE7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMERBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0VBQWU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsNERBQVM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNFQUFtQjtBQUMzQixRQUFRLCtEQUFZO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzRUFBbUI7QUFDL0I7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0EsWUFBWSwrREFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwrREFBWTtBQUN4QjtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHdFQUFxQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywyREFBYztBQUNELHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2NhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDYW52YXMgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuL3V0aWwvaGl0JztcbmltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4vZ3JvdXAnO1xuaW1wb3J0IHsgZWFjaCwgZ2V0UGl4ZWxSYXRpbywgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBjbGVhckFuaW1hdGlvbkZyYW1lIH0gZnJvbSAnLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgYXBwbHlBdHRyc1RvQ29udGV4dCwgZHJhd0NoaWxkcmVuLCBnZXRNZXJnZWRSZWdpb24sIG1lcmdlVmlldywgY2hlY2tSZWZyZXNoLCBjbGVhckNoYW5nZWQgfSBmcm9tICcuL3V0aWwvZHJhdyc7XG52YXIgQ2FudmFzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYW52YXMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2FudmFzKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNmZyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZy5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDorr7nva7muLLmn5PlvJXmk47kuLogY2FudmFz77yM5Y+q6K+75bGe5oCnXG4gICAgICAgIGNmZ1sncmVuZGVyZXInXSA9ICdjYW52YXMnO1xuICAgICAgICAvLyDmmK/lkKboh6rliqjnu5jliLbvvIzkuI3pnIDopoHnlKjmiLfosIPnlKggZHJhdyDmlrnms5VcbiAgICAgICAgY2ZnWydhdXRvRHJhdyddID0gdHJ1ZTtcbiAgICAgICAgLy8g5piv5ZCm5YWB6K645bGA6YOo5Yi35paw5Zu+6KGoXG4gICAgICAgIGNmZ1snbG9jYWxSZWZyZXNoJ10gPSB0cnVlO1xuICAgICAgICBjZmdbJ3JlZnJlc2hFbGVtZW50cyddID0gW107XG4gICAgICAgIC8vIOaYr+WQpuWcqOinhuWbvuWGheiHquWKqOijgeWJqlxuICAgICAgICBjZmdbJ2NsaXBWaWV3J10gPSB0cnVlO1xuICAgICAgICAvLyDmmK/lkKbkvb/nlKjlv6vpgJ/mi77lj5bnmoTmlrnmoYjvvIzpu5jorqTkuLogZmFsc2XvvIzkuIrlsYLlj6/ku6XmiZPlvIBcbiAgICAgICAgY2ZnWydxdWlja0hpdCddID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDop6blj5HnlLvluIPmm7TmlrDnmoTkuInnp40gY2hhbmdlVHlwZVxuICAgICAgICAgKiAxLiBhdHRyOiDkv67mlLnnlLvluIPnmoTnu5jlm77lsZ7mgKdcbiAgICAgICAgICogMi4gc29ydDog55S75biD5o6S5bqP77yM5Zu+5b2i55qE5bGC5qyh5Lya5Y+R55Sf5Y+Y5YyWXG4gICAgICAgICAqIDMuIGNoYW5nZVNpemU6IOaUueWPmOeUu+W4g+Wkp+Wwj1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT09ICdhdHRyJyB8fCBjaGFuZ2VUeXBlID09PSAnc29ydCcgfHwgY2hhbmdlVHlwZSA9PT0gJ2NoYW5nZVNpemUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldCgncmVmcmVzaEVsZW1lbnRzJywgW3RoaXNdKTtcbiAgICAgICAgICAgIHRoaXMuZHJhdygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluWxj+W5leWDj+e0oOavlFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0UGl4ZWxSYXRpbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBpeGVsUmF0aW8gPSB0aGlzLmdldCgncGl4ZWxSYXRpbycpIHx8IGdldFBpeGVsUmF0aW8oKTtcbiAgICAgICAgLy8g5LiN6LazIDEg55qE5Y+WIDHvvIzotoXlh7ogMSDnmoTlj5bmlbRcbiAgICAgICAgcmV0dXJuIHBpeGVsUmF0aW8gPj0gMSA/IE1hdGguY2VpbChwaXhlbFJhdGlvKSA6IDE7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFZpZXdSYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pblg6IDAsXG4gICAgICAgICAgICBtaW5ZOiAwLFxuICAgICAgICAgICAgbWF4WDogdGhpcy5jZmcud2lkdGgsXG4gICAgICAgICAgICBtYXhZOiB0aGlzLmNmZy5oZWlnaHQsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvnmoTmlrnms5XnlJ/miJDmoIfnrb5cbiAgICBDYW52YXMucHJvdG90eXBlLmNyZWF0ZURvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBlbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIC8vIOe8k+WtmCBjb250ZXh0IOWvueixoVxuICAgICAgICB0aGlzLnNldCgnY29udGV4dCcsIGNvbnRleHQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuc2V0RE9NU2l6ZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuc2V0RE9NU2l6ZS5jYWxsKHRoaXMsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgcGl4ZWxSYXRpbyA9IHRoaXMuZ2V0UGl4ZWxSYXRpbygpO1xuICAgICAgICBlbC53aWR0aCA9IHBpeGVsUmF0aW8gKiB3aWR0aDtcbiAgICAgICAgZWwuaGVpZ2h0ID0gcGl4ZWxSYXRpbyAqIGhlaWdodDtcbiAgICAgICAgLy8g6K6+572uIGNhbnZhcyDlhYPntKDnmoTlrr3luqblkozpq5jluqbvvIzkvJrph43nva7nvKnmlL7vvIzlm6DmraQgY29udGV4dC5zY2FsZSDpnIDopoHlnKjmr4/mrKHorr7nva7lrr3jgIHpq5jlkI7osIPnlKhcbiAgICAgICAgaWYgKHBpeGVsUmF0aW8gPiAxKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNjYWxlKHBpeGVsUmF0aW8sIHBpeGVsUmF0aW8pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvmlrnms5VcbiAgICBDYW52YXMucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmNsZWFyLmNhbGwodGhpcyk7XG4gICAgICAgIHRoaXMuX2NsZWFyRnJhbWUoKTsgLy8g6ZyA6KaB5riF55CG5o6J5bu26L+f57uY5Yi255qE5binXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRTaGFwZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHZhciBzaGFwZTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdxdWlja0hpdCcpKSB7XG4gICAgICAgICAgICBzaGFwZSA9IGdldFNoYXBlKHRoaXMsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSBfc3VwZXIucHJvdG90eXBlLmdldFNoYXBlLmNhbGwodGhpcywgeCwgeSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH07XG4gICAgLy8g5a+557uY5Yi25Yy65Z+f6L6557yY5Y+W5pW077yM6YG/5YWN5rWu54K55pWw6Zeu6aKYXG4gICAgQ2FudmFzLnByb3RvdHlwZS5fZ2V0UmVmcmVzaFJlZ2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5nZXQoJ3JlZnJlc2hFbGVtZW50cycpO1xuICAgICAgICB2YXIgdmlld1JlZ2lvbiA9IHRoaXMuZ2V0Vmlld1JhbmdlKCk7XG4gICAgICAgIHZhciByZWdpb247XG4gICAgICAgIC8vIOWmguaenOaYr+W9k+WJjeeUu+W4g+aVtOS9k+WPkeeUn+S6huWPmOWMlu+8jOWImeebtOaOpemHjee7mOaVtOS4queUu+W4g1xuICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoICYmIGVsZW1lbnRzWzBdID09PSB0aGlzKSB7XG4gICAgICAgICAgICByZWdpb24gPSB2aWV3UmVnaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVnaW9uID0gZ2V0TWVyZ2VkUmVnaW9uKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgICAgICByZWdpb24ubWluWCA9IE1hdGguZmxvb3IocmVnaW9uLm1pblgpO1xuICAgICAgICAgICAgICAgIHJlZ2lvbi5taW5ZID0gTWF0aC5mbG9vcihyZWdpb24ubWluWSk7XG4gICAgICAgICAgICAgICAgcmVnaW9uLm1heFggPSBNYXRoLmNlaWwocmVnaW9uLm1heFgpO1xuICAgICAgICAgICAgICAgIHJlZ2lvbi5tYXhZID0gTWF0aC5jZWlsKHJlZ2lvbi5tYXhZKTtcbiAgICAgICAgICAgICAgICByZWdpb24ubWF4WSArPSAxOyAvLyDlnKjlvojlpJrnjq/looPkuIvlrZfkvZPnmoTpq5jkvY7kvJrkuI3kuIDoh7TvvIzpmYTliqDkuIDlg4/ntKDvvIzpgb/lhY3mrovlvbFcbiAgICAgICAgICAgICAgICB2YXIgY2xpcFZpZXcgPSB0aGlzLmdldCgnY2xpcFZpZXcnKTtcbiAgICAgICAgICAgICAgICAvLyDoh6rliqjoo4HliarkuI3lnKggdmlldyDlhoXnmoTljLrln59cbiAgICAgICAgICAgICAgICBpZiAoY2xpcFZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uID0gbWVyZ2VWaWV3KHJlZ2lvbiwgdmlld1JlZ2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWdpb247XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDliLfmlrDlm77lvaLlhYPntKDvvIzov5nph4zku4Xku4XmmK/mlL7lhaXpmJ/liJfvvIzkuIvmrKHnu5jliLbml7bov5vooYznu5jliLZcbiAgICAgKiBAcGFyYW0ge0lFbGVtZW50fSBlbGVtZW50IOWbvuW9ouWFg+e0oFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUucmVmcmVzaEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgcmVmcmVzaEVsZW1lbnRzID0gdGhpcy5nZXQoJ3JlZnJlc2hFbGVtZW50cycpO1xuICAgICAgICByZWZyZXNoRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgLy8gaWYgKHRoaXMuZ2V0KCdhdXRvRHJhdycpKSB7XG4gICAgICAgIC8vICAgdGhpcy5fc3RhcnREcmF3KCk7XG4gICAgICAgIC8vIH1cbiAgICB9O1xuICAgIC8vIOa4heeQhui/mOWcqOi/m+ihjOeahOe7mOWItlxuICAgIENhbnZhcy5wcm90b3R5cGUuX2NsZWFyRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkcmF3RnJhbWUgPSB0aGlzLmdldCgnZHJhd0ZyYW1lJyk7XG4gICAgICAgIGlmIChkcmF3RnJhbWUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOWFqOmDqOa4suafk+aXtu+8jOWtmOWcqOWxgOmDqOa4suafk++8jOWImeaKm+W8g+aOieWxgOmDqOa4suafk1xuICAgICAgICAgICAgY2xlYXJBbmltYXRpb25GcmFtZShkcmF3RnJhbWUpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2RyYXdGcmFtZScsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3JlZnJlc2hFbGVtZW50cycsIFtdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5omL5bel6LCD55So57uY5Yi25o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZHJhd0ZyYW1lID0gdGhpcy5nZXQoJ2RyYXdGcmFtZScpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2F1dG9EcmF3JykgJiYgZHJhd0ZyYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3RhcnREcmF3KCk7XG4gICAgfTtcbiAgICAvLyDnu5jliLbmiYDmnInlm77lvaJcbiAgICBDYW52YXMucHJvdG90eXBlLl9kcmF3QWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIHRoaXMpO1xuICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4pO1xuICAgICAgICAvLyDlr7nkuo4gaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9nL2lzc3Vlcy80MjIg55qE5Zy65pmv77yM5YWo5bGA5riy5p+T55qE5qih5byP5LiL5Lmf5Lya6K6w5b2V5pu05paw55qE5YWD57Sg6Zif5YiX77yM5Zug5q2k5YWo5bGA5riy5p+T5a6M5ZCO5Lmf6ZyA6KaB572u56m6XG4gICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoRWxlbWVudHMnLCBbXSk7XG4gICAgfTtcbiAgICAvLyDnu5jliLblsYDpg6hcbiAgICBDYW52YXMucHJvdG90eXBlLl9kcmF3UmVnaW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciByZWZyZXNoRWxlbWVudHMgPSB0aGlzLmdldCgncmVmcmVzaEVsZW1lbnRzJyk7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIHJlZ2lvbiA9IHRoaXMuX2dldFJlZnJlc2hSZWdpb24oKTtcbiAgICAgICAgLy8g6ZyA6KaB5rOo5oSP5Y+v6IO95rKh5pyJIHJlZ2lvbiDnmoTlnLrmma9cbiAgICAgICAgLy8g5LiA6Iis5Y+R55Sf5Zyo6K6+572u5LqGIGxvY2FsUmVmcmVzaCAs5Zyo5rKh5pyJ5Zu+5b2i5Y+R55Sf5Y+Y5YyW55qE5oOF5Ya15LiL77yM55So5oi36LCD55So5LqGIGRyYXdcbiAgICAgICAgaWYgKHJlZ2lvbikge1xuICAgICAgICAgICAgLy8g5riF55CG5oyH5a6a5Yy65Z+fXG4gICAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdChyZWdpb24ubWluWCwgcmVnaW9uLm1pblksIHJlZ2lvbi5tYXhYIC0gcmVnaW9uLm1pblgsIHJlZ2lvbi5tYXhZIC0gcmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgLy8g5L+d5a2Y5LiK5LiL5paH77yM6K6+572uIGNsaXBcbiAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVjdChyZWdpb24ubWluWCwgcmVnaW9uLm1pblksIHJlZ2lvbi5tYXhYIC0gcmVnaW9uLm1pblgsIHJlZ2lvbi5tYXhZIC0gcmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgY29udGV4dC5jbGlwKCk7XG4gICAgICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIHRoaXMpO1xuICAgICAgICAgICAgLy8g56Gu6K6k5pu05paw55qE5YWD57Sg77yM6L+Z5Liq5LyY5YyW5Y+v5Lul5o+Q5Y2HIDEwIOWAjeW3puWPs+eahOaAp+iDve+8jDEwVyDkuKrluKbmnIkgZ3JvdXAg55qE6IqC54K577yM5bGA6YOo5riy5p+T5Lya5LuOIDkwbXMg5LiL6ZmN5YiwIDUtNiBtc1xuICAgICAgICAgICAgY2hlY2tSZWZyZXNoKHRoaXMsIGNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgLy8g57uY5Yi25a2Q5YWD57SgXG4gICAgICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZWZyZXNoRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyDpmLLmraLlj5HnlJ/mlLnlj5jnmoQgZWxlbWVudHMg5rKh5pyJIHJlZ2lvbiDnmoTlnLrmma/vvIzov5nkvJrlj5HnlJ/lnKjlpJrkuKrmg4XlhrXkuItcbiAgICAgICAgICAgIC8vIDEuIOepuueahCBncm91cFxuICAgICAgICAgICAgLy8gMi4g5omA5pyJIGVsZW1lbnRzIOayoeacieWcqOe7mOWbvuWMuuWfn1xuICAgICAgICAgICAgLy8gMy4gZ3JvdXAg5LiL6Z2i55qEIGVsZW1lbnRzIOmakOiXj+aOiVxuICAgICAgICAgICAgLy8g5aaC5p6c5LiN6L+b6KGM5riF55CGIGhhc0NoYW5nZWQg55qE54q25oCB5Lya5LiN5q2j56GuXG4gICAgICAgICAgICBjbGVhckNoYW5nZWQocmVmcmVzaEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKHJlZnJlc2hFbGVtZW50cywgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmdldCgnaGFzQ2hhbmdlZCcpKSB7XG4gICAgICAgICAgICAgICAgLy8g5Zyo6KeG56qX5aSW55qEIEdyb3VwIOWFg+e0oOS8muWKoOWFpeWIsOabtOaWsOmYn+WIl+mHjO+8jOS9huWunumZheWNtOayoeacieaJp+ihjCBkcmF3KCkg6YC76L6R77yM5Lmf5bCx5rKh5pyJ5riF6ZmkIGhhc0NoYW5nZWQg5qCH6K6wXG4gICAgICAgICAgICAgICAgLy8g5Y2z5bey57uP6YeN57uY5a6M44CB5L2GIGhhc0NoYW5nZWQg5qCH6K6w5rKh5pyJ5riF6Zmk55qE5YWD57Sg77yM6ZyA6KaB57uf5LiA5riF6Zmk5o6J44CC5Li76KaB5pivIEdyb3VwIOWtmOWcqOmXrumimO+8jOWFt+S9k+WOn+WboOW+heaOkuafpVxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ3JlZnJlc2hFbGVtZW50cycsIFtdKTtcbiAgICB9O1xuICAgIC8vIOinpuWPkee7mOWItlxuICAgIENhbnZhcy5wcm90b3R5cGUuX3N0YXJ0RHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGRyYXdGcmFtZSA9IHRoaXMuZ2V0KCdkcmF3RnJhbWUnKTtcbiAgICAgICAgaWYgKCFkcmF3RnJhbWUpIHtcbiAgICAgICAgICAgIGRyYXdGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLmdldCgnbG9jYWxSZWZyZXNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2RyYXdSZWdpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9kcmF3QWxsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF90aGlzLnNldCgnZHJhd0ZyYW1lJywgbnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdkcmF3RnJhbWUnLCBkcmF3RnJhbWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLnNraXBEcmF3ID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUucmVtb3ZlRG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgLy8g6ZyA6KaB5riF55CGIGNhbnZhcyDnlLvluIPlhoXlrrnvvIzlkKbliJlpb3PkuIsg5Yib5bu655qEY2FudmFz5Z6D5Zy+5pyq5Zue5pS277yM5a+86Ie0VG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVkc+mXrumimFxuICAgICAgICAvLyDnm7jlhbPpl67popjliJfooahcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTI1MzI2MTQvdG90YWwtY2FudmFzLW1lbW9yeS11c2UtZXhjZWVkcy10aGUtbWF4aW11bS1saW1pdC1zYWZhcmktMTJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL29wZW5sYXllcnMvb3BlbmxheWVycy9pc3N1ZXMvOTI5MVxuICAgICAgICBlbC53aWR0aCA9IDA7XG4gICAgICAgIGVsLmhlaWdodCA9IDA7XG4gICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICAgIH07XG4gICAgcmV0dXJuIENhbnZhcztcbn0oQWJzdHJhY3RDYW52YXMpKTtcbmV4cG9ydCBkZWZhdWx0IENhbnZhcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbnZhcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/group.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/group.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_2__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n // 同 shape 中的方法重复了\n Group.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n Group.prototype.cacheCanvasBBox = function () {\n var children = this.cfg.children;\n var xArr = [];\n var yArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(children, function (child) {\n var bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n var bbox = null;\n if (xArr.length) {\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(xArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(yArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(yArr);\n bbox = {\n minX: minX,\n minY: minY,\n x: minX,\n y: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n var canvas = this.cfg.canvas;\n if (canvas) {\n var viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"intersectRect\"])(bbox, viewRange));\n }\n }\n else {\n this.set('isInView', false);\n }\n this.set('cacheCanvasBBox', bbox);\n };\n Group.prototype.draw = function (context, region) {\n var children = this.cfg.children;\n var allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, this.getClip());\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n };\n // 绘制时被跳过,一般发生在分组隐藏时\n Group.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2dyb3VwLmpzP2MyYWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDVztBQUNaO0FBQytDO0FBQ3BDO0FBQ0E7QUFDNUM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0EsUUFBUSxpRUFBYztBQUN0QjtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQUc7QUFDMUIsdUJBQXVCLHNEQUFHO0FBQzFCLHVCQUF1QixzREFBRztBQUMxQix1QkFBdUIsc0RBQUc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGdFQUFhO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0EsWUFBWSwrREFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMERBQWE7QUFDQSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9ncm91cC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RHcm91cCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGFwcGx5QXR0cnNUb0NvbnRleHQsIGRyYXdDaGlsZHJlbiwgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuL3V0aWwvZHJhdyc7XG5pbXBvcnQgeyBlYWNoLCBtYXgsIG1pbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgaW50ZXJzZWN0UmVjdCB9IGZyb20gJy4vdXRpbC91dGlsJztcbnZhciBHcm91cCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoR3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gR3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIEdyb3VwLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgLy8g5ZCMIHNoYXBlIOS4reeahOaWueazlemHjeWkjeS6hlxuICAgIEdyb3VwLnByb3RvdHlwZS5fYXBwbHlDbGlwID0gZnVuY3Rpb24gKGNvbnRleHQsIGNsaXApIHtcbiAgICAgICAgaWYgKGNsaXApIHtcbiAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgICAgLy8g5bCGIGNsaXAg55qE5bGe5oCn5oyC6L295YiwIGNvbnRleHQg5LiKXG4gICAgICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIGNsaXApO1xuICAgICAgICAgICAgLy8g57uY5Yi2IGNsaXAg6Lev5b6EXG4gICAgICAgICAgICBjbGlwLmNyZWF0ZVBhdGgoY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIC8vIOijgeWJqlxuICAgICAgICAgICAgY29udGV4dC5jbGlwKCk7XG4gICAgICAgICAgICBjbGlwLl9hZnRlckRyYXcoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g6L+Z5Liq5pa55rOV5Lul5YmN55u05o6l5L2/55So55qEIGdldENhbnZhc0JCb3jvvIznlLHkuo4gZ3JvdXAg5LiK5rKh5pyJ57yT5a2Y77yM5omA5Lul5q+P5qyh6YeN5paw6K6h566X77yM5a+86Ie05oCn6IO95byA6ZSA5q+U6L6D5aSnXG4gICAgLy8g5aSn5qaC6IO95aSf6IqC55yB5YWo5bGA5riy5p+TIDE1LTIwJSDnmoTmgKfog73vvIzlpoLmnpzkuI3lnKjov5nph4zliqDnvJPlrZjkvJjljJblkI4gMTBXIOS4quiKgueCueaXoOazlei+vuWIsCA1LTYgbXPvvIzlpKfmpoLog73lpJ8gMzAtNDBtc1xuICAgIEdyb3VwLnByb3RvdHlwZS5jYWNoZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2ZnLmNoaWxkcmVuO1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZhciBiYm94ID0gY2hpbGQuY2ZnLmNhY2hlQ2FudmFzQkJveDtcbiAgICAgICAgICAgIC8vIGlzSW52aWV3IOeahOWIpOWumuaYr+S4gOaXpuWbvuW9ouaIluiAheWIhue7hOa4suafk+Wwseimgeiuoeeul+aYr+WQpuWcqOinhuWbvuWGhe+8jFxuICAgICAgICAgICAgLy8g6L+Z5Liq5Yik5a6aIDEwVyDkuKrlm77lvaLkuIvlt67kuI3lpJrog73lpJ/oioLnnIEgNS02IG1zIOeahOW8gOmUgFxuICAgICAgICAgICAgaWYgKGJib3ggJiYgY2hpbGQuY2ZnLmlzSW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGJib3gubWluWCwgYmJveC5tYXhYKTtcbiAgICAgICAgICAgICAgICB5QXJyLnB1c2goYmJveC5taW5ZLCBiYm94Lm1heFkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGJib3ggPSBudWxsO1xuICAgICAgICBpZiAoeEFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBtaW5YID0gbWluKHhBcnIpO1xuICAgICAgICAgICAgdmFyIG1heFggPSBtYXgoeEFycik7XG4gICAgICAgICAgICB2YXIgbWluWSA9IG1pbih5QXJyKTtcbiAgICAgICAgICAgIHZhciBtYXhZID0gbWF4KHlBcnIpO1xuICAgICAgICAgICAgYmJveCA9IHtcbiAgICAgICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jZmcuY2FudmFzO1xuICAgICAgICAgICAgaWYgKGNhbnZhcykge1xuICAgICAgICAgICAgICAgIHZhciB2aWV3UmFuZ2UgPSBjYW52YXMuZ2V0Vmlld1JhbmdlKCk7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6L+Z5Liq5Zyw5pa55Yik5a6aIGlzSW5WaWV3ID09IGZhbHNlIOiuvue9riBiYm94IOS4uiBmYWxzZSDnmoTor53vvIzmi77lj5bnmoTmgKfog73kvJrmm7Tpq5hcbiAgICAgICAgICAgICAgICAvLyDkvYbmmK/nm67liY0gMTBXIOWbvuW9oueahOaLvuWPluWcqCAyLTVtcyDlhoXvvIzov5nkuKrkvJjljJbmhI/kuYnkuI3lpKfvvIzlj6/ku6XlkI7mnJ/op4Llr5/lho3nnItcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnaXNJblZpZXcnLCBpbnRlcnNlY3RSZWN0KGJib3gsIHZpZXdSYW5nZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2lzSW5WaWV3JywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdjYWNoZUNhbnZhc0JCb3gnLCBiYm94KTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGNvbnRleHQsIHJlZ2lvbikge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNmZy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIGFsbG93RHJhdyA9IHJlZ2lvbiA/IHRoaXMuY2ZnLnJlZnJlc2ggOiB0cnVlOyAvLyDlsYDpg6jliLfmlrDpnIDopoHliKTlrppcbiAgICAgICAgLy8g6L+Z5Liq5Zyw5pa56ZyA6KaB5Yik5a6a77yM5ZyoIEc2IOeahOWcuuaZr+avj+S4qiBncm91cCDpg73mnIkgdHJhbnNmb3JtIOeahOWcuuaZr+S4i+aAp+iDveS8muW8gOmUgOmdnuW4uOWkp1xuICAgICAgICAvLyDpgJrov4cgcmVmcmVzaCDnmoTliKTlrprvvIzlj6/ku6XkuI3liLfmlrDmsqHmnInlj5HnlJ/ov4flj5jljJbnmoTliIbnu4TvvIzkuI3lnKjop4bnqpflhoXnmoTliIbnu4TnrYnnrYlcbiAgICAgICAgLy8g5aaC5p6c5oOz6L+b5LiA5q2l5o+Q5Y2H5bGA6YOo5riy5p+T5oCn6IO977yM5Y+v5Lul6L+b5LiA5q2l5LyY5YyWIHJlZnJlc2gg55qE5Yik5a6a77yM5L6d54S25pyJ5r2c5YqbXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggJiYgYWxsb3dEcmF3KSB7XG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIC8vIGdyb3VwIOS4iueahOefqemYteWSjOWxnuaAp+S5n+S8muW6lOeUqOWIsOS4iuS4i+aWh+S4ilxuICAgICAgICAgICAgLy8g5YWI5bCGIGF0dHJzIOW6lOeUqOWIsOS4iuS4i+aWh+S4re+8jOWGjeiuvue9riBjbGlw44CC5Zug5Li6IGNsaXAg5bqU6K+l6KKr5b2T5YmN5YWD57Sg55qEIG1hdHJpeCDmiYDlvbHlk41cbiAgICAgICAgICAgIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9hcHBseUNsaXAoY29udGV4dCwgdGhpcy5nZXRDbGlwKCkpO1xuICAgICAgICAgICAgZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICB0aGlzLmNhY2hlQ2FudmFzQkJveCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOi/memHjOeahOaIkOacrOavlOi+g+Wkp++8jOWmguaenOS4jee7mOWItuWImeS4jeWGjVxuICAgICAgICAvLyB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgdGhpcy5nZXRDYW52YXNCQm94KCkpO1xuICAgICAgICB0aGlzLmNmZy5yZWZyZXNoID0gbnVsbDtcbiAgICAgICAgLy8g57uY5Yi25ZCO77yM5raI6Zmk5pu05paw5qCH6K6wXG4gICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgIH07XG4gICAgLy8g57uY5Yi25pe26KKr6Lez6L+H77yM5LiA6Iis5Y+R55Sf5Zyo5YiG57uE6ZqQ6JeP5pe2XG4gICAgR3JvdXAucHJvdG90eXBlLnNraXBEcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgIH07XG4gICAgcmV0dXJuIEdyb3VwO1xufShBYnN0cmFjdEdyb3VwKSk7XG5leHBvcnQgZGVmYXVsdCBHcm91cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyb3VwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/group.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/index.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/index.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"getArcParams\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/@antv/g-canvas/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-canvas/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _util_arc_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/arc-params */ \"./node_modules/@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArcParams\", function() { return _util_arc_params__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\nvar version = '0.5.12';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2luZGV4LmpzPzUzYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0o7QUFDZ0I7QUFDRjtBQUMxQjtBQUMyQztBQUNyRDtBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuZXhwb3J0ICogZnJvbSAnQGFudHYvZy1iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2FudmFzIH0gZnJvbSAnLi9jYW52YXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHcm91cCB9IGZyb20gJy4vZ3JvdXAnO1xuZXhwb3J0IHsgU2hhcGUgfTtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0QXJjUGFyYW1zIH0gZnJvbSAnLi91dGlsL2FyYy1wYXJhbXMnO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzAuNS4xMic7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/base.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/base.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../group */ \"./node_modules/@antv/g-canvas/esm/group.js\");\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_4__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var type = this.get('type');\n var lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(type);\n var box = bboxMethod(this);\n var halfLineWidth = lineWidth / 2;\n var minX = box.x - halfLineWidth;\n var minY = box.y - halfLineWidth;\n var maxX = box.x + box.width + halfLineWidth;\n var maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX: minX,\n y: minY,\n minY: minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX: maxX,\n maxY: maxY,\n };\n };\n ShapeBase.prototype.isFill = function () {\n return !!this.attrs['fill'] || this.isClipShape();\n };\n ShapeBase.prototype.isStroke = function () {\n return !!this.attrs['stroke'];\n };\n // 同 shape 中的方法重复了\n ShapeBase.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 绘制图形时需要考虑 region 限制\n ShapeBase.prototype.draw = function (context, region) {\n var clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n var bbox = this.getCanvasBBox();\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, clip);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n };\n ShapeBase.prototype.getCanvasViewBox = function () {\n var canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n };\n ShapeBase.prototype.cacheCanvasBBox = function () {\n var canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n var bbox = this.getCanvasBBox();\n var isInView = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n }\n else {\n this.set('cacheCanvasBBox', null);\n }\n }\n };\n ShapeBase.prototype._afterDraw = function () {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n };\n ShapeBase.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n };\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.drawPath = function (context) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.fill = function (context) {\n context.fill();\n };\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.stroke = function (context) {\n context.stroke();\n };\n // 绘制或者填充\n ShapeBase.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.createPath = function (context) { };\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.afterDrawPath = function (context) { };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n // return HitUtil.isHitShape(this, refX, refY);\n var isStroke = this.isStroke();\n var isFill = this.isFill();\n var lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n };\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n ShapeBase.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n if (!this.isStroke()) {\n return 0;\n }\n var attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2Jhc2UuanM/MjRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNDO0FBQ087QUFDZTtBQUN0QjtBQUNaO0FBQ0o7QUFDN0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxRUFBcUU7QUFDbkg7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0VBQWE7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdFQUFhO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzRUFBbUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGdFQUFhO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHdEQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDBEQUFhO0FBQ0Esd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0U2hhcGUgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgaXNOaWwsIGludGVyc2VjdFJlY3QgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgYXBwbHlBdHRyc1RvQ29udGV4dCwgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgZ2V0QkJveE1ldGhvZCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL2luZGV4JztcbmltcG9ydCBHcm91cCBmcm9tICcuLi9ncm91cCc7XG52YXIgU2hhcGVCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTaGFwZUJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU2hhcGVCYXNlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDorr7nva7pu5jorqTlgLxcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgbGluZVdpZHRoOiAxLCBsaW5lQXBwZW5kV2lkdGg6IDAsIHN0cm9rZU9wYWNpdHk6IDEsIGZpbGxPcGFjaXR5OiAxIH0pO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jYWxjdWxhdGVCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZSA9IHRoaXMuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciBsaW5lV2lkdGggPSB0aGlzLmdldEhpdExpbmVXaWR0aCgpO1xuICAgICAgICAvLyBjb25zdCBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgYmJveE1ldGhvZCA9IGdldEJCb3hNZXRob2QodHlwZSk7XG4gICAgICAgIHZhciBib3ggPSBiYm94TWV0aG9kKHRoaXMpO1xuICAgICAgICB2YXIgaGFsZkxpbmVXaWR0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgIHZhciBtaW5YID0gYm94LnggLSBoYWxmTGluZVdpZHRoO1xuICAgICAgICB2YXIgbWluWSA9IGJveC55IC0gaGFsZkxpbmVXaWR0aDtcbiAgICAgICAgdmFyIG1heFggPSBib3gueCArIGJveC53aWR0aCArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIHZhciBtYXhZID0gYm94LnkgKyBib3guaGVpZ2h0ICsgaGFsZkxpbmVXaWR0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICB3aWR0aDogYm94LndpZHRoICsgbGluZVdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBib3guaGVpZ2h0ICsgbGluZVdpZHRoLFxuICAgICAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgICAgIG1heFk6IG1heFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzRmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hdHRyc1snZmlsbCddIHx8IHRoaXMuaXNDbGlwU2hhcGUoKTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXR0cnNbJ3N0cm9rZSddO1xuICAgIH07XG4gICAgLy8g5ZCMIHNoYXBlIOS4reeahOaWueazlemHjeWkjeS6hlxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuX2FwcGx5Q2xpcCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjbGlwKSB7XG4gICAgICAgIGlmIChjbGlwKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIC8vIOWwhiBjbGlwIOeahOWxnuaAp+aMgui9veWIsCBjb250ZXh0IOS4ilxuICAgICAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCBjbGlwKTtcbiAgICAgICAgICAgIC8vIOe7mOWItiBjbGlwIOi3r+W+hFxuICAgICAgICAgICAgY2xpcC5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICAvLyDoo4HliapcbiAgICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICAgICAgY2xpcC5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOe7mOWItuWbvuW9ouaXtumcgOimgeiAg+iZkSByZWdpb24g6ZmQ5Yi2XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGNvbnRleHQsIHJlZ2lvbikge1xuICAgICAgICB2YXIgY2xpcCA9IHRoaXMuY2ZnLmNsaXBTaGFwZTtcbiAgICAgICAgLy8g5aaC5p6c5oyH5a6a5LqGIHJlZ2lvbu+8jOWQjOaXtuS4jeWFgeiuuOWIt+aWsOaXtu+8jOebtOaOpei/lOWbnlxuICAgICAgICBpZiAocmVnaW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jZmcucmVmcmVzaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLl9hZnRlckRyYXcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDmmK/lkKbnm7jkuqTpnIDopoHogIPomZEgY2xpcCDnmoTljIXlm7Tnm5JcbiAgICAgICAgICAgIHZhciBiYm94ID0gdGhpcy5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgICAgICBpZiAoIWludGVyc2VjdFJlY3QocmVnaW9uLCBiYm94KSkge1xuICAgICAgICAgICAgICAgIC8vIOWbvuW9oueahOWMheWbtOebkuS4jumHjee7mOWMuuWfn+S4jeebuOS6pOaXtu+8jOS5n+mcgOimgea4hemZpOagh+iusFxuICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIOWtmOWcqOWkmuenjeaDheW9oumcgOimgeabtOaWsCBjYWNoZUNhbnZhc0JCb3gg5ZKMIGlzSW52aWV3IOeahOWIpOWumlxuICAgICAgICAgICAgICAgIC8vIDEuIOS5i+WJjeWbvuW9ouWcqOinhueql+WGhe+8jOS9huaYr+eOsOWcqOS4jeWGjeinhueql+WGhVxuICAgICAgICAgICAgICAgIC8vIDIuIOWmguaenOW9k+WJjeeahOWbvuW9ouS7peWPiueItuWFg+e0oOmDveayoeacieWPkeeUn+i/h+WPmOWMlu+8jHJlZnJlc2ggPSBmYWxzZSDkuI3kvJrotbDliLDov5nph4zvvIzmiYDku6Xov5nph4znmoTlm77lvaLpg73mmK/niLblhYPntKDlj5HnlJ/lj5jljJbvvIzkvYbmmK/msqHmnInlnKjop4blm77lhoXnmoTlhYPntKBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZmcuaXNJblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgLy8g5YWI5bCGIGF0dHJzIOW6lOeUqOWIsOS4iuS4i+aWh+S4re+8jOWGjeiuvue9riBjbGlw44CC5Zug5Li6IGNsaXAg5bqU6K+l6KKr5b2T5YmN5YWD57Sg55qEIG1hdHJpeCDmiYDlvbHlk41cbiAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCB0aGlzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlDbGlwKGNvbnRleHQsIGNsaXApO1xuICAgICAgICB0aGlzLmRyYXdQYXRoKGNvbnRleHQpO1xuICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgdGhpcy5fYWZ0ZXJEcmF3KCk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldENhbnZhc1ZpZXdCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmNmZy5jYW52YXM7XG4gICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0Vmlld1JhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNhY2hlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNhbnZhc0JCb3ggPSB0aGlzLmdldENhbnZhc1ZpZXdCb3goKTtcbiAgICAgICAgLy8g57uY5Yi255qE5pe25YCZ57yT5a2Y5YyF5Zu055uSXG4gICAgICAgIGlmIChjYW52YXNCQm94KSB7XG4gICAgICAgICAgICB2YXIgYmJveCA9IHRoaXMuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICAgICAgdmFyIGlzSW5WaWV3ID0gaW50ZXJzZWN0UmVjdChiYm94LCBjYW52YXNCQm94KTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdpc0luVmlldycsIGlzSW5WaWV3KTtcbiAgICAgICAgICAgIC8vIOS4jeWGjeinhueql+WGhSBjYWNoZUNhbnZhc0JCb3gg6K6+572u5oiQIG51bGzvvIzkvJrmj5DljYflsYDpg6jmuLLmn5PnmoTmgKfog73vvIxcbiAgICAgICAgICAgIC8vIOWboOS4uuWcqOWxgOmDqOa4suafk+W9seWTjeeahOWMheWbtOebkuiuoeeul+aXtuS4jeiAg+iZkei/meS4quWbvuW9oueahOWMheWbtOebklxuICAgICAgICAgICAgLy8g54i25YWD57SgIGNhY2hlQ2FudmFzQkJveCDorqHnrpfnmoTml7blgJnkuZ/kuI3orqHnrpdcbiAgICAgICAgICAgIGlmIChpc0luVmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdjYWNoZUNhbnZhc0JCb3gnLCBiYm94KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdjYWNoZUNhbnZhc0JCb3gnLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5fYWZ0ZXJEcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNhY2hlQ2FudmFzQkJveCgpO1xuICAgICAgICAvLyDnu5jliLblkI7mtojpmaTmoIforrBcbiAgICAgICAgdGhpcy5zZXQoJ2hhc0NoYW5nZWQnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoJywgbnVsbCk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnNraXBEcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCdpc0luVmlldycsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOe7mOWItuWbvuW9oueahOi3r+W+hFxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZHJhd1BhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhdGgoY29udGV4dCk7XG4gICAgICAgIHRoaXMuc3Ryb2tlQW5kRmlsbChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5hZnRlckRyYXdQYXRoKGNvbnRleHQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWhq+WFheWbvuW9olxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog57uY5Yi25Zu+5b2i6L655qGGXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY29udGV4dCDkuIrkuIvmlodcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnN0cm9rZSA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgfTtcbiAgICAvLyDnu5jliLbmiJbogIXloavlhYVcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnN0cm9rZUFuZEZpbGwgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHJzLCBsaW5lV2lkdGggPSBfYS5saW5lV2lkdGgsIG9wYWNpdHkgPSBfYS5vcGFjaXR5LCBzdHJva2VPcGFjaXR5ID0gX2Euc3Ryb2tlT3BhY2l0eSwgZmlsbE9wYWNpdHkgPSBfYS5maWxsT3BhY2l0eTtcbiAgICAgICAgaWYgKHRoaXMuaXNGaWxsKCkpIHtcbiAgICAgICAgICAgIGlmICghaXNOaWwoZmlsbE9wYWNpdHkpICYmIGZpbGxPcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGZpbGxPcGFjaXR5O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOaWwoc3Ryb2tlT3BhY2l0eSkgJiYgc3Ryb2tlT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gc3Ryb2tlT3BhY2l0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJva2UoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZnRlckRyYXdQYXRoKGNvbnRleHQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOe7mOWItuWbvuW9oueahOi3r+W+hFxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7IH07XG4gICAgLyoqXG4gICAgICog57uY5Yi25a6M5oiQIHBhdGgg5ZCO55qE5pON5L2cXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5hZnRlckRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHsgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzSW5TaGFwZSA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIC8vIHJldHVybiBIaXRVdGlsLmlzSGl0U2hhcGUodGhpcywgcmVmWCwgcmVmWSk7XG4gICAgICAgIHZhciBpc1N0cm9rZSA9IHRoaXMuaXNTdHJva2UoKTtcbiAgICAgICAgdmFyIGlzRmlsbCA9IHRoaXMuaXNGaWxsKCk7XG4gICAgICAgIHZhciBsaW5lV2lkdGggPSB0aGlzLmdldEhpdExpbmVXaWR0aCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc0luU3Ryb2tlT3JQYXRoKHJlZlgsIHJlZlksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCk7XG4gICAgfTtcbiAgICAvLyDkuYvmiYDku6XkuI3mi4bmiJAgaXNJblN0cm9rZSDlkowgaXNJblBhdGgg5Zyo5LqO5Lik6ICF5a2Y5Zyo5LiA5Lqb5YWx5ZCM55qE6K6h566XXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bnur/mi77lj5bnmoTlrr3luqZcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSDnur/nmoTmi77lj5blrr3luqZcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldEhpdExpbmVXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU3Ryb2tlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIHJldHVybiBhdHRyc1snbGluZVdpZHRoJ10gKyBhdHRyc1snbGluZUFwcGVuZFdpZHRoJ107XG4gICAgfTtcbiAgICByZXR1cm4gU2hhcGVCYXNlO1xufShBYnN0cmFjdFNoYXBlKSk7XG5leHBvcnQgZGVmYXVsdCBTaGFwZUJhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/base.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/circle.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/circle.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n var halfLineWidth = lineWidth / 2;\n var absDistance = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n };\n Circle.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2NpcmNsZS5qcz9iMTg2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDYjtBQUNTO0FBQ3hDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLG1CQUFtQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwyREFBUTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDlnIZcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBkaXN0YW5jZSB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG52YXIgQ2lyY2xlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDaXJjbGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENpcmNsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCByOiAwIH0pO1xuICAgIH07XG4gICAgQ2lyY2xlLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGN4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIGN5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHIgPSBhdHRycy5yO1xuICAgICAgICB2YXIgaGFsZkxpbmVXaWR0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgIHZhciBhYnNEaXN0YW5jZSA9IGRpc3RhbmNlKGN4LCBjeSwgeCwgeSk7XG4gICAgICAgIC8vIOebtOaOpeeUqOi3neemu++8jOWmguaenOWQjOaXtuWtmOWcqOi+ueWSjOWhq+WFheaXtu+8jOWPr+S7peWHj+WwkeS4pOasoeiuoeeul1xuICAgICAgICBpZiAoaXNGaWxsICYmIGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWJzRGlzdGFuY2UgPD0gciArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGFic0Rpc3RhbmNlIDw9IHI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWJzRGlzdGFuY2UgPj0gciAtIGhhbGZMaW5lV2lkdGggJiYgYWJzRGlzdGFuY2UgPD0gciArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgQ2lyY2xlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByID0gYXR0cnMucjtcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgY29udGV4dC5hcmMoY3gsIGN5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIH07XG4gICAgcmV0dXJuIENpcmNsZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/circle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/ellipse.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/ellipse.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\n\n\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var halfLineWith = lineWidth / 2;\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx, ry = attrs.ry;\n var squareX = (x - cx) * (x - cx);\n var squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return (ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1);\n }\n return false;\n };\n Ellipse.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx;\n var ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n }\n else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2VsbGlwc2UuanM/NThhZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsMkJBQTJCO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9lbGxpcHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOakreWchlxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbi8vIOagueaNruakreWchuWFrOW8j+iuoeeulyB4KngvcngqcnggKyB5Knkvcnkqcnk7XG5mdW5jdGlvbiBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcngsIHJ5KSB7XG4gICAgcmV0dXJuIHNxdWFyZVggLyAocnggKiByeCkgKyBzcXVhcmVZIC8gKHJ5ICogcnkpO1xufVxudmFyIEVsbGlwc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsbGlwc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRWxsaXBzZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBFbGxpcHNlLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHg6IDAsIHk6IDAsIHJ4OiAwLCByeTogMCB9KTtcbiAgICB9O1xuICAgIEVsbGlwc2UucHJvdG90eXBlLmlzSW5TdHJva2VPclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgaXNTdHJva2UsIGlzRmlsbCwgbGluZVdpZHRoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgaGFsZkxpbmVXaXRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgdmFyIGN4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIGN5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHJ4ID0gYXR0cnMucngsIHJ5ID0gYXR0cnMucnk7XG4gICAgICAgIHZhciBzcXVhcmVYID0gKHggLSBjeCkgKiAoeCAtIGN4KTtcbiAgICAgICAgdmFyIHNxdWFyZVkgPSAoeSAtIGN5KSAqICh5IC0gY3kpO1xuICAgICAgICAvLyDkvb/nlKjmpK3lnIbnmoTlhazlvI/vvJogeCp4L3J4KnJ4ICsgeSp5L3J5KnJ5ID0gMTtcbiAgICAgICAgaWYgKGlzRmlsbCAmJiBpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsbGlwc2VEaXN0YW5jZShzcXVhcmVYLCBzcXVhcmVZLCByeCArIGhhbGZMaW5lV2l0aCwgcnkgKyBoYWxmTGluZVdpdGgpIDw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsbGlwc2VEaXN0YW5jZShzcXVhcmVYLCBzcXVhcmVZLCByeCwgcnkpIDw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICByZXR1cm4gKGVsbGlwc2VEaXN0YW5jZShzcXVhcmVYLCBzcXVhcmVZLCByeCAtIGhhbGZMaW5lV2l0aCwgcnkgLSBoYWxmTGluZVdpdGgpID49IDEgJiZcbiAgICAgICAgICAgICAgICBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcnggKyBoYWxmTGluZVdpdGgsIHJ5ICsgaGFsZkxpbmVXaXRoKSA8PSAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBFbGxpcHNlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByeCA9IGF0dHJzLnJ4O1xuICAgICAgICB2YXIgcnkgPSBhdHRycy5yeTtcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgLy8g5YW85a656YC76L6RXG4gICAgICAgIGlmIChjb250ZXh0LmVsbGlwc2UpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZWxsaXBzZShjeCwgY3ksIHJ4LCByeSwgMCwgMCwgTWF0aC5QSSAqIDIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWmguaenOS4jeaUr+aMge+8jOWImeS9v+eUqOWchuadpee7mOWItu+8jOi/m+ihjOWPmOW9olxuICAgICAgICAgICAgdmFyIHIgPSByeCA+IHJ5ID8gcnggOiByeTtcbiAgICAgICAgICAgIHZhciBzY2FsZVggPSByeCA+IHJ5ID8gMSA6IHJ4IC8gcnk7XG4gICAgICAgICAgICB2YXIgc2NhbGVZID0gcnggPiByeSA/IHJ5IC8gcnggOiAxO1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICAgICAgY29udGV4dC5zY2FsZShzY2FsZVgsIHNjYWxlWSk7XG4gICAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByLCAwLCBNYXRoLlBJICogMik7XG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBFbGxpcHNlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IEVsbGlwc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGxpcHNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/ellipse.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/image.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/image.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\n\n\n\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\nvar ImageShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ImageShape, _super);\n function ImageShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageShape.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n ImageShape.prototype.initAttrs = function (attrs) {\n this._setImage(attrs.img);\n };\n // image 不计算 stroke\n ImageShape.prototype.isStroke = function () {\n return false;\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n ImageShape.prototype.isOnlyHitBox = function () {\n return true;\n };\n ImageShape.prototype._afterLoading = function () {\n if (this.get('toDraw') === true) {\n var canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n }\n else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n };\n ImageShape.prototype._setImage = function (img) {\n var _this = this;\n var attrs = this.attrs;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(img)) {\n var image_1 = new Image();\n image_1.onload = function () {\n // 图片未加载完,则已经被销毁\n if (_this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n _this.attr('img', image_1);\n _this.set('loading', false);\n _this._afterLoading();\n var callback = _this.get('callback');\n if (callback) {\n callback.call(_this);\n }\n };\n // 设置跨域\n image_1.crossOrigin = 'Anonymous';\n image_1.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n }\n else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n }\n else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n };\n ImageShape.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n };\n ImageShape.prototype.createPath = function (context) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height, sx = attrs.sx, sy = attrs.sy, swidth = attrs.swidth, sheight = attrs.sheight;\n var img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sx) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sy) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(swidth) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n }\n else {\n context.drawImage(img, x, y, width, height);\n }\n }\n };\n return ImageShape;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ImageShape);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2ltYWdlLmpzP2YzZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ2dCO0FBQy9DO0FBQ0EseUNBQXlDLDJEQUFRO0FBQ2pEO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsa0NBQWtDO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSyxTQUFTLHdEQUFLLFNBQVMsd0RBQUssYUFBYSx3REFBSztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0kseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW1hZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5Zu+54mHXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzTmlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmZ1bmN0aW9uIGlzQ2FudmFzKGRvbSkge1xuICAgIHJldHVybiBkb20gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBpc1N0cmluZyhkb20ubm9kZU5hbWUpICYmIGRvbS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQ0FOVkFTJztcbn1cbnZhciBJbWFnZVNoYXBlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbWFnZVNoYXBlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEltYWdlU2hhcGUoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pO1xuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX3NldEltYWdlKGF0dHJzLmltZyk7XG4gICAgfTtcbiAgICAvLyBpbWFnZSDkuI3orqHnrpcgc3Ryb2tlXG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8vIOS7heS7heS9v+eUqOWMheWbtOebkuajgOa1i+adpei/m+ihjOaLvuWPllxuICAgIC8vIOaJgOS7peS4jemcgOimgeWkjeWGmSBpc0luU3Ryb2tlT3JQYXRoIOeahOaWueazlVxuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5fYWZ0ZXJMb2FkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5nZXQoJ3RvRHJhdycpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgaWYgKGNhbnZhcykge1xuICAgICAgICAgICAgICAgIC8vIOi/meauteW6lOivpeaUueaIkOWxgOmDqOa4suafk1xuICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDov5nnp43mlrnlvI/lpoLmnpzlj5HnlJ/pga7mjKHkvJrlh7rnjrDpl67pophcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhdGgodGhpcy5nZXQoJ2NvbnRleHQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLl9zZXRJbWFnZSA9IGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgaWYgKGlzU3RyaW5nKGltZykpIHtcbiAgICAgICAgICAgIHZhciBpbWFnZV8xID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZV8xLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyDlm77niYfmnKrliqDovb3lrozvvIzliJnlt7Lnu4/ooqvplIDmr4FcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g57yT5a2Y5Y6f5aeL5Zyw5Z2A77yM5Y+v5Lul5YGa5a+55q+U77yM6Ziy5q2i6YeN5aSN5Yqg6L295Zu+54mHXG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6ICD6JmR5Yiw5Zyo5Yqg6L296L+H56iL5Lit5Y+v6IO95pu/5o2iIGltZyDlsZ7mgKfvvIzliJnmg4XlhrXmm7TliqDlpI3mnYJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNldCgnaW1nU3JjJywgaW1nKTtcbiAgICAgICAgICAgICAgICAvLyDov5nph4zkvJrlvqrnjq/osIPnlKggX3NldEltYWdlIOaWueazle+8jOS9huS4jeS8muWGjei1sOi/meS4quWIhuaUr1xuICAgICAgICAgICAgICAgIF90aGlzLmF0dHIoJ2ltZycsIGltYWdlXzEpO1xuICAgICAgICAgICAgICAgIF90aGlzLnNldCgnbG9hZGluZycsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5fYWZ0ZXJMb2FkaW5nKCk7XG4gICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gX3RoaXMuZ2V0KCdjYWxsYmFjaycpO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKF90aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8g6K6+572u6Leo5Z+fXG4gICAgICAgICAgICBpbWFnZV8xLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgICAgICBpbWFnZV8xLnNyYyA9IGltZztcbiAgICAgICAgICAgIC8vIGxvYWRpbmcg6L+H56iL5Lit5LiN57uY5Yi2XG4gICAgICAgICAgICB0aGlzLnNldCgnbG9hZGluZycsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIEltYWdlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmmK/kuIDkuKogaW1hZ2Ug5a+56LGh77yM5YiZ6K6+572u5a696auYXG4gICAgICAgICAgICBpZiAoIWF0dHJzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgYXR0cnMud2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGF0dHJzLmhlaWdodCA9IGltZy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNDYW52YXMoaW1nKSkge1xuICAgICAgICAgICAgLy8g5aaC5p6c6K6+572u5LqGIGNhbnZhcyDlr7nosaFcbiAgICAgICAgICAgIGlmICghYXR0cnMud2lkdGgpIHtcbiAgICAgICAgICAgICAgICBhdHRycy53aWR0aCA9IE51bWJlcihpbWcuZ2V0QXR0cmlidXRlKCd3aWR0aCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXR0cnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgYXR0cnMuaGVpZ2h0LCBOdW1iZXIoaW1nLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgLy8g5aaC5p6c5Yqg6L2955qE5bey57uP5piv5b2T5YmN5Zu+54mH77yM5YiZ5LiN5YaN5aSE55CGXG4gICAgICAgIGlmIChuYW1lID09PSAnaW1nJykge1xuICAgICAgICAgICAgLy8g5Y+v5Lul5Yqg57yT5Yay77yMJiYgdGhpcy5nZXQoJ2ltZ1NyYycpICE9PSB2YWx1ZVxuICAgICAgICAgICAgdGhpcy5fc2V0SW1hZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgLy8g5q2j5Zyo5Yqg6L295YiZ5LiN57uY5Yi2XG4gICAgICAgIGlmICh0aGlzLmdldCgnbG9hZGluZycpKSB7XG4gICAgICAgICAgICB0aGlzLnNldCgndG9EcmF3JywgdHJ1ZSk7IC8vIOWKoOi9veWujOaIkOWQjue7mOWItlxuICAgICAgICAgICAgdGhpcy5zZXQoJ2NvbnRleHQnLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueSwgd2lkdGggPSBhdHRycy53aWR0aCwgaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0LCBzeCA9IGF0dHJzLnN4LCBzeSA9IGF0dHJzLnN5LCBzd2lkdGggPSBhdHRycy5zd2lkdGgsIHNoZWlnaHQgPSBhdHRycy5zaGVpZ2h0O1xuICAgICAgICB2YXIgaW1nID0gYXR0cnMuaW1nO1xuICAgICAgICBpZiAoaW1nIGluc3RhbmNlb2YgSW1hZ2UgfHwgaXNDYW52YXMoaW1nKSkge1xuICAgICAgICAgICAgaWYgKCFpc05pbChzeCkgJiYgIWlzTmlsKHN5KSAmJiAhaXNOaWwoc3dpZHRoKSAmJiAhaXNOaWwoc2hlaWdodCkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIHN4LCBzeSwgc3dpZHRoLCBzaGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgeCwgeSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBJbWFnZVNoYXBlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IEltYWdlU2hhcGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/image.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/index.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/index.js ***!
\********************************************************/
/*! exports provided: Base, Circle, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g-canvas/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-canvas/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./image */ \"./node_modules/@antv/g-canvas/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-canvas/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./marker */ \"./node_modules/@antv/g-canvas/esm/shape/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g-canvas/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-canvas/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-canvas/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g-canvas/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ \"./node_modules/@antv/g-canvas/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2luZGV4LmpzPzQ3OTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDSTtBQUNFO0FBQ0o7QUFDRjtBQUNJO0FBQ0o7QUFDTTtBQUNFO0FBQ1I7QUFDQTtBQUN6QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDaXJjbGUgfSBmcm9tICcuL2NpcmNsZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsbGlwc2UgfSBmcm9tICcuL2VsbGlwc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbWFnZSB9IGZyb20gJy4vaW1hZ2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5lIH0gZnJvbSAnLi9saW5lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUG9seWdvbiB9IGZyb20gJy4vcG9seWdvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlsaW5lIH0gZnJvbSAnLi9wb2x5bGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlY3QgfSBmcm9tICcuL3JlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0IH0gZnJvbSAnLi90ZXh0Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/line.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/line.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-stroke/line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了箭头\n Line.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n Line.prototype.setArrow = function () {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addStartArrow\"](this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addEndArrow\"](this, attrs, x1, y1, x2, y2);\n }\n };\n Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return Object(_util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y);\n };\n Line.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n var startArrowDistance = {\n dx: 0,\n dy: 0,\n };\n var endArrowDistance = {\n dx: 0,\n dy: 0,\n };\n if (startArrow && startArrow.d) {\n startArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.endArrow.d);\n }\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n };\n Line.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2xpbmUuanM/ZDdjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDZ0Q7QUFDakI7QUFDYTtBQUNEO0FBQzNDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLGlFQUFpRTtBQUMvRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBdUI7QUFDbkM7QUFDQTtBQUNBLFlBQVksdURBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxvRUFBTTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw0REFBMEI7QUFDM0Q7QUFDQTtBQUNBLCtCQUErQiw0REFBMEI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBUTtBQUN2QjtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbi8qKlxuICogQGZpbGVvdmVydmlldyDnur9cbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCBpbkxpbmUgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvbGluZSc7XG5pbXBvcnQgKiBhcyBBcnJvd1V0aWwgZnJvbSAnLi4vdXRpbC9hcnJvdyc7XG52YXIgTGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGluZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMaW5lKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIExpbmUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDAsIHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5pbml0QXR0cnMgPSBmdW5jdGlvbiAoYXR0cnMpIHtcbiAgICAgICAgdGhpcy5zZXRBcnJvdygpO1xuICAgIH07XG4gICAgLy8g5pu05paw5bGe5oCn5pe277yM5qOA5rWL5piv5ZCm5pu05pS55LqG566t5aS0XG4gICAgTGluZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIC8vIOeUseS6jueureWktOeahOe7mOWItuS+nei1luS6jiBsaW5lIOeahOivuOWkmiBhdHRyc++8jOWboOatpOi/memHjOS4jeWGjeWvueavj+S4qiBhdHRyIOi/m+ihjOWIpOaWre+8jGF0dHIg5q+P5qyh5Y+Y5YyW6YO95Lya5b2x5ZON566t5aS055qE5pu05pawXG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICB9O1xuICAgIExpbmUucHJvdG90eXBlLnNldEFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHgxID0gYXR0cnMueDEsIHkxID0gYXR0cnMueTEsIHgyID0gYXR0cnMueDIsIHkyID0gYXR0cnMueTIsIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgICAgICBpZiAoc3RhcnRBcnJvdykge1xuICAgICAgICAgICAgQXJyb3dVdGlsLmFkZFN0YXJ0QXJyb3codGhpcywgYXR0cnMsIHgyLCB5MiwgeDEsIHkxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRFbmRBcnJvdyh0aGlzLCBhdHRycywgeDEsIHkxLCB4MiwgeTIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICBpZiAoIWlzU3Ryb2tlIHx8ICFsaW5lV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgeDEgPSBfYS54MSwgeTEgPSBfYS55MSwgeDIgPSBfYS54MiwgeTIgPSBfYS55MjtcbiAgICAgICAgcmV0dXJuIGluTGluZSh4MSwgeTEsIHgyLCB5MiwgbGluZVdpZHRoLCB4LCB5KTtcbiAgICB9O1xuICAgIExpbmUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHgxID0gYXR0cnMueDEsIHkxID0gYXR0cnMueTEsIHgyID0gYXR0cnMueDIsIHkyID0gYXR0cnMueTIsIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgICAgICB2YXIgc3RhcnRBcnJvd0Rpc3RhbmNlID0ge1xuICAgICAgICAgICAgZHg6IDAsXG4gICAgICAgICAgICBkeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVuZEFycm93RGlzdGFuY2UgPSB7XG4gICAgICAgICAgICBkeDogMCxcbiAgICAgICAgICAgIGR5OiAwLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoc3RhcnRBcnJvdyAmJiBzdGFydEFycm93LmQpIHtcbiAgICAgICAgICAgIHN0YXJ0QXJyb3dEaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHgxLCB5MSwgeDIsIHkyLCBhdHRycy5zdGFydEFycm93LmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvdyAmJiBlbmRBcnJvdy5kKSB7XG4gICAgICAgICAgICBlbmRBcnJvd0Rpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQoeDEsIHkxLCB4MiwgeTIsIGF0dHJzLmVuZEFycm93LmQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIC8vIOWmguaenOiHquWumuS5ieeureWktO+8jOe6v+adoeebuOW6lOe8qei/m1xuICAgICAgICBjb250ZXh0Lm1vdmVUbyh4MSArIHN0YXJ0QXJyb3dEaXN0YW5jZS5keCwgeTEgKyBzdGFydEFycm93RGlzdGFuY2UuZHkpO1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh4MiAtIGVuZEFycm93RGlzdGFuY2UuZHgsIHkyIC0gZW5kQXJyb3dEaXN0YW5jZS5keSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5hZnRlckRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdzdGFydEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIGVuZEFycm93U2hhcGUgPSB0aGlzLmdldCgnZW5kQXJyb3dTaGFwZScpO1xuICAgICAgICBpZiAoc3RhcnRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBzdGFydEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgZW5kQXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgbGVuZ3RoIG9mIGxpbmVcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIExpbmUucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgeDEgPSBfYS54MSwgeTEgPSBfYS55MSwgeDIgPSBfYS54MiwgeTIgPSBfYS55MjtcbiAgICAgICAgcmV0dXJuIExpbmVVdGlsLmxlbmd0aCh4MSwgeTEsIHgyLCB5Mik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgTGluZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5wb2ludEF0KHgxLCB5MSwgeDIsIHkyLCByYXRpbyk7XG4gICAgfTtcbiAgICByZXR1cm4gTGluZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBMaW5lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/line.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/marker.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/marker.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down': function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.initAttrs = function (attrs) {\n this._resetParamsCache();\n };\n // 重置绘制 path 存储的缓存\n Marker.prototype._resetParamsCache = function () {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n };\n // 更新属性时,检测是否更改了 path\n Marker.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n Marker.prototype.isOnlyHitBox = function () {\n return true;\n };\n Marker.prototype._getR = function (attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(attrs.r) ? attrs.radius : attrs.r;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n var symbol = attrs.symbol || 'circle';\n var r = this._getR(attrs);\n var method;\n var path;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_4__[\"isFunction\"])(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"path2Absolute\"])(path);\n }\n else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n if (!method) {\n console.warn(symbol + \" marker is not supported.\");\n return null;\n }\n path = method(x, y, r);\n }\n return path;\n };\n Marker.prototype.createPath = function (context) {\n var path = this._getPath();\n var paramsCache = this.get('paramsCache');\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, { path: path }, paramsCache);\n };\n Marker.Symbols = Symbols;\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=marker.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL21hcmtlci5qcz9iYTY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDQztBQUNhO0FBQ2pCO0FBQ1c7QUFDRjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxFQUFFO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3REFBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUVBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUSxpQkFBaUIsYUFBYTtBQUM5QztBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9tYXJrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWFya2VyXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcGF0aDJBYnNvbHV0ZSB9IGZyb20gJ0BhbnR2L3BhdGgtdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IGRyYXdQYXRoIH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbnZhciBTeW1ib2xzID0ge1xuICAgIC8vIOWchlxuICAgIGNpcmNsZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFsnTScsIHggLSByLCB5XSxcbiAgICAgICAgICAgIFsnQScsIHIsIHIsIDAsIDEsIDAsIHggKyByLCB5XSxcbiAgICAgICAgICAgIFsnQScsIHIsIHIsIDAsIDEsIDAsIHggLSByLCB5XSxcbiAgICAgICAgXTtcbiAgICB9LFxuICAgIC8vIOato+aWueW9olxuICAgIHNxdWFyZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSArIHJdLCBbJ0wnLCB4IC0gciwgeSArIHJdLCBbJ1onXV07XG4gICAgfSxcbiAgICAvLyDoj7HlvaJcbiAgICBkaWFtb25kOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydMJywgeCwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeV0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g5LiJ6KeS5b2iXG4gICAgdHJpYW5nbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgKyBkaWZmWV0sIFsnTCcsIHgsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5ICsgZGlmZlldLCBbJ1onXV07XG4gICAgfSxcbiAgICAvLyDlgJLkuInop5LlvaJcbiAgICAndHJpYW5nbGUtZG93bic6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5IC0gZGlmZlldLCBbJ0wnLCB4LCB5ICsgZGlmZlldLCBbJ1onXV07XG4gICAgfSxcbn07XG52YXIgTWFya2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNYXJrZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWFya2VyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE1hcmtlci5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX3Jlc2V0UGFyYW1zQ2FjaGUoKTtcbiAgICB9O1xuICAgIC8vIOmHjee9rue7mOWItiBwYXRoIOWtmOWCqOeahOe8k+WtmFxuICAgIE1hcmtlci5wcm90b3R5cGUuX3Jlc2V0UGFyYW1zQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOS4uuS6huWKoOmAnyBwYXRoIOeahOe7mOWItuOAgeaLvuWPluWSjOiuoeeul++8jOi/meS4quWcsOaWueWPr+S7pee8k+WtmOW+iOWkmuS4nOilv1xuICAgICAgICAvLyDov5nkupvnvJPlrZjpg73mmK/nrKzkuIDmrKHpnIDopoHml7borqHnrpflkozlrZjlgqjvvIzomb3nhLblop7liqDkuoblpI3mnYLluqbvvIzkvYbmmK/popHnuYHosIPnlKjnmoTmlrnms5XvvIzmgKfog73mnInlvojlpKfmj5DljYdcbiAgICAgICAgdGhpcy5zZXQoJ3BhcmFtc0NhY2hlJywge30pOyAvLyDmuIXnkIbnvJPlrZhcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBwYXRoXG4gICAgTWFya2VyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgaWYgKFsnc3ltYm9sJywgJ3gnLCAneScsICdyJywgJ3JhZGl1cyddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBwYXRoIOebuOWFs+WxnuaAp+abtOaUueaXtu+8jOa4heeQhue8k+WtmFxuICAgICAgICAgICAgdGhpcy5fcmVzZXRQYXJhbXNDYWNoZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDku4Xku4Xkvb/nlKjljIXlm7Tnm5Lmo4DmtYvmnaXov5vooYzmi77lj5ZcbiAgICAvLyDmiYDku6XkuI3pnIDopoHlpI3lhpkgaXNJblN0cm9rZU9yUGF0aCDnmoTmlrnms5VcbiAgICBNYXJrZXIucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLl9nZXRSID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIC8vIOWFvOWuuSByIOWSjCByYWRpdXMg5Lik56eN5YaZ5rOV77yM5o6o6I2Q5L2/55SoIHJcbiAgICAgICAgcmV0dXJuIGlzTmlsKGF0dHJzLnIpID8gYXR0cnMucmFkaXVzIDogYXR0cnMucjtcbiAgICB9O1xuICAgIE1hcmtlci5wcm90b3R5cGUuX2dldFBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgc3ltYm9sID0gYXR0cnMuc3ltYm9sIHx8ICdjaXJjbGUnO1xuICAgICAgICB2YXIgciA9IHRoaXMuX2dldFIoYXR0cnMpO1xuICAgICAgICB2YXIgbWV0aG9kO1xuICAgICAgICB2YXIgcGF0aDtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oc3ltYm9sKSkge1xuICAgICAgICAgICAgbWV0aG9kID0gc3ltYm9sO1xuICAgICAgICAgICAgcGF0aCA9IG1ldGhvZCh4LCB5LCByKTtcbiAgICAgICAgICAgIC8vIOWwhiBwYXRoIOi9rOaIkOe7neWvuei3r+W+hFxuICAgICAgICAgICAgcGF0aCA9IHBhdGgyQWJzb2x1dGUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyDlhoXnva4gc3ltYm9sIOeahCBwYXRoIOmDveaYr+e7neWvuei3r+W+hO+8jOebtOaOpee7mOWItuWNs+WPr++8jOS4jemcgOimgeWvuSBwYXRoIOi/m+ihjOeJueauiuWkhOeQhlxuICAgICAgICAgICAgbWV0aG9kID0gTWFya2VyLlN5bWJvbHNbc3ltYm9sXTtcbiAgICAgICAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHN5bWJvbCArIFwiIG1hcmtlciBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhdGggPSBtZXRob2QoeCwgeSwgcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgcGF0aCA9IHRoaXMuX2dldFBhdGgoKTtcbiAgICAgICAgdmFyIHBhcmFtc0NhY2hlID0gdGhpcy5nZXQoJ3BhcmFtc0NhY2hlJyk7XG4gICAgICAgIGRyYXdQYXRoKHRoaXMsIGNvbnRleHQsIHsgcGF0aDogcGF0aCB9LCBwYXJhbXNDYWNoZSk7XG4gICAgfTtcbiAgICBNYXJrZXIuU3ltYm9scyA9IFN5bWJvbHM7XG4gICAgcmV0dXJuIE1hcmtlcjtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBNYXJrZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXJrZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/marker.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/path.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/path.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g-canvas/esm/util/path.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\n\n\n\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.initAttrs = function (attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 path\n Path.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n // 将 path 转换成绝对路径\n Path.prototype._setPathArr = function (path) {\n // 转换 path 的格式\n this.attrs.path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Absolute\"])(path);\n var hasArc = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n };\n Path.prototype.getSegments = function () {\n var segments = this.get('segements');\n if (!segments) {\n segments = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Segments\"])(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n };\n Path.prototype.setArrow = function () {\n var attrs = this.attr();\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n var tangent = this.getStartTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addStartArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n var tangent = this.getEndTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addEndArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n };\n Path.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var segments = this.getSegments();\n var hasArc = this.get('hasArc');\n var isHit = false;\n if (isStroke) {\n var length_1 = this.getTotalLength();\n isHit = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isPointInStroke(segments, lineWidth, x, y, length_1);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n else {\n var path = this.attr('path');\n var extractResutl = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n };\n Path.prototype.createPath = function (context) {\n var attrs = this.attr();\n var paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, attrs, paramsCache);\n };\n Path.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get total length of path\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n var curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2],\n };\n }\n return null;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var seg = curve[index];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(seg) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(index)) {\n return null;\n }\n var l = seg.length;\n var nextSeg = curve[index + 1];\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].pointAt(seg[l - 2], seg[l - 1], nextSeg[1], nextSeg[2], nextSeg[3], nextSeg[4], nextSeg[5], nextSeg[6], subt);\n };\n Path.prototype._calculateCurve = function () {\n var path = this.attr().path;\n this.set('curve', _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].pathToCurve(path));\n };\n Path.prototype._setTcache = function () {\n var totalLength = 0;\n var tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n var tCache = [];\n var segmentT;\n var segmentL;\n var segmentN;\n var l;\n var curve = this.get('curve');\n if (!curve) {\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength +=\n _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]) || 0;\n }\n });\n this.set('totalLength', totalLength);\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]);\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.getSegments();\n var result;\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.getSegments();\n var length = segments.length;\n var result;\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BhdGguanM/NDA5NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ007QUFDVDtBQUNWO0FBQ2dDO0FBQ3ZCO0FBQ2tCO0FBQ1I7QUFDZDtBQUNPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQSxnQkFBZ0IscUVBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscUVBQWE7QUFDdkMscUJBQXFCLGtEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxFQUFFO0FBQ3BDLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxRUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHlEQUF1QjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJFQUFhO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxrREFBUTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELFFBQVEsMkRBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFlBQVksd0RBQUssU0FBUyx3REFBSztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0RBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtEQUFRO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtEQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQ3ViaWMgYXMgQ3ViaWNVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBwYXRoMkFic29sdXRlLCBwYXRoMlNlZ21lbnRzIH0gZnJvbSAnQGFudHYvcGF0aC11dGlsJztcbmltcG9ydCB7IGRyYXdQYXRoIH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbmltcG9ydCBpc1BvaW50SW5QYXRoIGZyb20gJy4uL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoJztcbmltcG9ydCBpc0luUG9seWdvbiBmcm9tICcuLi91dGlsL2luLXBhdGgvcG9seWdvbic7XG5pbXBvcnQgUGF0aFV0aWwgZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCAqIGFzIEFycm93VXRpbCBmcm9tICcuLi91dGlsL2Fycm93Jztcbi8vIOaYr+WQpuWcqOWkmuS4quWkmui+ueW9ouWGhemDqFxuZnVuY3Rpb24gaXNJblBvbHlnb25zKHBvbHlnb25zLCB4LCB5KSB7XG4gICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Z29ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnRzID0gcG9seWdvbnNbaV07XG4gICAgICAgIGlzSGl0ID0gaXNJblBvbHlnb24ocG9pbnRzLCB4LCB5KTtcbiAgICAgICAgaWYgKGlzSGl0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNIaXQ7XG59XG52YXIgUGF0aCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUGF0aCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQYXRoKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFBhdGgucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9zZXRQYXRoQXJyKGF0dHJzLnBhdGgpO1xuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcGF0aFxuICAgIFBhdGgucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ3BhdGgnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRQYXRoQXJyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDnlLHkuo7nrq3lpLTnmoTnu5jliLbkvp3otZbkuo4gbGluZSDnmoTor7jlpJogYXR0cnPvvIzlm6DmraTov5nph4zkuI3lho3lr7nmr4/kuKogYXR0ciDov5vooYzliKTmlq3vvIxhdHRyIOavj+asoeWPmOWMlumDveS8muW9seWTjeeureWktOeahOabtOaWsFxuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICAvLyDlsIYgcGF0aCDovazmjaLmiJDnu53lr7not6/lvoRcbiAgICBQYXRoLnByb3RvdHlwZS5fc2V0UGF0aEFyciA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIC8vIOi9rOaNoiBwYXRoIOeahOagvOW8j1xuICAgICAgICB0aGlzLmF0dHJzLnBhdGggPSBwYXRoMkFic29sdXRlKHBhdGgpO1xuICAgICAgICB2YXIgaGFzQXJjID0gUGF0aFV0aWwuaGFzQXJjKHBhdGgpO1xuICAgICAgICAvLyDkuLrkuobliqDpgJ8gcGF0aCDnmoTnu5jliLbjgIHmi77lj5blkozorqHnrpfvvIzov5nkuKrlnLDmlrnlj6/ku6XnvJPlrZjlvojlpJrkuJzopb9cbiAgICAgICAgLy8g6L+Z5Lqb57yT5a2Y6YO95piv56ys5LiA5qyh6ZyA6KaB5pe26K6h566X5ZKM5a2Y5YKo77yM6Jm954S25aKe5Yqg5LqG5aSN5p2C5bqm77yM5L2G5piv6aKR57mB6LCD55So55qE5pa55rOV77yM5oCn6IO95pyJ5b6I5aSn5o+Q5Y2HXG4gICAgICAgIHRoaXMuc2V0KCdoYXNBcmMnLCBoYXNBcmMpO1xuICAgICAgICB0aGlzLnNldCgncGFyYW1zQ2FjaGUnLCB7fSk7IC8vIOa4heeQhue8k+WtmFxuICAgICAgICB0aGlzLnNldCgnc2VnbWVudHMnLCBudWxsKTsgLy8g5bu26L+f55Sf5oiQIHBhdGjvvIzlnKjliqjnlLvlnLrmma/kuIvlj6/og73kuI3kvJrmnInmi77lj5ZcbiAgICAgICAgdGhpcy5zZXQoJ2N1cnZlJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgbnVsbCk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5nZXRTZWdtZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlZ21lbnRzID0gdGhpcy5nZXQoJ3NlZ2VtZW50cycpO1xuICAgICAgICBpZiAoIXNlZ21lbnRzKSB7XG4gICAgICAgICAgICBzZWdtZW50cyA9IHBhdGgyU2VnbWVudHModGhpcy5hdHRyKCdwYXRoJykpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3NlZ21lbnRzJywgc2VnbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWdtZW50cztcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLnNldEFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgICAgICBpZiAoc3RhcnRBcnJvdykge1xuICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSB0aGlzLmdldFN0YXJ0VGFuZ2VudCgpO1xuICAgICAgICAgICAgQXJyb3dVdGlsLmFkZFN0YXJ0QXJyb3codGhpcywgYXR0cnMsIHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvdykge1xuICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSB0aGlzLmdldEVuZFRhbmdlbnQoKTtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRFbmRBcnJvdyh0aGlzLCBhdHRycywgdGFuZ2VudFswXVswXSwgdGFuZ2VudFswXVsxXSwgdGFuZ2VudFsxXVswXSwgdGFuZ2VudFsxXVsxXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmlzSW5TdHJva2VPclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgaXNTdHJva2UsIGlzRmlsbCwgbGluZVdpZHRoKSB7XG4gICAgICAgIHZhciBzZWdtZW50cyA9IHRoaXMuZ2V0U2VnbWVudHMoKTtcbiAgICAgICAgdmFyIGhhc0FyYyA9IHRoaXMuZ2V0KCdoYXNBcmMnKTtcbiAgICAgICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgdmFyIGxlbmd0aF8xID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgICAgaXNIaXQgPSBQYXRoVXRpbC5pc1BvaW50SW5TdHJva2Uoc2VnbWVudHMsIGxpbmVXaWR0aCwgeCwgeSwgbGVuZ3RoXzEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIaXQgJiYgaXNGaWxsKSB7XG4gICAgICAgICAgICBpZiAoaGFzQXJjKSB7XG4gICAgICAgICAgICAgICAgLy8g5a2Y5Zyo5puy57q/5pe277yM5pqC5pe25L2/55SoIGNhbnZhcyDnmoQgYXBpIOiuoeeul++8jOWQjue7reWPr+S7pei/m+ihjOWkmui+ueW9ouWIh+WJslxuICAgICAgICAgICAgICAgIGlzSGl0ID0gaXNQb2ludEluUGF0aCh0aGlzLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBwYXRoID0gdGhpcy5hdHRyKCdwYXRoJyk7XG4gICAgICAgICAgICAgICAgdmFyIGV4dHJhY3RSZXN1dGwgPSBQYXRoVXRpbC5leHRyYWN0UG9seWdvbnMocGF0aCk7XG4gICAgICAgICAgICAgICAgLy8g5o+Q5Y+W5Ye65p2l55qE5aSa6L655b2i5YyF5ZCr6Zet5ZCI55qE5ZKM6Z2e6Zet5ZCI55qE77yM5Zyo6L+Z6YeM57uf5LiA5oyJ54Wn5aSa6L655b2i5aSE55CGXG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpc0luUG9seWdvbnMoZXh0cmFjdFJlc3V0bC5wb2x5Z29ucywgeCwgeSkgfHwgaXNJblBvbHlnb25zKGV4dHJhY3RSZXN1dGwucG9seWxpbmVzLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQ7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBwYXJhbXNDYWNoZSA9IHRoaXMuZ2V0KCdwYXJhbXNDYWNoZScpOyAvLyDnlLHkuo7orqHnrpflnIblvKfnmoTlj4LmlbDmiJDmnKzlvojlpKfvvIzmiYDku6XopoHnvJPlrZhcbiAgICAgICAgZHJhd1BhdGgodGhpcywgY29udGV4dCwgYXR0cnMsIHBhcmFtc0NhY2hlKTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmFmdGVyRHJhd1BhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgc3RhcnRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ3N0YXJ0QXJyb3dTaGFwZScpO1xuICAgICAgICB2YXIgZW5kQXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdlbmRBcnJvd1NoYXBlJyk7XG4gICAgICAgIGlmIChzdGFydEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIHN0YXJ0QXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBlbmRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCB0b3RhbCBsZW5ndGggb2YgcGF0aFxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgICAgICBpZiAoIWlzTmlsKHRvdGFsTGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvdGFsTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUN1cnZlKCk7XG4gICAgICAgIHRoaXMuX3NldFRjYWNoZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgaWYgKCF0Q2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUN1cnZlKCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRUY2FjaGUoKTtcbiAgICAgICAgICAgIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VidDtcbiAgICAgICAgdmFyIGluZGV4O1xuICAgICAgICB2YXIgY3VydmUgPSB0aGlzLmdldCgnY3VydmUnKTtcbiAgICAgICAgaWYgKCF0Q2FjaGUgfHwgdENhY2hlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKGN1cnZlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogY3VydmVbMF1bMV0sXG4gICAgICAgICAgICAgICAgICAgIHk6IGN1cnZlWzBdWzJdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKHRDYWNoZSwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIGlmIChyYXRpbyA+PSB2WzBdICYmIHJhdGlvIDw9IHZbMV0pIHtcbiAgICAgICAgICAgICAgICBzdWJ0ID0gKHJhdGlvIC0gdlswXSkgLyAodlsxXSAtIHZbMF0pO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzZWcgPSBjdXJ2ZVtpbmRleF07XG4gICAgICAgIGlmIChpc05pbChzZWcpIHx8IGlzTmlsKGluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGwgPSBzZWcubGVuZ3RoO1xuICAgICAgICB2YXIgbmV4dFNlZyA9IGN1cnZlW2luZGV4ICsgMV07XG4gICAgICAgIHJldHVybiBDdWJpY1V0aWwucG9pbnRBdChzZWdbbCAtIDJdLCBzZWdbbCAtIDFdLCBuZXh0U2VnWzFdLCBuZXh0U2VnWzJdLCBuZXh0U2VnWzNdLCBuZXh0U2VnWzRdLCBuZXh0U2VnWzVdLCBuZXh0U2VnWzZdLCBzdWJ0KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLl9jYWxjdWxhdGVDdXJ2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmF0dHIoKS5wYXRoO1xuICAgICAgICB0aGlzLnNldCgnY3VydmUnLCBQYXRoVXRpbC5wYXRoVG9DdXJ2ZShwYXRoKSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5fc2V0VGNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSAwO1xuICAgICAgICB2YXIgdGVtcExlbmd0aCA9IDA7XG4gICAgICAgIC8vIOavj+autSBjdXJ2ZSDlr7nlupTotbfmraLngrnnmoTplb/luqbmr5TkvovliJfooajvvIzlvaLlpoI6IFtbMCwgMC4yNV0sIFswLjI1LCAwLjZdLiBbMC42LCAwLjldLCBbMC45LCAxXV1cbiAgICAgICAgdmFyIHRDYWNoZSA9IFtdO1xuICAgICAgICB2YXIgc2VnbWVudFQ7XG4gICAgICAgIHZhciBzZWdtZW50TDtcbiAgICAgICAgdmFyIHNlZ21lbnROO1xuICAgICAgICB2YXIgbDtcbiAgICAgICAgdmFyIGN1cnZlID0gdGhpcy5nZXQoJ2N1cnZlJyk7XG4gICAgICAgIGlmICghY3VydmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKGN1cnZlLCBmdW5jdGlvbiAoc2VnbWVudCwgaSkge1xuICAgICAgICAgICAgc2VnbWVudE4gPSBjdXJ2ZVtpICsgMV07XG4gICAgICAgICAgICBsID0gc2VnbWVudC5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoc2VnbWVudE4pIHtcbiAgICAgICAgICAgICAgICB0b3RhbExlbmd0aCArPVxuICAgICAgICAgICAgICAgICAgICBDdWJpY1V0aWwubGVuZ3RoKHNlZ21lbnRbbCAtIDJdLCBzZWdtZW50W2wgLSAxXSwgc2VnbWVudE5bMV0sIHNlZ21lbnROWzJdLCBzZWdtZW50TlszXSwgc2VnbWVudE5bNF0sIHNlZ21lbnROWzVdLCBzZWdtZW50Tls2XSkgfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIHRvdGFsTGVuZ3RoKTtcbiAgICAgICAgaWYgKHRvdGFsTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNldCgndENhY2hlJywgW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVhY2goY3VydmUsIGZ1bmN0aW9uIChzZWdtZW50LCBpKSB7XG4gICAgICAgICAgICBzZWdtZW50TiA9IGN1cnZlW2kgKyAxXTtcbiAgICAgICAgICAgIGwgPSBzZWdtZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChzZWdtZW50Tikge1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUID0gW107XG4gICAgICAgICAgICAgICAgc2VnbWVudFRbMF0gPSB0ZW1wTGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgICAgICAgICAgc2VnbWVudEwgPSBDdWJpY1V0aWwubGVuZ3RoKHNlZ21lbnRbbCAtIDJdLCBzZWdtZW50W2wgLSAxXSwgc2VnbWVudE5bMV0sIHNlZ21lbnROWzJdLCBzZWdtZW50TlszXSwgc2VnbWVudE5bNF0sIHNlZ21lbnROWzVdLCBzZWdtZW50Tls2XSk7XG4gICAgICAgICAgICAgICAgLy8g5b2TIHBhdGgg5LiN6L+e57ut5pe277yMc2VnbWVudEwg5Y+v6IO95Li656m677yM5Li656m65pe26ZyA6KaB5L2c5Li6IDAg5aSE55CGXG4gICAgICAgICAgICAgICAgdGVtcExlbmd0aCArPSBzZWdtZW50TCB8fCAwO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzFdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRDYWNoZS5wdXNoKHNlZ21lbnRUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCB0Q2FjaGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHN0YXJ0IHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0U3RhcnRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2VnbWVudHMgPSB0aGlzLmdldFNlZ21lbnRzKCk7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRQb2ludCA9IHNlZ21lbnRzWzBdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciBlbmRQb2ludCA9IHNlZ21lbnRzWzFdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gc2VnbWVudHNbMV0uc3RhcnRUYW5nZW50O1xuICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICBpZiAodGFuZ2VudCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtzdGFydFBvaW50WzBdIC0gdGFuZ2VudFswXSwgc3RhcnRQb2ludFsxXSAtIHRhbmdlbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW2VuZFBvaW50WzBdLCBlbmRQb2ludFsxXV0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBlbmQgdGFuZ2VudCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICAgKi9cbiAgICBQYXRoLnByb3RvdHlwZS5nZXRFbmRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2VnbWVudHMgPSB0aGlzLmdldFNlZ21lbnRzKCk7XG4gICAgICAgIHZhciBsZW5ndGggPSBzZWdtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmIChsZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRQb2ludCA9IHNlZ21lbnRzW2xlbmd0aCAtIDJdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciBlbmRQb2ludCA9IHNlZ21lbnRzW2xlbmd0aCAtIDFdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gc2VnbWVudHNbbGVuZ3RoIC0gMV0uZW5kVGFuZ2VudDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgaWYgKHRhbmdlbnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbZW5kUG9pbnRbMF0gLSB0YW5nZW50WzBdLCBlbmRQb2ludFsxXSAtIHRhbmdlbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtlbmRQb2ludFswXSwgZW5kUG9pbnRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIFBhdGg7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUGF0aDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/polygon.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/polygon.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js\");\n/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Polygon.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var points = this.attr().points;\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(points, x, y); // isPointInPath(shape, x, y);\n }\n return isHit;\n };\n Polygon.prototype.createPath = function (context) {\n var attrs = this.attr();\n var points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n }\n else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BvbHlnb24uanM/OTc4YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDSDtBQUNxQjtBQUNGO0FBQ2xEO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdFQUFVO0FBQzlCO0FBQ0E7QUFDQSxvQkFBb0IscUVBQVcsZUFBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5aSa6L655b2iXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgaW5Qb2x5bGluZSBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9wb2x5bGluZSc7XG5pbXBvcnQgaXNJblBvbHlnb24gZnJvbSAnLi4vdXRpbC9pbi1wYXRoL3BvbHlnb24nO1xudmFyIFBvbHlnb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlnb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG9seWdvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQb2x5Z29uLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICB2YXIgaXNIaXQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICBpc0hpdCA9IGluUG9seWxpbmUocG9pbnRzLCBsaW5lV2lkdGgsIHgsIHksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIaXQgJiYgaXNGaWxsKSB7XG4gICAgICAgICAgICBpc0hpdCA9IGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSk7IC8vIGlzUG9pbnRJblBhdGgoc2hhcGUsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdDtcbiAgICB9O1xuICAgIFBvbHlnb24ucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHBvaW50cyA9IGF0dHJzLnBvaW50cztcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvaW50WzBdLCBwb2ludFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9O1xuICAgIHJldHVybiBQb2x5Z29uO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBvbHlnb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/polygon.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/polyline.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/polyline.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\nvar PolyLine = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PolyLine, _super);\n function PolyLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PolyLine.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n PolyLine.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 points\n PolyLine.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n PolyLine.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n PolyLine.prototype.setArrow = function () {\n var attrs = this.attr();\n var _a = this.attrs, points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addStartArrow\"](this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addEndArrow\"](this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n };\n // 不允许 fill\n PolyLine.prototype.isFill = function () {\n return false;\n };\n PolyLine.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n var points = this.attr().points;\n return Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(points, lineWidth, x, y, false);\n };\n // 始终填充\n PolyLine.prototype.isStroke = function () {\n return true;\n };\n PolyLine.prototype.createPath = function (context) {\n var _a = this.attr(), points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n if (points.length < 2) {\n return;\n }\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n context.beginPath();\n context.moveTo(x1, y1);\n for (var i = 0; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n };\n PolyLine.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n PolyLine.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n PolyLine.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n PolyLine.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return PolyLine;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolyLine);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BvbHlsaW5lLmpzPzAxNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDSTtBQUNRO0FBQ2Y7QUFDVjtBQUNxQjtBQUNUO0FBQzNDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFDQUFxQztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQXVCO0FBQ25DO0FBQ0E7QUFDQSxZQUFZLHVEQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdFQUFVO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNERBQTBCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDREQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBLGdDQUFnQyxxREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgUG9seWxpbmUgYXMgUG9seWxpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgaW5Qb2x5bGluZSBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9wb2x5bGluZSc7XG5pbXBvcnQgKiBhcyBBcnJvd1V0aWwgZnJvbSAnLi4vdXRpbC9hcnJvdyc7XG52YXIgUG9seUxpbmUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlMaW5lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBvbHlMaW5lKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBwb2ludHNcbiAgICBQb2x5TGluZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICAgICAgaWYgKFsncG9pbnRzJ10uaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLl9yZXNldENhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zZXQoJ3RDYWNoZScsIG51bGwpO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLnNldEFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRycywgcG9pbnRzID0gX2EucG9pbnRzLCBzdGFydEFycm93ID0gX2Euc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBfYS5lbmRBcnJvdztcbiAgICAgICAgdmFyIGxlbmd0aCA9IHBvaW50cy5sZW5ndGg7XG4gICAgICAgIHZhciB4MSA9IHBvaW50c1swXVswXTtcbiAgICAgICAgdmFyIHkxID0gcG9pbnRzWzBdWzFdO1xuICAgICAgICB2YXIgeDIgPSBwb2ludHNbbGVuZ3RoIC0gMV1bMF07XG4gICAgICAgIHZhciB5MiA9IHBvaW50c1tsZW5ndGggLSAxXVsxXTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRTdGFydEFycm93KHRoaXMsIGF0dHJzLCBwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXSwgeDEsIHkxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRFbmRBcnJvdyh0aGlzLCBhdHRycywgcG9pbnRzW2xlbmd0aCAtIDJdWzBdLCBwb2ludHNbbGVuZ3RoIC0gMl1bMV0sIHgyLCB5Mik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOS4jeWFgeiuuCBmaWxsXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmlzRmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmlzSW5TdHJva2VPclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgaXNTdHJva2UsIGlzRmlsbCwgbGluZVdpZHRoKSB7XG4gICAgICAgIC8vIOayoeacieiuvue9riBzdHJva2Ug5LiN6IO96KKr5ou+5Y+WLCDmsqHmnInnur/lrr3kuI3og73ooqvmi77lj5ZcbiAgICAgICAgaWYgKCFpc1N0cm9rZSB8fCAhbGluZVdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgcmV0dXJuIGluUG9seWxpbmUocG9pbnRzLCBsaW5lV2lkdGgsIHgsIHksIGZhbHNlKTtcbiAgICB9O1xuICAgIC8vIOWni+e7iOWhq+WFhVxuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5pc1N0cm9rZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCBwb2ludHMgPSBfYS5wb2ludHMsIHN0YXJ0QXJyb3cgPSBfYS5zdGFydEFycm93LCBlbmRBcnJvdyA9IF9hLmVuZEFycm93O1xuICAgICAgICB2YXIgbGVuZ3RoID0gcG9pbnRzLmxlbmd0aDtcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHgxID0gcG9pbnRzWzBdWzBdO1xuICAgICAgICB2YXIgeTEgPSBwb2ludHNbMF1bMV07XG4gICAgICAgIHZhciB4MiA9IHBvaW50c1tsZW5ndGggLSAxXVswXTtcbiAgICAgICAgdmFyIHkyID0gcG9pbnRzW2xlbmd0aCAtIDFdWzFdO1xuICAgICAgICAvLyDlpoLmnpzlrprkuYnkuobnrq3lpLTvvIzlubbkuJTmmK/oh6rlrprkuYnnrq3lpLTvvIznur/mnaHnm7jlupTnvKnov5tcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cgJiYgc3RhcnRBcnJvdy5kKSB7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh4MSwgeTEsIHBvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdLCBzdGFydEFycm93LmQpO1xuICAgICAgICAgICAgeDEgKz0gZGlzdGFuY2UuZHg7XG4gICAgICAgICAgICB5MSArPSBkaXN0YW5jZS5keTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cgJiYgZW5kQXJyb3cuZCkge1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQocG9pbnRzW2xlbmd0aCAtIDJdWzBdLCBwb2ludHNbbGVuZ3RoIC0gMl1bMV0sIHgyLCB5MiwgZW5kQXJyb3cuZCk7XG4gICAgICAgICAgICB4MiAtPSBkaXN0YW5jZS5keDtcbiAgICAgICAgICAgIHkyIC09IGRpc3RhbmNlLmR5O1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQubW92ZVRvKHgxLCB5MSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQubGluZVRvKHgyLCB5Mik7XG4gICAgfTtcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuYWZ0ZXJEcmF3UGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBzdGFydEFycm93U2hhcGUgPSB0aGlzLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgICAgIHZhciBlbmRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgc3RhcnRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIGVuZEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGxlbmd0aCBvZiBwb2x5bGluZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICAvLyBnZXQgdG90YWxMZW5ndGggZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICAgICAgaWYgKCFpc05pbCh0b3RhbExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCBQb2x5bGluZVV0aWwubGVuZ3RoKHBvaW50cykpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIC8vIGdldCB0Q2FjaGUgZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdENhY2hlID0gdGhpcy5nZXQoJ3RDYWNoZScpO1xuICAgICAgICBpZiAoIXRDYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGNhY2hlKCk7XG4gICAgICAgICAgICB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnQ7XG4gICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgZWFjaCh0Q2FjaGUsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAocmF0aW8gPj0gdlswXSAmJiByYXRpbyA8PSB2WzFdKSB7XG4gICAgICAgICAgICAgICAgc3VidCA9IChyYXRpbyAtIHZbMF0pIC8gKHZbMV0gLSB2WzBdKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdChwb2ludHNbaW5kZXhdWzBdLCBwb2ludHNbaW5kZXhdWzFdLCBwb2ludHNbaW5kZXggKyAxXVswXSwgcG9pbnRzW2luZGV4ICsgMV1bMV0sIHN1YnQpO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLl9zZXRUY2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIGlmICghcG9pbnRzIHx8IHBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRlbXBMZW5ndGggPSAwO1xuICAgICAgICB2YXIgdENhY2hlID0gW107XG4gICAgICAgIHZhciBzZWdtZW50VDtcbiAgICAgICAgdmFyIHNlZ21lbnRMO1xuICAgICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHAsIGkpIHtcbiAgICAgICAgICAgIGlmIChwb2ludHNbaSArIDFdKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudFQgPSBbXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFswXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICBzZWdtZW50TCA9IExpbmVVdGlsLmxlbmd0aChwWzBdLCBwWzFdLCBwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdKTtcbiAgICAgICAgICAgICAgICB0ZW1wTGVuZ3RoICs9IHNlZ21lbnRMO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzFdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRDYWNoZS5wdXNoKHNlZ21lbnRUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCB0Q2FjaGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHN0YXJ0IHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldFN0YXJ0VGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgZW5kIHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldEVuZFRhbmdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHZhciBsID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsIC0gMV1bMF0sIHBvaW50c1tsIC0gMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsXVswXSwgcG9pbnRzW2xdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gUG9seUxpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUG9seUxpbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/polyline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/rect.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/rect.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_parse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/parse */ \"./node_modules/@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/rect */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js\");\n/* harmony import */ var _util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/in-stroke/rect-radius */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var minX = attrs.x;\n var minY = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n var halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return Object(_util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(minX, minY, width, height, lineWidth, x, y);\n }\n }\n else {\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n return isHit;\n }\n };\n Rect.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n }\n else {\n var _a = Object(_util_parse__WEBPACK_IMPORTED_MODULE_2__[\"parseRadius\"])(radius), r1 = _a[0], r2 = _a[1], r3 = _a[2], r4 = _a[3];\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3JlY3QuanM/MjcwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDYjtBQUNhO0FBQ1A7QUFDTztBQUNpQjtBQUNIO0FBQzFEO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLDZDQUE2QztBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBSztBQUM1QjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsd0RBQUs7QUFDNUI7QUFDQTtBQUNBLHVCQUF1QixvRUFBTTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJFQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwyRUFBYTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtEQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDnn6nlvaJcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBwYXJzZVJhZGl1cyB9IGZyb20gJy4uL3V0aWwvcGFyc2UnO1xuaW1wb3J0IHsgaW5Cb3ggfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IGluUmVjdCBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9yZWN0JztcbmltcG9ydCBpblJlY3RXaXRoUmFkaXVzIGZyb20gJy4uL3V0aWwvaW4tc3Ryb2tlL3JlY3QtcmFkaXVzJztcbmltcG9ydCBpc1BvaW50SW5QYXRoIGZyb20gJy4uL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoJztcbnZhciBSZWN0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlY3QoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUmVjdC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwLCByYWRpdXM6IDAgfSk7XG4gICAgfTtcbiAgICBSZWN0LnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIG1pblggPSBhdHRycy54O1xuICAgICAgICB2YXIgbWluWSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciB3aWR0aCA9IGF0dHJzLndpZHRoO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0O1xuICAgICAgICB2YXIgcmFkaXVzID0gYXR0cnMucmFkaXVzO1xuICAgICAgICAvLyDml6DlnIbop5Lml7bnmoTnrZbnlaVcbiAgICAgICAgaWYgKCFyYWRpdXMpIHtcbiAgICAgICAgICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICAgICAgLy8g5ZCM5pe25aGr5YWF5ZKM5bim5pyJ6L655qGGXG4gICAgICAgICAgICBpZiAoaXNGaWxsICYmIGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluQm94KG1pblggLSBoYWxmV2lkdGgsIG1pblkgLSBoYWxmV2lkdGgsIHdpZHRoICsgaGFsZldpZHRoLCBoZWlnaHQgKyBoYWxmV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5LuF5aGr5YWFXG4gICAgICAgICAgICBpZiAoaXNGaWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluQm94KG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluUmVjdChtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCBsaW5lV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoaXNTdHJva2UpIHtcbiAgICAgICAgICAgICAgICBpc0hpdCA9IGluUmVjdFdpdGhSYWRpdXMobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgcmFkaXVzLCBsaW5lV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5LuF5aGr5YWF5pe25bim5pyJ5ZyG6KeS55qE55+p5b2i55u05o6l6YCa6L+H5Zu+5b2i5ou+5Y+WXG4gICAgICAgICAgICAvLyDku6XlkI7lj6/ku6XmlLnmiJDnuq/mlbDlrabnmoTov5HkvLzmi77lj5bvvIzlsIblnIblvKfliIflibLmiJDlpJrovrnlvaJcbiAgICAgICAgICAgIGlmICghaXNIaXQgJiYgaXNGaWxsKSB7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpc1BvaW50SW5QYXRoKHRoaXMsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGlzSGl0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWN0LnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgd2lkdGggPSBhdHRycy53aWR0aDtcbiAgICAgICAgdmFyIGhlaWdodCA9IGF0dHJzLmhlaWdodDtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGF0dHJzLnJhZGl1cztcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgaWYgKHJhZGl1cyA9PT0gMCkge1xuICAgICAgICAgICAgLy8g5pS55oiQ5Y6f55Sf55qEcmVjdOaWueazlVxuICAgICAgICAgICAgY29udGV4dC5yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIF9hID0gcGFyc2VSYWRpdXMocmFkaXVzKSwgcjEgPSBfYVswXSwgcjIgPSBfYVsxXSwgcjMgPSBfYVsyXSwgcjQgPSBfYVszXTtcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHggKyByMSwgeSk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGggLSByMiwgeSk7XG4gICAgICAgICAgICByMiAhPT0gMCAmJiBjb250ZXh0LmFyYyh4ICsgd2lkdGggLSByMiwgeSArIHIyLCByMiwgLU1hdGguUEkgLyAyLCAwKTtcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHggKyB3aWR0aCwgeSArIGhlaWdodCAtIHIzKTtcbiAgICAgICAgICAgIHIzICE9PSAwICYmIGNvbnRleHQuYXJjKHggKyB3aWR0aCAtIHIzLCB5ICsgaGVpZ2h0IC0gcjMsIHIzLCAwLCBNYXRoLlBJIC8gMik7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgcjQsIHkgKyBoZWlnaHQpO1xuICAgICAgICAgICAgcjQgIT09IDAgJiYgY29udGV4dC5hcmMoeCArIHI0LCB5ICsgaGVpZ2h0IC0gcjQsIHI0LCBNYXRoLlBJIC8gMiwgTWF0aC5QSSk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4LCB5ICsgcjEpO1xuICAgICAgICAgICAgcjEgIT09IDAgJiYgY29udGV4dC5hcmMoeCArIHIxLCB5ICsgcjEsIHIxLCBNYXRoLlBJLCBNYXRoLlBJICogMS41KTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBSZWN0O1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFJlY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/shape/text.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/shape/text.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 默认文本属性\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n // 仅仅使用包围盒检测来进行拾取\n Text.prototype.isOnlyHitBox = function () {\n return true;\n };\n // 初始化时组合 font,同时判断 text 是否换行\n Text.prototype.initAttrs = function (attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n };\n // 组装字体\n Text.prototype._assembleFont = function () {\n var attrs = this.attrs;\n attrs.font = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"assembleFont\"])(attrs);\n };\n // 如果文本换行,则缓存数组\n Text.prototype._setText = function (text) {\n var textArr = null;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n };\n // 更新属性时,检测是否更改了 font、text\n Text.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n };\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n // }\n // 如果文本多行,需要获取文本间距\n Text.prototype._getSpaceingY = function () {\n var attrs = this.attrs;\n var lineHeight = attrs.lineHeight;\n var fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n };\n // 绘制文本,考虑多行的场景\n Text.prototype._drawTextArr = function (context, textArr, isFill) {\n var attrs = this.attrs;\n var textBaseline = attrs.textBaseline;\n var x = attrs.x;\n var y = attrs.y;\n var fontSize = attrs.fontSize * 1;\n var spaceingY = this._getSpaceingY();\n var height = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"getTextHeight\"])(attrs.text, attrs.fontSize, attrs.lineHeight);\n var subY;\n Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(textArr, function (subText, index) {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle')\n subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top')\n subY += height - fontSize;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n }\n else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n };\n // 绘制文本,同时考虑填充和绘制边框\n Text.prototype._drawText = function (context, isFill) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n }\n else {\n var text = attrs.text;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n }\n else {\n context.strokeText(text, x, y);\n }\n }\n }\n };\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n Text.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n this.afterDrawPath(context);\n };\n // 复写填充逻辑\n Text.prototype.fill = function (context) {\n this._drawText(context, true);\n };\n // 复写绘制边框的逻辑\n Text.prototype.stroke = function (context) {\n this._drawText(context, false);\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3RleHQuanM/NDIyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDYjtBQUNzQjtBQUNNO0FBQzNEO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsK0tBQStLO0FBQzdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpRUFBWTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrRUFBYTtBQUNsQztBQUNBLFFBQVEsdURBQUk7QUFDWiwwRUFBMEU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDmlofmnKxcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBpc05pbCwgaXNTdHJpbmcsIGVhY2ggfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgZ2V0VGV4dEhlaWdodCwgYXNzZW1ibGVGb250IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbnZhciBUZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHQoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLy8g6buY6K6k5paH5pys5bGe5oCnXG4gICAgVGV4dC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB0ZXh0OiBudWxsLCBmb250U2l6ZTogMTIsIGZvbnRGYW1pbHk6ICdzYW5zLXNlcmlmJywgZm9udFN0eWxlOiAnbm9ybWFsJywgZm9udFdlaWdodDogJ25vcm1hbCcsIGZvbnRWYXJpYW50OiAnbm9ybWFsJywgdGV4dEFsaWduOiAnc3RhcnQnLCB0ZXh0QmFzZWxpbmU6ICdib3R0b20nIH0pO1xuICAgIH07XG4gICAgLy8g5LuF5LuF5L2/55So5YyF5Zu055uS5qOA5rWL5p2l6L+b6KGM5ou+5Y+WXG4gICAgVGV4dC5wcm90b3R5cGUuaXNPbmx5SGl0Qm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIC8vIOWIneWni+WMluaXtue7hOWQiCBmb25077yM5ZCM5pe25Yik5patIHRleHQg5piv5ZCm5o2i6KGMXG4gICAgVGV4dC5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX2Fzc2VtYmxlRm9udCgpO1xuICAgICAgICBpZiAoYXR0cnMudGV4dCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGV4dChhdHRycy50ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g57uE6KOF5a2X5L2TXG4gICAgVGV4dC5wcm90b3R5cGUuX2Fzc2VtYmxlRm9udCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgYXR0cnMuZm9udCA9IGFzc2VtYmxlRm9udChhdHRycyk7XG4gICAgfTtcbiAgICAvLyDlpoLmnpzmlofmnKzmjaLooYzvvIzliJnnvJPlrZjmlbDnu4RcbiAgICBUZXh0LnByb3RvdHlwZS5fc2V0VGV4dCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgICAgIHZhciB0ZXh0QXJyID0gbnVsbDtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHRleHQpICYmIHRleHQuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0ZXh0QXJyID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ3RleHRBcnInLCB0ZXh0QXJyKTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBmb25044CBdGV4dFxuICAgIFRleHQucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCdmb250JykpIHtcbiAgICAgICAgICAgIHRoaXMuX2Fzc2VtYmxlRm9udCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRleHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDov5nkuKrmlrnms5XlnKggdGV4dCDml7bmsqHmnInlj6/ku6XlgZrnmoTkuovmg4XvvIzlpoLmnpzopoHmlK/mjIHmloflrZfog4zmma/ml7blj6/ku6XogIPomZFcbiAgICAvLyBjcmVhdGVQYXRoKGNvbnRleHQpIHtcbiAgICAvLyB9XG4gICAgLy8g5aaC5p6c5paH5pys5aSa6KGM77yM6ZyA6KaB6I635Y+W5paH5pys6Ze06LedXG4gICAgVGV4dC5wcm90b3R5cGUuX2dldFNwYWNlaW5nWSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgdmFyIGxpbmVIZWlnaHQgPSBhdHRycy5saW5lSGVpZ2h0O1xuICAgICAgICB2YXIgZm9udFNpemUgPSBhdHRycy5mb250U2l6ZSAqIDE7XG4gICAgICAgIHJldHVybiBsaW5lSGVpZ2h0ID8gbGluZUhlaWdodCAtIGZvbnRTaXplIDogZm9udFNpemUgKiAwLjE0O1xuICAgIH07XG4gICAgLy8g57uY5Yi25paH5pys77yM6ICD6JmR5aSa6KGM55qE5Zy65pmvXG4gICAgVGV4dC5wcm90b3R5cGUuX2RyYXdUZXh0QXJyID0gZnVuY3Rpb24gKGNvbnRleHQsIHRleHRBcnIsIGlzRmlsbCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICB2YXIgdGV4dEJhc2VsaW5lID0gYXR0cnMudGV4dEJhc2VsaW5lO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIGZvbnRTaXplID0gYXR0cnMuZm9udFNpemUgKiAxO1xuICAgICAgICB2YXIgc3BhY2VpbmdZID0gdGhpcy5fZ2V0U3BhY2VpbmdZKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBnZXRUZXh0SGVpZ2h0KGF0dHJzLnRleHQsIGF0dHJzLmZvbnRTaXplLCBhdHRycy5saW5lSGVpZ2h0KTtcbiAgICAgICAgdmFyIHN1Ylk7XG4gICAgICAgIGVhY2godGV4dEFyciwgZnVuY3Rpb24gKHN1YlRleHQsIGluZGV4KSB7XG4gICAgICAgICAgICBzdWJZID0geSArIGluZGV4ICogKHNwYWNlaW5nWSArIGZvbnRTaXplKSAtIGhlaWdodCArIGZvbnRTaXplOyAvLyBib3R0b207XG4gICAgICAgICAgICBpZiAodGV4dEJhc2VsaW5lID09PSAnbWlkZGxlJylcbiAgICAgICAgICAgICAgICBzdWJZICs9IGhlaWdodCAtIGZvbnRTaXplIC0gKGhlaWdodCAtIGZvbnRTaXplKSAvIDI7XG4gICAgICAgICAgICBpZiAodGV4dEJhc2VsaW5lID09PSAndG9wJylcbiAgICAgICAgICAgICAgICBzdWJZICs9IGhlaWdodCAtIGZvbnRTaXplO1xuICAgICAgICAgICAgaWYgKCFpc05pbChzdWJUZXh0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChzdWJUZXh0LCB4LCBzdWJZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dChzdWJUZXh0LCB4LCBzdWJZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8g57uY5Yi25paH5pys77yM5ZCM5pe26ICD6JmR5aGr5YWF5ZKM57uY5Yi26L655qGGXG4gICAgVGV4dC5wcm90b3R5cGUuX2RyYXdUZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGlzRmlsbCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54O1xuICAgICAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciB0ZXh0QXJyID0gdGhpcy5nZXQoJ3RleHRBcnInKTtcbiAgICAgICAgaWYgKHRleHRBcnIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RyYXdUZXh0QXJyKGNvbnRleHQsIHRleHRBcnIsIGlzRmlsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IGF0dHJzLnRleHQ7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKHRleHQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VUZXh0KHRleHQsIHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5aSN5YaZ57uY5Yi25ZKM5aGr5YWF55qE6YC76L6R77ya5a+55LqO5paH5pys77yM5bqU6K+l5YWI57uY5Yi26L655qGG77yM5YaN6L+b6KGM5aGr5YWFXG4gICAgVGV4dC5wcm90b3R5cGUuc3Ryb2tlQW5kRmlsbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cnMsIGxpbmVXaWR0aCA9IF9hLmxpbmVXaWR0aCwgb3BhY2l0eSA9IF9hLm9wYWNpdHksIHN0cm9rZU9wYWNpdHkgPSBfYS5zdHJva2VPcGFjaXR5LCBmaWxsT3BhY2l0eSA9IF9hLmZpbGxPcGFjaXR5O1xuICAgICAgICBpZiAodGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOaWwoc3Ryb2tlT3BhY2l0eSkgJiYgc3Ryb2tlT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJva2UoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxsKCkpIHtcbiAgICAgICAgICAgIGlmICghaXNOaWwoZmlsbE9wYWNpdHkpICYmIGZpbGxPcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGZpbGxPcGFjaXR5O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFmdGVyRHJhd1BhdGgoY29udGV4dCk7XG4gICAgfTtcbiAgICAvLyDlpI3lhpnloavlhYXpgLvovpFcbiAgICBUZXh0LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fZHJhd1RleHQoY29udGV4dCwgdHJ1ZSk7XG4gICAgfTtcbiAgICAvLyDlpI3lhpnnu5jliLbovrnmoYbnmoTpgLvovpFcbiAgICBUZXh0LnByb3RvdHlwZS5zdHJva2UgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB0aGlzLl9kcmF3VGV4dChjb250ZXh0LCBmYWxzZSk7XG4gICAgfTtcbiAgICByZXR1cm4gVGV4dDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBUZXh0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/text.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/arc-params.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/arc-params.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getArcParams; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : rx,\n ry: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=arc-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvYXJjLXBhcmFtcy5qcz85YzI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0Esb0JBQW9CLGlEQUFHLENBQUMsc0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQVc7QUFDdkIsWUFBWSx5REFBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2FyYy1wYXJhbXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2QsIHRvUmFkaWFuLCBpc1NhbWVQb2ludCB9IGZyb20gJy4vdXRpbCc7XG4vLyDlkJHph4/plb/luqZcbmZ1bmN0aW9uIHZNYWcodikge1xuICAgIHJldHVybiBNYXRoLnNxcnQodlswXSAqIHZbMF0gKyB2WzFdICogdlsxXSk7XG59XG4vLyB1LnYvfHV8fHZ877yM6K6h566X5aS56KeS55qE5L2Z5bym5YC8XG5mdW5jdGlvbiB2UmF0aW8odSwgdikge1xuICAgIC8vIOW9k+WtmOWcqOS4gOS4quWQkemHj+eahOmVv+W6puS4uiAwIOaXtu+8jOWkueinkuS5n+S4uiAw77yM5Y2z5aS56KeS55qE5L2Z5bym5YC85Li6IDFcbiAgICByZXR1cm4gdk1hZyh1KSAqIHZNYWcodikgPyAodVswXSAqIHZbMF0gKyB1WzFdICogdlsxXSkgLyAodk1hZyh1KSAqIHZNYWcodikpIDogMTtcbn1cbi8vIOWQkemHj+inkuW6plxuZnVuY3Rpb24gdkFuZ2xlKHUsIHYpIHtcbiAgICByZXR1cm4gKHVbMF0gKiB2WzFdIDwgdVsxXSAqIHZbMF0gPyAtMSA6IDEpICogTWF0aC5hY29zKHZSYXRpbyh1LCB2KSk7XG59XG4vLyBBIDA6cnggMTpyeSAyOngtYXhpcy1yb3RhdGlvbiAzOmxhcmdlLWFyYy1mbGFnIDQ6c3dlZXAtZmxhZyA1OiB4IDY6IHlcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFyY1BhcmFtcyhzdGFydFBvaW50LCBwYXJhbXMpIHtcbiAgICB2YXIgcnggPSBwYXJhbXNbMV07XG4gICAgdmFyIHJ5ID0gcGFyYW1zWzJdO1xuICAgIHZhciB4Um90YXRpb24gPSBtb2QodG9SYWRpYW4ocGFyYW1zWzNdKSwgTWF0aC5QSSAqIDIpO1xuICAgIHZhciBhcmNGbGFnID0gcGFyYW1zWzRdO1xuICAgIHZhciBzd2VlcEZsYWcgPSBwYXJhbXNbNV07XG4gICAgLy8g5byn5b2i6LW354K55Z2Q5qCHXG4gICAgdmFyIHgxID0gc3RhcnRQb2ludFswXTtcbiAgICB2YXIgeTEgPSBzdGFydFBvaW50WzFdO1xuICAgIC8vIOW8p+W9oue7iOeCueWdkOagh1xuICAgIHZhciB4MiA9IHBhcmFtc1s2XTtcbiAgICB2YXIgeTIgPSBwYXJhbXNbN107XG4gICAgdmFyIHhwID0gKE1hdGguY29zKHhSb3RhdGlvbikgKiAoeDEgLSB4MikpIC8gMi4wICsgKE1hdGguc2luKHhSb3RhdGlvbikgKiAoeTEgLSB5MikpIC8gMi4wO1xuICAgIHZhciB5cCA9ICgtMSAqIE1hdGguc2luKHhSb3RhdGlvbikgKiAoeDEgLSB4MikpIC8gMi4wICsgKE1hdGguY29zKHhSb3RhdGlvbikgKiAoeTEgLSB5MikpIC8gMi4wO1xuICAgIHZhciBsYW1iZGEgPSAoeHAgKiB4cCkgLyAocnggKiByeCkgKyAoeXAgKiB5cCkgLyAocnkgKiByeSk7XG4gICAgaWYgKGxhbWJkYSA+IDEpIHtcbiAgICAgICAgcnggKj0gTWF0aC5zcXJ0KGxhbWJkYSk7XG4gICAgICAgIHJ5ICo9IE1hdGguc3FydChsYW1iZGEpO1xuICAgIH1cbiAgICB2YXIgZGlmZiA9IHJ4ICogcnggKiAoeXAgKiB5cCkgKyByeSAqIHJ5ICogKHhwICogeHApO1xuICAgIHZhciBmID0gZGlmZiA/IE1hdGguc3FydCgocnggKiByeCAqIChyeSAqIHJ5KSAtIGRpZmYpIC8gZGlmZikgOiAxO1xuICAgIGlmIChhcmNGbGFnID09PSBzd2VlcEZsYWcpIHtcbiAgICAgICAgZiAqPSAtMTtcbiAgICB9XG4gICAgaWYgKGlzTmFOKGYpKSB7XG4gICAgICAgIGYgPSAwO1xuICAgIH1cbiAgICAvLyDml4vovazliY3nmoTotbfngrnlnZDmoIfvvIzkuJTlvZPplb/ljYrovbTlkoznn63ljYrovbTnmoTplb/luqbkuLogMCDml7bvvIzlnZDmoIfmjIkgKDAsIDApIOWkhOeQhlxuICAgIHZhciBjeHAgPSByeSA/IChmICogcnggKiB5cCkgLyByeSA6IDA7XG4gICAgdmFyIGN5cCA9IHJ4ID8gKGYgKiAtcnkgKiB4cCkgLyByeCA6IDA7XG4gICAgLy8g5qSt5ZyG5ZyG5b+D5Z2Q5qCHXG4gICAgdmFyIGN4ID0gKHgxICsgeDIpIC8gMi4wICsgTWF0aC5jb3MoeFJvdGF0aW9uKSAqIGN4cCAtIE1hdGguc2luKHhSb3RhdGlvbikgKiBjeXA7XG4gICAgdmFyIGN5ID0gKHkxICsgeTIpIC8gMi4wICsgTWF0aC5zaW4oeFJvdGF0aW9uKSAqIGN4cCArIE1hdGguY29zKHhSb3RhdGlvbikgKiBjeXA7XG4gICAgLy8g6LW35aeL54K555qE5Y2V5L2N5ZCR6YePXG4gICAgdmFyIHUgPSBbKHhwIC0gY3hwKSAvIHJ4LCAoeXAgLSBjeXApIC8gcnldO1xuICAgIC8vIOe7iOatoueCueeahOWNleS9jeWQkemHj1xuICAgIHZhciB2ID0gWygtMSAqIHhwIC0gY3hwKSAvIHJ4LCAoLTEgKiB5cCAtIGN5cCkgLyByeV07XG4gICAgLy8g6K6h566X6LW35aeL54K55ZKM5ZyG5b+D55qE6L+e57q/77yM5LiOIHgg6L205q2j5pa55ZCR55qE5aS56KeSXG4gICAgdmFyIHRoZXRhID0gdkFuZ2xlKFsxLCAwXSwgdSk7XG4gICAgLy8g6K6h566X5ZyG5byn6LW35aeL54K55ZKM57uI5q2i54K55LiO5qSt5ZyG5ZyG5b+D6L+e57q/55qE5aS56KeSXG4gICAgdmFyIGRUaGV0YSA9IHZBbmdsZSh1LCB2KTtcbiAgICBpZiAodlJhdGlvKHUsIHYpIDw9IC0xKSB7XG4gICAgICAgIGRUaGV0YSA9IE1hdGguUEk7XG4gICAgfVxuICAgIGlmICh2UmF0aW8odSwgdikgPj0gMSkge1xuICAgICAgICBkVGhldGEgPSAwO1xuICAgIH1cbiAgICBpZiAoc3dlZXBGbGFnID09PSAwICYmIGRUaGV0YSA+IDApIHtcbiAgICAgICAgZFRoZXRhID0gZFRoZXRhIC0gMiAqIE1hdGguUEk7XG4gICAgfVxuICAgIGlmIChzd2VlcEZsYWcgPT09IDEgJiYgZFRoZXRhIDwgMCkge1xuICAgICAgICBkVGhldGEgPSBkVGhldGEgKyAyICogTWF0aC5QSTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBjeTogY3ksXG4gICAgICAgIC8vIOW8p+W9oueahOi1t+eCueWSjOe7iOeCueebuOWQjOaXtu+8jOmVv+i9tOWSjOefrei9tOeahOmVv+W6puaMiSAwIOWkhOeQhlxuICAgICAgICByeDogaXNTYW1lUG9pbnQoc3RhcnRQb2ludCwgW3gyLCB5Ml0pID8gMCA6IHJ4LFxuICAgICAgICByeTogaXNTYW1lUG9pbnQoc3RhcnRQb2ludCwgW3gyLCB5Ml0pID8gMCA6IHJ5LFxuICAgICAgICBzdGFydEFuZ2xlOiB0aGV0YSxcbiAgICAgICAgZW5kQW5nbGU6IHRoZXRhICsgZFRoZXRhLFxuICAgICAgICB4Um90YXRpb246IHhSb3RhdGlvbixcbiAgICAgICAgYXJjRmxhZzogYXJjRmxhZyxcbiAgICAgICAgc3dlZXBGbGFnOiBzd2VlcEZsYWcsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyYy1wYXJhbXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/arc-params.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/arrow.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/arrow.js ***!
\*******************************************************/
/*! exports provided: getShortenOffset, addStartArrow, addEndArrow */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShortenOffset\", function() { return getShortenOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addStartArrow\", function() { return addStartArrow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEndArrow\", function() { return addEndArrow; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n\n\nvar sin = Math.sin, cos = Math.cos, atan2 = Math.atan2, PI = Math.PI;\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: \"M\" + 10 * cos(PI / 6) + \",\" + 10 * sin(PI / 6) + \" L0,0 L\" + 10 * cos(PI / 6) + \",-\" + 10 * sin(PI / 6),\n // 使用 shape stroke 值\n stroke: stroke,\n lineWidth: lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow, stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var arrowAttrs = isStart ? startArrow : endArrow;\n var d = arrowAttrs.d, arrowFill = arrowAttrs.fill, arrowStroke = arrowAttrs.stroke, arrowLineWidth = arrowAttrs.lineWidth, restAttrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(arrowAttrs, [\"d\", \"fill\", \"stroke\", \"lineWidth\"]);\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, restAttrs), { \n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke, lineWidth: arrowLineWidth || lineWidth, \n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill }),\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nfunction getShortenOffset(x1, y1, x2, y2, d) {\n var rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvYXJyb3cuanM/OWYyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDVDtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkNBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwySUFBMkksb0RBQU07QUFDako7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkNBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsZTtBQUNuQztBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSx3QkFBd0I7QUFDckM7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsV0FBVztBQUN0QixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi4vc2hhcGUnO1xudmFyIHNpbiA9IE1hdGguc2luLCBjb3MgPSBNYXRoLmNvcywgYXRhbjIgPSBNYXRoLmF0YW4yLCBQSSA9IE1hdGguUEk7XG5mdW5jdGlvbiBfYWRkRGVmYXVsdEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIGlzU3RhcnQpIHtcbiAgICB2YXIgc3Ryb2tlID0gYXR0cnMuc3Ryb2tlLCBsaW5lV2lkdGggPSBhdHRycy5saW5lV2lkdGg7XG4gICAgdmFyIHggPSB4MSAtIHgyO1xuICAgIHZhciB5ID0geTEgLSB5MjtcbiAgICB2YXIgcmFkID0gYXRhbjIoeSwgeCk7XG4gICAgdmFyIGFycm93U2hhcGUgPSBuZXcgUGF0aCh7XG4gICAgICAgIHR5cGU6ICdwYXRoJyxcbiAgICAgICAgY2FudmFzOiBzaGFwZS5nZXQoJ2NhbnZhcycpLFxuICAgICAgICBpc0Fycm93U2hhcGU6IHRydWUsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAvLyDpu5jorqTnrq3lpLTnmoTovrnplb/kuLogMTDvvIzlpLnop5LkuLogNjAg5bqmXG4gICAgICAgICAgICBwYXRoOiBcIk1cIiArIDEwICogY29zKFBJIC8gNikgKyBcIixcIiArIDEwICogc2luKFBJIC8gNikgKyBcIiBMMCwwIExcIiArIDEwICogY29zKFBJIC8gNikgKyBcIiwtXCIgKyAxMCAqIHNpbihQSSAvIDYpLFxuICAgICAgICAgICAgLy8g5L2/55SoIHNoYXBlIHN0cm9rZSDlgLxcbiAgICAgICAgICAgIHN0cm9rZTogc3Ryb2tlLFxuICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGgsXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgYXJyb3dTaGFwZS50cmFuc2xhdGUoeDIsIHkyKTtcbiAgICBhcnJvd1NoYXBlLnJvdGF0ZUF0UG9pbnQoeDIsIHkyLCByYWQpO1xuICAgIHNoYXBlLnNldChpc1N0YXJ0ID8gJ3N0YXJ0QXJyb3dTaGFwZScgOiAnZW5kQXJyb3dTaGFwZScsIGFycm93U2hhcGUpO1xufVxuLyoqXG4gKiDnrq3lpLQgcGF0aCDnmoTorr7nva7opoHmsYJcbiAqIDEuIOeureWktOmhtueCueWdkOagh+mcgOimgeS4uiAoMCwgMClcbiAqIDIuIOeureWktOWkueinkueahOS4reW/g+WIhuWJsue6v+mcgOimgeS4jiBYIOi9tOato+aWueWQkeWvuem9kFxuICovXG5mdW5jdGlvbiBfYWRkQ3VzdG9taXplZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIGlzU3RhcnQpIHtcbiAgICB2YXIgc3RhcnRBcnJvdyA9IGF0dHJzLnN0YXJ0QXJyb3csIGVuZEFycm93ID0gYXR0cnMuZW5kQXJyb3csIHN0cm9rZSA9IGF0dHJzLnN0cm9rZSwgbGluZVdpZHRoID0gYXR0cnMubGluZVdpZHRoO1xuICAgIHZhciBhcnJvd0F0dHJzID0gaXNTdGFydCA/IHN0YXJ0QXJyb3cgOiBlbmRBcnJvdztcbiAgICB2YXIgZCA9IGFycm93QXR0cnMuZCwgYXJyb3dGaWxsID0gYXJyb3dBdHRycy5maWxsLCBhcnJvd1N0cm9rZSA9IGFycm93QXR0cnMuc3Ryb2tlLCBhcnJvd0xpbmVXaWR0aCA9IGFycm93QXR0cnMubGluZVdpZHRoLCByZXN0QXR0cnMgPSBfX3Jlc3QoYXJyb3dBdHRycywgW1wiZFwiLCBcImZpbGxcIiwgXCJzdHJva2VcIiwgXCJsaW5lV2lkdGhcIl0pO1xuICAgIHZhciB4ID0geDEgLSB4MjtcbiAgICB2YXIgeSA9IHkxIC0geTI7XG4gICAgdmFyIHJhZCA9IGF0YW4yKHksIHgpO1xuICAgIGlmIChkKSB7XG4gICAgICAgIHgyID0geDIgLSBjb3MocmFkKSAqIGQ7XG4gICAgICAgIHkyID0geTIgLSBzaW4ocmFkKSAqIGQ7XG4gICAgfVxuICAgIHZhciBhcnJvd1NoYXBlID0gbmV3IFBhdGgoe1xuICAgICAgICB0eXBlOiAncGF0aCcsXG4gICAgICAgIGNhbnZhczogc2hhcGUuZ2V0KCdjYW52YXMnKSxcbiAgICAgICAgaXNBcnJvd1NoYXBlOiB0cnVlLFxuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3RBdHRycyksIHsgXG4gICAgICAgICAgICAvLyDmlK/mjIHljZXni6zorr7nva7nrq3lpLTnmoQgc3Ryb2tlIOWSjCBsaW5lV2lkdGjvvIzoi6XkuLrnqbrliJnkvb/nlKggc2hhcGUg55qE5YC8XG4gICAgICAgICAgICBzdHJva2U6IGFycm93U3Ryb2tlIHx8IHN0cm9rZSwgbGluZVdpZHRoOiBhcnJvd0xpbmVXaWR0aCB8fCBsaW5lV2lkdGgsIFxuICAgICAgICAgICAgLy8g566t5aS05piv5ZCm5aGr5YWF6ZyA6KaB5omL5Yqo6K6+572u77yM5LiN5Lya57un5om/6IeqIHNoYXBlIOeahOWAvFxuICAgICAgICAgICAgZmlsbDogYXJyb3dGaWxsIH0pLFxuICAgIH0pO1xuICAgIGFycm93U2hhcGUudHJhbnNsYXRlKHgyLCB5Mik7XG4gICAgYXJyb3dTaGFwZS5yb3RhdGVBdFBvaW50KHgyLCB5MiwgcmFkKTtcbiAgICBzaGFwZS5zZXQoaXNTdGFydCA/ICdzdGFydEFycm93U2hhcGUnIDogJ2VuZEFycm93U2hhcGUnLCBhcnJvd1NoYXBlKTtcbn1cbi8qKlxuICog5aaC5p6c6Ieq5a6a5LmJ566t5aS05bm25LiU5pyJIGQg6ZyA6KaB5YGa5YGP56e777yM5aaC5p6c55u05o6l55S777yM57q/5p2h5Lya6LaF5Ye6566t5aS05bCW56uv77yM5Zug5q2k6ZyA6KaB5qC55o2u566t5aS05YGP56e7IGQsIOi/lOWbnue6v+mcgOimgee8qeefreeahOi3neemu1xuICogfC0tLS0tLS0tLS0tLS0tLS1cbiAqIHw8fC0tLS0tLS0tLS0tLS0tXG4gKiB8XG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOeureWktOS9nOeUqOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg566t5aS05L2c55So54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSBkICDnrq3lpLTmsr/nur/mnaHmlrnlkJHnmoTlgY/np7vot53nprtcbiAqIEByZXR1cm4ge3tkeDogbnVtYmVyLCBkeTogbnVtYmVyfX0g6L+U5Zue57q/5p2h5YGP56e76Led56a7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydGVuT2Zmc2V0KHgxLCB5MSwgeDIsIHkyLCBkKSB7XG4gICAgdmFyIHJhZCA9IGF0YW4yKHkyIC0geTEsIHgyIC0geDEpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGR4OiBjb3MocmFkKSAqIGQsXG4gICAgICAgIGR5OiBzaW4ocmFkKSAqIGQsXG4gICAgfTtcbn1cbi8qKlxuICog57uY5Yi26LW35aeL566t5aS0XG4gKiBAcGFyYW0ge0lTaGFwZX0gc2hhcGUg5Zu+5b2iXG4gKiBAcGFyYW0ge1NoYXBlQXR0cnN9IGF0dHJzIHNoYXBlIOeahOe7mOWbvuWxnuaAp1xuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnrq3lpLTkvZznlKjngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOeureWktOS9nOeUqOeCuSB5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTdGFydEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIpIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzLnN0YXJ0QXJyb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIF9hZGRDdXN0b21pemVkQXJyb3coc2hhcGUsIGF0dHJzLCB4MSwgeTEsIHgyLCB5MiwgdHJ1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGF0dHJzLnN0YXJ0QXJyb3cpIHtcbiAgICAgICAgX2FkZERlZmF1bHRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCB0cnVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHNoYXBlLnNldCgnc3RhcnRBcnJvd1NoYXBlJywgbnVsbCk7XG4gICAgfVxufVxuLyoqXG4gKiDnu5jliLbnu5PmnZ/nrq3lpLRcbiAqIEBwYXJhbSB7SVNoYXBlfSBzaGFwZSDlm77lvaJcbiAqIEBwYXJhbSB7U2hhcGVBdHRyc30gYXR0cnMgc2hhcGUg55qE57uY5Zu+5bGe5oCnXG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOeureWktOS9nOeUqOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg566t5aS05L2c55So54K5IHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEVuZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIpIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzLmVuZEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBfYWRkQ3VzdG9taXplZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIGZhbHNlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYXR0cnMuZW5kQXJyb3cpIHtcbiAgICAgICAgX2FkZERlZmF1bHRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBmYWxzZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzaGFwZS5zZXQoJ3N0YXJ0QXJyb3dTaGFwZScsIG51bGwpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFycm93LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/arrow.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/draw.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/draw.js ***!
\******************************************************/
/*! exports provided: applyAttrsToContext, drawChildren, checkRefresh, checkChildrenRefresh, clearChanged, drawPath, refreshElement, getRefreshRegion, getMergedRegion, mergeView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyAttrsToContext\", function() { return applyAttrsToContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRefresh\", function() { return checkRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkChildrenRefresh\", function() { return checkChildrenRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearChanged\", function() { return clearChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawPath\", function() { return drawPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRefreshRegion\", function() { return getRefreshRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMergedRegion\", function() { return getMergedRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeView\", function() { return mergeView; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ \"./node_modules/@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _arc_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc-params */ \"./node_modules/@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\nvar SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\nfunction applyAttrsToContext(context, element) {\n var attrs = element.attr();\n for (var k in attrs) {\n var v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n var name_1 = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name_1 === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n }\n else if (name_1 === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) && context.setLineDash(v);\n }\n else {\n if (name_1 === 'strokeStyle' || name_1 === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = Object(_parse__WEBPACK_IMPORTED_MODULE_1__[\"parseStyle\"])(context, element, v);\n }\n else if (name_1 === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name_1] = v;\n }\n }\n}\nfunction drawChildren(context, children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n child.draw(context, region);\n }\n else {\n child.skipDraw();\n }\n }\n}\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nfunction checkRefresh(canvas, children, region) {\n var refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(refreshElements, function (el) {\n if (el !== canvas) {\n var parent_1 = el.cfg.parent;\n while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) {\n parent_1.cfg.refresh = true;\n parent_1 = parent_1.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n }\n else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nfunction checkChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n }\n else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n var refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nfunction clearChanged(elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\nfunction checkElementRefresh(shape, region) {\n var bbox = shape.cfg.cacheCanvasBBox;\n var isAllow = shape.cfg.isInView && bbox && Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(bbox, region);\n return isAllow;\n}\n// 绘制 path\nfunction drawPath(shape, context, attrs, arcParamsCache) {\n var path = attrs.path, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (!path) {\n return;\n }\n var currentPoint = [0, 0]; // 当前图形\n var startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n var distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (var i = 0; i < path.length; i++) {\n var params = path[i];\n var command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n var tangent = shape.getStartTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n }\n else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n var lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n var dx = distance.dx, dy = distance.dy;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n var arcParams = void 0;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n }\n else {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n }\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation, sweepFlag = arcParams.sweepFlag;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n }\n else {\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n// 刷新图形元素(Shape 或者 Group)\nfunction refreshElement(element, changeType) {\n var canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\nfunction getRefreshRegion(element) {\n var region;\n if (!element.destroyed) {\n var cacheBox = element.get('cacheCanvasBBox');\n var validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n var bbox = element.getCanvasBBox();\n var validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeRegion\"])(cacheBox, bbox);\n }\n else if (validCache) {\n region = cacheBox;\n }\n else if (validBBox) {\n region = bbox;\n }\n }\n else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\nfunction getMergedRegion(elements) {\n if (!elements.length) {\n return null;\n }\n var minXArr = [];\n var minYArr = [];\n var maxXArr = [];\n var maxYArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(elements, function (el) {\n var region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minXArr),\n minY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minYArr),\n maxX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxXArr),\n maxY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxYArr),\n };\n}\nfunction mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvZHJhdy5qcz9mNWU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEO0FBQ2hCO0FBQ0c7QUFDWTtBQUNUO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseURBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMkRBQWE7QUFDN0Q7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNERBQTBCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDJEQUFZO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDJEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix5REFBVztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGNBQWMsc0RBQUc7QUFDakIsY0FBYyxzREFBRztBQUNqQixjQUFjLHNEQUFHO0FBQ2pCLGNBQWMsc0RBQUc7QUFDakI7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDJEQUFhO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2RyYXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBtYXgsIG1pbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcGFyc2VTdHlsZSB9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGdldEFyY1BhcmFtcyBmcm9tICcuL2FyYy1wYXJhbXMnO1xuaW1wb3J0IHsgbWVyZ2VSZWdpb24sIGludGVyc2VjdFJlY3QgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgQXJyb3dVdGlsIGZyb20gJy4uL3V0aWwvYXJyb3cnO1xudmFyIFNIQVBFX0FUVFJTX01BUCA9IHtcbiAgICBmaWxsOiAnZmlsbFN0eWxlJyxcbiAgICBzdHJva2U6ICdzdHJva2VTdHlsZScsXG4gICAgb3BhY2l0eTogJ2dsb2JhbEFscGhhJyxcbn07XG5leHBvcnQgZnVuY3Rpb24gYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCBlbGVtZW50KSB7XG4gICAgdmFyIGF0dHJzID0gZWxlbWVudC5hdHRyKCk7XG4gICAgZm9yICh2YXIgayBpbiBhdHRycykge1xuICAgICAgICB2YXIgdiA9IGF0dHJzW2tdO1xuICAgICAgICAvLyDovazmjaLkuIDkuIvkuI3kuI4gY2FudmFzIOWFvOWuueeahOWxnuaAp+WQjVxuICAgICAgICB2YXIgbmFtZV8xID0gU0hBUEVfQVRUUlNfTUFQW2tdID8gU0hBUEVfQVRUUlNfTUFQW2tdIDogaztcbiAgICAgICAgaWYgKG5hbWVfMSA9PT0gJ21hdHJpeCcgJiYgdikge1xuICAgICAgICAgICAgLy8g6K6+572u55+p6Zi1XG4gICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSh2WzBdLCB2WzFdLCB2WzNdLCB2WzRdLCB2WzZdLCB2WzddKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lXzEgPT09ICdsaW5lRGFzaCcgJiYgY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgICAgLy8g6K6+572u6Jma57q/77yM5Y+q5pSv5oyB5pWw57uE5b2i5byP77yM6Z2e5pWw57uE5b2i5byP5LiN5YGa5Lu75L2V5pON5L2cXG4gICAgICAgICAgICBpc0FycmF5KHYpICYmIGNvbnRleHQuc2V0TGluZURhc2godik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAobmFtZV8xID09PSAnc3Ryb2tlU3R5bGUnIHx8IG5hbWVfMSA9PT0gJ2ZpbGxTdHlsZScpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjmuJDlj5jjgIFwYXR0ZXJuIOi/meS4quW8gOmUgOacieS6m+Wkp1xuICAgICAgICAgICAgICAgIC8vIOWPr+S7peiAg+iZkee8k+WtmOacuuWItu+8jOmAmui/hyBoYXNVcGRhdGUg5p2l6YG/5YWN5LiA5Lqb6L+Q566XXG4gICAgICAgICAgICAgICAgdiA9IHBhcnNlU3R5bGUoY29udGV4dCwgZWxlbWVudCwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lXzEgPT09ICdnbG9iYWxBbHBoYScpIHtcbiAgICAgICAgICAgICAgICAvLyBvcGFjaXR5IOaViOaenOWPr+S7peWPoOWKoO+8jOWtkOWFg+e0oOeahCBvcGFjaXR5IOmcgOimgeS4jueItuWFg+e0oCBvcGFjaXR5IOebuOS5mFxuICAgICAgICAgICAgICAgIHYgPSB2ICogY29udGV4dC5nbG9iYWxBbHBoYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHRbbmFtZV8xXSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuLCByZWdpb24pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoY2hpbGQuY2ZnLnZpc2libGUpIHtcbiAgICAgICAgICAgIGNoaWxkLmRyYXcoY29udGV4dCwgcmVnaW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkLnNraXBEcmF3KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyDov5nkuKrlnLDmlrnnmoTpgLvovpHmr5TovoPlpI3mnYLvvIznroDljZXnlLvkuobkuIDlvKDlm77vvJpodHRwczovL3d3dy55dXF1ZS5jb20vYW50di9vdTI5Mm4vcGNndDVnI09XMVFFXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZWZyZXNoKGNhbnZhcywgY2hpbGRyZW4sIHJlZ2lvbikge1xuICAgIHZhciByZWZyZXNoRWxlbWVudHMgPSBjYW52YXMuZ2V0KCdyZWZyZXNoRWxlbWVudHMnKTtcbiAgICAvLyDlhYjpgY3ljobpnIDopoHliLfmlrDnmoTlhYPntKDvvIzlsIbov5nkupvlhYPntKDnmoTniLblhYPntKDkuZ/orr7nva4gcmVmcmVzaFxuICAgIGVhY2gocmVmcmVzaEVsZW1lbnRzLCBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgaWYgKGVsICE9PSBjYW52YXMpIHtcbiAgICAgICAgICAgIHZhciBwYXJlbnRfMSA9IGVsLmNmZy5wYXJlbnQ7XG4gICAgICAgICAgICB3aGlsZSAocGFyZW50XzEgJiYgcGFyZW50XzEgIT09IGNhbnZhcyAmJiAhcGFyZW50XzEuY2ZnLnJlZnJlc2gpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRfMS5jZmcucmVmcmVzaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcGFyZW50XzEgPSBwYXJlbnRfMS5jZmcucGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHJlZnJlc2hFbGVtZW50c1swXSA9PT0gY2FudmFzKSB7XG4gICAgICAgIHNldENoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIOajgOafpeaJgOacieWtkOWFg+e0oOaYr+WQpuWPr+S7peWIt+aWsFxuICAgICAgICBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICB9XG59XG4vLyDmo4Dmn6XmiYDmnInnmoTlrZDlhYPntKDmmK/lkKblupTor6Xmm7TmlrBcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmNmZy52aXNpYmxlKSB7XG4gICAgICAgICAgICAvLyDlhYjliKTmlq0gaGFzQ2hhbmdlZO+8jOWboOS4uuWug+eahOS8mOWFiOe6p+WIpOaWreW6lOivpemrmOS6jiByZWZyZXNoXG4gICAgICAgICAgICBpZiAoY2hpbGQuY2ZnLmhhc0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzoioLngrnlj5HnlJ/kuoYgY2hhbmdl77yM5YiZ6ZyA6KaB57qn6IGU6K6+572u5a2Q5YWD57Sg55qEIHJlZnJlc2hcbiAgICAgICAgICAgICAgICBjaGlsZC5jZmcucmVmcmVzaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGQuY2ZnLmNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmNmZy5yZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5b2T5YmN5Zu+5b2iL+WIhue7hCByZWZyZXNoID0gdHJ1Ze+8jOivtOaYjuWFtuWtkOiKgueCueWtmOWcqCBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZC5jZmcuY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g6L+Z5Liq5YiG5pSv6K+05piO5q2k5qyh5bGA6YOo5Yi35paw77yM5omA5pyJ55qE6IqC54K55ZKM54i25YWD57Sg5rKh5pyJ5Y+R55Sf5Y+Y5YyW77yM5LuF6ZyA6KaB5qOA5p+l5YyF5Zu055uS77yI57yT5a2Y77yJ5piv5ZCm55u45Lqk5Y2z5Y+vXG4gICAgICAgICAgICAgICAgdmFyIHJlZnJlc2ggPSBjaGVja0VsZW1lbnRSZWZyZXNoKGNoaWxkLCByZWdpb24pO1xuICAgICAgICAgICAgICAgIGNoaWxkLmNmZy5yZWZyZXNoID0gcmVmcmVzaDtcbiAgICAgICAgICAgICAgICBpZiAocmVmcmVzaCAmJiBjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c6ZyA6KaB5Yi35paw77yM6K+05piO5a2Q5YWD57Sg5Lmf6ZyA6KaB5Yi35paw77yM57un57ut6L+b6KGM5Yik5a6aXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQ2hpbGRyZW5SZWZyZXNoKGNoaWxkLmNmZy5jaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyDnlLHkuo7lr7nmlLnlj5jnmoTlm77lvaLmlL7lhaUgcmVmcmVzaEVsZW1lbnRzIOaXtuWBmuS6huS8mOWMlu+8jOWIpOWumueItuWFg+e0oCBjaGFuZ2VkIOaXtuS4jeWKoOWFpVxuLy8g6YKj5LmI5pyJ5Y+v6IO95Lya5Ye6546wIGVsZW1lbnRzIOmDveS4uuepuu+8jOaJgOS7peacgOe7iCBncm91cFxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ2hhbmdlZChlbGVtZW50cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsID0gZWxlbWVudHNbaV07XG4gICAgICAgIGVsLmNmZy5oYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIC8vIOe6p+iBlOa4heeQhlxuICAgICAgICBpZiAoZWwuaXNHcm91cCgpICYmICFlbC5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIGNsZWFyQ2hhbmdlZChlbC5jZmcuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8g5b2T5p+Q5Liq54i25YWD57Sg5Y+R55Sf5pS55Y+Y5pe277yM6LCD55So6L+Z5Liq5pa55rOV57qn6IGU6K6+572uIHJlZnJlc2hcbmZ1bmN0aW9uIHNldENoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgLy8gbGV0IHJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAvLyDojrflj5bnvJPlrZjnmoQgYmJveO+8jOWmguaenOi/meS4qiBiYm94IOi/mOWtmOWcqOWImeivtOaYjueItuWFg+e0oOS4jeaYr+efqemYteWPkeeUn+S6huaUueWPmFxuICAgICAgICAvLyBjb25zdCBiYm94ID0gY2hpbGQuY2ZnLmNhbnZhc0JCb3g7XG4gICAgICAgIC8vIGlmIChiYm94KSB7XG4gICAgICAgIC8vICAgLy8g5aaC5p6c6L+Z5pe25YCZXG4gICAgICAgIC8vICAgcmVmcmVzaCA9IGludGVyc2VjdFJlY3QoYmJveCwgcmVnaW9uKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjaGlsZC5jZmcucmVmcmVzaCA9IHRydWU7XG4gICAgICAgIC8vIOWmguaenOmcgOimgeWIt+aWsOW9k+WJjeiKgueCue+8jOaJgOacieeahOWtkOWFg+e0oOiuvue9riByZWZyZXNoXG4gICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgIHNldENoaWxkcmVuUmVmcmVzaChjaGlsZC5nZXQoJ2NoaWxkcmVuJyksIHJlZ2lvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjaGVja0VsZW1lbnRSZWZyZXNoKHNoYXBlLCByZWdpb24pIHtcbiAgICB2YXIgYmJveCA9IHNoYXBlLmNmZy5jYWNoZUNhbnZhc0JCb3g7XG4gICAgdmFyIGlzQWxsb3cgPSBzaGFwZS5jZmcuaXNJblZpZXcgJiYgYmJveCAmJiBpbnRlcnNlY3RSZWN0KGJib3gsIHJlZ2lvbik7XG4gICAgcmV0dXJuIGlzQWxsb3c7XG59XG4vLyDnu5jliLYgcGF0aFxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdQYXRoKHNoYXBlLCBjb250ZXh0LCBhdHRycywgYXJjUGFyYW1zQ2FjaGUpIHtcbiAgICB2YXIgcGF0aCA9IGF0dHJzLnBhdGgsIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgIGlmICghcGF0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBjdXJyZW50UG9pbnQgPSBbMCwgMF07IC8vIOW9k+WJjeWbvuW9olxuICAgIHZhciBzdGFydE1vdmVQb2ludCA9IFswLCAwXTsgLy8g5byA5aeLIE0g55qE54K577yM5Y+v6IO95Lya5pyJ5aSa5LiqXG4gICAgdmFyIGRpc3RhbmNlID0ge1xuICAgICAgICBkeDogMCxcbiAgICAgICAgZHk6IDAsXG4gICAgfTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGFyYW1zID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIGNvbW1hbmQgPSBwYXJhbXNbMF07XG4gICAgICAgIGlmIChpID09PSAwICYmIHN0YXJ0QXJyb3cgJiYgc3RhcnRBcnJvdy5kKSB7XG4gICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNoYXBlLmdldFN0YXJ0VGFuZ2VudCgpO1xuICAgICAgICAgICAgZGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh0YW5nZW50WzBdWzBdLCB0YW5nZW50WzBdWzFdLCB0YW5nZW50WzFdWzBdLCB0YW5nZW50WzFdWzFdLCBzdGFydEFycm93LmQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMiAmJiBwYXRoW2kgKyAxXVswXSA9PT0gJ1onICYmIGVuZEFycm93ICYmIGVuZEFycm93LmQpIHtcbiAgICAgICAgICAgIC8vIOS4uuS6humYsuatoue7k+WwvuS4uiBaIOeahCBzZWdtZW50IOe8qeefreS4jei1t+aViO+8jOmcgOimgeWPluacgOWQjuS4pOS4qiBzZWdtZW50IOeJueauiuWkhOeQhlxuICAgICAgICAgICAgdmFyIGxhc3RQYXRoID0gcGF0aFtpICsgMV07XG4gICAgICAgICAgICBpZiAobGFzdFBhdGhbMF0gPT09ICdaJykge1xuICAgICAgICAgICAgICAgIHZhciB0YW5nZW50ID0gc2hhcGUuZ2V0RW5kVGFuZ2VudCgpO1xuICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQodGFuZ2VudFswXVswXSwgdGFuZ2VudFswXVsxXSwgdGFuZ2VudFsxXVswXSwgdGFuZ2VudFsxXVsxXSwgZW5kQXJyb3cuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaSA9PT0gcGF0aC5sZW5ndGggLSAxICYmIGVuZEFycm93ICYmIGVuZEFycm93LmQpIHtcbiAgICAgICAgICAgIGlmIChwYXRoWzBdICE9PSAnWicpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNoYXBlLmdldEVuZFRhbmdlbnQoKTtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0sIGVuZEFycm93LmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBkeCA9IGRpc3RhbmNlLmR4LCBkeSA9IGRpc3RhbmNlLmR5O1xuICAgICAgICAvLyBWLEgsUyxUIOmDveWcqOWJjemdouiiq+i9rOaNouaIkOagh+WHhuW9ouW8j1xuICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBhcmFtc1sxXSAtIGR4LCBwYXJhbXNbMl0gLSBkeSk7XG4gICAgICAgICAgICAgICAgc3RhcnRNb3ZlUG9pbnQgPSBbcGFyYW1zWzFdLCBwYXJhbXNbMl1dO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8ocGFyYW1zWzFdIC0gZHgsIHBhcmFtc1syXSAtIGR5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdIC0gZHgsIHBhcmFtc1s0XSAtIGR5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHBhcmFtc1s1XSAtIGR4LCBwYXJhbXNbNl0gLSBkeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzoge1xuICAgICAgICAgICAgICAgIHZhciBhcmNQYXJhbXMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgLy8g5Li65LqG5Yqg6YCf57uY5Yi277yM5Y+v5Lul5o+Q5L6b5Y+C5pWw55qE57yT5a2Y77yM5ZCE5Liq5Zu+5b2i6Ieq5bex57yT5a2YXG4gICAgICAgICAgICAgICAgaWYgKGFyY1BhcmFtc0NhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyY1BhcmFtcyA9IGFyY1BhcmFtc0NhY2hlW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFyY1BhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJjUGFyYW1zID0gZ2V0QXJjUGFyYW1zKGN1cnJlbnRQb2ludCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyY1BhcmFtc0NhY2hlW2ldID0gYXJjUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcmNQYXJhbXMgPSBnZXRBcmNQYXJhbXMoY3VycmVudFBvaW50LCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY3ggPSBhcmNQYXJhbXMuY3gsIGN5ID0gYXJjUGFyYW1zLmN5LCByeCA9IGFyY1BhcmFtcy5yeCwgcnkgPSBhcmNQYXJhbXMucnksIHN0YXJ0QW5nbGUgPSBhcmNQYXJhbXMuc3RhcnRBbmdsZSwgZW5kQW5nbGUgPSBhcmNQYXJhbXMuZW5kQW5nbGUsIHhSb3RhdGlvbiA9IGFyY1BhcmFtcy54Um90YXRpb24sIHN3ZWVwRmxhZyA9IGFyY1BhcmFtcy5zd2VlcEZsYWc7XG4gICAgICAgICAgICAgICAgLy8g55u05o6l5L2/55So5qSt5ZyG55qEIGFwaVxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsbGlwc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5lbGxpcHNlKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCAxIC0gc3dlZXBGbGFnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gcnggPiByeSA/IHJ4IDogcnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZVggPSByeCA+IHJ5ID8gMSA6IHJ4IC8gcnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZVkgPSByeCA+IHJ5ID8gcnkgLyByeCA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGN4LCBjeSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRlKHhSb3RhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoc2NhbGVYLCBzY2FsZVkpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgMSAtIHN3ZWVwRmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoMSAvIHNjYWxlWCwgMSAvIHNjYWxlWSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRlKC14Um90YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY3gsIC1jeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5pyJ5LqGIFog5ZCO77yM5b2T5YmN6IqC54K55LuO5byA5aeLIE0g55qE54K55byA5aeLXG4gICAgICAgIGlmIChjb21tYW5kID09PSAnWicpIHtcbiAgICAgICAgICAgIGN1cnJlbnRQb2ludCA9IHN0YXJ0TW92ZVBvaW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGxlbiA9IHBhcmFtcy5sZW5ndGg7XG4gICAgICAgICAgICBjdXJyZW50UG9pbnQgPSBbcGFyYW1zW2xlbiAtIDJdLCBwYXJhbXNbbGVuIC0gMV1dO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8g5Yi35paw5Zu+5b2i5YWD57SgKFNoYXBlIOaIluiAhSBHcm91cClcbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoRWxlbWVudChlbGVtZW50LCBjaGFuZ2VUeXBlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGVsZW1lbnQuZ2V0KCdjYW52YXMnKTtcbiAgICAvLyDlj6rmnInlrZjlnKjkuo4gY2FudmFzIOS4iuaXtueUn+aViFxuICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICAvLyDkuIDml6YgcmVtb3Zl77yM5YiZ5peg5rOV5ZyoIGVsZW1lbnQg5LiK5ou/5Yiw5YyF5Zu055uSXG4gICAgICAgICAgICAvLyBkZXN0cm95IOWQjuaJgOacieWxnuaAp+mDveaLv+S4jeWIsO+8jOaJgOS7pemcgOimgeaaguWtmOS4gOS4i1xuICAgICAgICAgICAgLy8g6L+Z5piv5LiA5q61IGhhY2sg55qE5Luj56CBXG4gICAgICAgICAgICBlbGVtZW50Ll9jYWNoZUNhbnZhc0JCb3ggPSBlbGVtZW50LmdldCgnY2FjaGVDYW52YXNCQm94Jyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g6Ziy5q2i5Y+N5aSN5Yi35pawXG4gICAgICAgIGlmICghZWxlbWVudC5nZXQoJ2hhc0NoYW5nZWQnKSkge1xuICAgICAgICAgICAgLy8g5L2G5piv5aeL57uI6KaB5qCH6K6w5Li6IGhhc0NoYW5nZWTvvIzkvr/kuo7lkI7pnaLov5vooYzlsYDpg6jmuLLmn5NcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0KCdoYXNDaGFuZ2VkJywgdHJ1ZSk7XG4gICAgICAgICAgICAvLyDmnKzmnaXlj6rmnInlsYDpg6jmuLLmn5PmqKHlvI/kuIvvvIzmiY3pnIDopoHorrDlvZXmm7TmlrDnmoTlhYPntKDpmJ/liJdcbiAgICAgICAgICAgIC8vIGlmIChjYW52YXMuZ2V0KCdsb2NhbFJlZnJlc2gnKSkge1xuICAgICAgICAgICAgLy8gICBjYW52YXMucmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSwgY2FudmFzKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIOS9huWvueS6jiBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL2cvaXNzdWVzLzQyMiDnmoTlnLrmma/vvIzlhajlsYDmuLLmn5PnmoTmqKHlvI/kuIvkuZ/pnIDopoHorrDlvZXmm7TmlrDnmoTlhYPntKDpmJ/liJdcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeWFg+e0oOeahOeItuWFg+e0oOWPkeeUn+S6huaUueWPmO+8jOWPr+S7peS4jeaUvuWFpemYn+WIl++8jOi/meWPpeivneWkp+amguiDveWkn+aPkOWNhyAxNSUg55qE5Yid5qyh5riy5p+T5oCn6IO9XG4gICAgICAgICAgICBpZiAoIShlbGVtZW50LmNmZy5wYXJlbnQgJiYgZWxlbWVudC5jZmcucGFyZW50LmdldCgnaGFzQ2hhbmdlZCcpKSkge1xuICAgICAgICAgICAgICAgIGNhbnZhcy5yZWZyZXNoRWxlbWVudChlbGVtZW50LCBjaGFuZ2VUeXBlLCBjYW52YXMpO1xuICAgICAgICAgICAgICAgIGlmIChjYW52YXMuZ2V0KCdhdXRvRHJhdycpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZnJlc2hSZWdpb24oZWxlbWVudCkge1xuICAgIHZhciByZWdpb247XG4gICAgaWYgKCFlbGVtZW50LmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgY2FjaGVCb3ggPSBlbGVtZW50LmdldCgnY2FjaGVDYW52YXNCQm94Jyk7XG4gICAgICAgIHZhciB2YWxpZENhY2hlID0gY2FjaGVCb3ggJiYgISEoY2FjaGVCb3gud2lkdGggJiYgY2FjaGVCb3guaGVpZ2h0KTtcbiAgICAgICAgdmFyIGJib3ggPSBlbGVtZW50LmdldENhbnZhc0JCb3goKTtcbiAgICAgICAgdmFyIHZhbGlkQkJveCA9IGJib3ggJiYgISEoYmJveC53aWR0aCAmJiBiYm94LmhlaWdodCk7XG4gICAgICAgIC8vIOaYr+WQpuaYr+acieaViCBiYm94IOWIpOWumu+8jOS4gOS6myBOYU4g5oiW6ICFIOWuvemrmOS4uiAwIOeahOaDheWGtei/h+a7pOaOiVxuICAgICAgICBpZiAodmFsaWRDYWNoZSAmJiB2YWxpZEJCb3gpIHtcbiAgICAgICAgICAgIHJlZ2lvbiA9IG1lcmdlUmVnaW9uKGNhY2hlQm94LCBiYm94KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWxpZENhY2hlKSB7XG4gICAgICAgICAgICByZWdpb24gPSBjYWNoZUJveDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWxpZEJCb3gpIHtcbiAgICAgICAgICAgIHJlZ2lvbiA9IGJib3g7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIOWboOS4uuWFg+e0oOW3sue7j+mUgOavgeaJgOS7peaXoOazleiOt+WPluWIsOe8k+WtmOeahOWMheWbtOebklxuICAgICAgICByZWdpb24gPSBlbGVtZW50WydfY2FjaGVDYW52YXNCQm94J107XG4gICAgfVxuICAgIHJldHVybiByZWdpb247XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVyZ2VkUmVnaW9uKGVsZW1lbnRzKSB7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBtaW5YQXJyID0gW107XG4gICAgdmFyIG1pbllBcnIgPSBbXTtcbiAgICB2YXIgbWF4WEFyciA9IFtdO1xuICAgIHZhciBtYXhZQXJyID0gW107XG4gICAgZWFjaChlbGVtZW50cywgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHZhciByZWdpb24gPSBnZXRSZWZyZXNoUmVnaW9uKGVsKTtcbiAgICAgICAgaWYgKHJlZ2lvbikge1xuICAgICAgICAgICAgbWluWEFyci5wdXNoKHJlZ2lvbi5taW5YKTtcbiAgICAgICAgICAgIG1pbllBcnIucHVzaChyZWdpb24ubWluWSk7XG4gICAgICAgICAgICBtYXhYQXJyLnB1c2gocmVnaW9uLm1heFgpO1xuICAgICAgICAgICAgbWF4WUFyci5wdXNoKHJlZ2lvbi5tYXhZKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IG1pbihtaW5YQXJyKSxcbiAgICAgICAgbWluWTogbWluKG1pbllBcnIpLFxuICAgICAgICBtYXhYOiBtYXgobWF4WEFyciksXG4gICAgICAgIG1heFk6IG1heChtYXhZQXJyKSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlVmlldyhyZWdpb24sIHZpZXdSZWdpb24pIHtcbiAgICBpZiAoIXJlZ2lvbiB8fCAhdmlld1JlZ2lvbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8g5LiN55u45Lqk77yM5YiZ55u05o6l6L+U5ZueIG51bGxcbiAgICBpZiAoIWludGVyc2VjdFJlY3QocmVnaW9uLCB2aWV3UmVnaW9uKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluWDogTWF0aC5tYXgocmVnaW9uLm1pblgsIHZpZXdSZWdpb24ubWluWCksXG4gICAgICAgIG1pblk6IE1hdGgubWF4KHJlZ2lvbi5taW5ZLCB2aWV3UmVnaW9uLm1pblkpLFxuICAgICAgICBtYXhYOiBNYXRoLm1pbihyZWdpb24ubWF4WCwgdmlld1JlZ2lvbi5tYXhYKSxcbiAgICAgICAgbWF4WTogTWF0aC5taW4ocmVnaW9uLm1heFksIHZpZXdSZWdpb24ubWF4WSksXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRyYXcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/draw.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/hit.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/hit.js ***!
\*****************************************************/
/*! exports provided: getShape */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShape\", function() { return getShape; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n\nfunction invertFromMatrix(v, matrix) {\n if (matrix) {\n var invertMatrix = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(matrix);\n return Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"multiplyVec2\"])(invertMatrix, v);\n }\n return v;\n}\nfunction getRefXY(element, x, y) {\n // @ts-ignore\n var totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n var _a = invertFromMatrix([x, y, 1], totalMatrix), refX = _a[0], refY = _a[1];\n return [refX, refY];\n }\n return [x, y];\n}\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element, x, y) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"isAllowCapture\"])(element) || element.cfg.isInView === false) {\n return false;\n }\n if (element.cfg.clipShape) {\n // 如果存在 clip\n var _a = getRefXY(element, x, y), refX = _a[0], refY = _a[1];\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n var bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n// 这个方法复写了 g-base 的 getShape\nfunction getShape(container, x, y) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n var shape = null;\n var children = container.getChildren();\n var count = children.length;\n for (var i = count - 1; i >= 0; i--) {\n var child = children[i];\n if (child.isGroup()) {\n shape = getShape(child, x, y);\n }\n else if (preTest(child, x, y)) {\n var curShape = child;\n var _a = getRefXY(child, x, y), refX = _a[0], refY = _a[1];\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}\n//# sourceMappingURL=hit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaGl0LmpzPzk5MmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ3BFO0FBQ0E7QUFDQSwyQkFBMkIsMkRBQU07QUFDakMsZUFBZSxpRUFBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxtRUFBYztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC9oaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0FsbG93Q2FwdHVyZSwgbXVsdGlwbHlWZWMyLCBpbnZlcnQgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuZnVuY3Rpb24gaW52ZXJ0RnJvbU1hdHJpeCh2LCBtYXRyaXgpIHtcbiAgICBpZiAobWF0cml4KSB7XG4gICAgICAgIHZhciBpbnZlcnRNYXRyaXggPSBpbnZlcnQobWF0cml4KTtcbiAgICAgICAgcmV0dXJuIG11bHRpcGx5VmVjMihpbnZlcnRNYXRyaXgsIHYpO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIGdldFJlZlhZKGVsZW1lbnQsIHgsIHkpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIHRvdGFsTWF0cml4ID0gZWxlbWVudC5nZXRUb3RhbE1hdHJpeCgpO1xuICAgIGlmICh0b3RhbE1hdHJpeCkge1xuICAgICAgICB2YXIgX2EgPSBpbnZlcnRGcm9tTWF0cml4KFt4LCB5LCAxXSwgdG90YWxNYXRyaXgpLCByZWZYID0gX2FbMF0sIHJlZlkgPSBfYVsxXTtcbiAgICAgICAgcmV0dXJuIFtyZWZYLCByZWZZXTtcbiAgICB9XG4gICAgcmV0dXJuIFt4LCB5XTtcbn1cbi8vIOaLvuWPluWJjeeahOajgOa1i++8jOWPquaciemAmui/h+ajgOa1i+aJjeiDvee7p+e7reaLvuWPllxuZnVuY3Rpb24gcHJlVGVzdChlbGVtZW50LCB4LCB5KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChlbGVtZW50LmlzQ2FudmFzICYmIGVsZW1lbnQuaXNDYW52YXMoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8g5LiN5YWB6K646KKr5ou+5Y+W77yM5YiZ6L+U5ZueIG51bGxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFpc0FsbG93Q2FwdHVyZShlbGVtZW50KSB8fCBlbGVtZW50LmNmZy5pc0luVmlldyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5jZmcuY2xpcFNoYXBlKSB7XG4gICAgICAgIC8vIOWmguaenOWtmOWcqCBjbGlwXG4gICAgICAgIHZhciBfYSA9IGdldFJlZlhZKGVsZW1lbnQsIHgsIHkpLCByZWZYID0gX2FbMF0sIHJlZlkgPSBfYVsxXTtcbiAgICAgICAgaWYgKGVsZW1lbnQuaXNDbGlwcGVkKHJlZlgsIHJlZlkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZSDvvIzov5nkuKrlnLDmlrnosIPnlKjov4fkuo7popHnuYFcbiAgICB2YXIgYmJveCA9IGVsZW1lbnQuY2ZnLmNhY2hlQ2FudmFzQkJveCB8fCBlbGVtZW50LmdldENhbnZhc0JCb3goKTtcbiAgICAvLyDlpoLmnpzmsqHmnInnvJPlrZggYmJveO+8jOWImeivtOaYjuS4jeWPr+ingVxuICAgIC8vIOazqOmHiuaOieeahOi/meauteWPr+iDveS8muWKoOmAn+aLvuWPlu+8jOS4iumdoueahOivreWPpeaUueWGmeaIkCBjb25zdCBiYm94ID0gZWxlbWVudC5jZmcuY2FjaGVDYW52YXNCQm94O1xuICAgIC8vIOi/meaXtuWAmeeahOaLvuWPluWBh+iuvuWbvuW9oi/liIbnu4TlnKjkuIrkuIDmrKHnu5jliLbpg73lnKjop4bnqpflhoXvvIzkvYbmmK/kuIrpnaLlt7Lnu4/liKTlrprkuoYgaXNJblZpZXcg5omA5Lul5oSP5LmJ5LiN5aSnXG4gICAgLy8g546w5Zyo6L+Y6LCD55SoIGVsZW1lbnQuZ2V0Q2FudmFzQkJveCgpOyDkuIDkuKrlvojlpKfnmoTljp/lm6DmmK/kvr/kuo7ljZXlhYPmtYvor5VcbiAgICAvLyBpZiAoIWJib3gpIHtcbiAgICAvLyAgIHJldHVybiBmYWxzZTtcbiAgICAvLyB9XG4gICAgaWYgKCEoeCA+PSBiYm94Lm1pblggJiYgeCA8PSBiYm94Lm1heFggJiYgeSA+PSBiYm94Lm1pblkgJiYgeSA8PSBiYm94Lm1heFkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyDov5nkuKrmlrnms5XlpI3lhpnkuoYgZy1iYXNlIOeahCBnZXRTaGFwZVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXBlKGNvbnRhaW5lciwgeCwgeSkge1xuICAgIC8vIOayoeaciemAmui/h+ajgOa1i++8jOWImei/lOWbniBudWxsXG4gICAgaWYgKCFwcmVUZXN0KGNvbnRhaW5lciwgeCwgeSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzaGFwZSA9IG51bGw7XG4gICAgdmFyIGNoaWxkcmVuID0gY29udGFpbmVyLmdldENoaWxkcmVuKCk7XG4gICAgdmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSBjb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICBzaGFwZSA9IGdldFNoYXBlKGNoaWxkLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVUZXN0KGNoaWxkLCB4LCB5KSkge1xuICAgICAgICAgICAgdmFyIGN1clNoYXBlID0gY2hpbGQ7XG4gICAgICAgICAgICB2YXIgX2EgPSBnZXRSZWZYWShjaGlsZCwgeCwgeSksIHJlZlggPSBfYVswXSwgcmVmWSA9IF9hWzFdO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKGN1clNoYXBlLmlzSW5TaGFwZShyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgICAgIHNoYXBlID0gY2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2hhcGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oaXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/hit.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js":
/*!***********************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isPointInPath; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n\nfunction isPointInPath(shape, x, y) {\n var ctx = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"getOffScreenContext\"])();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n//# sourceMappingURL=point-in-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoLmpzPzg5YzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1EO0FBQ3BDO0FBQ2YsY0FBYyx3RUFBbUI7QUFDakM7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0T2ZmU2NyZWVuQ29udGV4dCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1BvaW50SW5QYXRoKHNoYXBlLCB4LCB5KSB7XG4gICAgdmFyIGN0eCA9IGdldE9mZlNjcmVlbkNvbnRleHQoKTtcbiAgICBzaGFwZS5jcmVhdGVQYXRoKGN0eCk7XG4gICAgcmV0dXJuIGN0eC5pc1BvaW50SW5QYXRoKHgsIHkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9pbnQtaW4tcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isInPolygon; });\n/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1])
0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2x5Z29uLmpzPzI4YzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1wYXRoL3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5Yik5pat54K55piv5ZCm5Zyo5aSa6L655b2i5YaFXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuLy8g5aSa6L655b2i55qE5bCE57q/5qOA5rWL77yM5Y+C6ICD77yaaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dpbGxpYW1TdW4wMTIyL2FydGljbGUvZGV0YWlscy83Nzk5NDUyNlxudmFyIHRvbGVyYW5jZSA9IDFlLTY7XG4vLyDkuInmgIHlh73mlbDvvIzliKTmlq3kuKTkuKpkb3VibGXlnKhlcHPnsr7luqbkuIvnmoTlpKflsI/lhbPns7tcbmZ1bmN0aW9uIGRjbXAoeCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IHRvbGVyYW5jZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuLy8g5Yik5pat54K5UeaYr+WQpuWcqHAx5ZKMcDLnmoTnur/mrrXkuIpcbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgICBpZiAoKHFbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgPT09IChwMlswXSAtIHAxWzBdKSAqIChxWzFdIC0gcDFbMV0pICYmXG4gICAgICAgIE1hdGgubWluKHAxWzBdLCBwMlswXSkgPD0gcVswXSAmJlxuICAgICAgICBxWzBdIDw9IE1hdGgubWF4KHAxWzBdLCBwMlswXSkgJiZcbiAgICAgICAgTWF0aC5taW4ocDFbMV0sIHAyWzFdKSA8PSBxWzFdICYmXG4gICAgICAgIHFbMV0gPD0gTWF0aC5tYXgocDFbMV0sIHAyWzFdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8g5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5VcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIHZhciBuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBpZiAobiA8PSAyKSB7XG4gICAgICAgIC8vIHN2ZyDkuK3ngrnlsI/kuo4gMyDkuKrml7bvvIzkuI3mmL7npLrvvIzkuZ/ml6Dms5Xooqvmi77lj5ZcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YXIgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG4gICAgICAgIGlmIChvblNlZ21lbnQocDEsIHAyLCBbeCwgeV0pKSB7XG4gICAgICAgICAgICAvLyDngrnlnKjlpJrovrnlvaLkuIDmnaHovrnkuIpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgICAgIC8vIOWQjuS4gOS4quWIpOaWreiiq+a1i+eCuSDlnKgg5bCE57q/5LiO6L655Lqk54K5IOeahOW3pui+uVxuICAgICAgICBpZiAoZGNtcChwMVsxXSAtIHkpID4gMCAhPT0gZGNtcChwMlsxXSAtIHkpID4gMCAmJlxuICAgICAgICAgICAgZGNtcCh4IC0gKCh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pKSAvIChwMVsxXSAtIHAyWzFdKSAtIHAxWzBdKSA8IDApIHtcbiAgICAgICAgICAgIGlzSGl0ID0gIWlzSGl0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc0hpdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js ***!
\***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return arc; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\nfunction arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL2FyYy5qcz85NWRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNwQjtBQUNmLDJFQUEyRTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsc0RBQVE7QUFDbkI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvYXJjLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFyYyhjeCwgY3ksIHIsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgYW5nbGUgPSAoTWF0aC5hdGFuMih5IC0gY3ksIHggLSBjeCkgKyBNYXRoLlBJICogMikgJSAoTWF0aC5QSSAqIDIpOyAvLyDovazmjaLliLAgMCAtIDIgKiBNYXRoLlBJIOS5i+mXtFxuICAgIGlmIChhbmdsZSA8IHN0YXJ0QW5nbGUgfHwgYW5nbGUgPiBlbmRBbmdsZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBwb2ludCA9IHtcbiAgICAgICAgeDogY3ggKyByICogTWF0aC5jb3MoYW5nbGUpLFxuICAgICAgICB5OiBjeSArIHIgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgfTtcbiAgICByZXR1cm4gZGlzdGFuY2UocG9pbnQueCwgcG9pbnQueSwgeCwgeSkgPD0gbGluZVdpZHRoIC8gMjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inLine; });\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n\nfunction inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"].pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL2xpbmUuanM/M2ZhMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBZ0Q7QUFDakM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBUTtBQUNuQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9saW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZSBhcyBMaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbkxpbmUoeDEsIHkxLCB4MiwgeTIsIGxpbmVXaWR0aCwgeCwgeSkge1xuICAgIHZhciBtaW5YID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgICB2YXIgbWF4WCA9IE1hdGgubWF4KHgxLCB4Mik7XG4gICAgdmFyIG1pblkgPSBNYXRoLm1pbih5MSwgeTIpO1xuICAgIHZhciBtYXhZID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAvLyDlm6DkuLrnm67liY3nmoTmlrnmoYjmmK/orqHnrpfngrnliLDnm7Tnur/nmoTot53nprvvvIzogIzmnInlj6/og73kvJrlnKjlu7bplb/nur/kuIrvvIzmiYDku6XopoHlhYjliKTmlq3mmK/lkKblnKjljIXlm7Tnm5LlhoVcbiAgICAvLyDov5nnp43mlrnmoYjkvJrlnKjmsLTlubPmiJbogIXnq5bnm7TnmoTmg4XlhrXkuIvovb3nur/nmoTlu7bplb/nur/kuIrmnInljYogbGluZVdpZHRoIOeahOivr+W3rlxuICAgIGlmICghKHggPj0gbWluWCAtIGhhbGZXaWR0aCAmJiB4IDw9IG1heFggKyBoYWxmV2lkdGggJiYgeSA+PSBtaW5ZIC0gaGFsZldpZHRoICYmIHkgPD0gbWF4WSArIGhhbGZXaWR0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyDlm6DkuLrlt7Lnu4/orqHnrpfkuobljIXlm7Tnm5LvvIzmiYDku6Xku4XpnIDopoHorqHnrpfliLDnm7Tnur/nmoTot53nprvljbPlj6/vvIzlj6/ku6XmmL7okZfmj5DljYfmgKfog71cbiAgICByZXR1cm4gTGluZVV0aWwucG9pbnRUb0xpbmUoeDEsIHkxLCB4MiwgeTIsIHgsIHkpIDw9IGxpbmVXaWR0aCAvIDI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js":
/*!********************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js ***!
\********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inPolyline; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n\nfunction inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3BvbHlsaW5lLmpzPzlmZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTRCO0FBQ2I7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscURBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbkxpbmUgZnJvbSAnLi9saW5lJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluUG9seWxpbmUocG9pbnRzLCBsaW5lV2lkdGgsIHgsIHksIGlzQ2xvc2UpIHtcbiAgICB2YXIgY291bnQgPSBwb2ludHMubGVuZ3RoO1xuICAgIGlmIChjb3VudCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciB4MSA9IHBvaW50c1tpXVswXTtcbiAgICAgICAgdmFyIHkxID0gcG9pbnRzW2ldWzFdO1xuICAgICAgICB2YXIgeDIgPSBwb2ludHNbaSArIDFdWzBdO1xuICAgICAgICB2YXIgeTIgPSBwb2ludHNbaSArIDFdWzFdO1xuICAgICAgICBpZiAoaW5MaW5lKHgxLCB5MSwgeDIsIHkyLCBsaW5lV2lkdGgsIHgsIHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDlpoLmnpzlsIHpl63vvIzliJnorqHnrpfotbflp4vngrnlkoznu5PmnZ/ngrnnmoTovrlcbiAgICBpZiAoaXNDbG9zZSkge1xuICAgICAgICB2YXIgZmlyc3QgPSBwb2ludHNbMF07XG4gICAgICAgIHZhciBsYXN0ID0gcG9pbnRzW2NvdW50IC0gMV07XG4gICAgICAgIGlmIChpbkxpbmUoZmlyc3RbMF0sIGZpcnN0WzFdLCBsYXN0WzBdLCBsYXN0WzFdLCBsaW5lV2lkdGgsIHgsIHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js":
/*!***********************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rectWithRadius; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arc */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n\nfunction rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n return (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y));\n}\n//# sourceMappingURL=rect-radius.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3JlY3QtcmFkaXVzLmpzPzRiMDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDRjtBQUNYO0FBQ2Y7QUFDQSxZQUFZLHFEQUFNO0FBQ2xCLFFBQVEscURBQU07QUFDZCxRQUFRLHFEQUFNO0FBQ2QsUUFBUSxxREFBTTtBQUNkLFFBQVEsb0RBQUs7QUFDYixRQUFRLG9EQUFLO0FBQ2IsUUFBUSxvREFBSztBQUNiLFFBQVEsb0RBQUs7QUFDYjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9yZWN0LXJhZGl1cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbkxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBpbkFyYyBmcm9tICcuL2FyYyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0V2l0aFJhZGl1cyhtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMsIGxpbmVXaWR0aCwgeCwgeSkge1xuICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgIHJldHVybiAoaW5MaW5lKG1pblggKyByYWRpdXMsIG1pblksIG1pblggKyB3aWR0aCAtIHJhZGl1cywgbWluWSwgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkxpbmUobWluWCArIHdpZHRoLCBtaW5ZICsgcmFkaXVzLCBtaW5YICsgd2lkdGgsIG1pblkgKyBoZWlnaHQgLSByYWRpdXMsIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5MaW5lKG1pblggKyB3aWR0aCAtIHJhZGl1cywgbWluWSArIGhlaWdodCwgbWluWCArIHJhZGl1cywgbWluWSArIGhlaWdodCwgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkxpbmUobWluWCwgbWluWSArIGhlaWdodCAtIHJhZGl1cywgbWluWCwgbWluWSArIHJhZGl1cywgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkFyYyhtaW5YICsgd2lkdGggLSByYWRpdXMsIG1pblkgKyByYWRpdXMsIHJhZGl1cywgMS41ICogTWF0aC5QSSwgMiAqIE1hdGguUEksIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5BcmMobWluWCArIHdpZHRoIC0gcmFkaXVzLCBtaW5ZICsgaGVpZ2h0IC0gcmFkaXVzLCByYWRpdXMsIDAsIDAuNSAqIE1hdGguUEksIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5BcmMobWluWCArIHJhZGl1cywgbWluWSArIGhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLjUgKiBNYXRoLlBJLCBNYXRoLlBJLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluQXJjKG1pblggKyByYWRpdXMsIG1pblkgKyByYWRpdXMsIHJhZGl1cywgTWF0aC5QSSwgMS41ICogTWF0aC5QSSwgbGluZVdpZHRoLCB4LCB5KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LXJhZGl1cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inRect; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\nfunction inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)); // 左边\n}\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3JlY3QuanM/ZDY5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBZ0M7QUFDakI7QUFDZjtBQUNBO0FBQ0EsWUFBWSxtREFBSztBQUNqQixRQUFRLG1EQUFLO0FBQ2IsUUFBUSxtREFBSztBQUNiLFFBQVEsbURBQUssK0RBQStEO0FBQzVFO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbkJveCB9IGZyb20gJy4uL3V0aWwnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5SZWN0KG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIGxpbmVXaWR0aCwgeCwgeSkge1xuICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgIC8vIOWwhuWbm+S4qui+ueeci+WBmuefqeW9ouadpeajgOa1i++8jOavlOi+ueeahOajgOa1i+eul+azleimgeW/q1xuICAgIHJldHVybiAoaW5Cb3gobWluWCAtIGhhbGZXaWR0aCwgbWluWSAtIGhhbGZXaWR0aCwgd2lkdGgsIGxpbmVXaWR0aCwgeCwgeSkgfHwgLy8g5LiK6L65XG4gICAgICAgIGluQm94KG1pblggKyB3aWR0aCAtIGhhbGZXaWR0aCwgbWluWSAtIGhhbGZXaWR0aCwgbGluZVdpZHRoLCBoZWlnaHQsIHgsIHkpIHx8IC8vIOWPs+i+uVxuICAgICAgICBpbkJveChtaW5YICsgaGFsZldpZHRoLCBtaW5ZICsgaGVpZ2h0IC0gaGFsZldpZHRoLCB3aWR0aCwgbGluZVdpZHRoLCB4LCB5KSB8fCAvLyDkuIvovrlcbiAgICAgICAgaW5Cb3gobWluWCAtIGhhbGZXaWR0aCwgbWluWSArIGhhbGZXaWR0aCwgbGluZVdpZHRoLCBoZWlnaHQsIHgsIHkpKTsgLy8g5bem6L65XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/parse.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/parse.js ***!
\*******************************************************/
/*! exports provided: parseLineGradient, parseRadialGradient, parsePattern, parseStyle, parseRadius */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLineGradient\", function() { return parseLineGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadialGradient\", function() { return parseRadialGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePattern\", function() { return parsePattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseStyle\", function() { return parseStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction addStop(steps, gradient) {\n var arr = steps.match(regexColorStop);\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n var itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseLineGradient(context, element, gradientStr) {\n var arr = regexLG.exec(gradientStr);\n var angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n var steps = arr[2];\n var box = element.getBBox();\n var start;\n var end;\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n }\n else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n }\n else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n }\n else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n var gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseRadialGradient(context, element, gradientStr) {\n var arr = regexRG.exec(gradientStr);\n var fx = parseFloat(arr[1]);\n var fy = parseFloat(arr[2]);\n var fr = parseFloat(arr[3]);\n var steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n var colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n var box = element.getBBox();\n var width = box.maxX - box.minX;\n var height = box.maxY - box.minY;\n var r = Math.sqrt(width * width + height * height) / 2;\n var gradient = context.createRadialGradient(box.minX + width * fx, box.minY + height * fy, 0, box.minX + width / 2, box.minY + height / 2, fr * r);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nfunction parsePattern(context, element, patternStr) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n var pattern;\n var img;\n var arr = regexPR.exec(patternStr);\n var repeat = arr[1];\n var source = arr[2];\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return pattern;\n}\nfunction parseStyle(context, element, color) {\n var bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvcGFyc2UuanM/YWY0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGtEQUFJO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQyxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsSUFBSTtBQUNqQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxJQUFJO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEMsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL3BhcnNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcsIGVhY2gsIGlzQXJyYXkgfSBmcm9tICcuL3V0aWwnO1xudmFyIHJlZ2V4TEcgPSAvXmxcXHMqXFwoXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4UkcgPSAvXnJcXHMqXFwoXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4UFIgPSAvXnBcXHMqXFwoXFxzKihbYXh5bl0pXFxzKlxcKVxccyooLiopL2k7XG52YXIgcmVnZXhDb2xvclN0b3AgPSAvW1xcZC5dKzooI1teXFxzXSt8W15cXCldK1xcKSkvZ2k7XG5mdW5jdGlvbiBhZGRTdG9wKHN0ZXBzLCBncmFkaWVudCkge1xuICAgIHZhciBhcnIgPSBzdGVwcy5tYXRjaChyZWdleENvbG9yU3RvcCk7XG4gICAgZWFjaChhcnIsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHZhciBpdGVtQXJyID0gaXRlbS5zcGxpdCgnOicpO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoaXRlbUFyclswXSwgaXRlbUFyclsxXSk7XG4gICAgfSk7XG59XG4vKipcbiAqIOWwhui+ueWSjOWhq+WFheiuvue9rueahOminOiJsui9rOaNouaIkOe6v+aAp+a4kOWPmOWvueixoVxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY2FudmFzIOS4iuS4i+aWh1xuICogQHBhcmFtIHtJRWxlbWVudH0gICAgICAgICAgICAgICAgIGVsZW1lbnQgIOWbvuW9ouWFg+e0oFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgIGdyYWRpZW50U3RyICAg6aKc6ImyXG4gKiBAcmV0dXJucyB7YW55fSDmuJDlj5jlr7nosaFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGluZUdyYWRpZW50KGNvbnRleHQsIGVsZW1lbnQsIGdyYWRpZW50U3RyKSB7XG4gICAgdmFyIGFyciA9IHJlZ2V4TEcuZXhlYyhncmFkaWVudFN0cik7XG4gICAgdmFyIGFuZ2xlID0gKHBhcnNlRmxvYXQoYXJyWzFdKSAlIDM2MCkgKiAoTWF0aC5QSSAvIDE4MCk7XG4gICAgdmFyIHN0ZXBzID0gYXJyWzJdO1xuICAgIHZhciBib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIGVuZDtcbiAgICBpZiAoYW5nbGUgPj0gMCAmJiBhbmdsZSA8ICgxIC8gMikgKiBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKDEgLyAyKSAqIE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoTWF0aC5QSSA8PSBhbmdsZSAmJiBhbmdsZSA8ICgzIC8gMikgKiBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHRhblRoZXRhID0gTWF0aC50YW4oYW5nbGUpO1xuICAgIHZhciB0YW5UaGV0YTIgPSB0YW5UaGV0YSAqIHRhblRoZXRhO1xuICAgIHZhciB4ID0gKGVuZC54IC0gc3RhcnQueCArIHRhblRoZXRhICogKGVuZC55IC0gc3RhcnQueSkpIC8gKHRhblRoZXRhMiArIDEpICsgc3RhcnQueDtcbiAgICB2YXIgeSA9ICh0YW5UaGV0YSAqIChlbmQueCAtIHN0YXJ0LnggKyB0YW5UaGV0YSAqIChlbmQueSAtIHN0YXJ0LnkpKSkgLyAodGFuVGhldGEyICsgMSkgKyBzdGFydC55O1xuICAgIHZhciBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc3RhcnQueCwgc3RhcnQueSwgeCwgeSk7XG4gICAgYWRkU3RvcChzdGVwcywgZ3JhZGllbnQpO1xuICAgIHJldHVybiBncmFkaWVudDtcbn1cbi8qKlxuICog5bCG6L655ZKM5aGr5YWF6K6+572u55qE6aKc6Imy6L2s5o2i5oiQ5ZyG5b2i5riQ5Y+Y5a+56LGhXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCBjYW52YXMg5LiK5LiL5paHXG4gKiBAcGFyYW0ge0lFbGVtZW50fSAgICAgICAgICAgICAgICAgZWxlbWVudCAg5Zu+5b2i5YWD57SgXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICAgICAgICAgICAgZ3JhZGllbnRTdHIgICDpopzoibJcbiAqIEByZXR1cm5zIHthbnl9IOa4kOWPmOWvueixoVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSYWRpYWxHcmFkaWVudChjb250ZXh0LCBlbGVtZW50LCBncmFkaWVudFN0cikge1xuICAgIHZhciBhcnIgPSByZWdleFJHLmV4ZWMoZ3JhZGllbnRTdHIpO1xuICAgIHZhciBmeCA9IHBhcnNlRmxvYXQoYXJyWzFdKTtcbiAgICB2YXIgZnkgPSBwYXJzZUZsb2F0KGFyclsyXSk7XG4gICAgdmFyIGZyID0gcGFyc2VGbG9hdChhcnJbM10pO1xuICAgIHZhciBzdGVwcyA9IGFycls0XTtcbiAgICAvLyDnjq/ljYrlvoTkuLow5pe277yM6buY6K6k5peg5riQ5Y+Y77yM5Y+W5riQ5Y+Y5bqP5YiX55qE5pyA5ZCO5LiA5Liq6aKc6ImyXG4gICAgaWYgKGZyID09PSAwKSB7XG4gICAgICAgIHZhciBjb2xvcnMgPSBzdGVwcy5tYXRjaChyZWdleENvbG9yU3RvcCk7XG4gICAgICAgIHJldHVybiBjb2xvcnNbY29sb3JzLmxlbmd0aCAtIDFdLnNwbGl0KCc6JylbMV07XG4gICAgfVxuICAgIHZhciBib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICB2YXIgd2lkdGggPSBib3gubWF4WCAtIGJveC5taW5YO1xuICAgIHZhciBoZWlnaHQgPSBib3gubWF4WSAtIGJveC5taW5ZO1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHdpZHRoICogd2lkdGggKyBoZWlnaHQgKiBoZWlnaHQpIC8gMjtcbiAgICB2YXIgZ3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KGJveC5taW5YICsgd2lkdGggKiBmeCwgYm94Lm1pblkgKyBoZWlnaHQgKiBmeSwgMCwgYm94Lm1pblggKyB3aWR0aCAvIDIsIGJveC5taW5ZICsgaGVpZ2h0IC8gMiwgZnIgKiByKTtcbiAgICBhZGRTdG9wKHN0ZXBzLCBncmFkaWVudCk7XG4gICAgcmV0dXJuIGdyYWRpZW50O1xufVxuLyoqXG4gKiDovrnlkozloavlhYXorr7nva7nmoTpopzoibLovazmjaLmiJAgcGF0dGVyblxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY2FudmFzIOS4iuS4i+aWh1xuICogQHBhcmFtIHtJRWxlbWVudH0gICAgICAgICAgICAgICAgIGVsZW1lbnQgIOWbvuW9ouWFg+e0oFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdHIgICDnlJ/miJAgcGF0dGVybiDnmoTlrZfnrKbkuLJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0dGVybihjb250ZXh0LCBlbGVtZW50LCBwYXR0ZXJuU3RyKSB7XG4gICAgLy8g5Zyo6L2s5o2i6L+H56iL5Lit6L+b6KGM5LqG57yT5a2YXG4gICAgaWYgKGVsZW1lbnQuZ2V0KCdwYXR0ZXJuU291cmNlJykgJiYgZWxlbWVudC5nZXQoJ3BhdHRlcm5Tb3VyY2UnKSA9PT0gcGF0dGVyblN0cikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ3BhdHRlcm4nKTtcbiAgICB9XG4gICAgdmFyIHBhdHRlcm47XG4gICAgdmFyIGltZztcbiAgICB2YXIgYXJyID0gcmVnZXhQUi5leGVjKHBhdHRlcm5TdHIpO1xuICAgIHZhciByZXBlYXQgPSBhcnJbMV07XG4gICAgdmFyIHNvdXJjZSA9IGFyclsyXTtcbiAgICAvLyBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBwYXR0ZXJuIGxvYWRzXG4gICAgZnVuY3Rpb24gb25sb2FkKCkge1xuICAgICAgICAvLyBDcmVhdGUgcGF0dGVyblxuICAgICAgICBwYXR0ZXJuID0gY29udGV4dC5jcmVhdGVQYXR0ZXJuKGltZywgcmVwZWF0KTtcbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhdHRlcm4nLCBwYXR0ZXJuKTsgLy8gYmUgYSBjYWNoZVxuICAgICAgICBlbGVtZW50LnNldCgncGF0dGVyblNvdXJjZScsIHBhdHRlcm5TdHIpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHJlcGVhdCkge1xuICAgICAgICBjYXNlICdhJzpcbiAgICAgICAgICAgIHJlcGVhdCA9ICdyZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgcmVwZWF0ID0gJ3JlcGVhdC14JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIHJlcGVhdCA9ICdyZXBlYXQteSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICByZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgfVxuICAgIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIC8vIElmIHNvdXJjZSBVUkwgaXMgbm90IGEgZGF0YSBVUkxcbiAgICBpZiAoIXNvdXJjZS5tYXRjaCgvXmRhdGE6L2kpKSB7XG4gICAgICAgIC8vIFNldCBjcm9zc09yaWdpbiBmb3IgdGhpcyBpbWFnZVxuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICB9XG4gICAgaW1nLnNyYyA9IHNvdXJjZTtcbiAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XG4gICAgICAgIG9ubG9hZCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaW1nLm9ubG9hZCA9IG9ubG9hZDtcbiAgICAgICAgLy8gRml4IG9ubG9hZCgpIGJ1ZyBpbiBJRTlcbiAgICAgICAgaW1nLnNyYyA9IGltZy5zcmM7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3R5bGUoY29udGV4dCwgZWxlbWVudCwgY29sb3IpIHtcbiAgICB2YXIgYmJveCA9IGVsZW1lbnQuZ2V0QkJveCgpO1xuICAgIGlmIChpc05hTihiYm94LngpIHx8IGlzTmFOKGJib3gueSkgfHwgaXNOYU4oYmJveC53aWR0aCkgfHwgaXNOYU4oYmJveC5oZWlnaHQpKSB7XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKGNvbG9yKSkge1xuICAgICAgICBpZiAoY29sb3JbMV0gPT09ICcoJyB8fCBjb2xvclsyXSA9PT0gJygnKSB7XG4gICAgICAgICAgICBpZiAoY29sb3JbMF0gPT09ICdsJykge1xuICAgICAgICAgICAgICAgIC8vIHJlZ2V4TEcudGVzdChjb2xvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VMaW5lR3JhZGllbnQoY29udGV4dCwgZWxlbWVudCwgY29sb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAncicpIHtcbiAgICAgICAgICAgICAgICAvLyByZWdleFJHLnRlc3QoY29sb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmFkaWFsR3JhZGllbnQoY29udGV4dCwgZWxlbWVudCwgY29sb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAncCcpIHtcbiAgICAgICAgICAgICAgICAvLyByZWdleFBSLnRlc3QoY29sb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlUGF0dGVybihjb250ZXh0LCBlbGVtZW50LCBjb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICBpZiAoY29sb3IgaW5zdGFuY2VvZiBDYW52YXNQYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSYWRpdXMocmFkaXVzKSB7XG4gICAgdmFyIHIxID0gMDtcbiAgICB2YXIgcjIgPSAwO1xuICAgIHZhciByMyA9IDA7XG4gICAgdmFyIHI0ID0gMDtcbiAgICBpZiAoaXNBcnJheShyYWRpdXMpKSB7XG4gICAgICAgIGlmIChyYWRpdXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1c1swXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICByMSA9IHIzID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByYWRpdXNbMV07XG4gICAgICAgICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgIHI0ID0gcmFkaXVzWzNdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1cztcbiAgICB9XG4gICAgcmV0dXJuIFtyMSwgcjIsIHIzLCByNF07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/parse.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/path.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/path.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _in_stroke_line__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./in-stroke/line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./in-stroke/arc */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__[\"ext\"].transform;\nfunction hasArc(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint, box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"inBox\"])(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = Object(_in_stroke_line__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n var qDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Quad\"].pointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], x, y);\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n var cDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Cubic\"].pointDistance(prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], x, y, length);\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n var arcParams = segment.arcParams;\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation;\n var p = [x, y, 1];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var m = transform(null, [\n ['t', -cx, -cy],\n ['r', -xRotation],\n ['s', 1 / scaleX, 1 / scaleY],\n ]);\n gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__[\"transformMat3\"](p, p, m);\n isHit = Object(_in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n var count = path.length;\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n }\n else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n }\n else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines,\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({ hasArc: hasArc, extractPolygons: extractPolygons, isPointInStroke: isPointInStroke }, _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"PathUtil\"]));\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvcGF0aC5qcz83YzhlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUN3QztBQUNRO0FBQ0U7QUFDVjtBQUNEO0FBQ1I7QUFDTztBQUNGO0FBQ3BDLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtREFBSztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsK0RBQU07QUFDOUI7QUFDQTtBQUNBLGdDQUFnQyxpREFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msa0RBQVM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0REFBa0I7QUFDbEMsd0JBQXdCLDhEQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UscUhBQVEsRUFBRSxxRkFBcUYsRUFBRSxxREFBUSxDQUFDLEVBQUM7QUFDMUgiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgcGF0aCDnmoTkuIDkupvlt6XlhbdcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBQYXRoVXRpbCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBRdWFkIGFzIFF1YWRVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IEN1YmljIGFzIEN1YmljVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgKiBhcyB2ZWMzIGZyb20gJ2dsLW1hdHJpeC92ZWMzJztcbmltcG9ydCB7IGluQm94IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBpbkxpbmUgZnJvbSAnLi9pbi1zdHJva2UvbGluZSc7XG5pbXBvcnQgaW5BcmMgZnJvbSAnLi9pbi1zdHJva2UvYXJjJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xuZnVuY3Rpb24gaGFzQXJjKHBhdGgpIHtcbiAgICB2YXIgaGFzQXJjID0gZmFsc2U7XG4gICAgdmFyIGNvdW50ID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBwYXRoW2ldO1xuICAgICAgICB2YXIgY21kID0gcGFyYW1zWzBdO1xuICAgICAgICBpZiAoY21kID09PSAnQycgfHwgY21kID09PSAnQScgfHwgY21kID09PSAnUScpIHtcbiAgICAgICAgICAgIGhhc0FyYyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzQXJjO1xufVxuZnVuY3Rpb24gaXNQb2ludEluU3Ryb2tlKHNlZ21lbnRzLCBsaW5lV2lkdGgsIHgsIHksIGxlbmd0aCkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZ21lbnQgPSBzZWdtZW50c1tpXTtcbiAgICAgICAgdmFyIGN1cnJlbnRQb2ludCA9IHNlZ21lbnQuY3VycmVudFBvaW50LCBwYXJhbXMgPSBzZWdtZW50LnBhcmFtcywgcHJlUG9pbnQgPSBzZWdtZW50LnByZVBvaW50LCBib3ggPSBzZWdtZW50LmJveDtcbiAgICAgICAgLy8g5aaC5p6c5Zyo5YmN6Z2i5bey57uP55Sf5oiQ6L+H5YyF5Zu055uS77yM55u05o6l5oyJ54Wn5YyF5Zu055uS6K6h566XXG4gICAgICAgIGlmIChib3ggJiYgIWluQm94KGJveC54IC0gaGFsZldpZHRoLCBib3gueSAtIGhhbGZXaWR0aCwgYm94LndpZHRoICsgbGluZVdpZHRoLCBib3guaGVpZ2h0ICsgbGluZVdpZHRoLCB4LCB5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChzZWdtZW50LmNvbW1hbmQpIHtcbiAgICAgICAgICAgIC8vIEwg5ZKMIFog6YO95piv55u057q/77yMIE0g5LiN6L+b6KGM5ou+5Y+WXG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgIGlzSGl0ID0gaW5MaW5lKHByZVBvaW50WzBdLCBwcmVQb2ludFsxXSwgY3VycmVudFBvaW50WzBdLCBjdXJyZW50UG9pbnRbMV0sIGxpbmVXaWR0aCwgeCwgeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICB2YXIgcURpc3RhbmNlID0gUXVhZFV0aWwucG9pbnREaXN0YW5jZShwcmVQb2ludFswXSwgcHJlUG9pbnRbMV0sIHBhcmFtc1sxXSwgcGFyYW1zWzJdLCBwYXJhbXNbM10sIHBhcmFtc1s0XSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBxRGlzdGFuY2UgPD0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIHZhciBjRGlzdGFuY2UgPSBDdWJpY1V0aWwucG9pbnREaXN0YW5jZShwcmVQb2ludFswXSwgLy8g5LiK5LiA5q6157uT5p2f5L2N572uLCDljbMgQyDnmoTotbflp4vngrlcbiAgICAgICAgICAgICAgICBwcmVQb2ludFsxXSwgcGFyYW1zWzFdLCAvLyAnQycg55qE5Y+C5pWw77yMMeOAgTIg5Li656ys5LiA5Liq5o6n5Yi254K577yMM+OAgTQg5Li656ys5LqM5Liq5o6n5Yi254K577yMNeOAgTYg5Li657uT5p2f54K5XG4gICAgICAgICAgICAgICAgcGFyYW1zWzJdLCBwYXJhbXNbM10sIHBhcmFtc1s0XSwgcGFyYW1zWzVdLCBwYXJhbXNbNl0sIHgsIHksIGxlbmd0aCk7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBjRGlzdGFuY2UgPD0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIC8vIOiuoeeul+eCueWIsOakreWchuWchuW8p+eahOi3neemu++8jOaaguaXtuS9v+eUqOi/keS8vOeul+azle+8jOWQjumdouWPr+S7peaUueaIkOWIh+WJsuazleaxguacgOi/kei3neemu1xuICAgICAgICAgICAgICAgIHZhciBhcmNQYXJhbXMgPSBzZWdtZW50LmFyY1BhcmFtcztcbiAgICAgICAgICAgICAgICB2YXIgY3ggPSBhcmNQYXJhbXMuY3gsIGN5ID0gYXJjUGFyYW1zLmN5LCByeCA9IGFyY1BhcmFtcy5yeCwgcnkgPSBhcmNQYXJhbXMucnksIHN0YXJ0QW5nbGUgPSBhcmNQYXJhbXMuc3RhcnRBbmdsZSwgZW5kQW5nbGUgPSBhcmNQYXJhbXMuZW5kQW5nbGUsIHhSb3RhdGlvbiA9IGFyY1BhcmFtcy54Um90YXRpb247XG4gICAgICAgICAgICAgICAgdmFyIHAgPSBbeCwgeSwgMV07XG4gICAgICAgICAgICAgICAgdmFyIHIgPSByeCA+IHJ5ID8gcnggOiByeTtcbiAgICAgICAgICAgICAgICB2YXIgc2NhbGVYID0gcnggPiByeSA/IDEgOiByeCAvIHJ5O1xuICAgICAgICAgICAgICAgIHZhciBzY2FsZVkgPSByeCA+IHJ5ID8gcnkgLyByeCA6IDE7XG4gICAgICAgICAgICAgICAgdmFyIG0gPSB0cmFuc2Zvcm0obnVsbCwgW1xuICAgICAgICAgICAgICAgICAgICBbJ3QnLCAtY3gsIC1jeV0sXG4gICAgICAgICAgICAgICAgICAgIFsncicsIC14Um90YXRpb25dLFxuICAgICAgICAgICAgICAgICAgICBbJ3MnLCAxIC8gc2NhbGVYLCAxIC8gc2NhbGVZXSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDMocCwgcCwgbSk7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpbkFyYygwLCAwLCByLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgbGluZVdpZHRoLCBwWzBdLCBwWzFdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzSGl0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNIaXQ7XG59XG4vKipcbiAqIOaPkOWPluWHuuWGhemDqOeahOmXreWQiOWkmui+ueW9ouWSjOmdnumXreWQiOeahOWkmui+ueW9ou+8jOWBh+iuviBwYXRoIOS4jeWtmOWcqOWchuW8p1xuICogQHBhcmFtIHtBcnJheX0gcGF0aCDot6/lvoRcbiAqIEByZXR1cm5zIHtBcnJheX0g54K555qE6ZuG5ZCIXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RQb2x5Z29ucyhwYXRoKSB7XG4gICAgdmFyIGNvdW50ID0gcGF0aC5sZW5ndGg7XG4gICAgdmFyIHBvbHlnb25zID0gW107XG4gICAgdmFyIHBvbHlsaW5lcyA9IFtdO1xuICAgIHZhciBwb2ludHMgPSBbXTsgLy8g6Ziy5q2i56ys5LiA5Liq5ZG95Luk5LiN5pivICdNJ1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcGFyYW1zID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIGNtZCA9IHBhcmFtc1swXTtcbiAgICAgICAgaWYgKGNtZCA9PT0gJ00nKSB7XG4gICAgICAgICAgICAvLyDpgYfliLAgJ00nIOWIpOWumuaYr+WQpuaYr+aWsOaVsOe7hO+8jOaWsOaVsOe7hOS4reayoeacieeCuVxuICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjngrnvvIzliJnor7TmmI7msqHmnInpgYfliLAgJ1on77yM5byA5aeL5LqG5LiA5Liq5paw55qE5aSa6L655b2iXG4gICAgICAgICAgICAgICAgcG9seWxpbmVzLnB1c2gocG9pbnRzKTtcbiAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTsgLy8g5Yib5bu65paw55qE54K5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb2ludHMucHVzaChbcGFyYW1zWzFdLCBwYXJhbXNbMl1dKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjbWQgPT09ICdaJykge1xuICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyDlrZjlnKjngrlcbiAgICAgICAgICAgICAgICBwb2x5Z29ucy5wdXNoKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgcG9pbnRzID0gW107IC8vIOW8gOWni+aWsOeahOeCuembhuWQiFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5aaC5p6c5LiN5a2Y5Zyo54K577yM5ZCM5pe2ICdaJ++8jOWImeivtOaYjuaYr+mUmeivr++8jOS4jeWkhOeQhlxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3BhcmFtc1sxXSwgcGFyYW1zWzJdXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g6K+05piOIHBvaW50cyDmnKrmlL7lhaUgcG9seWdvbnMg5oiW6ICFIHBvbHlsaW5lXG4gICAgLy8g5LuF5b2T5Y+q5pyJ5LiA5LiqIE3vvIzmsqHmnIkgWiDml7bkvJrlj5HnlJ/ov5nnp43mg4XlhrVcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcG9seWxpbmVzLnB1c2gocG9pbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcG9seWdvbnM6IHBvbHlnb25zLFxuICAgICAgICBwb2x5bGluZXM6IHBvbHlsaW5lcyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgX19hc3NpZ24oeyBoYXNBcmM6IGhhc0FyYywgZXh0cmFjdFBvbHlnb25zOiBleHRyYWN0UG9seWdvbnMsIGlzUG9pbnRJblN0cm9rZTogaXNQb2ludEluU3Ryb2tlIH0sIFBhdGhVdGlsKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-canvas/esm/util/util.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-canvas/esm/util/util.js ***!
\******************************************************/
/*! exports provided: getPixelRatio, distance, inBox, intersectRect, mergeRegion, isSamePoint, isNil, isString, isFunction, isArray, each, toRadian, mod, isNumberEqual, requestAnimationFrame, clearAnimationFrame */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPixelRatio\", function() { return getPixelRatio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inBox\", function() { return inBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRect\", function() { return intersectRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeRegion\", function() { return mergeRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSamePoint\", function() { return isSamePoint; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"requestAnimationFrame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clearAnimationFrame\"]; });\n\nfunction getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nfunction inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nfunction intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n// 合并两个区域\nfunction mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvdXRpbC5qcz83MzI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQjtBQUNPO0FBQ1A7QUFDQTtBQUNtSjtBQUNuSiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldFBpeGVsUmF0aW8oKSB7XG4gICAgcmV0dXJuIHdpbmRvdyA/IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogMTtcbn1cbi8qKlxuICog5Lik54K55LmL6Ze055qE6Led56a7XG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgdmFyIGR4ID0geDEgLSB4MjtcbiAgICB2YXIgZHkgPSB5MSAtIHkyO1xuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuLyoqXG4gKiDmmK/lkKblnKjljIXlm7Tnm5LlhoVcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5YICAg5YyF5Zu055uS5byA5aeL55qE54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5ZICAg5YyF5Zu055uS5byA5aeL55qE54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAg5a695bqmXG4gKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IOmrmOW6plxuICogQHBhcmFtIHtbdHlwZV19IHggICAgICDmo4DmtYvngrnnmoQgeFxuICogQHBhcmFtIHtbdHlwZV19IHkgICAgICDnm5HmtYvngrnnmoQgeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5Cb3gobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgeCwgeSkge1xuICAgIHJldHVybiB4ID49IG1pblggJiYgeCA8PSBtaW5YICsgd2lkdGggJiYgeSA+PSBtaW5ZICYmIHkgPD0gbWluWSArIGhlaWdodDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KGJveDEsIGJveDIpIHtcbiAgICByZXR1cm4gIShib3gyLm1pblggPiBib3gxLm1heFggfHwgYm94Mi5tYXhYIDwgYm94MS5taW5YIHx8IGJveDIubWluWSA+IGJveDEubWF4WSB8fCBib3gyLm1heFkgPCBib3gxLm1pblkpO1xufVxuLy8g5ZCI5bm25Lik5Liq5Yy65Z+fXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZWdpb24ocmVnaW9uMSwgcmVnaW9uMikge1xuICAgIGlmICghcmVnaW9uMSB8fCAhcmVnaW9uMikge1xuICAgICAgICByZXR1cm4gcmVnaW9uMSB8fCByZWdpb24yO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBNYXRoLm1pbihyZWdpb24xLm1pblgsIHJlZ2lvbjIubWluWCksXG4gICAgICAgIG1pblk6IE1hdGgubWluKHJlZ2lvbjEubWluWSwgcmVnaW9uMi5taW5ZKSxcbiAgICAgICAgbWF4WDogTWF0aC5tYXgocmVnaW9uMS5tYXhYLCByZWdpb24yLm1heFgpLFxuICAgICAgICBtYXhZOiBNYXRoLm1heChyZWdpb24xLm1heFksIHJlZ2lvbjIubWF4WSksXG4gICAgfTtcbn1cbi8qKlxuICog5Yik5pat5Lik5Liq54K55piv5ZCm6YeN5ZCI77yM54K55Z2Q5qCH55qE5qC85byP5Li6IFt4LCB5XVxuICogQHBhcmFtIHtBcnJheX0gcG9pbnQxIOesrOS4gOS4queCuVxuICogQHBhcmFtIHtBcnJheX0gcG9pbnQyIOesrOS6jOS4queCuVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lUG9pbnQocG9pbnQxLCBwb2ludDIpIHtcbiAgICByZXR1cm4gcG9pbnQxWzBdID09PSBwb2ludDJbMF0gJiYgcG9pbnQxWzFdID09PSBwb2ludDJbMV07XG59XG5leHBvcnQgeyBpc05pbCwgaXNTdHJpbmcsIGlzRnVuY3Rpb24sIGlzQXJyYXksIGVhY2gsIHRvUmFkaWFuLCBtb2QsIGlzTnVtYmVyRXF1YWwsIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2xlYXJBbmltYXRpb25GcmFtZSwgfSBmcm9tICdAYW50di91dGlsJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/util.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/arc.js":
/*!**********************************************!*\
!*** ./node_modules/@antv/g-math/esm/arc.js ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-math/esm/ellipse.js\");\n\n\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n }\n else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n }\n else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) { },\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0], y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = _ellipse__WEBPACK_IMPORTED_MODULE_1__[\"default\"].nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n }\n else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9hcmMuanM/YmQwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDVDtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msa0JBQWtCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrQkFBa0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGVBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEI7QUFDQSx3RUFBd0UsRUFBRTtBQUMxRTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGdEQUFPO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbURBQUs7QUFDcEIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vYXJjLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UsIHBpTW9kIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJy4vZWxsaXBzZSc7XG4vLyDlgY/lr7zmlbAgeFxuZnVuY3Rpb24gZGVyaXZhdGl2ZVhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpIHtcbiAgICByZXR1cm4gLTEgKiByeCAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgLSByeSAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSk7XG59XG4vLyDlgY/lr7zmlbAgeVxuZnVuY3Rpb24gZGVyaXZhdGl2ZVlBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpIHtcbiAgICByZXR1cm4gLTEgKiByeCAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgKyByeSAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSk7XG59XG4vLyB4IOeahOaegeWAvFxuZnVuY3Rpb24geEV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuKCgtcnkgLyByeCkgKiBNYXRoLnRhbih4Um90YXRpb24pKTtcbn1cbi8vIHkg55qE5p6B5YC8XG5mdW5jdGlvbiB5RXh0cmVtYShyeCwgcnksIHhSb3RhdGlvbikge1xuICAgIHJldHVybiBNYXRoLmF0YW4ocnkgLyAocnggKiBNYXRoLnRhbih4Um90YXRpb24pKSk7XG59XG4vLyDmoLnmja7op5LluqbmsYIgeCDlnZDmoIdcbmZ1bmN0aW9uIHhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBhbmdsZSkge1xuICAgIHJldHVybiByeCAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSkgLSByeSAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgKyBjeDtcbn1cbi8vIOagueaNruinkuW6puaxgiB5IOWdkOagh1xuZnVuY3Rpb24geUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIGFuZ2xlKSB7XG4gICAgcmV0dXJuIHJ4ICogTWF0aC5zaW4oeFJvdGF0aW9uKSAqIE1hdGguY29zKGFuZ2xlKSArIHJ5ICogTWF0aC5jb3MoeFJvdGF0aW9uKSAqIE1hdGguc2luKGFuZ2xlKSArIGN5O1xufVxuLy8g6I635Y+W54K55Zyo5qSt5ZyG5LiK55qE6KeS5bqmXG5mdW5jdGlvbiBnZXRBbmdsZShyeCwgcnksIHgwLCB5MCkge1xuICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoeTAgKiByeCwgeDAgKiByeSk7XG4gICAgLy8g6L2s5o2i5YiwIDAgLSAyUEkg5YaFXG4gICAgcmV0dXJuIChhbmdsZSArIE1hdGguUEkgKiAyKSAlIChNYXRoLlBJICogMik7XG59XG4vLyDmoLnmja7op5Lluqbojrflj5bvvIx4LHlcbmZ1bmN0aW9uIGdldFBvaW50KHJ4LCByeSwgYW5nbGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiByeCAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogcnkgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgfTtcbn1cbi8vIOaXi+i9rFxuZnVuY3Rpb24gcm90YXRlKHgsIHksIGFuZ2xlKSB7XG4gICAgdmFyIGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICB2YXIgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgIHJldHVybiBbeCAqIGNvcyAtIHkgKiBzaW4sIHggKiBzaW4gKyB5ICogY29zXTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDorqHnrpfljIXlm7Tnm5JcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3ggICAgICAgICDlnIblv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeSAgICAgICAgIOWchuW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4ICAgICAgICAgeCDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkgICAgICAgICB5IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4Um90YXRpb24gIOaXi+i9rOinkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEFuZ2xlIOi1t+Wni+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRBbmdsZSAgIOe7k+adn+inkuW6plxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uS5a+56LGhXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcbiAgICAgICAgdmFyIHhEaW0gPSB4RXh0cmVtYShyeCwgcnksIHhSb3RhdGlvbik7XG4gICAgICAgIHZhciBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhYID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgeHMgPSBbc3RhcnRBbmdsZSwgZW5kQW5nbGVdO1xuICAgICAgICBmb3IgKHZhciBpID0gLU1hdGguUEkgKiAyOyBpIDw9IE1hdGguUEkgKiAyOyBpICs9IE1hdGguUEkpIHtcbiAgICAgICAgICAgIHZhciB4QW5nbGUgPSB4RGltICsgaTtcbiAgICAgICAgICAgIGlmIChzdGFydEFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRBbmdsZSA8IHhBbmdsZSAmJiB4QW5nbGUgPCBlbmRBbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICB4cy5wdXNoKHhBbmdsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGVuZEFuZ2xlIDwgeEFuZ2xlICYmIHhBbmdsZSA8IHN0YXJ0QW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeHMucHVzaCh4QW5nbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCB4c1tpXSk7XG4gICAgICAgICAgICBpZiAoeCA8IG1pblgpIHtcbiAgICAgICAgICAgICAgICBtaW5YID0geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh4ID4gbWF4WCkge1xuICAgICAgICAgICAgICAgIG1heFggPSB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciB5RGltID0geUV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pO1xuICAgICAgICB2YXIgbWluWSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHlzID0gW3N0YXJ0QW5nbGUsIGVuZEFuZ2xlXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IC1NYXRoLlBJICogMjsgaSA8PSBNYXRoLlBJICogMjsgaSArPSBNYXRoLlBJKSB7XG4gICAgICAgICAgICB2YXIgeUFuZ2xlID0geURpbSArIGk7XG4gICAgICAgICAgICBpZiAoc3RhcnRBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPCB5QW5nbGUgJiYgeUFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeXMucHVzaCh5QW5nbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbmRBbmdsZSA8IHlBbmdsZSAmJiB5QW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHlzLnB1c2goeUFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHkgPSB5QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgeXNbaV0pO1xuICAgICAgICAgICAgaWYgKHkgPCBtaW5ZKSB7XG4gICAgICAgICAgICAgICAgbWluWSA9IHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeSA+IG1heFkpIHtcbiAgICAgICAgICAgICAgICBtYXhZID0geTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6I635Y+W5ZyG5byn55qE6ZW/5bqm77yM6K6h566X5ZyG5byn6ZW/5bqm5pe25LiN6ICD6JmR5peL6L2s6KeS5bqm77yMXG4gICAgICog5LuF6LefIHJ4LCByeSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUg55u45YWzXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN4ICAgICAgICAg5ZyG5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3kgICAgICAgICDlnIblv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCAgICAgICAgIHgg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5ICAgICAgICAgeSDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geFJvdGF0aW9uICDml4vovazop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRBbmdsZSDotbflp4vop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kQW5nbGUgICDnu5PmnZ/op5LluqZcbiAgICAgKi9cbiAgICBsZW5ndGg6IGZ1bmN0aW9uIChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSkgeyB9LFxuICAgIC8qKlxuICAgICAqIOiOt+WPluaMh+WumueCueWIsOWchuW8p+eahOacgOi/kei3neemu+eahOeCuVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeCAgICAgICAgIOWchuW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN5ICAgICAgICAg5ZyG5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnggICAgICAgICB4IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSAgICAgICAgIHkg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHhSb3RhdGlvbiAg5peL6L2s6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0QW5nbGUg6LW35aeL6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZEFuZ2xlICAg57uT5p2f6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgwICAgICAgICAg5oyH5a6a54K555qEIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTAgICAgICAgICDmjIflrprngrnnmoQgeVxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5Yiw5oyH5a6a54K55pyA6L+R6Led56a755qE54K5XG4gICAgICovXG4gICAgbmVhcmVzdFBvaW50OiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHgwLCB5MCkge1xuICAgICAgICAvLyDlsIbmnIDov5Hot53nprvpl67popjovazmjaLmiJDliLDmpK3lnIbkuK3lv4MgMCwwIOayoeacieaXi+i9rOeahOakreWchumXrumimFxuICAgICAgICB2YXIgcmVsYXRpdmVWZWN0b3IgPSByb3RhdGUoeDAgLSBjeCwgeTAgLSBjeSwgLXhSb3RhdGlvbik7XG4gICAgICAgIHZhciB4MSA9IHJlbGF0aXZlVmVjdG9yWzBdLCB5MSA9IHJlbGF0aXZlVmVjdG9yWzFdO1xuICAgICAgICAvLyDorqHnrpfngrnliLDmpK3lnIbnmoTmnIDov5HnmoTngrlcbiAgICAgICAgdmFyIHJlbGF0aXZlUG9pbnQgPSBlbGxpcHNlLm5lYXJlc3RQb2ludCgwLCAwLCByeCwgcnksIHgxLCB5MSk7XG4gICAgICAgIC8vIOiOt+WPlueCueWcqOakreWchuS4iueahOinkuW6plxuICAgICAgICB2YXIgYW5nbGUgPSBnZXRBbmdsZShyeCwgcnksIHJlbGF0aXZlUG9pbnQueCwgcmVsYXRpdmVQb2ludC55KTtcbiAgICAgICAgLy8g54K55rKh5pyJ5Zyo5ZyG5byn5LiKXG4gICAgICAgIGlmIChhbmdsZSA8IHN0YXJ0QW5nbGUpIHtcbiAgICAgICAgICAgIC8vIOWwj+S6jui1t+Wni+WchuW8p1xuICAgICAgICAgICAgcmVsYXRpdmVQb2ludCA9IGdldFBvaW50KHJ4LCByeSwgc3RhcnRBbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYW5nbGUgPiBlbmRBbmdsZSkge1xuICAgICAgICAgICAgLy8g5aSn5LqO57uT5p2f5ZyG5bynXG4gICAgICAgICAgICByZWxhdGl2ZVBvaW50ID0gZ2V0UG9pbnQocngsIHJ5LCBlbmRBbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5peL6L2s5YiwIHhSb3RhdGlvbiDnmoTop5LluqZcbiAgICAgICAgdmFyIHZlY3RvciA9IHJvdGF0ZShyZWxhdGl2ZVBvaW50LngsIHJlbGF0aXZlUG9pbnQueSwgeFJvdGF0aW9uKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHZlY3RvclswXSArIGN4LFxuICAgICAgICAgICAgeTogdmVjdG9yWzFdICsgY3ksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHgwLCB5MCkge1xuICAgICAgICB2YXIgbmVhcmVzdFBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoY3gsIGN5LCByeCwgcnksIHgwLCB5MCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZShuZWFyZXN0UG9pbnQueCwgbmVhcmVzdFBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICBwb2ludEF0OiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSkgKiB0ICsgc3RhcnRBbmdsZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBhbmdsZSksXG4gICAgICAgICAgICB5OiB5QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgYW5nbGUpLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSkgKiB0ICsgc3RhcnRBbmdsZTtcbiAgICAgICAgdmFyIGR4ID0gZGVyaXZhdGl2ZVhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpO1xuICAgICAgICB2YXIgZHkgPSBkZXJpdmF0aXZlWUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbmdsZSk7XG4gICAgICAgIHJldHVybiBwaU1vZChNYXRoLmF0YW4yKGR5LCBkeCkpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJjLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/arc.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/bezier.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/g-math/esm/bezier.js ***!
\*************************************************/
/*! exports provided: nearestPoint, snapLength */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nearestPoint\", function() { return nearestPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snapLength\", function() { return snapLength; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nfunction nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nfunction snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n//# sourceMappingURL=bezier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9iZXppZXIuanM/ZWI0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNEQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vYmV6aWVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuL3V0aWwnO1xudmFyIEVQU0lMT04gPSAwLjAwMDE7XG4vKipcbiAqIOS9v+eUqOeJm+mhv+WIh+WJsuazleaxguacgOi/keeahOeCuVxuICogQHBhcmFtIHtudW1iZXJbXX0geEFyciAgICAgIOeCueeahCB4IOaVsOe7hFxuICogQHBhcmFtIHtudW1iZXJbXX0geUFyciAgICAgIOeCueeahCB5IOaVsOe7hFxuICogQHBhcmFtIHtudW1iZXJ9ICAgeCAgICAgICAgIOaMh+WumueahOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0gICB5ICAgICAgICAg5oyH5a6a55qE54K5IHlcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRDYWxsYmFjayDlt67lgLzlh73mlbBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lYXJlc3RQb2ludCh4QXJyLCB5QXJyLCB4LCB5LCB0Q2FsbGJhY2ssIGxlbmd0aCkge1xuICAgIHZhciB0O1xuICAgIHZhciBkID0gSW5maW5pdHk7XG4gICAgdmFyIHYwID0gW3gsIHldO1xuICAgIHZhciBzZWdOdW0gPSAyMDtcbiAgICBpZiAobGVuZ3RoICYmIGxlbmd0aCA+IDIwMCkge1xuICAgICAgICBzZWdOdW0gPSBsZW5ndGggLyAxMDtcbiAgICB9XG4gICAgdmFyIGluY3JlYXNlUmF0ZSA9IDEgLyBzZWdOdW07XG4gICAgdmFyIGludGVydmFsID0gaW5jcmVhc2VSYXRlIC8gMTA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gc2VnTnVtOyBpKyspIHtcbiAgICAgICAgdmFyIF90ID0gaSAqIGluY3JlYXNlUmF0ZTtcbiAgICAgICAgdmFyIHYxID0gW3RDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbX3RdKSksIHRDYWxsYmFjay5hcHBseShudWxsLCB5QXJyLmNvbmNhdChbX3RdKSldO1xuICAgICAgICB2YXIgZDEgPSBkaXN0YW5jZSh2MFswXSwgdjBbMV0sIHYxWzBdLCB2MVsxXSk7XG4gICAgICAgIGlmIChkMSA8IGQpIHtcbiAgICAgICAgICAgIHQgPSBfdDtcbiAgICAgICAgICAgIGQgPSBkMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDmj5DliY3nu4jmraJcbiAgICBpZiAodCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeEFyclswXSxcbiAgICAgICAgICAgIHk6IHlBcnJbMF0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICh0ID09PSAxKSB7XG4gICAgICAgIHZhciBjb3VudCA9IHhBcnIubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeEFycltjb3VudCAtIDFdLFxuICAgICAgICAgICAgeTogeUFycltjb3VudCAtIDFdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBkID0gSW5maW5pdHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgIGlmIChpbnRlcnZhbCA8IEVQU0lMT04pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2ID0gdCAtIGludGVydmFsO1xuICAgICAgICB2YXIgbmV4dCA9IHQgKyBpbnRlcnZhbDtcbiAgICAgICAgdmFyIHYxID0gW3RDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbcHJldl0pKSwgdENhbGxiYWNrLmFwcGx5KG51bGwsIHlBcnIuY29uY2F0KFtwcmV2XSkpXTtcbiAgICAgICAgdmFyIGQxID0gZGlzdGFuY2UodjBbMF0sIHYwWzFdLCB2MVswXSwgdjFbMV0pO1xuICAgICAgICBpZiAocHJldiA+PSAwICYmIGQxIDwgZCkge1xuICAgICAgICAgICAgdCA9IHByZXY7XG4gICAgICAgICAgICBkID0gZDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdjIgPSBbdENhbGxiYWNrLmFwcGx5KG51bGwsIHhBcnIuY29uY2F0KFtuZXh0XSkpLCB0Q2FsbGJhY2suYXBwbHkobnVsbCwgeUFyci5jb25jYXQoW25leHRdKSldO1xuICAgICAgICAgICAgdmFyIGQyID0gZGlzdGFuY2UodjBbMF0sIHYwWzFdLCB2MlswXSwgdjJbMV0pO1xuICAgICAgICAgICAgaWYgKG5leHQgPD0gMSAmJiBkMiA8IGQpIHtcbiAgICAgICAgICAgICAgICB0ID0gbmV4dDtcbiAgICAgICAgICAgICAgICBkID0gZDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCAqPSAwLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogdENhbGxiYWNrLmFwcGx5KG51bGwsIHhBcnIuY29uY2F0KFt0XSkpLFxuICAgICAgICB5OiB0Q2FsbGJhY2suYXBwbHkobnVsbCwgeUFyci5jb25jYXQoW3RdKSksXG4gICAgfTtcbn1cbi8vIOi/keS8vOaxguinoyBodHRwczovL2NvbW11bml0eS5raHJvbm9zLm9yZy90LzNkLWN1YmljLWJlemllci1zZWdtZW50LWxlbmd0aC82MjM2My8yXG5leHBvcnQgZnVuY3Rpb24gc25hcExlbmd0aCh4QXJyLCB5QXJyKSB7XG4gICAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcbiAgICB2YXIgY291bnQgPSB4QXJyLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIHggPSB4QXJyW2ldO1xuICAgICAgICB2YXIgeSA9IHlBcnJbaV07XG4gICAgICAgIHZhciBuZXh0WCA9IHhBcnJbKGkgKyAxKSAlIGNvdW50XTtcbiAgICAgICAgdmFyIG5leHRZID0geUFyclsoaSArIDEpICUgY291bnRdO1xuICAgICAgICB0b3RhbExlbmd0aCArPSBkaXN0YW5jZSh4LCB5LCBuZXh0WCwgbmV4dFkpO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWxMZW5ndGggLyAyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmV6aWVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/bezier.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/cubic.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g-math/esm/cubic.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/@antv/g-math/esm/bezier.js\");\n\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(a, 0)) {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(disc, 0)) {\n extremas.push(-b / (2 * a));\n }\n else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x1, y1, x2, y2, t);\n var c2 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x2, y2, x3, y3, t);\n var c3 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x3, y3, x4, y4, t);\n var c12 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"snapLength\"])([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n extrema: extrema,\n box: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9jdWJpYy5qcz82NWQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdFO0FBQzlDO0FBQzBCO0FBQ3BEO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFhO0FBQ3JCLGFBQWEsMkRBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDZDQUFJO0FBQ2pCLGFBQWEsNkNBQUk7QUFDakIsYUFBYSw2Q0FBSTtBQUNqQixjQUFjLDZDQUFJO0FBQ2xCLGNBQWMsNkNBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMERBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0EsZUFBZSw0REFBYztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSw0REFBWTtBQUMzQixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbURBQUs7QUFDcEIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vY3ViaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0YW5jZSwgaXNOdW1iZXJFcXVhbCwgZ2V0QkJveEJ5QXJyYXksIHBpTW9kIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBsaW5lIGZyb20gJy4vbGluZSc7XG5pbXBvcnQgeyBzbmFwTGVuZ3RoLCBuZWFyZXN0UG9pbnQgfSBmcm9tICcuL2Jlemllcic7XG5mdW5jdGlvbiBjdWJpY0F0KHAwLCBwMSwgcDIsIHAzLCB0KSB7XG4gICAgdmFyIG9uZXQgPSAxIC0gdDsgLy8gdCAqIHQgKiB0IOeahOaAp+iDveWkp+amguaYryBNYXRoLnBvdyh0LCAzKSDnmoTkuInlgI1cbiAgICByZXR1cm4gb25ldCAqIG9uZXQgKiBvbmV0ICogcDAgKyAzICogcDEgKiB0ICogb25ldCAqIG9uZXQgKyAzICogcDIgKiB0ICogdCAqIG9uZXQgKyBwMyAqIHQgKiB0ICogdDtcbn1cbmZ1bmN0aW9uIGRlcml2YXRpdmVBdChwMCwgcDEsIHAyLCBwMywgdCkge1xuICAgIHZhciBvbmV0ID0gMSAtIHQ7XG4gICAgcmV0dXJuIDMgKiAob25ldCAqIG9uZXQgKiAocDEgLSBwMCkgKyAyICogb25ldCAqIHQgKiAocDIgLSBwMSkgKyB0ICogdCAqIChwMyAtIHAyKSk7XG59XG5mdW5jdGlvbiBleHRyZW1hKHAwLCBwMSwgcDIsIHAzKSB7XG4gICAgdmFyIGEgPSAtMyAqIHAwICsgOSAqIHAxIC0gOSAqIHAyICsgMyAqIHAzO1xuICAgIHZhciBiID0gNiAqIHAwIC0gMTIgKiBwMSArIDYgKiBwMjtcbiAgICB2YXIgYyA9IDMgKiBwMSAtIDMgKiBwMDtcbiAgICB2YXIgZXh0cmVtYXMgPSBbXTtcbiAgICB2YXIgdDE7XG4gICAgdmFyIHQyO1xuICAgIHZhciBkaXNjU3FydDtcbiAgICBpZiAoaXNOdW1iZXJFcXVhbChhLCAwKSkge1xuICAgICAgICBpZiAoIWlzTnVtYmVyRXF1YWwoYiwgMCkpIHtcbiAgICAgICAgICAgIHQxID0gLWMgLyBiO1xuICAgICAgICAgICAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSkge1xuICAgICAgICAgICAgICAgIGV4dHJlbWFzLnB1c2godDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgZGlzYyA9IGIgKiBiIC0gNCAqIGEgKiBjO1xuICAgICAgICBpZiAoaXNOdW1iZXJFcXVhbChkaXNjLCAwKSkge1xuICAgICAgICAgICAgZXh0cmVtYXMucHVzaCgtYiAvICgyICogYSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRpc2MgPiAwKSB7XG4gICAgICAgICAgICBkaXNjU3FydCA9IE1hdGguc3FydChkaXNjKTtcbiAgICAgICAgICAgIHQxID0gKC1iICsgZGlzY1NxcnQpIC8gKDIgKiBhKTtcbiAgICAgICAgICAgIHQyID0gKC1iIC0gZGlzY1NxcnQpIC8gKDIgKiBhKTtcbiAgICAgICAgICAgIGlmICh0MSA+PSAwICYmIHQxIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBleHRyZW1hcy5wdXNoKHQxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBleHRyZW1hcy5wdXNoKHQyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0cmVtYXM7XG59XG4vLyDliIblibLotJ3loZ7lsJTmm7Lnur9cbmZ1bmN0aW9uIGRpdmlkZUN1YmljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgIC8vIOWIkuWIhueCuVxuICAgIHZhciB4dCA9IGN1YmljQXQoeDEsIHgyLCB4MywgeDQsIHQpO1xuICAgIHZhciB5dCA9IGN1YmljQXQoeTEsIHkyLCB5MywgeTQsIHQpO1xuICAgIC8vIOiuoeeul+S4pOeCueS5i+mXtOeahOW3ruWAvOeCuVxuICAgIHZhciBjMSA9IGxpbmUucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgdCk7XG4gICAgdmFyIGMyID0gbGluZS5wb2ludEF0KHgyLCB5MiwgeDMsIHkzLCB0KTtcbiAgICB2YXIgYzMgPSBsaW5lLnBvaW50QXQoeDMsIHkzLCB4NCwgeTQsIHQpO1xuICAgIHZhciBjMTIgPSBsaW5lLnBvaW50QXQoYzEueCwgYzEueSwgYzIueCwgYzIueSwgdCk7XG4gICAgdmFyIGMyMyA9IGxpbmUucG9pbnRBdChjMi54LCBjMi55LCBjMy54LCBjMy55LCB0KTtcbiAgICByZXR1cm4gW1xuICAgICAgICBbeDEsIHkxLCBjMS54LCBjMS55LCBjMTIueCwgYzEyLnksIHh0LCB5dF0sXG4gICAgICAgIFt4dCwgeXQsIGMyMy54LCBjMjMueSwgYzMueCwgYzMueSwgeDQsIHk0XSxcbiAgICBdO1xufVxuLy8g5L2/55So6L+t5Luj5rOV5Y+W6LSd5aGe5bCU5puy57q/55qE6ZW/5bqm77yM5LqM6Zi25ZKM5LiJ6Zi25YiG5byA5YaZ77yM5pu05riF5pmw5ZKM5L6/5LqO6LCD6K+VXG5mdW5jdGlvbiBjdWJpY0xlbmd0aCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIGl0ZXJhdGlvbkNvdW50KSB7XG4gICAgaWYgKGl0ZXJhdGlvbkNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzbmFwTGVuZ3RoKFt4MSwgeDIsIHgzLCB4NF0sIFt5MSwgeTIsIHkzLCB5NF0pO1xuICAgIH1cbiAgICB2YXIgY3ViaWNzID0gZGl2aWRlQ3ViaWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCAwLjUpO1xuICAgIHZhciBsZWZ0ID0gY3ViaWNzWzBdO1xuICAgIHZhciByaWdodCA9IGN1Ymljc1sxXTtcbiAgICBsZWZ0LnB1c2goaXRlcmF0aW9uQ291bnQgLSAxKTtcbiAgICByaWdodC5wdXNoKGl0ZXJhdGlvbkNvdW50IC0gMSk7XG4gICAgcmV0dXJuIGN1YmljTGVuZ3RoLmFwcGx5KG51bGwsIGxlZnQpICsgY3ViaWNMZW5ndGguYXBwbHkobnVsbCwgcmlnaHQpO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGV4dHJlbWE6IGV4dHJlbWEsXG4gICAgYm94OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KSB7XG4gICAgICAgIHZhciB4QXJyID0gW3gxLCB4NF07XG4gICAgICAgIHZhciB5QXJyID0gW3kxLCB5NF07XG4gICAgICAgIHZhciB4RXh0cmVtYSA9IGV4dHJlbWEoeDEsIHgyLCB4MywgeDQpO1xuICAgICAgICB2YXIgeUV4dHJlbWEgPSBleHRyZW1hKHkxLCB5MiwgeTMsIHk0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4RXh0cmVtYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeEFyci5wdXNoKGN1YmljQXQoeDEsIHgyLCB4MywgeDQsIHhFeHRyZW1hW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB5RXh0cmVtYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeUFyci5wdXNoKGN1YmljQXQoeTEsIHkyLCB5MywgeTQsIHlFeHRyZW1hW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xuICAgIH0sXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KSB7XG4gICAgICAgIC8vIOi/reS7o+S4ieasoe+8jOWIkuWIhuaIkCA4IOauteaxgumVv+W6plxuICAgICAgICByZXR1cm4gY3ViaWNMZW5ndGgoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCAzKTtcbiAgICB9LFxuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgeDAsIHkwLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludChbeDEsIHgyLCB4MywgeDRdLCBbeTEsIHkyLCB5MywgeTRdLCB4MCwgeTAsIGN1YmljQXQsIGxlbmd0aCk7XG4gICAgfSxcbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB4MCwgeTAsIGxlbmd0aCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHgwLCB5MCwgbGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHBvaW50LngsIHBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uQXQ6IGN1YmljQXQsXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogY3ViaWNBdCh4MSwgeDIsIHgzLCB4NCwgdCksXG4gICAgICAgICAgICB5OiBjdWJpY0F0KHkxLCB5MiwgeTMsIHk0LCB0KSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGRpdmlkZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgICAgICByZXR1cm4gZGl2aWRlQ3ViaWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB0KTtcbiAgICB9LFxuICAgIHRhbmdlbnRBbmdsZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgICAgICB2YXIgZHggPSBkZXJpdmF0aXZlQXQoeDEsIHgyLCB4MywgeDQsIHQpO1xuICAgICAgICB2YXIgZHkgPSBkZXJpdmF0aXZlQXQoeTEsIHkyLCB5MywgeTQsIHQpO1xuICAgICAgICByZXR1cm4gcGlNb2QoTWF0aC5hdGFuMihkeSwgZHgpKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWN1YmljLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/cubic.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/ellipse.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-math/esm/ellipse.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\n\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function (x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function (x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function (x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y,\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = ((squareA - squareB) * Math.pow(Math.cos(t), 3)) / a;\n var ey = ((squareB - squareA) * Math.pow(Math.sin(t), 3)) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY),\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function (x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle),\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(tangentAngle);\n },\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9lbGxpcHNlLmpzP2YzNzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLDZDQUE2QztBQUM3QztBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9lbGxpcHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOakreWchueahOS4gOS6m+iuoeeul++8jFxuICogIC0g5ZGo6ZW/6K6h566X5Y+C6ICD77yaaHR0cHM6Ly93d3cubWF0aHNpc2Z1bi5jb20vZ2VvbWV0cnkvZWxsaXBzZS1wZXJpbWV0ZXIuaHRtbFxuICogIC0g6Led56a76K6h566X5Y+C6ICD77yaaHR0cHM6Ly93ZXQtcm9ib3RzLmdob3N0LmlvL3NpbXBsZS1tZXRob2QtZm9yLWRpc3RhbmNlLXRvLWVsbGlwc2UvXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgZGlzdGFuY2UsIHBpTW9kIH0gZnJvbSAnLi91dGlsJztcbmZ1bmN0aW9uIGNvcHlzaWduKHYxLCB2Mikge1xuICAgIHZhciBhYnN2ID0gTWF0aC5hYnModjEpO1xuICAgIHJldHVybiB2MiA+IDAgPyBhYnN2IDogYWJzdiAqIC0xO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICAgIC8qKlxuICAgICAqIOWMheWbtOebkuiuoeeul1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDljIXlm7Tnm5JcbiAgICAgKi9cbiAgICBib3g6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggLSByeCxcbiAgICAgICAgICAgIHk6IHkgLSByeSxcbiAgICAgICAgICAgIHdpZHRoOiByeCAqIDIsXG4gICAgICAgICAgICBoZWlnaHQ6IHJ5ICogMixcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiuoeeul+WRqOmVv++8jOS9v+eUqOi/keS8vOazlVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHJldHVybiB7bnVtYmVyfSDmpK3lnIblkajplb9cbiAgICAgKi9cbiAgICBsZW5ndGg6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnkpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguUEkgKiAoMyAqIChyeCArIHJ5KSAtIE1hdGguc3FydCgoMyAqIHJ4ICsgcnkpICogKHJ4ICsgMyAqIHJ5KSkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6Led56a75qSt5ZyG5pyA6L+R55qE54K5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOakreWchuS4reW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDAgIOaMh+WumueahOeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkwICDmjIflrprnmoTngrkgeVxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qSt5ZyG5LiK6Led56a75oyH5a6a54K55pyA6L+R55qE54K5XG4gICAgICovXG4gICAgbmVhcmVzdFBvaW50OiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5LCB4MCwgeTApIHtcbiAgICAgICAgdmFyIGEgPSByeDtcbiAgICAgICAgdmFyIGIgPSByeTtcbiAgICAgICAgLy8g5YGH5aaC5qSt5ZyG5Y2K5b6E5Li6MOWImei/lOWbnuWchuW/g1xuICAgICAgICBpZiAoYSA9PT0gMCB8fCBiID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgICAgICAgeTogeSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8g6L2s5o2i5oiQIDDvvIwgMCDkuLrkuK3lv4PnmoTmpK3lnIborqHnrpdcbiAgICAgICAgdmFyIHJlbGF0aXZlWCA9IHgwIC0geDtcbiAgICAgICAgdmFyIHJlbGF0aXZlWSA9IHkwIC0geTtcbiAgICAgICAgdmFyIHB4ID0gTWF0aC5hYnMocmVsYXRpdmVYKTtcbiAgICAgICAgdmFyIHB5ID0gTWF0aC5hYnMocmVsYXRpdmVZKTtcbiAgICAgICAgdmFyIHNxdWFyZUEgPSBhICogYTtcbiAgICAgICAgdmFyIHNxdWFyZUIgPSBiICogYjtcbiAgICAgICAgLy8gY29uc3QgYW5nbGUwID0gTWF0aC5hdGFuMihyZWxhdGl2ZVksIHJlbGF0aXZlWCk7XG4gICAgICAgIHZhciB0ID0gTWF0aC5QSSAvIDQ7XG4gICAgICAgIHZhciBuZWFyZXN0WDsgLy8g5qSt5ZyG5LiK55qE5Lu75LiA54K5XG4gICAgICAgIHZhciBuZWFyZXN0WTtcbiAgICAgICAgLy8g6L+t5LujIDQg5qyhXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICBuZWFyZXN0WCA9IGEgKiBNYXRoLmNvcyh0KTtcbiAgICAgICAgICAgIG5lYXJlc3RZID0gYiAqIE1hdGguc2luKHQpO1xuICAgICAgICAgICAgdmFyIGV4ID0gKChzcXVhcmVBIC0gc3F1YXJlQikgKiBNYXRoLnBvdyhNYXRoLmNvcyh0KSwgMykpIC8gYTtcbiAgICAgICAgICAgIHZhciBleSA9ICgoc3F1YXJlQiAtIHNxdWFyZUEpICogTWF0aC5wb3coTWF0aC5zaW4odCksIDMpKSAvIGI7XG4gICAgICAgICAgICB2YXIgcngxID0gbmVhcmVzdFggLSBleDtcbiAgICAgICAgICAgIHZhciByeTEgPSBuZWFyZXN0WSAtIGV5O1xuICAgICAgICAgICAgdmFyIHF4ID0gcHggLSBleDtcbiAgICAgICAgICAgIHZhciBxeSA9IHB5IC0gZXk7XG4gICAgICAgICAgICB2YXIgciA9IE1hdGguaHlwb3QocnkxLCByeDEpO1xuICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmh5cG90KHF5LCBxeCk7XG4gICAgICAgICAgICB2YXIgZGVsdGFfYyA9IHIgKiBNYXRoLmFzaW4oKHJ4MSAqIHF5IC0gcnkxICogcXgpIC8gKHIgKiBxKSk7XG4gICAgICAgICAgICB2YXIgZGVsdGFfdCA9IGRlbHRhX2MgLyBNYXRoLnNxcnQoc3F1YXJlQSArIHNxdWFyZUIgLSBuZWFyZXN0WCAqIG5lYXJlc3RYIC0gbmVhcmVzdFkgKiBuZWFyZXN0WSk7XG4gICAgICAgICAgICB0ICs9IGRlbHRhX3Q7XG4gICAgICAgICAgICB0ID0gTWF0aC5taW4oTWF0aC5QSSAvIDIsIE1hdGgubWF4KDAsIHQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeCArIGNvcHlzaWduKG5lYXJlc3RYLCByZWxhdGl2ZVgpLFxuICAgICAgICAgICAgeTogeSArIGNvcHlzaWduKG5lYXJlc3RZLCByZWxhdGl2ZVkpLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Yiw5qSt5ZyG5pyA6L+R55qE6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOakreWchuS4reW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDAgIOaMh+WumueahOeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkwICDmjIflrprnmoTngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g54K55Yiw5qSt5ZyG55qE6Led56a7XG4gICAgICovXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHgsIHksIHJ4LCByeSwgeDAsIHkwKSB7XG4gICAgICAgIHZhciBuZWFyZXN0UG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludCh4LCB5LCByeCwgcnksIHgwLCB5MCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZShuZWFyZXN0UG9pbnQueCwgbmVhcmVzdFBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5bngrlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDmjIflrprmr5TkvovvvIx46L205pa55ZCR5Li6IDBcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOeCuVxuICAgICAqL1xuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gMiAqIE1hdGguUEkgKiB0OyAvLyDmjInnhafop5Lluqbov5vooYzorqHnrpfvvIzogIzkuI3mjInnhaflkajplb/orqHnrpdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKyByeCAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgICAgIHk6IHkgKyByeSAqIE1hdGguc2luKGFuZ2xlKSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iuoeeul+WIh+e6v+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IOakreWchuS4reW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkg5qSt5ZyG5Lit5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcngg5qSt5ZyGIHgg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5IOakreWchiB5IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOaMh+WumuavlOS+iyAwIC0gMSDkuYvpl7TvvIx46L205pa55ZCR5Li6IDDjgILlnKggMC0xIOiMg+WbtOS5i+WkluaYr+W+queOr+i/mOaYr+i/lOWbniBudWxs77yM6L+Y6ZyA6KaB6LCD5pW0XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDop5LluqbvvIzlnKggMCAtIDJQSSDkuYvpl7RcbiAgICAgKi9cbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gMiAqIE1hdGguUEkgKiB0OyAvLyDmjInnhafop5Lluqbov5vooYzorqHnrpfvvIzogIzkuI3mjInnhaflkajplb/orqHnrpdcbiAgICAgICAgLy8g55u05o6l5L2/55SoIHgseSDnmoTlr7zmlbDorqHnrpfvvIwgeCcgPSAtcnggKiBzaW4odCk7IHknID0gcnkgKiBjb3ModCk7XG4gICAgICAgIHZhciB0YW5nZW50QW5nbGUgPSBNYXRoLmF0YW4yKHJ5ICogTWF0aC5jb3MoYW5nbGUpLCAtcnggKiBNYXRoLnNpbihhbmdsZSkpO1xuICAgICAgICAvLyDkuZ/lj6/ku6Xkvb/nlKjmjIflrprngrnnmoTliIfnur/mlrnnqIvorqHnrpfvvIzmiJDmnKzmnInkupvpq5hcbiAgICAgICAgLy8gY29uc3QgcG9pbnQgPSB0aGlzLnBvaW50QXQoMCwgMCwgcngsIHJ5LCB0KTsgLy8g5qSt5ZyG55qE5YiH57q/5ZCM5qSt5ZyG55qE5Lit5b+D5LiN55u45YWzXG4gICAgICAgIC8vIGxldCB0YW5nZW50QW5nbGUgPSAtMSAqIE1hdGguYXRhbigocnkgKiByeSAqIHBvaW50LngpIC8gKHJ4ICogcnggKiBwb2ludC55KSk7XG4gICAgICAgIC8vIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDw9IE1hdGguUEkpIHtcbiAgICAgICAgLy8gICB0YW5nZW50QW5nbGUgKz0gTWF0aC5QSTtcbiAgICAgICAgLy8gfVxuICAgICAgICByZXR1cm4gcGlNb2QodGFuZ2VudEFuZ2xlKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsbGlwc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/ellipse.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/index.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g-math/esm/index.js ***!
\************************************************/
/*! exports provided: Quad, Cubic, Arc, Line, Polygon, Polyline, Util */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quadratic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadratic */ \"./node_modules/@antv/g-math/esm/quadratic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quad\", function() { return _quadratic__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cubic */ \"./node_modules/@antv/g-math/esm/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cubic\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc */ \"./node_modules/@antv/g-math/esm/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arc\", function() { return _arc__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-math/esm/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-math/esm/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_6__; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9pbmRleC5qcz8xMTgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQjtBQUNIO0FBQ0o7QUFDRTtBQUNNO0FBQ0U7QUFDSDtBQUM0QjtBQUMzRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLW1hdGgvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFF1YWQgZnJvbSAnLi9xdWFkcmF0aWMnO1xuaW1wb3J0IEN1YmljIGZyb20gJy4vY3ViaWMnO1xuaW1wb3J0IEFyYyBmcm9tICcuL2FyYyc7XG5pbXBvcnQgTGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IFBvbHlnb24gZnJvbSAnLi9wb2x5Z29uJztcbmltcG9ydCBQb2x5bGluZSBmcm9tICcuL3BvbHlsaW5lJztcbmltcG9ydCAqIGFzIFV0aWwgZnJvbSAnLi91dGlsJztcbmV4cG9ydCB7IFF1YWQsIEN1YmljLCBBcmMsIExpbmUsIFBvbHlnb24sIFBvbHlsaW5lLCBVdGlsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/line.js":
/*!***********************************************!*\
!*** ./node_modules/@antv/g-math/esm/line.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function (x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function (x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function (x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"exactEquals\"](d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"](u, u);\n var a = [x - x1, y - y1];\n return Math.abs(gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"dot\"](a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function (x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9saW5lLmpzP2Y3NWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ1g7QUFDeEI7QUFDZjtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzREFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVE7QUFDM0I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHdEQUFjO0FBQ3RCO0FBQ0Esd0JBQXdCLGtEQUFRO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLW1hdGgvZXNtL2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0YW5jZSwgZ2V0QkJveEJ5QXJyYXkgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgdmVjMiBmcm9tICdnbC1tYXRyaXgvdmVjMic7XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLyoqXG4gICAgICog6K6h566X57q/5q6155qE5YyF5Zu055uSXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHJldHVybiB7b2JqZWN0fSDljIXlm7Tnm5Llr7nosaFcbiAgICAgKi9cbiAgICBib3g6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICAgICAgICByZXR1cm4gZ2V0QkJveEJ5QXJyYXkoW3gxLCB4Ml0sIFt5MSwgeTJdKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOe6v+auteeahOmVv+W6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g6Led56a7XG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPlueCuVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOaMh+WumuavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5ZCrIHgsIHkg55qE54K5XG4gICAgICovXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiAoMSAtIHQpICogeDEgKyB0ICogeDIsXG4gICAgICAgICAgICB5OiAoMSAtIHQpICogeTEgKyB0ICogeTIsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnliLDnur/mrrXnmoTot53nprtcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAg5rWL6K+V54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAg5rWL6K+V54K5IHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOi3neemu1xuICAgICAqL1xuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgICAgICAvLyDmipXlvbHot53nprsgeDEsIHkxIOeahOWQkemHj++8jOWBh+iuviBwLCBwMSwgcDIg5LiJ5Liq54K577yM5oqV5b2x54K55Li6IGFcbiAgICAgICAgLy8gcDFhID0gcDFwLnAxcDIvfHAxcDJ8ICogKHAxcCDnmoTljZXkvY3lkJHph48pXG4gICAgICAgIHZhciBjcm9zcyA9ICh4MiAtIHgxKSAqICh4IC0geDEpICsgKHkyIC0geTEpICogKHkgLSB5MSk7XG4gICAgICAgIGlmIChjcm9zcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZSh4MSwgeTEsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGhTcXVhcmUgPSAoeDIgLSB4MSkgKiAoeDIgLSB4MSkgKyAoeTIgLSB5MSkgKiAoeTIgLSB5MSk7XG4gICAgICAgIGlmIChjcm9zcyA+IGxlbmd0aFNxdWFyZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHgyLCB5MiwgeCwgeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRUb0xpbmUoeDEsIHkxLCB4MiwgeTIsIHgsIHkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Yiw55u057q/55qE6Led56a777yM6ICM5LiN5piv54K55Yiw57q/5q6155qE6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOa1i+ivleeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOa1i+ivleeCuSB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDot53nprtcbiAgICAgKi9cbiAgICBwb2ludFRvTGluZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4LCB5KSB7XG4gICAgICAgIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdO1xuICAgICAgICAvLyDlpoLmnpznq6/ngrnnm7jnrYnvvIzliJnliKTlrprngrnliLDngrnnmoTot53nprtcbiAgICAgICAgaWYgKHZlYzIuZXhhY3RFcXVhbHMoZCwgWzAsIDBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydCgoeCAtIHgxKSAqICh4IC0geDEpICsgKHkgLSB5MSkgKiAoeSAtIHkxKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHUgPSBbLWRbMV0sIGRbMF1dO1xuICAgICAgICB2ZWMyLm5vcm1hbGl6ZSh1LCB1KTtcbiAgICAgICAgdmFyIGEgPSBbeCAtIHgxLCB5IC0geTFdO1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModmVjMi5kb3QoYSwgdSkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog57q/5q6155qE6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDlr7zmlbBcbiAgICAgKi9cbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICAgICAgICByZXR1cm4gTWF0aC5hdGFuMih5MiAtIHkxLCB4MiAtIHgxKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/line.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/polygon.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-math/esm/polygon.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/@antv/g-math/esm/segments.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-math/esm/polyline.js\");\n\n\nfunction getAllPoints(points) {\n var tmp = points.slice(0);\n if (points.length) {\n tmp.push(points[0]);\n }\n return tmp;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多边形的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n return _polyline__WEBPACK_IMPORTED_MODULE_1__[\"default\"].box(points);\n },\n /**\n * 计算多边形的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多边形边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(getAllPoints(points));\n },\n /**\n * 根据比例获取多边形的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(getAllPoints(points), t);\n },\n /**\n * 指定点到多边形的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多边形的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(getAllPoints(points), x, y);\n },\n /**\n * 根据比例获取多边形的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(getAllPoints(points), t);\n },\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9wb2x5Z29uLmpzPzE5NTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtHO0FBQ2hFO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLG1FQUFpQjtBQUNoQyxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vcG9seWdvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50QXRTZWdtZW50cywgYW5nbGVBdFNlZ21lbnRzLCBkaXN0YW5jZUF0U2VnbWVudCwgbGVuZ3RoT2ZTZWdtZW50IH0gZnJvbSAnLi9zZWdtZW50cyc7XG5pbXBvcnQgcG9seWxpbmUgZnJvbSAnLi9wb2x5bGluZSc7XG5mdW5jdGlvbiBnZXRBbGxQb2ludHMocG9pbnRzKSB7XG4gICAgdmFyIHRtcCA9IHBvaW50cy5zbGljZSgwKTtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICB0bXAucHVzaChwb2ludHNbMF0pO1xuICAgIH1cbiAgICByZXR1cm4gdG1wO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICAgIC8qKlxuICAgICAqIOiuoeeul+Wkmui+ueW9oueahOWMheWbtOebklxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDljIXlm7Tnm5JcbiAgICAgKi9cbiAgICBib3g6IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgcmV0dXJuIHBvbHlsaW5lLmJveChwb2ludHMpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6K6h566X5aSa6L655b2i55qE6ZW/5bqmXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWkmui+ueW9oui+ueeahOmVv+W6plxuICAgICAqL1xuICAgIGxlbmd0aDogZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICByZXR1cm4gbGVuZ3RoT2ZTZWdtZW50KGdldEFsbFBvaW50cyhwb2ludHMpKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPluWkmui+ueW9oueahOeCuVxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5Zyo5aSa6L655b2i55qE6ZW/5bqm5LiK55qE5q+U5L6LXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDmoLnmja7mr5TkvovlgLzorqHnrpflh7rmnaXnmoTngrlcbiAgICAgKi9cbiAgICBwb2ludEF0OiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBwb2ludEF0U2VnbWVudHMoZ2V0QWxsUG9pbnRzKHBvaW50cyksIHQpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyH5a6a54K55Yiw5aSa6L655b2i55qE6Led56a7XG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCDmjIflrprngrnnmoQgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IOaMh+WumueCueeahCB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDngrnliLDlpJrovrnlvaLnmoTot53nprtcbiAgICAgKi9cbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAocG9pbnRzLCB4LCB5KSB7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZUF0U2VnbWVudChnZXRBbGxQb2ludHMocG9pbnRzKSwgeCwgeSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrovrnlvaLnmoTliIfnur/op5LluqZcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmui+ueW9oueahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE6KeS5bqmXG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBhbmdsZUF0U2VnbWVudHMoZ2V0QWxsUG9pbnRzKHBvaW50cyksIHQpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWdvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/polygon.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/polyline.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g-math/esm/polyline.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/@antv/g-math/esm/segments.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(points, t);\n },\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9wb2x5bGluZS5qcz80MzIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrRztBQUMxRDtBQUN6QjtBQUNmO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0REFBYztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxtRUFBaUI7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLW1hdGgvZXNtL3BvbHlsaW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9pbnRBdFNlZ21lbnRzLCBhbmdsZUF0U2VnbWVudHMsIGRpc3RhbmNlQXRTZWdtZW50LCBsZW5ndGhPZlNlZ21lbnQgfSBmcm9tICcuL3NlZ21lbnRzJztcbmltcG9ydCB7IGdldEJCb3hCeUFycmF5IH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDorqHnrpflpJrmipjnur/nmoTljIXlm7Tnm5JcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciB4QXJyID0gW107XG4gICAgICAgIHZhciB5QXJyID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgICAgICB4QXJyLnB1c2gocG9pbnRbMF0pO1xuICAgICAgICAgICAgeUFyci5wdXNoKHBvaW50WzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFycik7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDorqHnrpflpJrmipjnur/nmoTplb/luqZcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5aSa5p2h6L6555qE6ZW/5bqmXG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGhPZlNlZ21lbnQocG9pbnRzKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPluWkmuaKmOe6v+eahOeCuVxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5Zyo5aSa5oqY57q/55qE6ZW/5bqm5LiK55qE5q+U5L6LXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDmoLnmja7mr5TkvovlgLzorqHnrpflh7rmnaXnmoTngrlcbiAgICAgKi9cbiAgICBwb2ludEF0OiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBwb2ludEF0U2VnbWVudHMocG9pbnRzLCB0KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMh+WumueCueWIsOWkmuaKmOe6v+eahOi3neemu1xuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgg5oyH5a6a54K555qEIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSDmjIflrprngrnnmoQgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g54K55Yiw5aSa5oqY57q/55qE6Led56a7XG4gICAgICovXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHBvaW50cywgeCwgeSkge1xuICAgICAgICByZXR1cm4gZGlzdGFuY2VBdFNlZ21lbnQocG9pbnRzLCB4LCB5KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPluWkmuaKmOe6v+eahOWIh+e6v+inkuW6plxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5Zyo5aSa5oqY57q/55qE6ZW/5bqm5LiK55qE5q+U5L6LXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDmoLnmja7mr5TkvovlgLzorqHnrpflh7rmnaXnmoTop5LluqZcbiAgICAgKi9cbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uIChwb2ludHMsIHQpIHtcbiAgICAgICAgcmV0dXJuIGFuZ2xlQXRTZWdtZW50cyhwb2ludHMsIHQpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/polyline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/quadratic.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-math/esm/quadratic.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/@antv/g-math/esm/bezier.js\");\n\n\n\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumberEqual\"])(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x2, y2) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x2, y2, x3, y3) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n box: function (x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"piMod\"])(angle);\n },\n});\n//# sourceMappingURL=quadratic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9xdWFkcmF0aWMuanM/NjFmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUM4QztBQUNoQztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDZDQUFJO0FBQzVCO0FBQ0Esd0JBQXdCLDZDQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVEsbUJBQW1CLHNEQUFRLG1CQUFtQixzREFBUTtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSw0REFBWTtBQUMzQixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9xdWFkcmF0aWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGlzTnVtYmVyRXF1YWwsIGdldEJCb3hCeUFycmF5LCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBuZWFyZXN0UG9pbnQgfSBmcm9tICcuL2Jlemllcic7XG4vLyDlt67lgLzlhazlvI9cbmZ1bmN0aW9uIHF1YWRyYXRpY0F0KHAwLCBwMSwgcDIsIHQpIHtcbiAgICB2YXIgb25ldCA9IDEgLSB0O1xuICAgIHJldHVybiBvbmV0ICogb25ldCAqIHAwICsgMiAqIHQgKiBvbmV0ICogcDEgKyB0ICogdCAqIHAyO1xufVxuLy8g5rGC5p6B5YC8XG5mdW5jdGlvbiBleHRyZW1hKHAwLCBwMSwgcDIpIHtcbiAgICB2YXIgYSA9IHAwICsgcDIgLSAyICogcDE7XG4gICAgaWYgKGlzTnVtYmVyRXF1YWwoYSwgMCkpIHtcbiAgICAgICAgcmV0dXJuIFswLjVdO1xuICAgIH1cbiAgICB2YXIgcnN0ID0gKHAwIC0gcDEpIC8gYTtcbiAgICBpZiAocnN0IDw9IDEgJiYgcnN0ID49IDApIHtcbiAgICAgICAgcmV0dXJuIFtyc3RdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG59XG5mdW5jdGlvbiBkZXJpdmF0aXZlQXQocDAsIHAxLCBwMiwgdCkge1xuICAgIHJldHVybiAyICogKDEgLSB0KSAqIChwMSAtIHAwKSArIDIgKiB0ICogKHAyIC0gcDEpO1xufVxuLy8g5YiG5Ymy6LSd5aGe5bCU5puy57q/XG5mdW5jdGlvbiBkaXZpZGVRdWFkcmF0aWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCkge1xuICAgIC8vIOWIkuWIhueCuVxuICAgIHZhciB4dCA9IHF1YWRyYXRpY0F0KHgxLCB4MiwgeDMsIHQpO1xuICAgIHZhciB5dCA9IHF1YWRyYXRpY0F0KHkxLCB5MiwgeTMsIHQpO1xuICAgIC8vIOWIhuWJsueahOesrOS4gOadoeabsue6v+eahOaOp+WItueCuVxuICAgIHZhciBjb250cm9sUG9pbnQxID0gbGluZS5wb2ludEF0KHgxLCB5MSwgeDIsIHkyLCB0KTtcbiAgICAvLyDliIblibLnmoTnrKzkuozmnaHmm7Lnur/nmoTmjqfliLbngrlcbiAgICB2YXIgY29udHJvbFBvaW50MiA9IGxpbmUucG9pbnRBdCh4MiwgeTIsIHgzLCB5MywgdCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW3gxLCB5MSwgY29udHJvbFBvaW50MS54LCBjb250cm9sUG9pbnQxLnksIHh0LCB5dF0sXG4gICAgICAgIFt4dCwgeXQsIGNvbnRyb2xQb2ludDIueCwgY29udHJvbFBvaW50Mi55LCB4MywgeTNdLFxuICAgIF07XG59XG4vLyDkvb/nlKjov63ku6Pms5Xlj5botJ3loZ7lsJTmm7Lnur/nmoTplb/luqZcbmZ1bmN0aW9uIHF1YWRyYXRpY0xlbmd0aCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBpdGVyYXRpb25Db3VudCkge1xuICAgIGlmIChpdGVyYXRpb25Db3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gKGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSArIGRpc3RhbmNlKHgyLCB5MiwgeDMsIHkzKSArIGRpc3RhbmNlKHgxLCB5MSwgeDMsIHkzKSkgLyAyO1xuICAgIH1cbiAgICB2YXIgcXVhZHJhdGljcyA9IGRpdmlkZVF1YWRyYXRpYyh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCAwLjUpO1xuICAgIHZhciBsZWZ0ID0gcXVhZHJhdGljc1swXTtcbiAgICB2YXIgcmlnaHQgPSBxdWFkcmF0aWNzWzFdO1xuICAgIGxlZnQucHVzaChpdGVyYXRpb25Db3VudCAtIDEpO1xuICAgIHJpZ2h0LnB1c2goaXRlcmF0aW9uQ291bnQgLSAxKTtcbiAgICByZXR1cm4gcXVhZHJhdGljTGVuZ3RoLmFwcGx5KG51bGwsIGxlZnQpICsgcXVhZHJhdGljTGVuZ3RoLmFwcGx5KG51bGwsIHJpZ2h0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBib3g6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKSB7XG4gICAgICAgIHZhciB4RXh0cmVtYSA9IGV4dHJlbWEoeDEsIHgyLCB4MylbMF07XG4gICAgICAgIHZhciB5RXh0cmVtYSA9IGV4dHJlbWEoeTEsIHkyLCB5MylbMF07XG4gICAgICAgIC8vIOaOp+WItueCueS4jeWKoOWFpSBib3gg55qE6K6h566XXG4gICAgICAgIHZhciB4QXJyID0gW3gxLCB4M107XG4gICAgICAgIHZhciB5QXJyID0gW3kxLCB5M107XG4gICAgICAgIGlmICh4RXh0cmVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB4QXJyLnB1c2gocXVhZHJhdGljQXQoeDEsIHgyLCB4MywgeEV4dHJlbWEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeUV4dHJlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgeUFyci5wdXNoKHF1YWRyYXRpY0F0KHkxLCB5MiwgeTMsIHlFeHRyZW1hKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xuICAgIH0sXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5Mykge1xuICAgICAgICByZXR1cm4gcXVhZHJhdGljTGVuZ3RoKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIDMpO1xuICAgIH0sXG4gICAgbmVhcmVzdFBvaW50OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDAsIHkwKSB7XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQoW3gxLCB4MiwgeDNdLCBbeTEsIHkyLCB5M10sIHgwLCB5MCwgcXVhZHJhdGljQXQpO1xuICAgIH0sXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHgwLCB5MCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4MCwgeTApO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UocG9pbnQueCwgcG9pbnQueSwgeDAsIHkwKTtcbiAgICB9LFxuICAgIGludGVycG9sYXRpb25BdDogcXVhZHJhdGljQXQsXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHF1YWRyYXRpY0F0KHgxLCB4MiwgeDMsIHQpLFxuICAgICAgICAgICAgeTogcXVhZHJhdGljQXQoeTEsIHkyLCB5MywgdCksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBkaXZpZGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0KSB7XG4gICAgICAgIHJldHVybiBkaXZpZGVRdWFkcmF0aWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCk7XG4gICAgfSxcbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0KSB7XG4gICAgICAgIHZhciBkeCA9IGRlcml2YXRpdmVBdCh4MSwgeDIsIHgzLCB0KTtcbiAgICAgICAgdmFyIGR5ID0gZGVyaXZhdGl2ZUF0KHkxLCB5MiwgeTMsIHQpO1xuICAgICAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XG4gICAgICAgIHJldHVybiBwaU1vZChhbmdsZSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWFkcmF0aWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/quadratic.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/segments.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g-math/esm/segments.js ***!
\***************************************************/
/*! exports provided: lengthOfSegment, pointAtSegments, angleAtSegments, distanceAtSegment */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lengthOfSegment\", function() { return lengthOfSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointAtSegments\", function() { return pointAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleAtSegments\", function() { return angleAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distanceAtSegment\", function() { return distanceAtSegment; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n\n\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1,\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return { segments: segments, totalLength: totalLength };\n}\nfunction lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nfunction pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nfunction angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nfunction distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}\n//# sourceMappingURL=segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9zZWdtZW50cy5qcz8yMGZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQ1E7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsWUFBWSxPQUFPO0FBQ25CO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkNBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0EseUJBQXlCLDZDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vc2VnbWVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuL3V0aWwnO1xuZnVuY3Rpb24gYW5hbHl6ZVBvaW50cyhwb2ludHMpIHtcbiAgICAvLyDorqHnrpfmr4/mrrXnmoTplb/luqblkozmgLvnmoTplb/luqZcbiAgICB2YXIgdG90YWxMZW5ndGggPSAwO1xuICAgIHZhciBzZWdtZW50cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgZnJvbSA9IHBvaW50c1tpXTtcbiAgICAgICAgdmFyIHRvID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgdmFyIGxlbmd0aF8xID0gZGlzdGFuY2UoZnJvbVswXSwgZnJvbVsxXSwgdG9bMF0sIHRvWzFdKTtcbiAgICAgICAgdmFyIHNlZyA9IHtcbiAgICAgICAgICAgIGZyb206IGZyb20sXG4gICAgICAgICAgICB0bzogdG8sXG4gICAgICAgICAgICBsZW5ndGg6IGxlbmd0aF8xLFxuICAgICAgICB9O1xuICAgICAgICBzZWdtZW50cy5wdXNoKHNlZyk7XG4gICAgICAgIHRvdGFsTGVuZ3RoICs9IGxlbmd0aF8xO1xuICAgIH1cbiAgICByZXR1cm4geyBzZWdtZW50czogc2VnbWVudHMsIHRvdGFsTGVuZ3RoOiB0b3RhbExlbmd0aCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxlbmd0aE9mU2VnbWVudChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHZhciB0b3RhbExlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciBmcm9tID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgdG8gPSBwb2ludHNbaSArIDFdO1xuICAgICAgICB0b3RhbExlbmd0aCArPSBkaXN0YW5jZShmcm9tWzBdLCBmcm9tWzFdLCB0b1swXSwgdG9bMV0pO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWxMZW5ndGg7XG59XG4vKipcbiAqIOaMieeFp+avlOS+i+WcqOaVsOaNrueJh+auteS4reiOt+WPlueCuVxuICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiFxuICogQHBhcmFtIHtudW1iZXJ9IHQg55m+5YiG5q+UIDAtMVxuICogQHJldHVybiB7b2JqZWN0fSDngrnnmoTlnZDmoIdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvaW50QXRTZWdtZW50cyhwb2ludHMsIHQpIHtcbiAgICAvLyDovrnnlYzliKTmlq1cbiAgICBpZiAodCA+IDEgfHwgdCA8IDAgfHwgcG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBfYSA9IGFuYWx5emVQb2ludHMocG9pbnRzKSwgc2VnbWVudHMgPSBfYS5zZWdtZW50cywgdG90YWxMZW5ndGggPSBfYS50b3RhbExlbmd0aDtcbiAgICAvLyDlpJrkuKrngrnmnInlj6/og73ph43lkIhcbiAgICBpZiAodG90YWxMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHBvaW50c1swXVswXSxcbiAgICAgICAgICAgIHk6IHBvaW50c1swXVsxXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8g6K6h566X5q+U5L6LXG4gICAgdmFyIHN0YXJ0UmF0aW8gPSAwO1xuICAgIHZhciBwb2ludCA9IG51bGw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VnID0gc2VnbWVudHNbaV07XG4gICAgICAgIHZhciBmcm9tID0gc2VnLmZyb20sIHRvID0gc2VnLnRvO1xuICAgICAgICB2YXIgY3VycmVudFJhdGlvID0gc2VnLmxlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICBpZiAodCA+PSBzdGFydFJhdGlvICYmIHQgPD0gc3RhcnRSYXRpbyArIGN1cnJlbnRSYXRpbykge1xuICAgICAgICAgICAgdmFyIGxvY2FsUmF0aW8gPSAodCAtIHN0YXJ0UmF0aW8pIC8gY3VycmVudFJhdGlvO1xuICAgICAgICAgICAgcG9pbnQgPSBsaW5lLnBvaW50QXQoZnJvbVswXSwgZnJvbVsxXSwgdG9bMF0sIHRvWzFdLCBsb2NhbFJhdGlvKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0UmF0aW8gKz0gY3VycmVudFJhdGlvO1xuICAgIH1cbiAgICByZXR1cm4gcG9pbnQ7XG59XG4vKipcbiAqIOaMieeFp+avlOS+i+WcqOaVsOaNrueJh+auteS4reiOt+WPluWIh+e6v+eahOinkuW6plxuICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiFxuICogQHBhcmFtIHtudW1iZXJ9IHQg55m+5YiG5q+UIDAtMVxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5nbGVBdFNlZ21lbnRzKHBvaW50cywgdCkge1xuICAgIC8vIOi+ueeVjOWIpOaWrVxuICAgIGlmICh0ID4gMSB8fCB0IDwgMCB8fCBwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgdmFyIF9hID0gYW5hbHl6ZVBvaW50cyhwb2ludHMpLCBzZWdtZW50cyA9IF9hLnNlZ21lbnRzLCB0b3RhbExlbmd0aCA9IF9hLnRvdGFsTGVuZ3RoO1xuICAgIC8vIOiuoeeul+avlOS+i1xuICAgIHZhciBzdGFydFJhdGlvID0gMDtcbiAgICB2YXIgYW5nbGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZyA9IHNlZ21lbnRzW2ldO1xuICAgICAgICB2YXIgZnJvbSA9IHNlZy5mcm9tLCB0byA9IHNlZy50bztcbiAgICAgICAgdmFyIGN1cnJlbnRSYXRpbyA9IHNlZy5sZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgaWYgKHQgPj0gc3RhcnRSYXRpbyAmJiB0IDw9IHN0YXJ0UmF0aW8gKyBjdXJyZW50UmF0aW8pIHtcbiAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5hdGFuMih0b1sxXSAtIGZyb21bMV0sIHRvWzBdIC0gZnJvbVswXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGFydFJhdGlvICs9IGN1cnJlbnRSYXRpbztcbiAgICB9XG4gICAgcmV0dXJuIGFuZ2xlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQXRTZWdtZW50KHBvaW50cywgeCwgeSkge1xuICAgIHZhciBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBuZXh0UG9pbnQgPSBwb2ludHNbaSArIDFdO1xuICAgICAgICB2YXIgZGlzdGFuY2VfMSA9IGxpbmUucG9pbnREaXN0YW5jZShwb2ludFswXSwgcG9pbnRbMV0sIG5leHRQb2ludFswXSwgbmV4dFBvaW50WzFdLCB4LCB5KTtcbiAgICAgICAgaWYgKGRpc3RhbmNlXzEgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZV8xO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaW5EaXN0YW5jZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlZ21lbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/segments.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-math/esm/util.js":
/*!***********************************************!*\
!*** ./node_modules/@antv/g-math/esm/util.js ***!
\***********************************************/
/*! exports provided: distance, isNumberEqual, getBBoxByArray, getBBoxRange, piMod */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return isNumberEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxByArray\", function() { return getBBoxByArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxRange\", function() { return getBBoxRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"piMod\", function() { return piMod; });\nfunction minNum(array) {\n return Math.min.apply(null, array);\n}\nfunction maxNum(array) {\n return Math.max.apply(null, array);\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nfunction getBBoxByArray(xArr, yArr) {\n var minX = minNum(xArr);\n var minY = minNum(yArr);\n var maxX = maxNum(xArr);\n var maxY = maxNum(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: minNum([x1, x2]),\n maxX: maxNum([x1, x2]),\n minY: minNum([y1, y2]),\n maxY: maxNum([y1, y2]),\n };\n}\nfunction piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS91dGlsLmpzPzRmNTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG1pbk51bShhcnJheSkge1xuICAgIHJldHVybiBNYXRoLm1pbi5hcHBseShudWxsLCBhcnJheSk7XG59XG5mdW5jdGlvbiBtYXhOdW0oYXJyYXkpIHtcbiAgICByZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCwgYXJyYXkpO1xufVxuLyoqXG4gKiDkuKTngrnkuYvpl7TnmoTot53nprtcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICogQHJldHVybiB7bnVtYmVyfSDot53nprtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgdmFyIGR4ID0geDEgLSB4MjtcbiAgICB2YXIgZHkgPSB5MSAtIHkyO1xuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyRXF1YWwodjEsIHYyKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHYxIC0gdjIpIDwgMC4wMDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFycikge1xuICAgIHZhciBtaW5YID0gbWluTnVtKHhBcnIpO1xuICAgIHZhciBtaW5ZID0gbWluTnVtKHlBcnIpO1xuICAgIHZhciBtYXhYID0gbWF4TnVtKHhBcnIpO1xuICAgIHZhciBtYXhZID0gbWF4TnVtKHlBcnIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IG1pblgsXG4gICAgICAgIHk6IG1pblksXG4gICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEJCb3hSYW5nZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IG1pbk51bShbeDEsIHgyXSksXG4gICAgICAgIG1heFg6IG1heE51bShbeDEsIHgyXSksXG4gICAgICAgIG1pblk6IG1pbk51bShbeTEsIHkyXSksXG4gICAgICAgIG1heFk6IG1heE51bShbeTEsIHkyXSksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwaU1vZChhbmdsZSkge1xuICAgIHJldHVybiAoYW5nbGUgKyBNYXRoLlBJICogMikgJSAoTWF0aC5QSSAqIDIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/util.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/canvas.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/canvas.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-svg/esm/group.js\");\n/* harmony import */ var _defs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./defs */ \"./node_modules/@antv/g-svg/esm/defs/index.js\");\n\n\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n return _super.call(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), { autoDraw: true, \n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg' })) || this;\n }\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_6__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n Canvas.prototype.getShape = function (x, y, ev) {\n var target = ev.target || ev.srcElement;\n if (!_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][target.tagName]) {\n var parent_1 = target.parentNode;\n while (parent_1 && !_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][parent_1.tagName]) {\n parent_1 = parent_1.parentNode;\n }\n target = parent_1;\n }\n return this.find(function (child) { return child.get('el') === target; });\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"createSVGElement\"])('svg');\n var context = new _defs__WEBPACK_IMPORTED_MODULE_8__[\"default\"](element);\n element.setAttribute('width', \"\" + this.get('width'));\n element.setAttribute('height', \"\" + this.get('height'));\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n var context = this.get('context');\n var el = this.get('el');\n if (changeType === 'sort') {\n var children_1 = this.get('children');\n if (children_1 && children_1.length) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"sortDom\"])(this, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n var defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n }\n else if (changeType === 'matrix') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setTransform\"])(this);\n }\n else if (changeType === 'clip') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n }\n else if (changeType === 'changeSize') {\n el.setAttribute('width', \"\" + this.get('width'));\n el.setAttribute('height', \"\" + this.get('height'));\n }\n };\n // 复写基类的 draw 方法\n Canvas.prototype.draw = function () {\n var context = this.get('context');\n var children = this.getChildren();\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children);\n }\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2NhbnZhcy5qcz9jMDI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ0U7QUFDSDtBQUNBO0FBQ1E7QUFDSTtBQUN0QjtBQUNMO0FBQ0Y7QUFDMUI7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQSxpQ0FBaUMsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFNBQVM7QUFDOUQ7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFhO0FBQzFCO0FBQ0EsZ0NBQWdDLHVEQUFhO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLG1DQUFtQyxFQUFFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrRUFBZ0I7QUFDdEMsMEJBQTBCLDZDQUFJO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IseURBQU87QUFDdkI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4REFBWTtBQUN4QjtBQUNBO0FBQ0EsWUFBWSx5REFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEseURBQU87QUFDZjtBQUNBLFlBQVksK0RBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFjO0FBQ0QscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDYW52YXMgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgU0hBUEVfVE9fVEFHUyB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHsgZHJhd0NoaWxkcmVuIH0gZnJvbSAnLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgc2V0VHJhbnNmb3JtLCBzZXRDbGlwIH0gZnJvbSAnLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBzb3J0RG9tLCBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi91dGlsL2RvbSc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCBHcm91cCBmcm9tICcuL2dyb3VwJztcbmltcG9ydCBEZWZzIGZyb20gJy4vZGVmcyc7XG52YXIgQ2FudmFzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYW52YXMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2FudmFzKGNmZykge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgX19hc3NpZ24oX19hc3NpZ24oe30sIGNmZyksIHsgYXV0b0RyYXc6IHRydWUsIFxuICAgICAgICAgICAgLy8g6K6+572u5riy5p+T5byV5pOO5Li6IGNhbnZhc++8jOWPquivu+WxnuaAp1xuICAgICAgICAgICAgcmVuZGVyZXI6ICdzdmcnIH0pKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8vIOimhuebliBDb250YWluZXIg5Lit6YCa6L+H6YGN5Y6G55qE5pa55byP6I635Y+WIHNoYXBlIOWvueixoeeahOmAu+i+ke+8jOebtOaOpei1sCBTVkcg55qEIGRvbSDmi77lj5bljbPlj69cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFNoYXBlID0gZnVuY3Rpb24gKHgsIHksIGV2KSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldi50YXJnZXQgfHwgZXYuc3JjRWxlbWVudDtcbiAgICAgICAgaWYgKCFTSEFQRV9UT19UQUdTW3RhcmdldC50YWdOYW1lXSkge1xuICAgICAgICAgICAgdmFyIHBhcmVudF8xID0gdGFyZ2V0LnBhcmVudE5vZGU7XG4gICAgICAgICAgICB3aGlsZSAocGFyZW50XzEgJiYgIVNIQVBFX1RPX1RBR1NbcGFyZW50XzEudGFnTmFtZV0pIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRfMSA9IHBhcmVudF8xLnBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXQgPSBwYXJlbnRfMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maW5kKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gY2hpbGQuZ2V0KCdlbCcpID09PSB0YXJnZXQ7IH0pO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5Z+657G755qE5pa55rOV55Sf5oiQ5qCH562+XG4gICAgQ2FudmFzLnByb3RvdHlwZS5jcmVhdGVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnc3ZnJyk7XG4gICAgICAgIHZhciBjb250ZXh0ID0gbmV3IERlZnMoZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFwiXCIgKyB0aGlzLmdldCgnd2lkdGgnKSk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgdGhpcy5nZXQoJ2hlaWdodCcpKTtcbiAgICAgICAgLy8g57yT5a2YIGNvbnRleHQg5a+56LGhXG4gICAgICAgIHRoaXMuc2V0KCdjb250ZXh0JywgY29udGV4dCk7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoY2hhbmdlVHlwZSA9PT0gJ3NvcnQnKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5fMSA9IHRoaXMuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuXzEgJiYgY2hpbGRyZW5fMS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzb3J0RG9tKHRoaXMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbl8xLmluZGV4T2YoYSkgLSBjaGlsZHJlbl8xLmluZGV4T2YoYikgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xlYXInKSB7XG4gICAgICAgICAgICAvLyBlbCBtYXliZSBudWxsIGZvciBjYW52YXNcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIC8vIOa4heepuiBTVkcg5YWD57SgXG4gICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgdmFyIGRlZnNFbCA9IGNvbnRleHQuZWw7XG4gICAgICAgICAgICAgICAgLy8g5riF56m6IGRlZnMg5YWD57SgXG4gICAgICAgICAgICAgICAgZGVmc0VsLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIC8vIOWwhua4heepuuWQjueahCBkZWZzIOWFg+e0oOaMgui9veWIsCBlbCDkuItcbiAgICAgICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChkZWZzRWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdtYXRyaXgnKSB7XG4gICAgICAgICAgICBzZXRUcmFuc2Zvcm0odGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NsaXAnKSB7XG4gICAgICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdjaGFuZ2VTaXplJykge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFwiXCIgKyB0aGlzLmdldCgnd2lkdGgnKSk7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyB0aGlzLmdldCgnaGVpZ2h0JykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvnmoQgZHJhdyDmlrnms5VcbiAgICBDYW52YXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ2FudmFzO1xufShBYnN0cmFjdENhbnZhcykpO1xuZXhwb3J0IGRlZmF1bHQgQ2FudmFzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FudmFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/constant.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/constant.js ***!
\**************************************************/
/*! exports provided: SHAPE_TO_TAGS, SVG_ATTR_MAP, EVENTS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHAPE_TO_TAGS\", function() { return SHAPE_TO_TAGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_ATTR_MAP\", function() { return SVG_ATTR_MAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return EVENTS; });\nvar SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject',\n};\nvar SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio',\n};\nvar EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'contextmenu',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'wheel',\n];\n//# sourceMappingURL=constant.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2NvbnN0YW50LmpzPzIyZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBTSEFQRV9UT19UQUdTID0ge1xuICAgIHJlY3Q6ICdwYXRoJyxcbiAgICBjaXJjbGU6ICdjaXJjbGUnLFxuICAgIGxpbmU6ICdsaW5lJyxcbiAgICBwYXRoOiAncGF0aCcsXG4gICAgbWFya2VyOiAncGF0aCcsXG4gICAgdGV4dDogJ3RleHQnLFxuICAgIHBvbHlsaW5lOiAncG9seWxpbmUnLFxuICAgIHBvbHlnb246ICdwb2x5Z29uJyxcbiAgICBpbWFnZTogJ2ltYWdlJyxcbiAgICBlbGxpcHNlOiAnZWxsaXBzZScsXG4gICAgZG9tOiAnZm9yZWlnbk9iamVjdCcsXG59O1xuZXhwb3J0IHZhciBTVkdfQVRUUl9NQVAgPSB7XG4gICAgb3BhY2l0eTogJ29wYWNpdHknLFxuICAgIGZpbGxTdHlsZTogJ2ZpbGwnLFxuICAgIGZpbGw6ICdmaWxsJyxcbiAgICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG4gICAgc3Ryb2tlU3R5bGU6ICdzdHJva2UnLFxuICAgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG4gICAgc3Ryb2tlOiAnc3Ryb2tlJyxcbiAgICB4OiAneCcsXG4gICAgeTogJ3knLFxuICAgIHI6ICdyJyxcbiAgICByeDogJ3J4JyxcbiAgICByeTogJ3J5JyxcbiAgICB3aWR0aDogJ3dpZHRoJyxcbiAgICBoZWlnaHQ6ICdoZWlnaHQnLFxuICAgIHgxOiAneDEnLFxuICAgIHgyOiAneDInLFxuICAgIHkxOiAneTEnLFxuICAgIHkyOiAneTInLFxuICAgIGxpbmVDYXA6ICdzdHJva2UtbGluZWNhcCcsXG4gICAgbGluZUpvaW46ICdzdHJva2UtbGluZWpvaW4nLFxuICAgIGxpbmVXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG4gICAgbGluZURhc2g6ICdzdHJva2UtZGFzaGFycmF5JyxcbiAgICBsaW5lRGFzaE9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgICBtaXRlckxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICAgIGZvbnQ6ICdmb250JyxcbiAgICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gICAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gICAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuICAgIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4gICAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgICBzdGFydEFycm93OiAnbWFya2VyLXN0YXJ0JyxcbiAgICBlbmRBcnJvdzogJ21hcmtlci1lbmQnLFxuICAgIHBhdGg6ICdkJyxcbiAgICBjbGFzczogJ2NsYXNzJyxcbiAgICBpZDogJ2lkJyxcbiAgICBzdHlsZTogJ3N0eWxlJyxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG59O1xuZXhwb3J0IHZhciBFVkVOVFMgPSBbXG4gICAgJ2NsaWNrJyxcbiAgICAnbW91c2Vkb3duJyxcbiAgICAnbW91c2V1cCcsXG4gICAgJ2RibGNsaWNrJyxcbiAgICAnY29udGV4dG1lbnUnLFxuICAgICdtb3VzZWVudGVyJyxcbiAgICAnbW91c2VsZWF2ZScsXG4gICAgJ21vdXNlb3ZlcicsXG4gICAgJ21vdXNlb3V0JyxcbiAgICAnbW91c2Vtb3ZlJyxcbiAgICAnd2hlZWwnLFxuXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/constant.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/defs/arrow.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/defs/arrow.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\n\n\nvar Arrow = /** @class */ (function () {\n function Arrow(attrs, type) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('marker');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('marker_');\n el.setAttribute('id', id);\n var shape = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n }\n else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n Arrow.prototype.match = function () {\n return false;\n };\n Arrow.prototype._setDefaultPath = function (type, el) {\n var parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', \"M0,0 L\" + 10 * Math.cos(Math.PI / 6) + \",5 L0,10\");\n parent.setAttribute('refX', \"\" + 10 * Math.cos(Math.PI / 6));\n parent.setAttribute('refY', \"\" + 5);\n };\n Arrow.prototype._setMarker = function (r, el) {\n var parent = this.el;\n var path = this.cfg.path;\n var d = this.cfg.d;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n path = path\n .map(function (segment) {\n return segment.join(' ');\n })\n .join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', \"\" + d / r);\n }\n };\n Arrow.prototype.update = function (fill) {\n var child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n }\n else {\n child.setAttribute('fill', fill);\n }\n };\n return Arrow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Arrow);\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvYXJyb3cuanM/NjgwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUMrQztBQUNBO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakMsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0Esb0JBQW9CLGtFQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9kZWZzL2Fycm93LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGFycm93XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IGlzQXJyYXksIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xudmFyIEFycm93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEFycm93KGF0dHJzLCB0eXBlKSB7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ21hcmtlcicpO1xuICAgICAgICB2YXIgaWQgPSB1bmlxdWVJZCgnbWFya2VyXycpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICB2YXIgc2hhcGUgPSBjcmVhdGVTVkdFbGVtZW50KCdwYXRoJyk7XG4gICAgICAgIHNoYXBlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgYXR0cnMuc3Ryb2tlIHx8ICdub25lJyk7XG4gICAgICAgIHNoYXBlLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGF0dHJzLmZpbGwgfHwgJ25vbmUnKTtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoc2hhcGUpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ292ZXJmbG93JywgJ3Zpc2libGUnKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdvcmllbnQnLCAnYXV0by1zdGFydC1yZXZlcnNlJyk7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5jaGlsZCA9IHNoYXBlO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHZhciBjZmcgPSBhdHRyc1t0eXBlID09PSAnbWFya2VyLXN0YXJ0JyA/ICdzdGFydEFycm93JyA6ICdlbmRBcnJvdyddO1xuICAgICAgICB0aGlzLnN0cm9rZSA9IGF0dHJzLnN0cm9rZSB8fCAnIzAwMCc7XG4gICAgICAgIGlmIChjZmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldERlZmF1bHRQYXRoKHR5cGUsIHNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2ZnID0gY2ZnOyAvLyB3aGVuIGFycm93IGNvbmZpZyBleGlzdHNcbiAgICAgICAgICAgIHRoaXMuX3NldE1hcmtlcihhdHRycy5saW5lV2lkdGgsIHNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgQXJyb3cucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBBcnJvdy5wcm90b3R5cGUuX3NldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKHR5cGUsIGVsKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmVsO1xuICAgICAgICAvLyDpu5jorqTnrq3lpLTnmoTovrnplb/kuLogMTDvvIzlpLnop5LkuLogNjAg5bqmXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZCcsIFwiTTAsMCBMXCIgKyAxMCAqIE1hdGguY29zKE1hdGguUEkgLyA2KSArIFwiLDUgTDAsMTBcIik7XG4gICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JlZlgnLCBcIlwiICsgMTAgKiBNYXRoLmNvcyhNYXRoLlBJIC8gNikpO1xuICAgICAgICBwYXJlbnQuc2V0QXR0cmlidXRlKCdyZWZZJywgXCJcIiArIDUpO1xuICAgIH07XG4gICAgQXJyb3cucHJvdG90eXBlLl9zZXRNYXJrZXIgPSBmdW5jdGlvbiAociwgZWwpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZWw7XG4gICAgICAgIHZhciBwYXRoID0gdGhpcy5jZmcucGF0aDtcbiAgICAgICAgdmFyIGQgPSB0aGlzLmNmZy5kO1xuICAgICAgICBpZiAoaXNBcnJheShwYXRoKSkge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGhcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnQuam9pbignICcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgcGF0aCk7XG4gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICBwYXJlbnQuc2V0QXR0cmlidXRlKCdyZWZYJywgXCJcIiArIGQgLyByKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQXJyb3cucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChmaWxsKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGQ7XG4gICAgICAgIGlmIChjaGlsZC5hdHRyKSB7XG4gICAgICAgICAgICBjaGlsZC5hdHRyKCdmaWxsJywgZmlsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBmaWxsKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFycm93O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEFycm93O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJyb3cuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/arrow.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/defs/clip.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/defs/clip.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\n\n\nvar Clip = /** @class */ (function () {\n function Clip(cfg) {\n this.type = 'clip';\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('clipPath');\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('clip_');\n el.id = this.id;\n var shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n Clip.prototype.match = function () {\n return false;\n };\n Clip.prototype.remove = function () {\n var el = this.el;\n el.parentNode.removeChild(el);\n };\n return Clip;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Clip);\n//# sourceMappingURL=clip.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvY2xpcC5qcz8xNDFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ1M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2MsbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9jbGlwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGNsaXBcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgQ2xpcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDbGlwKGNmZykge1xuICAgICAgICB0aGlzLnR5cGUgPSAnY2xpcCc7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2NsaXBQYXRoJyk7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5pZCA9IHVuaXF1ZUlkKCdjbGlwXycpO1xuICAgICAgICBlbC5pZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzaGFwZUVsID0gY2ZnLmNmZy5lbDtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoc2hhcGVFbCk7XG4gICAgICAgIHRoaXMuY2ZnID0gY2ZnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgQ2xpcC5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIENsaXAucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5lbDtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2xpcDtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBDbGlwO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xpcC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/clip.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/defs/gradient.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/defs/gradient.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction addStop(steps) {\n var arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n var stops = '';\n arr.sort(function (a, b) {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n item = item.split(':');\n stops += \"\";\n });\n return stops;\n}\nfunction parseLineGradient(color, el) {\n var arr = regexLG.exec(color);\n var angle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(parseFloat(arr[1])), Math.PI * 2);\n var steps = arr[2];\n var start;\n var end;\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 1,\n };\n }\n else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n }\n else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1,\n };\n end = {\n x: 0,\n y: 0,\n };\n }\n else {\n start = {\n x: 0,\n y: 1,\n };\n end = {\n x: 1,\n y: 0,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\nfunction parseRadialGradient(color, self) {\n var arr = regexRG.exec(color);\n var cx = parseFloat(arr[1]);\n var cy = parseFloat(arr[2]);\n var r = parseFloat(arr[3]);\n var steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\nvar Gradient = /** @class */ (function () {\n function Gradient(cfg) {\n this.cfg = {};\n var el = null;\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('linearGradient');\n parseLineGradient(cfg, el);\n }\n else {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n Gradient.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Gradient;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Gradient);\n//# sourceMappingURL=gradient.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvZ3JhZGllbnQuanM/YTIxOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUMyRDtBQUNaO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFHLENBQUMsMkRBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2MsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9ncmFkaWVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBncmFkaWVudFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBlYWNoLCBtb2QsIHRvUmFkaWFuLCB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciByZWdleExHID0gL15sXFxzKlxcKFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleFJHID0gL15yXFxzKlxcKFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleENvbG9yU3RvcCA9IC9bXFxkLl0rOigjW15cXHNdK3xbXildK1xcKSkvZ2k7XG5mdW5jdGlvbiBhZGRTdG9wKHN0ZXBzKSB7XG4gICAgdmFyIGFyciA9IHN0ZXBzLm1hdGNoKHJlZ2V4Q29sb3JTdG9wKTtcbiAgICBpZiAoIWFycikge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHZhciBzdG9wcyA9ICcnO1xuICAgIGFyci5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGEgPSBhLnNwbGl0KCc6Jyk7XG4gICAgICAgIGIgPSBiLnNwbGl0KCc6Jyk7XG4gICAgICAgIHJldHVybiBOdW1iZXIoYVswXSkgLSBOdW1iZXIoYlswXSk7XG4gICAgfSk7XG4gICAgZWFjaChhcnIsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGl0ZW0gPSBpdGVtLnNwbGl0KCc6Jyk7XG4gICAgICAgIHN0b3BzICs9IFwiPHN0b3Agb2Zmc2V0PVxcXCJcIiArIGl0ZW1bMF0gKyBcIlxcXCIgc3RvcC1jb2xvcj1cXFwiXCIgKyBpdGVtWzFdICsgXCJcXFwiPjwvc3RvcD5cIjtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RvcHM7XG59XG5mdW5jdGlvbiBwYXJzZUxpbmVHcmFkaWVudChjb2xvciwgZWwpIHtcbiAgICB2YXIgYXJyID0gcmVnZXhMRy5leGVjKGNvbG9yKTtcbiAgICB2YXIgYW5nbGUgPSBtb2QodG9SYWRpYW4ocGFyc2VGbG9hdChhcnJbMV0pKSwgTWF0aC5QSSAqIDIpO1xuICAgIHZhciBzdGVwcyA9IGFyclsyXTtcbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIGVuZDtcbiAgICBpZiAoYW5nbGUgPj0gMCAmJiBhbmdsZSA8IDAuNSAqIE1hdGguUEkpIHtcbiAgICAgICAgc3RhcnQgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKDAuNSAqIE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAxLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChNYXRoLlBJIDw9IGFuZ2xlICYmIGFuZ2xlIDwgMS41ICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IDEsXG4gICAgICAgICAgICB5OiAxLFxuICAgICAgICB9O1xuICAgICAgICBlbmQgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IDEsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgdGFuVGhldGEgPSBNYXRoLnRhbihhbmdsZSk7XG4gICAgdmFyIHRhblRoZXRhMiA9IHRhblRoZXRhICogdGFuVGhldGE7XG4gICAgdmFyIHggPSAoZW5kLnggLSBzdGFydC54ICsgdGFuVGhldGEgKiAoZW5kLnkgLSBzdGFydC55KSkgLyAodGFuVGhldGEyICsgMSkgKyBzdGFydC54O1xuICAgIHZhciB5ID0gKHRhblRoZXRhICogKGVuZC54IC0gc3RhcnQueCArIHRhblRoZXRhICogKGVuZC55IC0gc3RhcnQueSkpKSAvICh0YW5UaGV0YTIgKyAxKSArIHN0YXJ0Lnk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCd4MScsIHN0YXJ0LngpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgneTEnLCBzdGFydC55KTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3gyJywgeCk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCd5MicsIHkpO1xuICAgIGVsLmlubmVySFRNTCA9IGFkZFN0b3Aoc3RlcHMpO1xufVxuZnVuY3Rpb24gcGFyc2VSYWRpYWxHcmFkaWVudChjb2xvciwgc2VsZikge1xuICAgIHZhciBhcnIgPSByZWdleFJHLmV4ZWMoY29sb3IpO1xuICAgIHZhciBjeCA9IHBhcnNlRmxvYXQoYXJyWzFdKTtcbiAgICB2YXIgY3kgPSBwYXJzZUZsb2F0KGFyclsyXSk7XG4gICAgdmFyIHIgPSBwYXJzZUZsb2F0KGFyclszXSk7XG4gICAgdmFyIHN0ZXBzID0gYXJyWzRdO1xuICAgIHNlbGYuc2V0QXR0cmlidXRlKCdjeCcsIGN4KTtcbiAgICBzZWxmLnNldEF0dHJpYnV0ZSgnY3knLCBjeSk7XG4gICAgc2VsZi5zZXRBdHRyaWJ1dGUoJ3InLCByKTtcbiAgICBzZWxmLmlubmVySFRNTCA9IGFkZFN0b3Aoc3RlcHMpO1xufVxudmFyIEdyYWRpZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdyYWRpZW50KGNmZykge1xuICAgICAgICB0aGlzLmNmZyA9IHt9O1xuICAgICAgICB2YXIgZWwgPSBudWxsO1xuICAgICAgICB2YXIgaWQgPSB1bmlxdWVJZCgnZ3JhZGllbnRfJyk7XG4gICAgICAgIGlmIChjZmcudG9Mb3dlckNhc2UoKVswXSA9PT0gJ2wnKSB7XG4gICAgICAgICAgICBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2xpbmVhckdyYWRpZW50Jyk7XG4gICAgICAgICAgICBwYXJzZUxpbmVHcmFkaWVudChjZmcsIGVsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgncmFkaWFsR3JhZGllbnQnKTtcbiAgICAgICAgICAgIHBhcnNlUmFkaWFsR3JhZGllbnQoY2ZnLCBlbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMuY2ZnID0gY2ZnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgR3JhZGllbnQucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHR5cGUsIGF0dHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnID09PSBhdHRyO1xuICAgIH07XG4gICAgcmV0dXJuIEdyYWRpZW50O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEdyYWRpZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JhZGllbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/gradient.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/defs/index.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/defs/index.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _gradient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gradient */ \"./node_modules/@antv/g-svg/esm/defs/gradient.js\");\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shadow */ \"./node_modules/@antv/g-svg/esm/defs/shadow.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./arrow */ \"./node_modules/@antv/g-svg/esm/defs/arrow.js\");\n/* harmony import */ var _clip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip */ \"./node_modules/@antv/g-svg/esm/defs/clip.js\");\n/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pattern */ \"./node_modules/@antv/g-svg/esm/defs/pattern.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\n\nvar Defs = /** @class */ (function () {\n function Defs(canvas) {\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_6__[\"createSVGElement\"])('defs');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n Defs.prototype.find = function (type, attr) {\n var children = this.children;\n var result = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n };\n Defs.prototype.findById = function (id) {\n var children = this.children;\n var flag = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n };\n Defs.prototype.add = function (item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n };\n Defs.prototype.getDefaultArrow = function (attrs, name) {\n var stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addGradient = function (cfg) {\n var gradient = new _gradient__WEBPACK_IMPORTED_MODULE_1__[\"default\"](cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n };\n Defs.prototype.addArrow = function (attrs, name) {\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addShadow = function (cfg) {\n var shadow = new _shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"](cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n };\n Defs.prototype.addPattern = function (cfg) {\n var pattern = new _pattern__WEBPACK_IMPORTED_MODULE_5__[\"default\"](cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n };\n Defs.prototype.addClip = function (cfg) {\n var clip = new _clip__WEBPACK_IMPORTED_MODULE_4__[\"default\"](cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n };\n return Defs;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Defs);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvaW5kZXguanM/ZmUzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDc0M7QUFDSjtBQUNKO0FBQ0Y7QUFDRjtBQUNNO0FBQ2U7QUFDL0M7QUFDQTtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakMsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxQkFBcUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw4Q0FBSztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw4Q0FBSztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtDQUFNO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0RBQU87QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw2Q0FBSTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZGVmc1xuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdyYWRpZW50IGZyb20gJy4vZ3JhZGllbnQnO1xuaW1wb3J0IFNoYWRvdyBmcm9tICcuL3NoYWRvdyc7XG5pbXBvcnQgQXJyb3cgZnJvbSAnLi9hcnJvdyc7XG5pbXBvcnQgQ2xpcCBmcm9tICcuL2NsaXAnO1xuaW1wb3J0IFBhdHRlcm4gZnJvbSAnLi9wYXR0ZXJuJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgRGVmcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEZWZzKGNhbnZhcykge1xuICAgICAgICB2YXIgZWwgPSBjcmVhdGVTVkdFbGVtZW50KCdkZWZzJyk7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdkZWZzXycpO1xuICAgICAgICBlbC5pZCA9IGlkO1xuICAgICAgICBjYW52YXMuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgICAgIHRoaXMuZGVmYXVsdEFycm93ID0ge307XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgfVxuICAgIERlZnMucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAodHlwZSwgYXR0cikge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLm1hdGNoKHR5cGUsIGF0dHIpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hpbGRyZW5baV0uaWQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmZpbmRCeUlkID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgICAgIHZhciBmbGFnID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmlkID09PSBpZCkge1xuICAgICAgICAgICAgICAgIGZsYWcgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmxhZztcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChpdGVtKTtcbiAgICAgICAgaXRlbS5jYW52YXMgPSB0aGlzLmNhbnZhcztcbiAgICAgICAgaXRlbS5wYXJlbnQgPSB0aGlzO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuZ2V0RGVmYXVsdEFycm93ID0gZnVuY3Rpb24gKGF0dHJzLCBuYW1lKSB7XG4gICAgICAgIHZhciBzdHJva2UgPSBhdHRycy5zdHJva2UgfHwgYXR0cnMuc3Ryb2tlU3R5bGU7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBcnJvd1tzdHJva2VdKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0QXJyb3dbc3Ryb2tlXS5pZDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXJyb3cgPSBuZXcgQXJyb3coYXR0cnMsIG5hbWUpO1xuICAgICAgICB0aGlzLmRlZmF1bHRBcnJvd1tzdHJva2VdID0gYXJyb3c7XG4gICAgICAgIHRoaXMuZWwuYXBwZW5kQ2hpbGQoYXJyb3cuZWwpO1xuICAgICAgICB0aGlzLmFkZChhcnJvdyk7XG4gICAgICAgIHJldHVybiBhcnJvdy5pZDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZEdyYWRpZW50ID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICB2YXIgZ3JhZGllbnQgPSBuZXcgR3JhZGllbnQoY2ZnKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChncmFkaWVudC5lbCk7XG4gICAgICAgIHRoaXMuYWRkKGdyYWRpZW50KTtcbiAgICAgICAgcmV0dXJuIGdyYWRpZW50LmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkQXJyb3cgPSBmdW5jdGlvbiAoYXR0cnMsIG5hbWUpIHtcbiAgICAgICAgdmFyIGFycm93ID0gbmV3IEFycm93KGF0dHJzLCBuYW1lKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChhcnJvdy5lbCk7XG4gICAgICAgIHRoaXMuYWRkKGFycm93KTtcbiAgICAgICAgcmV0dXJuIGFycm93LmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkU2hhZG93ID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICB2YXIgc2hhZG93ID0gbmV3IFNoYWRvdyhjZmcpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKHNoYWRvdy5lbCk7XG4gICAgICAgIHRoaXMuYWRkKHNoYWRvdyk7XG4gICAgICAgIHJldHVybiBzaGFkb3cuaWQ7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5hZGRQYXR0ZXJuID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICB2YXIgcGF0dGVybiA9IG5ldyBQYXR0ZXJuKGNmZyk7XG4gICAgICAgIHRoaXMuZWwuYXBwZW5kQ2hpbGQocGF0dGVybi5lbCk7XG4gICAgICAgIHRoaXMuYWRkKHBhdHRlcm4pO1xuICAgICAgICByZXR1cm4gcGF0dGVybi5pZDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZENsaXAgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBjbGlwID0gbmV3IENsaXAoY2ZnKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChjbGlwLmVsKTtcbiAgICAgICAgdGhpcy5hZGQoY2xpcCk7XG4gICAgICAgIHJldHVybiBjbGlwLmlkO1xuICAgIH07XG4gICAgcmV0dXJuIERlZnM7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgRGVmcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/defs/pattern.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/defs/pattern.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar Pattern = /** @class */ (function () {\n function Pattern(cfg) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('pattern');\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n var child = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('image');\n el.appendChild(child);\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n var arr = regexPR.exec(cfg);\n var source = arr[2];\n child.setAttribute('href', source);\n var img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', \"\" + img.width);\n el.setAttribute('height', \"\" + img.height);\n }\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return this;\n }\n Pattern.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Pattern;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Pattern);\n//# sourceMappingURL=pattern.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvcGF0dGVybi5qcz8wMGYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ1M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0Esb0JBQW9CLGtFQUFnQjtBQUNwQztBQUNBLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2Msc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9wYXR0ZXJuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHBhdHRlcm5cbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgcmVnZXhQUiA9IC9ecFxccypcXChcXHMqKFtheHluXSlcXHMqXFwpXFxzKiguKikvaTtcbnZhciBQYXR0ZXJuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBhdHRlcm4oY2ZnKSB7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ3BhdHRlcm4nKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdwYXR0ZXJuVW5pdHMnLCAndXNlclNwYWNlT25Vc2UnKTtcbiAgICAgICAgdmFyIGNoaWxkID0gY3JlYXRlU1ZHRWxlbWVudCgnaW1hZ2UnKTtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgICAgICB2YXIgaWQgPSB1bmlxdWVJZCgncGF0dGVybl8nKTtcbiAgICAgICAgZWwuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMuY2ZnID0gY2ZnO1xuICAgICAgICB2YXIgYXJyID0gcmVnZXhQUi5leGVjKGNmZyk7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcnJbMl07XG4gICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnaHJlZicsIHNvdXJjZSk7XG4gICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaWYgKCFzb3VyY2UubWF0Y2goL15kYXRhOi9pKSkge1xuICAgICAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgIH1cbiAgICAgICAgaW1nLnNyYyA9IHNvdXJjZTtcbiAgICAgICAgZnVuY3Rpb24gb25sb2FkKCkge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFwiXCIgKyBpbWcud2lkdGgpO1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgaW1nLmhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGltZy5jb21wbGV0ZSkge1xuICAgICAgICAgICAgb25sb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbWcub25sb2FkID0gb25sb2FkO1xuICAgICAgICAgICAgLy8gRml4IG9ubG9hZCgpIGJ1ZyBpbiBJRTlcbiAgICAgICAgICAgIGltZy5zcmMgPSBpbWcuc3JjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBQYXR0ZXJuLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICh0eXBlLCBhdHRyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNmZyA9PT0gYXR0cjtcbiAgICB9O1xuICAgIHJldHVybiBQYXR0ZXJuO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IFBhdHRlcm47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXR0ZXJuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/pattern.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/defs/shadow.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/defs/shadow.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\n\n\nvar ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy',\n};\nvar SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%',\n};\nvar Shadow = /** @class */ (function () {\n function Shadow(cfg) {\n this.type = 'filter';\n this.cfg = {};\n this.type = 'filter';\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('filter');\n // expand the filter region to fill in shadows\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(SHADOW_DIMENSION, function (v, k) {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n Shadow.prototype.match = function (type, cfg) {\n if (this.type !== type) {\n return false;\n }\n var flag = true;\n var config = this.cfg;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(Object.keys(config), function (attr) {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n };\n Shadow.prototype.update = function (name, value) {\n var config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n };\n Shadow.prototype._parseShadow = function (config, el) {\n var child = \"\";\n el.innerHTML = child;\n };\n return Shadow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shadow);\n//# sourceMappingURL=shadow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvc2hhZG93LmpzPzE3MjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDRztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2MscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9zaGFkb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgc2hhZG93XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IGVhY2gsIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xudmFyIEFUVFJfTUFQID0ge1xuICAgIHNoYWRvd0NvbG9yOiAnY29sb3InLFxuICAgIHNoYWRvd09wYWNpdHk6ICdvcGFjaXR5JyxcbiAgICBzaGFkb3dCbHVyOiAnYmx1cicsXG4gICAgc2hhZG93T2Zmc2V0WDogJ2R4JyxcbiAgICBzaGFkb3dPZmZzZXRZOiAnZHknLFxufTtcbnZhciBTSEFET1dfRElNRU5TSU9OID0ge1xuICAgIHg6ICctNDAlJyxcbiAgICB5OiAnLTQwJScsXG4gICAgd2lkdGg6ICcyMDAlJyxcbiAgICBoZWlnaHQ6ICcyMDAlJyxcbn07XG52YXIgU2hhZG93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNoYWRvdyhjZmcpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZpbHRlcic7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHRoaXMudHlwZSA9ICdmaWx0ZXInO1xuICAgICAgICB2YXIgZWwgPSBjcmVhdGVTVkdFbGVtZW50KCdmaWx0ZXInKTtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSBmaWx0ZXIgcmVnaW9uIHRvIGZpbGwgaW4gc2hhZG93c1xuICAgICAgICBlYWNoKFNIQURPV19ESU1FTlNJT04sIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoaywgdik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgIHRoaXMuaWQgPSB1bmlxdWVJZCgnZmlsdGVyXycpO1xuICAgICAgICB0aGlzLmVsLmlkID0gdGhpcy5pZDtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHRoaXMuX3BhcnNlU2hhZG93KGNmZywgZWwpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgU2hhZG93LnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICh0eXBlLCBjZmcpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbGFnID0gdHJ1ZTtcbiAgICAgICAgdmFyIGNvbmZpZyA9IHRoaXMuY2ZnO1xuICAgICAgICBlYWNoKE9iamVjdC5rZXlzKGNvbmZpZyksIGZ1bmN0aW9uIChhdHRyKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnW2F0dHJdICE9PSBjZmdbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZsYWc7XG4gICAgfTtcbiAgICBTaGFkb3cucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jZmc7XG4gICAgICAgIGNvbmZpZ1tBVFRSX01BUFtuYW1lXV0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcGFyc2VTaGFkb3coY29uZmlnLCB0aGlzLmVsKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBTaGFkb3cucHJvdG90eXBlLl9wYXJzZVNoYWRvdyA9IGZ1bmN0aW9uIChjb25maWcsIGVsKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IFwiPGZlRHJvcFNoYWRvd1xcbiAgICAgIGR4PVxcXCJcIiArIChjb25maWcuZHggfHwgMCkgKyBcIlxcXCJcXG4gICAgICBkeT1cXFwiXCIgKyAoY29uZmlnLmR5IHx8IDApICsgXCJcXFwiXFxuICAgICAgc3RkRGV2aWF0aW9uPVxcXCJcIiArIChjb25maWcuYmx1ciA/IGNvbmZpZy5ibHVyIC8gMTAgOiAwKSArIFwiXFxcIlxcbiAgICAgIGZsb29kLWNvbG9yPVxcXCJcIiArIChjb25maWcuY29sb3IgPyBjb25maWcuY29sb3IgOiAnIzAwMCcpICsgXCJcXFwiXFxuICAgICAgZmxvb2Qtb3BhY2l0eT1cXFwiXCIgKyAoY29uZmlnLm9wYWNpdHkgPyBjb25maWcub3BhY2l0eSA6IDEpICsgXCJcXFwiXFxuICAgICAgLz5cIjtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gY2hpbGQ7XG4gICAgfTtcbiAgICByZXR1cm4gU2hhZG93O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IFNoYWRvdztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYWRvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/shadow.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/group.js":
/*!***********************************************!*\
!*** ./node_modules/@antv/g-svg/esm/group.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n\n\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // SVG 中分组对应实体标签 \n Group.prototype.isEntityGroup = function () {\n return true;\n };\n Group.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_7__[\"createSVGElement\"])('g');\n this.set('el', element);\n var parent = this.getParent();\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n };\n // 覆盖基类的 afterAttrsChange 方法\n Group.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n Group.prototype.draw = function (context) {\n var children = this.getChildren();\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n this.createDom();\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setClip\"])(this, context);\n this.createPath(context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"drawChildren\"])(context, children);\n }\n }\n };\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n Group.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setTransform\"])(this);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2dyb3VwLmpzP2U3M2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ1c7QUFDWDtBQUNEO0FBQzBCO0FBQ1I7QUFDVDtBQUNJO0FBQzlDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0VBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBTztBQUNuQjtBQUNBO0FBQ0EsZ0JBQWdCLCtEQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEtBQUs7QUFDcEIsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaLGdCQUFnQixzREFBWTtBQUM1QixnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1QsUUFBUSw4REFBWTtBQUNwQjtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDBEQUFhO0FBQ0Esb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZ3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0R3JvdXAgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBkcmF3Q2hpbGRyZW4sIHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgc2V0Q2xpcCwgc2V0VHJhbnNmb3JtIH0gZnJvbSAnLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuL3V0aWwvZG9tJztcbnZhciBHcm91cCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoR3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gR3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLy8gU1ZHIOS4reWIhue7hOWvueW6lOWunuS9k+agh+etviA8Zz5cbiAgICBHcm91cC5wcm90b3R5cGUuaXNFbnRpdHlHcm91cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuY3JlYXRlRG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2cnKTtcbiAgICAgICAgdGhpcy5zZXQoJ2VsJywgZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IHBhcmVudC5nZXQoJ2VsJyk7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBwYXJlbnROb2RlIG1heWJlIG51bGwgZm9yIGdyb3VwXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudC5jcmVhdGVEb20oKTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuc2V0KCdlbCcsIHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcbiAgICAvLyDopobnm5bln7rnsbvnmoQgYWZ0ZXJBdHRyc0NoYW5nZSDmlrnms5VcbiAgICBHcm91cC5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZSA9IGZ1bmN0aW9uICh0YXJnZXRBdHRycykge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFmdGVyQXR0cnNDaGFuZ2UuY2FsbCh0aGlzLCB0YXJnZXRBdHRycyk7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIC8vIOWPquacieaMgui9veWIsOeUu+W4g+S4i++8jOaJjeWvueWFg+e0oOi/m+ihjOWunumZhea4suafk1xuICAgICAgICBpZiAoY2FudmFzICYmIGNhbnZhcy5nZXQoJ2F1dG9EcmF3JykpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldCgnY29udGV4dCcpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIEdyb3VwLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURvbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2xpcCh0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlUGF0aChjb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnu5jliLbliIbnu4TnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0RlZnN9IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICogQHBhcmFtIHtTaGFwZUF0dHJzfSB0YXJnZXRBdHRycyDmuLLmn5PnmoTnm67moIflsZ7mgKdcbiAgICAgKi9cbiAgICBHcm91cC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRyYW5zZm9ybSh0aGlzKTtcbiAgICB9O1xuICAgIHJldHVybiBHcm91cDtcbn0oQWJzdHJhY3RHcm91cCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JvdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/group.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/index.js":
/*!***********************************************!*\
!*** ./node_modules/@antv/g-svg/esm/index.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/@antv/g-svg/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-svg/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2luZGV4LmpzP2JmYjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0o7QUFDZ0I7QUFDRjtBQUMxQjtBQUNWO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICdAYW50di9nLWJhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDYW52YXMgfSBmcm9tICcuL2NhbnZhcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdyb3VwIH0gZnJvbSAnLi9ncm91cCc7XG5leHBvcnQgeyBTaGFwZSB9O1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzAuNS42Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/base.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/base.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./index */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../group */ \"./node_modules/@antv/g-svg/esm/group.js\");\n\n\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'svg';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n // 覆盖基类的 afterAttrsChange 方法\n ShapeBase.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_6__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var el = this.get('el');\n var bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n }\n else {\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var lineWidth = this.getHitLineWidth();\n var halfWidth = lineWidth / 2;\n var minX = x - halfWidth;\n var minY = y - halfWidth;\n var maxX = x + width + halfWidth;\n var maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: width + lineWidth,\n height: height + lineWidth,\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n };\n ShapeBase.prototype.isFill = function () {\n var _a = this.attr(), fill = _a.fill, fillStyle = _a.fillStyle;\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n };\n ShapeBase.prototype.isStroke = function () {\n var _a = this.attr(), stroke = _a.stroke, strokeStyle = _a.strokeStyle;\n return (stroke || strokeStyle) && this.canStroke;\n };\n ShapeBase.prototype.draw = function (context, targetAttrs) {\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(this);\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setClip\"])(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n ShapeBase.prototype.createPath = function (context, targetAttrs) { };\n // stroke and fill\n ShapeBase.prototype.strokeAndFill = function (context, targetAttrs) {\n var attrs = targetAttrs || this.attr();\n var fill = attrs.fill, fillStyle = attrs.fillStyle, stroke = attrs.stroke, strokeStyle = attrs.strokeStyle, fillOpacity = attrs.fillOpacity, strokeOpacity = attrs.strokeOpacity, lineWidth = attrs.lineWidth;\n var el = this.get('el');\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n }\n else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n }\n else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['fillOpacity'], fillOpacity);\n }\n }\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n }\n else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n }\n else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['lineWidth'], lineWidth);\n }\n }\n };\n ShapeBase.prototype._setColor = function (context, attr, value) {\n var el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], value);\n }\n };\n ShapeBase.prototype.shadow = function (context, targetAttrs) {\n var attrs = this.attr();\n var _a = targetAttrs || attrs, shadowOffsetX = _a.shadowOffsetX, shadowOffsetY = _a.shadowOffsetY, shadowBlur = _a.shadowBlur, shadowColor = _a.shadowColor;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setShadow\"])(this, context);\n }\n };\n ShapeBase.prototype.transform = function (targetAttrs) {\n var attrs = this.attr();\n var matrix = (targetAttrs || attrs).matrix;\n if (matrix) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setTransform\"])(this);\n }\n };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n return this.isPointInPath(refX, refY);\n };\n ShapeBase.prototype.isPointInPath = function (refX, refY) {\n var el = this.get('el');\n var canvas = this.get('canvas');\n var bbox = canvas.get('el').getBoundingClientRect();\n var clientX = refX + bbox.left;\n var clientY = refY + bbox.top;\n var element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n var _a = this.attrs, lineWidth = _a.lineWidth, lineAppendWidth = _a.lineAppendWidth;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2Jhc2UuanM/MTNkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDQztBQUNrQjtBQUN2QjtBQUNNO0FBQ0g7QUFDVjtBQUNKO0FBQ2dCO0FBQzdDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxRUFBcUU7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLFFBQVEsaUVBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtFQUFhO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBUztBQUN6QjtBQUNBLFlBQVkseURBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxLQUFLO0FBQ3BCLGVBQWUsV0FBVztBQUMxQjtBQUNBLHNFQUFzRTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFZO0FBQ3hDO0FBQ0EseUJBQXlCLEVBQUU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVk7QUFDeEM7QUFDQTtBQUNBLDRCQUE0QixzREFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMERBQWE7QUFDQSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RTaGFwZSB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBzZXRTaGFkb3csIHNldFRyYW5zZm9ybSwgc2V0Q2xpcCB9IGZyb20gJy4uL3V0aWwvc3ZnJztcbmltcG9ydCB7IGNyZWF0ZURvbSB9IGZyb20gJy4uL3V0aWwvZG9tJztcbmltcG9ydCB7IHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4uL2dyb3VwJztcbmltcG9ydCB7IGdldEJCb3hNZXRob2QgfSBmcm9tICdAYW50di9nLWJhc2UnO1xudmFyIFNoYXBlQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU2hhcGVCYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNoYXBlQmFzZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnc3ZnJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8g6K6+572u6buY6K6k5YC8XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IGxpbmVXaWR0aDogMSwgbGluZUFwcGVuZFdpZHRoOiAwLCBzdHJva2VPcGFjaXR5OiAxLCBmaWxsT3BhY2l0eTogMSB9KTtcbiAgICB9O1xuICAgIC8vIOimhuebluWfuuexu+eahCBhZnRlckF0dHJzQ2hhbmdlIOaWueazlVxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZSA9IGZ1bmN0aW9uICh0YXJnZXRBdHRycykge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFmdGVyQXR0cnNDaGFuZ2UuY2FsbCh0aGlzLCB0YXJnZXRBdHRycyk7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIC8vIOWPquacieaMgui9veWIsOeUu+W4g+S4i++8jOaJjeWvueWFg+e0oOi/m+ihjOWunumZhea4suafk1xuICAgICAgICBpZiAoY2FudmFzICYmIGNhbnZhcy5nZXQoJ2F1dG9EcmF3JykpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldCgnY29udGV4dCcpO1xuICAgICAgICAgICAgdGhpcy5kcmF3KGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jYWxjdWxhdGVCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGJib3ggPSBudWxsO1xuICAgICAgICAvLyDljIXlm7Tnm5LorqHnrpfkvp3otZbkuo7nu5jliLbvvIzlpoLmnpzov5jmsqHmnInnlJ/miJDlr7nlupTnmoQgRG9tIOWFg+e0oO+8jOWImeWMheWbtOebkueahOmVv+WuveWdh+S4uiAwXG4gICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgYmJveCA9IGVsLmdldEJCb3goKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBiYm94TWV0aG9kID0gZ2V0QkJveE1ldGhvZCh0aGlzLmdldCgndHlwZScpKTtcbiAgICAgICAgICAgIGlmIChiYm94TWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgYmJveCA9IGJib3hNZXRob2QodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJib3gpIHtcbiAgICAgICAgICAgIHZhciB4ID0gYmJveC54LCB5ID0gYmJveC55LCB3aWR0aCA9IGJib3gud2lkdGgsIGhlaWdodCA9IGJib3guaGVpZ2h0O1xuICAgICAgICAgICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMuZ2V0SGl0TGluZVdpZHRoKCk7XG4gICAgICAgICAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgIHZhciBtaW5YID0geCAtIGhhbGZXaWR0aDtcbiAgICAgICAgICAgIHZhciBtaW5ZID0geSAtIGhhbGZXaWR0aDtcbiAgICAgICAgICAgIHZhciBtYXhYID0geCArIHdpZHRoICsgaGFsZldpZHRoO1xuICAgICAgICAgICAgdmFyIG1heFkgPSB5ICsgaGVpZ2h0ICsgaGFsZldpZHRoO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggKyBsaW5lV2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBsaW5lV2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIG1pblg6IDAsXG4gICAgICAgICAgICBtaW5ZOiAwLFxuICAgICAgICAgICAgbWF4WDogMCxcbiAgICAgICAgICAgIG1heFk6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNGaWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgZmlsbCA9IF9hLmZpbGwsIGZpbGxTdHlsZSA9IF9hLmZpbGxTdHlsZTtcbiAgICAgICAgcmV0dXJuIChmaWxsIHx8IGZpbGxTdHlsZSB8fCB0aGlzLmlzQ2xpcFNoYXBlKCkpICYmIHRoaXMuY2FuRmlsbDtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCBzdHJva2UgPSBfYS5zdHJva2UsIHN0cm9rZVN0eWxlID0gX2Euc3Ryb2tlU3R5bGU7XG4gICAgICAgIHJldHVybiAoc3Ryb2tlIHx8IHN0cm9rZVN0eWxlKSAmJiB0aGlzLmNhblN0cm9rZTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWVsKSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlRG9tKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2xpcCh0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlUGF0aChjb250ZXh0LCB0YXJnZXRBdHRycyk7XG4gICAgICAgICAgICB0aGlzLnNoYWRvdyhjb250ZXh0LCB0YXJnZXRBdHRycyk7XG4gICAgICAgICAgICB0aGlzLnN0cm9rZUFuZEZpbGwoY29udGV4dCwgdGFyZ2V0QXR0cnMpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm0odGFyZ2V0QXR0cnMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog57uY5Yi25Zu+5b2i55qE6Lev5b6EXG4gICAgICogQHBhcmFtIHtEZWZzfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqIEBwYXJhbSB7U2hhcGVBdHRyc30gdGFyZ2V0QXR0cnMg5riy5p+T55qE55uu5qCH5bGe5oCnXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7IH07XG4gICAgLy8gc3Ryb2tlIGFuZCBmaWxsXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zdHJva2VBbmRGaWxsID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRhcmdldEF0dHJzIHx8IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZmlsbCA9IGF0dHJzLmZpbGwsIGZpbGxTdHlsZSA9IGF0dHJzLmZpbGxTdHlsZSwgc3Ryb2tlID0gYXR0cnMuc3Ryb2tlLCBzdHJva2VTdHlsZSA9IGF0dHJzLnN0cm9rZVN0eWxlLCBmaWxsT3BhY2l0eSA9IGF0dHJzLmZpbGxPcGFjaXR5LCBzdHJva2VPcGFjaXR5ID0gYXR0cnMuc3Ryb2tlT3BhY2l0eSwgbGluZVdpZHRoID0gYXR0cnMubGluZVdpZHRoO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKHRoaXMuY2FuRmlsbCkge1xuICAgICAgICAgICAgLy8g5Yid5qyh5riy5p+T5ZKM5pu05paw5riy5p+T55qE6YC76L6R5pyJ5omA5LiN5ZCMOiDliJ3mrKHmuLLmn5PlgLzkuLrnqbrml7bvvIzpnIDopoHorr7nva7kuLogbm9uZe+8jOWQpuWImeWwseS8muaYr+m7keiJsu+8jOiAjOabtOaWsOa4suafk+WImeS4jemcgOimgVxuICAgICAgICAgICAgaWYgKCF0YXJnZXRBdHRycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdmaWxsJywgZmlsbCB8fCBmaWxsU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ2ZpbGwnIGluIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ2ZpbGwnLCBmaWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCdmaWxsU3R5bGUnIGluIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgLy8gY29tcGF0aWJsZSB3aXRoIGZpbGxTdHlsZVxuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdmaWxsJywgZmlsbFN0eWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxsT3BhY2l0eSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbJ2ZpbGxPcGFjaXR5J10sIGZpbGxPcGFjaXR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jYW5TdHJva2UgJiYgbGluZVdpZHRoID4gMCkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRBdHRycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdzdHJva2UnLCBzdHJva2UgfHwgc3Ryb2tlU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ3N0cm9rZScgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRDb2xvcihjb250ZXh0LCAnc3Ryb2tlJywgc3Ryb2tlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCdzdHJva2VTdHlsZScgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggc3Ryb2tlU3R5bGVcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRDb2xvcihjb250ZXh0LCAnc3Ryb2tlJywgc3Ryb2tlU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cm9rZU9wYWNpdHkpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQWydzdHJva2VPcGFjaXR5J10sIHN0cm9rZU9wYWNpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbJ2xpbmVXaWR0aCddLCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLl9zZXRDb2xvciA9IGZ1bmN0aW9uIChjb250ZXh0LCBhdHRyLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgLy8gbmVlZCB0byBzZXQgYG5vbmVgIHRvIGF2b2lkIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sICdub25lJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgICAgIGlmICgvXltyLFIsTCxsXXsxfVtcXHNdKlxcKC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGNvbnRleHQuZmluZCgnZ3JhZGllbnQnLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBjb250ZXh0LmFkZEdyYWRpZW50KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKC9eW3AsUF17MX1bXFxzXSpcXCgvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICB2YXIgaWQgPSBjb250ZXh0LmZpbmQoJ3BhdHRlcm4nLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBjb250ZXh0LmFkZFBhdHRlcm4odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuc2hhZG93ID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgX2EgPSB0YXJnZXRBdHRycyB8fCBhdHRycywgc2hhZG93T2Zmc2V0WCA9IF9hLnNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkgPSBfYS5zaGFkb3dPZmZzZXRZLCBzaGFkb3dCbHVyID0gX2Euc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IgPSBfYS5zaGFkb3dDb2xvcjtcbiAgICAgICAgaWYgKHNoYWRvd09mZnNldFggfHwgc2hhZG93T2Zmc2V0WSB8fCBzaGFkb3dCbHVyIHx8IHNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICBzZXRTaGFkb3codGhpcywgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgbWF0cml4ID0gKHRhcmdldEF0dHJzIHx8IGF0dHJzKS5tYXRyaXg7XG4gICAgICAgIGlmIChtYXRyaXgpIHtcbiAgICAgICAgICAgIHNldFRyYW5zZm9ybSh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0luU2hhcGUgPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1BvaW50SW5QYXRoKHJlZlgsIHJlZlkpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc1BvaW50SW5QYXRoID0gZnVuY3Rpb24gKHJlZlgsIHJlZlkpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIHZhciBiYm94ID0gY2FudmFzLmdldCgnZWwnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdmFyIGNsaWVudFggPSByZWZYICsgYmJveC5sZWZ0O1xuICAgICAgICB2YXIgY2xpZW50WSA9IHJlZlkgKyBiYm94LnRvcDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGNsaWVudFgsIGNsaWVudFkpO1xuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmlzRXF1YWxOb2RlKGVsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W57q/5ou+5Y+W55qE5a695bqmXG4gICAgICogQHJldHVybnMge251bWJlcn0g57q/55qE5ou+5Y+W5a695bqmXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRIaXRMaW5lV2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cnMsIGxpbmVXaWR0aCA9IF9hLmxpbmVXaWR0aCwgbGluZUFwcGVuZFdpZHRoID0gX2EubGluZUFwcGVuZFdpZHRoO1xuICAgICAgICBpZiAodGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbGluZVdpZHRoICsgbGluZUFwcGVuZFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgcmV0dXJuIFNoYXBlQmFzZTtcbn0oQWJzdHJhY3RTaGFwZSkpO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGVCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/base.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/circle.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/circle.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'circle';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2NpcmNsZS5qcz83MWFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNWO0FBQ1M7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLG1CQUFtQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBjaXJjbGVcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIENpcmNsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2lyY2xlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnY2lyY2xlJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ2lyY2xlLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHg6IDAsIHk6IDAsIHI6IDAgfSk7XG4gICAgfTtcbiAgICBDaXJjbGUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIC8vIOWchuWSjOakreWchueahOeCueWdkOagh+WxnuaAp+S4jeaYryB4LCB577yM6ICM5pivIGN4LCBjeVxuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICd4JyB8fCBhdHRyID09PSAneScpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoXCJjXCIgKyBhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIENpcmNsZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/circle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/dom.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/dom.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Dom = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Dom, _super);\n function Dom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'dom';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Dom.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n var element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n var children = el.childNodes;\n for (var i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n }\n else {\n el.innerHTML = element; // set innerHTML\n }\n }\n else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n };\n return Dom;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Dom);\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2RvbS5qcz9hOGU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNBO0FBQ1M7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQkFBZ0Isc0RBQVk7QUFDNUIsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFFBQVE7QUFDekQ7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxrRUFBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZG9tXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIERvbSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRG9tLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERvbSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnZG9tJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBEb20ucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZW9mIGF0dHJzWydodG1sJ10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYXR0cnNbJ2h0bWwnXS5jYWxsKHRoaXMsIGF0dHJzKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCB8fCBlbGVtZW50IGluc3RhbmNlb2YgSFRNTERvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWwuY2hpbGROb2RlcztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQ2hpbGQoY2hpbGRyZW5baV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChlbGVtZW50KTsgLy8gYXBwZW5kIHRvIGVsIGlmIGl0J3MgYW4gZWxlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gZWxlbWVudDsgLy8gc2V0IGlubmVySFRNTFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gYXR0cnNbJ2h0bWwnXTsgLy8gc2V0IGlubmVySFRNTFxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gRG9tO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IERvbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRvbS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/dom.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/ellipse.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/ellipse.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'ellipse';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2VsbGlwc2UuanM/NWUyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDVjtBQUNTO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywyQkFBMkI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9lbGxpcHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGVsbGlwc2VcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIEVsbGlwc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsbGlwc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRWxsaXBzZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnZWxsaXBzZSc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEVsbGlwc2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgcng6IDAsIHJ5OiAwIH0pO1xuICAgIH07XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgLy8g5ZyG5ZKM5qSt5ZyG55qE54K55Z2Q5qCH5bGe5oCn5LiN5pivIHgsIHnvvIzogIzmmK8gY3gsIGN5XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3gnIHx8IGF0dHIgPT09ICd5Jykge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShcImNcIiArIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gRWxsaXBzZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBFbGxpcHNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxsaXBzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/ellipse.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/image.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/image.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Image = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Image, _super);\n function Image() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'image';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Image.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n Image.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'img') {\n _this._setImage(attrs.img);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Image.prototype.setAttr = function (name, value) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n };\n Image.prototype._setImage = function (img) {\n var attrs = this.attr();\n var el = this.get('el');\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img)) {\n el.setAttribute('href', img);\n }\n else if (img instanceof window.Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n }\n else if (img instanceof HTMLElement && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n }\n else if (img instanceof ImageData) {\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', \"\" + img.width);\n canvas.setAttribute('height', \"\" + img.height);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', \"\" + img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', \"\" + img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n };\n return Image;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2ltYWdlLmpzP2E1NzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ0E7QUFDRDtBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsa0NBQWtDO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsMkRBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGltYWdlXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgSW1hZ2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEltYWdlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEltYWdlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdpbWFnZSc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgSW1hZ2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcbiAgICB9O1xuICAgIEltYWdlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ2ltZycpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fc2V0SW1hZ2UoYXR0cnMuaW1nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBJbWFnZS5wcm90b3R5cGUuc2V0QXR0ciA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmF0dHJzW25hbWVdID0gdmFsdWU7XG4gICAgICAgIGlmIChuYW1lID09PSAnaW1nJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0SW1hZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZS5wcm90b3R5cGUuX3NldEltYWdlID0gZnVuY3Rpb24gKGltZykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChpc1N0cmluZyhpbWcpKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBpbWcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIHdpbmRvdy5JbWFnZSkge1xuICAgICAgICAgICAgaWYgKCFhdHRycy53aWR0aCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBpbWcud2lkdGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cignd2lkdGgnLCBpbWcud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGltZy5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cignaGVpZ2h0JywgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBpbWcuc3JjKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbWcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBpc1N0cmluZyhpbWcubm9kZU5hbWUpICYmIGltZy5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQ0FOVkFTJykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgaW1nLnRvRGF0YVVSTCgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbWcgaW5zdGFuY2VvZiBJbWFnZURhdGEpIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIGltZy53aWR0aCk7XG4gICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5wdXRJbWFnZURhdGEoaW1nLCAwLCAwKTtcbiAgICAgICAgICAgIGlmICghYXR0cnMud2lkdGgpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIGltZy53aWR0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCd3aWR0aCcsIGltZy53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgXCJcIiArIGltZy5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cignaGVpZ2h0JywgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBjYW52YXMudG9EYXRhVVJMKCkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gSW1hZ2U7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgSW1hZ2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/image.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/index.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/index.js ***!
\*****************************************************/
/*! exports provided: Base, Circle, Dom, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g-svg/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom */ \"./node_modules/@antv/g-svg/esm/shape/dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Dom\", function() { return _dom__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-svg/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ \"./node_modules/@antv/g-svg/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-svg/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./marker */ \"./node_modules/@antv/g-svg/esm/shape/marker/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g-svg/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-svg/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-svg/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g-svg/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./text */ \"./node_modules/@antv/g-svg/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2luZGV4LmpzPzY4ZGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDSTtBQUNOO0FBQ1E7QUFDSjtBQUNGO0FBQ0k7QUFDSjtBQUNNO0FBQ0U7QUFDUjtBQUNBO0FBQ3pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENpcmNsZSB9IGZyb20gJy4vY2lyY2xlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRG9tIH0gZnJvbSAnLi9kb20nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbGxpcHNlIH0gZnJvbSAnLi9lbGxpcHNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tICcuL2ltYWdlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGluZSB9IGZyb20gJy4vbGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hcmtlciB9IGZyb20gJy4vbWFya2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlnb24gfSBmcm9tICcuL3BvbHlnb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb2x5bGluZSB9IGZyb20gJy4vcG9seWxpbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWN0IH0gZnJvbSAnLi9yZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/line.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/line.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'line';\n _this.canFill = false;\n _this.canStroke = true;\n return _this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2xpbmUuanM/MTIyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDZ0Q7QUFDSjtBQUNEO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxpRUFBaUU7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBLDZCQUE2QiwyREFBUTtBQUNyQyxrREFBa0Qsc0RBQVk7QUFDOUQseURBQXlELHNEQUFZO0FBQ3JFLG9DQUFvQyxzREFBWTtBQUNoRDtBQUNBO0FBQ0EsdUNBQXVDLHNEQUFZO0FBQ25EO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgbGluZVxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzT2JqZWN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgTGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGluZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMaW5lKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdsaW5lJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIExpbmUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDAsIHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3N0YXJ0QXJyb3cnIHx8IGF0dHIgPT09ICdlbmRBcnJvdycpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gaXNPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNvbnRleHQuYWRkQXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGV4dC5nZXREZWZhdWx0QXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVzZSBtYXRoIGNhbGN1bGF0aW9uIHRvIGdldCBsZW5ndGggb2YgbGluZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgTGluZS5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4MSA9IF9hLngxLCB5MSA9IF9hLnkxLCB4MiA9IF9hLngyLCB5MiA9IF9hLnkyO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwubGVuZ3RoKHgxLCB5MSwgeDIsIHkyKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVzZSBtYXRoIGNhbGN1bGF0aW9uIHRvIGdldCBwb2ludCBhY2NvcmRpbmcgdG8gcmF0aW8gYXMgc2FtZSBzYSBDYW52YXMgdmVyc2lvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIExpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4MSA9IF9hLngxLCB5MSA9IF9hLnkxLCB4MiA9IF9hLngyLCB5MiA9IF9hLnkyO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgcmF0aW8pO1xuICAgIH07XG4gICAgcmV0dXJuIExpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgTGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/line.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/marker/index.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/marker/index.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _symbols__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbols */ \"./node_modules/@antv/g-svg/esm/shape/marker/symbols.js\");\n/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'marker';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Marker.prototype.createPath = function (context) {\n var el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n };\n Marker.prototype._assembleMarker = function () {\n var d = this._getPath();\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d)) {\n return d\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n }\n return d;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n var r = attrs.r || attrs.radius;\n var symbol = attrs.symbol || 'circle';\n var method;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(symbol)) {\n method = symbol;\n }\n else {\n method = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(symbol);\n }\n if (!method) {\n console.warn(method + \" symbol is not exist.\");\n return null;\n }\n return method(x, y, r);\n };\n // 作为其静态属性\n Marker.symbolsFactory = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL21hcmtlci9pbmRleC5qcz84YzAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNlO0FBQ2pCO0FBQ087QUFDdkM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0RBQWM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixnREFBYztBQUMxQztBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL21hcmtlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBtYXJrZXJcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IHN5bWJvbHNGYWN0b3J5IGZyb20gJy4vc3ltYm9scyc7XG52YXIgTWFya2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNYXJrZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWFya2VyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdtYXJrZXInO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBNYXJrZXIucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgdGhpcy5fYXNzZW1ibGVNYXJrZXIoKSk7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLl9hc3NlbWJsZU1hcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGQgPSB0aGlzLl9nZXRQYXRoKCk7XG4gICAgICAgIGlmIChpc0FycmF5KGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZFxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5qb2luKCcgJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICB9O1xuICAgIE1hcmtlci5wcm90b3R5cGUuX2dldFBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55O1xuICAgICAgICAvLyDlhbzlrrkgciDlkowgcmFkaXVzIOS4pOenjeWGmeazle+8jOaOqOiNkOS9v+eUqCByXG4gICAgICAgIHZhciByID0gYXR0cnMuciB8fCBhdHRycy5yYWRpdXM7XG4gICAgICAgIHZhciBzeW1ib2wgPSBhdHRycy5zeW1ib2wgfHwgJ2NpcmNsZSc7XG4gICAgICAgIHZhciBtZXRob2Q7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHN5bWJvbCkpIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IHN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IHN5bWJvbHNGYWN0b3J5LmdldChzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obWV0aG9kICsgXCIgc3ltYm9sIGlzIG5vdCBleGlzdC5cIik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWV0aG9kKHgsIHksIHIpO1xuICAgIH07XG4gICAgLy8g5L2c5Li65YW26Z2Z5oCB5bGe5oCnXG4gICAgTWFya2VyLnN5bWJvbHNGYWN0b3J5ID0gc3ltYm9sc0ZhY3Rvcnk7XG4gICAgcmV0dXJuIE1hcmtlcjtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBNYXJrZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/marker/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/marker/symbols.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/marker/symbols.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x, y],\n ['m', -r, 0],\n ['a', r, r, 0, 1, 0, r * 2, 0],\n ['a', r, r, 0, 1, 0, -r * 2, 0],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n get: function (type) {\n return Symbols[type];\n },\n register: function (type, func) {\n Symbols[type] = func;\n },\n remove: function (type) {\n delete Symbols[type];\n },\n getAll: function () {\n return Symbols;\n },\n});\n//# sourceMappingURL=symbols.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL21hcmtlci9zeW1ib2xzLmpzP2MyMmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNlO0FBQ2Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vc2hhcGUvbWFya2VyL3N5bWJvbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3ltYm9scyA9IHtcbiAgICAvLyDlnIZcbiAgICBjaXJjbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCB4LCB5XSxcbiAgICAgICAgICAgIFsnbScsIC1yLCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDEsIDAsIHIgKiAyLCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDEsIDAsIC1yICogMiwgMF0sXG4gICAgICAgIF07XG4gICAgfSxcbiAgICAvLyDmraPmlrnlvaJcbiAgICBzcXVhcmU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgKyByXSwgWydMJywgeCAtIHIsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g6I+x5b2iXG4gICAgZGlhbW9uZDogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeV0sIFsnTCcsIHgsIHkgLSByXSwgWydMJywgeCArIHIsIHldLCBbJ0wnLCB4LCB5ICsgcl0sIFsnWiddXTtcbiAgICB9LFxuICAgIC8vIOS4ieinkuW9olxuICAgIHRyaWFuZ2xlOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5ICsgZGlmZlldLCBbJ0wnLCB4LCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSArIGRpZmZZXSwgWyd6J11dO1xuICAgIH0sXG4gICAgLy8g5YCS5LiJ6KeS5b2iXG4gICAgdHJpYW5nbGVEb3duOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSAtIGRpZmZZXSwgWydMJywgeCwgeSArIGRpZmZZXSwgWydaJ11dO1xuICAgIH0sXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldDogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIFN5bWJvbHNbdHlwZV07XG4gICAgfSxcbiAgICByZWdpc3RlcjogZnVuY3Rpb24gKHR5cGUsIGZ1bmMpIHtcbiAgICAgICAgU3ltYm9sc1t0eXBlXSA9IGZ1bmM7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgIGRlbGV0ZSBTeW1ib2xzW3R5cGVdO1xuICAgIH0sXG4gICAgZ2V0QWxsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTeW1ib2xzO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3ltYm9scy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/marker/symbols.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/path.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/path.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n\n\n\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'path';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'path' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\n el.setAttribute('d', _this._formatPath(value));\n }\n else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Path.prototype._formatPath = function (value) {\n var newValue = value\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n };\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var el = this.get('el');\n return el ? el.getTotalLength() : null;\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var el = this.get('el');\n var totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n var point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point\n ? {\n x: point.x,\n y: point.y,\n }\n : null;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BhdGguanM/M2VlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ1M7QUFDVjtBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osbUNBQW1DLDBEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDLGtEQUFrRCxzREFBWTtBQUM5RCx5REFBeUQsc0RBQVk7QUFDckUsb0NBQW9DLHNEQUFZO0FBQ2hEO0FBQ0E7QUFDQSx1Q0FBdUMsc0RBQVk7QUFDbkQ7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBQYXRoID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQYXRoLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBhdGgoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3BhdGgnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBQYXRoLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3BhdGgnICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgX3RoaXMuX2Zvcm1hdFBhdGgodmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGF0dHIgPT09ICdzdGFydEFycm93JyB8fCBhdHRyID09PSAnZW5kQXJyb3cnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGlzT2JqZWN0KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjb250ZXh0LmFkZEFycm93KGF0dHJzLCBTVkdfQVRUUl9NQVBbYXR0cl0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRleHQuZ2V0RGVmYXVsdEFycm93KGF0dHJzLCBTVkdfQVRUUl9NQVBbYXR0cl0pO1xuICAgICAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCBcInVybCgjXCIgKyBpZCArIFwiKVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5fZm9ybWF0UGF0aCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgbmV3VmFsdWUgPSB2YWx1ZVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbignICcpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgICAgICBpZiAofm5ld1ZhbHVlLmluZGV4T2YoJ05hTicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHRvdGFsIGxlbmd0aCBvZiBwYXRoXG4gICAgICog5bC9566h6YCa6L+H5rWP6KeI5Zmo55qEIFNWR1BhdGhFbGVtZW50LmdldFRvdGFsTGVuZ3RoKCkg5o6l5Y+j6I635Y+W55qEIHBhdGgg6ZW/5bqm77yMXG4gICAgICog5LiOIENhbnZhcyDniYjmnKzpgJrov4fmlbDlraborqHnrpfnmoTmlrnlvI/lvpfliLDnmoTplb/luqbmnInkuIDkupvnu4blvq7lt67lvILvvIzkvYbmnIDlpKfor6/lt67lnKjkuKrkvY3mlbDlg4/ntKDvvIznsr7luqbkuIrlj6/ku6Xog73mjqXlj5dcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgcmV0dXJuIGVsID8gZWwuZ2V0VG90YWxMZW5ndGgoKSA6IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL2cvaXNzdWVzLzYzNFxuICAgICAgICBpZiAodG90YWxMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2ludCA9IGVsID8gZWwuZ2V0UG9pbnRBdExlbmd0aChyYXRpbyAqIHRvdGFsTGVuZ3RoKSA6IG51bGw7XG4gICAgICAgIHJldHVybiBwb2ludFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICAgICAgICB5OiBwb2ludC55LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFBhdGg7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUGF0aDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/polygon.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/polygon.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polygon.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BvbHlnb24uanM/MDllOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQzJDO0FBQ0E7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixxQ0FBcUMsMERBQU87QUFDNUMsc0VBQXNFLGtDQUFrQyxFQUFFO0FBQzFHO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vc2hhcGUvcG9seWdvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHBvbHlnb25cbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgZWFjaCwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIFBvbHlnb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlnb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG9seWdvbigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncG9seWdvbic7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFBvbHlnb24ucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAncG9pbnRzJyAmJiBpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgncG9pbnRzJywgdmFsdWUubWFwKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnRbMF0gKyBcIixcIiArIHBvaW50WzFdOyB9KS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBQb2x5Z29uO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBvbHlnb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/polygon.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/polyline.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/polyline.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n\n\n\n\n\nvar Polyline = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polyline';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polyline.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n // 更新属性时,检测是否更改了 points\n Polyline.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n Polyline.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n Polyline.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n Polyline.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Polyline.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n Polyline.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Polyline.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Polyline.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polyline);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BvbHlsaW5lLmpzP2Q5MjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ1k7QUFDUjtBQUNFO0FBQ1A7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFDQUFxQztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1oscUNBQXFDLDBEQUFPO0FBQzVDLHNFQUFzRSxrQ0FBa0MsRUFBRTtBQUMxRztBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBLGdDQUFnQyxxREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFBvbHlsaW5lIGFzIFBvbHlsaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzQXJyYXksIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgUG9seWxpbmUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlsaW5lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBvbHlsaW5lKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdwb2x5bGluZSc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFBvbHlsaW5lLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcG9pbnRzXG4gICAgUG9seWxpbmUucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAoWydwb2ludHMnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRDYWNoZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBQb2x5bGluZS5wcm90b3R5cGUuX3Jlc2V0Q2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgbnVsbCk7XG4gICAgfTtcbiAgICBQb2x5bGluZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICdwb2ludHMnICYmIGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdwb2ludHMnLCB2YWx1ZS5tYXAoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludFswXSArIFwiLFwiICsgcG9pbnRbMV07IH0pLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGxlbmd0aCBvZiBwb2x5bGluZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICAvLyBnZXQgdG90YWxMZW5ndGggZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICAgICAgaWYgKCFpc05pbCh0b3RhbExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCBQb2x5bGluZVV0aWwubGVuZ3RoKHBvaW50cykpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIC8vIGdldCB0Q2FjaGUgZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdENhY2hlID0gdGhpcy5nZXQoJ3RDYWNoZScpO1xuICAgICAgICBpZiAoIXRDYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGNhY2hlKCk7XG4gICAgICAgICAgICB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnQ7XG4gICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgZWFjaCh0Q2FjaGUsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAocmF0aW8gPj0gdlswXSAmJiByYXRpbyA8PSB2WzFdKSB7XG4gICAgICAgICAgICAgICAgc3VidCA9IChyYXRpbyAtIHZbMF0pIC8gKHZbMV0gLSB2WzBdKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdChwb2ludHNbaW5kZXhdWzBdLCBwb2ludHNbaW5kZXhdWzFdLCBwb2ludHNbaW5kZXggKyAxXVswXSwgcG9pbnRzW2luZGV4ICsgMV1bMV0sIHN1YnQpO1xuICAgIH07XG4gICAgUG9seWxpbmUucHJvdG90eXBlLl9zZXRUY2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIGlmICghcG9pbnRzIHx8IHBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRlbXBMZW5ndGggPSAwO1xuICAgICAgICB2YXIgdENhY2hlID0gW107XG4gICAgICAgIHZhciBzZWdtZW50VDtcbiAgICAgICAgdmFyIHNlZ21lbnRMO1xuICAgICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHAsIGkpIHtcbiAgICAgICAgICAgIGlmIChwb2ludHNbaSArIDFdKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudFQgPSBbXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFswXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICBzZWdtZW50TCA9IExpbmVVdGlsLmxlbmd0aChwWzBdLCBwWzFdLCBwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdKTtcbiAgICAgICAgICAgICAgICB0ZW1wTGVuZ3RoICs9IHNlZ21lbnRMO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzFdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRDYWNoZS5wdXNoKHNlZ21lbnRUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCB0Q2FjaGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHN0YXJ0IHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldFN0YXJ0VGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgZW5kIHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldEVuZFRhbmdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHZhciBsID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsIC0gMV1bMF0sIHBvaW50c1tsIC0gMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsXVswXSwgcG9pbnRzW2xdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gUG9seWxpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUG9seWxpbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/polyline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/rect.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/rect.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/format */ \"./node_modules/@antv/g-svg/esm/util/format.js\");\n/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'rect';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n var completed = false;\n // 和组装 path 相关的绘图属性\n var pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', _this._assembleRect(attrs));\n completed = true;\n }\n else if (pathRelatedAttrs.indexOf(attr) === -1 && _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Rect.prototype._assembleRect = function (attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n var radius = attrs.radius;\n if (!radius) {\n return \"M \" + x + \",\" + y + \" l \" + w + \",0 l 0,\" + h + \" l\" + -w + \" 0 z\";\n }\n var r = Object(_util_format__WEBPACK_IMPORTED_MODULE_4__[\"parseRadius\"])(radius);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n }\n else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n }\n else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n }\n else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n }\n else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n var d = [\n [\"M \" + (x + r.r1) + \",\" + y],\n [\"l \" + (w - r.r1 - r.r2) + \",0\"],\n [\"a \" + r.r2 + \",\" + r.r2 + \",0,0,1,\" + r.r2 + \",\" + r.r2],\n [\"l 0,\" + (h - r.r2 - r.r3)],\n [\"a \" + r.r3 + \",\" + r.r3 + \",0,0,1,\" + -r.r3 + \",\" + r.r3],\n [\"l \" + (r.r3 + r.r4 - w) + \",0\"],\n [\"a \" + r.r4 + \",\" + r.r4 + \",0,0,1,\" + -r.r4 + \",\" + -r.r4],\n [\"l 0,\" + (r.r4 + r.r1 - h)],\n [\"a \" + r.r1 + \",\" + r.r1 + \",0,0,1,\" + r.r1 + \",\" + -r.r1],\n ['z'],\n ];\n return d.join(' ');\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3JlY3QuanM/NzVlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNEO0FBQ1o7QUFDWTtBQUNFO0FBQzdDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsNkNBQTZDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxzREFBWTtBQUMxRSxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0VBQVc7QUFDM0IsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgcmVjdFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgeyBwYXJzZVJhZGl1cyB9IGZyb20gJy4uL3V0aWwvZm9ybWF0JztcbnZhciBSZWN0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlY3QoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3JlY3QnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBSZWN0LnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHg6IDAsIHk6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAsIHJhZGl1czogMCB9KTtcbiAgICB9O1xuICAgIFJlY3QucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICAvLyDliqDkuIrnirbmgIHph4/vvIznlKjmnaXmoIforrAgcGF0aCDmmK/lkKblt7Lnu4Too4VcbiAgICAgICAgdmFyIGNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAvLyDlkoznu4Too4UgcGF0aCDnm7jlhbPnmoTnu5jlm77lsZ7mgKdcbiAgICAgICAgdmFyIHBhdGhSZWxhdGVkQXR0cnMgPSBbJ3gnLCAneScsICd3aWR0aCcsICdoZWlnaHQnLCAncmFkaXVzJ107XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKHBhdGhSZWxhdGVkQXR0cnMuaW5kZXhPZihhdHRyKSAhPT0gLTEgJiYgIWNvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZCcsIF90aGlzLl9hc3NlbWJsZVJlY3QoYXR0cnMpKTtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGF0aFJlbGF0ZWRBdHRycy5pbmRleE9mKGF0dHIpID09PSAtMSAmJiBTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuX2Fzc2VtYmxlUmVjdCA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgICAgICAgdmFyIGggPSBhdHRycy5oZWlnaHQ7XG4gICAgICAgIHZhciByYWRpdXMgPSBhdHRycy5yYWRpdXM7XG4gICAgICAgIGlmICghcmFkaXVzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJNIFwiICsgeCArIFwiLFwiICsgeSArIFwiIGwgXCIgKyB3ICsgXCIsMCBsIDAsXCIgKyBoICsgXCIgbFwiICsgLXcgKyBcIiAwIHpcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHBhcnNlUmFkaXVzKHJhZGl1cyk7XG4gICAgICAgIGlmIChpc0FycmF5KHJhZGl1cykpIHtcbiAgICAgICAgICAgIGlmIChyYWRpdXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgci5yMSA9IHIucjIgPSByLnIzID0gci5yNCA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICByLnIxID0gci5yMyA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgICAgICByLnIyID0gci5yNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgICAgICByLnIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgICAgIHIucjIgPSByLnI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgICAgIHIucjMgPSByYWRpdXNbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByLnIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgICAgIHIucjIgPSByYWRpdXNbMV07XG4gICAgICAgICAgICAgICAgci5yMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgICAgICByLnI0ID0gcmFkaXVzWzNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgci5yMSA9IHIucjIgPSByLnIzID0gci5yNCA9IHJhZGl1cztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZCA9IFtcbiAgICAgICAgICAgIFtcIk0gXCIgKyAoeCArIHIucjEpICsgXCIsXCIgKyB5XSxcbiAgICAgICAgICAgIFtcImwgXCIgKyAodyAtIHIucjEgLSByLnIyKSArIFwiLDBcIl0sXG4gICAgICAgICAgICBbXCJhIFwiICsgci5yMiArIFwiLFwiICsgci5yMiArIFwiLDAsMCwxLFwiICsgci5yMiArIFwiLFwiICsgci5yMl0sXG4gICAgICAgICAgICBbXCJsIDAsXCIgKyAoaCAtIHIucjIgLSByLnIzKV0sXG4gICAgICAgICAgICBbXCJhIFwiICsgci5yMyArIFwiLFwiICsgci5yMyArIFwiLDAsMCwxLFwiICsgLXIucjMgKyBcIixcIiArIHIucjNdLFxuICAgICAgICAgICAgW1wibCBcIiArIChyLnIzICsgci5yNCAtIHcpICsgXCIsMFwiXSxcbiAgICAgICAgICAgIFtcImEgXCIgKyByLnI0ICsgXCIsXCIgKyByLnI0ICsgXCIsMCwwLDEsXCIgKyAtci5yNCArIFwiLFwiICsgLXIucjRdLFxuICAgICAgICAgICAgW1wibCAwLFwiICsgKHIucjQgKyByLnIxIC0gaCldLFxuICAgICAgICAgICAgW1wiYSBcIiArIHIucjEgKyBcIixcIiArIHIucjEgKyBcIiwwLDAsMSxcIiArIHIucjEgKyBcIixcIiArIC1yLnIxXSxcbiAgICAgICAgICAgIFsneiddLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gZC5qb2luKCcgJyk7XG4gICAgfTtcbiAgICByZXR1cm4gUmVjdDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBSZWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/shape/text.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/shape/text.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! detect-browser */ \"./node_modules/detect-browser/es/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\nvar LETTER_SPACING = 0.3;\nvar BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging',\n};\n// for FireFox\nvar BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging',\n};\nvar ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end',\n};\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'text';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n Text.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n this._setFont();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'text') {\n _this._setText(\"\" + value);\n }\n else if (attr === 'matrix' && value) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_3__[\"setTransform\"])(_this);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n };\n Text.prototype._setFont = function () {\n var el = this.get('el');\n var _a = this.attr(), textBaseline = _a.textBaseline, textAlign = _a.textAlign;\n var browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_2__[\"detect\"])();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n }\n else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n };\n Text.prototype._setText = function (text) {\n var el = this.get('el');\n var _a = this.attr(), x = _a.x, _b = _a.textBaseline, baseline = _b === void 0 ? 'bottom' : _b;\n if (!text) {\n el.innerHTML = '';\n }\n else if (~text.indexOf('\\n')) {\n var textArr = text.split('\\n');\n var textLen_1 = textArr.length - 1;\n var arr_1 = '';\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(textArr, function (segment, i) {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'top') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'middle') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'bottom') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'hanging') {\n arr_1 += \"\" + segment + \"\";\n }\n }\n else {\n arr_1 += \"\" + segment + \"\";\n }\n });\n el.innerHTML = arr_1;\n }\n else {\n el.innerHTML = text;\n }\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3RleHQuanM/OTQ2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ1Y7QUFDTTtBQUNHO0FBQ0E7QUFDWjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywrS0FBK0s7QUFDN047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFZO0FBQzVCO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBLHNEQUFzRCx1QkFBdUI7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNkRBQU07QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS90ZXh0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHRleHRcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSAnZGV0ZWN0LWJyb3dzZXInO1xuaW1wb3J0IHsgc2V0VHJhbnNmb3JtIH0gZnJvbSAnLi4vdXRpbC9zdmcnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIExFVFRFUl9TUEFDSU5HID0gMC4zO1xudmFyIEJBU0VMSU5FX01BUCA9IHtcbiAgICB0b3A6ICdiZWZvcmUtZWRnZScsXG4gICAgbWlkZGxlOiAnY2VudHJhbCcsXG4gICAgYm90dG9tOiAnYWZ0ZXItZWRnZScsXG4gICAgYWxwaGFiZXRpYzogJ2Jhc2VsaW5lJyxcbiAgICBoYW5naW5nOiAnaGFuZ2luZycsXG59O1xuLy8gZm9yIEZpcmVGb3hcbnZhciBCQVNFTElORV9NQVBfRk9SX0ZJUkVGT1ggPSB7XG4gICAgdG9wOiAndGV4dC1iZWZvcmUtZWRnZScsXG4gICAgbWlkZGxlOiAnY2VudHJhbCcsXG4gICAgYm90dG9tOiAndGV4dC1hZnRlci1lZGdlJyxcbiAgICBhbHBoYWJldGljOiAnYWxwaGFiZXRpYycsXG4gICAgaGFuZ2luZzogJ2hhbmdpbmcnLFxufTtcbnZhciBBTkNIT1JfTUFQID0ge1xuICAgIGxlZnQ6ICdsZWZ0JyxcbiAgICBzdGFydDogJ2xlZnQnLFxuICAgIGNlbnRlcjogJ21pZGRsZScsXG4gICAgcmlnaHQ6ICdlbmQnLFxuICAgIGVuZDogJ2VuZCcsXG59O1xudmFyIFRleHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRleHQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGV4dCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAndGV4dCc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRleHQucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgdGV4dDogbnVsbCwgZm9udFNpemU6IDEyLCBmb250RmFtaWx5OiAnc2Fucy1zZXJpZicsIGZvbnRTdHlsZTogJ25vcm1hbCcsIGZvbnRXZWlnaHQ6ICdub3JtYWwnLCBmb250VmFyaWFudDogJ25vcm1hbCcsIHRleHRBbGlnbjogJ3N0YXJ0JywgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyB9KTtcbiAgICB9O1xuICAgIFRleHQucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB0aGlzLl9zZXRGb250KCk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgIF90aGlzLl9zZXRUZXh0KFwiXCIgKyB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhdHRyID09PSAnbWF0cml4JyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNldFRyYW5zZm9ybShfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3BhaW50LW9yZGVyJywgJ3N0cm9rZScpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3N0cm9rZS1saW5lY2FwOmJ1dHQ7IHN0cm9rZS1saW5lam9pbjptaXRlcjsnKTtcbiAgICB9O1xuICAgIFRleHQucHJvdG90eXBlLl9zZXRGb250ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHRleHRCYXNlbGluZSA9IF9hLnRleHRCYXNlbGluZSwgdGV4dEFsaWduID0gX2EudGV4dEFsaWduO1xuICAgICAgICB2YXIgYnJvd3NlciA9IGRldGVjdCgpO1xuICAgICAgICBpZiAoYnJvd3NlciAmJiBicm93c2VyLm5hbWUgPT09ICdmaXJlZm94Jykge1xuICAgICAgICAgICAgLy8gY29tcGF0aWJsZSB3aXRoIEZpcmVGb3ggYnJvd3NlciwgcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL2cvaXNzdWVzLzExOVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkb21pbmFudC1iYXNlbGluZScsIEJBU0VMSU5FX01BUF9GT1JfRklSRUZPWFt0ZXh0QmFzZWxpbmVdIHx8ICdhbHBoYWJldGljJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2FsaWdubWVudC1iYXNlbGluZScsIEJBU0VMSU5FX01BUFt0ZXh0QmFzZWxpbmVdIHx8ICdiYXNlbGluZScpO1xuICAgICAgICB9XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndGV4dC1hbmNob3InLCBBTkNIT1JfTUFQW3RleHRBbGlnbl0gfHwgJ2xlZnQnKTtcbiAgICB9O1xuICAgIFRleHQucHJvdG90eXBlLl9zZXRUZXh0ID0gZnVuY3Rpb24gKHRleHQpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4ID0gX2EueCwgX2IgPSBfYS50ZXh0QmFzZWxpbmUsIGJhc2VsaW5lID0gX2IgPT09IHZvaWQgMCA/ICdib3R0b20nIDogX2I7XG4gICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAofnRleHQuaW5kZXhPZignXFxuJykpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0QXJyID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICB2YXIgdGV4dExlbl8xID0gdGV4dEFyci5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdmFyIGFycl8xID0gJyc7XG4gICAgICAgICAgICBlYWNoKHRleHRBcnIsIGZ1bmN0aW9uIChzZWdtZW50LCBpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VsaW5lID09PSAnYWxwaGFiZXRpYycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycl8xICs9IFwiPHRzcGFuIHg9XFxcIlwiICsgeCArIFwiXFxcIiBkeT1cXFwiXCIgKyAtdGV4dExlbl8xICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCIwLjllbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAnbWlkZGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCJcIiArIC0odGV4dExlbl8xIC0gMSkgLyAyICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCItXCIgKyAodGV4dExlbl8xICsgTEVUVEVSX1NQQUNJTkcpICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAnaGFuZ2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycl8xICs9IFwiPHRzcGFuIHg9XFxcIlwiICsgeCArIFwiXFxcIiBkeT1cXFwiXCIgKyAoLSh0ZXh0TGVuXzEgLSAxKSAtIExFVFRFUl9TUEFDSU5HKSArIFwiZW1cXFwiPlwiICsgc2VnbWVudCArIFwiPC90c3Bhbj5cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCIxZW1cXFwiPlwiICsgc2VnbWVudCArIFwiPC90c3Bhbj5cIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IGFycl8xO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFRleHQ7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/text.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/util/dom.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/util/dom.js ***!
\**************************************************/
/*! exports provided: createSVGElement, createDom, sortDom, moveTo */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSVGElement\", function() { return createSVGElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return createDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortDom\", function() { return sortDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveTo\", function() { return moveTo; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n\n\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nfunction createSVGElement(type) {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nfunction createDom(shape) {\n var type = _constant__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE_TO_TAGS\"][shape.type];\n var parent = shape.getParent();\n if (!type) {\n throw new Error(\"the type \" + shape.type + \" is not supported by svg\");\n }\n var element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nfunction sortDom(element, sorter) {\n var el = element.get('el');\n var childList = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toArray\"])(el.children).sort(sorter);\n // create empty fragment\n var fragment = document.createDocumentFragment();\n childList.forEach(function (child) {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nfunction moveTo(element, targetIndex) {\n var parentNode = element.parentNode;\n var siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n function (node) { return node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs'; });\n // 获取目标节点\n var target = siblings[targetIndex];\n var currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n }\n else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n var targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n }\n else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n }\n else {\n parentNode.appendChild(element);\n }\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZG9tLmpzPzczZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxlQUFlLHVEQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQSxvQkFBb0IsMERBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQXNFLEVBQUU7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZG9tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU0hBUEVfVE9fVEFHUyB9IGZyb20gJy4uL2NvbnN0YW50Jztcbi8qKlxuICog5Yib5bu65bm26L+U5Zue5Zu+5b2i55qEIHN2ZyDlhYPntKBcbiAqIEBwYXJhbSB0eXBlIHN2Z+exu+Wei1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU1ZHRWxlbWVudCh0eXBlKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCB0eXBlKTtcbn1cbi8qKlxuICog5Yib5bu65bm26L+U5Zue5Zu+5b2i55qEIGRvbSDlhYPntKBcbiAqIEBwYXJhbSAge0lTaGFwZX0gc2hhcGUg5Zu+5b2iXG4gKiBAcmV0dXJuIHtTVkdFbGVtZW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRG9tKHNoYXBlKSB7XG4gICAgdmFyIHR5cGUgPSBTSEFQRV9UT19UQUdTW3NoYXBlLnR5cGVdO1xuICAgIHZhciBwYXJlbnQgPSBzaGFwZS5nZXRQYXJlbnQoKTtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGhlIHR5cGUgXCIgKyBzaGFwZS50eXBlICsgXCIgaXMgbm90IHN1cHBvcnRlZCBieSBzdmdcIik7XG4gICAgfVxuICAgIHZhciBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCh0eXBlKTtcbiAgICBpZiAoc2hhcGUuZ2V0KCdpZCcpKSB7XG4gICAgICAgIGVsZW1lbnQuaWQgPSBzaGFwZS5nZXQoJ2lkJyk7XG4gICAgfVxuICAgIHNoYXBlLnNldCgnZWwnLCBlbGVtZW50KTtcbiAgICBzaGFwZS5zZXQoJ2F0dHJzJywge30pO1xuICAgIC8vIOWvueS6jiBkZWZzIOS4i+eahCBkb20g6IqC54K577yMcGFyZW50IOS4uuepuu+8jOmAmui/hyBjb250ZXh0IOe7n+S4gOaMgui9veWIsCBkZWZzIOiKgueCueS4i1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBwYXJlbnQuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhcmVudE5vZGUgbWF5YmUgbnVsbCBmb3IgZ3JvdXBcbiAgICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnQuY3JlYXRlRG9tKCk7XG4gICAgICAgICAgICBwYXJlbnQuc2V0KCdlbCcsIHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbn1cbi8qKlxuICog5a+5IGRvbSDlhYPntKDov5vooYzmjpLluo9cbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQgIOWFg+e0oFxuICogQHBhcmFtIHtzb3J0ZXJ9ICAgZnVuY3Rpb24g5o6S5bqP5Ye95pWwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RG9tKGVsZW1lbnQsIHNvcnRlcikge1xuICAgIHZhciBlbCA9IGVsZW1lbnQuZ2V0KCdlbCcpO1xuICAgIHZhciBjaGlsZExpc3QgPSB0b0FycmF5KGVsLmNoaWxkcmVuKS5zb3J0KHNvcnRlcik7XG4gICAgLy8gY3JlYXRlIGVtcHR5IGZyYWdtZW50XG4gICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIGNoaWxkTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgfSk7XG4gICAgZWwuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xufVxuLyoqXG4gKiDlsIYgZG9tIOWFg+e0oOenu+WKqOWIsOeItuWFg+e0oOS4i+eahOaMh+WumuS9jee9rlxuICogQHBhcmFtIHtTVkdFbGVtZW50fSBlbGVtZW50ICAgICBkb20g5YWD57SgXG4gKiBAcGFyYW0ge251bWJlcn0gICAgIHRhcmdldEluZGV4IOebruagh+S9jee9rijku44gMCDlvIDlp4spXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlVG8oZWxlbWVudCwgdGFyZ2V0SW5kZXgpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICB2YXIgc2libGluZ3MgPSBBcnJheS5mcm9tKHBhcmVudE5vZGUuY2hpbGROb2RlcykuZmlsdGVyKFxuICAgIC8vIOimgeaxguS4uuWFg+e0oOiKgueCue+8jOS4lOS4jeiDveS4uiBkZWZzIOiKgueCuVxuICAgIGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2RlZnMnOyB9KTtcbiAgICAvLyDojrflj5bnm67moIfoioLngrlcbiAgICB2YXIgdGFyZ2V0ID0gc2libGluZ3NbdGFyZ2V0SW5kZXhdO1xuICAgIHZhciBjdXJyZW50SW5kZXggPSBzaWJsaW5ncy5pbmRleE9mKGVsZW1lbnQpO1xuICAgIC8vIOWmguaenOebruagh+iKgueCueWtmOWcqFxuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgLy8g5b2T5YmN57Si5byVID4g55uu5qCH57Si5byV77yM55u05o6l5o+S5YWl5Yiw55uu5qCH6IqC54K55LmL5YmN5Y2z5Y+vXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPiB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50SW5kZXggPCB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgLy8g5b2T5YmN57Si5byVIDwg55uu5qCH57Si5byVXG4gICAgICAgICAgICAvLyDojrflj5bnm67moIfoioLngrnnmoTkuIvkuIDkuKroioLngrlcbiAgICAgICAgICAgIHZhciB0YXJnZXROZXh0ID0gc2libGluZ3NbdGFyZ2V0SW5kZXggKyAxXTtcbiAgICAgICAgICAgIC8vIOWmguaenOebruagh+iKgueCueeahOS4i+S4gOS4quiKgueCueWtmOWcqO+8jOaPkuWFpeWIsOivpeiKgueCueS5i+WJjVxuICAgICAgICAgICAgaWYgKHRhcmdldE5leHQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXROZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOivpeiKgueCueS4jeWtmOWcqO+8jOWImei/veWKoOWIsOacq+WwvlxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/dom.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/util/draw.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/util/draw.js ***!
\***************************************************/
/*! exports provided: drawChildren, refreshElement */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony import */ var _svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n\n\nfunction drawChildren(context, children) {\n children.forEach(function (child) {\n child.draw(context);\n });\n}\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nfunction refreshElement(element, changeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n var canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n var parent_1 = element.getParent();\n var parentChildren = parent_1 ? parent_1.getChildren() : [canvas];\n var el = element.get('el');\n if (changeType === 'remove') {\n var isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n var clipPathEl = el && el.parentNode;\n var defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n }\n else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n }\n else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n }\n else if (changeType === 'zIndex') {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"moveTo\"])(el, parentChildren.indexOf(element));\n }\n else if (changeType === 'sort') {\n var children_1 = element.get('children');\n if (children_1 && children_1.length) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"sortDom\"])(element, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n }\n else if (changeType === 'matrix') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setTransform\"])(element);\n }\n else if (changeType === 'clip') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setClip\"])(element, context);\n }\n else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n }\n else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZHJhdy5qcz83MzQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBOEM7QUFDTjtBQUNqQztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsV0FBVztBQUN0QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksbURBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQU87QUFDdkI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBWTtBQUN4QjtBQUNBO0FBQ0EsWUFBWSxvREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vdXRpbC9kcmF3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2V0VHJhbnNmb3JtLCBzZXRDbGlwIH0gZnJvbSAnLi9zdmcnO1xuaW1wb3J0IHsgc29ydERvbSwgbW92ZVRvIH0gZnJvbSAnLi9kb20nO1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbikge1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGNoaWxkLmRyYXcoY29udGV4dCk7XG4gICAgfSk7XG59XG4vKipcbiAqIOabtOaWsOWFg+e0oO+8jOWMheaLrCBncm91cCDlkowgc2hhcGVcbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQgICAgICAgU1ZHIOWFg+e0oFxuICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlICDmm7TmlrDnsbvlnotcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2hFbGVtZW50KGVsZW1lbnQsIGNoYW5nZVR5cGUpIHtcbiAgICAvLyDlr7nkuo7ov5jmsqHmnInmjILovb3liLDnlLvluIPkuIvnmoTlhYPntKDvvIxjYW52YXMg5Y+v6IO95Li656m6XG4gICAgdmFyIGNhbnZhcyA9IGVsZW1lbnQuZ2V0KCdjYW52YXMnKTtcbiAgICAvLyDlj6rmnInmjILovb3liLDnlLvluIPkuIvvvIzmiY3lr7nlhYPntKDov5vooYzlrp7pmYXmuLLmn5NcbiAgICBpZiAoY2FudmFzICYmIGNhbnZhcy5nZXQoJ2F1dG9EcmF3JykpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBwYXJlbnRfMSA9IGVsZW1lbnQuZ2V0UGFyZW50KCk7XG4gICAgICAgIHZhciBwYXJlbnRDaGlsZHJlbiA9IHBhcmVudF8xID8gcGFyZW50XzEuZ2V0Q2hpbGRyZW4oKSA6IFtjYW52YXNdO1xuICAgICAgICB2YXIgZWwgPSBlbGVtZW50LmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICB2YXIgaXNDbGlwU2hhcGUgPSBlbGVtZW50LmdldCgnaXNDbGlwU2hhcGUnKTtcbiAgICAgICAgICAgIC8vIOWvueS6jiBjbGlw77yM5LiN5LuF6ZyA6KaB5bCGIGNsaXBTaGFwZSDlr7nkuo7nmoQgU1ZHIOWFg+e0oOWIoOmZpO+8jOi/mOmcgOimgeWwhuS4iuWxgueahCBjbGlwUGF0aCDlhYPntKDkuZ/liKDpmaRcbiAgICAgICAgICAgIGlmIChpc0NsaXBTaGFwZSkge1xuICAgICAgICAgICAgICAgIHZhciBjbGlwUGF0aEVsID0gZWwgJiYgZWwucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgZGVmc0VsID0gY2xpcFBhdGhFbCAmJiBjbGlwUGF0aEVsLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgaWYgKGNsaXBQYXRoRWwgJiYgZGVmc0VsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZnNFbC5yZW1vdmVDaGlsZChjbGlwUGF0aEVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlbCAmJiBlbC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdoaWRlJykge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICd6SW5kZXgnKSB7XG4gICAgICAgICAgICBtb3ZlVG8oZWwsIHBhcmVudENoaWxkcmVuLmluZGV4T2YoZWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdzb3J0Jykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuXzEgPSBlbGVtZW50LmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbl8xICYmIGNoaWxkcmVuXzEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc29ydERvbShlbGVtZW50LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW5fMS5pbmRleE9mKGEpIC0gY2hpbGRyZW5fMS5pbmRleE9mKGIpID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NsZWFyJykge1xuICAgICAgICAgICAgLy8gZWwgbWF5YmUgbnVsbCBmb3IgZ3JvdXBcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGVsLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdtYXRyaXgnKSB7XG4gICAgICAgICAgICBzZXRUcmFuc2Zvcm0oZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NsaXAnKSB7XG4gICAgICAgICAgICBzZXRDbGlwKGVsZW1lbnQsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdhdHRyJykge1xuICAgICAgICAgICAgLy8g5bey5ZyoIGFmdGVyQXR0cnNDaGFuZ2Ug6L+b6KGM5LqG5aSE55CG77yM5q2k5aSEIGRvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnYWRkJykge1xuICAgICAgICAgICAgZWxlbWVudC5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZHJhdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/draw.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/util/format.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/util/format.js ***!
\*****************************************************/
/*! exports provided: parseRadius, parsePath */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return parsePath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nvar regexDot = /[^\\s,]+/gi;\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4,\n };\n}\nfunction parsePath(path) {\n path = path || [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n return path;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(path)) {\n path = path.match(regexTags);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(path, function (item, index) {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(item, function (sub, i) {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}\n//# sourceMappingURL=format.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZm9ybWF0LmpzP2YyNzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDckQ7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZm9ybWF0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbnZhciByZWdleFRhZ3MgPSAvW01MSFZRVENTQVpdKFteTUxIVlFUQ1NBWl0qKS9naTtcbnZhciByZWdleERvdCA9IC9bXlxccyxdKy9naTtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJhZGl1cyhyYWRpdXMpIHtcbiAgICB2YXIgcjEgPSAwO1xuICAgIHZhciByMiA9IDA7XG4gICAgdmFyIHIzID0gMDtcbiAgICB2YXIgcjQgPSAwO1xuICAgIGlmIChpc0FycmF5KHJhZGl1cykpIHtcbiAgICAgICAgaWYgKHJhZGl1cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHIxID0gcjMgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgICAgICAgcjQgPSByYWRpdXNbM107XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByMTogcjEsXG4gICAgICAgIHIyOiByMixcbiAgICAgICAgcjM6IHIzLFxuICAgICAgICByNDogcjQsXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdGgocGF0aCkge1xuICAgIHBhdGggPSBwYXRoIHx8IFtdO1xuICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgcGF0aCA9IHBhdGgubWF0Y2gocmVnZXhUYWdzKTtcbiAgICAgICAgZWFjaChwYXRoLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLm1hdGNoKHJlZ2V4RG90KTtcbiAgICAgICAgICAgIGlmIChpdGVtWzBdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFnID0gaXRlbVswXS5jaGFyQXQoMCk7XG4gICAgICAgICAgICAgICAgaXRlbS5zcGxpY2UoMSwgMCwgaXRlbVswXS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgICAgIGl0ZW1bMF0gPSB0YWc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlYWNoKGl0ZW0sIGZ1bmN0aW9uIChzdWIsIGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKHN1YikpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVtpXSA9ICtzdWI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwYXRoW2luZGV4XSA9IGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JtYXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/format.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-svg/esm/util/svg.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-svg/esm/util/svg.js ***!
\**************************************************/
/*! exports provided: setShadow, setTransform, setClip */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setShadow\", function() { return setShadow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTransform\", function() { return setTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClip\", function() { return setClip; });\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n\nfunction setShadow(model, context) {\n var el = model.cfg.el;\n var attrs = model.attr();\n var cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor,\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n }\n else {\n var id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', \"url(#\" + id + \")\");\n }\n}\nfunction setTransform(model) {\n var matrix = model.attr().matrix;\n if (matrix) {\n var el = model.cfg.el;\n var transform = [];\n for (var i = 0; i < 9; i += 3) {\n transform.push(matrix[i] + \",\" + matrix[i + 1]);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', \"matrix(\" + transform + \")\");\n }\n else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\nfunction setClip(model, context) {\n var clip = model.getClip();\n var el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n }\n else if (clip && !el.hasAttribute('clip-path')) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(clip);\n clip.createPath(context);\n var id = context.addClip(clip);\n el.setAttribute('clip-path', \"url(#\" + id + \")\");\n }\n}\n//# sourceMappingURL=svg.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvc3ZnLmpzPzAwZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUMzQjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVM7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS91dGlsL3N2Zy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZURvbSB9IGZyb20gJy4vZG9tJztcbmV4cG9ydCBmdW5jdGlvbiBzZXRTaGFkb3cobW9kZWwsIGNvbnRleHQpIHtcbiAgICB2YXIgZWwgPSBtb2RlbC5jZmcuZWw7XG4gICAgdmFyIGF0dHJzID0gbW9kZWwuYXR0cigpO1xuICAgIHZhciBjZmcgPSB7XG4gICAgICAgIGR4OiBhdHRycy5zaGFkb3dPZmZzZXRYLFxuICAgICAgICBkeTogYXR0cnMuc2hhZG93T2Zmc2V0WSxcbiAgICAgICAgYmx1cjogYXR0cnMuc2hhZG93Qmx1cixcbiAgICAgICAgY29sb3I6IGF0dHJzLnNoYWRvd0NvbG9yLFxuICAgIH07XG4gICAgaWYgKCFjZmcuZHggJiYgIWNmZy5keSAmJiAhY2ZnLmJsdXIgJiYgIWNmZy5jb2xvcikge1xuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2ZpbHRlcicpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGlkID0gY29udGV4dC5maW5kKCdmaWx0ZXInLCBjZmcpO1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICBpZCA9IGNvbnRleHQuYWRkU2hhZG93KGNmZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdmaWx0ZXInLCBcInVybCgjXCIgKyBpZCArIFwiKVwiKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNmb3JtKG1vZGVsKSB7XG4gICAgdmFyIG1hdHJpeCA9IG1vZGVsLmF0dHIoKS5tYXRyaXg7XG4gICAgaWYgKG1hdHJpeCkge1xuICAgICAgICB2YXIgZWwgPSBtb2RlbC5jZmcuZWw7XG4gICAgICAgIHZhciB0cmFuc2Zvcm0gPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA5OyBpICs9IDMpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybS5wdXNoKG1hdHJpeFtpXSArIFwiLFwiICsgbWF0cml4W2kgKyAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLmpvaW4oJywnKTtcbiAgICAgICAgaWYgKHRyYW5zZm9ybS5pbmRleE9mKCdOYU4nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgXCJtYXRyaXgoXCIgKyB0cmFuc2Zvcm0gKyBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2ludmFsaWQgbWF0cml4OicsIG1hdHJpeCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0Q2xpcChtb2RlbCwgY29udGV4dCkge1xuICAgIHZhciBjbGlwID0gbW9kZWwuZ2V0Q2xpcCgpO1xuICAgIHZhciBlbCA9IG1vZGVsLmdldCgnZWwnKTtcbiAgICBpZiAoIWNsaXApIHtcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGlwLXBhdGgnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2xpcCAmJiAhZWwuaGFzQXR0cmlidXRlKCdjbGlwLXBhdGgnKSkge1xuICAgICAgICBjcmVhdGVEb20oY2xpcCk7XG4gICAgICAgIGNsaXAuY3JlYXRlUGF0aChjb250ZXh0KTtcbiAgICAgICAgdmFyIGlkID0gY29udGV4dC5hZGRDbGlwKGNsaXApO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsaXAtcGF0aCcsIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN2Zy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/svg.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/ComponentManager.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/ComponentManager.js ***!
\*****************************************************************/
/*! exports provided: Component, ComponentManager */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return Component; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return ComponentManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Entity */ \"./node_modules/@antv/g-webgpu-core/es/Entity.js\");\n\n\n\n\n\nvar Component = function Component(data) {//\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Component);\n};\n/**\n * 管理某一类 Component,尽可能做到 AoS 而非 SoA\n * @see https://wickedengine.net/2019/09/29/entity-component-system/\n * @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h\n */\n// tslint:disable-next-line:max-classes-per-file\n\nvar ComponentManager = /*#__PURE__*/function () {\n /**\n * 不在 Entity 中维护拥有的 Component 列表,反之亦然\n */\n function ComponentManager(clazz) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, ComponentManager);\n\n this.clazz = void 0;\n this.components = [];\n this.entities = [];\n this.lookup = {};\n this.clazz = clazz;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ComponentManager, [{\n key: \"clear\",\n value: function clear() {\n this.components = [];\n this.entities = [];\n this.lookup = {};\n }\n }, {\n key: \"contains\",\n value: function contains(entity) {\n return this.lookup[entity] > -1;\n }\n }, {\n key: \"create\",\n value: function create(entity, data) {\n this.lookup[entity] = this.components.length;\n var component = new this.clazz(data || {});\n this.components.push(component);\n this.entities.push(entity);\n return component;\n }\n }, {\n key: \"remove\",\n value: function remove(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n if (componentIndex < this.components.length - 1) {\n // 将待删除元素和最后一个元素交换\n // C++ 中有 std::move 这样的操作,避免数据的拷贝\n // @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h#L169\n this.components[componentIndex] = this.components[this.components.length - 1];\n this.entities[componentIndex] = this.entities[this.entities.length - 1];\n this.lookup[this.entities[componentIndex]] = componentIndex;\n }\n } // 待删除元素已经移动到了最后一个\n\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity];\n }\n }, {\n key: \"removeKeepSorted\",\n value: function removeKeepSorted(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n var entity2 = this.entities[componentIndex];\n\n if (componentIndex < this.components.length - 1) {\n // Move every component left by one that is after this element:\n for (var _i = componentIndex + 1; _i < this.components.length; ++_i) {\n this.components[_i - 1] = this.components[_i];\n } // Move every entity left by one that is after this element and update lut:\n\n\n for (var _i2 = componentIndex + 1; _i2 < this.entities.length; ++_i2) {\n this.entities[_i2 - 1] = this.entities[_i2];\n this.lookup[this.entities[_i2 - 1]] = _i2 - 1;\n }\n }\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity2];\n }\n }\n }, {\n key: \"moveItem\",\n value: function moveItem(srcIndex, destIndex) {\n if (srcIndex === destIndex) {\n return;\n } // Save the moved component and entity:\n\n\n var srcComponent = this.components[srcIndex];\n var srcEntity = this.entities[srcIndex]; // Every other entity-component that's in the way gets moved by one and lut is kept updated:\n\n var direction = srcIndex < destIndex ? 1 : -1;\n\n for (var _i3 = srcIndex; _i3 !== destIndex; _i3 += direction) {\n var next = _i3 + direction;\n this.components[_i3] = this.components[next];\n this.entities[_i3] = this.entities[next];\n this.lookup[this.entities[_i3]] = _i3;\n } // Saved entity-component moved to the required position:\n\n\n this.components[destIndex] = srcComponent;\n this.entities[destIndex] = srcEntity;\n this.lookup[srcEntity] = destIndex;\n }\n }, {\n key: \"getEntity\",\n value: function getEntity(index) {\n return this.entities[index];\n }\n /**\n * 由于缺少类似 C++ 的重载操作符,没法通过 [下标] 直接访问。因此只能增加该方法用于遍历。\n */\n\n }, {\n key: \"getComponent\",\n value: function getComponent(index) {\n return this.components[index];\n }\n }, {\n key: \"getComponentByEntity\",\n value: function getComponentByEntity(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n return this.components[componentIndex];\n }\n\n return null;\n }\n }, {\n key: \"getCount\",\n value: function getCount() {\n return this.components.length;\n }\n }, {\n key: \"getEntityByComponentIndex\",\n value: function getEntityByComponentIndex(componentIdx) {\n for (var _i4 = 0, _Object$keys = Object.keys(this.lookup); _i4 < _Object$keys.length; _i4++) {\n var _entity = _Object$keys[_i4];\n var entityInNum = Number(_entity);\n\n if (this.lookup[entityInNum] === componentIdx) {\n return entityInNum;\n }\n }\n\n return _Entity__WEBPACK_IMPORTED_MODULE_4__[\"EMPTY\"];\n }\n }, {\n key: \"find\",\n value: function find(callback) {\n for (var _i5 = 0; _i5 < this.getCount(); _i5++) {\n var _component = this.getComponent(_i5);\n\n if (callback(_component, _i5)) {\n return _component;\n }\n }\n\n return null;\n }\n }, {\n key: \"findIndex\",\n value: function findIndex(callback) {\n for (var _i6 = 0; _i6 < this.getCount(); _i6++) {\n var _component2 = this.getComponent(_i6);\n\n if (callback(_component2, _i6)) {\n return _i6;\n }\n }\n\n return -1;\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n for (var _i7 = 0, _Object$keys2 = Object.keys(this.lookup); _i7 < _Object$keys2.length; _i7++) {\n var _entity2 = _Object$keys2[_i7];\n var entityInNum = Number(_entity2);\n var componentIndex = this.lookup[entityInNum];\n callback(entityInNum, this.getComponent(componentIndex));\n }\n }\n }, {\n key: \"forEachAsync\",\n value: function () {\n var _forEachAsync = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(callback) {\n var _i8, _Object$keys3, _entity3, entityInNum, componentIndex;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _i8 = 0, _Object$keys3 = Object.keys(this.lookup);\n\n case 1:\n if (!(_i8 < _Object$keys3.length)) {\n _context.next = 10;\n break;\n }\n\n _entity3 = _Object$keys3[_i8];\n entityInNum = Number(_entity3);\n componentIndex = this.lookup[entityInNum];\n _context.next = 7;\n return callback(entityInNum, this.getComponent(componentIndex));\n\n case 7:\n _i8++;\n _context.next = 1;\n break;\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function forEachAsync(_x) {\n return _forEachAsync.apply(this, arguments);\n }\n\n return forEachAsync;\n }()\n }, {\n key: \"map\",\n value: function map(callback) {\n var result = [];\n\n for (var _i9 = 0, _Object$keys4 = Object.keys(this.lookup); _i9 < _Object$keys4.length; _i9++) {\n var _entity4 = _Object$keys4[_i9];\n var entityInNum = Number(_entity4);\n var componentIndex = this.lookup[entityInNum];\n result.push(callback(entityInNum, this.getComponent(componentIndex)));\n }\n\n return result;\n }\n }]);\n\n return ComponentManager;\n}();\n//# sourceMappingURL=ComponentManager.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9Db21wb25lbnRNYW5hZ2VyLmpzP2EwM2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDVjtBQUNNO0FBQ25DO0FBQzFCLDBDQUEwQzs7QUFFakQsRUFBRSw0RUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLDZCQUE2QjtBQUN4RTtBQUNBLFdBQVc7OztBQUdYLDRDQUE0Qyw0QkFBNEI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQSw4QkFBOEIsbUJBQW1CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFLDJCQUEyQjtBQUMzRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsNkNBQUs7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qix1QkFBdUI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLHVCQUF1QjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpRUFBaUUsNEJBQTRCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMEJBQTBCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUM3RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLGlFQUFpRSw0QkFBNEI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL0NvbXBvbmVudE1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJy4vRW50aXR5JztcbmV4cG9ydCB2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24gQ29tcG9uZW50KGRhdGEpIHsvL1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnQpO1xufTtcbi8qKlxuICog566h55CG5p+Q5LiA57G7IENvbXBvbmVudO+8jOWwveWPr+iDveWBmuWIsCBBb1Mg6ICM6Z2eIFNvQVxuICogQHNlZSBodHRwczovL3dpY2tlZGVuZ2luZS5uZXQvMjAxOS8wOS8yOS9lbnRpdHktY29tcG9uZW50LXN5c3RlbS9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtY2xhc3Nlcy1wZXItZmlsZVxuXG5leHBvcnQgdmFyIENvbXBvbmVudE1hbmFnZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog5LiN5ZyoIEVudGl0eSDkuK3nu7TmiqTmi6XmnInnmoQgQ29tcG9uZW50IOWIl+ihqO+8jOWPjeS5i+S6pueEtlxuICAgKi9cbiAgZnVuY3Rpb24gQ29tcG9uZW50TWFuYWdlcihjbGF6eikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnRNYW5hZ2VyKTtcblxuICAgIHRoaXMuY2xhenogPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgdGhpcy5lbnRpdGllcyA9IFtdO1xuICAgIHRoaXMubG9va3VwID0ge307XG4gICAgdGhpcy5jbGF6eiA9IGNsYXp6O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbXBvbmVudE1hbmFnZXIsIFt7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgICB0aGlzLmVudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxvb2t1cCA9IHt9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb250YWluc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWlucyhlbnRpdHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvb2t1cFtlbnRpdHldID4gLTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGUoZW50aXR5LCBkYXRhKSB7XG4gICAgICB0aGlzLmxvb2t1cFtlbnRpdHldID0gdGhpcy5jb21wb25lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBjb21wb25lbnQgPSBuZXcgdGhpcy5jbGF6eihkYXRhIHx8IHt9KTtcbiAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnB1c2goZW50aXR5KTtcbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoZW50aXR5KSB7XG4gICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHldO1xuXG4gICAgICBpZiAoY29tcG9uZW50SW5kZXggPiAtMSkge1xuICAgICAgICBpZiAoY29tcG9uZW50SW5kZXggPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIOWwhuW+heWIoOmZpOWFg+e0oOWSjOacgOWQjuS4gOS4quWFg+e0oOS6pOaNolxuICAgICAgICAgIC8vIEMrKyDkuK3mnIkgc3RkOjptb3ZlIOi/meagt+eahOaTjeS9nO+8jOmBv+WFjeaVsOaNrueahOaLt+i0nVxuICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oI0wxNjlcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbY29tcG9uZW50SW5kZXhdID0gdGhpcy5jb21wb25lbnRzW3RoaXMuY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XSA9IHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XV0gPSBjb21wb25lbnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSAvLyDlvoXliKDpmaTlhYPntKDlt7Lnu4/np7vliqjliLDkuobmnIDlkI7kuIDkuKpcblxuXG4gICAgICB0aGlzLmNvbXBvbmVudHMucG9wKCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgZGVsZXRlIHRoaXMubG9va3VwW2VudGl0eV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUtlZXBTb3J0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eV07XG5cbiAgICAgIGlmIChjb21wb25lbnRJbmRleCA+IC0xKSB7XG4gICAgICAgIHZhciBlbnRpdHkyID0gdGhpcy5lbnRpdGllc1tjb21wb25lbnRJbmRleF07XG5cbiAgICAgICAgaWYgKGNvbXBvbmVudEluZGV4IDwgdGhpcy5jb21wb25lbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAvLyBNb3ZlIGV2ZXJ5IGNvbXBvbmVudCBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudDpcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IGNvbXBvbmVudEluZGV4ICsgMTsgX2kgPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoOyArK19pKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kgLSAxXSA9IHRoaXMuY29tcG9uZW50c1tfaV07XG4gICAgICAgICAgfSAvLyBNb3ZlIGV2ZXJ5IGVudGl0eSBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudCBhbmQgdXBkYXRlIGx1dDpcblxuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gY29tcG9uZW50SW5kZXggKyAxOyBfaTIgPCB0aGlzLmVudGl0aWVzLmxlbmd0aDsgKytfaTIpIHtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNbX2kyIC0gMV0gPSB0aGlzLmVudGl0aWVzW19pMl07XG4gICAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW19pMiAtIDFdXSA9IF9pMiAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRzLnBvcCgpO1xuICAgICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgICBkZWxldGUgdGhpcy5sb29rdXBbZW50aXR5Ml07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm1vdmVJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vdmVJdGVtKHNyY0luZGV4LCBkZXN0SW5kZXgpIHtcbiAgICAgIGlmIChzcmNJbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU2F2ZSB0aGUgbW92ZWQgY29tcG9uZW50IGFuZCBlbnRpdHk6XG5cblxuICAgICAgdmFyIHNyY0NvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50c1tzcmNJbmRleF07XG4gICAgICB2YXIgc3JjRW50aXR5ID0gdGhpcy5lbnRpdGllc1tzcmNJbmRleF07IC8vIEV2ZXJ5IG90aGVyIGVudGl0eS1jb21wb25lbnQgdGhhdCdzIGluIHRoZSB3YXkgZ2V0cyBtb3ZlZCBieSBvbmUgYW5kIGx1dCBpcyBrZXB0IHVwZGF0ZWQ6XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBzcmNJbmRleCA8IGRlc3RJbmRleCA/IDEgOiAtMTtcblxuICAgICAgZm9yICh2YXIgX2kzID0gc3JjSW5kZXg7IF9pMyAhPT0gZGVzdEluZGV4OyBfaTMgKz0gZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBuZXh0ID0gX2kzICsgZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kzXSA9IHRoaXMuY29tcG9uZW50c1tuZXh0XTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1tfaTNdID0gdGhpcy5lbnRpdGllc1tuZXh0XTtcbiAgICAgICAgdGhpcy5sb29rdXBbdGhpcy5lbnRpdGllc1tfaTNdXSA9IF9pMztcbiAgICAgIH0gLy8gU2F2ZWQgZW50aXR5LWNvbXBvbmVudCBtb3ZlZCB0byB0aGUgcmVxdWlyZWQgcG9zaXRpb246XG5cblxuICAgICAgdGhpcy5jb21wb25lbnRzW2Rlc3RJbmRleF0gPSBzcmNDb21wb25lbnQ7XG4gICAgICB0aGlzLmVudGl0aWVzW2Rlc3RJbmRleF0gPSBzcmNFbnRpdHk7XG4gICAgICB0aGlzLmxvb2t1cFtzcmNFbnRpdHldID0gZGVzdEluZGV4O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KGluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdGllc1tpbmRleF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOeUseS6jue8uuWwkeexu+S8vCBDKysg55qE6YeN6L295pON5L2c56ym77yM5rKh5rOV6YCa6L+HIFvkuIvmoIddIOebtOaOpeiuv+mXruOAguWboOatpOWPquiDveWinuWKoOivpeaWueazleeUqOS6jumBjeWOhuOAglxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudChpbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tpbmRleF07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudEJ5RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSkge1xuICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5XTtcblxuICAgICAgaWYgKGNvbXBvbmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tjb21wb25lbnRJbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb3VudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlCeUNvbXBvbmVudEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0eUJ5Q29tcG9uZW50SW5kZXgoY29tcG9uZW50SWR4KSB7XG4gICAgICBmb3IgKHZhciBfaTQgPSAwLCBfT2JqZWN0JGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmxvb2t1cCk7IF9pNCA8IF9PYmplY3Qka2V5cy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5ID0gX09iamVjdCRrZXlzW19pNF07XG4gICAgICAgIHZhciBlbnRpdHlJbk51bSA9IE51bWJlcihfZW50aXR5KTtcblxuICAgICAgICBpZiAodGhpcy5sb29rdXBbZW50aXR5SW5OdW1dID09PSBjb21wb25lbnRJZHgpIHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5SW5OdW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IHRoaXMuZ2V0Q291bnQoKTsgX2k1KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudChfaTUpO1xuXG4gICAgICAgIGlmIChjYWxsYmFjayhfY29tcG9uZW50LCBfaTUpKSB7XG4gICAgICAgICAgcmV0dXJuIF9jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbmRJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHRoaXMuZ2V0Q291bnQoKTsgX2k2KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQyID0gdGhpcy5nZXRDb21wb25lbnQoX2k2KTtcblxuICAgICAgICBpZiAoY2FsbGJhY2soX2NvbXBvbmVudDIsIF9pNikpIHtcbiAgICAgICAgICByZXR1cm4gX2k2O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrKSB7XG4gICAgICBmb3IgKHZhciBfaTcgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApOyBfaTcgPCBfT2JqZWN0JGtleXMyLmxlbmd0aDsgX2k3KyspIHtcbiAgICAgICAgdmFyIF9lbnRpdHkyID0gX09iamVjdCRrZXlzMltfaTddO1xuICAgICAgICB2YXIgZW50aXR5SW5OdW0gPSBOdW1iZXIoX2VudGl0eTIpO1xuICAgICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHlJbk51bV07XG4gICAgICAgIGNhbGxiYWNrKGVudGl0eUluTnVtLCB0aGlzLmdldENvbXBvbmVudChjb21wb25lbnRJbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JFYWNoQXN5bmNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9mb3JFYWNoQXN5bmMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfaTgsIF9PYmplY3Qka2V5czMsIF9lbnRpdHkzLCBlbnRpdHlJbk51bSwgY29tcG9uZW50SW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaTggPSAwLCBfT2JqZWN0JGtleXMzID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBpZiAoIShfaTggPCBfT2JqZWN0JGtleXMzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9lbnRpdHkzID0gX09iamVjdCRrZXlzM1tfaThdO1xuICAgICAgICAgICAgICAgIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHkzKTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eUluTnVtXTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZW50aXR5SW5OdW0sIHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudEluZGV4KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIF9pOCsrO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGZvckVhY2hBc3luYyhfeCkge1xuICAgICAgICByZXR1cm4gX2ZvckVhY2hBc3luYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yRWFjaEFzeW5jO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcIm1hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2spIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2k5ID0gMCwgX09iamVjdCRrZXlzNCA9IE9iamVjdC5rZXlzKHRoaXMubG9va3VwKTsgX2k5IDwgX09iamVjdCRrZXlzNC5sZW5ndGg7IF9pOSsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5NCA9IF9PYmplY3Qka2V5czRbX2k5XTtcbiAgICAgICAgdmFyIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHk0KTtcbiAgICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5SW5OdW1dO1xuICAgICAgICByZXN1bHQucHVzaChjYWxsYmFjayhlbnRpdHlJbk51bSwgdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50SW5kZXgpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbXBvbmVudE1hbmFnZXI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db21wb25lbnRNYW5hZ2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/Entity.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/Entity.js ***!
\*******************************************************/
/*! exports provided: EMPTY, createEntity */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY\", function() { return EMPTY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return createEntity; });\nvar EMPTY = -1;\nvar entitySequence = 1;\n/**\n * 类似关系型数据库的主键\n * TODO: 自动生成,考虑序列化\n */\n\nfunction createEntity() {\n return entitySequence++;\n}\n//# sourceMappingURL=Entity.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanM/ZjcyZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEVNUFRZID0gLTE7XG52YXIgZW50aXR5U2VxdWVuY2UgPSAxO1xuLyoqXG4gKiDnsbvkvLzlhbPns7vlnovmlbDmja7lupPnmoTkuLvplK5cbiAqIFRPRE86IOiHquWKqOeUn+aIkO+8jOiAg+iZkeW6j+WIl+WMllxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnRpdHkoKSB7XG4gIHJldHVybiBlbnRpdHlTZXF1ZW5jZSsrO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW50aXR5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/Entity.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js":
/*!***************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js ***!
\***************************************************************************************/
/*! exports provided: FrameGraphHandle */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphHandle\", function() { return FrameGraphHandle; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar FrameGraphHandle = function FrameGraphHandle() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphHandle);\n\n this.index = void 0;\n};\n//# sourceMappingURL=FrameGraphHandle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaEhhbmRsZS5qcz8yMGM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQzdEO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL0ZyYW1lR3JhcGhIYW5kbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5leHBvcnQgdmFyIEZyYW1lR3JhcGhIYW5kbGUgPSBmdW5jdGlvbiBGcmFtZUdyYXBoSGFuZGxlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRnJhbWVHcmFwaEhhbmRsZSk7XG5cbiAgdGhpcy5pbmRleCA9IHZvaWQgMDtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcmFtZUdyYXBoSGFuZGxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js":
/*!*************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js ***!
\*************************************************************************************/
/*! exports provided: FrameGraphPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphPass\", function() { return FrameGraphPass; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar FrameGraphPass = function FrameGraphPass() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphPass);\n\n this.name = void 0;\n this.data = void 0;\n this.execute = void 0;\n this.tearDown = void 0;\n};\n//# sourceMappingURL=FrameGraphPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaFBhc3MuanM/ZDdlYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUM3RDtBQUNQLEVBQUUsNEVBQWU7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZnJhbWVncmFwaC9GcmFtZUdyYXBoUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFBhc3MgPSBmdW5jdGlvbiBGcmFtZUdyYXBoUGFzcygpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZyYW1lR3JhcGhQYXNzKTtcblxuICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gIHRoaXMuZGF0YSA9IHZvaWQgMDtcbiAgdGhpcy5leGVjdXRlID0gdm9pZCAwO1xuICB0aGlzLnRlYXJEb3duID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZyYW1lR3JhcGhQYXNzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js":
/*!*******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js ***!
\*******************************************************************************/
/*! exports provided: PassNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassNode\", function() { return PassNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar PassNode = /*#__PURE__*/function () {\n function PassNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PassNode);\n\n this.name = void 0;\n this.refCount = 0;\n this.hasSideEffect = false;\n this.devirtualize = [];\n this.destroy = [];\n this.reads = [];\n this.writes = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(PassNode, [{\n key: \"read\",\n value: function read(handle) {\n if (!this.reads.find(function (h) {\n return h.index === handle.index;\n })) {\n this.reads.push(handle);\n }\n\n return handle;\n }\n }, {\n key: \"sample\",\n value: function sample(handle) {\n this.read(handle); // TODO: 记录在 this.samples 中\n\n return handle;\n }\n }, {\n key: \"write\",\n value: function write(fg, handle) {\n var existed = this.writes.find(function (h) {\n return h.index === handle.index;\n });\n\n if (existed) {\n return handle;\n }\n\n var node = fg.getResourceNode(handle);\n node.resource.version++;\n\n if (node.resource.imported) {\n this.hasSideEffect = true;\n }\n\n var r = fg.createResourceNode(node.resource);\n var newNode = fg.getResourceNode(r);\n newNode.writer = this;\n this.writes.push(r);\n return r;\n }\n }]);\n\n return PassNode;\n}();\n//# sourceMappingURL=PassNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUGFzc05vZGUuanM/OGY0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUN2RDtBQUNQO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Bhc3NOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuZXhwb3J0IHZhciBQYXNzTm9kZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhc3NOb2RlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXNzTm9kZSk7XG5cbiAgICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5yZWZDb3VudCA9IDA7XG4gICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gZmFsc2U7XG4gICAgdGhpcy5kZXZpcnR1YWxpemUgPSBbXTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBbXTtcbiAgICB0aGlzLnJlYWRzID0gW107XG4gICAgdGhpcy53cml0ZXMgPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYXNzTm9kZSwgW3tcbiAgICBrZXk6IFwicmVhZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkKGhhbmRsZSkge1xuICAgICAgaWYgKCF0aGlzLnJlYWRzLmZpbmQoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIGguaW5kZXggPT09IGhhbmRsZS5pbmRleDtcbiAgICAgIH0pKSB7XG4gICAgICAgIHRoaXMucmVhZHMucHVzaChoYW5kbGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzYW1wbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2FtcGxlKGhhbmRsZSkge1xuICAgICAgdGhpcy5yZWFkKGhhbmRsZSk7IC8vIFRPRE86IOiusOW9leWcqCB0aGlzLnNhbXBsZXMg5LitXG5cbiAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGZnLCBoYW5kbGUpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy53cml0ZXMuZmluZChmdW5jdGlvbiAoaCkge1xuICAgICAgICByZXR1cm4gaC5pbmRleCA9PT0gaGFuZGxlLmluZGV4O1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChleGlzdGVkKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKGhhbmRsZSk7XG4gICAgICBub2RlLnJlc291cmNlLnZlcnNpb24rKztcblxuICAgICAgaWYgKG5vZGUucmVzb3VyY2UuaW1wb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBmZy5jcmVhdGVSZXNvdXJjZU5vZGUobm9kZS5yZXNvdXJjZSk7XG4gICAgICB2YXIgbmV3Tm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShyKTtcbiAgICAgIG5ld05vZGUud3JpdGVyID0gdGhpcztcbiAgICAgIHRoaXMud3JpdGVzLnB1c2gocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGFzc05vZGU7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXNzTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js":
/*!************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js ***!
\************************************************************************************/
/*! exports provided: ResourceEntry */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceEntry\", function() { return ResourceEntry; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _VirtualResource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VirtualResource */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar ResourceEntry = /*#__PURE__*/function (_VirtualResource) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(ResourceEntry, _VirtualResource);\n\n var _super = _createSuper(ResourceEntry);\n\n function ResourceEntry() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.version = 0;\n _this.refs = 0;\n _this.name = void 0;\n _this.imported = void 0;\n _this.priority = void 0;\n _this.discardStart = true;\n _this.discardEnd = false;\n _this.descriptor = void 0;\n _this.resource = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ResourceEntry, [{\n key: \"preExecuteDestroy\",\n\n /**\n * Lifecycles in FG's execute\n */\n value: function preExecuteDestroy() {\n this.discardEnd = true;\n }\n }, {\n key: \"postExecuteDestroy\",\n value: function postExecuteDestroy() {\n if (!this.imported) {// TODO: 不需要每一帧结束后都销毁资源,可以增加临时资源标志\n // this.resource.destroy();\n }\n }\n }, {\n key: \"postExecuteDevirtualize\",\n value: function postExecuteDevirtualize() {\n this.discardStart = false;\n }\n }, {\n key: \"preExecuteDevirtualize\",\n value: function preExecuteDevirtualize() {\n if (!this.imported) {//\n }\n }\n }]);\n\n return ResourceEntry;\n}(_VirtualResource__WEBPACK_IMPORTED_MODULE_5__[\"VirtualResource\"]);\n//# sourceMappingURL=ResourceEntry.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VFbnRyeS5qcz8zODJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFOVE7QUFDN0M7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLGdFQUFlO0FBQ2pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlRW50cnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IFZpcnR1YWxSZXNvdXJjZSB9IGZyb20gJy4vVmlydHVhbFJlc291cmNlJztcbmV4cG9ydCB2YXIgUmVzb3VyY2VFbnRyeSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1ZpcnR1YWxSZXNvdXJjZSkge1xuICBfaW5oZXJpdHMoUmVzb3VyY2VFbnRyeSwgX1ZpcnR1YWxSZXNvdXJjZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihSZXNvdXJjZUVudHJ5KTtcblxuICBmdW5jdGlvbiBSZXNvdXJjZUVudHJ5KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZUVudHJ5KTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX3RoaXMudmVyc2lvbiA9IDA7XG4gICAgX3RoaXMucmVmcyA9IDA7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbXBvcnRlZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5wcmlvcml0eSA9IHZvaWQgMDtcbiAgICBfdGhpcy5kaXNjYXJkU3RhcnQgPSB0cnVlO1xuICAgIF90aGlzLmRpc2NhcmRFbmQgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXNjcmlwdG9yID0gdm9pZCAwO1xuICAgIF90aGlzLnJlc291cmNlID0gdm9pZCAwO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZXNvdXJjZUVudHJ5LCBbe1xuICAgIGtleTogXCJwcmVFeGVjdXRlRGVzdHJveVwiLFxuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlcyBpbiBGRydzIGV4ZWN1dGVcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURlc3Ryb3koKSB7XG4gICAgICB0aGlzLmRpc2NhcmRFbmQgPSB0cnVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcG9zdEV4ZWN1dGVEZXN0cm95KCkge1xuICAgICAgaWYgKCF0aGlzLmltcG9ydGVkKSB7Ly8gVE9ETzog5LiN6ZyA6KaB5q+P5LiA5bin57uT5p2f5ZCO6YO96ZSA5q+B6LWE5rqQ77yM5Y+v5Lul5aKe5Yqg5Li05pe26LWE5rqQ5qCH5b+XXG4gICAgICAgIC8vIHRoaXMucmVzb3VyY2UuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURldmlydHVhbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0RXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIHRoaXMuZGlzY2FyZFN0YXJ0ID0gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByZUV4ZWN1dGVEZXZpcnR1YWxpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIGlmICghdGhpcy5pbXBvcnRlZCkgey8vXG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlRW50cnk7XG59KFZpcnR1YWxSZXNvdXJjZSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZXNvdXJjZUVudHJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js":
/*!***********************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js ***!
\***********************************************************************************/
/*! exports provided: ResourceNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceNode\", function() { return ResourceNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar ResourceNode = function ResourceNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceNode);\n\n this.resource = void 0;\n this.writer = void 0;\n this.readerCount = 0;\n this.version = void 0;\n};\n//# sourceMappingURL=ResourceNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzP2ZmZTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDN0Q7QUFDUCxFQUFFLDRFQUFlOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuZXhwb3J0IHZhciBSZXNvdXJjZU5vZGUgPSBmdW5jdGlvbiBSZXNvdXJjZU5vZGUoKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZU5vZGUpO1xuXG4gIHRoaXMucmVzb3VyY2UgPSB2b2lkIDA7XG4gIHRoaXMud3JpdGVyID0gdm9pZCAwO1xuICB0aGlzLnJlYWRlckNvdW50ID0gMDtcbiAgdGhpcy52ZXJzaW9uID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlc291cmNlTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js":
/*!***********************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js ***!
\***********************************************************************************/
/*! exports provided: ResourcePool */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourcePool\", function() { return ResourcePool; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\n\n\n\nvar ResourcePool = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_6__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function ResourcePool() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ResourcePool);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"engine\", _descriptor, this);\n\n this.resourcePool = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ResourcePool, [{\n key: \"getOrCreateResource\",\n\n /**\n * 负责实例化虚拟资源,通过引擎服务\n * @param resource 虚拟资源\n */\n value: function getOrCreateResource(resource) {\n if (!this.resourcePool[resource.name]) {\n var _resource$descriptor = resource.descriptor,\n width = _resource$descriptor.width,\n height = _resource$descriptor.height,\n usage = _resource$descriptor.usage;\n this.resourcePool[resource.name] = this.engine.createFramebuffer({\n color: this.engine.createTexture2D({\n width: width,\n height: height,\n wrapS: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n wrapT: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n usage: usage\n })\n });\n }\n\n return this.resourcePool[resource.name];\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.resourcePool = {};\n }\n }]);\n\n return ResourcePool;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=ResourcePool.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VQb29sLmpzPzQyY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFK0M7QUFDRDtBQUNWO0FBQzdCLDJCQUEyQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVU7QUFDekU7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwrQ0FBRTtBQUNyQixtQkFBbUIsK0NBQUU7QUFDckI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9yZW5kZXJlci9nbCc7XG5leHBvcnQgdmFyIFJlc291cmNlUG9vbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZXNvdXJjZVBvb2woKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc291cmNlUG9vbCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLnJlc291cmNlUG9vbCA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlc291cmNlUG9vbCwgW3tcbiAgICBrZXk6IFwiZ2V0T3JDcmVhdGVSZXNvdXJjZVwiLFxuXG4gICAgLyoqXG4gICAgICog6LSf6LSj5a6e5L6L5YyW6Jma5ouf6LWE5rqQ77yM6YCa6L+H5byV5pOO5pyN5YqhXG4gICAgICogQHBhcmFtIHJlc291cmNlIOiZmuaLn+i1hOa6kFxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlKSB7XG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdKSB7XG4gICAgICAgIHZhciBfcmVzb3VyY2UkZGVzY3JpcHRvciA9IHJlc291cmNlLmRlc2NyaXB0b3IsXG4gICAgICAgICAgICB3aWR0aCA9IF9yZXNvdXJjZSRkZXNjcmlwdG9yLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0ID0gX3Jlc291cmNlJGRlc2NyaXB0b3IuaGVpZ2h0LFxuICAgICAgICAgICAgdXNhZ2UgPSBfcmVzb3VyY2UkZGVzY3JpcHRvci51c2FnZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVBvb2xbcmVzb3VyY2UubmFtZV0gPSB0aGlzLmVuZ2luZS5jcmVhdGVGcmFtZWJ1ZmZlcih7XG4gICAgICAgICAgY29sb3I6IHRoaXMuZW5naW5lLmNyZWF0ZVRleHR1cmUyRCh7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgIHdyYXBTOiBnbC5DTEFNUF9UT19FREdFLFxuICAgICAgICAgICAgd3JhcFQ6IGdsLkNMQU1QX1RPX0VER0UsXG4gICAgICAgICAgICB1c2FnZTogdXNhZ2VcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbGVhblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhbigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sID0ge307XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlUG9vbDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVzb3VyY2VQb29sLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js":
/*!*****************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js ***!
\*****************************************************************************/
/*! exports provided: FrameGraphSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return FrameGraphSystem; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./FrameGraphHandle */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\");\n/* harmony import */ var _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./FrameGraphPass */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\");\n/* harmony import */ var _PassNode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PassNode */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js\");\n/* harmony import */ var _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ResourceEntry */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\");\n/* harmony import */ var _ResourceNode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ResourceNode */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\n\n\n/**\n * ported from FrameGraph implemented by SakuraRender\n * @see https://zhuanlan.zhihu.com/p/98572442\n * @see https://github.com/SaeruHikari/Sakura/blob/RenderGraph/SakuraCore/Source/Framework/GraphicTypes/FrameGraph/SakuraFrameGraph.cpp\n */\n\nvar FrameGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function FrameGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, FrameGraphSystem);\n\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(FrameGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(views) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // this.engine.beginFrame();\n this.compile();\n _context.next = 3;\n return this.executePassNodes(views);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.frameGraphPasses.forEach(function (pass) {\n if (pass.tearDown) {\n pass.tearDown();\n }\n });\n this.reset();\n }\n }, {\n key: \"addPass\",\n value: function addPass(name, setup, execute, tearDown) {\n var frameGraphPass = new _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__[\"FrameGraphPass\"]();\n frameGraphPass.execute = execute;\n\n if (tearDown) {\n frameGraphPass.tearDown = tearDown;\n }\n\n frameGraphPass.name = name;\n var passNode = new _PassNode__WEBPACK_IMPORTED_MODULE_12__[\"PassNode\"]();\n passNode.name = name;\n this.passNodes.push(passNode);\n this.frameGraphPasses.push(frameGraphPass);\n setup(this, passNode, frameGraphPass);\n return frameGraphPass;\n }\n }, {\n key: \"getPass\",\n value: function getPass(name) {\n return this.frameGraphPasses.find(function (p) {\n return p.name === name;\n });\n }\n }, {\n key: \"compile\",\n value: function compile() {\n var _this = this;\n\n var _iterator = _createForOfIteratorHelper(this.passNodes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _pass = _step.value;\n _pass.refCount = _pass.writes.length + (_pass.hasSideEffect ? 1 : 0);\n\n _pass.reads.forEach(function (handle) {\n _this.resourceNodes[handle.index].readerCount++;\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var stack = [];\n\n var _iterator2 = _createForOfIteratorHelper(this.resourceNodes),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n\n if (node.readerCount === 0) {\n stack.push(node);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n while (stack.length) {\n var pNode = stack.pop();\n var writer = pNode && pNode.writer;\n\n if (writer) {\n if (--writer.refCount === 0) {\n // this pass is culled\n // assert(!writer->hasSideEffect);\n var _iterator3 = _createForOfIteratorHelper(writer.reads),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var resource = _step3.value;\n var r = this.resourceNodes[resource.index];\n\n if (--r.readerCount === 0) {\n stack.push(r);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } // update the final reference counts\n\n\n this.resourceNodes.forEach(function (node) {\n node.resource.refs += node.readerCount;\n });\n\n var _iterator4 = _createForOfIteratorHelper(this.passNodes),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _pass2 = _step4.value;\n\n if (!_pass2.refCount) {\n continue;\n }\n\n var _iterator6 = _createForOfIteratorHelper(_pass2.reads),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _resource2 = _step6.value;\n var pResource = this.resourceNodes[_resource2.index].resource;\n pResource.first = pResource.first ? pResource.first : _pass2;\n pResource.last = _pass2;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n var _iterator7 = _createForOfIteratorHelper(_pass2.writes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _resource3 = _step7.value;\n var _pResource = this.resourceNodes[_resource3.index].resource;\n _pResource.first = _pResource.first ? _pResource.first : _pass2;\n _pResource.last = _pass2;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n for (var priority = 0; priority < 2; priority++) {\n var _iterator5 = _createForOfIteratorHelper(this.resourceNodes),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var resoureNode = _step5.value;\n var _resource = resoureNode.resource;\n\n if (_resource.priority === priority && _resource.refs) {\n var pFirst = _resource.first;\n var pLast = _resource.last;\n\n if (pFirst && pLast) {\n pFirst.devirtualize.push(_resource);\n pLast.destroy.push(_resource);\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"executePassNodes\",\n value: function () {\n var _executePassNodes = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2(views) {\n var _iterator8, _step8, _step8$value, index, node, _iterator9, _step9, resource, _iterator10, _step10, _resource4, _iterator11, _step11, _resource5, _iterator12, _step12, _resource6;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _iterator8 = _createForOfIteratorHelper(this.passNodes.entries());\n _context2.prev = 1;\n\n _iterator8.s();\n\n case 3:\n if ((_step8 = _iterator8.n()).done) {\n _context2.next = 18;\n break;\n }\n\n _step8$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step8.value, 2), index = _step8$value[0], node = _step8$value[1];\n\n if (!node.refCount) {\n _context2.next = 16;\n break;\n }\n\n _iterator9 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n resource = _step9.value;\n resource.preExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n _iterator10 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _resource4 = _step10.value;\n\n _resource4.preExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n _context2.next = 12;\n return this.frameGraphPasses[index].execute(this, this.frameGraphPasses[index], views);\n\n case 12:\n _iterator11 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n _resource5 = _step11.value;\n\n _resource5.postExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n _iterator12 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n _resource6 = _step12.value;\n\n _resource6.postExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n case 16:\n _context2.next = 3;\n break;\n\n case 18:\n _context2.next = 23;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2[\"catch\"](1);\n\n _iterator8.e(_context2.t0);\n\n case 23:\n _context2.prev = 23;\n\n _iterator8.f();\n\n return _context2.finish(23);\n\n case 26:\n this.reset();\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 20, 23, 26]]);\n }));\n\n function executePassNodes(_x2) {\n return _executePassNodes.apply(this, arguments);\n }\n\n return executePassNodes;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n }\n }, {\n key: \"getResourceNode\",\n value: function getResourceNode(r) {\n return this.resourceNodes[r.index];\n }\n }, {\n key: \"createResourceNode\",\n value: function createResourceNode(resourceEntry) {\n var resourceNode = new _ResourceNode__WEBPACK_IMPORTED_MODULE_14__[\"ResourceNode\"]();\n resourceNode.resource = resourceEntry;\n resourceNode.version = resourceEntry.version;\n this.resourceNodes.push(resourceNode);\n var fgh = new _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__[\"FrameGraphHandle\"]();\n fgh.index = this.resourceNodes.length - 1;\n return fgh;\n }\n }, {\n key: \"createTexture\",\n value: function createTexture(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"createRenderTarget\",\n value: function createRenderTarget(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"present\",\n value: function present(input) {\n this.addPass('Present', function (fg, passNode) {\n passNode.read(input);\n passNode.hasSideEffect = true;\n }, /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n }]);\n\n return FrameGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzP2NmOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNMO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRDtBQUNRO0FBQ0o7QUFDWjtBQUNVO0FBQ0Y7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVO0FBQzdFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCLCtEQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixtREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsK0JBQStCO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxpQ0FBaUM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyxpQ0FBaUM7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBOztBQUVBO0FBQ0EsOEJBQThCLGlDQUFpQztBQUMvRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDakY7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwyRUFBYzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQ0FBc0MsaUNBQWlDO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsbUNBQW1DO0FBQzFFOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2QkFBNkIsMkRBQVk7QUFDekM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1FQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5Qiw2REFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCLDZEQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGVBQWUsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoSGFuZGxlIH0gZnJvbSAnLi9GcmFtZUdyYXBoSGFuZGxlJztcbmltcG9ydCB7IEZyYW1lR3JhcGhQYXNzIH0gZnJvbSAnLi9GcmFtZUdyYXBoUGFzcyc7XG5pbXBvcnQgeyBQYXNzTm9kZSB9IGZyb20gJy4vUGFzc05vZGUnO1xuaW1wb3J0IHsgUmVzb3VyY2VFbnRyeSB9IGZyb20gJy4vUmVzb3VyY2VFbnRyeSc7XG5pbXBvcnQgeyBSZXNvdXJjZU5vZGUgfSBmcm9tICcuL1Jlc291cmNlTm9kZSc7XG4vKipcbiAqIHBvcnRlZCBmcm9tIEZyYW1lR3JhcGggaW1wbGVtZW50ZWQgYnkgU2FrdXJhUmVuZGVyXG4gKiBAc2VlIGh0dHBzOi8vemh1YW5sYW4uemhpaHUuY29tL3AvOTg1NzI0NDJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1NhZXJ1SGlrYXJpL1Nha3VyYS9ibG9iL1JlbmRlckdyYXBoL1Nha3VyYUNvcmUvU291cmNlL0ZyYW1ld29yay9HcmFwaGljVHlwZXMvRnJhbWVHcmFwaC9TYWt1cmFGcmFtZUdyYXBoLmNwcFxuICovXG5cbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcmFtZUdyYXBoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFtZUdyYXBoU3lzdGVtKTtcblxuICAgIHRoaXMucGFzc05vZGVzID0gW107XG4gICAgdGhpcy5yZXNvdXJjZU5vZGVzID0gW107XG4gICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRnJhbWVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZSgpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQYXNzTm9kZXModmlld3MpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZShfeCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmZyYW1lR3JhcGhQYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAocGFzcykge1xuICAgICAgICBpZiAocGFzcy50ZWFyRG93bikge1xuICAgICAgICAgIHBhc3MudGVhckRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUGFzcyhuYW1lLCBzZXR1cCwgZXhlY3V0ZSwgdGVhckRvd24pIHtcbiAgICAgIHZhciBmcmFtZUdyYXBoUGFzcyA9IG5ldyBGcmFtZUdyYXBoUGFzcygpO1xuICAgICAgZnJhbWVHcmFwaFBhc3MuZXhlY3V0ZSA9IGV4ZWN1dGU7XG5cbiAgICAgIGlmICh0ZWFyRG93bikge1xuICAgICAgICBmcmFtZUdyYXBoUGFzcy50ZWFyRG93biA9IHRlYXJEb3duO1xuICAgICAgfVxuXG4gICAgICBmcmFtZUdyYXBoUGFzcy5uYW1lID0gbmFtZTtcbiAgICAgIHZhciBwYXNzTm9kZSA9IG5ldyBQYXNzTm9kZSgpO1xuICAgICAgcGFzc05vZGUubmFtZSA9IG5hbWU7XG4gICAgICB0aGlzLnBhc3NOb2Rlcy5wdXNoKHBhc3NOb2RlKTtcbiAgICAgIHRoaXMuZnJhbWVHcmFwaFBhc3Nlcy5wdXNoKGZyYW1lR3JhcGhQYXNzKTtcbiAgICAgIHNldHVwKHRoaXMsIHBhc3NOb2RlLCBmcmFtZUdyYXBoUGFzcyk7XG4gICAgICByZXR1cm4gZnJhbWVHcmFwaFBhc3M7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGFzcyhuYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzLmZpbmQoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGUoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMpLFxuICAgICAgICAgIF9zdGVwO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBfcGFzcyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgIF9wYXNzLnJlZkNvdW50ID0gX3Bhc3Mud3JpdGVzLmxlbmd0aCArIChfcGFzcy5oYXNTaWRlRWZmZWN0ID8gMSA6IDApO1xuXG4gICAgICAgICAgX3Bhc3MucmVhZHMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZXNvdXJjZU5vZGVzW2hhbmRsZS5pbmRleF0ucmVhZGVyQ291bnQrKztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhY2sgPSBbXTtcblxuICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLnJlc291cmNlTm9kZXMpLFxuICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgIGlmIChub2RlLnJlYWRlckNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgX2l0ZXJhdG9yMi5mKCk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHBOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICAgIHZhciB3cml0ZXIgPSBwTm9kZSAmJiBwTm9kZS53cml0ZXI7XG5cbiAgICAgICAgaWYgKHdyaXRlcikge1xuICAgICAgICAgIGlmICgtLXdyaXRlci5yZWZDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gdGhpcyBwYXNzIGlzIGN1bGxlZFxuICAgICAgICAgICAgLy8gYXNzZXJ0KCF3cml0ZXItPmhhc1NpZGVFZmZlY3QpO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih3cml0ZXIucmVhZHMpLFxuICAgICAgICAgICAgICAgIF9zdGVwMztcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IzLnMoKTsgIShfc3RlcDMgPSBfaXRlcmF0b3IzLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnJlc291cmNlTm9kZXNbcmVzb3VyY2UuaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKC0tci5yZWFkZXJDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyB1cGRhdGUgdGhlIGZpbmFsIHJlZmVyZW5jZSBjb3VudHNcblxuXG4gICAgICB0aGlzLnJlc291cmNlTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnJlc291cmNlLnJlZnMgKz0gbm9kZS5yZWFkZXJDb3VudDtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yNCA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucGFzc05vZGVzKSxcbiAgICAgICAgICBfc3RlcDQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoX2l0ZXJhdG9yNC5zKCk7ICEoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgdmFyIF9wYXNzMiA9IF9zdGVwNC52YWx1ZTtcblxuICAgICAgICAgIGlmICghX3Bhc3MyLnJlZkNvdW50KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi5yZWFkcyksXG4gICAgICAgICAgICAgIF9zdGVwNjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjYucygpOyAhKF9zdGVwNiA9IF9pdGVyYXRvcjYubigpKS5kb25lOykge1xuICAgICAgICAgICAgICB2YXIgX3Jlc291cmNlMiA9IF9zdGVwNi52YWx1ZTtcbiAgICAgICAgICAgICAgdmFyIHBSZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VOb2Rlc1tfcmVzb3VyY2UyLmluZGV4XS5yZXNvdXJjZTtcbiAgICAgICAgICAgICAgcFJlc291cmNlLmZpcnN0ID0gcFJlc291cmNlLmZpcnN0ID8gcFJlc291cmNlLmZpcnN0IDogX3Bhc3MyO1xuICAgICAgICAgICAgICBwUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjYuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I2LmYoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi53cml0ZXMpLFxuICAgICAgICAgICAgICBfc3RlcDc7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChfaXRlcmF0b3I3LnMoKTsgIShfc3RlcDcgPSBfaXRlcmF0b3I3Lm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgdmFyIF9yZXNvdXJjZTMgPSBfc3RlcDcudmFsdWU7XG4gICAgICAgICAgICAgIHZhciBfcFJlc291cmNlID0gdGhpcy5yZXNvdXJjZU5vZGVzW19yZXNvdXJjZTMuaW5kZXhdLnJlc291cmNlO1xuICAgICAgICAgICAgICBfcFJlc291cmNlLmZpcnN0ID0gX3BSZXNvdXJjZS5maXJzdCA/IF9wUmVzb3VyY2UuZmlyc3QgOiBfcGFzczI7XG4gICAgICAgICAgICAgIF9wUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjcuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I3LmYoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3I0LmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjQuZigpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBwcmlvcml0eSA9IDA7IHByaW9yaXR5IDwgMjsgcHJpb3JpdHkrKykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yNSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucmVzb3VyY2VOb2RlcyksXG4gICAgICAgICAgICBfc3RlcDU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjUucygpOyAhKF9zdGVwNSA9IF9pdGVyYXRvcjUubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIHJlc291cmVOb2RlID0gX3N0ZXA1LnZhbHVlO1xuICAgICAgICAgICAgdmFyIF9yZXNvdXJjZSA9IHJlc291cmVOb2RlLnJlc291cmNlO1xuXG4gICAgICAgICAgICBpZiAoX3Jlc291cmNlLnByaW9yaXR5ID09PSBwcmlvcml0eSAmJiBfcmVzb3VyY2UucmVmcykge1xuICAgICAgICAgICAgICB2YXIgcEZpcnN0ID0gX3Jlc291cmNlLmZpcnN0O1xuICAgICAgICAgICAgICB2YXIgcExhc3QgPSBfcmVzb3VyY2UubGFzdDtcblxuICAgICAgICAgICAgICBpZiAocEZpcnN0ICYmIHBMYXN0KSB7XG4gICAgICAgICAgICAgICAgcEZpcnN0LmRldmlydHVhbGl6ZS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgcExhc3QuZGVzdHJveS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZShlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4ZWN1dGVQYXNzTm9kZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9leGVjdXRlUGFzc05vZGVzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjgsIF9zdGVwOCwgX3N0ZXA4JHZhbHVlLCBpbmRleCwgbm9kZSwgX2l0ZXJhdG9yOSwgX3N0ZXA5LCByZXNvdXJjZSwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIF9yZXNvdXJjZTQsIF9pdGVyYXRvcjExLCBfc3RlcDExLCBfcmVzb3VyY2U1LCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgX3Jlc291cmNlNjtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMuZW50cmllcygpKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4LnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgaWYgKChfc3RlcDggPSBfaXRlcmF0b3I4Lm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxODtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9zdGVwOCR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwOC52YWx1ZSwgMiksIGluZGV4ID0gX3N0ZXA4JHZhbHVlWzBdLCBub2RlID0gX3N0ZXA4JHZhbHVlWzFdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLnJlZkNvdW50KSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG5vZGUuZGV2aXJ0dWFsaXplKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjkucygpOyAhKF9zdGVwOSA9IF9pdGVyYXRvcjkubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IF9zdGVwOS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UucHJlRXhlY3V0ZURldmlydHVhbGl6ZSh0aGlzLmVuZ2luZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3I5LmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yOS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTAucygpOyAhKF9zdGVwMTAgPSBfaXRlcmF0b3IxMC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQgPSBfc3RlcDEwLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQucHJlRXhlY3V0ZURlc3Ryb3kodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMC5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzW2luZGV4XS5leGVjdXRlKHRoaXMsIHRoaXMuZnJhbWVHcmFwaFBhc3Nlc1tpbmRleF0sIHZpZXdzKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjExID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobm9kZS5kZXZpcnR1YWxpemUpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTEucygpOyAhKF9zdGVwMTEgPSBfaXRlcmF0b3IxMS5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUgPSBfc3RlcDExLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUucG9zdEV4ZWN1dGVEZXZpcnR1YWxpemUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTEuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTIucygpOyAhKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYgPSBfc3RlcDEyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYucG9zdEV4ZWN1dGVEZXN0cm95KHRoaXMuZW5naW5lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjEyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIwO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MltcImNhdGNoXCJdKDEpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5lKF9jb250ZXh0Mi50MCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIzO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgyMyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbMSwgMjAsIDIzLCAyNl1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZVBhc3NOb2RlcyhfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlUGFzc05vZGVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlUGFzc05vZGVzO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy5wYXNzTm9kZXMgPSBbXTtcbiAgICAgIHRoaXMucmVzb3VyY2VOb2RlcyA9IFtdO1xuICAgICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFJlc291cmNlTm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZXNvdXJjZU5vZGUocikge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VOb2Rlc1tyLmluZGV4XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVzb3VyY2VOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTm9kZShyZXNvdXJjZUVudHJ5KSB7XG4gICAgICB2YXIgcmVzb3VyY2VOb2RlID0gbmV3IFJlc291cmNlTm9kZSgpO1xuICAgICAgcmVzb3VyY2VOb2RlLnJlc291cmNlID0gcmVzb3VyY2VFbnRyeTtcbiAgICAgIHJlc291cmNlTm9kZS52ZXJzaW9uID0gcmVzb3VyY2VFbnRyeS52ZXJzaW9uO1xuICAgICAgdGhpcy5yZXNvdXJjZU5vZGVzLnB1c2gocmVzb3VyY2VOb2RlKTtcbiAgICAgIHZhciBmZ2ggPSBuZXcgRnJhbWVHcmFwaEhhbmRsZSgpO1xuICAgICAgZmdoLmluZGV4ID0gdGhpcy5yZXNvdXJjZU5vZGVzLmxlbmd0aCAtIDE7XG4gICAgICByZXR1cm4gZmdoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUocGFzc05vZGUsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZUVudHJ5KCk7XG4gICAgICByZXNvdXJjZS5uYW1lID0gbmFtZTtcbiAgICAgIHJlc291cmNlLmRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzb3VyY2VOb2RlKHJlc291cmNlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVuZGVyVGFyZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgbmFtZSwgZGVzY3JpcHRvcikge1xuICAgICAgdmFyIHJlc291cmNlID0gbmV3IFJlc291cmNlRW50cnkoKTtcbiAgICAgIHJlc291cmNlLm5hbWUgPSBuYW1lO1xuICAgICAgcmVzb3VyY2UuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXNvdXJjZU5vZGUocmVzb3VyY2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwcmVzZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByZXNlbnQoaW5wdXQpIHtcbiAgICAgIHRoaXMuYWRkUGFzcygnUHJlc2VudCcsIGZ1bmN0aW9uIChmZywgcGFzc05vZGUpIHtcbiAgICAgICAgcGFzc05vZGUucmVhZChpbnB1dCk7XG4gICAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgICAgfSwgLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMpO1xuICAgICAgfSkpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRnJhbWVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js":
/*!**************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js ***!
\**************************************************************************************/
/*! exports provided: VirtualResource */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VirtualResource\", function() { return VirtualResource; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * ported from filament\n */\nvar VirtualResource = function VirtualResource() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, VirtualResource);\n\n this.first = void 0;\n this.last = void 0;\n};\n//# sourceMappingURL=VirtualResource.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzP2NlYzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuXG4vKipcbiAqIHBvcnRlZCBmcm9tIGZpbGFtZW50XG4gKi9cbmV4cG9ydCB2YXIgVmlydHVhbFJlc291cmNlID0gZnVuY3Rpb24gVmlydHVhbFJlc291cmNlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlydHVhbFJlc291cmNlKTtcblxuICB0aGlzLmZpcnN0ID0gdm9pZCAwO1xuICB0aGlzLmxhc3QgPSB2b2lkIDA7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmlydHVhbFJlc291cmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js":
/*!**************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js ***!
\**************************************************************************************/
/*! exports provided: GeometryComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return GeometryComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/is-typedarray */ \"./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar GeometryComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GeometryComponent, _Component);\n\n var _super = _createSuper(GeometryComponent);\n\n // instanced count\n function GeometryComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, GeometryComponent);\n\n _this = _super.call(this, data);\n _this.dirty = true;\n _this.attributes = [];\n _this.indices = void 0;\n _this.indicesBuffer = void 0;\n _this.vertexCount = 0;\n _this.maxInstancedCount = void 0;\n _this.aabb = void 0;\n _this.entity = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferAttribute\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(GeometryComponent, [{\n key: \"setAttribute\",\n value: function setAttribute(name, data, descriptor, bufferGetter) {\n var existed = this.attributes.find(function (a) {\n return a.name === name;\n });\n\n if (!existed) {\n this.attributes.push(_objectSpread(_objectSpread({\n dirty: true,\n name: name,\n data: data\n }, descriptor), {}, {\n bufferGetter: bufferGetter\n }));\n } else {\n existed.data = data;\n existed.dirty = true;\n }\n\n this.dirty = true;\n return this;\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(data) {\n this.indices = new Uint32Array( // @ts-ignore\n data.buffer ? data.buffer : data);\n this.dirty = true;\n return this;\n }\n /**\n * when merge all the geometries into one, we need to transform every vertex's position\n * and every face's normal\n */\n\n }, {\n key: \"applyMatrix\",\n value: function applyMatrix(matrix) {\n var positionAttribute = this.attributes.find(function (_ref) {\n var name = _ref.name;\n return name === 'position';\n });\n var normalAttribute = this.attributes.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'normal';\n });\n\n if (positionAttribute) {\n positionAttribute.dirty = true; // @ts-ignore\n\n if (positionAttribute.data && positionAttribute.data.length) {\n // @ts-ignore\n for (var i = 0; i < positionAttribute.data.length; i += 3) {\n var position = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].fromValues( // @ts-ignore\n positionAttribute.data[i], // @ts-ignore\n positionAttribute.data[i + 1], // @ts-ignore\n positionAttribute.data[i + 2], 1);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].transformMat4(position, position, matrix);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(positionAttribute.data)) {\n // @ts-ignore\n positionAttribute.data.set([position[0], position[1], position[2]], i);\n } else {\n // @ts-ignore\n positionAttribute.data[i] = position[0]; // @ts-ignore\n\n positionAttribute.data[i + 1] = position[1]; // @ts-ignore\n\n positionAttribute.data[i + 2] = position[2];\n }\n }\n }\n }\n\n if (normalAttribute) {\n var normalMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].normalFromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create(), matrix); // @ts-ignore\n\n if (normalAttribute.data && normalAttribute.data.length) {\n // @ts-ignore\n for (var _i = 0; _i < normalAttribute.data.length; _i += 3) {\n var normal = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues( // @ts-ignore\n normalAttribute.data[_i], // @ts-ignore\n normalAttribute.data[_i + 1], // @ts-ignore\n normalAttribute.data[_i + 2]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(normal, normal, normalMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].normalize(normal, normal);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(normalAttribute.data)) {\n // @ts-ignore\n normalAttribute.data.set([normal[0], normal[1], normal[2]], _i);\n } else {\n // @ts-ignore\n normalAttribute.data[_i] = normal[0]; // @ts-ignore\n\n normalAttribute.data[_i + 1] = normal[1]; // @ts-ignore\n\n normalAttribute.data[_i + 2] = normal[2];\n }\n }\n }\n }\n }\n }]);\n\n return GeometryComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=GeometryComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50LmpzP2QxYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCOztBQUVwRSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQixnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVyUjtBQUNNO0FBQ007QUFDbEQ7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaUJBQWlCO0FBQzFCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBLHlCQUF5QixtQ0FBbUM7QUFDNUQsMkJBQTJCLDhDQUFJO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7O0FBRWhCLGdCQUFnQix5RUFBWTtBQUM1QjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0RBQXNEOztBQUV0RCwwREFBMEQ7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsOENBQUksZ0JBQWdCLDhDQUFJLG1CQUFtQjs7QUFFdEU7QUFDQTtBQUNBLDBCQUEwQixrQ0FBa0M7QUFDNUQseUJBQXlCLDhDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTs7QUFFaEIsZ0JBQWdCLHlFQUFZO0FBQzVCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxtREFBbUQ7O0FBRW5ELHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9nZW9tZXRyeS9HZW9tZXRyeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgbWF0MywgdmVjMywgdmVjNCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuZXhwb3J0IHZhciBHZW9tZXRyeUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoR2VvbWV0cnlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR2VvbWV0cnlDb21wb25lbnQpO1xuXG4gIC8vIGluc3RhbmNlZCBjb3VudFxuICBmdW5jdGlvbiBHZW9tZXRyeUNvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdlb21ldHJ5Q29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICBfdGhpcy5pbmRpY2VzID0gdm9pZCAwO1xuICAgIF90aGlzLmluZGljZXNCdWZmZXIgPSB2b2lkIDA7XG4gICAgX3RoaXMudmVydGV4Q291bnQgPSAwO1xuICAgIF90aGlzLm1heEluc3RhbmNlZENvdW50ID0gdm9pZCAwO1xuICAgIF90aGlzLmFhYmIgPSB2b2lkIDA7XG4gICAgX3RoaXMuZW50aXR5ID0gdm9pZCAwO1xuICAgIE9iamVjdC5hc3NpZ24oX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIGRhdGEpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICAvKipcbiAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0J1ZmZlckF0dHJpYnV0ZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhHZW9tZXRyeUNvbXBvbmVudCwgW3tcbiAgICBrZXk6IFwic2V0QXR0cmlidXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCBkYXRhLCBkZXNjcmlwdG9yLCBidWZmZXJHZXR0ZXIpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIGEubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWQpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSwgZGVzY3JpcHRvciksIHt9LCB7XG4gICAgICAgICAgYnVmZmVyR2V0dGVyOiBidWZmZXJHZXR0ZXJcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZC5kYXRhID0gZGF0YTtcbiAgICAgICAgZXhpc3RlZC5kaXJ0eSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEluZGV4KGRhdGEpIHtcbiAgICAgIHRoaXMuaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheSggLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YS5idWZmZXIgPyBkYXRhLmJ1ZmZlciA6IGRhdGEpO1xuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogd2hlbiBtZXJnZSBhbGwgdGhlIGdlb21ldHJpZXMgaW50byBvbmUsIHdlIG5lZWQgdG8gdHJhbnNmb3JtIGV2ZXJ5IHZlcnRleCdzIHBvc2l0aW9uXG4gICAgICogYW5kIGV2ZXJ5IGZhY2UncyBub3JtYWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFwcGx5TWF0cml4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5TWF0cml4KG1hdHJpeCkge1xuICAgICAgdmFyIHBvc2l0aW9uQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lID09PSAncG9zaXRpb24nO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9ybWFsQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdub3JtYWwnO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwb3NpdGlvbkF0dHJpYnV0ZSkge1xuICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kaXJ0eSA9IHRydWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICBpZiAocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSAmJiBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9uQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHZlYzQuZnJvbVZhbHVlcyggLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpXSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBvc2l0aW9uQXR0cmlidXRlLmRhdGFbaSArIDJdLCAxKTtcbiAgICAgICAgICAgIHZlYzQudHJhbnNmb3JtTWF0NChwb3NpdGlvbiwgcG9zaXRpb24sIG1hdHJpeCk7XG5cbiAgICAgICAgICAgIGlmIChpc1R5cGVkQXJyYXkocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLnNldChbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXV0sIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2ldID0gcG9zaXRpb25bMF07IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2kgKyAxXSA9IHBvc2l0aW9uWzFdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMl0gPSBwb3NpdGlvblsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZSkge1xuICAgICAgICB2YXIgbm9ybWFsTWF0cml4ID0gbWF0My5ub3JtYWxGcm9tTWF0NChtYXQzLmNyZWF0ZSgpLCBtYXRyaXgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZS5kYXRhICYmIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9ybWFsQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBfaSArPSAzKSB7XG4gICAgICAgICAgICB2YXIgbm9ybWFsID0gdmVjMy5mcm9tVmFsdWVzKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBub3JtYWxBdHRyaWJ1dGUuZGF0YVtfaV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0pO1xuICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKG5vcm1hbCwgbm9ybWFsLCBub3JtYWxNYXRyaXgpO1xuICAgICAgICAgICAgdmVjMy5ub3JtYWxpemUobm9ybWFsLCBub3JtYWwpO1xuXG4gICAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KG5vcm1hbEF0dHJpYnV0ZS5kYXRhKSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLnNldChbbm9ybWFsWzBdLCBub3JtYWxbMV0sIG5vcm1hbFsyXV0sIF9pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2ldID0gbm9ybWFsWzBdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2kgKyAxXSA9IG5vcm1hbFsxXTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0gPSBub3JtYWxbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R2VvbWV0cnlDb21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js":
/*!***************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js ***!
\***************************************************************************/
/*! exports provided: GeometrySystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return GeometrySystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../.. */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\n\n\n\n\nvar GeometrySystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function GeometrySystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, GeometrySystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor2, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(GeometrySystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.geometry.forEach(function (entity, component) {\n // build buffers for each geometry\n if (component.dirty) {\n component.attributes.forEach(function (attribute) {\n if (attribute.dirty && attribute.data) {\n if (!attribute.buffer) {\n attribute.buffer = _this.engine.createBuffer({\n data: attribute.data,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].FLOAT\n });\n } else {\n var _attribute$buffer;\n\n (_attribute$buffer = attribute.buffer) === null || _attribute$buffer === void 0 ? void 0 : _attribute$buffer.subData({\n data: attribute.data,\n // TODO: support offset in subdata\n offset: 0\n });\n }\n\n attribute.dirty = false;\n }\n }); // create index buffer if needed\n\n if (component.indices) {\n if (!component.indicesBuffer) {\n component.indicesBuffer = _this.engine.createElements({\n data: component.indices,\n count: component.indices.length,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].UNSIGNED_INT,\n usage: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].STATIC_DRAW\n });\n } else {\n component.indicesBuffer.subData({\n data: component.indices,\n offset: 0\n });\n }\n }\n\n component.dirty = false;\n }\n });\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.geometry.forEach(function (_, geometry) {\n if (geometry.indicesBuffer) {\n geometry.indicesBuffer.destroy();\n }\n\n geometry.attributes.forEach(function (attribute) {\n if (attribute.buffer) {\n attribute.buffer.destroy();\n }\n });\n });\n this.geometry.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferGeometry\n */\n\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n vertexCount: 3\n },\n vertexCount = _ref.vertexCount;\n\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n vertexCount: vertexCount\n });\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/InstancedBufferGeometry\n */\n\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(_ref2) {\n var maxInstancedCount = _ref2.maxInstancedCount,\n vertexCount = _ref2.vertexCount;\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n maxInstancedCount: maxInstancedCount,\n vertexCount: vertexCount\n });\n }\n }]);\n\n return GeometrySystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbS5qcz9lMWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ1Y7QUFDUztBQUNWO0FBQzdCLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVU7QUFDaEk7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7QUFDOUI7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0RBQUU7QUFDcEMsMkJBQTJCO0FBQzNCLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLEVBQUU7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsZ0RBQUU7QUFDbEMsaUNBQWlDLGdEQUFFO0FBQ25DLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZ2VvbWV0cnkvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uL3JlbmRlcmVyL2dsJztcbmV4cG9ydCB2YXIgR2VvbWV0cnlTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5HZW9tZXRyeUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZW9tZXRyeVN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2VvbWV0cnlTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEdlb21ldHJ5U3lzdGVtLCBbe1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAvLyBidWlsZCBidWZmZXJzIGZvciBlYWNoIGdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuZGlydHkgJiYgYXR0cmlidXRlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLmJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyID0gX3RoaXMuZW5naW5lLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYXR0cmlidXRlLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuRkxPQVRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2F0dHJpYnV0ZSRidWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hdHRyaWJ1dGUkYnVmZmVyID0gYXR0cmlidXRlLmJ1ZmZlcikgPT09IG51bGwgfHwgX2F0dHJpYnV0ZSRidWZmZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hdHRyaWJ1dGUkYnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgb2Zmc2V0IGluIHN1YmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7IC8vIGNyZWF0ZSBpbmRleCBidWZmZXIgaWYgbmVlZGVkXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5pbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmluZGljZXNCdWZmZXIgPSBfdGhpcy5lbmdpbmUuY3JlYXRlRWxlbWVudHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjb21wb25lbnQuaW5kaWNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGNvbXBvbmVudC5pbmRpY2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfSU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogZ2wuU1RBVElDX0RSQVdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaW5kaWNlc0J1ZmZlci5zdWJEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY29tcG9uZW50LmluZGljZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKF8sIGdlb21ldHJ5KSB7XG4gICAgICAgIGlmIChnZW9tZXRyeS5pbmRpY2VzQnVmZmVyKSB7XG4gICAgICAgICAgZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlci5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBnZW9tZXRyeS5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUuYnVmZmVyKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmdlb21ldHJ5LmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vY29yZS9CdWZmZXJHZW9tZXRyeVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyR2VvbWV0cnkoKSB7XG4gICAgICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge1xuICAgICAgICB2ZXJ0ZXhDb3VudDogM1xuICAgICAgfSxcbiAgICAgICAgICB2ZXJ0ZXhDb3VudCA9IF9yZWYudmVydGV4Q291bnQ7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgdmVydGV4Q291bnQ6IHZlcnRleENvdW50XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeShfcmVmMikge1xuICAgICAgdmFyIG1heEluc3RhbmNlZENvdW50ID0gX3JlZjIubWF4SW5zdGFuY2VkQ291bnQsXG4gICAgICAgICAgdmVydGV4Q291bnQgPSBfcmVmMi52ZXJ0ZXhDb3VudDtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgbWF4SW5zdGFuY2VkQ291bnQ6IG1heEluc3RhbmNlZENvdW50LFxuICAgICAgICB2ZXJ0ZXhDb3VudDogdmVydGV4Q291bnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHZW9tZXRyeVN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImdlb21ldHJ5XCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js":
/*!**************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js ***!
\**************************************************************************************/
/*! exports provided: MaterialComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return MaterialComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../.. */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MaterialComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(MaterialComponent, _Component);\n\n var _super = _createSuper(MaterialComponent);\n\n // control flow in shaders, eg. USE_UV, USE_MAP...\n function MaterialComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MaterialComponent);\n\n _this = _super.call(this, data);\n _this.vertexShaderGLSL = void 0;\n _this.fragmentShaderGLSL = void 0;\n _this.defines = {};\n _this.dirty = true;\n _this.uniforms = [];\n _this.cull = {\n enable: true,\n face: ___WEBPACK_IMPORTED_MODULE_7__[\"gl\"].BACK\n };\n _this.depth = {\n enable: true\n };\n _this.blend = void 0;\n _this.entity = void 0;\n _this.type = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MaterialComponent, [{\n key: \"setDefines\",\n value: function setDefines(defines) {\n this.defines = _objectSpread(_objectSpread({}, this.defines), defines);\n return this;\n }\n }, {\n key: \"setCull\",\n value: function setCull(cull) {\n this.cull = cull;\n return this;\n }\n }, {\n key: \"setDepth\",\n value: function setDepth(depth) {\n this.depth = depth;\n return this;\n }\n }, {\n key: \"setBlend\",\n value: function setBlend(blend) {\n this.blend = blend;\n return this;\n }\n }, {\n key: \"setUniform\",\n value: function setUniform(name, data) {\n var _this2 = this;\n\n if (typeof name !== 'string') {\n Object.keys(name).forEach(function (key) {\n return _this2.setUniform(key, name[key]);\n });\n return this;\n }\n\n var existedUniform = this.uniforms.find(function (u) {\n return u.name === name;\n });\n\n if (!existedUniform) {\n this.uniforms.push({\n name: name,\n dirty: true,\n data: data\n });\n } else {\n existedUniform.dirty = true;\n existedUniform.data = data;\n }\n\n this.dirty = true;\n return this;\n }\n }]);\n\n return MaterialComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=MaterialComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzP2E2MWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ0E7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwaEIsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFdlM7QUFDd0I7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvQ0FBRTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBNYXRlcmlhbENvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTWF0ZXJpYWxDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gIC8vIGNvbnRyb2wgZmxvdyBpbiBzaGFkZXJzLCBlZy4gVVNFX1VWLCBVU0VfTUFQLi4uXG4gIGZ1bmN0aW9uIE1hdGVyaWFsQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy52ZXJ0ZXhTaGFkZXJHTFNMID0gdm9pZCAwO1xuICAgIF90aGlzLmZyYWdtZW50U2hhZGVyR0xTTCA9IHZvaWQgMDtcbiAgICBfdGhpcy5kZWZpbmVzID0ge307XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLnVuaWZvcm1zID0gW107XG4gICAgX3RoaXMuY3VsbCA9IHtcbiAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICB9O1xuICAgIF90aGlzLmRlcHRoID0ge1xuICAgICAgZW5hYmxlOiB0cnVlXG4gICAgfTtcbiAgICBfdGhpcy5ibGVuZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgX3RoaXMudHlwZSA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWF0ZXJpYWxDb21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldERlZmluZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGVmaW5lcyhkZWZpbmVzKSB7XG4gICAgICB0aGlzLmRlZmluZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuZGVmaW5lcyksIGRlZmluZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEN1bGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q3VsbChjdWxsKSB7XG4gICAgICB0aGlzLmN1bGwgPSBjdWxsO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERlcHRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERlcHRoKGRlcHRoKSB7XG4gICAgICB0aGlzLmRlcHRoID0gZGVwdGg7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QmxlbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QmxlbmQoYmxlbmQpIHtcbiAgICAgIHRoaXMuYmxlbmQgPSBibGVuZDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRVbmlmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFVuaWZvcm0obmFtZSwgZGF0YSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgT2JqZWN0LmtleXMobmFtZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi5zZXRVbmlmb3JtKGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgZXhpc3RlZFVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zLmZpbmQoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIHUubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWRVbmlmb3JtKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZFVuaWZvcm0uZGlydHkgPSB0cnVlO1xuICAgICAgICBleGlzdGVkVW5pZm9ybS5kYXRhID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWF0ZXJpYWxDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NYXRlcmlhbENvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/material/System.js":
/*!***************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/material/System.js ***!
\***************************************************************************/
/*! exports provided: MaterialSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return MaterialSystem; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../.. */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar MaterialSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].RenderEngine), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MaterialSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, MaterialSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"material\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"shaderModule\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(MaterialSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.material.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/materials/ShaderMaterial\n */\n\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var entity = Object(___WEBPACK_IMPORTED_MODULE_9__[\"createEntity\"])();\n var vertexShaderGLSL = params.vertexShader;\n var fragmentShaderGLSL = params.fragmentShader;\n var uniforms = [];\n\n if (!this.engine.supportWebGPU) {\n var moduleName = \"material-\".concat(entity);\n this.shaderModule.registerModule(moduleName, {\n vs: params.vertexShader,\n fs: params.fragmentShader\n });\n var materialModule = this.shaderModule.getModule(moduleName);\n vertexShaderGLSL = materialModule.vs;\n fragmentShaderGLSL = materialModule.fs;\n\n if (materialModule.uniforms) {\n // @ts-ignore\n uniforms = Object.keys(materialModule.uniforms).map(function (uniformName) {\n return {\n dirty: true,\n name: uniformName,\n // @ts-ignore\n data: materialModule.uniforms[uniformName]\n };\n });\n }\n }\n\n return this.material.create(entity, _objectSpread(_objectSpread({\n vertexShaderGLSL: vertexShaderGLSL,\n fragmentShaderGLSL: fragmentShaderGLSL\n }, params), {}, {\n uniforms: uniforms\n }));\n }\n }]);\n\n return MaterialSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"shaderModule\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcz80NjVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ1A7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcmU7QUFDVjtBQUNTO0FBQ3ZDLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsdURBQVUsb0NBQW9DLHdEQUFNLENBQUMsdURBQVUsd0JBQXdCLHdEQUFNLENBQUMsdURBQVU7QUFDeks7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sYUFBYTtBQUNwQjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZUVudGl0eSB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmV4cG9ydCB2YXIgTWF0ZXJpYWxTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXRlcmlhbFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJzaGFkZXJNb2R1bGVcIiwgX2Rlc2NyaXB0b3IzLCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYXRlcmlhbFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vbWF0ZXJpYWxzL1NoYWRlck1hdGVyaWFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTaGFkZXJNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpIHtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHZhciB2ZXJ0ZXhTaGFkZXJHTFNMID0gcGFyYW1zLnZlcnRleFNoYWRlcjtcbiAgICAgIHZhciBmcmFnbWVudFNoYWRlckdMU0wgPSBwYXJhbXMuZnJhZ21lbnRTaGFkZXI7XG4gICAgICB2YXIgdW5pZm9ybXMgPSBbXTtcblxuICAgICAgaWYgKCF0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVKSB7XG4gICAgICAgIHZhciBtb2R1bGVOYW1lID0gXCJtYXRlcmlhbC1cIi5jb25jYXQoZW50aXR5KTtcbiAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwge1xuICAgICAgICAgIHZzOiBwYXJhbXMudmVydGV4U2hhZGVyLFxuICAgICAgICAgIGZzOiBwYXJhbXMuZnJhZ21lbnRTaGFkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXRlcmlhbE1vZHVsZSA9IHRoaXMuc2hhZGVyTW9kdWxlLmdldE1vZHVsZShtb2R1bGVOYW1lKTtcbiAgICAgICAgdmVydGV4U2hhZGVyR0xTTCA9IG1hdGVyaWFsTW9kdWxlLnZzO1xuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0wgPSBtYXRlcmlhbE1vZHVsZS5mcztcblxuICAgICAgICBpZiAobWF0ZXJpYWxNb2R1bGUudW5pZm9ybXMpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdW5pZm9ybXMgPSBPYmplY3Qua2V5cyhtYXRlcmlhbE1vZHVsZS51bmlmb3JtcykubWFwKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm1OYW1lLFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGE6IG1hdGVyaWFsTW9kdWxlLnVuaWZvcm1zW3VuaWZvcm1OYW1lXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5tYXRlcmlhbC5jcmVhdGUoZW50aXR5LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXJHTFNMOiB2ZXJ0ZXhTaGFkZXJHTFNMLFxuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0w6IGZyYWdtZW50U2hhZGVyR0xTTFxuICAgICAgfSwgcGFyYW1zKSwge30sIHtcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1hdGVyaWFsU3lzdGVtO1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/material/System.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/material/interface.js":
/*!******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/material/interface.js ***!
\******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZS5qcz8xNTc0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWF0ZXJpYWwvaW50ZXJmYWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcmZhY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/material/interface.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js":
/*!**********************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js ***!
\**********************************************************************************/
/*! exports provided: Strategy, CullableComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Strategy\", function() { return Strategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return CullableComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n/**\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n */\nvar Strategy;\n\n(function (Strategy) {\n Strategy[Strategy[\"Standard\"] = 0] = \"Standard\";\n})(Strategy || (Strategy = {}));\n\nvar CullableComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(CullableComponent, _Component);\n\n var _super = _createSuper(CullableComponent);\n\n function CullableComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, CullableComponent);\n\n _this = _super.call(this, data);\n _this.strategy = Strategy.Standard;\n _this.visibilityPlaneMask = 0;\n _this.visible = false;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return CullableComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=CullableComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanM/NmRhNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ2M7QUFDMUI7QUFDa0M7QUFDdEI7O0FBRXBFLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRS9ROztBQUVuRDtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0EsQ0FBQyw0QkFBNEI7O0FBRXRCO0FBQ1AsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vQ29tcG9uZW50TWFuYWdlcic7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gKi9cbmV4cG9ydCB2YXIgU3RyYXRlZ3k7XG5cbihmdW5jdGlvbiAoU3RyYXRlZ3kpIHtcbiAgU3RyYXRlZ3lbU3RyYXRlZ3lbXCJTdGFuZGFyZFwiXSA9IDBdID0gXCJTdGFuZGFyZFwiO1xufSkoU3RyYXRlZ3kgfHwgKFN0cmF0ZWd5ID0ge30pKTtcblxuZXhwb3J0IHZhciBDdWxsYWJsZUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ3VsbGFibGVDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEN1bGxhYmxlQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5zdHJhdGVneSA9IFN0cmF0ZWd5LlN0YW5kYXJkO1xuICAgIF90aGlzLnZpc2liaWxpdHlQbGFuZU1hc2sgPSAwO1xuICAgIF90aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VsbGFibGVDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdWxsYWJsZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js":
/*!******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js ***!
\******************************************************************************/
/*! exports provided: MeshComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return MeshComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../shape/AABB */ \"./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MeshComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(MeshComponent, _Component);\n\n var _super = _createSuper(MeshComponent);\n\n /**\n * aabb 应该存在 Mesh 而非 Geometry 中,原因包括:\n * 1. 包围盒会受 transform 影响。例如每次 transform 之后应该重新计算包围盒(center 发生偏移)。\n * 2. 多个 Mesh 可以共享一个 Geometry,但可以各自拥有不同的 aabb\n */\n\n /**\n * transform 之后需要重新计算包围盒\n */\n\n /**\n * 实际渲染 Model\n */\n function MeshComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeshComponent);\n\n _this = _super.call(this, data);\n _this.material = void 0;\n _this.geometry = void 0;\n _this.aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n _this.aabbDirty = true;\n _this.model = void 0;\n _this.visible = true;\n _this.children = [];\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return MeshComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=MeshComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudC5qcz9lODFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDWDtBQUNqQztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0RBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuaW1wb3J0IHsgQUFCQiB9IGZyb20gJy4uLy4uL3NoYXBlL0FBQkInO1xuZXhwb3J0IHZhciBNZXNoQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhNZXNoQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lc2hDb21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBhYWJiIOW6lOivpeWtmOWcqCBNZXNoIOiAjOmdniBHZW9tZXRyeSDkuK3vvIzljp/lm6DljIXmi6zvvJpcbiAgICogMS4g5YyF5Zu055uS5Lya5Y+XIHRyYW5zZm9ybSDlvbHlk43jgILkvovlpoLmr4/mrKEgdHJhbnNmb3JtIOS5i+WQjuW6lOivpemHjeaWsOiuoeeul+WMheWbtOebku+8iGNlbnRlciDlj5HnlJ/lgY/np7vvvInjgIJcbiAgICogMi4g5aSa5LiqIE1lc2gg5Y+v5Lul5YWx5Lqr5LiA5LiqIEdlb21ldHJ577yM5L2G5Y+v5Lul5ZCE6Ieq5oul5pyJ5LiN5ZCM55qEIGFhYmJcbiAgICovXG5cbiAgLyoqXG4gICAqIHRyYW5zZm9ybSDkuYvlkI7pnIDopoHph43mlrDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cbiAgLyoqXG4gICAqIOWunumZhea4suafkyBNb2RlbFxuICAgKi9cbiAgZnVuY3Rpb24gTWVzaENvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1lc2hDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5tYXRlcmlhbCA9IHZvaWQgMDtcbiAgICBfdGhpcy5nZW9tZXRyeSA9IHZvaWQgMDtcbiAgICBfdGhpcy5hYWJiID0gbmV3IEFBQkIoKTtcbiAgICBfdGhpcy5hYWJiRGlydHkgPSB0cnVlO1xuICAgIF90aGlzLm1vZGVsID0gdm9pZCAwO1xuICAgIF90aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIF90aGlzLmNoaWxkcmVuID0gW107XG4gICAgT2JqZWN0LmFzc2lnbihfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgZGF0YSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1lc2hDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXNoQ29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js":
/*!***********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js ***!
\***********************************************************************/
/*! exports provided: MeshSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return MeshSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../shape/Frustum */ \"./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/math */ \"./node_modules/@antv/g-webgpu-core/es/utils/math.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\nvar MeshSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MeshSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, MeshSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n this.planes = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(MeshSystem, [{\n key: \"setFrustumPlanes\",\n value: function setFrustumPlanes(planes) {\n this.planes = planes;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _iterator, _step, view, scene, camera, _iterator2, _step2, entity, component, hierarchyComponent, cullableComponent, geometryComponent, meshTransform, worldTransform, _geometryComponent$aa, center, halfExtents, transformedCenter, rotationScale, transformedHalfExtents, parentCullableComponent;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n view = _step.value;\n scene = view.getScene();\n camera = view.getCamera(); // get VP matrix from camera\n\n _iterator2 = _createForOfIteratorHelper(scene.getEntities());\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n entity = _step2.value;\n component = this.mesh.getComponentByEntity(entity);\n\n if (component) {\n hierarchyComponent = this.hierarchy.getComponentByEntity(entity);\n cullableComponent = this.cullable.getComponentByEntity(entity);\n geometryComponent = component.geometry;\n meshTransform = this.transform.getComponentByEntity(entity); // update mesh.aabb\n\n if (geometryComponent && geometryComponent.aabb && meshTransform && component.aabbDirty) {\n worldTransform = meshTransform.worldTransform; // apply transform to geometry.aabb\n\n _geometryComponent$aa = geometryComponent.aabb, center = _geometryComponent$aa.center, halfExtents = _geometryComponent$aa.halfExtents;\n transformedCenter = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), center, worldTransform);\n rotationScale = Object(_utils_math__WEBPACK_IMPORTED_MODULE_11__[\"getRotationScale\"])(worldTransform, gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create());\n transformedHalfExtents = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), halfExtents, rotationScale);\n component.aabb.update(transformedCenter, transformedHalfExtents);\n component.aabbDirty = false;\n } // culling\n\n\n if (cullableComponent && geometryComponent) {\n parentCullableComponent = this.cullable.getComponentByEntity((hierarchyComponent === null || hierarchyComponent === void 0 ? void 0 : hierarchyComponent.parentID) || -1);\n cullableComponent.visibilityPlaneMask = this.computeVisibilityWithPlaneMask(component.aabb, (parentCullableComponent === null || parentCullableComponent === void 0 ? void 0 : parentCullableComponent.visibilityPlaneMask) || _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INDETERMINATE, this.planes || camera.getFrustum().planes);\n cullableComponent.visible = cullableComponent.visibilityPlaneMask !== _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.cullable.clear();\n this.mesh.clear();\n }\n /**\n *\n * @see「Optimized View Frustum Culling Algorithms for Bounding Boxes」\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n *\n * * 基础相交测试 the basic intersection test\n * * 标记 masking @see https://cesium.com/blog/2015/08/04/fast-hierarchical-culling/\n * * TODO: 平面一致性测试 the plane-coherency test\n * * TODO: 支持 mesh 指定自身的剔除策略,参考 Babylon.js @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n *\n * @param aabb aabb\n * @param parentPlaneMask mask of parent\n * @param planes planes of frustum\n */\n\n }, {\n key: \"computeVisibilityWithPlaneMask\",\n value: function computeVisibilityWithPlaneMask(aabb, parentPlaneMask, planes) {\n if (parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE || parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE) {\n // 父节点完全位于视锥内或者外部,直接返回\n return parentPlaneMask;\n } // Start with MASK_INSIDE (all zeros) so that after the loop, the return value can be compared with MASK_INSIDE.\n // (Because if there are fewer than 31 planes, the upper bits wont be changed.)\n\n\n var mask = _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE;\n\n for (var k = 0, len = planes.length; k < len; ++k) {\n // For k greater than 31 (since 31 is the maximum number of INSIDE/INTERSECTING bits we can store), skip the optimization.\n var flag = k < 31 ? 1 << k : 0;\n\n if (k < 31 && (parentPlaneMask & flag) === 0) {\n // 父节点处于当前面内部,可以跳过\n continue;\n } // 使用 p-vertex 和 n-vertex 加速,避免进行平面和 aabb 全部顶点的相交检测\n\n\n var _planes$k = planes[k],\n normal = _planes$k.normal,\n distance = _planes$k.distance;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getNegativeFarPoint(planes[k])) + distance > 0) {\n return _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getPositiveFarPoint(planes[k])) + distance > 0) {\n // 和当前面相交,对应位置为1,继续检测下一个面\n mask |= flag;\n }\n }\n\n return mask;\n }\n }]);\n\n return MeshSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvU3lzdGVtLmpzPzkxZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLHdEQUF3RCxRQUFRLG1FQUFtRSx3SEFBd0gsZ0JBQWdCLFdBQVcseUJBQXlCLFNBQVMsd0JBQXdCLDRCQUE0QixjQUFjLFNBQVMsOEJBQThCLEVBQUUscUJBQXFCLFVBQVUsRUFBRSxTQUFTLEVBQUUsOEpBQThKLEVBQUUsa0RBQWtELFNBQVMsa0JBQWtCLDJCQUEyQixFQUFFLG1CQUFtQixzQkFBc0IsOEJBQThCLGFBQWEsRUFBRSxzQkFBc0IsZUFBZSxXQUFXLEVBQUUsbUJBQW1CLE1BQU0seURBQXlELEVBQUUsVUFBVSx1QkFBdUIsRUFBRSxFQUFFLEdBQUc7O0FBRTc5QixpREFBaUQsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRCxrSEFBa0g7O0FBRTlaLHNDQUFzQyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxrQkFBa0IsRUFBRSxhQUFhOztBQUU5STtBQUNRO0FBQ0Q7QUFDSDtBQUNTO0FBQzdDLHlCQUF5Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsZ0NBQWdDLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUscUNBQXFDLHdEQUFNLENBQUMsc0RBQVU7QUFDeFI7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLCtCQUErQjtBQUNwRTtBQUNBO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQTtBQUNBLDBDQUEwQyxpQ0FBaUM7QUFDM0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRjs7QUFFdEY7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0EsZ0RBQWdELDhDQUFJLGVBQWUsOENBQUk7QUFDdkUsNENBQTRDLHFFQUFnQixpQkFBaUIsOENBQUk7QUFDakYscURBQXFELDhDQUFJLGVBQWUsOENBQUk7QUFDNUU7QUFDQTtBQUNBLDJCQUEyQjs7O0FBRzNCO0FBQ0E7QUFDQSwyUEFBMlAsb0RBQUk7QUFDL1Asa0dBQWtHLG9EQUFJO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4QixvREFBSSxnQ0FBZ0Msb0RBQUk7QUFDdEU7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0EsaUJBQWlCLG9EQUFJOztBQUVyQiwwQ0FBMEMsU0FBUztBQUNuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCLGlCQUFpQixvREFBSTtBQUNyQjs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX2Rlc2NyaXB0b3I0LCBfZGVzY3JpcHRvcjUsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IG1hdDMsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IE1hc2sgfSBmcm9tICcuLi8uLi9zaGFwZS9GcnVzdHVtJztcbmltcG9ydCB7IGdldFJvdGF0aW9uU2NhbGUgfSBmcm9tICcuLi8uLi91dGlscy9tYXRoJztcbmV4cG9ydCB2YXIgTWVzaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5DdWxsYWJsZUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLkdlb21ldHJ5Q29tcG9uZW50TWFuYWdlciksIF9kZWM1ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNZXNoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXNoU3lzdGVtKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwibWVzaFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImN1bGxhYmxlXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImdlb21ldHJ5XCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIHRoaXMucGxhbmVzID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lc2hTeXN0ZW0sIFt7XG4gICAga2V5OiBcInNldEZydXN0dW1QbGFuZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RnJ1c3R1bVBsYW5lcyhwbGFuZXMpIHtcbiAgICAgIHRoaXMucGxhbmVzID0gcGxhbmVzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIHNjZW5lLCBjYW1lcmEsIF9pdGVyYXRvcjIsIF9zdGVwMiwgZW50aXR5LCBjb21wb25lbnQsIGhpZXJhcmNoeUNvbXBvbmVudCwgY3VsbGFibGVDb21wb25lbnQsIGdlb21ldHJ5Q29tcG9uZW50LCBtZXNoVHJhbnNmb3JtLCB3b3JsZFRyYW5zZm9ybSwgX2dlb21ldHJ5Q29tcG9uZW50JGFhLCBjZW50ZXIsIGhhbGZFeHRlbnRzLCB0cmFuc2Zvcm1lZENlbnRlciwgcm90YXRpb25TY2FsZSwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cywgcGFyZW50Q3VsbGFibGVDb21wb25lbnQ7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhID0gdmlldy5nZXRDYW1lcmEoKTsgLy8gZ2V0IFZQIG1hdHJpeCBmcm9tIGNhbWVyYVxuXG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihzY2VuZS5nZXRFbnRpdGllcygpKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMi5zKCk7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgPSBfc3RlcDIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjdWxsYWJsZUNvbXBvbmVudCA9IHRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDb21wb25lbnQgPSBjb21wb25lbnQuZ2VvbWV0cnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2hUcmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpOyAvLyB1cGRhdGUgbWVzaC5hYWJiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdlb21ldHJ5Q29tcG9uZW50ICYmIGdlb21ldHJ5Q29tcG9uZW50LmFhYmIgJiYgbWVzaFRyYW5zZm9ybSAmJiBjb21wb25lbnQuYWFiYkRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRUcmFuc2Zvcm0gPSBtZXNoVHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtOyAvLyBhcHBseSB0cmFuc2Zvcm0gdG8gZ2VvbWV0cnkuYWFiYlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2dlb21ldHJ5Q29tcG9uZW50JGFhID0gZ2VvbWV0cnlDb21wb25lbnQuYWFiYiwgY2VudGVyID0gX2dlb21ldHJ5Q29tcG9uZW50JGFhLmNlbnRlciwgaGFsZkV4dGVudHMgPSBfZ2VvbWV0cnlDb21wb25lbnQkYWEuaGFsZkV4dGVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRDZW50ZXIgPSB2ZWMzLnRyYW5zZm9ybU1hdDQodmVjMy5jcmVhdGUoKSwgY2VudGVyLCB3b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25TY2FsZSA9IGdldFJvdGF0aW9uU2NhbGUod29ybGRUcmFuc2Zvcm0sIG1hdDMuY3JlYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkSGFsZkV4dGVudHMgPSB2ZWMzLnRyYW5zZm9ybU1hdDModmVjMy5jcmVhdGUoKSwgaGFsZkV4dGVudHMsIHJvdGF0aW9uU2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hYWJiLnVwZGF0ZSh0cmFuc2Zvcm1lZENlbnRlciwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmFhYmJEaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGN1bGxpbmdcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdWxsYWJsZUNvbXBvbmVudCAmJiBnZW9tZXRyeUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEN1bGxhYmxlQ29tcG9uZW50ID0gdGhpcy5jdWxsYWJsZS5nZXRDb21wb25lbnRCeUVudGl0eSgoaGllcmFyY2h5Q29tcG9uZW50ID09PSBudWxsIHx8IGhpZXJhcmNoeUNvbXBvbmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGllcmFyY2h5Q29tcG9uZW50LnBhcmVudElEKSB8fCAtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VsbGFibGVDb21wb25lbnQudmlzaWJpbGl0eVBsYW5lTWFzayA9IHRoaXMuY29tcHV0ZVZpc2liaWxpdHlXaXRoUGxhbmVNYXNrKGNvbXBvbmVudC5hYWJiLCAocGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IG51bGwgfHwgcGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEN1bGxhYmxlQ29tcG9uZW50LnZpc2liaWxpdHlQbGFuZU1hc2spIHx8IE1hc2suSU5ERVRFUk1JTkFURSwgdGhpcy5wbGFuZXMgfHwgY2FtZXJhLmdldEZydXN0dW0oKS5wbGFuZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1bGxhYmxlQ29tcG9uZW50LnZpc2libGUgPSBjdWxsYWJsZUNvbXBvbmVudC52aXNpYmlsaXR5UGxhbmVNYXNrICE9PSBNYXNrLk9VVFNJREU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInRlYXJEb3duXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRlYXJEb3duKCkge1xuICAgICAgdGhpcy5jdWxsYWJsZS5jbGVhcigpO1xuICAgICAgdGhpcy5tZXNoLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHNlZeOAjE9wdGltaXplZCBWaWV3IEZydXN0dW0gQ3VsbGluZyBBbGdvcml0aG1zIGZvciBCb3VuZGluZyBCb3hlc+OAjVxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gICAgICpcbiAgICAgKiAqIOWfuuehgOebuOS6pOa1i+ivlSB0aGUgYmFzaWMgaW50ZXJzZWN0aW9uIHRlc3RcbiAgICAgKiAqIOagh+iusCBtYXNraW5nIEBzZWUgaHR0cHM6Ly9jZXNpdW0uY29tL2Jsb2cvMjAxNS8wOC8wNC9mYXN0LWhpZXJhcmNoaWNhbC1jdWxsaW5nL1xuICAgICAqICogVE9ETzog5bmz6Z2i5LiA6Ie05oCn5rWL6K+VIHRoZSBwbGFuZS1jb2hlcmVuY3kgdGVzdFxuICAgICAqICogVE9ETzog5pSv5oyBIG1lc2gg5oyH5a6a6Ieq6Lqr55qE5YmU6Zmk562W55Wl77yM5Y+C6ICDIEJhYnlsb24uanMgQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWFiYiBhYWJiXG4gICAgICogQHBhcmFtIHBhcmVudFBsYW5lTWFzayBtYXNrIG9mIHBhcmVudFxuICAgICAqIEBwYXJhbSBwbGFuZXMgcGxhbmVzIG9mIGZydXN0dW1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbXB1dGVWaXNpYmlsaXR5V2l0aFBsYW5lTWFza1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wdXRlVmlzaWJpbGl0eVdpdGhQbGFuZU1hc2soYWFiYiwgcGFyZW50UGxhbmVNYXNrLCBwbGFuZXMpIHtcbiAgICAgIGlmIChwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suT1VUU0lERSB8fCBwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suSU5TSURFKSB7XG4gICAgICAgIC8vIOeItuiKgueCueWujOWFqOS9jeS6juinhumUpeWGheaIluiAheWklumDqO+8jOebtOaOpei/lOWbnlxuICAgICAgICByZXR1cm4gcGFyZW50UGxhbmVNYXNrO1xuICAgICAgfSAvLyBTdGFydCB3aXRoIE1BU0tfSU5TSURFIChhbGwgemVyb3MpIHNvIHRoYXQgYWZ0ZXIgdGhlIGxvb3AsIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIGNvbXBhcmVkIHdpdGggTUFTS19JTlNJREUuXG4gICAgICAvLyAoQmVjYXVzZSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiAzMSBwbGFuZXMsIHRoZSB1cHBlciBiaXRzIHdvbnQgYmUgY2hhbmdlZC4pXG5cblxuICAgICAgdmFyIG1hc2sgPSBNYXNrLklOU0lERTtcblxuICAgICAgZm9yICh2YXIgayA9IDAsIGxlbiA9IHBsYW5lcy5sZW5ndGg7IGsgPCBsZW47ICsraykge1xuICAgICAgICAvLyBGb3IgayBncmVhdGVyIHRoYW4gMzEgKHNpbmNlIDMxIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBJTlNJREUvSU5URVJTRUNUSU5HIGJpdHMgd2UgY2FuIHN0b3JlKSwgc2tpcCB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICB2YXIgZmxhZyA9IGsgPCAzMSA/IDEgPDwgayA6IDA7XG5cbiAgICAgICAgaWYgKGsgPCAzMSAmJiAocGFyZW50UGxhbmVNYXNrICYgZmxhZykgPT09IDApIHtcbiAgICAgICAgICAvLyDniLboioLngrnlpITkuo7lvZPliY3pnaLlhoXpg6jvvIzlj6/ku6Xot7Pov4dcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyDkvb/nlKggcC12ZXJ0ZXgg5ZKMIG4tdmVydGV4IOWKoOmAn++8jOmBv+WFjei/m+ihjOW5s+mdouWSjCBhYWJiIOWFqOmDqOmhtueCueeahOebuOS6pOajgOa1i1xuXG5cbiAgICAgICAgdmFyIF9wbGFuZXMkayA9IHBsYW5lc1trXSxcbiAgICAgICAgICAgIG5vcm1hbCA9IF9wbGFuZXMkay5ub3JtYWwsXG4gICAgICAgICAgICBkaXN0YW5jZSA9IF9wbGFuZXMkay5kaXN0YW5jZTtcblxuICAgICAgICBpZiAodmVjMy5kb3Qobm9ybWFsLCBhYWJiLmdldE5lZ2F0aXZlRmFyUG9pbnQocGxhbmVzW2tdKSkgKyBkaXN0YW5jZSA+IDApIHtcbiAgICAgICAgICByZXR1cm4gTWFzay5PVVRTSURFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlYzMuZG90KG5vcm1hbCwgYWFiYi5nZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lc1trXSkpICsgZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgLy8g5ZKM5b2T5YmN6Z2i55u45Lqk77yM5a+55bqU5L2N572u5Li6Me+8jOe7p+e7reajgOa1i+S4i+S4gOS4qumdolxuICAgICAgICAgIG1hc2sgfD0gZmxhZztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFzaztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVzaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiaGllcmFyY2h5XCIsIFtfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjUgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInRyYW5zZm9ybVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js":
/*!**************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js ***!
\**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvaW50ZXJmYWNlLmpzPzYzMjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL2ludGVyZmFjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJmYWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js":
/*!*******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js ***!
\*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanM/YTI1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlBdHRyaWJ1dGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js":
/*!****************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanM/MDM1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js":
/*!**********************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js ***!
\**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanM/MzliYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js":
/*!******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js ***!
\******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lFbGVtZW50cy5qcz9mOTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js":
/*!*********************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js ***!
\*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lGcmFtZWJ1ZmZlci5qcz85Y2VlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUZyYW1lYnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js":
/*!***************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNb2RlbC5qcz9jOWE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js":
/*!***************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js ***!
\***************************************************************************************/
/*! exports provided: PassType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return PassType; });\nvar PassType;\n/**\n * Pass 分两类:\n * 1. 渲染相关 eg. ClearPass、RenderPass、PickingPass、ShadowPass\n * 2. PostProcessing eg. CopyPass、BlurPass\n * 另外考虑到 Pass 之间严格的执行顺序,render 方法必须是异步的\n */\n\n(function (PassType) {\n PassType[\"Normal\"] = \"normal\";\n PassType[\"PostProcessing\"] = \"post-processing\";\n})(PassType || (PassType = {}));\n//# sourceMappingURL=IMultiPassRenderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNdWx0aVBhc3NSZW5kZXJlci5qcz81N2ZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRCQUE0QjtBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU11bHRpUGFzc1JlbmRlcmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXNzVHlwZTtcbi8qKlxuICogUGFzcyDliIbkuKTnsbvvvJpcbiAqIDEuIOa4suafk+ebuOWFsyBlZy4gQ2xlYXJQYXNz44CBUmVuZGVyUGFzc+OAgVBpY2tpbmdQYXNz44CBU2hhZG93UGFzc1xuICogMi4gUG9zdFByb2Nlc3NpbmcgZWcuIENvcHlQYXNz44CBQmx1clBhc3NcbiAqIOWPpuWkluiAg+iZkeWIsCBQYXNzIOS5i+mXtOS4peagvOeahOaJp+ihjOmhuuW6j++8jHJlbmRlciDmlrnms5Xlv4XpobvmmK/lvILmraXnmoRcbiAqL1xuXG4oZnVuY3Rpb24gKFBhc3NUeXBlKSB7XG4gIFBhc3NUeXBlW1wiTm9ybWFsXCJdID0gXCJub3JtYWxcIjtcbiAgUGFzc1R5cGVbXCJQb3N0UHJvY2Vzc2luZ1wiXSA9IFwicG9zdC1wcm9jZXNzaW5nXCI7XG59KShQYXNzVHlwZSB8fCAoUGFzc1R5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SU11bHRpUGFzc1JlbmRlcmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js":
/*!**********************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js ***!
\**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IRenderbuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanM/YmRkMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js":
/*!*************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js ***!
\*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IRendererService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanM/MzYyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJlclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js":
/*!*******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js ***!
\*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=ITexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanM/MjU3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlUZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js":
/*!*****************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js ***!
\*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IUniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lVbmlmb3JtLmpzPzY2MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9JVW5pZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SVVuaWZvcm0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js":
/*!***************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js ***!
\***************************************************************************/
/*! exports provided: RendererSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return RendererSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./passes/CopyPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./passes/PixelPickingPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./passes/RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _temp;\n\n\n\n\n\n\nvar RendererSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].FrameGraphSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function RendererSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RendererSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor4, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RendererSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _this$renderPassFacto, setupRenderPass, executeRenderPass, renderPass, _this$renderPassFacto2, setupCopyPass, executeCopyPass, tearDownCopyPass, copyPass;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // const pixelPickingPass = this.renderPassFactory(\n // PixelPickingPass.IDENTIFIER,\n // );\n // const {\n // setup: setupPixelPickingPass,\n // execute: executePixelPickingPass,\n // tearDown: tearDownPickingPass,\n // } = pixelPickingPass;\n // this.frameGraphSystem.addPass(\n // PixelPickingPass.IDENTIFIER,\n // setupPixelPickingPass,\n // executePixelPickingPass,\n // tearDownPickingPass,\n // );\n _this$renderPassFacto = this.renderPassFactory(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER), setupRenderPass = _this$renderPassFacto.setup, executeRenderPass = _this$renderPassFacto.execute;\n renderPass = this.frameGraphSystem.addPass(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER, setupRenderPass, executeRenderPass);\n _this$renderPassFacto2 = this.renderPassFactory(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER), setupCopyPass = _this$renderPassFacto2.setup, executeCopyPass = _this$renderPassFacto2.execute, tearDownCopyPass = _this$renderPassFacto2.tearDown;\n copyPass = this.frameGraphSystem.addPass(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER, setupCopyPass, executeCopyPass, tearDownCopyPass);\n this.frameGraphSystem.present(copyPass.data.output); // this.frameGraphSystem.present(renderPass.data.output);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.resourcePool.clean();\n }\n }, {\n key: \"pick\",\n value: function pick(position, view) {\n var pickingPass = this.renderPassFactory(_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"].IDENTIFIER);\n return pickingPass.pick(position, view);\n }\n }]);\n\n return RendererSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL1N5c3RlbS5qcz9iNzJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFc0Q7QUFDUjtBQUNEO0FBQ2dCO0FBQ1o7QUFDMUMsNkJBQTZCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSxtQkFBbUIsdURBQUssQ0FBQyxzREFBVSw0QkFBNEIsd0RBQU0sQ0FBQyxzREFBVSw2QkFBNkIsd0RBQU0sQ0FBQyxzREFBVSx5QkFBeUIsd0RBQU0sQ0FBQyxzREFBVTtBQUNuUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsOERBQVU7QUFDekUsMkRBQTJELDhEQUFVO0FBQ3JFLGdFQUFnRSx5REFBUTtBQUN4RSx5REFBeUQseURBQVE7QUFDakUsb0VBQW9FOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0NBQStDLDBFQUFnQjtBQUMvRDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUsIG5hbWVkIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IENvcHlQYXNzIH0gZnJvbSAnLi9wYXNzZXMvQ29weVBhc3MnO1xuaW1wb3J0IHsgUGl4ZWxQaWNraW5nUGFzcyB9IGZyb20gJy4vcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vcGFzc2VzL1JlbmRlclBhc3MnO1xuZXhwb3J0IHZhciBSZW5kZXJlclN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJlclN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyZXJTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY29uZmlnU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZXNvdXJjZVBvb2xcIiwgX2Rlc2NyaXB0b3I0LCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZW5kZXJlclN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHZhciBfdGhpcyRyZW5kZXJQYXNzRmFjdG8sIHNldHVwUmVuZGVyUGFzcywgZXhlY3V0ZVJlbmRlclBhc3MsIHJlbmRlclBhc3MsIF90aGlzJHJlbmRlclBhc3NGYWN0bzIsIHNldHVwQ29weVBhc3MsIGV4ZWN1dGVDb3B5UGFzcywgdGVhckRvd25Db3B5UGFzcywgY29weVBhc3M7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBwaXhlbFBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeTxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCB7XG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cDogc2V0dXBQaXhlbFBpY2tpbmdQYXNzLFxuICAgICAgICAgICAgICAgIC8vICAgZXhlY3V0ZTogZXhlY3V0ZVBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICB0ZWFyRG93bjogdGVhckRvd25QaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyB9ID0gcGl4ZWxQaWNraW5nUGFzcztcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzczxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cFBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICBleGVjdXRlUGl4ZWxQaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyAgIHRlYXJEb3duUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8gPSB0aGlzLnJlbmRlclBhc3NGYWN0b3J5KFJlbmRlclBhc3MuSURFTlRJRklFUiksIHNldHVwUmVuZGVyUGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0by5zZXR1cCwgZXhlY3V0ZVJlbmRlclBhc3MgPSBfdGhpcyRyZW5kZXJQYXNzRmFjdG8uZXhlY3V0ZTtcbiAgICAgICAgICAgICAgICByZW5kZXJQYXNzID0gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLmFkZFBhc3MoUmVuZGVyUGFzcy5JREVOVElGSUVSLCBzZXR1cFJlbmRlclBhc3MsIGV4ZWN1dGVSZW5kZXJQYXNzKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8yID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShDb3B5UGFzcy5JREVOVElGSUVSKSwgc2V0dXBDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuc2V0dXAsIGV4ZWN1dGVDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuZXhlY3V0ZSwgdGVhckRvd25Db3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIudGVhckRvd247XG4gICAgICAgICAgICAgICAgY29weVBhc3MgPSB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzcyhDb3B5UGFzcy5JREVOVElGSUVSLCBzZXR1cENvcHlQYXNzLCBleGVjdXRlQ29weVBhc3MsIHRlYXJEb3duQ29weVBhc3MpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWVHcmFwaFN5c3RlbS5wcmVzZW50KGNvcHlQYXNzLmRhdGEub3V0cHV0KTsgLy8gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLnByZXNlbnQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKF94KSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sLmNsZWFuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBpY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGljayhwb3NpdGlvbiwgdmlldykge1xuICAgICAgdmFyIHBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICAgICAgcmV0dXJuIHBpY2tpbmdQYXNzLnBpY2socG9zaXRpb24sIHZpZXcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZW5kZXJlclN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlbmRlclBhc3NGYWN0b3J5XCIsIFtfZGVjNF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVzb3VyY2VQb29sXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TeXN0ZW0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js":
/*!***********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js ***!
\***********************************************************************/
/*! exports provided: gl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return gl; });\n/**\n * WebGL 枚举值\n * @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14\n * 使用 babel 插件对常量进行内联,以减少最终打包产物大小\n * @see https://github.com/uber/deck.gl/blob/7.1-release/dev-docs/roadmaps/dist-size-roadmap.md#inline-gl-constants\n * 为了支持 WebGPU,新增 TextureUsage\n * @see https://gpuweb.github.io/gpuweb/#gputextureusage\n */\nvar gl;\n\n(function (gl) {\n gl[gl[\"DEPTH_BUFFER_BIT\"] = 256] = \"DEPTH_BUFFER_BIT\";\n gl[gl[\"STENCIL_BUFFER_BIT\"] = 1024] = \"STENCIL_BUFFER_BIT\";\n gl[gl[\"COLOR_BUFFER_BIT\"] = 16384] = \"COLOR_BUFFER_BIT\";\n gl[gl[\"POINTS\"] = 0] = \"POINTS\";\n gl[gl[\"LINES\"] = 1] = \"LINES\";\n gl[gl[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n gl[gl[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n gl[gl[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n gl[gl[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n gl[gl[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n gl[gl[\"ZERO\"] = 0] = \"ZERO\";\n gl[gl[\"ONE\"] = 1] = \"ONE\";\n gl[gl[\"SRC_COLOR\"] = 768] = \"SRC_COLOR\";\n gl[gl[\"ONE_MINUS_SRC_COLOR\"] = 769] = \"ONE_MINUS_SRC_COLOR\";\n gl[gl[\"SRC_ALPHA\"] = 770] = \"SRC_ALPHA\";\n gl[gl[\"ONE_MINUS_SRC_ALPHA\"] = 771] = \"ONE_MINUS_SRC_ALPHA\";\n gl[gl[\"DST_ALPHA\"] = 772] = \"DST_ALPHA\";\n gl[gl[\"ONE_MINUS_DST_ALPHA\"] = 773] = \"ONE_MINUS_DST_ALPHA\";\n gl[gl[\"DST_COLOR\"] = 774] = \"DST_COLOR\";\n gl[gl[\"ONE_MINUS_DST_COLOR\"] = 775] = \"ONE_MINUS_DST_COLOR\";\n gl[gl[\"SRC_ALPHA_SATURATE\"] = 776] = \"SRC_ALPHA_SATURATE\";\n gl[gl[\"FUNC_ADD\"] = 32774] = \"FUNC_ADD\";\n gl[gl[\"BLEND_EQUATION\"] = 32777] = \"BLEND_EQUATION\";\n gl[gl[\"BLEND_EQUATION_RGB\"] = 32777] = \"BLEND_EQUATION_RGB\";\n gl[gl[\"BLEND_EQUATION_ALPHA\"] = 34877] = \"BLEND_EQUATION_ALPHA\";\n gl[gl[\"FUNC_SUBTRACT\"] = 32778] = \"FUNC_SUBTRACT\";\n gl[gl[\"FUNC_REVERSE_SUBTRACT\"] = 32779] = \"FUNC_REVERSE_SUBTRACT\";\n gl[gl[\"MAX_EXT\"] = 32776] = \"MAX_EXT\";\n gl[gl[\"MIN_EXT\"] = 32775] = \"MIN_EXT\";\n gl[gl[\"BLEND_DST_RGB\"] = 32968] = \"BLEND_DST_RGB\";\n gl[gl[\"BLEND_SRC_RGB\"] = 32969] = \"BLEND_SRC_RGB\";\n gl[gl[\"BLEND_DST_ALPHA\"] = 32970] = \"BLEND_DST_ALPHA\";\n gl[gl[\"BLEND_SRC_ALPHA\"] = 32971] = \"BLEND_SRC_ALPHA\";\n gl[gl[\"CONSTANT_COLOR\"] = 32769] = \"CONSTANT_COLOR\";\n gl[gl[\"ONE_MINUS_CONSTANT_COLOR\"] = 32770] = \"ONE_MINUS_CONSTANT_COLOR\";\n gl[gl[\"CONSTANT_ALPHA\"] = 32771] = \"CONSTANT_ALPHA\";\n gl[gl[\"ONE_MINUS_CONSTANT_ALPHA\"] = 32772] = \"ONE_MINUS_CONSTANT_ALPHA\";\n gl[gl[\"BLEND_COLOR\"] = 32773] = \"BLEND_COLOR\";\n gl[gl[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n gl[gl[\"ARRAY_BUFFER_BINDING\"] = 34964] = \"ARRAY_BUFFER_BINDING\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER_BINDING\"] = 34965] = \"ELEMENT_ARRAY_BUFFER_BINDING\";\n gl[gl[\"STREAM_DRAW\"] = 35040] = \"STREAM_DRAW\";\n gl[gl[\"STATIC_DRAW\"] = 35044] = \"STATIC_DRAW\";\n gl[gl[\"DYNAMIC_DRAW\"] = 35048] = \"DYNAMIC_DRAW\";\n gl[gl[\"BUFFER_SIZE\"] = 34660] = \"BUFFER_SIZE\";\n gl[gl[\"BUFFER_USAGE\"] = 34661] = \"BUFFER_USAGE\";\n gl[gl[\"CURRENT_VERTEX_ATTRIB\"] = 34342] = \"CURRENT_VERTEX_ATTRIB\";\n gl[gl[\"FRONT\"] = 1028] = \"FRONT\";\n gl[gl[\"BACK\"] = 1029] = \"BACK\";\n gl[gl[\"FRONT_AND_BACK\"] = 1032] = \"FRONT_AND_BACK\";\n gl[gl[\"CULL_FACE\"] = 2884] = \"CULL_FACE\";\n gl[gl[\"BLEND\"] = 3042] = \"BLEND\";\n gl[gl[\"DITHER\"] = 3024] = \"DITHER\";\n gl[gl[\"STENCIL_TEST\"] = 2960] = \"STENCIL_TEST\";\n gl[gl[\"DEPTH_TEST\"] = 2929] = \"DEPTH_TEST\";\n gl[gl[\"SCISSOR_TEST\"] = 3089] = \"SCISSOR_TEST\";\n gl[gl[\"POLYGON_OFFSET_FILL\"] = 32823] = \"POLYGON_OFFSET_FILL\";\n gl[gl[\"SAMPLE_ALPHA_TO_COVERAGE\"] = 32926] = \"SAMPLE_ALPHA_TO_COVERAGE\";\n gl[gl[\"SAMPLE_COVERAGE\"] = 32928] = \"SAMPLE_COVERAGE\";\n gl[gl[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n gl[gl[\"INVALID_ENUM\"] = 1280] = \"INVALID_ENUM\";\n gl[gl[\"INVALID_VALUE\"] = 1281] = \"INVALID_VALUE\";\n gl[gl[\"INVALID_OPERATION\"] = 1282] = \"INVALID_OPERATION\";\n gl[gl[\"OUT_OF_MEMORY\"] = 1285] = \"OUT_OF_MEMORY\";\n gl[gl[\"CW\"] = 2304] = \"CW\";\n gl[gl[\"CCW\"] = 2305] = \"CCW\";\n gl[gl[\"LINE_WIDTH\"] = 2849] = \"LINE_WIDTH\";\n gl[gl[\"ALIASED_POINT_SIZE_RANGE\"] = 33901] = \"ALIASED_POINT_SIZE_RANGE\";\n gl[gl[\"ALIASED_LINE_WIDTH_RANGE\"] = 33902] = \"ALIASED_LINE_WIDTH_RANGE\";\n gl[gl[\"CULL_FACE_MODE\"] = 2885] = \"CULL_FACE_MODE\";\n gl[gl[\"FRONT_FACE\"] = 2886] = \"FRONT_FACE\";\n gl[gl[\"DEPTH_RANGE\"] = 2928] = \"DEPTH_RANGE\";\n gl[gl[\"DEPTH_WRITEMASK\"] = 2930] = \"DEPTH_WRITEMASK\";\n gl[gl[\"DEPTH_CLEAR_VALUE\"] = 2931] = \"DEPTH_CLEAR_VALUE\";\n gl[gl[\"DEPTH_FUNC\"] = 2932] = \"DEPTH_FUNC\";\n gl[gl[\"STENCIL_CLEAR_VALUE\"] = 2961] = \"STENCIL_CLEAR_VALUE\";\n gl[gl[\"STENCIL_FUNC\"] = 2962] = \"STENCIL_FUNC\";\n gl[gl[\"STENCIL_FAIL\"] = 2964] = \"STENCIL_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_FAIL\"] = 2965] = \"STENCIL_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_PASS\"] = 2966] = \"STENCIL_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_REF\"] = 2967] = \"STENCIL_REF\";\n gl[gl[\"STENCIL_VALUE_MASK\"] = 2963] = \"STENCIL_VALUE_MASK\";\n gl[gl[\"STENCIL_WRITEMASK\"] = 2968] = \"STENCIL_WRITEMASK\";\n gl[gl[\"STENCIL_BACK_FUNC\"] = 34816] = \"STENCIL_BACK_FUNC\";\n gl[gl[\"STENCIL_BACK_FAIL\"] = 34817] = \"STENCIL_BACK_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_FAIL\"] = 34818] = \"STENCIL_BACK_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_PASS\"] = 34819] = \"STENCIL_BACK_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_BACK_REF\"] = 36003] = \"STENCIL_BACK_REF\";\n gl[gl[\"STENCIL_BACK_VALUE_MASK\"] = 36004] = \"STENCIL_BACK_VALUE_MASK\";\n gl[gl[\"STENCIL_BACK_WRITEMASK\"] = 36005] = \"STENCIL_BACK_WRITEMASK\";\n gl[gl[\"VIEWPORT\"] = 2978] = \"VIEWPORT\";\n gl[gl[\"SCISSOR_BOX\"] = 3088] = \"SCISSOR_BOX\";\n gl[gl[\"COLOR_CLEAR_VALUE\"] = 3106] = \"COLOR_CLEAR_VALUE\";\n gl[gl[\"COLOR_WRITEMASK\"] = 3107] = \"COLOR_WRITEMASK\";\n gl[gl[\"UNPACK_ALIGNMENT\"] = 3317] = \"UNPACK_ALIGNMENT\";\n gl[gl[\"PACK_ALIGNMENT\"] = 3333] = \"PACK_ALIGNMENT\";\n gl[gl[\"MAX_TEXTURE_SIZE\"] = 3379] = \"MAX_TEXTURE_SIZE\";\n gl[gl[\"MAX_VIEWPORT_DIMS\"] = 3386] = \"MAX_VIEWPORT_DIMS\";\n gl[gl[\"SUBPIXEL_BITS\"] = 3408] = \"SUBPIXEL_BITS\";\n gl[gl[\"RED_BITS\"] = 3410] = \"RED_BITS\";\n gl[gl[\"GREEN_BITS\"] = 3411] = \"GREEN_BITS\";\n gl[gl[\"BLUE_BITS\"] = 3412] = \"BLUE_BITS\";\n gl[gl[\"ALPHA_BITS\"] = 3413] = \"ALPHA_BITS\";\n gl[gl[\"DEPTH_BITS\"] = 3414] = \"DEPTH_BITS\";\n gl[gl[\"STENCIL_BITS\"] = 3415] = \"STENCIL_BITS\";\n gl[gl[\"POLYGON_OFFSET_UNITS\"] = 10752] = \"POLYGON_OFFSET_UNITS\";\n gl[gl[\"POLYGON_OFFSET_FACTOR\"] = 32824] = \"POLYGON_OFFSET_FACTOR\";\n gl[gl[\"TEXTURE_BINDING_2D\"] = 32873] = \"TEXTURE_BINDING_2D\";\n gl[gl[\"SAMPLE_BUFFERS\"] = 32936] = \"SAMPLE_BUFFERS\";\n gl[gl[\"SAMPLES\"] = 32937] = \"SAMPLES\";\n gl[gl[\"SAMPLE_COVERAGE_VALUE\"] = 32938] = \"SAMPLE_COVERAGE_VALUE\";\n gl[gl[\"SAMPLE_COVERAGE_INVERT\"] = 32939] = \"SAMPLE_COVERAGE_INVERT\";\n gl[gl[\"COMPRESSED_TEXTURE_FORMATS\"] = 34467] = \"COMPRESSED_TEXTURE_FORMATS\";\n gl[gl[\"DONT_CARE\"] = 4352] = \"DONT_CARE\";\n gl[gl[\"FASTEST\"] = 4353] = \"FASTEST\";\n gl[gl[\"NICEST\"] = 4354] = \"NICEST\";\n gl[gl[\"GENERATE_MIPMAP_HINT\"] = 33170] = \"GENERATE_MIPMAP_HINT\";\n gl[gl[\"BYTE\"] = 5120] = \"BYTE\";\n gl[gl[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n gl[gl[\"SHORT\"] = 5122] = \"SHORT\";\n gl[gl[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n gl[gl[\"INT\"] = 5124] = \"INT\";\n gl[gl[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n gl[gl[\"FLOAT\"] = 5126] = \"FLOAT\";\n gl[gl[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n gl[gl[\"ALPHA\"] = 6406] = \"ALPHA\";\n gl[gl[\"RGB\"] = 6407] = \"RGB\";\n gl[gl[\"RGBA\"] = 6408] = \"RGBA\";\n gl[gl[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n gl[gl[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n gl[gl[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n gl[gl[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n gl[gl[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n gl[gl[\"FRAGMENT_SHADER\"] = 35632] = \"FRAGMENT_SHADER\";\n gl[gl[\"VERTEX_SHADER\"] = 35633] = \"VERTEX_SHADER\";\n gl[gl[\"MAX_VERTEX_ATTRIBS\"] = 34921] = \"MAX_VERTEX_ATTRIBS\";\n gl[gl[\"MAX_VERTEX_UNIFORM_VECTORS\"] = 36347] = \"MAX_VERTEX_UNIFORM_VECTORS\";\n gl[gl[\"MAX_VARYING_VECTORS\"] = 36348] = \"MAX_VARYING_VECTORS\";\n gl[gl[\"MAX_COMBINED_TEXTURE_IMAGE_UNITS\"] = 35661] = \"MAX_COMBINED_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_VERTEX_TEXTURE_IMAGE_UNITS\"] = 35660] = \"MAX_VERTEX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_TEXTURE_IMAGE_UNITS\"] = 34930] = \"MAX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_FRAGMENT_UNIFORM_VECTORS\"] = 36349] = \"MAX_FRAGMENT_UNIFORM_VECTORS\";\n gl[gl[\"SHADER_TYPE\"] = 35663] = \"SHADER_TYPE\";\n gl[gl[\"DELETE_STATUS\"] = 35712] = \"DELETE_STATUS\";\n gl[gl[\"LINK_STATUS\"] = 35714] = \"LINK_STATUS\";\n gl[gl[\"VALIDATE_STATUS\"] = 35715] = \"VALIDATE_STATUS\";\n gl[gl[\"ATTACHED_SHADERS\"] = 35717] = \"ATTACHED_SHADERS\";\n gl[gl[\"ACTIVE_UNIFORMS\"] = 35718] = \"ACTIVE_UNIFORMS\";\n gl[gl[\"ACTIVE_ATTRIBUTES\"] = 35721] = \"ACTIVE_ATTRIBUTES\";\n gl[gl[\"SHADING_LANGUAGE_VERSION\"] = 35724] = \"SHADING_LANGUAGE_VERSION\";\n gl[gl[\"CURRENT_PROGRAM\"] = 35725] = \"CURRENT_PROGRAM\";\n gl[gl[\"NEVER\"] = 512] = \"NEVER\";\n gl[gl[\"LESS\"] = 513] = \"LESS\";\n gl[gl[\"EQUAL\"] = 514] = \"EQUAL\";\n gl[gl[\"LEQUAL\"] = 515] = \"LEQUAL\";\n gl[gl[\"GREATER\"] = 516] = \"GREATER\";\n gl[gl[\"NOTEQUAL\"] = 517] = \"NOTEQUAL\";\n gl[gl[\"GEQUAL\"] = 518] = \"GEQUAL\";\n gl[gl[\"ALWAYS\"] = 519] = \"ALWAYS\";\n gl[gl[\"KEEP\"] = 7680] = \"KEEP\";\n gl[gl[\"REPLACE\"] = 7681] = \"REPLACE\";\n gl[gl[\"INCR\"] = 7682] = \"INCR\";\n gl[gl[\"DECR\"] = 7683] = \"DECR\";\n gl[gl[\"INVERT\"] = 5386] = \"INVERT\";\n gl[gl[\"INCR_WRAP\"] = 34055] = \"INCR_WRAP\";\n gl[gl[\"DECR_WRAP\"] = 34056] = \"DECR_WRAP\";\n gl[gl[\"VENDOR\"] = 7936] = \"VENDOR\";\n gl[gl[\"RENDERER\"] = 7937] = \"RENDERER\";\n gl[gl[\"VERSION\"] = 7938] = \"VERSION\";\n gl[gl[\"NEAREST\"] = 9728] = \"NEAREST\";\n gl[gl[\"LINEAR\"] = 9729] = \"LINEAR\";\n gl[gl[\"NEAREST_MIPMAP_NEAREST\"] = 9984] = \"NEAREST_MIPMAP_NEAREST\";\n gl[gl[\"LINEAR_MIPMAP_NEAREST\"] = 9985] = \"LINEAR_MIPMAP_NEAREST\";\n gl[gl[\"NEAREST_MIPMAP_LINEAR\"] = 9986] = \"NEAREST_MIPMAP_LINEAR\";\n gl[gl[\"LINEAR_MIPMAP_LINEAR\"] = 9987] = \"LINEAR_MIPMAP_LINEAR\";\n gl[gl[\"TEXTURE_MAG_FILTER\"] = 10240] = \"TEXTURE_MAG_FILTER\";\n gl[gl[\"TEXTURE_MIN_FILTER\"] = 10241] = \"TEXTURE_MIN_FILTER\";\n gl[gl[\"TEXTURE_WRAP_S\"] = 10242] = \"TEXTURE_WRAP_S\";\n gl[gl[\"TEXTURE_WRAP_T\"] = 10243] = \"TEXTURE_WRAP_T\";\n gl[gl[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n gl[gl[\"TEXTURE\"] = 5890] = \"TEXTURE\";\n gl[gl[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n gl[gl[\"TEXTURE_BINDING_CUBE_MAP\"] = 34068] = \"TEXTURE_BINDING_CUBE_MAP\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n gl[gl[\"MAX_CUBE_MAP_TEXTURE_SIZE\"] = 34076] = \"MAX_CUBE_MAP_TEXTURE_SIZE\";\n gl[gl[\"TEXTURE0\"] = 33984] = \"TEXTURE0\";\n gl[gl[\"TEXTURE1\"] = 33985] = \"TEXTURE1\";\n gl[gl[\"TEXTURE2\"] = 33986] = \"TEXTURE2\";\n gl[gl[\"TEXTURE3\"] = 33987] = \"TEXTURE3\";\n gl[gl[\"TEXTURE4\"] = 33988] = \"TEXTURE4\";\n gl[gl[\"TEXTURE5\"] = 33989] = \"TEXTURE5\";\n gl[gl[\"TEXTURE6\"] = 33990] = \"TEXTURE6\";\n gl[gl[\"TEXTURE7\"] = 33991] = \"TEXTURE7\";\n gl[gl[\"TEXTURE8\"] = 33992] = \"TEXTURE8\";\n gl[gl[\"TEXTURE9\"] = 33993] = \"TEXTURE9\";\n gl[gl[\"TEXTURE10\"] = 33994] = \"TEXTURE10\";\n gl[gl[\"TEXTURE11\"] = 33995] = \"TEXTURE11\";\n gl[gl[\"TEXTURE12\"] = 33996] = \"TEXTURE12\";\n gl[gl[\"TEXTURE13\"] = 33997] = \"TEXTURE13\";\n gl[gl[\"TEXTURE14\"] = 33998] = \"TEXTURE14\";\n gl[gl[\"TEXTURE15\"] = 33999] = \"TEXTURE15\";\n gl[gl[\"TEXTURE16\"] = 34000] = \"TEXTURE16\";\n gl[gl[\"TEXTURE17\"] = 34001] = \"TEXTURE17\";\n gl[gl[\"TEXTURE18\"] = 34002] = \"TEXTURE18\";\n gl[gl[\"TEXTURE19\"] = 34003] = \"TEXTURE19\";\n gl[gl[\"TEXTURE20\"] = 34004] = \"TEXTURE20\";\n gl[gl[\"TEXTURE21\"] = 34005] = \"TEXTURE21\";\n gl[gl[\"TEXTURE22\"] = 34006] = \"TEXTURE22\";\n gl[gl[\"TEXTURE23\"] = 34007] = \"TEXTURE23\";\n gl[gl[\"TEXTURE24\"] = 34008] = \"TEXTURE24\";\n gl[gl[\"TEXTURE25\"] = 34009] = \"TEXTURE25\";\n gl[gl[\"TEXTURE26\"] = 34010] = \"TEXTURE26\";\n gl[gl[\"TEXTURE27\"] = 34011] = \"TEXTURE27\";\n gl[gl[\"TEXTURE28\"] = 34012] = \"TEXTURE28\";\n gl[gl[\"TEXTURE29\"] = 34013] = \"TEXTURE29\";\n gl[gl[\"TEXTURE30\"] = 34014] = \"TEXTURE30\";\n gl[gl[\"TEXTURE31\"] = 34015] = \"TEXTURE31\";\n gl[gl[\"ACTIVE_TEXTURE\"] = 34016] = \"ACTIVE_TEXTURE\";\n gl[gl[\"REPEAT\"] = 10497] = \"REPEAT\";\n gl[gl[\"CLAMP_TO_EDGE\"] = 33071] = \"CLAMP_TO_EDGE\";\n gl[gl[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n gl[gl[\"FLOAT_VEC2\"] = 35664] = \"FLOAT_VEC2\";\n gl[gl[\"FLOAT_VEC3\"] = 35665] = \"FLOAT_VEC3\";\n gl[gl[\"FLOAT_VEC4\"] = 35666] = \"FLOAT_VEC4\";\n gl[gl[\"INT_VEC2\"] = 35667] = \"INT_VEC2\";\n gl[gl[\"INT_VEC3\"] = 35668] = \"INT_VEC3\";\n gl[gl[\"INT_VEC4\"] = 35669] = \"INT_VEC4\";\n gl[gl[\"BOOL\"] = 35670] = \"BOOL\";\n gl[gl[\"BOOL_VEC2\"] = 35671] = \"BOOL_VEC2\";\n gl[gl[\"BOOL_VEC3\"] = 35672] = \"BOOL_VEC3\";\n gl[gl[\"BOOL_VEC4\"] = 35673] = \"BOOL_VEC4\";\n gl[gl[\"FLOAT_MAT2\"] = 35674] = \"FLOAT_MAT2\";\n gl[gl[\"FLOAT_MAT3\"] = 35675] = \"FLOAT_MAT3\";\n gl[gl[\"FLOAT_MAT4\"] = 35676] = \"FLOAT_MAT4\";\n gl[gl[\"SAMPLER_2D\"] = 35678] = \"SAMPLER_2D\";\n gl[gl[\"SAMPLER_CUBE\"] = 35680] = \"SAMPLER_CUBE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_ENABLED\"] = 34338] = \"VERTEX_ATTRIB_ARRAY_ENABLED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_SIZE\"] = 34339] = \"VERTEX_ATTRIB_ARRAY_SIZE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_STRIDE\"] = 34340] = \"VERTEX_ATTRIB_ARRAY_STRIDE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_TYPE\"] = 34341] = \"VERTEX_ATTRIB_ARRAY_TYPE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_NORMALIZED\"] = 34922] = \"VERTEX_ATTRIB_ARRAY_NORMALIZED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_POINTER\"] = 34373] = \"VERTEX_ATTRIB_ARRAY_POINTER\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\"] = 34975] = \"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\";\n gl[gl[\"COMPILE_STATUS\"] = 35713] = \"COMPILE_STATUS\";\n gl[gl[\"LOW_FLOAT\"] = 36336] = \"LOW_FLOAT\";\n gl[gl[\"MEDIUM_FLOAT\"] = 36337] = \"MEDIUM_FLOAT\";\n gl[gl[\"HIGH_FLOAT\"] = 36338] = \"HIGH_FLOAT\";\n gl[gl[\"LOW_INT\"] = 36339] = \"LOW_INT\";\n gl[gl[\"MEDIUM_INT\"] = 36340] = \"MEDIUM_INT\";\n gl[gl[\"HIGH_INT\"] = 36341] = \"HIGH_INT\";\n gl[gl[\"FRAMEBUFFER\"] = 36160] = \"FRAMEBUFFER\";\n gl[gl[\"RENDERBUFFER\"] = 36161] = \"RENDERBUFFER\";\n gl[gl[\"RGBA4\"] = 32854] = \"RGBA4\";\n gl[gl[\"RGB5_A1\"] = 32855] = \"RGB5_A1\";\n gl[gl[\"RGB565\"] = 36194] = \"RGB565\";\n gl[gl[\"DEPTH_COMPONENT16\"] = 33189] = \"DEPTH_COMPONENT16\";\n gl[gl[\"STENCIL_INDEX\"] = 6401] = \"STENCIL_INDEX\";\n gl[gl[\"STENCIL_INDEX8\"] = 36168] = \"STENCIL_INDEX8\";\n gl[gl[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n gl[gl[\"RENDERBUFFER_WIDTH\"] = 36162] = \"RENDERBUFFER_WIDTH\";\n gl[gl[\"RENDERBUFFER_HEIGHT\"] = 36163] = \"RENDERBUFFER_HEIGHT\";\n gl[gl[\"RENDERBUFFER_INTERNAL_FORMAT\"] = 36164] = \"RENDERBUFFER_INTERNAL_FORMAT\";\n gl[gl[\"RENDERBUFFER_RED_SIZE\"] = 36176] = \"RENDERBUFFER_RED_SIZE\";\n gl[gl[\"RENDERBUFFER_GREEN_SIZE\"] = 36177] = \"RENDERBUFFER_GREEN_SIZE\";\n gl[gl[\"RENDERBUFFER_BLUE_SIZE\"] = 36178] = \"RENDERBUFFER_BLUE_SIZE\";\n gl[gl[\"RENDERBUFFER_ALPHA_SIZE\"] = 36179] = \"RENDERBUFFER_ALPHA_SIZE\";\n gl[gl[\"RENDERBUFFER_DEPTH_SIZE\"] = 36180] = \"RENDERBUFFER_DEPTH_SIZE\";\n gl[gl[\"RENDERBUFFER_STENCIL_SIZE\"] = 36181] = \"RENDERBUFFER_STENCIL_SIZE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\"] = 36048] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\"] = 36049] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\"] = 36050] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\"] = 36051] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\";\n gl[gl[\"COLOR_ATTACHMENT0\"] = 36064] = \"COLOR_ATTACHMENT0\";\n gl[gl[\"DEPTH_ATTACHMENT\"] = 36096] = \"DEPTH_ATTACHMENT\";\n gl[gl[\"STENCIL_ATTACHMENT\"] = 36128] = \"STENCIL_ATTACHMENT\";\n gl[gl[\"DEPTH_STENCIL_ATTACHMENT\"] = 33306] = \"DEPTH_STENCIL_ATTACHMENT\";\n gl[gl[\"NONE\"] = 0] = \"NONE\";\n gl[gl[\"FRAMEBUFFER_COMPLETE\"] = 36053] = \"FRAMEBUFFER_COMPLETE\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\"] = 36054] = \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\"] = 36055] = \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\"] = 36057] = \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n gl[gl[\"FRAMEBUFFER_UNSUPPORTED\"] = 36061] = \"FRAMEBUFFER_UNSUPPORTED\";\n gl[gl[\"FRAMEBUFFER_BINDING\"] = 36006] = \"FRAMEBUFFER_BINDING\";\n gl[gl[\"RENDERBUFFER_BINDING\"] = 36007] = \"RENDERBUFFER_BINDING\";\n gl[gl[\"MAX_RENDERBUFFER_SIZE\"] = 34024] = \"MAX_RENDERBUFFER_SIZE\";\n gl[gl[\"INVALID_FRAMEBUFFER_OPERATION\"] = 1286] = \"INVALID_FRAMEBUFFER_OPERATION\";\n gl[gl[\"UNPACK_FLIP_Y_WEBGL\"] = 37440] = \"UNPACK_FLIP_Y_WEBGL\";\n gl[gl[\"UNPACK_PREMULTIPLY_ALPHA_WEBGL\"] = 37441] = \"UNPACK_PREMULTIPLY_ALPHA_WEBGL\";\n gl[gl[\"CONTEXT_LOST_WEBGL\"] = 37442] = \"CONTEXT_LOST_WEBGL\";\n gl[gl[\"UNPACK_COLORSPACE_CONVERSION_WEBGL\"] = 37443] = \"UNPACK_COLORSPACE_CONVERSION_WEBGL\";\n gl[gl[\"BROWSER_DEFAULT_WEBGL\"] = 37444] = \"BROWSER_DEFAULT_WEBGL\";\n gl[gl[\"COPY_SRC\"] = 1] = \"COPY_SRC\";\n gl[gl[\"COPY_DST\"] = 2] = \"COPY_DST\";\n gl[gl[\"SAMPLED\"] = 4] = \"SAMPLED\";\n gl[gl[\"STORAGE\"] = 8] = \"STORAGE\";\n gl[gl[\"RENDER_ATTACHMENT\"] = 16] = \"RENDER_ATTACHMENT\";\n})(gl || (gl = {}));\n//# sourceMappingURL=gl.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2dsLmpzPzkzYWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdCQUFnQjtBQUNqQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvZ2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkdMIOaemuS4vuWAvFxuICogQHNlZSBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8xLjAvIzUuMTRcbiAqIOS9v+eUqCBiYWJlbCDmj5Lku7blr7nluLjph4/ov5vooYzlhoXogZTvvIzku6Xlh4/lsJHmnIDnu4jmiZPljIXkuqfnianlpKflsI9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ViZXIvZGVjay5nbC9ibG9iLzcuMS1yZWxlYXNlL2Rldi1kb2NzL3JvYWRtYXBzL2Rpc3Qtc2l6ZS1yb2FkbWFwLm1kI2lubGluZS1nbC1jb25zdGFudHNcbiAqIOS4uuS6huaUr+aMgSBXZWJHUFXvvIzmlrDlop4gVGV4dHVyZVVzYWdlXG4gKiBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdXRleHR1cmV1c2FnZVxuICovXG5leHBvcnQgdmFyIGdsO1xuXG4oZnVuY3Rpb24gKGdsKSB7XG4gIGdsW2dsW1wiREVQVEhfQlVGRkVSX0JJVFwiXSA9IDI1Nl0gPSBcIkRFUFRIX0JVRkZFUl9CSVRcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JVRkZFUl9CSVRcIl0gPSAxMDI0XSA9IFwiU1RFTkNJTF9CVUZGRVJfQklUXCI7XG4gIGdsW2dsW1wiQ09MT1JfQlVGRkVSX0JJVFwiXSA9IDE2Mzg0XSA9IFwiQ09MT1JfQlVGRkVSX0JJVFwiO1xuICBnbFtnbFtcIlBPSU5UU1wiXSA9IDBdID0gXCJQT0lOVFNcIjtcbiAgZ2xbZ2xbXCJMSU5FU1wiXSA9IDFdID0gXCJMSU5FU1wiO1xuICBnbFtnbFtcIkxJTkVfTE9PUFwiXSA9IDJdID0gXCJMSU5FX0xPT1BcIjtcbiAgZ2xbZ2xbXCJMSU5FX1NUUklQXCJdID0gM10gPSBcIkxJTkVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRVNcIl0gPSA0XSA9IFwiVFJJQU5HTEVTXCI7XG4gIGdsW2dsW1wiVFJJQU5HTEVfU1RSSVBcIl0gPSA1XSA9IFwiVFJJQU5HTEVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRV9GQU5cIl0gPSA2XSA9IFwiVFJJQU5HTEVfRkFOXCI7XG4gIGdsW2dsW1wiWkVST1wiXSA9IDBdID0gXCJaRVJPXCI7XG4gIGdsW2dsW1wiT05FXCJdID0gMV0gPSBcIk9ORVwiO1xuICBnbFtnbFtcIlNSQ19DT0xPUlwiXSA9IDc2OF0gPSBcIlNSQ19DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19TUkNfQ09MT1JcIl0gPSA3NjldID0gXCJPTkVfTUlOVVNfU1JDX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBXCJdID0gNzcwXSA9IFwiU1JDX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX1NSQ19BTFBIQVwiXSA9IDc3MV0gPSBcIk9ORV9NSU5VU19TUkNfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJEU1RfQUxQSEFcIl0gPSA3NzJdID0gXCJEU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJPTkVfTUlOVVNfRFNUX0FMUEhBXCJdID0gNzczXSA9IFwiT05FX01JTlVTX0RTVF9BTFBIQVwiO1xuICBnbFtnbFtcIkRTVF9DT0xPUlwiXSA9IDc3NF0gPSBcIkRTVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19EU1RfQ09MT1JcIl0gPSA3NzVdID0gXCJPTkVfTUlOVVNfRFNUX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBX1NBVFVSQVRFXCJdID0gNzc2XSA9IFwiU1JDX0FMUEhBX1NBVFVSQVRFXCI7XG4gIGdsW2dsW1wiRlVOQ19BRERcIl0gPSAzMjc3NF0gPSBcIkZVTkNfQUREXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05cIl0gPSAzMjc3N10gPSBcIkJMRU5EX0VRVUFUSU9OXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05fUkdCXCJdID0gMzI3NzddID0gXCJCTEVORF9FUVVBVElPTl9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9FUVVBVElPTl9BTFBIQVwiXSA9IDM0ODc3XSA9IFwiQkxFTkRfRVFVQVRJT05fQUxQSEFcIjtcbiAgZ2xbZ2xbXCJGVU5DX1NVQlRSQUNUXCJdID0gMzI3NzhdID0gXCJGVU5DX1NVQlRSQUNUXCI7XG4gIGdsW2dsW1wiRlVOQ19SRVZFUlNFX1NVQlRSQUNUXCJdID0gMzI3NzldID0gXCJGVU5DX1JFVkVSU0VfU1VCVFJBQ1RcIjtcbiAgZ2xbZ2xbXCJNQVhfRVhUXCJdID0gMzI3NzZdID0gXCJNQVhfRVhUXCI7XG4gIGdsW2dsW1wiTUlOX0VYVFwiXSA9IDMyNzc1XSA9IFwiTUlOX0VYVFwiO1xuICBnbFtnbFtcIkJMRU5EX0RTVF9SR0JcIl0gPSAzMjk2OF0gPSBcIkJMRU5EX0RTVF9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfUkdCXCJdID0gMzI5NjldID0gXCJCTEVORF9TUkNfUkdCXCI7XG4gIGdsW2dsW1wiQkxFTkRfRFNUX0FMUEhBXCJdID0gMzI5NzBdID0gXCJCTEVORF9EU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfQUxQSEFcIl0gPSAzMjk3MV0gPSBcIkJMRU5EX1NSQ19BTFBIQVwiO1xuICBnbFtnbFtcIkNPTlNUQU5UX0NPTE9SXCJdID0gMzI3NjldID0gXCJDT05TVEFOVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUlwiXSA9IDMyNzcwXSA9IFwiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXCI7XG4gIGdsW2dsW1wiQ09OU1RBTlRfQUxQSEFcIl0gPSAzMjc3MV0gPSBcIkNPTlNUQU5UX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXCJdID0gMzI3NzJdID0gXCJPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9DT0xPUlwiXSA9IDMyNzczXSA9IFwiQkxFTkRfQ09MT1JcIjtcbiAgZ2xbZ2xbXCJBUlJBWV9CVUZGRVJcIl0gPSAzNDk2Ml0gPSBcIkFSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSXCJdID0gMzQ5NjNdID0gXCJFTEVNRU5UX0FSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkFSUkFZX0JVRkZFUl9CSU5ESU5HXCJdID0gMzQ5NjRdID0gXCJBUlJBWV9CVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk2NV0gPSBcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJTVFJFQU1fRFJBV1wiXSA9IDM1MDQwXSA9IFwiU1RSRUFNX0RSQVdcIjtcbiAgZ2xbZ2xbXCJTVEFUSUNfRFJBV1wiXSA9IDM1MDQ0XSA9IFwiU1RBVElDX0RSQVdcIjtcbiAgZ2xbZ2xbXCJEWU5BTUlDX0RSQVdcIl0gPSAzNTA0OF0gPSBcIkRZTkFNSUNfRFJBV1wiO1xuICBnbFtnbFtcIkJVRkZFUl9TSVpFXCJdID0gMzQ2NjBdID0gXCJCVUZGRVJfU0laRVwiO1xuICBnbFtnbFtcIkJVRkZFUl9VU0FHRVwiXSA9IDM0NjYxXSA9IFwiQlVGRkVSX1VTQUdFXCI7XG4gIGdsW2dsW1wiQ1VSUkVOVF9WRVJURVhfQVRUUklCXCJdID0gMzQzNDJdID0gXCJDVVJSRU5UX1ZFUlRFWF9BVFRSSUJcIjtcbiAgZ2xbZ2xbXCJGUk9OVFwiXSA9IDEwMjhdID0gXCJGUk9OVFwiO1xuICBnbFtnbFtcIkJBQ0tcIl0gPSAxMDI5XSA9IFwiQkFDS1wiO1xuICBnbFtnbFtcIkZST05UX0FORF9CQUNLXCJdID0gMTAzMl0gPSBcIkZST05UX0FORF9CQUNLXCI7XG4gIGdsW2dsW1wiQ1VMTF9GQUNFXCJdID0gMjg4NF0gPSBcIkNVTExfRkFDRVwiO1xuICBnbFtnbFtcIkJMRU5EXCJdID0gMzA0Ml0gPSBcIkJMRU5EXCI7XG4gIGdsW2dsW1wiRElUSEVSXCJdID0gMzAyNF0gPSBcIkRJVEhFUlwiO1xuICBnbFtnbFtcIlNURU5DSUxfVEVTVFwiXSA9IDI5NjBdID0gXCJTVEVOQ0lMX1RFU1RcIjtcbiAgZ2xbZ2xbXCJERVBUSF9URVNUXCJdID0gMjkyOV0gPSBcIkRFUFRIX1RFU1RcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX1RFU1RcIl0gPSAzMDg5XSA9IFwiU0NJU1NPUl9URVNUXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRklMTFwiXSA9IDMyODIzXSA9IFwiUE9MWUdPTl9PRkZTRVRfRklMTFwiO1xuICBnbFtnbFtcIlNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRVwiXSA9IDMyOTI2XSA9IFwiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXCI7XG4gIGdsW2dsW1wiU0FNUExFX0NPVkVSQUdFXCJdID0gMzI5MjhdID0gXCJTQU1QTEVfQ09WRVJBR0VcIjtcbiAgZ2xbZ2xbXCJOT19FUlJPUlwiXSA9IDBdID0gXCJOT19FUlJPUlwiO1xuICBnbFtnbFtcIklOVkFMSURfRU5VTVwiXSA9IDEyODBdID0gXCJJTlZBTElEX0VOVU1cIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX1ZBTFVFXCJdID0gMTI4MV0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX09QRVJBVElPTlwiXSA9IDEyODJdID0gXCJJTlZBTElEX09QRVJBVElPTlwiO1xuICBnbFtnbFtcIk9VVF9PRl9NRU1PUllcIl0gPSAxMjg1XSA9IFwiT1VUX09GX01FTU9SWVwiO1xuICBnbFtnbFtcIkNXXCJdID0gMjMwNF0gPSBcIkNXXCI7XG4gIGdsW2dsW1wiQ0NXXCJdID0gMjMwNV0gPSBcIkNDV1wiO1xuICBnbFtnbFtcIkxJTkVfV0lEVEhcIl0gPSAyODQ5XSA9IFwiTElORV9XSURUSFwiO1xuICBnbFtnbFtcIkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRVwiXSA9IDMzOTAxXSA9IFwiQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXCI7XG4gIGdsW2dsW1wiQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXCJdID0gMzM5MDJdID0gXCJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VcIjtcbiAgZ2xbZ2xbXCJDVUxMX0ZBQ0VfTU9ERVwiXSA9IDI4ODVdID0gXCJDVUxMX0ZBQ0VfTU9ERVwiO1xuICBnbFtnbFtcIkZST05UX0ZBQ0VcIl0gPSAyODg2XSA9IFwiRlJPTlRfRkFDRVwiO1xuICBnbFtnbFtcIkRFUFRIX1JBTkdFXCJdID0gMjkyOF0gPSBcIkRFUFRIX1JBTkdFXCI7XG4gIGdsW2dsW1wiREVQVEhfV1JJVEVNQVNLXCJdID0gMjkzMF0gPSBcIkRFUFRIX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIkRFUFRIX0NMRUFSX1ZBTFVFXCJdID0gMjkzMV0gPSBcIkRFUFRIX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiREVQVEhfRlVOQ1wiXSA9IDI5MzJdID0gXCJERVBUSF9GVU5DXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9DTEVBUl9WQUxVRVwiXSA9IDI5NjFdID0gXCJTVEVOQ0lMX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9GVU5DXCJdID0gMjk2Ml0gPSBcIlNURU5DSUxfRlVOQ1wiO1xuICBnbFtnbFtcIlNURU5DSUxfRkFJTFwiXSA9IDI5NjRdID0gXCJTVEVOQ0lMX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiXSA9IDI5NjVdID0gXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiO1xuICBnbFtnbFtcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCJdID0gMjk2Nl0gPSBcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9SRUZcIl0gPSAyOTY3XSA9IFwiU1RFTkNJTF9SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1ZBTFVFX01BU0tcIl0gPSAyOTYzXSA9IFwiU1RFTkNJTF9WQUxVRV9NQVNLXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9XUklURU1BU0tcIl0gPSAyOTY4XSA9IFwiU1RFTkNJTF9XUklURU1BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRlVOQ1wiXSA9IDM0ODE2XSA9IFwiU1RFTkNJTF9CQUNLX0ZVTkNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRkFJTFwiXSA9IDM0ODE3XSA9IFwiU1RFTkNJTF9CQUNLX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCJdID0gMzQ4MThdID0gXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiXSA9IDM0ODE5XSA9IFwiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiO1xuICBnbFtnbFtcIlNURU5DSUxfQkFDS19SRUZcIl0gPSAzNjAwM10gPSBcIlNURU5DSUxfQkFDS19SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS1wiXSA9IDM2MDA0XSA9IFwiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCJdID0gMzYwMDVdID0gXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCI7XG4gIGdsW2dsW1wiVklFV1BPUlRcIl0gPSAyOTc4XSA9IFwiVklFV1BPUlRcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX0JPWFwiXSA9IDMwODhdID0gXCJTQ0lTU09SX0JPWFwiO1xuICBnbFtnbFtcIkNPTE9SX0NMRUFSX1ZBTFVFXCJdID0gMzEwNl0gPSBcIkNPTE9SX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiQ09MT1JfV1JJVEVNQVNLXCJdID0gMzEwN10gPSBcIkNPTE9SX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIlVOUEFDS19BTElHTk1FTlRcIl0gPSAzMzE3XSA9IFwiVU5QQUNLX0FMSUdOTUVOVFwiO1xuICBnbFtnbFtcIlBBQ0tfQUxJR05NRU5UXCJdID0gMzMzM10gPSBcIlBBQ0tfQUxJR05NRU5UXCI7XG4gIGdsW2dsW1wiTUFYX1RFWFRVUkVfU0laRVwiXSA9IDMzNzldID0gXCJNQVhfVEVYVFVSRV9TSVpFXCI7XG4gIGdsW2dsW1wiTUFYX1ZJRVdQT1JUX0RJTVNcIl0gPSAzMzg2XSA9IFwiTUFYX1ZJRVdQT1JUX0RJTVNcIjtcbiAgZ2xbZ2xbXCJTVUJQSVhFTF9CSVRTXCJdID0gMzQwOF0gPSBcIlNVQlBJWEVMX0JJVFNcIjtcbiAgZ2xbZ2xbXCJSRURfQklUU1wiXSA9IDM0MTBdID0gXCJSRURfQklUU1wiO1xuICBnbFtnbFtcIkdSRUVOX0JJVFNcIl0gPSAzNDExXSA9IFwiR1JFRU5fQklUU1wiO1xuICBnbFtnbFtcIkJMVUVfQklUU1wiXSA9IDM0MTJdID0gXCJCTFVFX0JJVFNcIjtcbiAgZ2xbZ2xbXCJBTFBIQV9CSVRTXCJdID0gMzQxM10gPSBcIkFMUEhBX0JJVFNcIjtcbiAgZ2xbZ2xbXCJERVBUSF9CSVRTXCJdID0gMzQxNF0gPSBcIkRFUFRIX0JJVFNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JJVFNcIl0gPSAzNDE1XSA9IFwiU1RFTkNJTF9CSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfVU5JVFNcIl0gPSAxMDc1Ml0gPSBcIlBPTFlHT05fT0ZGU0VUX1VOSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRkFDVE9SXCJdID0gMzI4MjRdID0gXCJQT0xZR09OX09GRlNFVF9GQUNUT1JcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0JJTkRJTkdfMkRcIl0gPSAzMjg3M10gPSBcIlRFWFRVUkVfQklORElOR18yRFwiO1xuICBnbFtnbFtcIlNBTVBMRV9CVUZGRVJTXCJdID0gMzI5MzZdID0gXCJTQU1QTEVfQlVGRkVSU1wiO1xuICBnbFtnbFtcIlNBTVBMRVNcIl0gPSAzMjkzN10gPSBcIlNBTVBMRVNcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVfQ09WRVJBR0VfVkFMVUVcIl0gPSAzMjkzOF0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRVwiO1xuICBnbFtnbFtcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIl0gPSAzMjkzOV0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIjtcbiAgZ2xbZ2xbXCJDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU1wiXSA9IDM0NDY3XSA9IFwiQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNcIjtcbiAgZ2xbZ2xbXCJET05UX0NBUkVcIl0gPSA0MzUyXSA9IFwiRE9OVF9DQVJFXCI7XG4gIGdsW2dsW1wiRkFTVEVTVFwiXSA9IDQzNTNdID0gXCJGQVNURVNUXCI7XG4gIGdsW2dsW1wiTklDRVNUXCJdID0gNDM1NF0gPSBcIk5JQ0VTVFwiO1xuICBnbFtnbFtcIkdFTkVSQVRFX01JUE1BUF9ISU5UXCJdID0gMzMxNzBdID0gXCJHRU5FUkFURV9NSVBNQVBfSElOVFwiO1xuICBnbFtnbFtcIkJZVEVcIl0gPSA1MTIwXSA9IFwiQllURVwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX0JZVEVcIl0gPSA1MTIxXSA9IFwiVU5TSUdORURfQllURVwiO1xuICBnbFtnbFtcIlNIT1JUXCJdID0gNTEyMl0gPSBcIlNIT1JUXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRcIl0gPSA1MTIzXSA9IFwiVU5TSUdORURfU0hPUlRcIjtcbiAgZ2xbZ2xbXCJJTlRcIl0gPSA1MTI0XSA9IFwiSU5UXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfSU5UXCJdID0gNTEyNV0gPSBcIlVOU0lHTkVEX0lOVFwiO1xuICBnbFtnbFtcIkZMT0FUXCJdID0gNTEyNl0gPSBcIkZMT0FUXCI7XG4gIGdsW2dsW1wiREVQVEhfQ09NUE9ORU5UXCJdID0gNjQwMl0gPSBcIkRFUFRIX0NPTVBPTkVOVFwiO1xuICBnbFtnbFtcIkFMUEhBXCJdID0gNjQwNl0gPSBcIkFMUEhBXCI7XG4gIGdsW2dsW1wiUkdCXCJdID0gNjQwN10gPSBcIlJHQlwiO1xuICBnbFtnbFtcIlJHQkFcIl0gPSA2NDA4XSA9IFwiUkdCQVwiO1xuICBnbFtnbFtcIkxVTUlOQU5DRVwiXSA9IDY0MDldID0gXCJMVU1JTkFOQ0VcIjtcbiAgZ2xbZ2xbXCJMVU1JTkFOQ0VfQUxQSEFcIl0gPSA2NDEwXSA9IFwiTFVNSU5BTkNFX0FMUEhBXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiXSA9IDMyODE5XSA9IFwiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIl0gPSAzMjgyMF0gPSBcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIjtcbiAgZ2xbZ2xbXCJVTlNJR05FRF9TSE9SVF81XzZfNVwiXSA9IDMzNjM1XSA9IFwiVU5TSUdORURfU0hPUlRfNV82XzVcIjtcbiAgZ2xbZ2xbXCJGUkFHTUVOVF9TSEFERVJcIl0gPSAzNTYzMl0gPSBcIkZSQUdNRU5UX1NIQURFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9TSEFERVJcIl0gPSAzNTYzM10gPSBcIlZFUlRFWF9TSEFERVJcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX0FUVFJJQlNcIl0gPSAzNDkyMV0gPSBcIk1BWF9WRVJURVhfQVRUUklCU1wiO1xuICBnbFtnbFtcIk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXCJdID0gMzYzNDddID0gXCJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU1wiO1xuICBnbFtnbFtcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIl0gPSAzNjM0OF0gPSBcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU1wiXSA9IDM1NjYxXSA9IFwiTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNcIl0gPSAzNTY2MF0gPSBcIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9URVhUVVJFX0lNQUdFX1VOSVRTXCJdID0gMzQ5MzBdID0gXCJNQVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIl0gPSAzNjM0OV0gPSBcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJTSEFERVJfVFlQRVwiXSA9IDM1NjYzXSA9IFwiU0hBREVSX1RZUEVcIjtcbiAgZ2xbZ2xbXCJERUxFVEVfU1RBVFVTXCJdID0gMzU3MTJdID0gXCJERUxFVEVfU1RBVFVTXCI7XG4gIGdsW2dsW1wiTElOS19TVEFUVVNcIl0gPSAzNTcxNF0gPSBcIkxJTktfU1RBVFVTXCI7XG4gIGdsW2dsW1wiVkFMSURBVEVfU1RBVFVTXCJdID0gMzU3MTVdID0gXCJWQUxJREFURV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJBVFRBQ0hFRF9TSEFERVJTXCJdID0gMzU3MTddID0gXCJBVFRBQ0hFRF9TSEFERVJTXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1VOSUZPUk1TXCJdID0gMzU3MThdID0gXCJBQ1RJVkVfVU5JRk9STVNcIjtcbiAgZ2xbZ2xbXCJBQ1RJVkVfQVRUUklCVVRFU1wiXSA9IDM1NzIxXSA9IFwiQUNUSVZFX0FUVFJJQlVURVNcIjtcbiAgZ2xbZ2xbXCJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05cIl0gPSAzNTcyNF0gPSBcIlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTlwiO1xuICBnbFtnbFtcIkNVUlJFTlRfUFJPR1JBTVwiXSA9IDM1NzI1XSA9IFwiQ1VSUkVOVF9QUk9HUkFNXCI7XG4gIGdsW2dsW1wiTkVWRVJcIl0gPSA1MTJdID0gXCJORVZFUlwiO1xuICBnbFtnbFtcIkxFU1NcIl0gPSA1MTNdID0gXCJMRVNTXCI7XG4gIGdsW2dsW1wiRVFVQUxcIl0gPSA1MTRdID0gXCJFUVVBTFwiO1xuICBnbFtnbFtcIkxFUVVBTFwiXSA9IDUxNV0gPSBcIkxFUVVBTFwiO1xuICBnbFtnbFtcIkdSRUFURVJcIl0gPSA1MTZdID0gXCJHUkVBVEVSXCI7XG4gIGdsW2dsW1wiTk9URVFVQUxcIl0gPSA1MTddID0gXCJOT1RFUVVBTFwiO1xuICBnbFtnbFtcIkdFUVVBTFwiXSA9IDUxOF0gPSBcIkdFUVVBTFwiO1xuICBnbFtnbFtcIkFMV0FZU1wiXSA9IDUxOV0gPSBcIkFMV0FZU1wiO1xuICBnbFtnbFtcIktFRVBcIl0gPSA3NjgwXSA9IFwiS0VFUFwiO1xuICBnbFtnbFtcIlJFUExBQ0VcIl0gPSA3NjgxXSA9IFwiUkVQTEFDRVwiO1xuICBnbFtnbFtcIklOQ1JcIl0gPSA3NjgyXSA9IFwiSU5DUlwiO1xuICBnbFtnbFtcIkRFQ1JcIl0gPSA3NjgzXSA9IFwiREVDUlwiO1xuICBnbFtnbFtcIklOVkVSVFwiXSA9IDUzODZdID0gXCJJTlZFUlRcIjtcbiAgZ2xbZ2xbXCJJTkNSX1dSQVBcIl0gPSAzNDA1NV0gPSBcIklOQ1JfV1JBUFwiO1xuICBnbFtnbFtcIkRFQ1JfV1JBUFwiXSA9IDM0MDU2XSA9IFwiREVDUl9XUkFQXCI7XG4gIGdsW2dsW1wiVkVORE9SXCJdID0gNzkzNl0gPSBcIlZFTkRPUlwiO1xuICBnbFtnbFtcIlJFTkRFUkVSXCJdID0gNzkzN10gPSBcIlJFTkRFUkVSXCI7XG4gIGdsW2dsW1wiVkVSU0lPTlwiXSA9IDc5MzhdID0gXCJWRVJTSU9OXCI7XG4gIGdsW2dsW1wiTkVBUkVTVFwiXSA9IDk3MjhdID0gXCJORUFSRVNUXCI7XG4gIGdsW2dsW1wiTElORUFSXCJdID0gOTcyOV0gPSBcIkxJTkVBUlwiO1xuICBnbFtnbFtcIk5FQVJFU1RfTUlQTUFQX05FQVJFU1RcIl0gPSA5OTg0XSA9IFwiTkVBUkVTVF9NSVBNQVBfTkVBUkVTVFwiO1xuICBnbFtnbFtcIkxJTkVBUl9NSVBNQVBfTkVBUkVTVFwiXSA9IDk5ODVdID0gXCJMSU5FQVJfTUlQTUFQX05FQVJFU1RcIjtcbiAgZ2xbZ2xbXCJORUFSRVNUX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg2XSA9IFwiTkVBUkVTVF9NSVBNQVBfTElORUFSXCI7XG4gIGdsW2dsW1wiTElORUFSX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg3XSA9IFwiTElORUFSX01JUE1BUF9MSU5FQVJcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX01BR19GSUxURVJcIl0gPSAxMDI0MF0gPSBcIlRFWFRVUkVfTUFHX0ZJTFRFUlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfTUlOX0ZJTFRFUlwiXSA9IDEwMjQxXSA9IFwiVEVYVFVSRV9NSU5fRklMVEVSXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1NcIl0gPSAxMDI0Ml0gPSBcIlRFWFRVUkVfV1JBUF9TXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1RcIl0gPSAxMDI0M10gPSBcIlRFWFRVUkVfV1JBUF9UXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV8yRFwiXSA9IDM1NTNdID0gXCJURVhUVVJFXzJEXCI7XG4gIGdsW2dsW1wiVEVYVFVSRVwiXSA9IDU4OTBdID0gXCJURVhUVVJFXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUFwiXSA9IDM0MDY3XSA9IFwiVEVYVFVSRV9DVUJFX01BUFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQklORElOR19DVUJFX01BUFwiXSA9IDM0MDY4XSA9IFwiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXCJdID0gMzQwNjldID0gXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hcIl0gPSAzNDA3MF0gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWVwiXSA9IDM0MDcxXSA9IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXCJdID0gMzQwNzJdID0gXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pcIl0gPSAzNDA3M10gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWlwiXSA9IDM0MDc0XSA9IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXCI7XG4gIGdsW2dsW1wiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiXSA9IDM0MDc2XSA9IFwiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiO1xuICBnbFtnbFtcIlRFWFRVUkUwXCJdID0gMzM5ODRdID0gXCJURVhUVVJFMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxXCJdID0gMzM5ODVdID0gXCJURVhUVVJFMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyXCJdID0gMzM5ODZdID0gXCJURVhUVVJFMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUzXCJdID0gMzM5ODddID0gXCJURVhUVVJFM1wiO1xuICBnbFtnbFtcIlRFWFRVUkU0XCJdID0gMzM5ODhdID0gXCJURVhUVVJFNFwiO1xuICBnbFtnbFtcIlRFWFRVUkU1XCJdID0gMzM5ODldID0gXCJURVhUVVJFNVwiO1xuICBnbFtnbFtcIlRFWFRVUkU2XCJdID0gMzM5OTBdID0gXCJURVhUVVJFNlwiO1xuICBnbFtnbFtcIlRFWFRVUkU3XCJdID0gMzM5OTFdID0gXCJURVhUVVJFN1wiO1xuICBnbFtnbFtcIlRFWFRVUkU4XCJdID0gMzM5OTJdID0gXCJURVhUVVJFOFwiO1xuICBnbFtnbFtcIlRFWFRVUkU5XCJdID0gMzM5OTNdID0gXCJURVhUVVJFOVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxMFwiXSA9IDMzOTk0XSA9IFwiVEVYVFVSRTEwXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTExXCJdID0gMzM5OTVdID0gXCJURVhUVVJFMTFcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTJcIl0gPSAzMzk5Nl0gPSBcIlRFWFRVUkUxMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUxM1wiXSA9IDMzOTk3XSA9IFwiVEVYVFVSRTEzXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE0XCJdID0gMzM5OThdID0gXCJURVhUVVJFMTRcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTVcIl0gPSAzMzk5OV0gPSBcIlRFWFRVUkUxNVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxNlwiXSA9IDM0MDAwXSA9IFwiVEVYVFVSRTE2XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE3XCJdID0gMzQwMDFdID0gXCJURVhUVVJFMTdcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMThcIl0gPSAzNDAwMl0gPSBcIlRFWFRVUkUxOFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxOVwiXSA9IDM0MDAzXSA9IFwiVEVYVFVSRTE5XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIwXCJdID0gMzQwMDRdID0gXCJURVhUVVJFMjBcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjFcIl0gPSAzNDAwNV0gPSBcIlRFWFRVUkUyMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyMlwiXSA9IDM0MDA2XSA9IFwiVEVYVFVSRTIyXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIzXCJdID0gMzQwMDddID0gXCJURVhUVVJFMjNcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjRcIl0gPSAzNDAwOF0gPSBcIlRFWFRVUkUyNFwiO1xuICBnbFtnbFtcIlRFWFRVUkUyNVwiXSA9IDM0MDA5XSA9IFwiVEVYVFVSRTI1XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI2XCJdID0gMzQwMTBdID0gXCJURVhUVVJFMjZcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjdcIl0gPSAzNDAxMV0gPSBcIlRFWFRVUkUyN1wiO1xuICBnbFtnbFtcIlRFWFRVUkUyOFwiXSA9IDM0MDEyXSA9IFwiVEVYVFVSRTI4XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI5XCJdID0gMzQwMTNdID0gXCJURVhUVVJFMjlcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMzBcIl0gPSAzNDAxNF0gPSBcIlRFWFRVUkUzMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUzMVwiXSA9IDM0MDE1XSA9IFwiVEVYVFVSRTMxXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1RFWFRVUkVcIl0gPSAzNDAxNl0gPSBcIkFDVElWRV9URVhUVVJFXCI7XG4gIGdsW2dsW1wiUkVQRUFUXCJdID0gMTA0OTddID0gXCJSRVBFQVRcIjtcbiAgZ2xbZ2xbXCJDTEFNUF9UT19FREdFXCJdID0gMzMwNzFdID0gXCJDTEFNUF9UT19FREdFXCI7XG4gIGdsW2dsW1wiTUlSUk9SRURfUkVQRUFUXCJdID0gMzM2NDhdID0gXCJNSVJST1JFRF9SRVBFQVRcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9WRUMyXCJdID0gMzU2NjRdID0gXCJGTE9BVF9WRUMyXCI7XG4gIGdsW2dsW1wiRkxPQVRfVkVDM1wiXSA9IDM1NjY1XSA9IFwiRkxPQVRfVkVDM1wiO1xuICBnbFtnbFtcIkZMT0FUX1ZFQzRcIl0gPSAzNTY2Nl0gPSBcIkZMT0FUX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDMlwiXSA9IDM1NjY3XSA9IFwiSU5UX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDM1wiXSA9IDM1NjY4XSA9IFwiSU5UX1ZFQzNcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDNFwiXSA9IDM1NjY5XSA9IFwiSU5UX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJCT09MXCJdID0gMzU2NzBdID0gXCJCT09MXCI7XG4gIGdsW2dsW1wiQk9PTF9WRUMyXCJdID0gMzU2NzFdID0gXCJCT09MX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJCT09MX1ZFQzNcIl0gPSAzNTY3Ml0gPSBcIkJPT0xfVkVDM1wiO1xuICBnbFtnbFtcIkJPT0xfVkVDNFwiXSA9IDM1NjczXSA9IFwiQk9PTF9WRUM0XCI7XG4gIGdsW2dsW1wiRkxPQVRfTUFUMlwiXSA9IDM1Njc0XSA9IFwiRkxPQVRfTUFUMlwiO1xuICBnbFtnbFtcIkZMT0FUX01BVDNcIl0gPSAzNTY3NV0gPSBcIkZMT0FUX01BVDNcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9NQVQ0XCJdID0gMzU2NzZdID0gXCJGTE9BVF9NQVQ0XCI7XG4gIGdsW2dsW1wiU0FNUExFUl8yRFwiXSA9IDM1Njc4XSA9IFwiU0FNUExFUl8yRFwiO1xuICBnbFtnbFtcIlNBTVBMRVJfQ1VCRVwiXSA9IDM1NjgwXSA9IFwiU0FNUExFUl9DVUJFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXCJdID0gMzQzMzhdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkVcIl0gPSAzNDMzOV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXCJdID0gMzQzNDBdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRVwiXSA9IDM0MzQxXSA9IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXCJdID0gMzQ5MjJdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJcIl0gPSAzNDM3M10gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk3NV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJDT01QSUxFX1NUQVRVU1wiXSA9IDM1NzEzXSA9IFwiQ09NUElMRV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJMT1dfRkxPQVRcIl0gPSAzNjMzNl0gPSBcIkxPV19GTE9BVFwiO1xuICBnbFtnbFtcIk1FRElVTV9GTE9BVFwiXSA9IDM2MzM3XSA9IFwiTUVESVVNX0ZMT0FUXCI7XG4gIGdsW2dsW1wiSElHSF9GTE9BVFwiXSA9IDM2MzM4XSA9IFwiSElHSF9GTE9BVFwiO1xuICBnbFtnbFtcIkxPV19JTlRcIl0gPSAzNjMzOV0gPSBcIkxPV19JTlRcIjtcbiAgZ2xbZ2xbXCJNRURJVU1fSU5UXCJdID0gMzYzNDBdID0gXCJNRURJVU1fSU5UXCI7XG4gIGdsW2dsW1wiSElHSF9JTlRcIl0gPSAzNjM0MV0gPSBcIkhJR0hfSU5UXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJcIl0gPSAzNjE2MF0gPSBcIkZSQU1FQlVGRkVSXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSXCJdID0gMzYxNjFdID0gXCJSRU5ERVJCVUZGRVJcIjtcbiAgZ2xbZ2xbXCJSR0JBNFwiXSA9IDMyODU0XSA9IFwiUkdCQTRcIjtcbiAgZ2xbZ2xbXCJSR0I1X0ExXCJdID0gMzI4NTVdID0gXCJSR0I1X0ExXCI7XG4gIGdsW2dsW1wiUkdCNTY1XCJdID0gMzYxOTRdID0gXCJSR0I1NjVcIjtcbiAgZ2xbZ2xbXCJERVBUSF9DT01QT05FTlQxNlwiXSA9IDMzMTg5XSA9IFwiREVQVEhfQ09NUE9ORU5UMTZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYXCJdID0gNjQwMV0gPSBcIlNURU5DSUxfSU5ERVhcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYOFwiXSA9IDM2MTY4XSA9IFwiU1RFTkNJTF9JTkRFWDhcIjtcbiAgZ2xbZ2xbXCJERVBUSF9TVEVOQ0lMXCJdID0gMzQwNDFdID0gXCJERVBUSF9TVEVOQ0lMXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX1dJRFRIXCJdID0gMzYxNjJdID0gXCJSRU5ERVJCVUZGRVJfV0lEVEhcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCJdID0gMzYxNjNdID0gXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiXSA9IDM2MTY0XSA9IFwiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9SRURfU0laRVwiXSA9IDM2MTc2XSA9IFwiUkVOREVSQlVGRkVSX1JFRF9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVcIl0gPSAzNjE3N10gPSBcIlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiXSA9IDM2MTc4XSA9IFwiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXCJdID0gMzYxNzldID0gXCJSRU5ERVJCVUZGRVJfQUxQSEFfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXCJdID0gMzYxODBdID0gXCJSRU5ERVJCVUZGRVJfREVQVEhfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIl0gPSAzNjE4MV0gPSBcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCJdID0gMzYwNDhdID0gXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiXSA9IDM2MDQ5XSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTFwiXSA9IDM2MDUwXSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VcIl0gPSAzNjA1MV0gPSBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXCI7XG4gIGdsW2dsW1wiQ09MT1JfQVRUQUNITUVOVDBcIl0gPSAzNjA2NF0gPSBcIkNPTE9SX0FUVEFDSE1FTlQwXCI7XG4gIGdsW2dsW1wiREVQVEhfQVRUQUNITUVOVFwiXSA9IDM2MDk2XSA9IFwiREVQVEhfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIlNURU5DSUxfQVRUQUNITUVOVFwiXSA9IDM2MTI4XSA9IFwiU1RFTkNJTF9BVFRBQ0hNRU5UXCI7XG4gIGdsW2dsW1wiREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXCJdID0gMzMzMDZdID0gXCJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRcIjtcbiAgZ2xbZ2xbXCJOT05FXCJdID0gMF0gPSBcIk5PTkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9DT01QTEVURVwiXSA9IDM2MDUzXSA9IFwiRlJBTUVCVUZGRVJfQ09NUExFVEVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRcIl0gPSAzNjA1NF0gPSBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXCJdID0gMzYwNTVdID0gXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU1wiXSA9IDM2MDU3XSA9IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfVU5TVVBQT1JURURcIl0gPSAzNjA2MV0gPSBcIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQklORElOR1wiXSA9IDM2MDA2XSA9IFwiRlJBTUVCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9CSU5ESU5HXCJdID0gMzYwMDddID0gXCJSRU5ERVJCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIk1BWF9SRU5ERVJCVUZGRVJfU0laRVwiXSA9IDM0MDI0XSA9IFwiTUFYX1JFTkRFUkJVRkZFUl9TSVpFXCI7XG4gIGdsW2dsW1wiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIl0gPSAxMjg2XSA9IFwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIjtcbiAgZ2xbZ2xbXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCJdID0gMzc0NDBdID0gXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCI7XG4gIGdsW2dsW1wiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXCJdID0gMzc0NDFdID0gXCJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xcIjtcbiAgZ2xbZ2xbXCJDT05URVhUX0xPU1RfV0VCR0xcIl0gPSAzNzQ0Ml0gPSBcIkNPTlRFWFRfTE9TVF9XRUJHTFwiO1xuICBnbFtnbFtcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIl0gPSAzNzQ0M10gPSBcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIjtcbiAgZ2xbZ2xbXCJCUk9XU0VSX0RFRkFVTFRfV0VCR0xcIl0gPSAzNzQ0NF0gPSBcIkJST1dTRVJfREVGQVVMVF9XRUJHTFwiO1xuICBnbFtnbFtcIkNPUFlfU1JDXCJdID0gMV0gPSBcIkNPUFlfU1JDXCI7XG4gIGdsW2dsW1wiQ09QWV9EU1RcIl0gPSAyXSA9IFwiQ09QWV9EU1RcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVEXCJdID0gNF0gPSBcIlNBTVBMRURcIjtcbiAgZ2xbZ2xbXCJTVE9SQUdFXCJdID0gOF0gPSBcIlNUT1JBR0VcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJfQVRUQUNITUVOVFwiXSA9IDE2XSA9IFwiUkVOREVSX0FUVEFDSE1FTlRcIjtcbn0pKGdsIHx8IChnbCA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js":
/*!**************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js ***!
\**************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return _gl__WEBPACK_IMPORTED_MODULE_0__[\"gl\"]; });\n\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IAttribute */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js\");\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_IAttribute__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IAttribute__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IAttribute__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IBuffer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js\");\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_IBuffer__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IBuffer__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IBuffer__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IComputeModel */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\");\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_IComputeModel__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IComputeModel__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IComputeModel__WEBPACK_IMPORTED_MODULE_3__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IElements */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js\");\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_IElements__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IElements__WEBPACK_IMPORTED_MODULE_4__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IElements__WEBPACK_IMPORTED_MODULE_4__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IFramebuffer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\");\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_IFramebuffer__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./IModel */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js\");\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_IModel__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IModel__WEBPACK_IMPORTED_MODULE_6__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IModel__WEBPACK_IMPORTED_MODULE_6__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./IMultiPassRenderer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__[\"PassType\"]; });\n\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./IRenderbuffer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\");\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./IRendererService */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js\");\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_IRendererService__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRendererService__WEBPACK_IMPORTED_MODULE_9__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRendererService__WEBPACK_IMPORTED_MODULE_9__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ITexture2D */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\");\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_ITexture2D__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ITexture2D__WEBPACK_IMPORTED_MODULE_10__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ITexture2D__WEBPACK_IMPORTED_MODULE_10__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./IUniform */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js\");\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_IUniform__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IUniform__WEBPACK_IMPORTED_MODULE_11__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IUniform__WEBPACK_IMPORTED_MODULE_11__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2luZGV4LmpzP2UxNzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUI7QUFDUTtBQUNIO0FBQ007QUFDSjtBQUNHO0FBQ047QUFDWTtBQUNMO0FBQ0c7QUFDTjtBQUNGO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2wnO1xuZXhwb3J0ICogZnJvbSAnLi9JQXR0cmlidXRlJztcbmV4cG9ydCAqIGZyb20gJy4vSUJ1ZmZlcic7XG5leHBvcnQgKiBmcm9tICcuL0lDb21wdXRlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JRWxlbWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9JRnJhbWVidWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JTXVsdGlQYXNzUmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JUmVuZGVyYnVmZmVyJztcbmV4cG9ydCAqIGZyb20gJy4vSVJlbmRlcmVyU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL0lUZXh0dXJlMkQnO1xuZXhwb3J0ICogZnJvbSAnLi9JVW5pZm9ybSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js":
/*!************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js ***!
\************************************************************************************/
/*! exports provided: CopyPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CopyPass\", function() { return CopyPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _class3, _temp;\n\n\n\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.frag.glsl' */\nvar copyFrag = \"varying vec2 v_UV;\\n\\nuniform sampler2D u_Texture;\\n\\nvoid main() {\\n gl_FragColor = vec4(texture2D(u_Texture, v_UV));\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.vert.glsl' */\nvar copyVert = \"attribute vec2 a_Position;\\n\\nvarying vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.frag.glsl' */\nvar copyFragWebGPU = \"layout(set = 0, binding = 0) uniform sampler u_TextureSampler;\\nlayout(set = 0, binding = 1) uniform texture2D u_Texture;\\n\\nlayout(location = 0) in vec2 v_UV;\\nlayout(location = 0) out vec4 outColor;\\n\\nvoid main() {\\n outColor = texture(sampler2D(u_Texture, u_TextureSampler), v_UV);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.vert.glsl' */\nvar copyVertWebGPU = \"layout(location = 0) in vec2 a_Position;\\nlayout(location = 0) out vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n\nvar CopyPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = function CopyPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CopyPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n this.model = void 0;\n\n this.setup = function (fg, passNode, pass) {\n var renderPass = fg.getPass(_RenderPass__WEBPACK_IMPORTED_MODULE_9__[\"RenderPass\"].IDENTIFIER);\n\n if (renderPass) {\n var output = fg.createRenderTarget(passNode, 'render to screen', {\n width: 1,\n height: 1\n });\n pass.data = {\n input: passNode.read(renderPass.data.output),\n output: passNode.write(fg, output)\n };\n }\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass) {\n var _this$engine, createModel, createAttribute, createBuffer, model, resourceNode, framebuffer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$engine = _this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute, createBuffer = _this$engine.createBuffer;\n\n if (_this.model) {\n _context.next = 6;\n break;\n }\n\n _context.next = 4;\n return createModel({\n vs: _this.engine.supportWebGPU ? copyVertWebGPU : copyVert,\n fs: _this.engine.supportWebGPU ? copyFragWebGPU : copyFrag,\n attributes: {\n // rendering a fullscreen triangle instead of quad\n // @see https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/\n a_Position: createAttribute({\n buffer: createBuffer({\n data: [-4, -4, 4, -4, 0, 4],\n type: _gl__WEBPACK_IMPORTED_MODULE_8__[\"gl\"].FLOAT\n }),\n size: 2,\n arrayStride: 2 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n })\n },\n uniforms: {\n // @ts-ignore\n u_Texture: null\n },\n depth: {\n enable: false\n },\n count: 3,\n blend: {\n // copy pass 需要混合\n // enable: this.getName() === 'copy',\n enable: true\n }\n });\n\n case 4:\n model = _context.sent;\n _this.model = model;\n\n case 6:\n // 实例化资源\n resourceNode = fg.getResourceNode(pass.data.input);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource);\n\n _this.engine.useFramebuffer(null, function () {\n _this.engine.clear({\n framebuffer: null,\n color: [0, 0, 0, 0],\n depth: 1,\n stencil: 0\n });\n\n _this.model.draw({\n uniforms: {\n u_Texture: framebuffer // u_ViewportSize: [width, height],\n\n }\n });\n });\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.tearDown = function () {\n _this.model = undefined;\n };\n}, _class3.IDENTIFIER = 'Copy Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=CopyPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9Db3B5UGFzcy5qcz84MzUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ0U7O0FBRWpEO0FBQ0Esa0NBQWtDLGdDQUFnQyxpQkFBaUIsb0RBQW9ELEdBQUc7O0FBRTFJO0FBQ0EsMENBQTBDLHNCQUFzQixpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHOztBQUVuSztBQUNBLG9GQUFvRiwyREFBMkQsc0NBQXNDLHlDQUF5QyxpQkFBaUIscUVBQXFFLEdBQUc7O0FBRXZUO0FBQ0EsOERBQThELHFDQUFxQyxpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHO0FBQzNLO0FBQ2U7QUFDbkMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSx3QkFBd0Isd0RBQU0sQ0FBQyxzREFBVTtBQUM5Rzs7QUFFQSxFQUFFLDRFQUFlOztBQUVqQixFQUFFLHVGQUEwQjs7QUFFNUIsRUFBRSx1RkFBMEI7O0FBRTVCOztBQUVBO0FBQ0EsZ0NBQWdDLHNEQUFVOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNsRTs7QUFFQSxhQUFhLGlFQUFtQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzQ0FBRTtBQUM5QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQixlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLENBQUMsMkRBQTJELHNGQUF5QjtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWcgPSBcInZhcnlpbmcgdmVjMiB2X1VWO1xcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfVGV4dHVyZTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleHR1cmUyRCh1X1RleHR1cmUsIHZfVVYpKTtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS52ZXJ0Lmdsc2wnICovXG52YXIgY29weVZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIGFfUG9zaXRpb247XFxuXFxudmFyeWluZyB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4uLy4uLy4uL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvc2hhZGVycy93ZWJncHUuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWdXZWJHUFUgPSBcImxheW91dChzZXQgPSAwLCBiaW5kaW5nID0gMCkgdW5pZm9ybSBzYW1wbGVyIHVfVGV4dHVyZVNhbXBsZXI7XFxubGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKSB1bmlmb3JtIHRleHR1cmUyRCB1X1RleHR1cmU7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiB2X1VWO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG91dENvbG9yO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIG91dENvbG9yID0gdGV4dHVyZShzYW1wbGVyMkQodV9UZXh0dXJlLCB1X1RleHR1cmVTYW1wbGVyKSwgdl9VVik7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi4vLi4vLi4vc2VydmljZXMvc2hhZGVyLW1vZHVsZS9zaGFkZXJzL3dlYmdwdS5jb3B5LnZlcnQuZ2xzbCcgKi9cbnZhciBjb3B5VmVydFdlYkdQVSA9IFwibGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiBhX1Bvc2l0aW9uO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnLi4vZ2wnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vUmVuZGVyUGFzcyc7XG5leHBvcnQgdmFyIENvcHlQYXNzID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IGZ1bmN0aW9uIENvcHlQYXNzKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb3B5UGFzcyk7XG5cbiAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVzb3VyY2VQb29sXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgdGhpcy5tb2RlbCA9IHZvaWQgMDtcblxuICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgIHZhciByZW5kZXJQYXNzID0gZmcuZ2V0UGFzcyhSZW5kZXJQYXNzLklERU5USUZJRVIpO1xuXG4gICAgaWYgKHJlbmRlclBhc3MpIHtcbiAgICAgIHZhciBvdXRwdXQgPSBmZy5jcmVhdGVSZW5kZXJUYXJnZXQocGFzc05vZGUsICdyZW5kZXIgdG8gc2NyZWVuJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgaW5wdXQ6IHBhc3NOb2RlLnJlYWQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCksXG4gICAgICAgIG91dHB1dDogcGFzc05vZGUud3JpdGUoZmcsIG91dHB1dClcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIHRoaXMuZXhlY3V0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzKSB7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIsIG1vZGVsLCByZXNvdXJjZU5vZGUsIGZyYW1lYnVmZmVyO1xuXG4gICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSBfdGhpcy5lbmdpbmUsIGNyZWF0ZU1vZGVsID0gX3RoaXMkZW5naW5lLmNyZWF0ZU1vZGVsLCBjcmVhdGVBdHRyaWJ1dGUgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQnVmZmVyO1xuXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgdnM6IF90aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gY29weVZlcnRXZWJHUFUgOiBjb3B5VmVydCxcbiAgICAgICAgICAgICAgICBmczogX3RoaXMuZW5naW5lLnN1cHBvcnRXZWJHUFUgPyBjb3B5RnJhZ1dlYkdQVSA6IGNvcHlGcmFnLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIC8vIHJlbmRlcmluZyBhIGZ1bGxzY3JlZW4gdHJpYW5nbGUgaW5zdGVhZCBvZiBxdWFkXG4gICAgICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vd3d3LnNhc2NoYXdpbGxlbXMuZGUvYmxvZy8yMDE2LzA4LzEzL3Z1bGthbi10dXRvcmlhbC1vbi1yZW5kZXJpbmctYS1mdWxsc2NyZWVuLXF1YWQtd2l0aG91dC1idWZmZXJzL1xuICAgICAgICAgICAgICAgICAgYV9Qb3NpdGlvbjogY3JlYXRlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBjcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFstNCwgLTQsIDQsIC00LCAwLCA0XSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBnbC5GTE9BVFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMixcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IDIgKiA0LFxuICAgICAgICAgICAgICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdV9UZXh0dXJlOiBudWxsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY291bnQ6IDMsXG4gICAgICAgICAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvcHkgcGFzcyDpnIDopoHmt7flkIhcbiAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZTogdGhpcy5nZXROYW1lKCkgPT09ICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgbW9kZWwgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICBfdGhpcy5tb2RlbCA9IG1vZGVsO1xuXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIC8vIOWunuS+i+WMlui1hOa6kFxuICAgICAgICAgICAgICByZXNvdXJjZU5vZGUgPSBmZy5nZXRSZXNvdXJjZU5vZGUocGFzcy5kYXRhLmlucHV0KTtcbiAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBfdGhpcy5yZXNvdXJjZVBvb2wuZ2V0T3JDcmVhdGVSZXNvdXJjZShyZXNvdXJjZU5vZGUucmVzb3VyY2UpO1xuXG4gICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihudWxsLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgIGRlcHRoOiAxLFxuICAgICAgICAgICAgICAgICAgc3RlbmNpbDogMFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMubW9kZWwuZHJhdyh7XG4gICAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICB1X1RleHR1cmU6IGZyYW1lYnVmZmVyIC8vIHVfVmlld3BvcnRTaXplOiBbd2lkdGgsIGhlaWdodF0sXG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIF9jYWxsZWUpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94Mikge1xuICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KCk7XG5cbiAgdGhpcy50ZWFyRG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5tb2RlbCA9IHVuZGVmaW5lZDtcbiAgfTtcbn0sIF9jbGFzczMuSURFTlRJRklFUiA9ICdDb3B5IFBhc3MnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29weVBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js":
/*!********************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js ***!
\********************************************************************************************/
/*! exports provided: PixelPickingPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return PixelPickingPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../utils/math */ \"./node_modules/@antv/g-webgpu-core/es/utils/math.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0\n};\n/**\n * color-based picking\n * @see https://threejsfundamentals.org/threejs/lessons/threejs-picking.html\n */\n\nvar PixelPickingPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function PixelPickingPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PixelPickingPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor4, this);\n\n this.pickingFBO = void 0;\n this.views = void 0;\n this.highlightEnabled = true;\n this.highlightColor = [255, 0, 0, 255];\n this.alreadyInRendering = false;\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'picking fbo', {\n width: 1,\n height: 1\n });\n pass.data = {\n output: passNode.write(fg, output)\n }; // 防止被 FrameGraph 剔除\n\n passNode.hasSideEffect = true;\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var _iterator, _step, _loop;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this.views = views;\n\n if (!_this.alreadyInRendering) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n _loop = function _loop() {\n var view = _step.value;\n\n var _view$getViewport = view.getViewport(),\n width = _view$getViewport.width,\n height = _view$getViewport.height; // throttled\n\n\n _this.alreadyInRendering = true; // 实例化资源\n\n var resourceNode = fg.getResourceNode(pass.data.output);\n _this.pickingFBO = _this.resourcePool.getOrCreateResource(resourceNode.resource); // TODO: only draw 1x1 quad, with offset camera\n\n _this.pickingFBO.resize({\n width: width,\n height: height\n });\n\n _this.engine.useFramebuffer(_this.pickingFBO, function () {\n _this.engine.clear({\n framebuffer: _this.pickingFBO,\n color: [0, 0, 0, 0],\n stencil: 0,\n depth: 1\n }); // 渲染\n\n\n var renderPass = _this.renderPassFactory(_RenderPass__WEBPACK_IMPORTED_MODULE_10__[\"RenderPass\"].IDENTIFIER); // 修改所有\n\n\n var meshes = [];\n var scene = view.getScene();\n\n var _iterator2 = _createForOfIteratorHelper(scene.getEntities()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var meshEntity = _step2.value;\n\n var mesh = _this.mesh.getComponentByEntity(meshEntity);\n\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.ENCODE);\n meshes.push(mesh);\n } // @ts-ignore\n\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n renderPass.renderView(view);\n meshes.forEach(function (mesh) {\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n });\n _this.alreadyInRendering = false;\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.pick = function (_ref2, view) {\n var x = _ref2.x,\n y = _ref2.y;\n var _this$engine = _this.engine,\n readPixels = _this$engine.readPixels,\n useFramebuffer = _this$engine.useFramebuffer;\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height;\n\n var xInDevicePixel = x * window.devicePixelRatio;\n var yInDevicePixel = y * window.devicePixelRatio; // const xInDevicePixel = x;\n // const yInDevicePixel = y;\n\n if (xInDevicePixel > width || xInDevicePixel < 0 || yInDevicePixel > height || yInDevicePixel < 0) {\n return;\n }\n\n var pickedColors;\n var pickedFeatureIdx;\n useFramebuffer(_this.pickingFBO, function () {\n // avoid realloc\n pickedColors = readPixels({\n x: Math.round(xInDevicePixel),\n // 视口坐标系原点在左上,而 WebGL 在左下,需要翻转 Y 轴\n y: Math.round(height - (y + 1) * window.devicePixelRatio),\n // y: Math.round(height - (y + 1)),\n width: 1,\n height: 1,\n data: new Uint8Array(1 * 1 * 4),\n framebuffer: _this.pickingFBO\n });\n\n if (pickedColors[0] !== 0 || pickedColors[1] !== 0 || pickedColors[2] !== 0) {\n pickedFeatureIdx = Object(_utils_math__WEBPACK_IMPORTED_MODULE_9__[\"decodePickingColor\"])(pickedColors);\n\n if (_this.highlightEnabled) {\n // 高亮\n _this.highlightPickedFeature(pickedColors, view);\n }\n }\n });\n return pickedFeatureIdx;\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PixelPickingPass, [{\n key: \"enableHighlight\",\n value: function enableHighlight(enabled) {\n this.highlightEnabled = enabled;\n }\n }, {\n key: \"setHighlightColor\",\n value: function setHighlightColor(color) {\n this.highlightColor = color;\n }\n }, {\n key: \"highlightPickedFeature\",\n\n /**\n * highlight 如果直接修改选中 feature 的 buffer,存在两个问题:\n * 1. 鼠标移走时无法恢复\n * 2. 无法实现高亮颜色与原始原色的 alpha 混合\n * 因此高亮还是放在 shader 中做比较好\n */\n value: function highlightPickedFeature(pickedColors, view) {\n if (pickedColors) {\n var _iterator3 = _createForOfIteratorHelper(view.getScene().getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n material.setUniform('u_PickingColor', [pickedColors[0], pickedColors[1], pickedColors[2]]);\n material.setUniform('u_HighlightColor', this.highlightColor);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n }]);\n\n return PixelPickingPass;\n}(), _class3.IDENTIFIER = 'PixelPicking Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=PixelPickingPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9QaXhlbFBpY2tpbmdQYXNzLmpzPzE2NTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRTtBQUNRO0FBQ2Y7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLCtCQUErQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsNkJBQTZCLHdEQUFNLENBQUMsc0RBQVU7QUFDN007QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMERBQTBEOzs7QUFHMUQsb0RBQW9EOztBQUVwRDtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsRUFBRTs7O0FBR3pCLCtEQUErRCx1REFBVSxhQUFhOzs7QUFHdEY7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLGlDQUFpQztBQUM3RTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCLHVCQUF1QjtBQUN2QjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBLHFDQUFxQywrQkFBK0I7QUFDcEU7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBLDZCQUE2QixzRUFBa0I7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixpQ0FBaUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxxRUFBcUUsc0ZBQXlCO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUGl4ZWxQaWNraW5nUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9jbGFzczMsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBkZWNvZGVQaWNraW5nQ29sb3IgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYXRoJztcbmltcG9ydCB7IFJlbmRlclBhc3MgfSBmcm9tICcuL1JlbmRlclBhc3MnO1xudmFyIFBpY2tpbmdTdGFnZSA9IHtcbiAgTk9ORTogMC4wLFxuICBFTkNPREU6IDEuMCxcbiAgSElHSExJR0hUOiAyLjBcbn07XG4vKipcbiAqIGNvbG9yLWJhc2VkIHBpY2tpbmdcbiAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzZnVuZGFtZW50YWxzLm9yZy90aHJlZWpzL2xlc3NvbnMvdGhyZWVqcy1waWNraW5nLmh0bWxcbiAqL1xuXG5leHBvcnQgdmFyIFBpeGVsUGlja2luZ1Bhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQaXhlbFBpY2tpbmdQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGl4ZWxQaWNraW5nUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZW5kZXJQYXNzRmFjdG9yeVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yNCwgdGhpcyk7XG5cbiAgICB0aGlzLnBpY2tpbmdGQk8gPSB2b2lkIDA7XG4gICAgdGhpcy52aWV3cyA9IHZvaWQgMDtcbiAgICB0aGlzLmhpZ2hsaWdodEVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdO1xuICAgIHRoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ3BpY2tpbmcgZmJvJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTsgLy8g6Ziy5q2i6KKrIEZyYW1lR3JhcGgg5YmU6ZmkXG5cbiAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgIH07XG5cbiAgICB0aGlzLmV4ZWN1dGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzLCB2aWV3cykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yLCBfc3RlcCwgX2xvb3A7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfdGhpcy52aWV3cyA9IHZpZXdzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodmlld3MpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0ID0gdmlldy5nZXRWaWV3cG9ydCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBfdmlldyRnZXRWaWV3cG9ydC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDsgLy8gdGhyb3R0bGVkXG5cblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcgPSB0cnVlOyAvLyDlrp7kvovljJbotYTmupBcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VOb2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKHBhc3MuZGF0YS5vdXRwdXQpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPID0gX3RoaXMucmVzb3VyY2VQb29sLmdldE9yQ3JlYXRlUmVzb3VyY2UocmVzb3VyY2VOb2RlLnJlc291cmNlKTsgLy8gVE9ETzogb25seSBkcmF3IDF4MSBxdWFkLCB3aXRoIG9mZnNldCBjYW1lcmFcblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihfdGhpcy5waWNraW5nRkJPLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBfdGhpcy5waWNraW5nRkJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5jaWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogMVxuICAgICAgICAgICAgICAgICAgICAgIH0pOyAvLyDmuLLmn5NcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbmRlclBhc3MgPSBfdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShSZW5kZXJQYXNzLklERU5USUZJRVIpOyAvLyDkv67mlLnmiYDmnIlcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc2hlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaEVudGl0eSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaCA9IF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nU3RhZ2UnLCBQaWNraW5nU3RhZ2UuRU5DT0RFKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaGVzLnB1c2gobWVzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3MucmVuZGVyVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgICBtZXNoZXMuZm9yRWFjaChmdW5jdGlvbiAobWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfUGlja2luZ1N0YWdlJywgUGlja2luZ1N0YWdlLkhJR0hMSUdIVCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvb3AoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyLCBfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5waWNrID0gZnVuY3Rpb24gKF9yZWYyLCB2aWV3KSB7XG4gICAgICB2YXIgeCA9IF9yZWYyLngsXG4gICAgICAgICAgeSA9IF9yZWYyLnk7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lID0gX3RoaXMuZW5naW5lLFxuICAgICAgICAgIHJlYWRQaXhlbHMgPSBfdGhpcyRlbmdpbmUucmVhZFBpeGVscyxcbiAgICAgICAgICB1c2VGcmFtZWJ1ZmZlciA9IF90aGlzJGVuZ2luZS51c2VGcmFtZWJ1ZmZlcjtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0O1xuXG4gICAgICB2YXIgeEluRGV2aWNlUGl4ZWwgPSB4ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICB2YXIgeUluRGV2aWNlUGl4ZWwgPSB5ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87IC8vIGNvbnN0IHhJbkRldmljZVBpeGVsID0geDtcbiAgICAgIC8vIGNvbnN0IHlJbkRldmljZVBpeGVsID0geTtcblxuICAgICAgaWYgKHhJbkRldmljZVBpeGVsID4gd2lkdGggfHwgeEluRGV2aWNlUGl4ZWwgPCAwIHx8IHlJbkRldmljZVBpeGVsID4gaGVpZ2h0IHx8IHlJbkRldmljZVBpeGVsIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwaWNrZWRDb2xvcnM7XG4gICAgICB2YXIgcGlja2VkRmVhdHVyZUlkeDtcbiAgICAgIHVzZUZyYW1lYnVmZmVyKF90aGlzLnBpY2tpbmdGQk8sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gYXZvaWQgcmVhbGxvY1xuICAgICAgICBwaWNrZWRDb2xvcnMgPSByZWFkUGl4ZWxzKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKHhJbkRldmljZVBpeGVsKSxcbiAgICAgICAgICAvLyDop4blj6PlnZDmoIfns7vljp/ngrnlnKjlt6bkuIrvvIzogIwgV2ViR0wg5Zyo5bem5LiL77yM6ZyA6KaB57+76L2sIFkg6L20XG4gICAgICAgICAgeTogTWF0aC5yb3VuZChoZWlnaHQgLSAoeSArIDEpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pLFxuICAgICAgICAgIC8vIHk6IE1hdGgucm91bmQoaGVpZ2h0IC0gKHkgKyAxKSksXG4gICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KDEgKiAxICogNCksXG4gICAgICAgICAgZnJhbWVidWZmZXI6IF90aGlzLnBpY2tpbmdGQk9cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpY2tlZENvbG9yc1swXSAhPT0gMCB8fCBwaWNrZWRDb2xvcnNbMV0gIT09IDAgfHwgcGlja2VkQ29sb3JzWzJdICE9PSAwKSB7XG4gICAgICAgICAgcGlja2VkRmVhdHVyZUlkeCA9IGRlY29kZVBpY2tpbmdDb2xvcihwaWNrZWRDb2xvcnMpO1xuXG4gICAgICAgICAgaWYgKF90aGlzLmhpZ2hsaWdodEVuYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIOmrmOS6rlxuICAgICAgICAgICAgX3RoaXMuaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGlja2VkRmVhdHVyZUlkeDtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBpeGVsUGlja2luZ1Bhc3MsIFt7XG4gICAga2V5OiBcImVuYWJsZUhpZ2hsaWdodFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGVIaWdobGlnaHQoZW5hYmxlZCkge1xuICAgICAgdGhpcy5oaWdobGlnaHRFbmFibGVkID0gZW5hYmxlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0SGlnaGxpZ2h0Q29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SGlnaGxpZ2h0Q29sb3IoY29sb3IpIHtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGlnaGxpZ2h0UGlja2VkRmVhdHVyZVwiLFxuXG4gICAgLyoqXG4gICAgICogaGlnaGxpZ2h0IOWmguaenOebtOaOpeS/ruaUuemAieS4rSBmZWF0dXJlIOeahCBidWZmZXLvvIzlrZjlnKjkuKTkuKrpl67popjvvJpcbiAgICAgKiAxLiDpvKDmoIfnp7votbDml7bml6Dms5XmgaLlpI1cbiAgICAgKiAyLiDml6Dms5Xlrp7njrDpq5jkuq7popzoibLkuI7ljp/lp4vljp/oibLnmoQgYWxwaGEg5re35ZCIXG4gICAgICog5Zug5q2k6auY5Lqu6L+Y5piv5pS+5ZyoIHNoYWRlciDkuK3lgZrmr5TovoPlpb1cbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpIHtcbiAgICAgIGlmIChwaWNrZWRDb2xvcnMpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3LmdldFNjZW5lKCkuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICBfc3RlcDM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIG1lc2hFbnRpdHkgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcbiAgICAgICAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKCd1X1BpY2tpbmdTdGFnZScsIFBpY2tpbmdTdGFnZS5ISUdITElHSFQpO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nQ29sb3InLCBbcGlja2VkQ29sb3JzWzBdLCBwaWNrZWRDb2xvcnNbMV0sIHBpY2tlZENvbG9yc1syXV0pO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9IaWdobGlnaHRDb2xvcicsIHRoaXMuaGlnaGxpZ2h0Q29sb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5lKGVycik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGl4ZWxQaWNraW5nUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1BpeGVsUGlja2luZyBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJyZXNvdXJjZVBvb2xcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzVdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGl4ZWxQaWNraW5nUGFzcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js":
/*!**************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js ***!
\**************************************************************************************/
/*! exports provided: RenderPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderPass\", function() { return RenderPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar RenderPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec7 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec8 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec9 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].FrameGraphSystem), _dec10 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec11 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function RenderPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RenderPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"material\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor6, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor7, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor8, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor9, this);\n\n this.modelCache = {};\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'color buffer', {\n width: 1,\n height: 1,\n usage: _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].RENDER_ATTACHMENT | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].SAMPLED | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].COPY_SRC\n });\n pass.data = {\n output: passNode.write(fg, output)\n };\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var resourceNode, framebuffer, _iterator, _step, view, canvas;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n resourceNode = fg.getResourceNode(pass.data.output);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource); // initialize model of each mesh\n\n _iterator = _createForOfIteratorHelper(views);\n _context.prev = 3;\n\n _iterator.s();\n\n case 5:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n\n view = _step.value;\n _context.next = 9;\n return _this.initView(view);\n\n case 9:\n _context.next = 5;\n break;\n\n case 11:\n _context.next = 16;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](3);\n\n _iterator.e(_context.t0);\n\n case 16:\n _context.prev = 16;\n\n _iterator.f();\n\n return _context.finish(16);\n\n case 19:\n canvas = _this.engine.getCanvas();\n framebuffer.resize({\n width: canvas.width,\n height: canvas.height\n });\n\n _this.engine.setScissor({\n enable: false\n });\n\n _this.engine.clear({\n framebuffer: framebuffer,\n color: views[0].getClearColor(),\n // TODO: use clearColor defined in view\n depth: 1\n });\n\n _this.engine.useFramebuffer(framebuffer, function () {\n var _iterator2 = _createForOfIteratorHelper(views),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var view = _step2.value;\n\n // must do rendering in a sync way\n _this.renderView(view);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n\n case 24:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 13, 16, 19]]);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RenderPass, [{\n key: \"renderView\",\n value: function renderView(view) {\n var scene = view.getScene();\n var camera = view.getCamera(); // get VP matrix from camera\n\n var viewMatrix = camera.getViewTransform();\n var viewProjectionMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), camera.getPerspective(), viewMatrix); // TODO: use cached planes if camera was not changed\n\n camera.getFrustum().extractFromVPMatrix(viewProjectionMatrix);\n\n var _view$getViewport = view.getViewport(),\n x = _view$getViewport.x,\n y = _view$getViewport.y,\n width = _view$getViewport.width,\n height = _view$getViewport.height;\n\n this.engine.viewport({\n x: x,\n y: y,\n width: width,\n height: height\n }); // this.engine.setScissor({\n // enable: true,\n // box: { x, y, width, height },\n // });\n // this.engine.clear({\n // // framebuffer,\n // color: [1, 1, 1, 1], // TODO: use clearColor defined in view\n // depth: 1,\n // });\n\n var _iterator3 = _createForOfIteratorHelper(scene.getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n this.renderMesh(meshEntity, {\n camera: camera,\n view: view,\n viewMatrix: viewMatrix\n });\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"renderMesh\",\n value: function renderMesh(meshEntity, _ref2) {\n var camera = _ref2.camera,\n view = _ref2.view,\n viewMatrix = _ref2.viewMatrix;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (!mesh || !mesh.visible) {\n return;\n } // filter meshes with frustum culling\n // if (!this.cullable.getComponentByEntity(meshEntity)?.visible) {\n // return;\n // }\n\n\n var material = mesh.material;\n var geometry = mesh.geometry; // geometry 在自己的 System 中完成脏检查后的更新\n\n if (!geometry || geometry.dirty || !material) {\n return;\n } // get model matrix from mesh\n\n\n var transform = this.transform.getComponentByEntity(meshEntity);\n var modelViewMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), viewMatrix, transform.worldTransform);\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height; // set MVP matrix, other builtin uniforms @see https://threejs.org/docs/#api/en/renderers/webgl/WebGLProgram\n\n\n material.setUniform({\n projectionMatrix: camera.getPerspective(),\n modelViewMatrix: modelViewMatrix,\n modelMatrix: transform.worldTransform,\n viewMatrix: viewMatrix,\n cameraPosition: camera.getPosition(),\n u_viewport: [width, height]\n });\n\n if (mesh.model) {\n mesh.model.draw({\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {})\n });\n material.uniforms.forEach(function (u) {\n u.dirty = false;\n });\n material.dirty = false;\n }\n }\n }, {\n key: \"initMesh\",\n value: function () {\n var _initMesh = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(meshEntity, view) {\n var mesh, material, geometry, modelCacheKey, _this$engine, createModel, createAttribute, modelInitializationOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (mesh) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 3:\n material = mesh.material;\n geometry = mesh.geometry;\n\n if (!(!geometry || geometry.dirty || !material)) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 7:\n if (mesh.model) {\n _context2.next = 24;\n break;\n }\n\n modelCacheKey = \"m-\".concat(material.entity, \"-g-\").concat(geometry.entity);\n\n if (!this.modelCache[modelCacheKey]) {\n _context2.next = 12;\n break;\n }\n\n mesh.model = this.modelCache[modelCacheKey];\n return _context2.abrupt(\"return\");\n\n case 12:\n material.setUniform({\n projectionMatrix: 1,\n modelViewMatrix: 1,\n modelMatrix: 1,\n viewMatrix: 1,\n cameraPosition: 1,\n u_viewport: 1\n });\n _this$engine = this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute;\n modelInitializationOptions = {\n vs: material.vertexShaderGLSL,\n fs: material.fragmentShaderGLSL,\n defines: material.defines,\n attributes: geometry.attributes.reduce(function (cur, prev) {\n if (prev.data && prev.buffer) {\n cur[prev.name] = createAttribute({\n buffer: prev.buffer,\n attributes: prev.attributes,\n arrayStride: prev.arrayStride,\n stepMode: prev.stepMode,\n divisor: prev.stepMode === 'vertex' ? 0 : 1\n });\n }\n\n return cur;\n }, {}),\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {}),\n scissor: {\n enable: true,\n // @ts-ignore\n box: function box() {\n return view.getViewport();\n }\n }\n };\n\n if (material.cull) {\n modelInitializationOptions.cull = material.cull;\n }\n\n if (material.depth) {\n modelInitializationOptions.depth = material.depth;\n }\n\n if (material.blend) {\n modelInitializationOptions.blend = material.blend;\n }\n\n if (geometry.indicesBuffer) {\n modelInitializationOptions.elements = geometry.indicesBuffer;\n }\n\n if (geometry.maxInstancedCount) {\n modelInitializationOptions.instances = geometry.maxInstancedCount;\n modelInitializationOptions.count = geometry.vertexCount || 3;\n }\n\n _context2.next = 22;\n return createModel(modelInitializationOptions);\n\n case 22:\n mesh.model = _context2.sent;\n this.modelCache[modelCacheKey] = mesh.model;\n\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function initMesh(_x4, _x5) {\n return _initMesh.apply(this, arguments);\n }\n\n return initMesh;\n }()\n }, {\n key: \"initView\",\n value: function () {\n var _initView = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(view) {\n var scene, _iterator4, _step4, meshEntity;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n scene = view.getScene();\n _iterator4 = _createForOfIteratorHelper(scene.getEntities());\n _context3.prev = 2;\n\n _iterator4.s();\n\n case 4:\n if ((_step4 = _iterator4.n()).done) {\n _context3.next = 10;\n break;\n }\n\n meshEntity = _step4.value;\n _context3.next = 8;\n return this.initMesh(meshEntity, view);\n\n case 8:\n _context3.next = 4;\n break;\n\n case 10:\n _context3.next = 15;\n break;\n\n case 12:\n _context3.prev = 12;\n _context3.t0 = _context3[\"catch\"](2);\n\n _iterator4.e(_context3.t0);\n\n case 15:\n _context3.prev = 15;\n\n _iterator4.f();\n\n return _context3.finish(15);\n\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 12, 15, 18]]);\n }));\n\n function initView(_x6) {\n return _initView.apply(this, arguments);\n }\n\n return initView;\n }()\n }]);\n\n return RenderPass;\n}(), _class3.IDENTIFIER = 'Render Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"material\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor6 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec7], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor7 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec8, _dec9], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor8 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec10], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor9 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec11], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=RenderPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9SZW5kZXJQYXNzLmpzP2Y3ODEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFcEo7QUFDcUI7QUFDTDtBQUN0QjtBQUNwQix5QkFBeUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLGdDQUFnQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLG1CQUFtQix1REFBSyxDQUFDLHNEQUFVLDZCQUE2Qix3REFBTSxDQUFDLHNEQUFVLHlCQUF5Qix3REFBTSxDQUFDLHNEQUFVO0FBQzlmO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHVDQUFFLHFCQUFxQix1Q0FBRSxXQUFXLHVDQUFFO0FBQ3JELE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7O0FBRTVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MsaUNBQWlDO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsaUNBQWlDLDhDQUFJLFVBQVUsOENBQUksZ0RBQWdEOztBQUVuRzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkMsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLGlDQUFpQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSw0QkFBNEIsOENBQUksVUFBVSw4Q0FBSTs7QUFFOUM7QUFDQTtBQUNBLDZDQUE2Qzs7O0FBRzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJO0FBQ2YsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUMsK0RBQStELHNGQUF5QjtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1JlbmRlclBhc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9kZWM1LCBfZGVjNiwgX2RlYzcsIF9kZWM4LCBfZGVjOSwgX2RlYzEwLCBfZGVjMTEsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9kZXNjcmlwdG9yNSwgX2Rlc2NyaXB0b3I2LCBfZGVzY3JpcHRvcjcsIF9kZXNjcmlwdG9yOCwgX2Rlc2NyaXB0b3I5LCBfY2xhc3MzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobywgYWxsb3dBcnJheUxpa2UpIHsgdmFyIGl0OyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBvW1N5bWJvbC5pdGVyYXRvcl0gPT0gbnVsbCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBvW1N5bWJvbC5pdGVyYXRvcl0oKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHN0ZXAgPSBpdC5uZXh0KCk7IG5vcm1hbENvbXBsZXRpb24gPSBzdGVwLmRvbmU7IHJldHVybiBzdGVwOyB9LCBlOiBmdW5jdGlvbiBlKF9lMikgeyBkaWRFcnIgPSB0cnVlOyBlcnIgPSBfZTI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGlmICghbm9ybWFsQ29tcGxldGlvbiAmJiBpdC5yZXR1cm4gIT0gbnVsbCkgaXQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmIChkaWRFcnIpIHRocm93IGVycjsgfSB9IH07IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5pbXBvcnQgeyBtYXQ0IH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9nbCc7XG5leHBvcnQgdmFyIFJlbmRlclBhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkN1bGxhYmxlQ29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM3ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM4ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM5ID0gbmFtZWQoSURFTlRJRklFUi5GcmFtZUdyYXBoU3lzdGVtKSwgX2RlYzEwID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzExID0gaW5qZWN0KElERU5USUZJRVIuUmVzb3VyY2VQb29sKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc2hcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjdWxsYWJsZVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiaGllcmFyY2h5XCIsIF9kZXNjcmlwdG9yNiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgX2Rlc2NyaXB0b3I3LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZW5naW5lXCIsIF9kZXNjcmlwdG9yOCwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjksIHRoaXMpO1xuXG4gICAgdGhpcy5tb2RlbENhY2hlID0ge307XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ2NvbG9yIGJ1ZmZlcicsIHtcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgdXNhZ2U6IGdsLlJFTkRFUl9BVFRBQ0hNRU5UIHwgZ2wuU0FNUExFRCB8IGdsLkNPUFlfU1JDXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdGhpcy5leGVjdXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShmZywgcGFzcywgdmlld3MpIHtcbiAgICAgICAgdmFyIHJlc291cmNlTm9kZSwgZnJhbWVidWZmZXIsIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIGNhbnZhcztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJlc291cmNlTm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShwYXNzLmRhdGEub3V0cHV0KTtcbiAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IF90aGlzLnJlc291cmNlUG9vbC5nZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlTm9kZS5yZXNvdXJjZSk7IC8vIGluaXRpYWxpemUgbW9kZWwgb2YgZWFjaCBtZXNoXG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDM7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IucygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBpZiAoKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5pbml0Vmlldyh2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFtcImNhdGNoXCJdKDMpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoX2NvbnRleHQudDApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE2O1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTYpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgY2FudmFzID0gX3RoaXMuZW5naW5lLmdldENhbnZhcygpO1xuICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogY2FudmFzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAgICAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHZpZXdzWzBdLmdldENsZWFyQ29sb3IoKSxcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHVzZSBjbGVhckNvbG9yIGRlZmluZWQgaW4gdmlld1xuICAgICAgICAgICAgICAgICAgZGVwdGg6IDFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyksXG4gICAgICAgICAgICAgICAgICAgICAgX3N0ZXAyO1xuXG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gbXVzdCBkbyByZW5kZXJpbmcgaW4gYSBzeW5jIHdheVxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbmRlclZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1szLCAxMywgMTYsIDE5XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIsIF94Mykge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVuZGVyUGFzcywgW3tcbiAgICBrZXk6IFwicmVuZGVyVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJWaWV3KHZpZXcpIHtcbiAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgIHZhciBjYW1lcmEgPSB2aWV3LmdldENhbWVyYSgpOyAvLyBnZXQgVlAgbWF0cml4IGZyb20gY2FtZXJhXG5cbiAgICAgIHZhciB2aWV3TWF0cml4ID0gY2FtZXJhLmdldFZpZXdUcmFuc2Zvcm0oKTtcbiAgICAgIHZhciB2aWV3UHJvamVjdGlvbk1hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksIHZpZXdNYXRyaXgpOyAvLyBUT0RPOiB1c2UgY2FjaGVkIHBsYW5lcyBpZiBjYW1lcmEgd2FzIG5vdCBjaGFuZ2VkXG5cbiAgICAgIGNhbWVyYS5nZXRGcnVzdHVtKCkuZXh0cmFjdEZyb21WUE1hdHJpeCh2aWV3UHJvamVjdGlvbk1hdHJpeCk7XG5cbiAgICAgIHZhciBfdmlldyRnZXRWaWV3cG9ydCA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB4ID0gX3ZpZXckZ2V0Vmlld3BvcnQueCxcbiAgICAgICAgICB5ID0gX3ZpZXckZ2V0Vmlld3BvcnQueSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDtcblxuICAgICAgdGhpcy5lbmdpbmUudmlld3BvcnQoe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTsgLy8gdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAvLyAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIC8vICAgYm94OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgLy8gICAvLyBmcmFtZWJ1ZmZlcixcbiAgICAgIC8vICAgY29sb3I6IFsxLCAxLCAxLCAxXSwgLy8gVE9ETzogdXNlIGNsZWFyQ29sb3IgZGVmaW5lZCBpbiB2aWV3XG4gICAgICAvLyAgIGRlcHRoOiAxLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIHZhciBfaXRlcmF0b3IzID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgX3N0ZXAzO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBtZXNoRW50aXR5ID0gX3N0ZXAzLnZhbHVlO1xuICAgICAgICAgIHRoaXMucmVuZGVyTWVzaChtZXNoRW50aXR5LCB7XG4gICAgICAgICAgICBjYW1lcmE6IGNhbWVyYSxcbiAgICAgICAgICAgIHZpZXc6IHZpZXcsXG4gICAgICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJNZXNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlck1lc2gobWVzaEVudGl0eSwgX3JlZjIpIHtcbiAgICAgIHZhciBjYW1lcmEgPSBfcmVmMi5jYW1lcmEsXG4gICAgICAgICAgdmlldyA9IF9yZWYyLnZpZXcsXG4gICAgICAgICAgdmlld01hdHJpeCA9IF9yZWYyLnZpZXdNYXRyaXg7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcblxuICAgICAgaWYgKCFtZXNoIHx8ICFtZXNoLnZpc2libGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBmaWx0ZXIgbWVzaGVzIHdpdGggZnJ1c3R1bSBjdWxsaW5nXG4gICAgICAvLyBpZiAoIXRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk/LnZpc2libGUpIHtcbiAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgLy8gfVxuXG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5OyAvLyBnZW9tZXRyeSDlnKjoh6rlt7HnmoQgU3lzdGVtIOS4reWujOaIkOiEj+ajgOafpeWQjueahOabtOaWsFxuXG4gICAgICBpZiAoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGdldCBtb2RlbCBtYXRyaXggZnJvbSBtZXNoXG5cblxuICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuICAgICAgdmFyIG1vZGVsVmlld01hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgdmlld01hdHJpeCwgdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtKTtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0OyAvLyBzZXQgTVZQIG1hdHJpeCwgb3RoZXIgYnVpbHRpbiB1bmlmb3JtcyBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy93ZWJnbC9XZWJHTFByb2dyYW1cblxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgcHJvamVjdGlvbk1hdHJpeDogY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksXG4gICAgICAgIG1vZGVsVmlld01hdHJpeDogbW9kZWxWaWV3TWF0cml4LFxuICAgICAgICBtb2RlbE1hdHJpeDogdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtLFxuICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4LFxuICAgICAgICBjYW1lcmFQb3NpdGlvbjogY2FtZXJhLmdldFBvc2l0aW9uKCksXG4gICAgICAgIHVfdmlld3BvcnQ6IFt3aWR0aCwgaGVpZ2h0XVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNoLm1vZGVsKSB7XG4gICAgICAgIG1lc2gubW9kZWwuZHJhdyh7XG4gICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICBjdXJbcHJldi5uYW1lXSA9IHByZXYuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIH0pO1xuICAgICAgICBtYXRlcmlhbC51bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgdS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgbWF0ZXJpYWwuZGlydHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdE1lc2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0TWVzaCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG1lc2hFbnRpdHksIHZpZXcpIHtcbiAgICAgICAgdmFyIG1lc2gsIG1hdGVyaWFsLCBnZW9tZXRyeSwgbW9kZWxDYWNoZUtleSwgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBpZiAobWVzaC5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyNDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1vZGVsQ2FjaGVLZXkgPSBcIm0tXCIuY29uY2F0KG1hdGVyaWFsLmVudGl0eSwgXCItZy1cIikuY29uY2F0KGdlb21ldHJ5LmVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1lc2gubW9kZWwgPSB0aGlzLm1vZGVsQ2FjaGVbbW9kZWxDYWNoZUtleV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25NYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbFZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbE1hdHJpeDogMSxcbiAgICAgICAgICAgICAgICAgIHZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBjYW1lcmFQb3NpdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgIHVfdmlld3BvcnQ6IDFcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSB0aGlzLmVuZ2luZSwgY3JlYXRlTW9kZWwgPSBfdGhpcyRlbmdpbmUuY3JlYXRlTW9kZWwsIGNyZWF0ZUF0dHJpYnV0ZSA9IF90aGlzJGVuZ2luZS5jcmVhdGVBdHRyaWJ1dGU7XG4gICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICB2czogbWF0ZXJpYWwudmVydGV4U2hhZGVyR0xTTCxcbiAgICAgICAgICAgICAgICAgIGZzOiBtYXRlcmlhbC5mcmFnbWVudFNoYWRlckdMU0wsXG4gICAgICAgICAgICAgICAgICBkZWZpbmVzOiBtYXRlcmlhbC5kZWZpbmVzLFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogZ2VvbWV0cnkuYXR0cmlidXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGN1ciwgcHJldikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldi5kYXRhICYmIHByZXYuYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY3VyW3ByZXYubmFtZV0gPSBjcmVhdGVBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBwcmV2LmJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHByZXYuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5U3RyaWRlOiBwcmV2LmFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE1vZGU6IHByZXYuc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZpc29yOiBwcmV2LnN0ZXBNb2RlID09PSAndmVydGV4JyA/IDAgOiAxXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cltwcmV2Lm5hbWVdID0gcHJldi5kYXRhO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgc2Npc3Nvcjoge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgYm94OiBmdW5jdGlvbiBib3goKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXcuZ2V0Vmlld3BvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWwuY3VsbCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuY3VsbCA9IG1hdGVyaWFsLmN1bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsLmRlcHRoKSB7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5kZXB0aCA9IG1hdGVyaWFsLmRlcHRoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbC5ibGVuZCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuYmxlbmQgPSBtYXRlcmlhbC5ibGVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuZWxlbWVudHMgPSBnZW9tZXRyeS5pbmRpY2VzQnVmZmVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuaW5zdGFuY2VzID0gZ2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQ7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5jb3VudCA9IGdlb21ldHJ5LnZlcnRleENvdW50IHx8IDM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTW9kZWwobW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgbWVzaC5tb2RlbCA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSA9IG1lc2gubW9kZWw7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0TWVzaChfeDQsIF94NSkge1xuICAgICAgICByZXR1cm4gX2luaXRNZXNoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0TWVzaDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpbml0Vmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXRWaWV3ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTModmlldykge1xuICAgICAgICB2YXIgc2NlbmUsIF9pdGVyYXRvcjQsIF9zdGVwNCwgbWVzaEVudGl0eTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yNC5zKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBtZXNoRW50aXR5ID0gX3N0ZXA0LnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0TWVzaChtZXNoRW50aXR5LCB2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTI7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzW1wiY2F0Y2hcIl0oMik7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmUoX2NvbnRleHQzLnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTU7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuZmluaXNoKDE1KTtcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcywgW1syLCAxMiwgMTUsIDE4XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0VmlldyhfeDYpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0Vmlldy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdFZpZXc7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1JlbmRlciBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNSA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidHJhbnNmb3JtXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjYgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzddLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I3ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIFtfZGVjOCwgX2RlYzldLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I4ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMxMF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjkgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzExXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlclBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js ***!
\*****************************************************************************************/
/*! exports provided: HierarchyComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return HierarchyComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar HierarchyComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(HierarchyComponent, _Component);\n\n var _super = _createSuper(HierarchyComponent);\n\n function HierarchyComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, HierarchyComponent);\n\n _this = _super.call(this, data);\n _this.parentID = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return HierarchyComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=HierarchyComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50LmpzPzIxMGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBLGtCQUFrQixtRkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCB2YXIgSGllcmFyY2h5Q29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhIaWVyYXJjaHlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSGllcmFyY2h5Q29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBIaWVyYXJjaHlDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIaWVyYXJjaHlDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5wYXJlbnRJRCA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gSGllcmFyY2h5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGllcmFyY2h5Q29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js":
/*!************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js ***!
\************************************************************************************/
/*! exports provided: NameComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NameComponent\", function() { return NameComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar NameComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default()(NameComponent, _Component);\n\n var _super = _createSuper(NameComponent);\n\n function NameComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, NameComponent);\n\n _this = _super.call(this, data);\n _this.name = void 0;\n _this.name = data.name || '';\n return _this;\n }\n\n return NameComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_4__[\"Component\"]);\n//# sourceMappingURL=NameComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvTmFtZUNvbXBvbmVudC5qcz8xNGNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDWjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL05hbWVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBOYW1lQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhOYW1lQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE5hbWVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIE5hbWVDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOYW1lQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5uYW1lID0gZGF0YS5uYW1lIHx8ICcnO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBOYW1lQ29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmFtZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js":
/*!*****************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js ***!
\*****************************************************************************/
/*! exports provided: SceneGraphSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return SceneGraphSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\n\n\n\nvar SceneGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function SceneGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, SceneGraphSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(SceneGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.runTransformUpdateSystem();\n this.runHierarchyUpdateSystem();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.hierarchy.clear();\n this.transform.clear();\n }\n }, {\n key: \"getHierarchyComponentManager\",\n value: function getHierarchyComponentManager() {\n return this.hierarchy;\n }\n }, {\n key: \"getTransformComponentManager\",\n value: function getTransformComponentManager() {\n return this.transform;\n }\n }, {\n key: \"runTransformUpdateSystem\",\n value: function runTransformUpdateSystem() {\n var _this = this;\n\n // 原版基于 JobSystem 实现\n this.transform.forEach(function (entity, transform) {\n if (transform.isDirty() || transform.isLocalDirty()) {\n _this.setMeshAABBDirty(_this.mesh.getComponentByEntity(entity));\n\n transform.updateTransform();\n }\n });\n }\n }, {\n key: \"runHierarchyUpdateSystem\",\n value: function runHierarchyUpdateSystem() {\n var _this2 = this;\n\n this.hierarchy.forEach(function (entity, parentComponent) {\n var transformChild = _this2.transform.getComponentByEntity(entity);\n\n var transformParent = _this2.transform.getComponentByEntity(parentComponent.parentID);\n\n if (transformChild !== null && transformParent !== null) {\n transformChild.updateTransformWithParent(transformParent);\n }\n });\n }\n }, {\n key: \"attach\",\n value: function attach(entity, parent, isChildAlreadyInLocalSpace) {\n if (this.hierarchy.contains(entity)) {\n this.detach(entity);\n }\n\n this.hierarchy.create(entity, {\n parentID: parent\n });\n var mesh = this.mesh.getComponentByEntity(parent); // inform parent mesh to update its aabb\n\n this.setMeshAABBDirty(mesh);\n\n if (mesh && mesh.children.indexOf(entity) === -1) {\n mesh.children.push(entity);\n }\n\n if (this.hierarchy.getCount() > 1) {\n for (var i = this.hierarchy.getCount() - 1; i > 0; --i) {\n var parentCandidateEntity = this.hierarchy.getEntity(i); // const parentCandidateComponent = this.hierarchy.getComponent(i);\n\n for (var j = 0; j < i; ++j) {\n var childCandidateEntity = this.hierarchy.getComponent(j);\n\n if (childCandidateEntity.parentID === parentCandidateEntity) {\n this.hierarchy.moveItem(i, j);\n ++i; // next outer iteration will check the same index again as parent candidate, however things were moved upwards, so it will be a different entity!\n\n break;\n }\n }\n }\n } // Re-query parent after potential MoveItem(), because it invalidates references:\n\n\n var parentcomponent = this.hierarchy.getComponentByEntity(entity);\n var transformParent = this.transform.getComponentByEntity(parent);\n\n if (transformParent === null) {\n transformParent = this.transform.create(parent);\n }\n\n var transformChild = this.transform.getComponentByEntity(entity);\n\n if (transformChild === null) {\n transformChild = this.transform.create(entity); // after transforms.Create(), transform_parent pointer could have become invalidated!\n\n transformParent = this.transform.getComponentByEntity(parent);\n }\n\n transformChild.parent = transformParent;\n\n if (!isChildAlreadyInLocalSpace && transformParent) {\n transformChild.matrixTransform(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), transformParent.worldTransform));\n transformChild.updateTransform();\n }\n\n if (transformParent) {\n transformChild.updateTransformWithParent(transformParent);\n }\n }\n }, {\n key: \"detach\",\n value: function detach(entity) {\n var self = this.hierarchy.getComponentByEntity(entity);\n\n if (self !== null) {\n var transform = this.transform.getComponentByEntity(entity);\n\n if (transform !== null) {\n transform.parent = null;\n transform.applyTransform();\n }\n\n this.hierarchy.removeKeepSorted(entity); // inform parent mesh to update its aabb\n\n var mesh = this.mesh.getComponentByEntity(self.parentID);\n\n if (mesh) {\n var index = mesh.children.indexOf(entity);\n mesh.children.splice(index, 1);\n }\n\n this.setMeshAABBDirty(mesh);\n }\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren(parent) {\n var mesh = this.mesh.getComponentByEntity(parent);\n\n if (mesh) {\n mesh.children = [];\n }\n\n for (var i = 0; i < this.hierarchy.getCount();) {\n var _this$hierarchy$getCo;\n\n if (((_this$hierarchy$getCo = this.hierarchy.getComponent(i)) === null || _this$hierarchy$getCo === void 0 ? void 0 : _this$hierarchy$getCo.parentID) === parent) {\n var entity = this.hierarchy.getEntity(i);\n this.detach(entity);\n } else {\n ++i;\n }\n }\n }\n }, {\n key: \"setMeshAABBDirty\",\n value: function setMeshAABBDirty(mesh) {\n if (mesh) {\n mesh.aabbDirty = true;\n }\n }\n }]);\n\n return SceneGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtLmpzPzA0NWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlDO0FBQ2M7QUFDRDtBQUN2QywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVO0FBQ3pMO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjtBQUM5Qjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHFCQUFxQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDeEUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asd0RBQXdEOztBQUV4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsT0FBTztBQUMxRCxrRUFBa0U7O0FBRWxFLHlCQUF5QixPQUFPO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsOENBQUksUUFBUSw4Q0FBSTtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdEQUFnRDs7QUFFaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtCQUErQjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuaW1wb3J0IHsgbWF0NCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuZXhwb3J0IHZhciBTY2VuZUdyYXBoU3lzdGVtID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NlbmVHcmFwaFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2NlbmVHcmFwaFN5c3RlbSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInRyYW5zZm9ybVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2NlbmVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMucnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW0oKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMuaGllcmFyY2h5LmNsZWFyKCk7XG4gICAgICB0aGlzLnRyYW5zZm9ybS5jbGVhcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWVyYXJjaHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudE1hbmFnZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1blRyYW5zZm9ybVVwZGF0ZVN5c3RlbSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIOWOn+eJiOWfuuS6jiBKb2JTeXN0ZW0g5a6e546wXG4gICAgICB0aGlzLnRyYW5zZm9ybS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHksIHRyYW5zZm9ybSkge1xuICAgICAgICBpZiAodHJhbnNmb3JtLmlzRGlydHkoKSB8fCB0cmFuc2Zvcm0uaXNMb2NhbERpcnR5KCkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRNZXNoQUFCQkRpcnR5KF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KSk7XG5cbiAgICAgICAgICB0cmFuc2Zvcm0udXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuSGllcmFyY2h5VXBkYXRlU3lzdGVtKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaGllcmFyY2h5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgcGFyZW50Q29tcG9uZW50KSB7XG4gICAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IF90aGlzMi50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICB2YXIgdHJhbnNmb3JtUGFyZW50ID0gX3RoaXMyLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShwYXJlbnRDb21wb25lbnQucGFyZW50SUQpO1xuXG4gICAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCAhPT0gbnVsbCAmJiB0cmFuc2Zvcm1QYXJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1DaGlsZC51cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50KHRyYW5zZm9ybVBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKGVudGl0eSwgcGFyZW50LCBpc0NoaWxkQWxyZWFkeUluTG9jYWxTcGFjZSkge1xuICAgICAgaWYgKHRoaXMuaGllcmFyY2h5LmNvbnRhaW5zKGVudGl0eSkpIHtcbiAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWVyYXJjaHkuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBwYXJlbnRJRDogcGFyZW50XG4gICAgICB9KTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7IC8vIGluZm9ybSBwYXJlbnQgbWVzaCB0byB1cGRhdGUgaXRzIGFhYmJcblxuICAgICAgdGhpcy5zZXRNZXNoQUFCQkRpcnR5KG1lc2gpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KSA9PT0gLTEpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbi5wdXNoKGVudGl0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhpZXJhcmNoeS5nZXRDb3VudCgpID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q291bnQoKSAtIDE7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgICB2YXIgcGFyZW50Q2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0RW50aXR5KGkpOyAvLyBjb25zdCBwYXJlbnRDYW5kaWRhdGVDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnQoaSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGk7ICsraikge1xuICAgICAgICAgICAgdmFyIGNoaWxkQ2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGopO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGRDYW5kaWRhdGVFbnRpdHkucGFyZW50SUQgPT09IHBhcmVudENhbmRpZGF0ZUVudGl0eSkge1xuICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeS5tb3ZlSXRlbShpLCBqKTtcbiAgICAgICAgICAgICAgKytpOyAvLyBuZXh0IG91dGVyIGl0ZXJhdGlvbiB3aWxsIGNoZWNrIHRoZSBzYW1lIGluZGV4IGFnYWluIGFzIHBhcmVudCBjYW5kaWRhdGUsIGhvd2V2ZXIgdGhpbmdzIHdlcmUgbW92ZWQgdXB3YXJkcywgc28gaXQgd2lsbCBiZSBhIGRpZmZlcmVudCBlbnRpdHkhXG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIFJlLXF1ZXJ5IHBhcmVudCBhZnRlciBwb3RlbnRpYWwgTW92ZUl0ZW0oKSwgYmVjYXVzZSBpdCBpbnZhbGlkYXRlcyByZWZlcmVuY2VzOlxuXG5cbiAgICAgIHZhciBwYXJlbnRjb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgdmFyIHRyYW5zZm9ybVBhcmVudCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1QYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uY3JlYXRlKHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCA9PT0gbnVsbCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpOyAvLyBhZnRlciB0cmFuc2Zvcm1zLkNyZWF0ZSgpLCB0cmFuc2Zvcm1fcGFyZW50IHBvaW50ZXIgY291bGQgaGF2ZSBiZWNvbWUgaW52YWxpZGF0ZWQhXG5cbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtQ2hpbGQucGFyZW50ID0gdHJhbnNmb3JtUGFyZW50O1xuXG4gICAgICBpZiAoIWlzQ2hpbGRBbHJlYWR5SW5Mb2NhbFNwYWNlICYmIHRyYW5zZm9ybVBhcmVudCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZC5tYXRyaXhUcmFuc2Zvcm0obWF0NC5pbnZlcnQobWF0NC5jcmVhdGUoKSwgdHJhbnNmb3JtUGFyZW50LndvcmxkVHJhbnNmb3JtKSk7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhbnNmb3JtUGFyZW50KSB7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQodHJhbnNmb3JtUGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaChlbnRpdHkpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgaWYgKHNlbGYgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybS5wYXJlbnQgPSBudWxsO1xuICAgICAgICAgIHRyYW5zZm9ybS5hcHBseVRyYW5zZm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaHkucmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpOyAvLyBpbmZvcm0gcGFyZW50IG1lc2ggdG8gdXBkYXRlIGl0cyBhYWJiXG5cbiAgICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoc2VsZi5wYXJlbnRJRCk7XG5cbiAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KTtcbiAgICAgICAgICBtZXNoLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc2hBQUJCRGlydHkobWVzaCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaENoaWxkcmVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaENoaWxkcmVuKHBhcmVudCkge1xuICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcblxuICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaGllcmFyY2h5LmdldENvdW50KCk7KSB7XG4gICAgICAgIHZhciBfdGhpcyRoaWVyYXJjaHkkZ2V0Q287XG5cbiAgICAgICAgaWYgKCgoX3RoaXMkaGllcmFyY2h5JGdldENvID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGkpKSA9PT0gbnVsbCB8fCBfdGhpcyRoaWVyYXJjaHkkZ2V0Q28gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGhpZXJhcmNoeSRnZXRDby5wYXJlbnRJRCkgPT09IHBhcmVudCkge1xuICAgICAgICAgIHZhciBlbnRpdHkgPSB0aGlzLmhpZXJhcmNoeS5nZXRFbnRpdHkoaSk7XG4gICAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICArK2k7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWVzaEFBQkJEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNZXNoQUFCQkRpcnR5KG1lc2gpIHtcbiAgICAgIGlmIChtZXNoKSB7XG4gICAgICAgIG1lc2guYWFiYkRpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2NlbmVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0cmFuc2Zvcm1cIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js ***!
\*****************************************************************************************/
/*! exports provided: TransformComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return TransformComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar TransformComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(TransformComponent, _Component);\n\n var _super = _createSuper(TransformComponent);\n\n /**\n * local space RTS\n */\n\n /**\n * XMFLOAT4X4._41\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmfloat4x4-xmfloat4x4(constfloat)#remarks\n */\n\n /**\n * world space RTS\n */\n // 高阶函数,利用闭包重复利用临时变量\n // @see playcanvas graph node\n\n /**\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmquaternionrotationrollpitchyaw\n */\n\n /**\n * @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n */\n\n /**\n * TODO: 支持以下两种:\n * * translate(x, y, z)\n * * translate(vec3(x, y, z))\n */\n\n /**\n * @see https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline\n */\n // public catmullRom = (() => {\n // const aS = vec3.create();\n // const aR = quat.create();\n // const aT = vec3.create();\n // const bS = vec3.create();\n // const bR = quat.create();\n // const bT = vec3.create();\n // const cS = vec3.create();\n // const cR = quat.create();\n // const cT = vec3.create();\n // const dS = vec3.create();\n // const dR = quat.create();\n // const dT = vec3.create();\n // const R = quat.create();\n // return (\n // a: TransformComponent,\n // b: TransformComponent,\n // c: TransformComponent,\n // d: TransformComponent,\n // t: number,\n // ) => {\n // this.setDirty();\n // mat4.getScaling(aS, a.worldTransform);\n // mat4.getTranslation(aT, a.worldTransform);\n // mat4.getRotation(aR, a.worldTransform);\n // mat4.getScaling(bS, b.worldTransform);\n // mat4.getTranslation(bT, b.worldTransform);\n // mat4.getRotation(bR, b.worldTransform);\n // mat4.getScaling(cS, c.worldTransform);\n // mat4.getTranslation(cT, c.worldTransform);\n // mat4.getRotation(cR, c.worldTransform);\n // mat4.getScaling(dS, d.worldTransform);\n // mat4.getTranslation(dT, d.worldTransform);\n // mat4.getRotation(dR, d.worldTransform);\n // vec3.catmullRom(this.localPosition, aT, bT, cT, dT, t);\n // vec3.catmullRom(R, aR, bR, cR, dR, t);\n // quat.normalize(this.localRotation, R);\n // vec3.catmullRom(this.localScale, aS, bS, cS, dS, t);\n // };\n // })();\n function TransformComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TransformComponent);\n\n _this = _super.call(this, data);\n _this.dirtyFlag = void 0;\n _this.localDirtyFlag = void 0;\n _this.parent = null;\n _this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.localTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n _this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.scaling = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.worldTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n\n _this.matrixTransform = function () {\n var transformed = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (mat) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(transformed, _this.getLocalTransform(), mat);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(_this.localScale, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(_this.localPosition, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(_this.localRotation, transformed);\n };\n }();\n\n _this.rotateRollPitchYaw = function () {\n var quatX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (x, y, z) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatX, x, 0, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatY, 0, y, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatZ, 0, 0, z);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatX, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quatY);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatZ, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n };\n }();\n\n _this.lerp = function () {\n var aS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var aR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var aT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var bT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (a, b, t) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(aS, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(aT, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(aR, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(bS, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(bT, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(bR, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localScale, aS, bS, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].slerp(_this.localRotation, aR, bR, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localPosition, aT, bT, t);\n };\n }();\n\n _this.translate = function () {\n var tr = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(tr, _this.getPosition(), translation);\n\n _this.setPosition(tr);\n\n _this.setDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.translateLocal = function () {\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformQuat(translation, translation, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(_this.localPosition, _this.localPosition, translation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setPosition = function () {\n var parentInvertMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (position) {\n _this.position = position;\n\n _this.setLocalDirty(true);\n\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(_this.localPosition, position);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(parentInvertMatrix, _this.parent.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(parentInvertMatrix, parentInvertMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(_this.localPosition, position, parentInvertMatrix);\n }\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotate = function () {\n var parentInvertRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (quaternion) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n } else {\n var rot = _this.getRotation();\n\n var parentRot = _this.parent.getRotation();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(parentInvertRotation, parentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(parentInvertRotation, parentInvertRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(parentInvertRotation, parentInvertRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quaternion, rot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n }\n\n _this.setLocalDirty();\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotateLocal = function () {\n return function (quaternion) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setRotation = function () {\n var invParentRot = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (rotation) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, rotation);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(invParentRot, _this.parent.getRotation());\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(invParentRot, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].mul(_this.localRotation, _this.localRotation, rotation);\n }\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TransformComponent, [{\n key: \"setLocalPosition\",\n value: function setLocalPosition(position) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localPosition, position);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalScale\",\n value: function setLocalScale(scale) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localScale, scale);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalRotation\",\n value: function setLocalRotation(rotation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(this.localRotation, rotation);\n this.setLocalDirty(true);\n return this;\n }\n }, {\n key: \"isDirty\",\n value: function isDirty() {\n return this.dirtyFlag;\n }\n }, {\n key: \"setDirty\",\n value: function setDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.dirtyFlag |= TransformComponent.DIRTY;\n } else {\n this.dirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"isLocalDirty\",\n value: function isLocalDirty() {\n return this.localDirtyFlag;\n }\n }, {\n key: \"setLocalDirty\",\n value: function setLocalDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.localDirtyFlag |= TransformComponent.DIRTY;\n this.setDirty(true);\n } else {\n this.localDirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"updateTransform\",\n value: function updateTransform() {\n if (this.isLocalDirty()) {\n this.getLocalTransform();\n }\n\n if (this.isDirty()) {\n if (this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(this.worldTransform, this.getLocalTransform());\n this.setDirty(false);\n }\n }\n }\n }, {\n key: \"updateTransformWithParent\",\n value: function updateTransformWithParent(parent) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.worldTransform, parent.worldTransform, this.getLocalTransform());\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform() {\n this.setDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.localScale, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.localPosition, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.localRotation, this.worldTransform);\n }\n }, {\n key: \"clearTransform\",\n value: function clearTransform() {\n this.setDirty();\n this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n }\n }, {\n key: \"scaleLocal\",\n value: function scaleLocal(scaling) {\n this.setLocalDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].multiply(this.localScale, this.localScale, scaling);\n return this;\n }\n }, {\n key: \"getLocalPosition\",\n value: function getLocalPosition() {\n return this.localPosition;\n }\n }, {\n key: \"getLocalRotation\",\n value: function getLocalRotation() {\n return this.localRotation;\n }\n }, {\n key: \"getLocalScale\",\n value: function getLocalScale() {\n return this.localScale;\n }\n }, {\n key: \"getLocalTransform\",\n value: function getLocalTransform() {\n if (this.localDirtyFlag) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromRotationTranslationScale(this.localTransform, this.localRotation, this.localPosition, this.localScale);\n this.setLocalDirty(false);\n }\n\n return this.localTransform;\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n if (!this.isLocalDirty() && !this.isDirty()) {\n return this.worldTransform;\n }\n\n if (this.parent) {\n this.parent.getWorldTransform();\n }\n\n this.updateTransform();\n return this.worldTransform;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.position, this.worldTransform);\n return this.position;\n }\n }, {\n key: \"getRotation\",\n value: function getRotation() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.rotation, this.worldTransform);\n return this.rotation;\n }\n }, {\n key: \"getScale\",\n value: function getScale() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.scaling, this.worldTransform);\n return this.scaling;\n }\n }]);\n\n return TransformComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_7__[\"Component\"]);\nTransformComponent.DIRTY = 1 << 0;\n//# sourceMappingURL=TransformComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50LmpzPzE5Y2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFclI7QUFDTTtBQUM1QztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhDQUFJO0FBQzlCLDBCQUEwQiw4Q0FBSTtBQUM5Qix1QkFBdUIsOENBQUk7QUFDM0IsMkJBQTJCLDhDQUFJO0FBQy9CLHFCQUFxQiw4Q0FBSTtBQUN6QixxQkFBcUIsOENBQUk7QUFDekIsb0JBQW9CLDhDQUFJO0FBQ3hCLDJCQUEyQiw4Q0FBSTs7QUFFL0I7QUFDQSx3QkFBd0IsOENBQUk7QUFDNUI7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0Esa0JBQWtCLDhDQUFJO0FBQ3RCLGtCQUFrQiw4Q0FBSTtBQUN0QixrQkFBa0IsOENBQUk7QUFDdEI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkIsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxlQUFlLDhDQUFJO0FBQ25CO0FBQ0EsUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQTs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJOztBQUVaOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLCtCQUErQiw4Q0FBSTtBQUNuQztBQUNBOztBQUVBOztBQUVBO0FBQ0EsVUFBVSw4Q0FBSTtBQUNkLFNBQVM7QUFDVCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZDs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQ0FBaUMsOENBQUk7QUFDckM7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsU0FBUztBQUNUOztBQUVBOztBQUVBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2Q7O0FBRUE7O0FBRUEsZUFBZSxtRkFBc0I7QUFDckM7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSx5QkFBeUIsOENBQUk7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxTQUFTO0FBQ1QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkOztBQUVBOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLDhDQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsOENBQUk7QUFDL0IsMkJBQTJCLDhDQUFJO0FBQy9CLHdCQUF3Qiw4Q0FBSTtBQUM1QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBtYXQ0LCBxdWF0LCB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBUcmFuc2Zvcm1Db21wb25lbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYW5zZm9ybUNvbXBvbmVudCwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUcmFuc2Zvcm1Db21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBsb2NhbCBzcGFjZSBSVFNcbiAgICovXG5cbiAgLyoqXG4gICAqIFhNRkxPQVQ0WDQuXzQxXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1mbG9hdDR4NC14bWZsb2F0NHg0KGNvbnN0ZmxvYXQpI3JlbWFya3NcbiAgICovXG5cbiAgLyoqXG4gICAqIHdvcmxkIHNwYWNlIFJUU1xuICAgKi9cbiAgLy8g6auY6Zi25Ye95pWw77yM5Yip55So6Zet5YyF6YeN5aSN5Yip55So5Li05pe25Y+Y6YePXG4gIC8vIEBzZWUgcGxheWNhbnZhcyBncmFwaCBub2RlXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1xdWF0ZXJuaW9ucm90YXRpb25yb2xscGl0Y2h5YXdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly94aWFvaXZlci5naXRodWIuaW8vY29kaW5nLzIwMTgvMTIvMjgvQ2FtZXJhLSVFOCVBRSVCRSVFOCVBRSVBMS0lRTQlQjglODAuaHRtbFxuICAgKi9cblxuICAvKipcbiAgICogVE9ETzog5pSv5oyB5Lul5LiL5Lik56eN77yaXG4gICAqICogdHJhbnNsYXRlKHgsIHksIHopXG4gICAqICogdHJhbnNsYXRlKHZlYzMoeCwgeSwgeikpXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NlbnRyaXBldGFsX0NhdG11bGwlRTIlODAlOTNSb21fc3BsaW5lXG4gICAqL1xuICAvLyBwdWJsaWMgY2F0bXVsbFJvbSA9ICgoKSA9PiB7XG4gIC8vICAgY29uc3QgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgY1MgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGNSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBjVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgZFMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGRSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBkVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgUiA9IHF1YXQuY3JlYXRlKCk7XG4gIC8vICAgcmV0dXJuIChcbiAgLy8gICAgIGE6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGI6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGM6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGQ6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIHQ6IG51bWJlcixcbiAgLy8gICApID0+IHtcbiAgLy8gICAgIHRoaXMuc2V0RGlydHkoKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhhUywgYS53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oYVIsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRTY2FsaW5nKGJTLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRSb3RhdGlvbihiUiwgYi53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFNjYWxpbmcoY1MsIGMud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRUcmFuc2xhdGlvbihjVCwgYy53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFJvdGF0aW9uKGNSLCBjLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhkUywgZC53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGRULCBkLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oZFIsIGQud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKHRoaXMubG9jYWxQb3NpdGlvbiwgYVQsIGJULCBjVCwgZFQsIHQpO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKFIsIGFSLCBiUiwgY1IsIGRSLCB0KTtcbiAgLy8gICAgIHF1YXQubm9ybWFsaXplKHRoaXMubG9jYWxSb3RhdGlvbiwgUik7XG4gIC8vICAgICB2ZWMzLmNhdG11bGxSb20odGhpcy5sb2NhbFNjYWxlLCBhUywgYlMsIGNTLCBkUywgdCk7XG4gIC8vICAgfTtcbiAgLy8gfSkoKTtcbiAgZnVuY3Rpb24gVHJhbnNmb3JtQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNmb3JtQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLmxvY2FsRGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLnBhcmVudCA9IG51bGw7XG4gICAgX3RoaXMubG9jYWxQb3NpdGlvbiA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAwKTtcbiAgICBfdGhpcy5sb2NhbFJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMubG9jYWxUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuICAgIF90aGlzLnBvc2l0aW9uID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApO1xuICAgIF90aGlzLnJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLnNjYWxpbmcgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMud29ybGRUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuXG4gICAgX3RoaXMubWF0cml4VHJhbnNmb3JtID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRyYW5zZm9ybWVkID0gbWF0NC5jcmVhdGUoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAobWF0KSB7XG4gICAgICAgIG1hdDQubXVsdGlwbHkodHJhbnNmb3JtZWQsIF90aGlzLmdldExvY2FsVHJhbnNmb3JtKCksIG1hdCk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhfdGhpcy5sb2NhbFNjYWxlLCB0cmFuc2Zvcm1lZCk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oX3RoaXMubG9jYWxQb3NpdGlvbiwgdHJhbnNmb3JtZWQpO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKF90aGlzLmxvY2FsUm90YXRpb24sIHRyYW5zZm9ybWVkKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlUm9sbFBpdGNoWWF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHF1YXRYID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBxdWF0WSA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICB2YXIgcXVhdFogPSBxdWF0LmNyZWF0ZSgpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIF90aGlzLnNldERpcnR5KCk7XG5cbiAgICAgICAgcXVhdC5mcm9tRXVsZXIocXVhdFgsIHgsIDAsIDApO1xuICAgICAgICBxdWF0LmZyb21FdWxlcihxdWF0WSwgMCwgeSwgMCk7XG4gICAgICAgIHF1YXQuZnJvbUV1bGVyKHF1YXRaLCAwLCAwLCB6KTtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0WCwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdFkpO1xuICAgICAgICBxdWF0Lm11bHRpcGx5KF90aGlzLmxvY2FsUm90YXRpb24sIHF1YXRaLCBfdGhpcy5sb2NhbFJvdGF0aW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLmxlcnAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICB2YXIgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIHQpIHtcbiAgICAgICAgX3RoaXMuc2V0RGlydHkoKTtcblxuICAgICAgICBtYXQ0LmdldFNjYWxpbmcoYVMsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgbWF0NC5nZXRSb3RhdGlvbihhUiwgYS53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhiUywgYi53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKGJSLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsU2NhbGUsIGFTLCBiUywgdCk7XG4gICAgICAgIHF1YXQuc2xlcnAoX3RoaXMubG9jYWxSb3RhdGlvbiwgYVIsIGJSLCB0KTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsUG9zaXRpb24sIGFULCBiVCwgdCk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0ciA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMuYWRkKHRyLCBfdGhpcy5nZXRQb3NpdGlvbigpLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0UG9zaXRpb24odHIpO1xuXG4gICAgICAgIF90aGlzLnNldERpcnR5KHRydWUpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMudHJhbnNsYXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMudHJhbnNmb3JtUXVhdCh0cmFuc2xhdGlvbiwgdHJhbnNsYXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB2ZWMzLmFkZChfdGhpcy5sb2NhbFBvc2l0aW9uLCBfdGhpcy5sb2NhbFBvc2l0aW9uLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcmVudEludmVydE1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBvc2l0aW9uKSB7XG4gICAgICAgIF90aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICBpZiAoX3RoaXMucGFyZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgdmVjMy5jb3B5KF90aGlzLmxvY2FsUG9zaXRpb24sIHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXQ0LmNvcHkocGFyZW50SW52ZXJ0TWF0cml4LCBfdGhpcy5wYXJlbnQud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICAgIG1hdDQuaW52ZXJ0KHBhcmVudEludmVydE1hdHJpeCwgcGFyZW50SW52ZXJ0TWF0cml4KTtcbiAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDQoX3RoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24sIHBhcmVudEludmVydE1hdHJpeCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnJvdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJlbnRJbnZlcnRSb3RhdGlvbiA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgaWYgKF90aGlzLnBhcmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHJvdCA9IF90aGlzLmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICB2YXIgcGFyZW50Um90ID0gX3RoaXMucGFyZW50LmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICBxdWF0LmNvcHkocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5pbnZlcnQocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudEludmVydFJvdGF0aW9uKTtcbiAgICAgICAgICBxdWF0Lm11bHRpcGx5KHBhcmVudEludmVydFJvdGF0aW9uLCBwYXJlbnRJbnZlcnRSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uLCByb3QpO1xuICAgICAgICAgIHF1YXQubm9ybWFsaXplKF90aGlzLmxvY2FsUm90YXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSgpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFJvdGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGludlBhcmVudFJvdCA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHJvdGF0aW9uKSB7XG4gICAgICAgIGlmIChfdGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBxdWF0LmNvcHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1YXQuY29weShpbnZQYXJlbnRSb3QsIF90aGlzLnBhcmVudC5nZXRSb3RhdGlvbigpKTtcbiAgICAgICAgICBxdWF0LmludmVydChpbnZQYXJlbnRSb3QsIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5jb3B5KF90aGlzLmxvY2FsUm90YXRpb24sIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5tdWwoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2Zvcm1Db21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TG9jYWxQb3NpdGlvbihwb3NpdGlvbikge1xuICAgICAgdmVjMy5jb3B5KHRoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24pO1xuICAgICAgdGhpcy5zZXRMb2NhbERpcnR5KHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMb2NhbFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExvY2FsU2NhbGUoc2NhbGUpIHtcbiAgICAgIHZlYzMuY29weSh0aGlzLmxvY2FsU2NhbGUsIHNjYWxlKTtcbiAgICAgIHRoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxSb3RhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbFJvdGF0aW9uKHJvdGF0aW9uKSB7XG4gICAgICBxdWF0LmNvcHkodGhpcy5sb2NhbFJvdGF0aW9uLCByb3RhdGlvbik7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkodHJ1ZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0RpcnR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlydHlGbGFnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXJ0eSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnIHw9IFRyYW5zZm9ybUNvbXBvbmVudC5ESVJUWTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzTG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvY2FsRGlydHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbERpcnR5RmxhZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbERpcnR5KCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0cnVlO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5sb2NhbERpcnR5RmxhZyB8PSBUcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICAgIHRoaXMuc2V0RGlydHkodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvY2FsRGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVRyYW5zZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAodGhpcy5pc0xvY2FsRGlydHkoKSkge1xuICAgICAgICB0aGlzLmdldExvY2FsVHJhbnNmb3JtKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzRGlydHkoKSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBtYXQ0LmNvcHkodGhpcy53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICAgICAgICB0aGlzLnNldERpcnR5KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQocGFyZW50KSB7XG4gICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMud29ybGRUcmFuc2Zvcm0sIHBhcmVudC53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYXBwbHlUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICBtYXQ0LmdldFNjYWxpbmcodGhpcy5sb2NhbFNjYWxlLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0Um90YXRpb24odGhpcy5sb2NhbFJvdGF0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXJUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICB0aGlzLmxvY2FsUG9zaXRpb24gPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgICB0aGlzLmxvY2FsUm90YXRpb24gPSBxdWF0LmZyb21WYWx1ZXMoMCwgMCwgMCwgMSk7XG4gICAgICB0aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNjYWxlTG9jYWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2NhbGVMb2NhbChzY2FsaW5nKSB7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkoKTtcbiAgICAgIHZlYzMubXVsdGlwbHkodGhpcy5sb2NhbFNjYWxlLCB0aGlzLmxvY2FsU2NhbGUsIHNjYWxpbmcpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUG9zaXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUm90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxSb3RhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsU2NhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxTY2FsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2NhbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsVHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvY2FsVHJhbnNmb3JtKCkge1xuICAgICAgaWYgKHRoaXMubG9jYWxEaXJ0eUZsYWcpIHtcbiAgICAgICAgbWF0NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlKHRoaXMubG9jYWxUcmFuc2Zvcm0sIHRoaXMubG9jYWxSb3RhdGlvbiwgdGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLmxvY2FsU2NhbGUpO1xuICAgICAgICB0aGlzLnNldExvY2FsRGlydHkoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbFRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0V29ybGRUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V29ybGRUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAoIXRoaXMuaXNMb2NhbERpcnR5KCkgJiYgIXRoaXMuaXNEaXJ0eSgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuZ2V0V29ybGRUcmFuc2Zvcm0oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5wb3NpdGlvbiwgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Um90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Um90YXRpb24oKSB7XG4gICAgICBtYXQ0LmdldFJvdGF0aW9uKHRoaXMucm90YXRpb24sIHRoaXMud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgcmV0dXJuIHRoaXMucm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjYWxlKCkge1xuICAgICAgbWF0NC5nZXRTY2FsaW5nKHRoaXMuc2NhbGluZywgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5zY2FsaW5nO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2Zvcm1Db21wb25lbnQ7XG59KENvbXBvbmVudCk7XG5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFkgPSAxIDw8IDA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmFuc2Zvcm1Db21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/identifier.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/identifier.js ***!
\***********************************************************/
/*! exports provided: IDENTIFIER */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return IDENTIFIER; });\nvar IDENTIFIER = {\n // SceneGraph\n HierarchyComponentManager: Symbol('HierarchyComponentManager'),\n TransformComponentManager: Symbol('TransformComponentManager'),\n NameComponentManager: Symbol('NameComponentManager'),\n SceneGraphSystem: Symbol('SceneGraphSystem'),\n // FrameGraph\n FrameGraphSystem: Symbol('FrameGraphSystem'),\n ResourcePool: Symbol('ResourcePool'),\n ResourceHandleComponentManager: Symbol('ResourceHandleComponentManager'),\n PassNodeComponentManager: Symbol('PassNodeComponentManager'),\n // Renderer\n RendererSystem: Symbol('RendererSystem'),\n RenderPass: Symbol('RenderPass'),\n RenderPassFactory: Symbol('Factory'),\n Renderable: Symbol('Factory'),\n // Mesh\n MeshSystem: Symbol('MeshSystem'),\n MeshComponentManager: Symbol('MeshComponentManager'),\n CullableComponentManager: Symbol('CullableComponentManager'),\n // Geometry\n Geometry: Symbol('Geometry'),\n GeometrySystem: Symbol('GeometrySystem'),\n GeometryComponentManager: Symbol('GeometryComponentManager'),\n // Material\n Material: Symbol('Material'),\n MaterialSystem: Symbol('MaterialSystem'),\n MaterialComponentManager: Symbol('MaterialComponentManager'),\n // RenderPath\n ForwardRenderPath: Symbol('ForwardRenderPath'),\n // ComputeSystem\n ComputeSystem: Symbol('ComputeSystem'),\n ComputeComponentManager: Symbol('ComputeComponentManager'),\n ComputeStrategy: Symbol('ComputeStrategy'),\n Systems: Symbol('Systems'),\n World: Symbol('World'),\n // RenderEngine\n RenderEngine: Symbol('RenderEngine'),\n WebGPUEngine: Symbol('WebGPUEngine'),\n WebGLEngine: Symbol('WebGLEngine'),\n // Shader Module\n ShaderModuleService: Symbol('ShaderModuleService'),\n ConfigService: Symbol('ConfigService'),\n InteractorService: Symbol('InteractorService'),\n IEventEmitter: Symbol('IEventEmitter'),\n // Light\n Light: Symbol('Light')\n};\n//# sourceMappingURL=identifier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pZGVudGlmaWVyLmpzP2ZhZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvaWRlbnRpZmllci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgSURFTlRJRklFUiA9IHtcbiAgLy8gU2NlbmVHcmFwaFxuICBIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0hpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdUcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyJyksXG4gIE5hbWVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ05hbWVDb21wb25lbnRNYW5hZ2VyJyksXG4gIFNjZW5lR3JhcGhTeXN0ZW06IFN5bWJvbCgnU2NlbmVHcmFwaFN5c3RlbScpLFxuICAvLyBGcmFtZUdyYXBoXG4gIEZyYW1lR3JhcGhTeXN0ZW06IFN5bWJvbCgnRnJhbWVHcmFwaFN5c3RlbScpLFxuICBSZXNvdXJjZVBvb2w6IFN5bWJvbCgnUmVzb3VyY2VQb29sJyksXG4gIFJlc291cmNlSGFuZGxlQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdSZXNvdXJjZUhhbmRsZUNvbXBvbmVudE1hbmFnZXInKSxcbiAgUGFzc05vZGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ1Bhc3NOb2RlQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJlclxuICBSZW5kZXJlclN5c3RlbTogU3ltYm9sKCdSZW5kZXJlclN5c3RlbScpLFxuICBSZW5kZXJQYXNzOiBTeW1ib2woJ1JlbmRlclBhc3MnKSxcbiAgUmVuZGVyUGFzc0ZhY3Rvcnk6IFN5bWJvbCgnRmFjdG9yeTxJUmVuZGVyUGFzcz4nKSxcbiAgUmVuZGVyYWJsZTogU3ltYm9sKCdGYWN0b3J5PElSZW5kZXJQYXNzPicpLFxuICAvLyBNZXNoXG4gIE1lc2hTeXN0ZW06IFN5bWJvbCgnTWVzaFN5c3RlbScpLFxuICBNZXNoQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdNZXNoQ29tcG9uZW50TWFuYWdlcicpLFxuICBDdWxsYWJsZUNvbXBvbmVudE1hbmFnZXI6IFN5bWJvbCgnQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIC8vIEdlb21ldHJ5XG4gIEdlb21ldHJ5OiBTeW1ib2woJ0dlb21ldHJ5JyksXG4gIEdlb21ldHJ5U3lzdGVtOiBTeW1ib2woJ0dlb21ldHJ5U3lzdGVtJyksXG4gIEdlb21ldHJ5Q29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdHZW9tZXRyeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgLy8gTWF0ZXJpYWxcbiAgTWF0ZXJpYWw6IFN5bWJvbCgnTWF0ZXJpYWwnKSxcbiAgTWF0ZXJpYWxTeXN0ZW06IFN5bWJvbCgnTWF0ZXJpYWxTeXN0ZW0nKSxcbiAgTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ01hdGVyaWFsQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJQYXRoXG4gIEZvcndhcmRSZW5kZXJQYXRoOiBTeW1ib2woJ0ZvcndhcmRSZW5kZXJQYXRoJyksXG4gIC8vIENvbXB1dGVTeXN0ZW1cbiAgQ29tcHV0ZVN5c3RlbTogU3ltYm9sKCdDb21wdXRlU3lzdGVtJyksXG4gIENvbXB1dGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0NvbXB1dGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIENvbXB1dGVTdHJhdGVneTogU3ltYm9sKCdDb21wdXRlU3RyYXRlZ3knKSxcbiAgU3lzdGVtczogU3ltYm9sKCdTeXN0ZW1zJyksXG4gIFdvcmxkOiBTeW1ib2woJ1dvcmxkJyksXG4gIC8vIFJlbmRlckVuZ2luZVxuICBSZW5kZXJFbmdpbmU6IFN5bWJvbCgnUmVuZGVyRW5naW5lJyksXG4gIFdlYkdQVUVuZ2luZTogU3ltYm9sKCdXZWJHUFVFbmdpbmUnKSxcbiAgV2ViR0xFbmdpbmU6IFN5bWJvbCgnV2ViR0xFbmdpbmUnKSxcbiAgLy8gU2hhZGVyIE1vZHVsZVxuICBTaGFkZXJNb2R1bGVTZXJ2aWNlOiBTeW1ib2woJ1NoYWRlck1vZHVsZVNlcnZpY2UnKSxcbiAgQ29uZmlnU2VydmljZTogU3ltYm9sKCdDb25maWdTZXJ2aWNlJyksXG4gIEludGVyYWN0b3JTZXJ2aWNlOiBTeW1ib2woJ0ludGVyYWN0b3JTZXJ2aWNlJyksXG4gIElFdmVudEVtaXR0ZXI6IFN5bWJvbCgnSUV2ZW50RW1pdHRlcicpLFxuICAvLyBMaWdodFxuICBMaWdodDogU3ltYm9sKCdMaWdodCcpXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRlbnRpZmllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/identifier.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/index.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/index.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_TOKEN_TYPES\", function() { return AST_TOKEN_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_NODE_TYPES\", function() { return AST_NODE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STORAGE_CLASS\", function() { return STORAGE_CLASS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Target\", function() { return Target; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DefineValuePlaceholder\", function() { return DefineValuePlaceholder; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"ComponentManager\"]; });\n\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__[\"FrameGraphSystem\"]; });\n\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__[\"GeometryComponent\"]; });\n\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__[\"GeometrySystem\"]; });\n\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__[\"MaterialComponent\"]; });\n\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return _components_material_System__WEBPACK_IMPORTED_MODULE_6__[\"MaterialSystem\"]; });\n\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__[\"CullableComponent\"]; });\n\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__[\"MeshComponent\"]; });\n\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__[\"MeshSystem\"]; });\n\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"]; });\n\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__[\"RendererSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__[\"HierarchyComponent\"]; });\n\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__[\"SceneGraphSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__[\"TransformComponent\"]; });\n\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Entity */ \"./node_modules/@antv/g-webgpu-core/es/Entity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return _Entity__WEBPACK_IMPORTED_MODULE_15__[\"createEntity\"]; });\n\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return _identifier__WEBPACK_IMPORTED_MODULE_16__[\"IDENTIFIER\"]; });\n\n/* harmony import */ var _inversify_config__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./inversify.config */ \"./node_modules/@antv/g-webgpu-core/es/inversify.config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"container\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"createWorldContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyInject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyMultiInject\"]; });\n\n/* harmony import */ var _utils_aabb__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/aabb */ \"./node_modules/@antv/g-webgpu-core/es/utils/aabb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return _utils_aabb__WEBPACK_IMPORTED_MODULE_18__[\"generateAABBFromVertices\"]; });\n\n/* harmony import */ var _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/isSafari */ \"./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__[\"isSafari\"]; });\n\n/* empty/unused harmony star reexport *//* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./services */ \"./node_modules/@antv/g-webgpu-core/es/services/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"ConfigService\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"InteractorService\"]; });\n\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-webgpu-core/es/shape/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"AABB\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"BoundingSphere\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Frustum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Plane\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Ray\"]; });\n\n/* harmony import */ var _components_renderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/renderer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/material/interface */ \"./node_modules/@antv/g-webgpu-core/es/components/material/interface.js\");\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_components_material_interface__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_material_interface__WEBPACK_IMPORTED_MODULE_23__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_material_interface__WEBPACK_IMPORTED_MODULE_23__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/mesh/interface */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js\");\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n// tslint:disable-next-line:no-reference\n/// \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * inspired by Entitas' Systems\n * @see https://github.com/sschmid/Entitas-CSharp/wiki/Systems\n */\n\nvar AST_TOKEN_TYPES;\n\n(function (AST_TOKEN_TYPES) {\n AST_TOKEN_TYPES[\"Void\"] = \"Void\";\n AST_TOKEN_TYPES[\"Boolean\"] = \"Boolean\";\n AST_TOKEN_TYPES[\"Float\"] = \"Float\";\n AST_TOKEN_TYPES[\"Uint32\"] = \"Uint32\";\n AST_TOKEN_TYPES[\"Int32\"] = \"Int32\";\n AST_TOKEN_TYPES[\"Vector\"] = \"Vector\";\n AST_TOKEN_TYPES[\"Vector2Float\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Float\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Float\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Boolean\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Boolean\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Boolean\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Uint\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Uint\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Uint\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Int\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Int\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Int\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Matrix\"] = \"Matrix\";\n AST_TOKEN_TYPES[\"Matrix3x3Float\"] = \"mat3x3\";\n AST_TOKEN_TYPES[\"Matrix4x4Float\"] = \"mat4x4\";\n AST_TOKEN_TYPES[\"Struct\"] = \"Struct\";\n AST_TOKEN_TYPES[\"FloatArray\"] = \"Float[]\";\n AST_TOKEN_TYPES[\"Vector4FloatArray\"] = \"vec4[]\";\n})(AST_TOKEN_TYPES || (AST_TOKEN_TYPES = {}));\n\nvar AST_NODE_TYPES;\n\n(function (AST_NODE_TYPES) {\n AST_NODE_TYPES[\"Program\"] = \"Program\";\n AST_NODE_TYPES[\"Identifier\"] = \"Identifier\";\n AST_NODE_TYPES[\"VariableDeclaration\"] = \"VariableDeclaration\";\n AST_NODE_TYPES[\"BlockStatement\"] = \"BlockStatement\";\n AST_NODE_TYPES[\"ReturnStatement\"] = \"ReturnStatement\";\n AST_NODE_TYPES[\"FunctionDeclaration\"] = \"FunctionDeclaration\";\n AST_NODE_TYPES[\"VariableDeclarator\"] = \"VariableDeclarator\";\n AST_NODE_TYPES[\"AssignmentExpression\"] = \"AssignmentExpression\";\n AST_NODE_TYPES[\"LogicalExpression\"] = \"LogicalExpression\";\n AST_NODE_TYPES[\"BinaryExpression\"] = \"BinaryExpression\";\n AST_NODE_TYPES[\"ArrayExpression\"] = \"ArrayExpression\";\n AST_NODE_TYPES[\"UnaryExpression\"] = \"UnaryExpression\";\n AST_NODE_TYPES[\"UpdateExpression\"] = \"UpdateExpression\";\n AST_NODE_TYPES[\"FunctionExpression\"] = \"FunctionExpression\";\n AST_NODE_TYPES[\"MemberExpression\"] = \"MemberExpression\";\n AST_NODE_TYPES[\"ConditionalExpression\"] = \"ConditionalExpression\";\n AST_NODE_TYPES[\"ExpressionStatement\"] = \"ExpressionStatement\";\n AST_NODE_TYPES[\"CallExpression\"] = \"CallExpression\";\n AST_NODE_TYPES[\"NumThreadStatement\"] = \"NumThreadStatement\";\n AST_NODE_TYPES[\"StorageStatement\"] = \"StorageStatement\";\n AST_NODE_TYPES[\"DoWhileStatement\"] = \"DoWhileStatement\";\n AST_NODE_TYPES[\"WhileStatement\"] = \"WhileStatement\";\n AST_NODE_TYPES[\"ForStatement\"] = \"ForStatement\";\n AST_NODE_TYPES[\"BreakStatement\"] = \"BreakStatement\";\n AST_NODE_TYPES[\"ContinueStatement\"] = \"ContinueStatement\";\n AST_NODE_TYPES[\"IfStatement\"] = \"IfStatement\";\n AST_NODE_TYPES[\"ImportedFunctionStatement\"] = \"ImportedFunctionStatement\";\n})(AST_NODE_TYPES || (AST_NODE_TYPES = {}));\n\nvar STORAGE_CLASS;\n\n(function (STORAGE_CLASS) {\n STORAGE_CLASS[\"Input\"] = \"Input\";\n STORAGE_CLASS[\"Output\"] = \"Output\";\n STORAGE_CLASS[\"Uniform\"] = \"Uniform\";\n STORAGE_CLASS[\"Workgroup\"] = \"Workgroup\";\n STORAGE_CLASS[\"UniformConstant\"] = \"UniformConstant\";\n STORAGE_CLASS[\"Image\"] = \"Image\";\n STORAGE_CLASS[\"StorageBuffer\"] = \"StorageBuffer\";\n STORAGE_CLASS[\"Private\"] = \"Private\";\n STORAGE_CLASS[\"Function\"] = \"Function\";\n})(STORAGE_CLASS || (STORAGE_CLASS = {}));\n\n/**\n * 根据目标平台生成 Shader 代码\n * * WebGL GLSL 1.0\n * * WebGPU Chrome/Edge GLSL 4.5 & WGSL @see https://gpuweb.github.io/gpuweb/wgsl.html\n * * Safari WHLSL (maybe deprecated)\n */\nvar Target;\n\n(function (Target) {\n Target[\"GLSL100\"] = \"GLSL100\";\n Target[\"GLSL450\"] = \"GLSL450\";\n Target[\"WGSL\"] = \"WGSL\";\n})(Target || (Target = {}));\n\nvar DefineValuePlaceholder = '__DefineValuePlaceholder__';\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcz8xYTNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDMEI7QUFDdUM7QUFDQztBQUNVO0FBQ2Q7QUFDYztBQUNkO0FBQ1U7QUFDUjtBQUNWO0FBQzJCO0FBQ25CO0FBQ2tCO0FBQ2Q7QUFDYztBQUN4QztBQUNFO0FBQ3dEO0FBQzFDO0FBQ1o7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDBDQUEwQzs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdDQUF3Qzs7QUFFekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdCQUF3Qjs7QUFFekI7QUFDbUM7QUFDUjtBQUNIO0FBQ2M7QUFDVTtBQUNKO0FBQ047QUFFaVE7QUFDdlMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWZlcmVuY2Vcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2luZGV4LmQudHNcIiAvPlxuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vQ29tcG9uZW50TWFuYWdlcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7XG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9NYXRlcmlhbENvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbFN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ3VsbGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9DdWxsYWJsZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvU3lzdGVtJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyZXJTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtJztcbmltcG9ydCB7IEhpZXJhcmNoeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY2VuZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IFRyYW5zZm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudCc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuL0VudGl0eSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCB9IGZyb20gJy4vaW52ZXJzaWZ5LmNvbmZpZyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMgfSBmcm9tICcuL3V0aWxzL2FhYmInO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuL3V0aWxzL2lzU2FmYXJpJztcbi8qKlxuICogaW5zcGlyZWQgYnkgRW50aXRhcycgU3lzdGVtc1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vc3NjaG1pZC9FbnRpdGFzLUNTaGFycC93aWtpL1N5c3RlbXNcbiAqL1xuXG52YXIgQVNUX1RPS0VOX1RZUEVTO1xuXG4oZnVuY3Rpb24gKEFTVF9UT0tFTl9UWVBFUykge1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWb2lkXCJdID0gXCJWb2lkXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkJvb2xlYW5cIl0gPSBcIkJvb2xlYW5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiRmxvYXRcIl0gPSBcIkZsb2F0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlVpbnQzMlwiXSA9IFwiVWludDMyXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkludDMyXCJdID0gXCJJbnQzMlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3JcIl0gPSBcIlZlY3RvclwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyRmxvYXRcIl0gPSBcInZlYzI8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzRmxvYXRcIl0gPSBcInZlYzM8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0RmxvYXRcIl0gPSBcInZlYzQ8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyQm9vbGVhblwiXSA9IFwidmVjMjxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzQm9vbGVhblwiXSA9IFwidmVjMzxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0Qm9vbGVhblwiXSA9IFwidmVjNDxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyVWludFwiXSA9IFwidmVjMjx1MzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjNVaW50XCJdID0gXCJ2ZWMzPHUzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNFVpbnRcIl0gPSBcInZlYzQ8dTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IySW50XCJdID0gXCJ2ZWMyPGkzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yM0ludFwiXSA9IFwidmVjMzxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjRJbnRcIl0gPSBcInZlYzQ8aTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXhcIl0gPSBcIk1hdHJpeFwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXgzeDNGbG9hdFwiXSA9IFwibWF0M3gzPGYzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiTWF0cml4NHg0RmxvYXRcIl0gPSBcIm1hdDR4NDxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlN0cnVjdFwiXSA9IFwiU3RydWN0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkZsb2F0QXJyYXlcIl0gPSBcIkZsb2F0W11cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNEZsb2F0QXJyYXlcIl0gPSBcInZlYzQ8ZjMyPltdXCI7XG59KShBU1RfVE9LRU5fVFlQRVMgfHwgKEFTVF9UT0tFTl9UWVBFUyA9IHt9KSk7XG5cbnZhciBBU1RfTk9ERV9UWVBFUztcblxuKGZ1bmN0aW9uIChBU1RfTk9ERV9UWVBFUykge1xuICBBU1RfTk9ERV9UWVBFU1tcIlByb2dyYW1cIl0gPSBcIlByb2dyYW1cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJJZGVudGlmaWVyXCJdID0gXCJJZGVudGlmaWVyXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVmFyaWFibGVEZWNsYXJhdGlvblwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkJsb2NrU3RhdGVtZW50XCJdID0gXCJCbG9ja1N0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlJldHVyblN0YXRlbWVudFwiXSA9IFwiUmV0dXJuU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25EZWNsYXJhdGlvblwiXSA9IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlZhcmlhYmxlRGVjbGFyYXRvclwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdG9yXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQXNzaWdubWVudEV4cHJlc3Npb25cIl0gPSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTG9naWNhbEV4cHJlc3Npb25cIl0gPSBcIkxvZ2ljYWxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQmluYXJ5RXhwcmVzc2lvblwiXSA9IFwiQmluYXJ5RXhwcmVzc2lvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkFycmF5RXhwcmVzc2lvblwiXSA9IFwiQXJyYXlFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVW5hcnlFeHByZXNzaW9uXCJdID0gXCJVbmFyeUV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJVcGRhdGVFeHByZXNzaW9uXCJdID0gXCJVcGRhdGVFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25FeHByZXNzaW9uXCJdID0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJNZW1iZXJFeHByZXNzaW9uXCJdID0gXCJNZW1iZXJFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCJdID0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJFeHByZXNzaW9uU3RhdGVtZW50XCJdID0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ2FsbEV4cHJlc3Npb25cIl0gPSBcIkNhbGxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTnVtVGhyZWFkU3RhdGVtZW50XCJdID0gXCJOdW1UaHJlYWRTdGF0ZW1lbnRcIjtcbiAgQVNUX05PREVfVFlQRVNbXCJTdG9yYWdlU3RhdGVtZW50XCJdID0gXCJTdG9yYWdlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRG9XaGlsZVN0YXRlbWVudFwiXSA9IFwiRG9XaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIldoaWxlU3RhdGVtZW50XCJdID0gXCJXaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkZvclN0YXRlbWVudFwiXSA9IFwiRm9yU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQnJlYWtTdGF0ZW1lbnRcIl0gPSBcIkJyZWFrU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29udGludWVTdGF0ZW1lbnRcIl0gPSBcIkNvbnRpbnVlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSWZTdGF0ZW1lbnRcIl0gPSBcIklmU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiXSA9IFwiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiO1xufSkoQVNUX05PREVfVFlQRVMgfHwgKEFTVF9OT0RFX1RZUEVTID0ge30pKTtcblxudmFyIFNUT1JBR0VfQ0xBU1M7XG5cbihmdW5jdGlvbiAoU1RPUkFHRV9DTEFTUykge1xuICBTVE9SQUdFX0NMQVNTW1wiSW5wdXRcIl0gPSBcIklucHV0XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJPdXRwdXRcIl0gPSBcIk91dHB1dFwiO1xuICBTVE9SQUdFX0NMQVNTW1wiVW5pZm9ybVwiXSA9IFwiVW5pZm9ybVwiO1xuICBTVE9SQUdFX0NMQVNTW1wiV29ya2dyb3VwXCJdID0gXCJXb3JrZ3JvdXBcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlVuaWZvcm1Db25zdGFudFwiXSA9IFwiVW5pZm9ybUNvbnN0YW50XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJJbWFnZVwiXSA9IFwiSW1hZ2VcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlN0b3JhZ2VCdWZmZXJcIl0gPSBcIlN0b3JhZ2VCdWZmZXJcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlByaXZhdGVcIl0gPSBcIlByaXZhdGVcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIkZ1bmN0aW9uXCJdID0gXCJGdW5jdGlvblwiO1xufSkoU1RPUkFHRV9DTEFTUyB8fCAoU1RPUkFHRV9DTEFTUyA9IHt9KSk7XG5cbi8qKlxuICog5qC55o2u55uu5qCH5bmz5Y+w55Sf5oiQIFNoYWRlciDku6PnoIFcbiAqICogV2ViR0wgR0xTTCAxLjBcbiAqICogV2ViR1BVIENocm9tZS9FZGdlIEdMU0wgNC41ICYgV0dTTCBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvd2dzbC5odG1sXG4gKiAqIFNhZmFyaSBXSExTTCAobWF5YmUgZGVwcmVjYXRlZClcbiAqL1xudmFyIFRhcmdldDtcblxuKGZ1bmN0aW9uIChUYXJnZXQpIHtcbiAgVGFyZ2V0W1wiR0xTTDEwMFwiXSA9IFwiR0xTTDEwMFwiO1xuICBUYXJnZXRbXCJHTFNMNDUwXCJdID0gXCJHTFNMNDUwXCI7XG4gIFRhcmdldFtcIldHU0xcIl0gPSBcIldHU0xcIjtcbn0pKFRhcmdldCB8fCAoVGFyZ2V0ID0ge30pKTtcblxudmFyIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgPSAnX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX18nO1xuZXhwb3J0ICogZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3JlbmRlcmVyJztcbmV4cG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCwgY3JlYXRlRW50aXR5LCBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIElERU5USUZJRVIsIEZyYW1lR3JhcGhTeXN0ZW0sIEdlb21ldHJ5U3lzdGVtLCBSZW5kZXJlclN5c3RlbSAvLyBJbnRlcmFjdGlvblN5c3RlbSxcbiwgTWF0ZXJpYWxTeXN0ZW0sIE1lc2hTeXN0ZW0sIFNjZW5lR3JhcGhTeXN0ZW0sIEN1bGxhYmxlQ29tcG9uZW50LCBNZXNoQ29tcG9uZW50LCBUcmFuc2Zvcm1Db21wb25lbnQsIE1hdGVyaWFsQ29tcG9uZW50LCBHZW9tZXRyeUNvbXBvbmVudCwgSGllcmFyY2h5Q29tcG9uZW50LCBpc1NhZmFyaSwgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzLCBQaXhlbFBpY2tpbmdQYXNzLCBBU1RfVE9LRU5fVFlQRVMsIEFTVF9OT0RFX1RZUEVTLCBTVE9SQUdFX0NMQVNTLCBUYXJnZXQsIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/inversify.config.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/inversify.config.js ***!
\*****************************************************************/
/*! exports provided: container, lazyInject, lazyMultiInject, createWorldContainer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return container; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return lazyInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return lazyMultiInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return createWorldContainer; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify-inject-decorators */ \"./node_modules/inversify-inject-decorators/lib/index.js\");\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/framegraph/ResourcePool */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\");\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony import */ var _components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/renderer/passes/CopyPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/renderer/passes/RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony import */ var _components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/scenegraph/NameComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\");\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./services/config/ConfigService */ \"./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony import */ var _services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./services/interactor/IteractorService */ \"./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony import */ var _services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./services/shader-module/ShaderModuleService */ \"./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/**\n * Root Container\n * @see /dev-docs/IoC 容器、依赖注入与服务说明.md\n */\n\n\n\n\n\n\n\n // import { InteractionSystem } from './components/interaction/System';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // @see https://github.com/inversify/InversifyJS/blob/master/wiki/container_api.md#defaultscope\n\nvar container = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"](); // @see https://github.com/inversify/InversifyJS/blob/master/wiki/inheritance.md#what-can-i-do-when-my-base-class-is-provided-by-a-third-party-module\n// decorate(injectable(), EventEmitter);\n// container.bind(IDENTIFIER.IEventEmitter).to(EventEmitter);\n// 支持使用 new 而非容器实例化的场景,同时禁止 lazyInject cache\n// @see https://github.com/inversify/inversify-inject-decorators#caching-vs-non-caching-behaviour\n\nvar DECORATORS = inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default()(container, false);\n// Add babel legacy decorators support\n// @see https://github.com/inversify/InversifyJS/issues/1050\n// @see https://github.com/inversify/InversifyJS/issues/1026#issuecomment-504936034\nvar lazyInject = function lazyInject(serviceIdentifier) {\n var original = DECORATORS.lazyInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key); // return link to proto, so own value wont be 'undefined' after component's creation\n\n if (descriptor) {\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\nvar lazyMultiInject = function lazyMultiInject(serviceIdentifier) {\n var original = DECORATORS.lazyMultiInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key);\n\n if (descriptor) {\n // return link to proto, so own value wont be 'undefined' after component's creation\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\n/** global services */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ShaderModuleService).to(_services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__[\"default\"]).inSingletonScope();\n/**\n * bind global component managers in root container\n */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].NameComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__[\"NameComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].HierarchyComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__[\"HierarchyComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].TransformComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__[\"TransformComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__[\"MeshComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].CullableComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__[\"CullableComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometryComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__[\"GeometryComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__[\"MaterialComponent\"])); // https://github.com/inversify/InversifyJS/blob/master/wiki/hierarchical_di.md#support-for-hierarchical-di-systems\n\nfunction createWorldContainer() {\n var worldContainer = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"]();\n worldContainer.parent = container;\n /**\n * bind systems\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__[\"SceneGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].SceneGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__[\"FrameGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].FrameGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_mesh_System__WEBPACK_IMPORTED_MODULE_12__[\"MeshSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_geometry_System__WEBPACK_IMPORTED_MODULE_7__[\"GeometrySystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometrySystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_material_System__WEBPACK_IMPORTED_MODULE_9__[\"MaterialSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_renderer_System__WEBPACK_IMPORTED_MODULE_16__[\"RendererSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RendererSystem); // 资源池\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ResourcePool).to(_components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__[\"ResourcePool\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ConfigService).to(_services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__[\"ConfigService\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].InteractorService).to(_services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__[\"InteractorService\"]).inSingletonScope();\n /**\n * bind render passes\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPassFactory).toFactory(function (context) {\n return function (name) {\n return context.container.getNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass, name);\n };\n });\n return worldContainer;\n}\n//# sourceMappingURL=inversify.config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzPzNhYTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMEI7QUFDWTtBQUNrQjtBQUNGO0FBQ2M7QUFDRjtBQUNVO0FBQ2QsWUFBWSxvQkFBb0I7O0FBRWxCO0FBQ2Q7QUFDVTtBQUNSO0FBQ1Y7QUFDVztBQUNnQjtBQUNaO0FBQ1A7QUFDa0I7QUFDVjtBQUNKO0FBQ2M7QUFDdEM7QUFDc0I7QUFDVztBQUNJOztBQUV4RSxvQkFBb0IsbURBQVMsR0FBRztBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0VBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ087QUFDUCwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtEQUErRDtBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsdURBQVUseUJBQXlCLG9GQUFtQjtBQUNyRTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSx1REFBVSwyQ0FBMkMsa0VBQWdCLENBQUMsbUZBQWE7QUFDbEcsZUFBZSx1REFBVSxnREFBZ0Qsa0VBQWdCLENBQUMsNkZBQWtCO0FBQzVHLGVBQWUsdURBQVUsZ0RBQWdELGtFQUFnQixDQUFDLDZGQUFrQjtBQUM1RyxlQUFlLHVEQUFVLDJDQUEyQyxrRUFBZ0IsQ0FBQyw2RUFBYTtBQUNsRyxlQUFlLHVEQUFVLCtDQUErQyxrRUFBZ0IsQ0FBQyxxRkFBaUI7QUFDMUcsZUFBZSx1REFBVSwrQ0FBK0Msa0VBQWdCLENBQUMsd0ZBQWlCO0FBQzFHLGVBQWUsdURBQVUsK0NBQStDLGtFQUFnQixDQUFDLHdGQUFpQixHQUFHOztBQUV0RztBQUNQLDJCQUEyQixtREFBUztBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsYUFBYSwrRUFBZ0IscUNBQXFDLHVEQUFVO0FBQzVHLHNCQUFzQix1REFBVSxhQUFhLDhFQUFnQixxQ0FBcUMsdURBQVU7QUFDNUcsc0JBQXNCLHVEQUFVLGFBQWEsbUVBQVUscUNBQXFDLHVEQUFVO0FBQ3RHLHNCQUFzQix1REFBVSxhQUFhLDBFQUFjLHFDQUFxQyx1REFBVTtBQUMxRyxzQkFBc0IsdURBQVUsYUFBYSwwRUFBYyxxQ0FBcUMsdURBQVU7QUFDMUcsc0JBQXNCLHVEQUFVLGFBQWEsMkVBQWMscUNBQXFDLHVEQUFVLGlCQUFpQjs7QUFFM0gsc0JBQXNCLHVEQUFVLGtCQUFrQixnRkFBWTtBQUM5RCxzQkFBc0IsdURBQVUsbUJBQW1CLDZFQUFhO0FBQ2hFLHNCQUFzQix1REFBVSx1QkFBdUIsd0ZBQWlCO0FBQ3hFO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsZ0JBQWdCLGtGQUFVLHFDQUFxQyxrRkFBVTtBQUN6RyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhFQUFRLHFDQUFxQyw4RUFBUTtBQUNyRyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhGQUFnQixxQ0FBcUMsOEZBQWdCO0FBQ3JILHNCQUFzQix1REFBVTtBQUNoQztBQUNBLHdDQUF3Qyx1REFBVTtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSb290IENvbnRhaW5lclxuICogQHNlZSAvZGV2LWRvY3MvSW9DIOWuueWZqOOAgeS+nei1luazqOWFpeS4juacjeWKoeivtOaYji5tZFxuICovXG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCBnZXREZWNvcmF0b3JzIGZyb20gJ2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IFJlc291cmNlUG9vbCB9IGZyb20gJy4vY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbCc7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7IC8vIGltcG9ydCB7IEludGVyYWN0aW9uU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ludGVyYWN0aW9uL1N5c3RlbSc7XG5cbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbSc7XG5pbXBvcnQgeyBDdWxsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZXNoL0N1bGxhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ29weVBhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUmVuZGVyUGFzcyc7XG5pbXBvcnQgeyBSZW5kZXJlclN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9TeXN0ZW0nO1xuaW1wb3J0IHsgSGllcmFyY2h5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50JztcbmltcG9ydCB7IE5hbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9OYW1lQ29tcG9uZW50JztcbmltcG9ydCB7IFNjZW5lR3JhcGhTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0nO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnL0NvbmZpZ1NlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJhY3RvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZSc7XG5pbXBvcnQgU2hhZGVyTW9kdWxlU2VydmljZSBmcm9tICcuL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvU2hhZGVyTW9kdWxlU2VydmljZSc7IC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2NvbnRhaW5lcl9hcGkubWQjZGVmYXVsdHNjb3BlXG5cbmV4cG9ydCB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpOyAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvYmxvYi9tYXN0ZXIvd2lraS9pbmhlcml0YW5jZS5tZCN3aGF0LWNhbi1pLWRvLXdoZW4tbXktYmFzZS1jbGFzcy1pcy1wcm92aWRlZC1ieS1hLXRoaXJkLXBhcnR5LW1vZHVsZVxuLy8gZGVjb3JhdGUoaW5qZWN0YWJsZSgpLCBFdmVudEVtaXR0ZXIpO1xuLy8gY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5JRXZlbnRFbWl0dGVyKS50byhFdmVudEVtaXR0ZXIpO1xuLy8g5pSv5oyB5L2/55SoIG5ldyDogIzpnZ7lrrnlmajlrp7kvovljJbnmoTlnLrmma/vvIzlkIzml7bnpoHmraIgbGF6eUluamVjdCBjYWNoZVxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyNjYWNoaW5nLXZzLW5vbi1jYWNoaW5nLWJlaGF2aW91clxuXG52YXIgREVDT1JBVE9SUyA9IGdldERlY29yYXRvcnMoY29udGFpbmVyLCBmYWxzZSk7XG4vLyBBZGQgYmFiZWwgbGVnYWN5IGRlY29yYXRvcnMgc3VwcG9ydFxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L0ludmVyc2lmeUpTL2lzc3Vlcy8xMDUwXG4vLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvaXNzdWVzLzEwMjYjaXNzdWVjb21tZW50LTUwNDkzNjAzNFxuZXhwb3J0IHZhciBsYXp5SW5qZWN0ID0gZnVuY3Rpb24gbGF6eUluamVjdChzZXJ2aWNlSWRlbnRpZmllcikge1xuICB2YXIgb3JpZ2luYWwgPSBERUNPUkFUT1JTLmxhenlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7IC8vIHJldHVybiBsaW5rIHRvIHByb3RvLCBzbyBvd24gdmFsdWUgd29udCBiZSAndW5kZWZpbmVkJyBhZnRlciBjb21wb25lbnQncyBjcmVhdGlvblxuXG4gICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgIGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwcm90b1trZXldO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuZXhwb3J0IHZhciBsYXp5TXVsdGlJbmplY3QgPSBmdW5jdGlvbiBsYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgdmFyIG9yaWdpbmFsID0gREVDT1JBVE9SUy5sYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7XG5cbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgLy8gcmV0dXJuIGxpbmsgdG8gcHJvdG8sIHNvIG93biB2YWx1ZSB3b250IGJlICd1bmRlZmluZWQnIGFmdGVyIGNvbXBvbmVudCdzIGNyZWF0aW9uXG4gICAgICBkZXNjcmlwdG9yLmluaXRpYWxpemVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcHJvdG9ba2V5XTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKiBnbG9iYWwgc2VydmljZXMgKi9cblxuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKS50byhTaGFkZXJNb2R1bGVTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4vKipcbiAqIGJpbmQgZ2xvYmFsIGNvbXBvbmVudCBtYW5hZ2VycyBpbiByb290IGNvbnRhaW5lclxuICovXG5cbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTmFtZUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihOYW1lQ29tcG9uZW50KSk7XG5jb250YWluZXIuYmluZChJREVOVElGSUVSLkhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihIaWVyYXJjaHlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKFRyYW5zZm9ybUNvbXBvbmVudCkpO1xuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKE1lc2hDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoQ3VsbGFibGVDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoR2VvbWV0cnlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoTWF0ZXJpYWxDb21wb25lbnQpKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2hpZXJhcmNoaWNhbF9kaS5tZCNzdXBwb3J0LWZvci1oaWVyYXJjaGljYWwtZGktc3lzdGVtc1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGRDb250YWluZXIoKSB7XG4gIHZhciB3b3JsZENvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTtcbiAgd29ybGRDb250YWluZXIucGFyZW50ID0gY29udGFpbmVyO1xuICAvKipcbiAgICogYmluZCBzeXN0ZW1zXG4gICAqL1xuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhTY2VuZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuU2NlbmVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhGcmFtZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhNZXNoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWVzaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhHZW9tZXRyeVN5c3RlbSkuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlN5c3RlbXMpLnRvKE1hdGVyaWFsU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuU3lzdGVtcykudG8oUmVuZGVyZXJTeXN0ZW0pLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoSURFTlRJRklFUi5SZW5kZXJlclN5c3RlbSk7IC8vIOi1hOa6kOaxoFxuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLnRvKFJlc291cmNlUG9vbCkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ29uZmlnU2VydmljZSkudG8oQ29uZmlnU2VydmljZSkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuSW50ZXJhY3RvclNlcnZpY2UpLnRvKEludGVyYWN0b3JTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4gIC8qKlxuICAgKiBiaW5kIHJlbmRlciBwYXNzZXNcbiAgICovXG5cbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKFJlbmRlclBhc3MpLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoUmVuZGVyUGFzcy5JREVOVElGSUVSKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKENvcHlQYXNzKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKENvcHlQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzcykudG8oUGl4ZWxQaWNraW5nUGFzcykuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLnRvRmFjdG9yeShmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuUmVuZGVyUGFzcywgbmFtZSk7XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB3b3JsZENvbnRhaW5lcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludmVyc2lmeS5jb25maWcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/inversify.config.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js":
/*!******************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js ***!
\******************************************************************************/
/*! exports provided: ConfigService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return ConfigService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar ConfigService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ConfigService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConfigService);\n\n this.config = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ConfigService, [{\n key: \"get\",\n value: function get() {\n return this.config;\n }\n }, {\n key: \"set\",\n value: function set(config) {\n this.config = config;\n }\n }]);\n\n return ConfigService;\n}(), _temp)) || _class);\n//# sourceMappingURL=ConfigService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvQ29uZmlnU2VydmljZS5qcz8zMjdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDLDRCQUE0Qiw0REFBVTtBQUM3QztBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9Db25maWdTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIENvbmZpZ1NlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDb25maWdTZXJ2aWNlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25maWdTZXJ2aWNlKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbmZpZ1NlcnZpY2UsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29uZmlnU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29uZmlnU2VydmljZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/config/index.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/config/index.js ***!
\**********************************************************************/
/*! exports provided: ConfigService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ConfigService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ConfigService */ \"./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _ConfigService__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvaW5kZXguanM/ZTI0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFnQztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ29uZmlnU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/config/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/index.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/index.js ***!
\***************************************************************/
/*! exports provided: ConfigService, IInteractorEvent, InteractorService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./node_modules/@antv/g-webgpu-core/es/services/config/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n/* harmony import */ var _interactor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interactor */ \"./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"InteractorService\"]; });\n\n/* harmony import */ var _shader_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shader-module */ \"./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbmRleC5qcz9mMjM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsd0NBQXlCO0FBQ0k7QUFDRztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmFjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhZGVyLW1vZHVsZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js":
/*!*************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js ***!
\*************************************************************************************/
/*! exports provided: IInteractorEvent, InteractorService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return IInteractorEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return InteractorService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class;\n\n\nvar IInteractorEvent;\n\n(function (IInteractorEvent) {\n IInteractorEvent[\"PANSTART\"] = \"PANSTART\";\n IInteractorEvent[\"PANEND\"] = \"PANEND\";\n IInteractorEvent[\"PANMOVE\"] = \"PANMOVE\";\n IInteractorEvent[\"PINCH\"] = \"PINCH\";\n IInteractorEvent[\"KEYDOWN\"] = \"KEYDOWN\";\n IInteractorEvent[\"KEYUP\"] = \"KEYUP\";\n IInteractorEvent[\"HOVER\"] = \"HOVER\";\n})(IInteractorEvent || (IInteractorEvent = {}));\n\nvar InteractorService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function () {\n function InteractorService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, InteractorService);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(InteractorService, [{\n key: \"listen\",\n value: function listen(canvas) {}\n }, {\n key: \"on\",\n value: function on(event, args) {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n\n return InteractorService;\n}()) || _class);\n//# sourceMappingURL=IteractorService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL0l0ZXJhY3RvclNlcnZpY2UuanM/MmM2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRDQUE0Qzs7QUFFdEMsZ0NBQWdDLDREQUFVO0FBQ2pEO0FBQ0EsSUFBSSw0RUFBZTtBQUNuQjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcztcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIElJbnRlcmFjdG9yRXZlbnQ7XG5cbihmdW5jdGlvbiAoSUludGVyYWN0b3JFdmVudCkge1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcIlBBTlNUQVJUXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJQQU5FTkRcIl0gPSBcIlBBTkVORFwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOTU9WRVwiXSA9IFwiUEFOTU9WRVwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUElOQ0hcIl0gPSBcIlBJTkNIXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlET1dOXCJdID0gXCJLRVlET1dOXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlVUFwiXSA9IFwiS0VZVVBcIjtcbiAgSUludGVyYWN0b3JFdmVudFtcIkhPVkVSXCJdID0gXCJIT1ZFUlwiO1xufSkoSUludGVyYWN0b3JFdmVudCB8fCAoSUludGVyYWN0b3JFdmVudCA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgSW50ZXJhY3RvclNlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJbnRlcmFjdG9yU2VydmljZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZXJhY3RvclNlcnZpY2UpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEludGVyYWN0b3JTZXJ2aWNlLCBbe1xuICAgIGtleTogXCJsaXN0ZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGlzdGVuKGNhbnZhcykge31cbiAgfSwge1xuICAgIGtleTogXCJvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbihldmVudCwgYXJncykge31cbiAgfSwge1xuICAgIGtleTogXCJjb25uZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbm5lY3QoKSB7fVxuICB9LCB7XG4gICAga2V5OiBcImRpc2Nvbm5lY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY29ubmVjdCgpIHt9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge31cbiAgfV0pO1xuXG4gIHJldHVybiBJbnRlcmFjdG9yU2VydmljZTtcbn0oKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUl0ZXJhY3RvclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js":
/*!**************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js ***!
\**************************************************************************/
/*! exports provided: IInteractorEvent, InteractorService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IteractorService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IteractorService */ \"./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"InteractorService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL2luZGV4LmpzP2FlZWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvaW50ZXJhY3Rvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vSXRlcmFjdG9yU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js ***!
\*******************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ShaderModuleService; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_shader_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/shader-module */ \"./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js\");\n/* harmony import */ var _utils_uniq__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/uniq */ \"./node_modules/@antv/g-webgpu-core/es/utils/uniq.js\");\n\n\n\n\nvar _dec, _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.picking.frag.glsl' */\nvar pickingFrag = \"varying vec4 v_PickingResult;\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\n/*\\n * Returns highlight color if this item is selected.\\n */\\nvec4 filterHighlightColor(vec4 color) {\\n bool selected = bool(v_PickingResult.a);\\n\\n if (selected) {\\n vec4 highLightColor = u_HighlightColor * COLOR_SCALE;\\n\\n float highLightAlpha = highLightColor.a;\\n float highLightRatio = highLightAlpha / (highLightAlpha + color.a * (1.0 - highLightAlpha));\\n\\n vec3 resultRGB = mix(color.rgb, highLightColor.rgb, highLightRatio);\\n return vec4(resultRGB, color.a);\\n } else {\\n return color;\\n }\\n}\\n\\n/*\\n * Returns picking color if picking enabled else unmodified argument.\\n */\\nvec4 filterPickingColor(vec4 color) {\\n vec3 pickingColor = v_PickingResult.rgb;\\n if (u_PickingStage == PICKING_ENCODE && length(pickingColor) < 0.001) {\\n discard;\\n }\\n return u_PickingStage == PICKING_ENCODE ? vec4(pickingColor, step(0.001,color.a)): color;\\n}\\n\\n/*\\n * Returns picking color if picking is enabled if not\\n * highlight color if this item is selected, otherwise unmodified argument.\\n */\\nvec4 filterColor(vec4 color) {\\n return filterPickingColor(filterHighlightColor(color));\\n}\\n\";\n\n/* babel-plugin-inline-import './shaders/webgl.picking.vert.glsl' */\nvar pickingVert = \"attribute vec3 a_PickingColor;\\nvarying vec4 v_PickingResult;\\n\\nuniform vec3 u_PickingColor : [0, 0, 0];\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\nuniform float u_PickingThreshold : 1.0;\\nuniform float u_PickingBuffer: 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n return\\n abs(vertexColor.r - u_PickingColor.r) < u_PickingThreshold &&\\n abs(vertexColor.g - u_PickingColor.g) < u_PickingThreshold &&\\n abs(vertexColor.b - u_PickingColor.b) < u_PickingThreshold;\\n}\\n\\nvoid setPickingColor(vec3 pickingColor) {\\n // compares only in highlight stage\\n v_PickingResult.a = float((u_PickingStage == PICKING_HIGHLIGHT) && isVertexPicked(pickingColor));\\n\\n // Stores the picking color so that the fragment shader can render it during picking\\n v_PickingResult.rgb = pickingColor * COLOR_SCALE;\\n}\\n\\nfloat setPickingSize(float x) {\\n return u_PickingStage == PICKING_ENCODE ? x + u_PickingBuffer : x;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.sdf2d.frag.glsl' */\nvar sdf2dFrag = \"/**\\n * 2D signed distance field functions\\n * @see http://www.iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm\\n */\\n\\nfloat ndot(vec2 a, vec2 b ) { return a.x*b.x - a.y*b.y; }\\n\\nfloat sdCircle(vec2 p, float r) {\\n return length(p) - r;\\n}\\n\\nfloat sdEquilateralTriangle(vec2 p) {\\n float k = sqrt(3.0);\\n p.x = abs(p.x) - 1.0;\\n p.y = p.y + 1.0/k;\\n if( p.x + k*p.y > 0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0;\\n p.x -= clamp( p.x, -2.0, 0.0 );\\n return -length(p)*sign(p.y);\\n}\\n\\nfloat sdBox(vec2 p, vec2 b) {\\n vec2 d = abs(p)-b;\\n return length(max(d,vec2(0))) + min(max(d.x,d.y),0.0);\\n}\\n\\nfloat sdPentagon(vec2 p, float r) {\\n vec3 k = vec3(0.809016994,0.587785252,0.726542528);\\n p.x = abs(p.x);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= vec2(clamp(p.x,-r*k.z,r*k.z),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagon(vec2 p, float r) {\\n vec3 k = vec3(-0.866025404,0.5,0.577350269);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdOctogon(vec2 p, float r) {\\n vec3 k = vec3(-0.9238795325, 0.3826834323, 0.4142135623 );\\n p = abs(p);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagram(vec2 p, float r) {\\n vec4 k=vec4(-0.5,0.8660254038,0.5773502692,1.7320508076);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= 2.0*min(dot(k.yx,p),0.0)*k.yx;\\n p -= vec2(clamp(p.x,r*k.z,r*k.w),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdRhombus(vec2 p, vec2 b) {\\n vec2 q = abs(p);\\n float h = clamp((-2.0*ndot(q,b)+ndot(b,b))/dot(b,b),-1.0,1.0);\\n float d = length( q - 0.5*b*vec2(1.0-h,1.0+h) );\\n return d * sign( q.x*b.y + q.y*b.x - b.x*b.y );\\n}\\n\\nfloat sdVesica(vec2 p, float r, float d) {\\n p = abs(p);\\n float b = sqrt(r*r-d*d); // can delay this sqrt\\n return ((p.y-b)*d>p.x*b)\\n ? length(p-vec2(0.0,b))\\n : length(p-vec2(-d,0.0))-r;\\n}\";\nvar precisionRegExp = /precision\\s+(high|low|medium)p\\s+float/;\nvar globalDefaultprecision = '#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n #else\\n precision mediump float;\\n#endif\\n';\nvar includeRegExp = /#pragma include ([\"^+\"]?[\"\\ \"[a-zA-Z_0-9](.*)\"]*?)/g;\nvar ShaderModuleService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_3__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ShaderModuleService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ShaderModuleService);\n\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ShaderModuleService, [{\n key: \"registerBuiltinModules\",\n value: function registerBuiltinModules() {\n this.destroy();\n this.registerModule('picking', {\n vs: pickingVert,\n fs: pickingFrag\n });\n this.registerModule('sdf2d', {\n vs: '',\n fs: sdf2dFrag\n });\n }\n }, {\n key: \"registerModule\",\n value: function registerModule(moduleName, moduleParams) {\n // prevent registering the same module multiple times\n if (this.rawContentCache[moduleName]) {\n return;\n }\n\n var _moduleParams$vs = moduleParams.vs,\n vs = _moduleParams$vs === void 0 ? '' : _moduleParams$vs,\n _moduleParams$fs = moduleParams.fs,\n fs = _moduleParams$fs === void 0 ? '' : _moduleParams$fs,\n declaredUniforms = moduleParams.uniforms;\n\n var _extractUniforms = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(vs),\n extractedVS = _extractUniforms.content,\n vsUniforms = _extractUniforms.uniforms;\n\n var _extractUniforms2 = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(fs),\n extractedFS = _extractUniforms2.content,\n fsUniforms = _extractUniforms2.uniforms;\n\n this.rawContentCache[moduleName] = {\n fs: extractedFS,\n uniforms: _objectSpread(_objectSpread(_objectSpread({}, vsUniforms), fsUniforms), declaredUniforms),\n vs: extractedVS\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n }, {\n key: \"getModule\",\n value: function getModule(moduleName) {\n var _this = this;\n\n if (this.moduleCache[moduleName]) {\n return this.moduleCache[moduleName];\n }\n\n var rawVS = this.rawContentCache[moduleName].vs || '';\n var rawFS = this.rawContentCache[moduleName].fs || '';\n\n var _this$processModule = this.processModule(rawVS, [], 'vs'),\n vs = _this$processModule.content,\n vsIncludeList = _this$processModule.includeList;\n\n var _this$processModule2 = this.processModule(rawFS, [], 'fs'),\n fs = _this$processModule2.content,\n fsIncludeList = _this$processModule2.includeList;\n\n var compiledFs = fs; // TODO: extract uniforms and their default values from GLSL\n\n var uniforms = Object(_utils_uniq__WEBPACK_IMPORTED_MODULE_5__[\"uniq\"])(vsIncludeList.concat(fsIncludeList).concat(moduleName)).reduce(function (prev, cur) {\n return _objectSpread(_objectSpread({}, prev), _this.rawContentCache[cur].uniforms);\n }, {});\n /**\n * set default precision for fragment shader\n * https://stackoverflow.com/questions/28540290/why-it-is-necessary-to-set-precision-for-the-fragment-shader\n */\n\n if (!precisionRegExp.test(fs)) {\n compiledFs = globalDefaultprecision + fs;\n }\n\n this.moduleCache[moduleName] = {\n fs: compiledFs.trim(),\n uniforms: uniforms,\n vs: vs.trim()\n };\n return this.moduleCache[moduleName];\n }\n }, {\n key: \"processModule\",\n value: function processModule(rawContent, includeList, type) {\n var _this2 = this;\n\n var compiled = rawContent.replace(includeRegExp, function (_, strMatch) {\n var includeOpt = strMatch.split(' ');\n var includeName = includeOpt[0].replace(/\"/g, '');\n\n if (includeList.indexOf(includeName) > -1) {\n return '';\n }\n\n var txt = _this2.rawContentCache[includeName][type];\n includeList.push(includeName);\n\n var _this2$processModule = _this2.processModule(txt || '', includeList, type),\n content = _this2$processModule.content;\n\n return content;\n });\n return {\n content: compiled,\n includeList: includeList\n };\n }\n }]);\n\n return ShaderModuleService;\n}(), _temp)) || _class);\n\n//# sourceMappingURL=ShaderModuleService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL1NoYWRlck1vZHVsZVNlcnZpY2UuanM/Yzk5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOOztBQUU5RDs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRTdlO0FBQ3FCO0FBQ3BCOztBQUV4QztBQUNBLGdEQUFnRCwrQ0FBK0MscUNBQXFDLHNNQUFzTSw0Q0FBNEMscUJBQXFCLDJEQUEyRCxnREFBZ0Qsa0dBQWtHLDRFQUE0RSxzQ0FBc0MsS0FBSyxPQUFPLG1CQUFtQixLQUFLLEdBQUcseUhBQXlILDRDQUE0QywyRUFBMkUsY0FBYyxLQUFLLDZGQUE2RixHQUFHLCtLQUErSywyREFBMkQsR0FBRzs7QUFFajBDO0FBQ0EsaURBQWlELCtCQUErQiw0Q0FBNEMsK0NBQStDLHFDQUFxQyx5Q0FBeUMscUNBQXFDLHVJQUF1SSxpTkFBaU4sR0FBRyw2Q0FBNkMsNElBQTRJLCtJQUErSSxHQUFHLG1DQUFtQyx1RUFBdUUsR0FBRzs7QUFFampDO0FBQ0EscUxBQXFMLDBCQUEwQixFQUFFLHFDQUFxQyx5QkFBeUIsR0FBRyx5Q0FBeUMsd0JBQXdCLHlCQUF5QixzQkFBc0IsK0RBQStELG1DQUFtQyxnQ0FBZ0MsR0FBRyxpQ0FBaUMsc0JBQXNCLDBEQUEwRCxHQUFHLHVDQUF1Qyx1REFBdUQsbUJBQW1CLDJEQUEyRCwyREFBMkQseUNBQXlDLCtCQUErQixHQUFHLHNDQUFzQyxnREFBZ0QsZUFBZSx1Q0FBdUMsNENBQTRDLCtCQUErQixHQUFHLHNDQUFzQyw4REFBOEQsZUFBZSwyREFBMkQsMkRBQTJELDRDQUE0QywrQkFBK0IsR0FBRyx1Q0FBdUMsNkRBQTZELGVBQWUsdUNBQXVDLHVDQUF1Qyx3Q0FBd0MsK0JBQStCLEdBQUcscUNBQXFDLG9CQUFvQixrRUFBa0Usb0RBQW9ELG1EQUFtRCxHQUFHLDhDQUE4QyxlQUFlLDRCQUE0Qiw2SEFBNkgsR0FBRztBQUN2b0U7QUFDQSx3RkFBd0YsbUNBQW1DO0FBQzNIO0FBQ0Esa0NBQWtDLDREQUFVO0FBQzVDO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUE2Qiw0RUFBZTtBQUM1QztBQUNBOztBQUVBLDhCQUE4Qiw0RUFBZTtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCOztBQUUxQixxQkFBcUIsd0RBQUk7QUFDekIsNkNBQTZDO0FBQzdDLE9BQU8sSUFBSTtBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ3lDO0FBQzFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvc2hhZGVyLW1vZHVsZS9TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgZXh0cmFjdFVuaWZvcm1zIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hhZGVyLW1vZHVsZSc7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvdW5pcSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy5mcmFnLmdsc2wnICovXG52YXIgcGlja2luZ0ZyYWcgPSBcInZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxudW5pZm9ybSB2ZWM0IHVfSGlnaGxpZ2h0Q29sb3IgOiBbMCwgMCwgMCwgMF07XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdTdGFnZSA6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG4vKlxcbiAqIFJldHVybnMgaGlnaGxpZ2h0IGNvbG9yIGlmIHRoaXMgaXRlbSBpcyBzZWxlY3RlZC5cXG4gKi9cXG52ZWM0IGZpbHRlckhpZ2hsaWdodENvbG9yKHZlYzQgY29sb3IpIHtcXG4gIGJvb2wgc2VsZWN0ZWQgPSBib29sKHZfUGlja2luZ1Jlc3VsdC5hKTtcXG5cXG4gIGlmIChzZWxlY3RlZCkge1xcbiAgICB2ZWM0IGhpZ2hMaWdodENvbG9yID0gdV9IaWdobGlnaHRDb2xvciAqIENPTE9SX1NDQUxFO1xcblxcbiAgICBmbG9hdCBoaWdoTGlnaHRBbHBoYSA9IGhpZ2hMaWdodENvbG9yLmE7XFxuICAgIGZsb2F0IGhpZ2hMaWdodFJhdGlvID0gaGlnaExpZ2h0QWxwaGEgLyAoaGlnaExpZ2h0QWxwaGEgKyBjb2xvci5hICogKDEuMCAtIGhpZ2hMaWdodEFscGhhKSk7XFxuXFxuICAgIHZlYzMgcmVzdWx0UkdCID0gbWl4KGNvbG9yLnJnYiwgaGlnaExpZ2h0Q29sb3IucmdiLCBoaWdoTGlnaHRSYXRpbyk7XFxuICAgIHJldHVybiB2ZWM0KHJlc3VsdFJHQiwgY29sb3IuYSk7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gY29sb3I7XFxuICB9XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgZW5hYmxlZCBlbHNlIHVubW9kaWZpZWQgYXJndW1lbnQuXFxuICovXFxudmVjNCBmaWx0ZXJQaWNraW5nQ29sb3IodmVjNCBjb2xvcikge1xcbiAgdmVjMyBwaWNraW5nQ29sb3IgPSB2X1BpY2tpbmdSZXN1bHQucmdiO1xcbiAgaWYgKHVfUGlja2luZ1N0YWdlID09IFBJQ0tJTkdfRU5DT0RFICYmIGxlbmd0aChwaWNraW5nQ29sb3IpIDwgMC4wMDEpIHtcXG4gICAgZGlzY2FyZDtcXG4gIH1cXG4gIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHZlYzQocGlja2luZ0NvbG9yLCBzdGVwKDAuMDAxLGNvbG9yLmEpKTogY29sb3I7XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgaXMgZW5hYmxlZCBpZiBub3RcXG4gKiBoaWdobGlnaHQgY29sb3IgaWYgdGhpcyBpdGVtIGlzIHNlbGVjdGVkLCBvdGhlcndpc2UgdW5tb2RpZmllZCBhcmd1bWVudC5cXG4gKi9cXG52ZWM0IGZpbHRlckNvbG9yKHZlYzQgY29sb3IpIHtcXG4gIHJldHVybiBmaWx0ZXJQaWNraW5nQ29sb3IoZmlsdGVySGlnaGxpZ2h0Q29sb3IoY29sb3IpKTtcXG59XFxuXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy52ZXJ0Lmdsc2wnICovXG52YXIgcGlja2luZ1ZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMzIGFfUGlja2luZ0NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxuXFxudW5pZm9ybSB2ZWMzIHVfUGlja2luZ0NvbG9yIDogWzAsIDAsIDBdO1xcbnVuaWZvcm0gdmVjNCB1X0hpZ2hsaWdodENvbG9yIDogWzAsIDAsIDAsIDBdO1xcbnVuaWZvcm0gZmxvYXQgdV9QaWNraW5nU3RhZ2UgOiAwLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdUaHJlc2hvbGQgOiAxLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdCdWZmZXI6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG5ib29sIGlzVmVydGV4UGlja2VkKHZlYzMgdmVydGV4Q29sb3IpIHtcXG4gIHJldHVyblxcbiAgICBhYnModmVydGV4Q29sb3IuciAtIHVfUGlja2luZ0NvbG9yLnIpIDwgdV9QaWNraW5nVGhyZXNob2xkICYmXFxuICAgIGFicyh2ZXJ0ZXhDb2xvci5nIC0gdV9QaWNraW5nQ29sb3IuZykgPCB1X1BpY2tpbmdUaHJlc2hvbGQgJiZcXG4gICAgYWJzKHZlcnRleENvbG9yLmIgLSB1X1BpY2tpbmdDb2xvci5iKSA8IHVfUGlja2luZ1RocmVzaG9sZDtcXG59XFxuXFxudm9pZCBzZXRQaWNraW5nQ29sb3IodmVjMyBwaWNraW5nQ29sb3IpIHtcXG4gIC8vIGNvbXBhcmVzIG9ubHkgaW4gaGlnaGxpZ2h0IHN0YWdlXFxuICB2X1BpY2tpbmdSZXN1bHQuYSA9IGZsb2F0KCh1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0hJR0hMSUdIVCkgJiYgaXNWZXJ0ZXhQaWNrZWQocGlja2luZ0NvbG9yKSk7XFxuXFxuICAvLyBTdG9yZXMgdGhlIHBpY2tpbmcgY29sb3Igc28gdGhhdCB0aGUgZnJhZ21lbnQgc2hhZGVyIGNhbiByZW5kZXIgaXQgZHVyaW5nIHBpY2tpbmdcXG4gIHZfUGlja2luZ1Jlc3VsdC5yZ2IgPSBwaWNraW5nQ29sb3IgKiBDT0xPUl9TQ0FMRTtcXG59XFxuXFxuZmxvYXQgc2V0UGlja2luZ1NpemUoZmxvYXQgeCkge1xcbiAgIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHggKyB1X1BpY2tpbmdCdWZmZXIgOiB4O1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5zZGYyZC5mcmFnLmdsc2wnICovXG52YXIgc2RmMmRGcmFnID0gXCIvKipcXG4gKiAyRCBzaWduZWQgZGlzdGFuY2UgZmllbGQgZnVuY3Rpb25zXFxuICogQHNlZSBodHRwOi8vd3d3LmlxdWlsZXpsZXMub3JnL3d3dy9hcnRpY2xlcy9kaXN0ZnVuY3Rpb25zMmQvZGlzdGZ1bmN0aW9uczJkLmh0bVxcbiAqL1xcblxcbmZsb2F0IG5kb3QodmVjMiBhLCB2ZWMyIGIgKSB7IHJldHVybiBhLngqYi54IC0gYS55KmIueTsgfVxcblxcbmZsb2F0IHNkQ2lyY2xlKHZlYzIgcCwgZmxvYXQgcikge1xcbiAgcmV0dXJuIGxlbmd0aChwKSAtIHI7XFxufVxcblxcbmZsb2F0IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSh2ZWMyIHApIHtcXG4gIGZsb2F0IGsgPSBzcXJ0KDMuMCk7XFxuICBwLnggPSBhYnMocC54KSAtIDEuMDtcXG4gIHAueSA9IHAueSArIDEuMC9rO1xcbiAgaWYoIHAueCArIGsqcC55ID4gMC4wICkgcCA9IHZlYzIocC54LWsqcC55LC1rKnAueC1wLnkpLzIuMDtcXG4gIHAueCAtPSBjbGFtcCggcC54LCAtMi4wLCAwLjAgKTtcXG4gIHJldHVybiAtbGVuZ3RoKHApKnNpZ24ocC55KTtcXG59XFxuXFxuZmxvYXQgc2RCb3godmVjMiBwLCB2ZWMyIGIpIHtcXG4gIHZlYzIgZCA9IGFicyhwKS1iO1xcbiAgcmV0dXJuIGxlbmd0aChtYXgoZCx2ZWMyKDApKSkgKyBtaW4obWF4KGQueCxkLnkpLDAuMCk7XFxufVxcblxcbmZsb2F0IHNkUGVudGFnb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKDAuODA5MDE2OTk0LDAuNTg3Nzg1MjUyLDAuNzI2NTQyNTI4KTtcXG4gIHAueCA9IGFicyhwLngpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwtciprLnosciprLnopLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdvbih2ZWMyIHAsIGZsb2F0IHIpIHtcXG4gIHZlYzMgayA9IHZlYzMoLTAuODY2MDI1NDA0LDAuNSwwLjU3NzM1MDI2OSk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnh5LHApLDAuMCkqay54eTtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsIC1rLnoqciwgay56KnIpLCByKTtcXG4gIHJldHVybiBsZW5ndGgocCkqc2lnbihwLnkpO1xcbn1cXG5cXG5mbG9hdCBzZE9jdG9nb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKC0wLjkyMzg3OTUzMjUsIDAuMzgyNjgzNDMyMywgMC40MTQyMTM1NjIzICk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwgLWsueipyLCBrLnoqciksIHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdyYW0odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWM0IGs9dmVjNCgtMC41LDAuODY2MDI1NDAzOCwwLjU3NzM1MDI2OTIsMS43MzIwNTA4MDc2KTtcXG4gIHAgPSBhYnMocCk7XFxuICBwIC09IDIuMCptaW4oZG90KGsueHkscCksMC4wKSprLnh5O1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnl4LHApLDAuMCkqay55eDtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsciprLnosciprLncpLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkUmhvbWJ1cyh2ZWMyIHAsIHZlYzIgYikge1xcbiAgdmVjMiBxID0gYWJzKHApO1xcbiAgZmxvYXQgaCA9IGNsYW1wKCgtMi4wKm5kb3QocSxiKStuZG90KGIsYikpL2RvdChiLGIpLC0xLjAsMS4wKTtcXG4gIGZsb2F0IGQgPSBsZW5ndGgoIHEgLSAwLjUqYip2ZWMyKDEuMC1oLDEuMCtoKSApO1xcbiAgcmV0dXJuIGQgKiBzaWduKCBxLngqYi55ICsgcS55KmIueCAtIGIueCpiLnkgKTtcXG59XFxuXFxuZmxvYXQgc2RWZXNpY2EodmVjMiBwLCBmbG9hdCByLCBmbG9hdCBkKSB7XFxuICBwID0gYWJzKHApO1xcbiAgZmxvYXQgYiA9IHNxcnQocipyLWQqZCk7IC8vIGNhbiBkZWxheSB0aGlzIHNxcnRcXG4gIHJldHVybiAoKHAueS1iKSpkPnAueCpiKVxcbiAgICAgICAgICA/IGxlbmd0aChwLXZlYzIoMC4wLGIpKVxcbiAgICAgICAgICA6IGxlbmd0aChwLXZlYzIoLWQsMC4wKSktcjtcXG59XCI7XG52YXIgcHJlY2lzaW9uUmVnRXhwID0gL3ByZWNpc2lvblxccysoaGlnaHxsb3d8bWVkaXVtKXBcXHMrZmxvYXQvO1xudmFyIGdsb2JhbERlZmF1bHRwcmVjaXNpb24gPSAnI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIXFxuIHByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4gI2Vsc2VcXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XFxuI2VuZGlmXFxuJztcbnZhciBpbmNsdWRlUmVnRXhwID0gLyNwcmFnbWEgaW5jbHVkZSAoW1wiXitcIl0/W1wiXFwgXCJbYS16QS1aXzAtOV0oLiopXCJdKj8pL2c7XG52YXIgU2hhZGVyTW9kdWxlU2VydmljZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNoYWRlck1vZHVsZVNlcnZpY2UoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNoYWRlck1vZHVsZVNlcnZpY2UpO1xuXG4gICAgdGhpcy5tb2R1bGVDYWNoZSA9IHt9O1xuICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2hhZGVyTW9kdWxlU2VydmljZSwgW3tcbiAgICBrZXk6IFwicmVnaXN0ZXJCdWlsdGluTW9kdWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWdpc3RlckJ1aWx0aW5Nb2R1bGVzKCkge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdwaWNraW5nJywge1xuICAgICAgICB2czogcGlja2luZ1ZlcnQsXG4gICAgICAgIGZzOiBwaWNraW5nRnJhZ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdzZGYyZCcsIHtcbiAgICAgICAgdnM6ICcnLFxuICAgICAgICBmczogc2RmMmRGcmFnXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVnaXN0ZXJNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwgbW9kdWxlUGFyYW1zKSB7XG4gICAgICAvLyBwcmV2ZW50IHJlZ2lzdGVyaW5nIHRoZSBzYW1lIG1vZHVsZSBtdWx0aXBsZSB0aW1lc1xuICAgICAgaWYgKHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9tb2R1bGVQYXJhbXMkdnMgPSBtb2R1bGVQYXJhbXMudnMsXG4gICAgICAgICAgdnMgPSBfbW9kdWxlUGFyYW1zJHZzID09PSB2b2lkIDAgPyAnJyA6IF9tb2R1bGVQYXJhbXMkdnMsXG4gICAgICAgICAgX21vZHVsZVBhcmFtcyRmcyA9IG1vZHVsZVBhcmFtcy5mcyxcbiAgICAgICAgICBmcyA9IF9tb2R1bGVQYXJhbXMkZnMgPT09IHZvaWQgMCA/ICcnIDogX21vZHVsZVBhcmFtcyRmcyxcbiAgICAgICAgICBkZWNsYXJlZFVuaWZvcm1zID0gbW9kdWxlUGFyYW1zLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgX2V4dHJhY3RVbmlmb3JtcyA9IGV4dHJhY3RVbmlmb3Jtcyh2cyksXG4gICAgICAgICAgZXh0cmFjdGVkVlMgPSBfZXh0cmFjdFVuaWZvcm1zLmNvbnRlbnQsXG4gICAgICAgICAgdnNVbmlmb3JtcyA9IF9leHRyYWN0VW5pZm9ybXMudW5pZm9ybXM7XG5cbiAgICAgIHZhciBfZXh0cmFjdFVuaWZvcm1zMiA9IGV4dHJhY3RVbmlmb3JtcyhmcyksXG4gICAgICAgICAgZXh0cmFjdGVkRlMgPSBfZXh0cmFjdFVuaWZvcm1zMi5jb250ZW50LFxuICAgICAgICAgIGZzVW5pZm9ybXMgPSBfZXh0cmFjdFVuaWZvcm1zMi51bmlmb3JtcztcblxuICAgICAgdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBleHRyYWN0ZWRGUyxcbiAgICAgICAgdW5pZm9ybXM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB2c1VuaWZvcm1zKSwgZnNVbmlmb3JtcyksIGRlY2xhcmVkVW5pZm9ybXMpLFxuICAgICAgICB2czogZXh0cmFjdGVkVlNcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMubW9kdWxlQ2FjaGUgPSB7fTtcbiAgICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1vZHVsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNb2R1bGUobW9kdWxlTmFtZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgICB9XG5cbiAgICAgIHZhciByYXdWUyA9IHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdLnZzIHx8ICcnO1xuICAgICAgdmFyIHJhd0ZTID0gdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0uZnMgfHwgJyc7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlID0gdGhpcy5wcm9jZXNzTW9kdWxlKHJhd1ZTLCBbXSwgJ3ZzJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRwcm9jZXNzTW9kdWxlLmNvbnRlbnQsXG4gICAgICAgICAgdnNJbmNsdWRlTGlzdCA9IF90aGlzJHByb2Nlc3NNb2R1bGUuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlMiA9IHRoaXMucHJvY2Vzc01vZHVsZShyYXdGUywgW10sICdmcycpLFxuICAgICAgICAgIGZzID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuY29udGVudCxcbiAgICAgICAgICBmc0luY2x1ZGVMaXN0ID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBjb21waWxlZEZzID0gZnM7IC8vIFRPRE86IGV4dHJhY3QgdW5pZm9ybXMgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWVzIGZyb20gR0xTTFxuXG4gICAgICB2YXIgdW5pZm9ybXMgPSB1bmlxKHZzSW5jbHVkZUxpc3QuY29uY2F0KGZzSW5jbHVkZUxpc3QpLmNvbmNhdChtb2R1bGVOYW1lKSkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJldiksIF90aGlzLnJhd0NvbnRlbnRDYWNoZVtjdXJdLnVuaWZvcm1zKTtcbiAgICAgIH0sIHt9KTtcbiAgICAgIC8qKlxuICAgICAgICogc2V0IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVudCBzaGFkZXJcbiAgICAgICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI4NTQwMjkwL3doeS1pdC1pcy1uZWNlc3NhcnktdG8tc2V0LXByZWNpc2lvbi1mb3ItdGhlLWZyYWdtZW50LXNoYWRlclxuICAgICAgICovXG5cbiAgICAgIGlmICghcHJlY2lzaW9uUmVnRXhwLnRlc3QoZnMpKSB7XG4gICAgICAgIGNvbXBpbGVkRnMgPSBnbG9iYWxEZWZhdWx0cHJlY2lzaW9uICsgZnM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBjb21waWxlZEZzLnRyaW0oKSxcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zLFxuICAgICAgICB2czogdnMudHJpbSgpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByb2Nlc3NNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvY2Vzc01vZHVsZShyYXdDb250ZW50LCBpbmNsdWRlTGlzdCwgdHlwZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjb21waWxlZCA9IHJhd0NvbnRlbnQucmVwbGFjZShpbmNsdWRlUmVnRXhwLCBmdW5jdGlvbiAoXywgc3RyTWF0Y2gpIHtcbiAgICAgICAgdmFyIGluY2x1ZGVPcHQgPSBzdHJNYXRjaC5zcGxpdCgnICcpO1xuICAgICAgICB2YXIgaW5jbHVkZU5hbWUgPSBpbmNsdWRlT3B0WzBdLnJlcGxhY2UoL1wiL2csICcnKTtcblxuICAgICAgICBpZiAoaW5jbHVkZUxpc3QuaW5kZXhPZihpbmNsdWRlTmFtZSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0eHQgPSBfdGhpczIucmF3Q29udGVudENhY2hlW2luY2x1ZGVOYW1lXVt0eXBlXTtcbiAgICAgICAgaW5jbHVkZUxpc3QucHVzaChpbmNsdWRlTmFtZSk7XG5cbiAgICAgICAgdmFyIF90aGlzMiRwcm9jZXNzTW9kdWxlID0gX3RoaXMyLnByb2Nlc3NNb2R1bGUodHh0IHx8ICcnLCBpbmNsdWRlTGlzdCwgdHlwZSksXG4gICAgICAgICAgICBjb250ZW50ID0gX3RoaXMyJHByb2Nlc3NNb2R1bGUuY29udGVudDtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogY29tcGlsZWQsXG4gICAgICAgIGluY2x1ZGVMaXN0OiBpbmNsdWRlTGlzdFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2hhZGVyTW9kdWxlU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuZXhwb3J0IHsgU2hhZGVyTW9kdWxlU2VydmljZSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js":
/*!*****************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js ***!
\*****************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ShaderModuleService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ShaderModuleService */ \"./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/* empty/unused harmony star reexport */\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL2luZGV4LmpzPzkxZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLHdDQUFzQztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL1NoYWRlck1vZHVsZVNlcnZpY2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/shape/AABB.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/shape/AABB.js ***!
\***********************************************************/
/*! exports provided: AABB */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return AABB; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * Axis-Aligned Bounding Box\n * 为了便于后续 Frustum Culling,通过查找表定义 p-vertex 和 n-vertex\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n */\nvar AABB = /*#__PURE__*/function () {\n function AABB(center, halfExtents) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, AABB);\n\n this.center = void 0;\n this.halfExtents = void 0;\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.update(center, halfExtents);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(AABB, [{\n key: \"update\",\n value: function update(center, halfExtents) {\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.halfExtents = halfExtents || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0.5, 0.5, 0.5);\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.min, this.center, this.halfExtents);\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.max, this.center, this.halfExtents);\n }\n }, {\n key: \"setMinMax\",\n value: function setMinMax(min, max) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.center, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.center, this.center, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.halfExtents, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.halfExtents, this.halfExtents, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.min, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.max, max);\n }\n }, {\n key: \"getMin\",\n value: function getMin() {\n return this.min;\n }\n }, {\n key: \"getMax\",\n value: function getMax() {\n return this.max;\n }\n }, {\n key: \"add\",\n value: function add(aabb) {\n var tc = this.center;\n var tcx = tc[0];\n var tcy = tc[1];\n var tcz = tc[2];\n var th = this.halfExtents;\n var thx = th[0];\n var thy = th[1];\n var thz = th[2];\n var tminx = tcx - thx;\n var tmaxx = tcx + thx;\n var tminy = tcy - thy;\n var tmaxy = tcy + thy;\n var tminz = tcz - thz;\n var tmaxz = tcz + thz;\n var oc = aabb.center;\n var ocx = oc[0];\n var ocy = oc[1];\n var ocz = oc[2];\n var oh = aabb.halfExtents;\n var ohx = oh[0];\n var ohy = oh[1];\n var ohz = oh[2];\n var ominx = ocx - ohx;\n var omaxx = ocx + ohx;\n var ominy = ocy - ohy;\n var omaxy = ocy + ohy;\n var ominz = ocz - ohz;\n var omaxz = ocz + ohz;\n\n if (ominx < tminx) {\n tminx = ominx;\n }\n\n if (omaxx > tmaxx) {\n tmaxx = omaxx;\n }\n\n if (ominy < tminy) {\n tminy = ominy;\n }\n\n if (omaxy > tmaxy) {\n tmaxy = omaxy;\n }\n\n if (ominz < tminz) {\n tminz = ominz;\n }\n\n if (omaxz > tmaxz) {\n tmaxz = omaxz;\n }\n\n tc[0] = (tminx + tmaxx) * 0.5;\n tc[1] = (tminy + tmaxy) * 0.5;\n tc[2] = (tminz + tmaxz) * 0.5;\n th[0] = (tmaxx - tminx) * 0.5;\n th[1] = (tmaxy - tminy) * 0.5;\n th[2] = (tmaxz - tminz) * 0.5;\n this.min[0] = tminx;\n this.min[1] = tminy;\n this.min[2] = tminz;\n this.max[0] = tmaxx;\n this.max[1] = tmaxy;\n this.max[2] = tmaxz;\n }\n }, {\n key: \"intersects\",\n value: function intersects(aabb) {\n var aMax = this.getMax();\n var aMin = this.getMin();\n var bMax = aabb.getMax();\n var bMin = aabb.getMin();\n return aMin[0] <= bMax[0] && aMax[0] >= bMin[0] && aMin[1] <= bMax[1] && aMax[1] >= bMin[1] && aMin[2] <= bMax[2] && aMax[2] >= bMin[2];\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(point) {\n var min = this.getMin();\n var max = this.getMax();\n return !(point[0] < min[0] || point[0] > max[0] || point[1] < min[1] || point[1] > max[1] || point[2] < min[2] || point[2] > max[2]);\n }\n /**\n * get n-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getNegativeFarPoint\",\n value: function getNegativeFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.min);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.max[2]);\n }\n }\n /**\n * get p-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getPositiveFarPoint\",\n value: function getPositiveFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.max);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.min[2]);\n }\n }\n }]);\n\n return AABB;\n}();\n//# sourceMappingURL=AABB.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzPzEwZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUM3Qjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSw4QkFBOEIsOENBQUk7QUFDbEMsd0NBQXdDLDhDQUFJO0FBQzVDLGlCQUFpQiw4Q0FBSTtBQUNyQixpQkFBaUIsOENBQUk7QUFDckI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICogQXhpcy1BbGlnbmVkIEJvdW5kaW5nIEJveFxuICog5Li65LqG5L6/5LqO5ZCO57utIEZydXN0dW0gQ3VsbGluZ++8jOmAmui/h+afpeaJvuihqOWumuS5iSBwLXZlcnRleCDlkowgbi12ZXJ0ZXhcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gKi9cbmV4cG9ydCB2YXIgQUFCQiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEFBQkIoY2VudGVyLCBoYWxmRXh0ZW50cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBQUJCKTtcblxuICAgIHRoaXMuY2VudGVyID0gdm9pZCAwO1xuICAgIHRoaXMuaGFsZkV4dGVudHMgPSB2b2lkIDA7XG4gICAgdGhpcy5taW4gPSB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMubWF4ID0gdmVjMy5jcmVhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZShjZW50ZXIsIGhhbGZFeHRlbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBQUJCLCBbe1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKGNlbnRlciwgaGFsZkV4dGVudHMpIHtcbiAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyIHx8IHZlYzMuY3JlYXRlKCk7XG4gICAgICB0aGlzLmhhbGZFeHRlbnRzID0gaGFsZkV4dGVudHMgfHwgdmVjMy5mcm9tVmFsdWVzKDAuNSwgMC41LCAwLjUpO1xuICAgICAgdGhpcy5taW4gPSB2ZWMzLnN1Yih0aGlzLm1pbiwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgICAgdGhpcy5tYXggPSB2ZWMzLmFkZCh0aGlzLm1heCwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRNaW5NYXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWluTWF4KG1pbiwgbWF4KSB7XG4gICAgICB2ZWMzLmFkZCh0aGlzLmNlbnRlciwgbWF4LCBtaW4pO1xuICAgICAgdmVjMy5zY2FsZSh0aGlzLmNlbnRlciwgdGhpcy5jZW50ZXIsIDAuNSk7XG4gICAgICB2ZWMzLnN1Yih0aGlzLmhhbGZFeHRlbnRzLCBtYXgsIG1pbik7XG4gICAgICB2ZWMzLnNjYWxlKHRoaXMuaGFsZkV4dGVudHMsIHRoaXMuaGFsZkV4dGVudHMsIDAuNSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5taW4sIG1pbik7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5tYXgsIG1heCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNaW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1heFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNYXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWFiYikge1xuICAgICAgdmFyIHRjID0gdGhpcy5jZW50ZXI7XG4gICAgICB2YXIgdGN4ID0gdGNbMF07XG4gICAgICB2YXIgdGN5ID0gdGNbMV07XG4gICAgICB2YXIgdGN6ID0gdGNbMl07XG4gICAgICB2YXIgdGggPSB0aGlzLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIHRoeCA9IHRoWzBdO1xuICAgICAgdmFyIHRoeSA9IHRoWzFdO1xuICAgICAgdmFyIHRoeiA9IHRoWzJdO1xuICAgICAgdmFyIHRtaW54ID0gdGN4IC0gdGh4O1xuICAgICAgdmFyIHRtYXh4ID0gdGN4ICsgdGh4O1xuICAgICAgdmFyIHRtaW55ID0gdGN5IC0gdGh5O1xuICAgICAgdmFyIHRtYXh5ID0gdGN5ICsgdGh5O1xuICAgICAgdmFyIHRtaW56ID0gdGN6IC0gdGh6O1xuICAgICAgdmFyIHRtYXh6ID0gdGN6ICsgdGh6O1xuICAgICAgdmFyIG9jID0gYWFiYi5jZW50ZXI7XG4gICAgICB2YXIgb2N4ID0gb2NbMF07XG4gICAgICB2YXIgb2N5ID0gb2NbMV07XG4gICAgICB2YXIgb2N6ID0gb2NbMl07XG4gICAgICB2YXIgb2ggPSBhYWJiLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIG9oeCA9IG9oWzBdO1xuICAgICAgdmFyIG9oeSA9IG9oWzFdO1xuICAgICAgdmFyIG9oeiA9IG9oWzJdO1xuICAgICAgdmFyIG9taW54ID0gb2N4IC0gb2h4O1xuICAgICAgdmFyIG9tYXh4ID0gb2N4ICsgb2h4O1xuICAgICAgdmFyIG9taW55ID0gb2N5IC0gb2h5O1xuICAgICAgdmFyIG9tYXh5ID0gb2N5ICsgb2h5O1xuICAgICAgdmFyIG9taW56ID0gb2N6IC0gb2h6O1xuICAgICAgdmFyIG9tYXh6ID0gb2N6ICsgb2h6O1xuXG4gICAgICBpZiAob21pbnggPCB0bWlueCkge1xuICAgICAgICB0bWlueCA9IG9taW54O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHggPiB0bWF4eCkge1xuICAgICAgICB0bWF4eCA9IG9tYXh4O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnkgPCB0bWlueSkge1xuICAgICAgICB0bWlueSA9IG9taW55O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHkgPiB0bWF4eSkge1xuICAgICAgICB0bWF4eSA9IG9tYXh5O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnogPCB0bWlueikge1xuICAgICAgICB0bWlueiA9IG9taW56O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHogPiB0bWF4eikge1xuICAgICAgICB0bWF4eiA9IG9tYXh6O1xuICAgICAgfVxuXG4gICAgICB0Y1swXSA9ICh0bWlueCArIHRtYXh4KSAqIDAuNTtcbiAgICAgIHRjWzFdID0gKHRtaW55ICsgdG1heHkpICogMC41O1xuICAgICAgdGNbMl0gPSAodG1pbnogKyB0bWF4eikgKiAwLjU7XG4gICAgICB0aFswXSA9ICh0bWF4eCAtIHRtaW54KSAqIDAuNTtcbiAgICAgIHRoWzFdID0gKHRtYXh5IC0gdG1pbnkpICogMC41O1xuICAgICAgdGhbMl0gPSAodG1heHogLSB0bWlueikgKiAwLjU7XG4gICAgICB0aGlzLm1pblswXSA9IHRtaW54O1xuICAgICAgdGhpcy5taW5bMV0gPSB0bWlueTtcbiAgICAgIHRoaXMubWluWzJdID0gdG1pbno7XG4gICAgICB0aGlzLm1heFswXSA9IHRtYXh4O1xuICAgICAgdGhpcy5tYXhbMV0gPSB0bWF4eTtcbiAgICAgIHRoaXMubWF4WzJdID0gdG1heHo7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0cyhhYWJiKSB7XG4gICAgICB2YXIgYU1heCA9IHRoaXMuZ2V0TWF4KCk7XG4gICAgICB2YXIgYU1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgYk1heCA9IGFhYmIuZ2V0TWF4KCk7XG4gICAgICB2YXIgYk1pbiA9IGFhYmIuZ2V0TWluKCk7XG4gICAgICByZXR1cm4gYU1pblswXSA8PSBiTWF4WzBdICYmIGFNYXhbMF0gPj0gYk1pblswXSAmJiBhTWluWzFdIDw9IGJNYXhbMV0gJiYgYU1heFsxXSA+PSBiTWluWzFdICYmIGFNaW5bMl0gPD0gYk1heFsyXSAmJiBhTWF4WzJdID49IGJNaW5bMl07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbnRhaW5zUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udGFpbnNQb2ludChwb2ludCkge1xuICAgICAgdmFyIG1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgbWF4ID0gdGhpcy5nZXRNYXgoKTtcbiAgICAgIHJldHVybiAhKHBvaW50WzBdIDwgbWluWzBdIHx8IHBvaW50WzBdID4gbWF4WzBdIHx8IHBvaW50WzFdIDwgbWluWzFdIHx8IHBvaW50WzFdID4gbWF4WzFdIHx8IHBvaW50WzJdIDwgbWluWzJdIHx8IHBvaW50WzJdID4gbWF4WzJdKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogZ2V0IG4tdmVydGV4XG4gICAgICogQHBhcmFtIHBsYW5lIHBsYW5lIG9mIEN1bGxpbmdWb2x1bWVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldE5lZ2F0aXZlRmFyUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TmVnYXRpdmVGYXJQb2ludChwbGFuZSkge1xuICAgICAgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCB0aGlzLm1pbik7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDEwMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1pblsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBnZXQgcC12ZXJ0ZXhcbiAgICAgKiBAcGFyYW0gcGxhbmUgcGxhbmUgb2YgQ3VsbGluZ1ZvbHVtZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UG9zaXRpdmVGYXJQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lKSB7XG4gICAgICBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIHRoaXMubWF4KTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWluWzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMDApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDEwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMDEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWluWzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFBQkI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BQUJCLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js":
/*!*********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js ***!
\*********************************************************************/
/*! exports provided: BoundingSphere */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return BoundingSphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar BoundingSphere = /*#__PURE__*/function () {\n function BoundingSphere(center, radius) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, BoundingSphere);\n\n this.center = void 0;\n this.radius = void 0;\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.radius = radius || 0.5;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BoundingSphere, [{\n key: \"containsPoint\",\n value: function containsPoint(point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, point, this.center);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) < this.radius * this.radius;\n }\n }, {\n key: \"intersects\",\n value: function intersects(sphere) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, sphere.center, this.center);\n var totalRadius = sphere.radius + this.radius;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) <= totalRadius * totalRadius) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return BoundingSphere;\n}();\n//# sourceMappingURL=BoundingSphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9Cb3VuZGluZ1NwaGVyZS5qcz82OWU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDakMsY0FBYyw4Q0FBSTtBQUNYO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsYUFBYSw4Q0FBSTtBQUNqQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWOztBQUVBLFVBQVUsOENBQUk7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvQm91bmRpbmdTcGhlcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbmV4cG9ydCB2YXIgQm91bmRpbmdTcGhlcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCb3VuZGluZ1NwaGVyZShjZW50ZXIsIHJhZGl1cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCb3VuZGluZ1NwaGVyZSk7XG5cbiAgICB0aGlzLmNlbnRlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJhZGl1cyA9IHZvaWQgMDtcbiAgICB0aGlzLmNlbnRlciA9IGNlbnRlciB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzIHx8IDAuNTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCb3VuZGluZ1NwaGVyZSwgW3tcbiAgICBrZXk6IFwiY29udGFpbnNQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWluc1BvaW50KHBvaW50KSB7XG4gICAgICB2ZWMzLnN1Yih0bXBWZWNBLCBwb2ludCwgdGhpcy5jZW50ZXIpO1xuICAgICAgcmV0dXJuIHZlYzMubGVuZ3RoKHRtcFZlY0EpIDwgdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzKHNwaGVyZSkge1xuICAgICAgdmVjMy5zdWIodG1wVmVjQSwgc3BoZXJlLmNlbnRlciwgdGhpcy5jZW50ZXIpO1xuICAgICAgdmFyIHRvdGFsUmFkaXVzID0gc3BoZXJlLnJhZGl1cyArIHRoaXMucmFkaXVzO1xuXG4gICAgICBpZiAodmVjMy5sZW5ndGgodG1wVmVjQSkgPD0gdG90YWxSYWRpdXMgKiB0b3RhbFJhZGl1cykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCb3VuZGluZ1NwaGVyZTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJvdW5kaW5nU3BoZXJlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js ***!
\**************************************************************/
/*! exports provided: Mask, Frustum */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return Mask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return Frustum; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Plane */ \"./node_modules/@antv/g-webgpu-core/es/shape/Plane.js\");\n\n\n\n\n\nvar Mask;\n\n(function (Mask) {\n Mask[Mask[\"OUTSIDE\"] = 4294967295] = \"OUTSIDE\";\n Mask[Mask[\"INSIDE\"] = 0] = \"INSIDE\";\n Mask[Mask[\"INDETERMINATE\"] = 2147483647] = \"INDETERMINATE\";\n})(Mask || (Mask = {}));\n\nvar Frustum = /*#__PURE__*/function () {\n function Frustum(planes) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Frustum);\n\n this.planes = [];\n\n if (planes) {\n this.planes = planes;\n } else {\n for (var i = 0; i < 6; i++) {\n this.planes.push(new _Plane__WEBPACK_IMPORTED_MODULE_4__[\"Plane\"]());\n }\n }\n }\n /**\n * extract 6 planes from vpMatrix\n * @see http://www8.cs.umu.se/kurser/5DV051/HT12/lab/plane_extraction.pdf\n * @param vpMatrix viewProjectionMatrix\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Frustum, [{\n key: \"extractFromVPMatrix\",\n value: function extractFromVPMatrix(vpMatrix) {\n var _vpMatrix = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(vpMatrix, 16),\n m0 = _vpMatrix[0],\n m1 = _vpMatrix[1],\n m2 = _vpMatrix[2],\n m3 = _vpMatrix[3],\n m4 = _vpMatrix[4],\n m5 = _vpMatrix[5],\n m6 = _vpMatrix[6],\n m7 = _vpMatrix[7],\n m8 = _vpMatrix[8],\n m9 = _vpMatrix[9],\n m10 = _vpMatrix[10],\n m11 = _vpMatrix[11],\n m12 = _vpMatrix[12],\n m13 = _vpMatrix[13],\n m14 = _vpMatrix[14],\n m15 = _vpMatrix[15]; // right\n\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[0].normal, m3 - m0, m7 - m4, m11 - m8);\n this.planes[0].distance = -(m15 - m12); // left\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[1].normal, m3 + m0, m7 + m4, m11 + m8);\n this.planes[1].distance = -(m15 + m12); // bottom\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[2].normal, m3 + m1, m7 + m5, m11 + m9);\n this.planes[2].distance = -(m15 + m13); // top\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[3].normal, m3 - m1, m7 - m5, m11 - m9);\n this.planes[3].distance = -(m15 - m13); // far\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[4].normal, m3 - m2, m7 - m6, m11 - m10);\n this.planes[4].distance = -(m15 - m14); // near\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[5].normal, m3 + m2, m7 + m6, m11 + m10);\n this.planes[5].distance = -(m15 + m14);\n this.planes.forEach(function (plane) {\n plane.normalize();\n plane.updatePNVertexFlag();\n });\n }\n }]);\n\n return Frustum;\n}();\n//# sourceMappingURL=Frustum.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9GcnVzdHVtLmpzP2E5ZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNFO0FBQ047QUFDN0I7QUFDRDtBQUN6Qjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0JBQW9COztBQUVkO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixPQUFPO0FBQzVCLDZCQUE2Qiw0Q0FBSztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHNCQUFzQiwyRUFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7OztBQUc5QixNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvRnJ1c3R1bS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IFBsYW5lIH0gZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgdmFyIE1hc2s7XG5cbihmdW5jdGlvbiAoTWFzaykge1xuICBNYXNrW01hc2tbXCJPVVRTSURFXCJdID0gNDI5NDk2NzI5NV0gPSBcIk9VVFNJREVcIjtcbiAgTWFza1tNYXNrW1wiSU5TSURFXCJdID0gMF0gPSBcIklOU0lERVwiO1xuICBNYXNrW01hc2tbXCJJTkRFVEVSTUlOQVRFXCJdID0gMjE0NzQ4MzY0N10gPSBcIklOREVURVJNSU5BVEVcIjtcbn0pKE1hc2sgfHwgKE1hc2sgPSB7fSkpO1xuXG5leHBvcnQgdmFyIEZydXN0dW0gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcnVzdHVtKHBsYW5lcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcnVzdHVtKTtcblxuICAgIHRoaXMucGxhbmVzID0gW107XG5cbiAgICBpZiAocGxhbmVzKSB7XG4gICAgICB0aGlzLnBsYW5lcyA9IHBsYW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgdGhpcy5wbGFuZXMucHVzaChuZXcgUGxhbmUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBleHRyYWN0IDYgcGxhbmVzIGZyb20gdnBNYXRyaXhcbiAgICogQHNlZSBodHRwOi8vd3d3OC5jcy51bXUuc2Uva3Vyc2VyLzVEVjA1MS9IVDEyL2xhYi9wbGFuZV9leHRyYWN0aW9uLnBkZlxuICAgKiBAcGFyYW0gdnBNYXRyaXggdmlld1Byb2plY3Rpb25NYXRyaXhcbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoRnJ1c3R1bSwgW3tcbiAgICBrZXk6IFwiZXh0cmFjdEZyb21WUE1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleHRyYWN0RnJvbVZQTWF0cml4KHZwTWF0cml4KSB7XG4gICAgICB2YXIgX3ZwTWF0cml4ID0gX3NsaWNlZFRvQXJyYXkodnBNYXRyaXgsIDE2KSxcbiAgICAgICAgICBtMCA9IF92cE1hdHJpeFswXSxcbiAgICAgICAgICBtMSA9IF92cE1hdHJpeFsxXSxcbiAgICAgICAgICBtMiA9IF92cE1hdHJpeFsyXSxcbiAgICAgICAgICBtMyA9IF92cE1hdHJpeFszXSxcbiAgICAgICAgICBtNCA9IF92cE1hdHJpeFs0XSxcbiAgICAgICAgICBtNSA9IF92cE1hdHJpeFs1XSxcbiAgICAgICAgICBtNiA9IF92cE1hdHJpeFs2XSxcbiAgICAgICAgICBtNyA9IF92cE1hdHJpeFs3XSxcbiAgICAgICAgICBtOCA9IF92cE1hdHJpeFs4XSxcbiAgICAgICAgICBtOSA9IF92cE1hdHJpeFs5XSxcbiAgICAgICAgICBtMTAgPSBfdnBNYXRyaXhbMTBdLFxuICAgICAgICAgIG0xMSA9IF92cE1hdHJpeFsxMV0sXG4gICAgICAgICAgbTEyID0gX3ZwTWF0cml4WzEyXSxcbiAgICAgICAgICBtMTMgPSBfdnBNYXRyaXhbMTNdLFxuICAgICAgICAgIG0xNCA9IF92cE1hdHJpeFsxNF0sXG4gICAgICAgICAgbTE1ID0gX3ZwTWF0cml4WzE1XTsgLy8gcmlnaHRcblxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1swXS5ub3JtYWwsIG0zIC0gbTAsIG03IC0gbTQsIG0xMSAtIG04KTtcbiAgICAgIHRoaXMucGxhbmVzWzBdLmRpc3RhbmNlID0gLShtMTUgLSBtMTIpOyAvLyBsZWZ0XG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzFdLm5vcm1hbCwgbTMgKyBtMCwgbTcgKyBtNCwgbTExICsgbTgpO1xuICAgICAgdGhpcy5wbGFuZXNbMV0uZGlzdGFuY2UgPSAtKG0xNSArIG0xMik7IC8vIGJvdHRvbVxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1syXS5ub3JtYWwsIG0zICsgbTEsIG03ICsgbTUsIG0xMSArIG05KTtcbiAgICAgIHRoaXMucGxhbmVzWzJdLmRpc3RhbmNlID0gLShtMTUgKyBtMTMpOyAvLyB0b3BcblxuICAgICAgdmVjMy5zZXQodGhpcy5wbGFuZXNbM10ubm9ybWFsLCBtMyAtIG0xLCBtNyAtIG01LCBtMTEgLSBtOSk7XG4gICAgICB0aGlzLnBsYW5lc1szXS5kaXN0YW5jZSA9IC0obTE1IC0gbTEzKTsgLy8gZmFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzRdLm5vcm1hbCwgbTMgLSBtMiwgbTcgLSBtNiwgbTExIC0gbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzRdLmRpc3RhbmNlID0gLShtMTUgLSBtMTQpOyAvLyBuZWFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzVdLm5vcm1hbCwgbTMgKyBtMiwgbTcgKyBtNiwgbTExICsgbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzVdLmRpc3RhbmNlID0gLShtMTUgKyBtMTQpO1xuICAgICAgdGhpcy5wbGFuZXMuZm9yRWFjaChmdW5jdGlvbiAocGxhbmUpIHtcbiAgICAgICAgcGxhbmUubm9ybWFsaXplKCk7XG4gICAgICAgIHBsYW5lLnVwZGF0ZVBOVmVydGV4RmxhZygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZydXN0dW07XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcnVzdHVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/shape/Plane.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/shape/Plane.js ***!
\************************************************************/
/*! exports provided: Plane */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\nvar Plane = /*#__PURE__*/function () {\n /**\n * lookup table for p-vertex & n-vertex when doing frustum culling\n */\n function Plane(distance, normal) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n this.distance = void 0;\n this.normal = void 0;\n this.pnVertexFlag = void 0;\n this.distance = distance || 0;\n this.normal = normal || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 1, 0);\n this.updatePNVertexFlag();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"updatePNVertexFlag\",\n value: function updatePNVertexFlag() {\n this.pnVertexFlag = (Number(this.normal[0] >= 0) << 8) + (Number(this.normal[1] >= 0) << 4) + Number(this.normal[2] >= 0);\n }\n }, {\n key: \"distanceToPoint\",\n value: function distanceToPoint(point) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(point, this.normal) - this.distance;\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n var invLen = 1 / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].len(this.normal);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.normal, this.normal, invLen);\n this.distance *= invLen;\n }\n }, {\n key: \"intersectsLine\",\n value: function intersectsLine(start, end, point) {\n var d0 = this.distanceToPoint(start);\n var d1 = this.distanceToPoint(end);\n var t = d0 / (d0 - d1);\n var intersects = t >= 0 && t <= 1;\n\n if (intersects && point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].lerp(point, start, end, t);\n }\n\n return intersects;\n }\n }]);\n\n return Plane;\n}();\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9QbGFuZS5qcz83MTc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDhDQUFJO0FBQ2pCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsOENBQUk7QUFDM0IsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvUGxhbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmV4cG9ydCB2YXIgUGxhbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogbG9va3VwIHRhYmxlIGZvciBwLXZlcnRleCAmIG4tdmVydGV4IHdoZW4gZG9pbmcgZnJ1c3R1bSBjdWxsaW5nXG4gICAqL1xuICBmdW5jdGlvbiBQbGFuZShkaXN0YW5jZSwgbm9ybWFsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW5lKTtcblxuICAgIHRoaXMuZGlzdGFuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5ub3JtYWwgPSB2b2lkIDA7XG4gICAgdGhpcy5wblZlcnRleEZsYWcgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXN0YW5jZSA9IGRpc3RhbmNlIHx8IDA7XG4gICAgdGhpcy5ub3JtYWwgPSBub3JtYWwgfHwgdmVjMy5mcm9tVmFsdWVzKDAsIDEsIDApO1xuICAgIHRoaXMudXBkYXRlUE5WZXJ0ZXhGbGFnKCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGxhbmUsIFt7XG4gICAga2V5OiBcInVwZGF0ZVBOVmVydGV4RmxhZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVQTlZlcnRleEZsYWcoKSB7XG4gICAgICB0aGlzLnBuVmVydGV4RmxhZyA9IChOdW1iZXIodGhpcy5ub3JtYWxbMF0gPj0gMCkgPDwgOCkgKyAoTnVtYmVyKHRoaXMubm9ybWFsWzFdID49IDApIDw8IDQpICsgTnVtYmVyKHRoaXMubm9ybWFsWzJdID49IDApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXN0YW5jZVRvUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzdGFuY2VUb1BvaW50KHBvaW50KSB7XG4gICAgICByZXR1cm4gdmVjMy5kb3QocG9pbnQsIHRoaXMubm9ybWFsKSAtIHRoaXMuZGlzdGFuY2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm5vcm1hbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgICB2YXIgaW52TGVuID0gMSAvIHZlYzMubGVuKHRoaXMubm9ybWFsKTtcbiAgICAgIHZlYzMuc2NhbGUodGhpcy5ub3JtYWwsIHRoaXMubm9ybWFsLCBpbnZMZW4pO1xuICAgICAgdGhpcy5kaXN0YW5jZSAqPSBpbnZMZW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNMaW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNMaW5lKHN0YXJ0LCBlbmQsIHBvaW50KSB7XG4gICAgICB2YXIgZDAgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChzdGFydCk7XG4gICAgICB2YXIgZDEgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChlbmQpO1xuICAgICAgdmFyIHQgPSBkMCAvIChkMCAtIGQxKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gdCA+PSAwICYmIHQgPD0gMTtcblxuICAgICAgaWYgKGludGVyc2VjdHMgJiYgcG9pbnQpIHtcbiAgICAgICAgdmVjMy5sZXJwKHBvaW50LCBzdGFydCwgZW5kLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBsYW5lO1xufSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/Plane.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/shape/Ray.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/shape/Ray.js ***!
\**********************************************************/
/*! exports provided: Ray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return Ray; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecB = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecC = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecD = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecE = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n/**\n * 包含求交方法:\n * * intersectsShape(Shape, intersection) 返回交点和求交结果\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n * @see https://github.com/mrdoob/three.js/blob/dev/src/math/Ray.js\n */\n\nvar Ray = /*#__PURE__*/function () {\n function Ray(origin, direction) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Ray);\n\n this.origin = void 0;\n this.direction = void 0;\n this.origin = origin || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.direction = direction || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 0, -1);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Ray, [{\n key: \"intersectsAABB\",\n value: function intersectsAABB(aabb, intersection) {\n return intersection ? this.intersectAABBWithIntersection(aabb, intersection) : this.intersectsAABBWithoutIntersection(aabb);\n }\n }, {\n key: \"intersectsSphere\",\n value: function intersectsSphere(sphere, intersection) {\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, this.origin, sphere.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].normalize(tmpVecB, gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(tmpVecB, this.direction));\n var b = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, tmpVecB);\n var c = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, m) - sphere.radius * sphere.radius; // exit if ray's origin outside of sphere (c > 0) and ray pointing away from s (b > 0)\n\n if (c > 0 && b > 0) {\n return null;\n }\n\n var discr = b * b - c; // a negative discriminant corresponds to ray missing sphere\n\n if (discr < 0) {\n return false;\n } // ray intersects sphere, compute smallest t value of intersection\n\n\n var t = Math.abs(-b - Math.sqrt(discr)); // if t is negative, ray started inside sphere so clamp t to zero\n\n if (intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, t);\n }\n\n return true;\n }\n }, {\n key: \"intersectsPlane\",\n value: function intersectsPlane(plane, intersection) {\n var t = (plane.distance - gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.origin)) / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.direction);\n var intersects = t >= 0;\n\n if (intersects && intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, this.direction, t);\n }\n\n return intersects;\n }\n /**\n * faster than implements like Three.js\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n */\n\n }, {\n key: \"intersectsAABBWithoutIntersection\",\n value: function intersectsAABBWithoutIntersection(aabb) {\n var diff = tmpVecA;\n var cross = tmpVecB;\n var prod = tmpVecC;\n var absDiff = tmpVecD;\n var absDir = tmpVecE;\n var rayDir = this.direction;\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(diff, this.origin, aabb.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDiff, Math.abs(diff[0]), Math.abs(diff[1]), Math.abs(diff[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].mul(prod, diff, rayDir);\n\n if (absDiff[0] > aabb.halfExtents[0] && prod[0] >= 0 || absDiff[1] > aabb.halfExtents[1] && prod[1] >= 0 || absDiff[2] > aabb.halfExtents[2] && prod[2] >= 0) {\n return false;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDir, Math.abs(rayDir[0]), Math.abs(rayDir[1]), Math.abs(rayDir[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].cross(cross, rayDir, diff);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(cross, Math.abs(cross[0]), Math.abs(cross[1]), Math.abs(cross[2]));\n return !(cross[0] > aabb.halfExtents[1] * absDir[2] + aabb.halfExtents[2] * absDir[1] || cross[1] > aabb.halfExtents[0] * absDir[2] + aabb.halfExtents[2] * absDir[0] || cross[2] > aabb.halfExtents[0] * absDir[1] + aabb.halfExtents[1] * absDir[0]);\n }\n }, {\n key: \"intersectAABBWithIntersection\",\n value: function intersectAABBWithIntersection(aabb, intersection) {\n var tMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMin());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMin, tMin, this.origin);\n var tMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMax());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMax, tMax, this.origin);\n var dir = this.direction; // Ensure that we are not dividing it by zero\n\n if (dir[0] === 0) {\n tMin[0] = tMin[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[0] = tMax[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[0] /= dir[0];\n tMax[0] /= dir[0];\n }\n\n if (dir[1] === 0) {\n tMin[1] = tMin[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[1] = tMax[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[1] /= dir[1];\n tMax[1] /= dir[1];\n }\n\n if (dir[2] === 0) {\n tMin[2] = tMin[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[2] = tMax[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[2] /= dir[2];\n tMax[2] /= dir[2];\n }\n\n var realMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecC, Math.min(tMin[0], tMax[0]), Math.min(tMin[1], tMax[1]), Math.min(tMin[2], tMax[2]));\n var realMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecD, Math.max(tMin[0], tMax[0]), Math.max(tMin[1], tMax[1]), Math.max(tMin[2], tMax[2]));\n var minMax = Math.min(Math.min(realMax[0], realMax[1]), realMax[2]);\n var maxMin = Math.max(Math.max(realMin[0], realMin[1]), realMin[2]);\n var intersects = minMax >= maxMin && maxMin >= 0;\n\n if (intersects) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, maxMin);\n }\n\n return intersects;\n }\n }]);\n\n return Ray;\n}();\n//# sourceMappingURL=Ray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanM/ZDIwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQzdCO0FBQ2pDLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQixjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSw0QkFBNEIsOENBQUk7QUFDaEMsa0NBQWtDLDhDQUFJO0FBQ3RDOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQixNQUFNLDhDQUFJLG9CQUFvQiw4Q0FBSTtBQUNsQyxjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUksMkNBQTJDOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsOENBQThDOztBQUU5QztBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLDhDQUFJLG1DQUFtQyw4Q0FBSTtBQUMzRTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7O0FBRVY7QUFDQTtBQUNBOztBQUVBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiw4Q0FBSSxNQUFNLDhDQUFJO0FBQy9CLE1BQU0sOENBQUk7QUFDVixpQkFBaUIsOENBQUksTUFBTSw4Q0FBSTtBQUMvQixNQUFNLDhDQUFJO0FBQ1YsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsOENBQUk7QUFDeEIsb0JBQW9CLDhDQUFJO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNCID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNDID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNEID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNFID0gdmVjMy5jcmVhdGUoKTtcbi8qKlxuICog5YyF5ZCr5rGC5Lqk5pa55rOV77yaXG4gKiAqIGludGVyc2VjdHNTaGFwZShTaGFwZSwgaW50ZXJzZWN0aW9uKSDov5Tlm57kuqTngrnlkozmsYLkuqTnu5PmnpxcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvZGV2L3NyYy9tYXRoL1JheS5qc1xuICovXG5cbmV4cG9ydCB2YXIgUmF5ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmF5KG9yaWdpbiwgZGlyZWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJheSk7XG5cbiAgICB0aGlzLm9yaWdpbiA9IHZvaWQgMDtcbiAgICB0aGlzLmRpcmVjdGlvbiA9IHZvaWQgMDtcbiAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbiB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAtMSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmF5LCBbe1xuICAgIGtleTogXCJpbnRlcnNlY3RzQUFCQlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzQUFCQihhYWJiLCBpbnRlcnNlY3Rpb24pIHtcbiAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24gPyB0aGlzLmludGVyc2VjdEFBQkJXaXRoSW50ZXJzZWN0aW9uKGFhYmIsIGludGVyc2VjdGlvbikgOiB0aGlzLmludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1NwaGVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzU3BoZXJlKHNwaGVyZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgbSA9IHZlYzMuc3ViKHRtcFZlY0EsIHRoaXMub3JpZ2luLCBzcGhlcmUuY2VudGVyKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRtcFZlY0IsIHZlYzMuY29weSh0bXBWZWNCLCB0aGlzLmRpcmVjdGlvbikpO1xuICAgICAgdmFyIGIgPSB2ZWMzLmRvdChtLCB0bXBWZWNCKTtcbiAgICAgIHZhciBjID0gdmVjMy5kb3QobSwgbSkgLSBzcGhlcmUucmFkaXVzICogc3BoZXJlLnJhZGl1czsgLy8gZXhpdCBpZiByYXkncyBvcmlnaW4gb3V0c2lkZSBvZiBzcGhlcmUgKGMgPiAwKSBhbmQgcmF5IHBvaW50aW5nIGF3YXkgZnJvbSBzIChiID4gMClcblxuICAgICAgaWYgKGMgPiAwICYmIGIgPiAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGlzY3IgPSBiICogYiAtIGM7IC8vIGEgbmVnYXRpdmUgZGlzY3JpbWluYW50IGNvcnJlc3BvbmRzIHRvIHJheSBtaXNzaW5nIHNwaGVyZVxuXG4gICAgICBpZiAoZGlzY3IgPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gcmF5IGludGVyc2VjdHMgc3BoZXJlLCBjb21wdXRlIHNtYWxsZXN0IHQgdmFsdWUgb2YgaW50ZXJzZWN0aW9uXG5cblxuICAgICAgdmFyIHQgPSBNYXRoLmFicygtYiAtIE1hdGguc3FydChkaXNjcikpOyAvLyBpZiB0IGlzIG5lZ2F0aXZlLCByYXkgc3RhcnRlZCBpbnNpZGUgc3BoZXJlIHNvIGNsYW1wIHQgdG8gemVyb1xuXG4gICAgICBpZiAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICAgIHZlYzMuY29weShpbnRlcnNlY3Rpb24sIHRoaXMuZGlyZWN0aW9uKTtcbiAgICAgICAgdmVjMy5zY2FsZUFuZEFkZChpbnRlcnNlY3Rpb24sIHRoaXMub3JpZ2luLCBpbnRlcnNlY3Rpb24sIHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1BsYW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNQbGFuZShwbGFuZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdCA9IChwbGFuZS5kaXN0YW5jZSAtIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5vcmlnaW4pKSAvIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgdmFyIGludGVyc2VjdHMgPSB0ID49IDA7XG5cbiAgICAgIGlmIChpbnRlcnNlY3RzICYmIGludGVyc2VjdGlvbikge1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIHRoaXMuZGlyZWN0aW9uLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGZhc3RlciB0aGFuIGltcGxlbWVudHMgbGlrZSBUaHJlZS5qc1xuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c0FBQkJXaXRob3V0SW50ZXJzZWN0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKSB7XG4gICAgICB2YXIgZGlmZiA9IHRtcFZlY0E7XG4gICAgICB2YXIgY3Jvc3MgPSB0bXBWZWNCO1xuICAgICAgdmFyIHByb2QgPSB0bXBWZWNDO1xuICAgICAgdmFyIGFic0RpZmYgPSB0bXBWZWNEO1xuICAgICAgdmFyIGFic0RpciA9IHRtcFZlY0U7XG4gICAgICB2YXIgcmF5RGlyID0gdGhpcy5kaXJlY3Rpb247XG4gICAgICB2ZWMzLnN1YihkaWZmLCB0aGlzLm9yaWdpbiwgYWFiYi5jZW50ZXIpO1xuICAgICAgdmVjMy5zZXQoYWJzRGlmZiwgTWF0aC5hYnMoZGlmZlswXSksIE1hdGguYWJzKGRpZmZbMV0pLCBNYXRoLmFicyhkaWZmWzJdKSk7XG4gICAgICB2ZWMzLm11bChwcm9kLCBkaWZmLCByYXlEaXIpO1xuXG4gICAgICBpZiAoYWJzRGlmZlswXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gJiYgcHJvZFswXSA+PSAwIHx8IGFic0RpZmZbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzFdICYmIHByb2RbMV0gPj0gMCB8fCBhYnNEaWZmWzJdID4gYWFiYi5oYWxmRXh0ZW50c1syXSAmJiBwcm9kWzJdID49IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2ZWMzLnNldChhYnNEaXIsIE1hdGguYWJzKHJheURpclswXSksIE1hdGguYWJzKHJheURpclsxXSksIE1hdGguYWJzKHJheURpclsyXSkpO1xuICAgICAgdmVjMy5jcm9zcyhjcm9zcywgcmF5RGlyLCBkaWZmKTtcbiAgICAgIHZlYzMuc2V0KGNyb3NzLCBNYXRoLmFicyhjcm9zc1swXSksIE1hdGguYWJzKGNyb3NzWzFdKSwgTWF0aC5hYnMoY3Jvc3NbMl0pKTtcbiAgICAgIHJldHVybiAhKGNyb3NzWzBdID4gYWFiYi5oYWxmRXh0ZW50c1sxXSAqIGFic0RpclsyXSArIGFhYmIuaGFsZkV4dGVudHNbMl0gKiBhYnNEaXJbMV0gfHwgY3Jvc3NbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzBdICogYWJzRGlyWzJdICsgYWFiYi5oYWxmRXh0ZW50c1syXSAqIGFic0RpclswXSB8fCBjcm9zc1syXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gKiBhYnNEaXJbMV0gKyBhYWJiLmhhbGZFeHRlbnRzWzFdICogYWJzRGlyWzBdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb24oYWFiYiwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdE1pbiA9IHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCBhYWJiLmdldE1pbigpKTtcbiAgICAgIHZlYzMuc3ViKHRNaW4sIHRNaW4sIHRoaXMub3JpZ2luKTtcbiAgICAgIHZhciB0TWF4ID0gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIGFhYmIuZ2V0TWF4KCkpO1xuICAgICAgdmVjMy5zdWIodE1heCwgdE1heCwgdGhpcy5vcmlnaW4pO1xuICAgICAgdmFyIGRpciA9IHRoaXMuZGlyZWN0aW9uOyAvLyBFbnN1cmUgdGhhdCB3ZSBhcmUgbm90IGRpdmlkaW5nIGl0IGJ5IHplcm9cblxuICAgICAgaWYgKGRpclswXSA9PT0gMCkge1xuICAgICAgICB0TWluWzBdID0gdE1pblswXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMF0gPSB0TWF4WzBdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMF0gLz0gZGlyWzBdO1xuICAgICAgICB0TWF4WzBdIC89IGRpclswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsxXSA9PT0gMCkge1xuICAgICAgICB0TWluWzFdID0gdE1pblsxXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMV0gPSB0TWF4WzFdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMV0gLz0gZGlyWzFdO1xuICAgICAgICB0TWF4WzFdIC89IGRpclsxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsyXSA9PT0gMCkge1xuICAgICAgICB0TWluWzJdID0gdE1pblsyXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMl0gPSB0TWF4WzJdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMl0gLz0gZGlyWzJdO1xuICAgICAgICB0TWF4WzJdIC89IGRpclsyXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlYWxNaW4gPSB2ZWMzLnNldCh0bXBWZWNDLCBNYXRoLm1pbih0TWluWzBdLCB0TWF4WzBdKSwgTWF0aC5taW4odE1pblsxXSwgdE1heFsxXSksIE1hdGgubWluKHRNaW5bMl0sIHRNYXhbMl0pKTtcbiAgICAgIHZhciByZWFsTWF4ID0gdmVjMy5zZXQodG1wVmVjRCwgTWF0aC5tYXgodE1pblswXSwgdE1heFswXSksIE1hdGgubWF4KHRNaW5bMV0sIHRNYXhbMV0pLCBNYXRoLm1heCh0TWluWzJdLCB0TWF4WzJdKSk7XG4gICAgICB2YXIgbWluTWF4ID0gTWF0aC5taW4oTWF0aC5taW4ocmVhbE1heFswXSwgcmVhbE1heFsxXSksIHJlYWxNYXhbMl0pO1xuICAgICAgdmFyIG1heE1pbiA9IE1hdGgubWF4KE1hdGgubWF4KHJlYWxNaW5bMF0sIHJlYWxNaW5bMV0pLCByZWFsTWluWzJdKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gbWluTWF4ID49IG1heE1pbiAmJiBtYXhNaW4gPj0gMDtcblxuICAgICAgaWYgKGludGVyc2VjdHMpIHtcbiAgICAgICAgdmVjMy5jb3B5KGludGVyc2VjdGlvbiwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIGludGVyc2VjdGlvbiwgbWF4TWluKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJheTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/Ray.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/shape/index.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/shape/index.js ***!
\************************************************************/
/*! exports provided: AABB, BoundingSphere, Mask, Frustum, Plane, Ray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AABB__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AABB */ \"./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _AABB__WEBPACK_IMPORTED_MODULE_0__[\"AABB\"]; });\n\n/* harmony import */ var _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BoundingSphere */ \"./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__[\"BoundingSphere\"]; });\n\n/* harmony import */ var _Frustum__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Frustum */ \"./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Frustum\"]; });\n\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Plane */ \"./node_modules/@antv/g-webgpu-core/es/shape/Plane.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _Plane__WEBPACK_IMPORTED_MODULE_3__[\"Plane\"]; });\n\n/* harmony import */ var _Ray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Ray */ \"./node_modules/@antv/g-webgpu-core/es/shape/Ray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _Ray__WEBPACK_IMPORTED_MODULE_4__[\"Ray\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9pbmRleC5qcz9lM2M4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QjtBQUNVO0FBQ1A7QUFDRjtBQUNGO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0FBQkInO1xuZXhwb3J0ICogZnJvbSAnLi9Cb3VuZGluZ1NwaGVyZSc7XG5leHBvcnQgKiBmcm9tICcuL0ZydXN0dW0nO1xuZXhwb3J0ICogZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgKiBmcm9tICcuL1JheSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/aabb.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/aabb.js ***!
\***********************************************************/
/*! exports provided: generateAABBFromVertices */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return generateAABBFromVertices; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape/AABB */ \"./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n/**\n * generate AABB with positions\n * @param positions [x1,y1,z1, x2,y2,z2]\n */\n\nfunction generateAABBFromVertices(positions) {\n var aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_1__[\"AABB\"]();\n var min = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n var max = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n\n for (var i = 3; i < positions.length;) {\n var x = positions[i++];\n var y = positions[i++];\n var z = positions[i++];\n\n if (x < min[0]) {\n min[0] = x;\n }\n\n if (y < min[1]) {\n min[1] = y;\n }\n\n if (z < min[2]) {\n min[2] = z;\n }\n\n if (x > max[0]) {\n max[0] = x;\n }\n\n if (y > max[1]) {\n max[1] = y;\n }\n\n if (z > max[2]) {\n max[2] = z;\n }\n }\n\n aabb.setMinMax(min, max);\n return aabb;\n}\n//# sourceMappingURL=aabb.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzPzRhYzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLGlCQUFpQixnREFBSTtBQUNyQixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7O0FBRWhCLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBBQUJCIH0gZnJvbSAnLi4vc2hhcGUvQUFCQic7XG4vKipcbiAqIGdlbmVyYXRlIEFBQkIgd2l0aCBwb3NpdGlvbnNcbiAqIEBwYXJhbSBwb3NpdGlvbnMgW3gxLHkxLHoxLCB4Mix5Mix6Ml1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzKHBvc2l0aW9ucykge1xuICB2YXIgYWFiYiA9IG5ldyBBQUJCKCk7XG4gIHZhciBtaW4gPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG4gIHZhciBtYXggPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG5cbiAgZm9yICh2YXIgaSA9IDM7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOykge1xuICAgIHZhciB4ID0gcG9zaXRpb25zW2krK107XG4gICAgdmFyIHkgPSBwb3NpdGlvbnNbaSsrXTtcbiAgICB2YXIgeiA9IHBvc2l0aW9uc1tpKytdO1xuXG4gICAgaWYgKHggPCBtaW5bMF0pIHtcbiAgICAgIG1pblswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPCBtaW5bMV0pIHtcbiAgICAgIG1pblsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPCBtaW5bMl0pIHtcbiAgICAgIG1pblsyXSA9IHo7XG4gICAgfVxuXG4gICAgaWYgKHggPiBtYXhbMF0pIHtcbiAgICAgIG1heFswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPiBtYXhbMV0pIHtcbiAgICAgIG1heFsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPiBtYXhbMl0pIHtcbiAgICAgIG1heFsyXSA9IHo7XG4gICAgfVxuICB9XG5cbiAgYWFiYi5zZXRNaW5NYXgobWluLCBtYXgpO1xuICByZXR1cm4gYWFiYjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFhYmIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/aabb.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/is-number.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/is-number.js ***!
\****************************************************************/
/*! exports provided: isNumber */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanM/MzhhMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1udW1iZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/is-number.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js":
/*!********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js ***!
\********************************************************************/
/*! exports provided: isTypedArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzP2U5OTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLG9FQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG5cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG52YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nO1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcbnZhciBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXSc7XG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG52YXIgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXSc7XG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG52YXIgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xudmFyIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJztcbnZhciBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSc7XG52YXIgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nO1xudmFyIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nO1xudmFyIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nO1xudmFyIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nO1xudmFyIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSc7XG52YXIgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJztcbnZhciB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPSB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9IHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID0gdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cblxudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cblxudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW29iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpXTtcbn1cblxuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0Jztcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzVHlwZWRBcnJheSA9IGJhc2VJc1R5cGVkQXJyYXk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy10eXBlZGFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js ***!
\***************************************************************/
/*! exports provided: isSafari */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return isSafari; });\nvar isSafari = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\n//# sourceMappingURL=isSafari.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pc1NhZmFyaS5qcz85NjMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvaXNTYWZhcmkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGlzU2FmYXJpID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL1ZlcnNpb25cXC9bXFxkXFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzU2FmYXJpLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/math.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/math.js ***!
\***********************************************************/
/*! exports provided: getAngle, createVec3, getRotationScale, decodePickingColor, encodePickingColor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRotationScale\", function() { return getRotationScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodePickingColor\", function() { return decodePickingColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/g-webgpu-core/es/utils/is-number.js\");\n\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\nfunction getRotationScale(matrix, result) {\n result[0] = matrix[0];\n result[1] = matrix[1];\n result[2] = matrix[2];\n result[3] = matrix[4];\n result[4] = matrix[5];\n result[5] = matrix[6];\n result[6] = matrix[8];\n result[7] = matrix[9];\n result[8] = matrix[10];\n return result;\n}\nfunction decodePickingColor(color) {\n var _color = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(color, 3),\n i1 = _color[0],\n i2 = _color[1],\n i3 = _color[2]; // 1 was added to seperate from no selection\n\n\n var index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n}\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzP2ZiMTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0U7QUFDakM7QUFDTTtBQUNoQztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxNQUFNLDJEQUFRO0FBQ2QsV0FBVyw4Q0FBSTtBQUNmOztBQUVBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmLEdBQUc7OztBQUdILFNBQVMsOENBQUk7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyRUFBYztBQUM3QjtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYW5nbGUpIHtcbiAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChhbmdsZSA+IDM2MCB8fCBhbmdsZSA8IC0zNjApIHtcbiAgICByZXR1cm4gYW5nbGUgJSAzNjA7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmVjMyh4LCB5LCB6KSB7XG4gIGlmIChpc051bWJlcih4KSkge1xuICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXMoeCwgeSwgeik7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gdmVjMy5jbG9uZSh4KTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHhbMF0sIHhbMV0sIHhbMl0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdGF0aW9uU2NhbGUobWF0cml4LCByZXN1bHQpIHtcbiAgcmVzdWx0WzBdID0gbWF0cml4WzBdO1xuICByZXN1bHRbMV0gPSBtYXRyaXhbMV07XG4gIHJlc3VsdFsyXSA9IG1hdHJpeFsyXTtcbiAgcmVzdWx0WzNdID0gbWF0cml4WzRdO1xuICByZXN1bHRbNF0gPSBtYXRyaXhbNV07XG4gIHJlc3VsdFs1XSA9IG1hdHJpeFs2XTtcbiAgcmVzdWx0WzZdID0gbWF0cml4WzhdO1xuICByZXN1bHRbN10gPSBtYXRyaXhbOV07XG4gIHJlc3VsdFs4XSA9IG1hdHJpeFsxMF07XG4gIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUGlja2luZ0NvbG9yKGNvbG9yKSB7XG4gIHZhciBfY29sb3IgPSBfc2xpY2VkVG9BcnJheShjb2xvciwgMyksXG4gICAgICBpMSA9IF9jb2xvclswXSxcbiAgICAgIGkyID0gX2NvbG9yWzFdLFxuICAgICAgaTMgPSBfY29sb3JbMl07IC8vIDEgd2FzIGFkZGVkIHRvIHNlcGVyYXRlIGZyb20gbm8gc2VsZWN0aW9uXG5cblxuICB2YXIgaW5kZXggPSBpMSArIGkyICogMjU2ICsgaTMgKiA2NTUzNiAtIDE7XG4gIHJldHVybiBpbmRleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQaWNraW5nQ29sb3IoZmVhdHVyZUlkeCkge1xuICByZXR1cm4gW2ZlYXR1cmVJZHggKyAxICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ID4+IDggJiAyNTVdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/math.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js":
/*!********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js ***!
\********************************************************************/
/*! exports provided: getUniformLengthByType, extractUniforms */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getUniformLengthByType\", function() { return getUniformLengthByType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\nfunction getUniformLengthByType(type) {\n var arrayLength = 0;\n\n switch (type) {\n case 'vec2':\n case 'ivec2':\n arrayLength = 2;\n break;\n\n case 'vec3':\n case 'ivec3':\n arrayLength = 3;\n break;\n\n case 'vec4':\n case 'ivec4':\n case 'mat2':\n arrayLength = 4;\n break;\n\n case 'mat3':\n arrayLength = 9;\n break;\n\n case 'mat4':\n arrayLength = 16;\n break;\n\n default:\n }\n\n return arrayLength;\n}\nvar uniformRegExp = /uniform\\s+(bool|float|int|vec2|vec3|vec4|ivec2|ivec3|ivec4|mat2|mat3|mat4|sampler2D|samplerCube)\\s+([\\s\\S]*?);/g;\nfunction extractUniforms(content) {\n var uniforms = {};\n content = content.replace(uniformRegExp, function (_, type, c) {\n var defaultValues = c.split(':');\n var uniformName = defaultValues[0].trim();\n var defaultValue = '';\n\n if (defaultValues.length > 1) {\n defaultValue = defaultValues[1].trim();\n } // set default value for uniform according to its type\n // eg. vec2 u -> [0.0, 0.0]\n\n\n switch (type) {\n case 'bool':\n defaultValue = defaultValue === 'true';\n break;\n\n case 'float':\n case 'int':\n defaultValue = Number(defaultValue);\n break;\n\n case 'vec2':\n case 'vec3':\n case 'vec4':\n case 'ivec2':\n case 'ivec3':\n case 'ivec4':\n case 'mat2':\n case 'mat3':\n case 'mat4':\n if (defaultValue) {\n defaultValue = defaultValue.replace('[', '').replace(']', '').split(',').reduce(function (prev, cur) {\n prev.push(Number(cur.trim()));\n return prev;\n }, []);\n } else {\n defaultValue = new Array(getUniformLengthByType(type)).fill(0);\n }\n\n break;\n\n default:\n } // @ts-ignore\n\n\n uniforms[uniformName] = defaultValue;\n return \"uniform \".concat(type, \" \").concat(uniformName, \";\\n\");\n });\n return {\n content: content,\n uniforms: uniforms\n };\n}\n//# sourceMappingURL=shader-module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9zaGFkZXItbW9kdWxlLmpzPzVhZGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtSUFBbUk7QUFDNUg7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw4REFBOEQ7QUFDOUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL3NoYWRlci1tb2R1bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0VW5pZm9ybUxlbmd0aEJ5VHlwZSh0eXBlKSB7XG4gIHZhciBhcnJheUxlbmd0aCA9IDA7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAndmVjMic6XG4gICAgY2FzZSAnaXZlYzInOlxuICAgICAgYXJyYXlMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd2ZWMzJzpcbiAgICBjYXNlICdpdmVjMyc6XG4gICAgICBhcnJheUxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3ZlYzQnOlxuICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICBjYXNlICdtYXQyJzpcbiAgICAgIGFycmF5TGVuZ3RoID0gNDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWF0Myc6XG4gICAgICBhcnJheUxlbmd0aCA9IDk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ21hdDQnOlxuICAgICAgYXJyYXlMZW5ndGggPSAxNjtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBhcnJheUxlbmd0aDtcbn1cbnZhciB1bmlmb3JtUmVnRXhwID0gL3VuaWZvcm1cXHMrKGJvb2x8ZmxvYXR8aW50fHZlYzJ8dmVjM3x2ZWM0fGl2ZWMyfGl2ZWMzfGl2ZWM0fG1hdDJ8bWF0M3xtYXQ0fHNhbXBsZXIyRHxzYW1wbGVyQ3ViZSlcXHMrKFtcXHNcXFNdKj8pOy9nO1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVbmlmb3Jtcyhjb250ZW50KSB7XG4gIHZhciB1bmlmb3JtcyA9IHt9O1xuICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKHVuaWZvcm1SZWdFeHAsIGZ1bmN0aW9uIChfLCB0eXBlLCBjKSB7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBjLnNwbGl0KCc6Jyk7XG4gICAgdmFyIHVuaWZvcm1OYW1lID0gZGVmYXVsdFZhbHVlc1swXS50cmltKCk7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlc1sxXS50cmltKCk7XG4gICAgfSAvLyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgdW5pZm9ybSBhY2NvcmRpbmcgdG8gaXRzIHR5cGVcbiAgICAvLyBlZy4gdmVjMiB1IC0+IFswLjAsIDAuMF1cblxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdib29sJzpcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlID09PSAndHJ1ZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdmbG9hdCc6XG4gICAgICBjYXNlICdpbnQnOlxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBOdW1iZXIoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ZlYzInOlxuICAgICAgY2FzZSAndmVjMyc6XG4gICAgICBjYXNlICd2ZWM0JzpcbiAgICAgIGNhc2UgJ2l2ZWMyJzpcbiAgICAgIGNhc2UgJ2l2ZWMzJzpcbiAgICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICAgIGNhc2UgJ21hdDInOlxuICAgICAgY2FzZSAnbWF0Myc6XG4gICAgICBjYXNlICdtYXQ0JzpcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykuc3BsaXQoJywnKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICAgICAgcHJldi5wdXNoKE51bWJlcihjdXIudHJpbSgpKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IEFycmF5KGdldFVuaWZvcm1MZW5ndGhCeVR5cGUodHlwZSkpLmZpbGwoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdID0gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBcInVuaWZvcm0gXCIuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQodW5pZm9ybU5hbWUsIFwiO1xcblwiKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY29udGVudDogY29udGVudCxcbiAgICB1bmlmb3JtczogdW5pZm9ybXNcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYWRlci1tb2R1bGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-core/es/utils/uniq.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-core/es/utils/uniq.js ***!
\***********************************************************/
/*! exports provided: uniq */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return uniq; });\nfunction uniq(array) {\n return array.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}\n//# sourceMappingURL=uniq.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy91bmlxLmpzPzU2MjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvdW5pcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24gKHYsIGksIGEpIHtcbiAgICByZXR1cm4gYS5pbmRleE9mKHYpID09PSBpO1xuICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaXEuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/uniq.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/index.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/index.js ***!
\********************************************************/
/*! exports provided: WebGLEngine, WebGPUEngine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webgl */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return _webgl__WEBPACK_IMPORTED_MODULE_0__[\"WebGLEngine\"]; });\n\n/* harmony import */ var _webgpu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webgpu */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return _webgpu__WEBPACK_IMPORTED_MODULE_1__[\"WebGPUEngine\"]; });\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL2luZGV4LmpzP2QyNmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDRTtBQUNIO0FBQ3JDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdlYkdMRW5naW5lIH0gZnJvbSAnLi93ZWJnbCc7XG5pbXBvcnQgeyBXZWJHUFVFbmdpbmUgfSBmcm9tICcuL3dlYmdwdSc7XG5leHBvcnQgeyBXZWJHTEVuZ2luZSwgV2ViR1BVRW5naW5lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/utils/dom.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/utils/dom.js ***!
\************************************************************/
/*! exports provided: isWindowObjectExist, loadScript, loadScriptAsync */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWindowObjectExist\", function() { return isWindowObjectExist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScript\", function() { return loadScript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScriptAsync\", function() { return loadScriptAsync; });\nfunction isWindowObjectExist() {\n return typeof window !== 'undefined';\n}\nfunction loadScript(scriptUrl, onSuccess, onError, scriptId) {\n if (!isWindowObjectExist()) {\n return;\n }\n\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', scriptUrl);\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n script.onload = function () {\n if (onSuccess) {\n onSuccess();\n }\n };\n\n script.onerror = function (e) {\n if (onError) {\n onError(\"Unable to load script '\".concat(scriptUrl, \"'\"), e);\n }\n };\n\n head.appendChild(script);\n}\nfunction loadScriptAsync(scriptUrl, scriptId) {\n return new Promise(function (resolve, reject) {\n loadScript(scriptUrl, function () {\n resolve();\n }, function (message, exception) {\n reject(exception);\n });\n });\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2RvbS5qcz80MjQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2RvbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1dpbmRvd09iamVjdEV4aXN0KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnQgZnVuY3Rpb24gbG9hZFNjcmlwdChzY3JpcHRVcmwsIG9uU3VjY2Vzcywgb25FcnJvciwgc2NyaXB0SWQpIHtcbiAgaWYgKCFpc1dpbmRvd09iamVjdEV4aXN0KCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2phdmFzY3JpcHQnKTtcbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgc2NyaXB0VXJsKTtcblxuICBpZiAoc2NyaXB0SWQpIHtcbiAgICBzY3JpcHQuaWQgPSBzY3JpcHRJZDtcbiAgfVxuXG4gIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgb25TdWNjZXNzKCk7XG4gICAgfVxuICB9O1xuXG4gIHNjcmlwdC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgb25FcnJvcihcIlVuYWJsZSB0byBsb2FkIHNjcmlwdCAnXCIuY29uY2F0KHNjcmlwdFVybCwgXCInXCIpLCBlKTtcbiAgICB9XG4gIH07XG5cbiAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHRBc3luYyhzY3JpcHRVcmwsIHNjcmlwdElkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbG9hZFNjcmlwdChzY3JpcHRVcmwsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCBmdW5jdGlvbiAobWVzc2FnZSwgZXhjZXB0aW9uKSB7XG4gICAgICByZWplY3QoZXhjZXB0aW9uKTtcbiAgICB9KTtcbiAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kb20uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/dom.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js ***!
\******************************************************************/
/*! exports provided: isNumber */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLW51bWJlci5qcz81ZjcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbnVtYmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js ***!
\******************************************************************/
/*! exports provided: isObject */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction isObject(value) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value);\n\n return value != null && (type === 'object' || type === 'function');\n}\n//# sourceMappingURL=is-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLW9iamVjdC5qcz8xZWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQzdDO0FBQ1AsYUFBYSxvRUFBTzs7QUFFcEI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy91dGlscy9pcy1vYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IF90eXBlb2YodmFsdWUpO1xuXG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW9iamVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js ***!
\**********************************************************************/
/*! exports provided: isTypedArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanM/NzEwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRDs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isb0VBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xudmFyIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJztcbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xudmFyIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXSc7XG52YXIgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nO1xudmFyIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nO1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xudmFyIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcbnZhciBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XSc7XG52YXIgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nO1xudmFyIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJztcbnZhciBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJztcbnZhciBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJztcbnZhciB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJztcbnZhciB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nO1xudmFyIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XSc7XG52YXIgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cblxudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID0gdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPSB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID0gdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPSB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXG5cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG5cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKV07XG59XG5cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCc7XG59XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5cblxuZXhwb3J0IHZhciBpc1R5cGVkQXJyYXkgPSBiYXNlSXNUeXBlZEFycmF5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdHlwZWRhcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js ***!
\****************************************************************/
/*! exports provided: extractUniforms */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js\");\n/* harmony import */ var _is_typedarray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-typedarray */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n/**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n\nfunction extractUniforms(uniforms) {\n var extractedUniforms = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n extractUniformsRecursively(uniformName, uniforms[uniformName], extractedUniforms, '');\n });\n return extractedUniforms;\n}\n\nfunction extractUniformsRecursively(uniformName, uniformValue, uniforms, prefix) {\n if (uniformValue === null || typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n Array.isArray(uniformValue) && typeof uniformValue[0] === 'number' || // u_A: [1, 2, 3]\n Object(_is_typedarray__WEBPACK_IMPORTED_MODULE_1__[\"isTypedArray\"])(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' || // @ts-ignore\n uniformValue.resize !== undefined) {\n uniforms[\"\".concat(prefix && prefix + '.').concat(uniformName)] = uniformValue;\n return;\n } // u_Struct.a.b.c\n\n\n if (Object(_is_object__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(uniformValue)) {\n Object.keys(uniformValue).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n uniformValue[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName));\n });\n } // u_Struct[0].a\n\n\n if (Array.isArray(uniformValue)) {\n // @ts-ignore\n uniformValue.forEach(function (child, idx) {\n Object.keys(child).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n child[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName, \"[\").concat(idx, \"]\"));\n });\n });\n }\n}\n//# sourceMappingURL=uniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL3VuaWZvcm0uanM/MzlmNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNRO0FBQy9DO0FBQ0E7QUFDQSxPQUFPLE9BQU87QUFDZCxTQUFTLE9BQU87QUFDaEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsTUFBTSwyREFBUTtBQUNkO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvdW5pZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pcy1vYmplY3QnO1xuaW1wb3J0IHsgaXNUeXBlZEFycmF5IH0gZnJvbSAnLi9pcy10eXBlZGFycmF5Jztcbi8qKlxuICog6ICD6JmR57uT5p6E5L2T5ZG95ZCNLCBlZzpcbiAqIGE6IHsgYjogMSB9ICAtPiAgJ2EuYidcbiAqIGE6IFsgeyBiOiAxIH0gXSAtPiAnYVswXS5iJ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VW5pZm9ybXModW5pZm9ybXMpIHtcbiAgdmFyIGV4dHJhY3RlZFVuaWZvcm1zID0ge307XG4gIE9iamVjdC5rZXlzKHVuaWZvcm1zKS5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KHVuaWZvcm1OYW1lLCB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0sIGV4dHJhY3RlZFVuaWZvcm1zLCAnJyk7XG4gIH0pO1xuICByZXR1cm4gZXh0cmFjdGVkVW5pZm9ybXM7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KHVuaWZvcm1OYW1lLCB1bmlmb3JtVmFsdWUsIHVuaWZvcm1zLCBwcmVmaXgpIHtcbiAgaWYgKHVuaWZvcm1WYWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdW5pZm9ybVZhbHVlID09PSAnbnVtYmVyJyB8fCAvLyB1X0E6IDFcbiAgdHlwZW9mIHVuaWZvcm1WYWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IC8vIHVfQTogZmFsc2VcbiAgQXJyYXkuaXNBcnJheSh1bmlmb3JtVmFsdWUpICYmIHR5cGVvZiB1bmlmb3JtVmFsdWVbMF0gPT09ICdudW1iZXInIHx8IC8vIHVfQTogWzEsIDIsIDNdXG4gIGlzVHlwZWRBcnJheSh1bmlmb3JtVmFsdWUpIHx8IC8vIHVfQTogRmxvYXQzMkFycmF5XG4gIC8vIEB0cy1pZ25vcmVcbiAgdW5pZm9ybVZhbHVlID09PSAnJyB8fCAvLyBAdHMtaWdub3JlXG4gIHVuaWZvcm1WYWx1ZS5yZXNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgIHVuaWZvcm1zW1wiXCIuY29uY2F0KHByZWZpeCAmJiBwcmVmaXggKyAnLicpLmNvbmNhdCh1bmlmb3JtTmFtZSldID0gdW5pZm9ybVZhbHVlO1xuICAgIHJldHVybjtcbiAgfSAvLyB1X1N0cnVjdC5hLmIuY1xuXG5cbiAgaWYgKGlzT2JqZWN0KHVuaWZvcm1WYWx1ZSkpIHtcbiAgICBPYmplY3Qua2V5cyh1bmlmb3JtVmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkTmFtZSkge1xuICAgICAgZXh0cmFjdFVuaWZvcm1zUmVjdXJzaXZlbHkoY2hpbGROYW1lLCAvLyBAdHMtaWdub3JlXG4gICAgICB1bmlmb3JtVmFsdWVbY2hpbGROYW1lXSwgdW5pZm9ybXMsIFwiXCIuY29uY2F0KHByZWZpeCAmJiBwcmVmaXggKyAnLicpLmNvbmNhdCh1bmlmb3JtTmFtZSkpO1xuICAgIH0pO1xuICB9IC8vIHVfU3RydWN0WzBdLmFcblxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaWZvcm1WYWx1ZSkpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdW5pZm9ybVZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkLCBpZHgpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNoaWxkKS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZE5hbWUpIHtcbiAgICAgICAgZXh0cmFjdFVuaWZvcm1zUmVjdXJzaXZlbHkoY2hpbGROYW1lLCAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNoaWxkW2NoaWxkTmFtZV0sIHVuaWZvcm1zLCBcIlwiLmNvbmNhdChwcmVmaXggJiYgcHJlZml4ICsgJy4nKS5jb25jYXQodW5pZm9ybU5hbWUsIFwiW1wiKS5jb25jYXQoaWR4LCBcIl1cIikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaWZvcm0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#attributes\n */\nvar ReglAttribute = /*#__PURE__*/function () {\n function ReglAttribute(gl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglAttribute);\n\n this.attribute = void 0;\n this.buffer = void 0;\n var buffer = options.buffer,\n offset = options.offset,\n stride = options.stride,\n normalized = options.normalized,\n size = options.size,\n divisor = options.divisor;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return ReglAttribute;\n}();\n\n\n//# sourceMappingURL=ReglAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xBdHRyaWJ1dGUuanM/NjY2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVtQztBQUNwQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEF0dHJpYnV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNhdHRyaWJ1dGVzXG4gKi9cbnZhciBSZWdsQXR0cmlidXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEF0dHJpYnV0ZShnbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsQXR0cmlidXRlKTtcblxuICAgIHRoaXMuYXR0cmlidXRlID0gdm9pZCAwO1xuICAgIHRoaXMuYnVmZmVyID0gdm9pZCAwO1xuICAgIHZhciBidWZmZXIgPSBvcHRpb25zLmJ1ZmZlcixcbiAgICAgICAgb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICAgIHN0cmlkZSA9IG9wdGlvbnMuc3RyaWRlLFxuICAgICAgICBub3JtYWxpemVkID0gb3B0aW9ucy5ub3JtYWxpemVkLFxuICAgICAgICBzaXplID0gb3B0aW9ucy5zaXplLFxuICAgICAgICBkaXZpc29yID0gb3B0aW9ucy5kaXZpc29yO1xuICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyO1xuICAgIHRoaXMuYXR0cmlidXRlID0ge1xuICAgICAgYnVmZmVyOiBidWZmZXIuZ2V0KCksXG4gICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwLFxuICAgICAgc3RyaWRlOiBzdHJpZGUgfHwgMCxcbiAgICAgIG5vcm1hbGl6ZWQ6IG5vcm1hbGl6ZWQgfHwgZmFsc2UsXG4gICAgICBkaXZpc29yOiBkaXZpc29yIHx8IDBcbiAgICB9O1xuXG4gICAgaWYgKHNpemUpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlLnNpemUgPSBzaXplO1xuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsQXR0cmlidXRlLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQnVmZmVyKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYnVmZmVyLnN1YkRhdGEob3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbEF0dHJpYnV0ZTtcbn0oKTtcblxuZXhwb3J0IHsgUmVnbEF0dHJpYnV0ZSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsQXR0cmlidXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js":
/*!*******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js ***!
\*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglBuffer = /*#__PURE__*/function () {\n function ReglBuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglBuffer);\n\n this.buffer = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type; // @ts-ignore\n\n this.buffer = reGl.buffer({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE] // length: 0,\n\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n // @ts-ignore\n this.buffer.subdata(data, offset);\n }\n }]);\n\n return ReglBuffer;\n}();\n\n\n//# sourceMappingURL=ReglBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xCdWZmZXIuanM/OTgzMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDckI7QUFDVztBQUNwRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsYUFBYSxtREFBUSxVQUFVLHNEQUFFO0FBQ2pDLFlBQVksc0RBQVcsU0FBUyxzREFBRTs7QUFFbEMsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLCtCQUErQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVnQztBQUNqQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBkYXRhVHlwZU1hcCwgdXNhZ2VNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuQnVmZmVyXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNidWZmZXJzXG4gKi9cblxudmFyIFJlZ2xCdWZmZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsQnVmZmVyKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEJ1ZmZlcik7XG5cbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgICAgdXNhZ2UgPSBvcHRpb25zLnVzYWdlLFxuICAgICAgICB0eXBlID0gb3B0aW9ucy50eXBlOyAvLyBAdHMtaWdub3JlXG5cbiAgICB0aGlzLmJ1ZmZlciA9IHJlR2wuYnVmZmVyKHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICB1c2FnZTogdXNhZ2VNYXBbdXNhZ2UgfHwgZ2wuU1RBVElDX0RSQVddLFxuICAgICAgdHlwZTogZGF0YVR5cGVNYXBbdHlwZSB8fCBnbC5VTlNJR05FRF9CWVRFXSAvLyBsZW5ndGg6IDAsXG5cbiAgICB9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7Ly8gdGhpcy5idWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEoX3JlZikge1xuICAgICAgdmFyIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgICAgb2Zmc2V0ID0gX3JlZi5vZmZzZXQ7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmJ1ZmZlci5zdWJkYXRhKGRhdGEsIG9mZnNldCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xCdWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xCdWZmZXIgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbEJ1ZmZlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js":
/*!*************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglComputeModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n/* babel-plugin-inline-import './shaders/quad.vert.glsl' */\nvar quadVert = \"attribute vec3 a_Position;\\nattribute vec2 a_TexCoord;\\n\\nvarying vec2 v_TexCoord;\\n\\nvoid main() {\\n gl_Position = vec4(a_Position, 1.0);\\n v_TexCoord = a_TexCoord;\\n}\";\nvar textureId = 0;\nvar debug = false;\n/**\n * adaptor for regl.DrawCommand\n */\n\nvar ReglComputeModel = /*#__PURE__*/function () {\n function ReglComputeModel(reGl, context) {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, ReglComputeModel);\n\n this.reGl = reGl;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"createEntity\"])();\n this.texFBO = void 0;\n this.computeCommand = void 0;\n this.textureCache = {};\n this.outputTextureName = void 0;\n this.swapOutputTextureName = void 0;\n this.compiledPingpong = void 0;\n this.dynamicPingpong = void 0;\n var uniforms = {};\n this.context.uniforms.forEach(function (uniform) {\n var name = uniform.name,\n type = uniform.type,\n data = uniform.data,\n isReferer = uniform.isReferer,\n storageClass = uniform.storageClass; // store data with a 2D texture\n\n if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].StorageBuffer) {\n if (!isReferer) {\n _this.textureCache[name] = _this.calcDataTexture(name, type, data);\n var _this$textureCache$na = _this.textureCache[name],\n width = _this$textureCache$na.textureWidth,\n isOutput = _this$textureCache$na.isOutput;\n uniforms[\"\".concat(name, \"Size\")] = [width, width];\n\n if (isOutput) {\n _this.outputTextureName = name;\n\n if (_this.context.needPingpong) {\n _this.outputTextureName = \"\".concat(name, \"Output\");\n _this.textureCache[_this.outputTextureName] = _this.calcDataTexture(name, type, data);\n }\n }\n } else {\n // @ts-ignore\n _this.textureCache[name] = {\n data: undefined\n }; // refer to another kernel's output,\n // the referred kernel may not have been initialized, so we use dynamic way here\n\n uniforms[\"\".concat(name, \"Size\")] = function () {\n return (// @ts-ignore\n data.compiledBundle.context.output.textureSize\n );\n };\n }\n\n uniforms[name] = function () {\n if (debug) {\n console.log(\"[\".concat(_this.entity, \"]: \").concat(name, \" \").concat(_this.textureCache[name].id));\n }\n\n return _this.textureCache[name].texture;\n };\n } else if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].Uniform) {\n if (data && (Array.isArray(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data)) && data.length > 16) {\n // up to mat4 which includes 16 elements\n throw new Error(\"invalid data type \".concat(type));\n } // get uniform dynamically\n\n\n uniforms[name] = function () {\n return uniform.data;\n };\n }\n });\n\n var _this$getOuputDataTex = this.getOuputDataTexture(),\n textureWidth = _this$getOuputDataTex.textureWidth,\n texelCount = _this$getOuputDataTex.texelCount; // 传入 output 纹理尺寸和数据长度,便于多余的 texel 提前退出\n\n\n uniforms.u_OutputTextureSize = [textureWidth, textureWidth];\n uniforms.u_OutputTexelCount = texelCount; // 保存在 Kernel 的上下文中,供其他 Kernel 引用\n\n this.context.output.textureSize = [textureWidth, textureWidth];\n var drawParams = {\n attributes: {\n a_Position: [[-1, 1, 0], [-1, -1, 0], [1, 1, 0], [1, -1, 0]],\n a_TexCoord: [[0, 1], [0, 0], [1, 1], [1, 0]]\n },\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(this.context.shader),\n uniforms: uniforms,\n vert: quadVert,\n // TODO: use a fullscreen triangle instead.\n primitive: 'triangle strip',\n count: 4\n };\n this.computeCommand = this.reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(ReglComputeModel, [{\n key: \"run\",\n value: function run() {\n var _this2 = this;\n\n if (this.context.maxIteration > 1 && this.context.needPingpong) {\n this.compiledPingpong = true;\n } // need pingpong when (@in@out and execute(10)) or use `setBinding('out', self)`\n // this.needPingpong =\n // !!(this.context.maxIteration > 1 && this.context.needPingpong);\n // if (this.relativeOutputTextureNames.length) {\n // const { id, texture } = this.getOuputDataTexture();\n // this.relativeOutputTextureNames.forEach((name) => {\n // this.textureCache[name].id = id;\n // this.textureCache[name].texture = texture;\n // });\n // this.swap();\n // }\n\n\n if (this.compiledPingpong || this.dynamicPingpong) {\n this.swap();\n }\n\n this.texFBO = this.reGl.framebuffer({\n color: this.getOuputDataTexture().texture\n });\n this.texFBO.use(function () {\n _this2.computeCommand();\n });\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this3 = this;\n\n var pixels, _this$getOuputDataTex2, originalDataLength, elementsPerTexel, _this$getOuputDataTex3, typedArrayConstructor, formattedPixels, i;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.reGl({\n framebuffer: this.texFBO\n })(function () {\n pixels = _this3.reGl.read();\n }); // @ts-ignore\n\n if (!pixels) {\n _context.next = 6;\n break;\n }\n\n _this$getOuputDataTex2 = this.getOuputDataTexture(), originalDataLength = _this$getOuputDataTex2.originalDataLength, elementsPerTexel = _this$getOuputDataTex2.elementsPerTexel, _this$getOuputDataTex3 = _this$getOuputDataTex2.typedArrayConstructor, typedArrayConstructor = _this$getOuputDataTex3 === void 0 ? Float32Array : _this$getOuputDataTex3;\n formattedPixels = [];\n\n if (elementsPerTexel !== 4) {\n for (i = 0; i < pixels.length; i += 4) {\n if (elementsPerTexel === 1) {\n formattedPixels.push(pixels[i]);\n } else if (elementsPerTexel === 2) {\n formattedPixels.push(pixels[i], pixels[i + 1]);\n } else {\n formattedPixels.push(pixels[i], pixels[i + 1], pixels[i + 2]);\n }\n }\n } else {\n // @ts-ignore\n formattedPixels = pixels;\n } // 截取多余的部分\n // @ts-ignore\n\n\n return _context.abrupt(\"return\", new typedArrayConstructor(formattedPixels.slice(0, originalDataLength)));\n\n case 6:\n return _context.abrupt(\"return\", new Float32Array());\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n var inputModel; // refer to self, same as pingpong\n\n if (this.entity === model.entity) {\n this.dynamicPingpong = true;\n inputModel = this;\n } else {\n inputModel = model;\n }\n\n this.textureCache[inputName].id = inputModel.getOuputDataTexture().id;\n this.textureCache[inputName].texture = inputModel.getOuputDataTexture().texture;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: confirm input \").concat(inputName, \" from model \").concat(inputModel.entity, \", \").concat(inputModel.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform() {// already get uniform's data dynamically when created, do nothing here\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // regenerate data texture\n var buffer = this.context.uniforms.find(function (_ref) {\n var name = _ref.name;\n return name === bufferName;\n });\n\n if (buffer) {\n var _this$calcDataTexture = this.calcDataTexture(bufferName, buffer.type, data),\n texture = _this$calcDataTexture.texture,\n paddingData = _this$calcDataTexture.data; // TODO: destroy outdated texture\n\n\n this.textureCache[bufferName].data = paddingData;\n this.textureCache[bufferName].texture = texture;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// regl will destroy all resources\n }\n }, {\n key: \"swap\",\n value: function swap() {\n if (!this.swapOutputTextureName) {\n this.createSwapOutputDataTexture();\n }\n\n if (this.compiledPingpong) {\n var outputTextureUniformName = this.context.output.name;\n this.textureCache[outputTextureUniformName].id = this.getOuputDataTexture().id;\n this.textureCache[outputTextureUniformName].texture = this.getOuputDataTexture().texture;\n }\n\n var tmp = this.outputTextureName;\n this.outputTextureName = this.swapOutputTextureName;\n this.swapOutputTextureName = tmp;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: after swap, output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"getOuputDataTexture\",\n value: function getOuputDataTexture() {\n return this.textureCache[this.outputTextureName];\n }\n }, {\n key: \"createSwapOutputDataTexture\",\n value: function createSwapOutputDataTexture() {\n var texture = this.cloneDataTexture(this.getOuputDataTexture());\n this.swapOutputTextureName = \"\".concat(this.entity, \"-swap\");\n this.textureCache[this.swapOutputTextureName] = texture;\n }\n }, {\n key: \"cloneDataTexture\",\n value: function cloneDataTexture(texture) {\n var data = texture.data,\n textureWidth = texture.textureWidth;\n return _objectSpread(_objectSpread({}, texture), {}, {\n id: textureId++,\n // @ts-ignore\n texture: this.reGl.texture({\n width: textureWidth,\n height: textureWidth,\n data: data,\n type: 'float'\n })\n });\n }\n }, {\n key: \"calcDataTexture\",\n value: function calcDataTexture(name, type, data) {\n var elementsPerTexel = 1;\n\n if (type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n elementsPerTexel = 4;\n } // 用 0 补全不足 vec4 的部分\n\n\n var paddingData = [];\n\n for (var i = 0; i < data.length; i += elementsPerTexel) {\n if (elementsPerTexel === 1) {\n paddingData.push(data[i], 0, 0, 0);\n } else if (elementsPerTexel === 2) {\n paddingData.push(data[i], data[i + 1], 0, 0);\n } else if (elementsPerTexel === 3) {\n paddingData.push(data[i], data[i + 1], data[i + 2], 0);\n } else if (elementsPerTexel === 4) {\n paddingData.push(data[i], data[i + 1], data[i + 2], data[i + 3]);\n }\n } // 使用纹理存储,例如 Array(8) 使用 3 * 3 纹理,末尾空白使用 0 填充\n\n\n var originalDataLength = data.length;\n var texelCount = Math.ceil(originalDataLength / elementsPerTexel);\n var width = Math.ceil(Math.sqrt(texelCount));\n var paddingTexelCount = width * width;\n\n if (texelCount < paddingTexelCount) {\n paddingData.push.apply(paddingData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(new Array((paddingTexelCount - texelCount) * 4).fill(0)));\n }\n\n var texture = this.reGl.texture({\n width: width,\n height: width,\n data: paddingData,\n type: 'float'\n });\n return {\n id: textureId++,\n data: paddingData,\n originalDataLength: originalDataLength,\n typedArrayConstructor: Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data) ? data.constructor : undefined,\n textureWidth: width,\n texture: texture,\n texelCount: texelCount,\n elementsPerTexel: elementsPerTexel,\n isOutput: name === this.context.output.name\n };\n }\n }]);\n\n return ReglComputeModel;\n}();\n\n\n//# sourceMappingURL=ReglComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xDb21wdXRlTW9kZWwuanM/NTI2YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRTtBQUNOO0FBQ1A7QUFDVztBQUNKO0FBQ047O0FBRTlELDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFamM7QUFDN0I7O0FBRXREO0FBQ0EsMENBQTBDLDRCQUE0Qiw0QkFBNEIsaUJBQWlCLHdDQUF3Qyw0QkFBNEIsR0FBRztBQUMxTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0Esa0JBQWtCLHdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDOztBQUU5QywyQkFBMkIsaUVBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPLDJCQUEyQixpRUFBYTtBQUMvQyw0Q0FBNEMseUVBQVk7QUFDeEQ7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0Esc0RBQXNEOzs7QUFHdEQ7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asd0VBQXdFLG1DQUFtQztBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsY0FBYztBQUNoQztBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDekU7O0FBRUE7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQixFQUFFOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDs7O0FBR3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGNBQWM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsbUVBQWU7QUFDbEM7QUFDQSxPQUFPOzs7QUFHUDs7QUFFQSxxQkFBcUIsaUJBQWlCO0FBQ3RDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLCtFQUFrQjtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHlFQUFZO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXNDO0FBQ3ZDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsQ29tcHV0ZU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgQVNUX1RPS0VOX1RZUEVTLCBjcmVhdGVFbnRpdHksIFNUT1JBR0VfQ0xBU1MgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3F1YWQudmVydC5nbHNsJyAqL1xudmFyIHF1YWRWZXJ0ID0gXCJhdHRyaWJ1dGUgdmVjMyBhX1Bvc2l0aW9uO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfVGV4Q29vcmQ7XFxuXFxudmFyeWluZyB2ZWMyIHZfVGV4Q29vcmQ7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfUG9zaXRpb24sIDEuMCk7XFxuICB2X1RleENvb3JkID0gYV9UZXhDb29yZDtcXG59XCI7XG52YXIgdGV4dHVyZUlkID0gMDtcbnZhciBkZWJ1ZyA9IGZhbHNlO1xuLyoqXG4gKiBhZGFwdG9yIGZvciByZWdsLkRyYXdDb21tYW5kXG4gKi9cblxudmFyIFJlZ2xDb21wdXRlTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsQ29tcHV0ZU1vZGVsKHJlR2wsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZ2xDb21wdXRlTW9kZWwpO1xuXG4gICAgdGhpcy5yZUdsID0gcmVHbDtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZW50aXR5ID0gY3JlYXRlRW50aXR5KCk7XG4gICAgdGhpcy50ZXhGQk8gPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wdXRlQ29tbWFuZCA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHR1cmVDYWNoZSA9IHt9O1xuICAgIHRoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5zd2FwT3V0cHV0VGV4dHVyZU5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21waWxlZFBpbmdwb25nID0gdm9pZCAwO1xuICAgIHRoaXMuZHluYW1pY1Bpbmdwb25nID0gdm9pZCAwO1xuICAgIHZhciB1bmlmb3JtcyA9IHt9O1xuICAgIHRoaXMuY29udGV4dC51bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtKSB7XG4gICAgICB2YXIgbmFtZSA9IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICB0eXBlID0gdW5pZm9ybS50eXBlLFxuICAgICAgICAgIGRhdGEgPSB1bmlmb3JtLmRhdGEsXG4gICAgICAgICAgaXNSZWZlcmVyID0gdW5pZm9ybS5pc1JlZmVyZXIsXG4gICAgICAgICAgc3RvcmFnZUNsYXNzID0gdW5pZm9ybS5zdG9yYWdlQ2xhc3M7IC8vIHN0b3JlIGRhdGEgd2l0aCBhIDJEIHRleHR1cmVcblxuICAgICAgaWYgKHN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5TdG9yYWdlQnVmZmVyKSB7XG4gICAgICAgIGlmICghaXNSZWZlcmVyKSB7XG4gICAgICAgICAgX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdID0gX3RoaXMuY2FsY0RhdGFUZXh0dXJlKG5hbWUsIHR5cGUsIGRhdGEpO1xuICAgICAgICAgIHZhciBfdGhpcyR0ZXh0dXJlQ2FjaGUkbmEgPSBfdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0sXG4gICAgICAgICAgICAgIHdpZHRoID0gX3RoaXMkdGV4dHVyZUNhY2hlJG5hLnRleHR1cmVXaWR0aCxcbiAgICAgICAgICAgICAgaXNPdXRwdXQgPSBfdGhpcyR0ZXh0dXJlQ2FjaGUkbmEuaXNPdXRwdXQ7XG4gICAgICAgICAgdW5pZm9ybXNbXCJcIi5jb25jYXQobmFtZSwgXCJTaXplXCIpXSA9IFt3aWR0aCwgd2lkdGhdO1xuXG4gICAgICAgICAgaWYgKGlzT3V0cHV0KSB7XG4gICAgICAgICAgICBfdGhpcy5vdXRwdXRUZXh0dXJlTmFtZSA9IG5hbWU7XG5cbiAgICAgICAgICAgIGlmIChfdGhpcy5jb250ZXh0Lm5lZWRQaW5ncG9uZykge1xuICAgICAgICAgICAgICBfdGhpcy5vdXRwdXRUZXh0dXJlTmFtZSA9IFwiXCIuY29uY2F0KG5hbWUsIFwiT3V0cHV0XCIpO1xuICAgICAgICAgICAgICBfdGhpcy50ZXh0dXJlQ2FjaGVbX3RoaXMub3V0cHV0VGV4dHVyZU5hbWVdID0gX3RoaXMuY2FsY0RhdGFUZXh0dXJlKG5hbWUsIHR5cGUsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdID0ge1xuICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkXG4gICAgICAgICAgfTsgLy8gcmVmZXIgdG8gYW5vdGhlciBrZXJuZWwncyBvdXRwdXQsXG4gICAgICAgICAgLy8gdGhlIHJlZmVycmVkIGtlcm5lbCBtYXkgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCwgc28gd2UgdXNlIGR5bmFtaWMgd2F5IGhlcmVcblxuICAgICAgICAgIHVuaWZvcm1zW1wiXCIuY29uY2F0KG5hbWUsIFwiU2l6ZVwiKV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZGF0YS5jb21waWxlZEJ1bmRsZS5jb250ZXh0Lm91dHB1dC50ZXh0dXJlU2l6ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdW5pZm9ybXNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltcIi5jb25jYXQoX3RoaXMuZW50aXR5LCBcIl06IFwiKS5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChfdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0uaWQpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdLnRleHR1cmU7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5Vbmlmb3JtKSB7XG4gICAgICAgIGlmIChkYXRhICYmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IGlzVHlwZWRBcnJheShkYXRhKSkgJiYgZGF0YS5sZW5ndGggPiAxNikge1xuICAgICAgICAgIC8vIHVwIHRvIG1hdDQgd2hpY2ggaW5jbHVkZXMgMTYgZWxlbWVudHNcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGRhdGEgdHlwZSBcIi5jb25jYXQodHlwZSkpO1xuICAgICAgICB9IC8vIGdldCB1bmlmb3JtIGR5bmFtaWNhbGx5XG5cblxuICAgICAgICB1bmlmb3Jtc1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdW5pZm9ybS5kYXRhO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIF90aGlzJGdldE91cHV0RGF0YVRleCA9IHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLFxuICAgICAgICB0ZXh0dXJlV2lkdGggPSBfdGhpcyRnZXRPdXB1dERhdGFUZXgudGV4dHVyZVdpZHRoLFxuICAgICAgICB0ZXhlbENvdW50ID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4LnRleGVsQ291bnQ7IC8vIOS8oOWFpSBvdXRwdXQg57q555CG5bC65a+45ZKM5pWw5o2u6ZW/5bqm77yM5L6/5LqO5aSa5L2Z55qEIHRleGVsIOaPkOWJjemAgOWHulxuXG5cbiAgICB1bmlmb3Jtcy51X091dHB1dFRleHR1cmVTaXplID0gW3RleHR1cmVXaWR0aCwgdGV4dHVyZVdpZHRoXTtcbiAgICB1bmlmb3Jtcy51X091dHB1dFRleGVsQ291bnQgPSB0ZXhlbENvdW50OyAvLyDkv53lrZjlnKggS2VybmVsIOeahOS4iuS4i+aWh+S4re+8jOS+m+WFtuS7liBLZXJuZWwg5byV55SoXG5cbiAgICB0aGlzLmNvbnRleHQub3V0cHV0LnRleHR1cmVTaXplID0gW3RleHR1cmVXaWR0aCwgdGV4dHVyZVdpZHRoXTtcbiAgICB2YXIgZHJhd1BhcmFtcyA9IHtcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgYV9Qb3NpdGlvbjogW1stMSwgMSwgMF0sIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0sIFsxLCAtMSwgMF1dLFxuICAgICAgICBhX1RleENvb3JkOiBbWzAsIDFdLCBbMCwgMF0sIFsxLCAxXSwgWzEsIDBdXVxuICAgICAgfSxcbiAgICAgIGZyYWc6IFwiI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIXFxuICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XFxuI2Vsc2VcXG4gIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xcbiNlbmRpZlxcblwiLmNvbmNhdCh0aGlzLmNvbnRleHQuc2hhZGVyKSxcbiAgICAgIHVuaWZvcm1zOiB1bmlmb3JtcyxcbiAgICAgIHZlcnQ6IHF1YWRWZXJ0LFxuICAgICAgLy8gVE9ETzogdXNlIGEgZnVsbHNjcmVlbiB0cmlhbmdsZSBpbnN0ZWFkLlxuICAgICAgcHJpbWl0aXZlOiAndHJpYW5nbGUgc3RyaXAnLFxuICAgICAgY291bnQ6IDRcbiAgICB9O1xuICAgIHRoaXMuY29tcHV0ZUNvbW1hbmQgPSB0aGlzLnJlR2woZHJhd1BhcmFtcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbENvbXB1dGVNb2RlbCwgW3tcbiAgICBrZXk6IFwicnVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5jb250ZXh0Lm1heEl0ZXJhdGlvbiA+IDEgJiYgdGhpcy5jb250ZXh0Lm5lZWRQaW5ncG9uZykge1xuICAgICAgICB0aGlzLmNvbXBpbGVkUGluZ3BvbmcgPSB0cnVlO1xuICAgICAgfSAvLyBuZWVkIHBpbmdwb25nIHdoZW4gKEBpbkBvdXQgYW5kIGV4ZWN1dGUoMTApKSBvciB1c2UgYHNldEJpbmRpbmcoJ291dCcsIHNlbGYpYFxuICAgICAgLy8gdGhpcy5uZWVkUGluZ3BvbmcgPVxuICAgICAgLy8gICAhISh0aGlzLmNvbnRleHQubWF4SXRlcmF0aW9uID4gMSAmJiB0aGlzLmNvbnRleHQubmVlZFBpbmdwb25nKTtcbiAgICAgIC8vIGlmICh0aGlzLnJlbGF0aXZlT3V0cHV0VGV4dHVyZU5hbWVzLmxlbmd0aCkge1xuICAgICAgLy8gICBjb25zdCB7IGlkLCB0ZXh0dXJlIH0gPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKTtcbiAgICAgIC8vICAgdGhpcy5yZWxhdGl2ZU91dHB1dFRleHR1cmVOYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAvLyAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0uaWQgPSBpZDtcbiAgICAgIC8vICAgICB0aGlzLnRleHR1cmVDYWNoZVtuYW1lXS50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyAgIHRoaXMuc3dhcCgpO1xuICAgICAgLy8gfVxuXG5cbiAgICAgIGlmICh0aGlzLmNvbXBpbGVkUGluZ3BvbmcgfHwgdGhpcy5keW5hbWljUGluZ3BvbmcpIHtcbiAgICAgICAgdGhpcy5zd2FwKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4RkJPID0gdGhpcy5yZUdsLmZyYW1lYnVmZmVyKHtcbiAgICAgICAgY29sb3I6IHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLnRleHR1cmVcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZXhGQk8udXNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLmNvbXB1dGVDb21tYW5kKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1wiLmNvbmNhdCh0aGlzLmVudGl0eSwgXCJdOiBvdXRwdXQgXCIpLmNvbmNhdCh0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlYWREYXRhID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHBpeGVscywgX3RoaXMkZ2V0T3VwdXREYXRhVGV4Miwgb3JpZ2luYWxEYXRhTGVuZ3RoLCBlbGVtZW50c1BlclRleGVsLCBfdGhpcyRnZXRPdXB1dERhdGFUZXgzLCB0eXBlZEFycmF5Q29uc3RydWN0b3IsIGZvcm1hdHRlZFBpeGVscywgaTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMucmVHbCh7XG4gICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlcjogdGhpcy50ZXhGQk9cbiAgICAgICAgICAgICAgICB9KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICBwaXhlbHMgPSBfdGhpczMucmVHbC5yZWFkKCk7XG4gICAgICAgICAgICAgICAgfSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICAgIGlmICghcGl4ZWxzKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF90aGlzJGdldE91cHV0RGF0YVRleDIgPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKSwgb3JpZ2luYWxEYXRhTGVuZ3RoID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4Mi5vcmlnaW5hbERhdGFMZW5ndGgsIGVsZW1lbnRzUGVyVGV4ZWwgPSBfdGhpcyRnZXRPdXB1dERhdGFUZXgyLmVsZW1lbnRzUGVyVGV4ZWwsIF90aGlzJGdldE91cHV0RGF0YVRleDMgPSBfdGhpcyRnZXRPdXB1dERhdGFUZXgyLnR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9yID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4MyA9PT0gdm9pZCAwID8gRmxvYXQzMkFycmF5IDogX3RoaXMkZ2V0T3VwdXREYXRhVGV4MztcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRQaXhlbHMgPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1BlclRleGVsICE9PSA0KSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGl4ZWxzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1BlclRleGVsID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzLnB1c2gocGl4ZWxzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1BlclRleGVsID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzLnB1c2gocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRQaXhlbHMucHVzaChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMV0sIHBpeGVsc1tpICsgMl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFBpeGVscyA9IHBpeGVscztcbiAgICAgICAgICAgICAgICB9IC8vIOaIquWPluWkmuS9meeahOmDqOWIhlxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBuZXcgdHlwZWRBcnJheUNvbnN0cnVjdG9yKGZvcm1hdHRlZFBpeGVscy5zbGljZSgwLCBvcmlnaW5hbERhdGFMZW5ndGgpKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IEZsb2F0MzJBcnJheSgpKTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlYWREYXRhKCkge1xuICAgICAgICByZXR1cm4gX3JlYWREYXRhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0YTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJjb25maXJtSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uZmlybUlucHV0KG1vZGVsLCBpbnB1dE5hbWUpIHtcbiAgICAgIHZhciBpbnB1dE1vZGVsOyAvLyByZWZlciB0byBzZWxmLCBzYW1lIGFzIHBpbmdwb25nXG5cbiAgICAgIGlmICh0aGlzLmVudGl0eSA9PT0gbW9kZWwuZW50aXR5KSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1Bpbmdwb25nID0gdHJ1ZTtcbiAgICAgICAgaW5wdXRNb2RlbCA9IHRoaXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnB1dE1vZGVsID0gbW9kZWw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dHVyZUNhY2hlW2lucHV0TmFtZV0uaWQgPSBpbnB1dE1vZGVsLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZDtcbiAgICAgIHRoaXMudGV4dHVyZUNhY2hlW2lucHV0TmFtZV0udGV4dHVyZSA9IGlucHV0TW9kZWwuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLnRleHR1cmU7XG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIltcIi5jb25jYXQodGhpcy5lbnRpdHksIFwiXTogY29uZmlybSBpbnB1dCBcIikuY29uY2F0KGlucHV0TmFtZSwgXCIgZnJvbSBtb2RlbCBcIikuY29uY2F0KGlucHV0TW9kZWwuZW50aXR5LCBcIiwgXCIpLmNvbmNhdChpbnB1dE1vZGVsLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVVbmlmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVVuaWZvcm0oKSB7Ly8gYWxyZWFkeSBnZXQgdW5pZm9ybSdzIGRhdGEgZHluYW1pY2FsbHkgd2hlbiBjcmVhdGVkLCBkbyBub3RoaW5nIGhlcmVcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihidWZmZXJOYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwO1xuICAgICAgLy8gcmVnZW5lcmF0ZSBkYXRhIHRleHR1cmVcbiAgICAgIHZhciBidWZmZXIgPSB0aGlzLmNvbnRleHQudW5pZm9ybXMuZmluZChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09IGJ1ZmZlck5hbWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGJ1ZmZlcikge1xuICAgICAgICB2YXIgX3RoaXMkY2FsY0RhdGFUZXh0dXJlID0gdGhpcy5jYWxjRGF0YVRleHR1cmUoYnVmZmVyTmFtZSwgYnVmZmVyLnR5cGUsIGRhdGEpLFxuICAgICAgICAgICAgdGV4dHVyZSA9IF90aGlzJGNhbGNEYXRhVGV4dHVyZS50ZXh0dXJlLFxuICAgICAgICAgICAgcGFkZGluZ0RhdGEgPSBfdGhpcyRjYWxjRGF0YVRleHR1cmUuZGF0YTsgLy8gVE9ETzogZGVzdHJveSBvdXRkYXRlZCB0ZXh0dXJlXG5cblxuICAgICAgICB0aGlzLnRleHR1cmVDYWNoZVtidWZmZXJOYW1lXS5kYXRhID0gcGFkZGluZ0RhdGE7XG4gICAgICAgIHRoaXMudGV4dHVyZUNhY2hlW2J1ZmZlck5hbWVdLnRleHR1cmUgPSB0ZXh0dXJlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7Ly8gcmVnbCB3aWxsIGRlc3Ryb3kgYWxsIHJlc291cmNlc1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzd2FwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN3YXAoKSB7XG4gICAgICBpZiAoIXRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlU3dhcE91dHB1dERhdGFUZXh0dXJlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbXBpbGVkUGluZ3BvbmcpIHtcbiAgICAgICAgdmFyIG91dHB1dFRleHR1cmVVbmlmb3JtTmFtZSA9IHRoaXMuY29udGV4dC5vdXRwdXQubmFtZTtcbiAgICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbb3V0cHV0VGV4dHVyZVVuaWZvcm1OYW1lXS5pZCA9IHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLmlkO1xuICAgICAgICB0aGlzLnRleHR1cmVDYWNoZVtvdXRwdXRUZXh0dXJlVW5pZm9ybU5hbWVdLnRleHR1cmUgPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS50ZXh0dXJlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG1wID0gdGhpcy5vdXRwdXRUZXh0dXJlTmFtZTtcbiAgICAgIHRoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSB0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZTtcbiAgICAgIHRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lID0gdG1wO1xuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbXCIuY29uY2F0KHRoaXMuZW50aXR5LCBcIl06IGFmdGVyIHN3YXAsIG91dHB1dCBcIikuY29uY2F0KHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLmlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE91cHV0RGF0YVRleHR1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0T3VwdXREYXRhVGV4dHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHR1cmVDYWNoZVt0aGlzLm91dHB1dFRleHR1cmVOYW1lXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlU3dhcE91dHB1dERhdGFUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVN3YXBPdXRwdXREYXRhVGV4dHVyZSgpIHtcbiAgICAgIHZhciB0ZXh0dXJlID0gdGhpcy5jbG9uZURhdGFUZXh0dXJlKHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpKTtcbiAgICAgIHRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lID0gXCJcIi5jb25jYXQodGhpcy5lbnRpdHksIFwiLXN3YXBcIik7XG4gICAgICB0aGlzLnRleHR1cmVDYWNoZVt0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZV0gPSB0ZXh0dXJlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbG9uZURhdGFUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb25lRGF0YVRleHR1cmUodGV4dHVyZSkge1xuICAgICAgdmFyIGRhdGEgPSB0ZXh0dXJlLmRhdGEsXG4gICAgICAgICAgdGV4dHVyZVdpZHRoID0gdGV4dHVyZS50ZXh0dXJlV2lkdGg7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0ZXh0dXJlKSwge30sIHtcbiAgICAgICAgaWQ6IHRleHR1cmVJZCsrLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRleHR1cmU6IHRoaXMucmVHbC50ZXh0dXJlKHtcbiAgICAgICAgICB3aWR0aDogdGV4dHVyZVdpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGV4dHVyZVdpZHRoLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgdHlwZTogJ2Zsb2F0J1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNhbGNEYXRhVGV4dHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxjRGF0YVRleHR1cmUobmFtZSwgdHlwZSwgZGF0YSkge1xuICAgICAgdmFyIGVsZW1lbnRzUGVyVGV4ZWwgPSAxO1xuXG4gICAgICBpZiAodHlwZSA9PT0gQVNUX1RPS0VOX1RZUEVTLlZlY3RvcjRGbG9hdEFycmF5KSB7XG4gICAgICAgIGVsZW1lbnRzUGVyVGV4ZWwgPSA0O1xuICAgICAgfSAvLyDnlKggMCDooaXlhajkuI3otrMgdmVjNCDnmoTpg6jliIZcblxuXG4gICAgICB2YXIgcGFkZGluZ0RhdGEgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBlbGVtZW50c1BlclRleGVsKSB7XG4gICAgICAgIGlmIChlbGVtZW50c1BlclRleGVsID09PSAxKSB7XG4gICAgICAgICAgcGFkZGluZ0RhdGEucHVzaChkYXRhW2ldLCAwLCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1BlclRleGVsID09PSAyKSB7XG4gICAgICAgICAgcGFkZGluZ0RhdGEucHVzaChkYXRhW2ldLCBkYXRhW2kgKyAxXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMykge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgZGF0YVtpICsgMV0sIGRhdGFbaSArIDJdLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1BlclRleGVsID09PSA0KSB7XG4gICAgICAgICAgcGFkZGluZ0RhdGEucHVzaChkYXRhW2ldLCBkYXRhW2kgKyAxXSwgZGF0YVtpICsgMl0sIGRhdGFbaSArIDNdKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyDkvb/nlKjnurnnkIblrZjlgqjvvIzkvovlpoIgQXJyYXkoOCkg5L2/55SoIDMgKiAzIOe6ueeQhu+8jOacq+WwvuepuueZveS9v+eUqCAwIOWhq+WFhVxuXG5cbiAgICAgIHZhciBvcmlnaW5hbERhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICAgIHZhciB0ZXhlbENvdW50ID0gTWF0aC5jZWlsKG9yaWdpbmFsRGF0YUxlbmd0aCAvIGVsZW1lbnRzUGVyVGV4ZWwpO1xuICAgICAgdmFyIHdpZHRoID0gTWF0aC5jZWlsKE1hdGguc3FydCh0ZXhlbENvdW50KSk7XG4gICAgICB2YXIgcGFkZGluZ1RleGVsQ291bnQgPSB3aWR0aCAqIHdpZHRoO1xuXG4gICAgICBpZiAodGV4ZWxDb3VudCA8IHBhZGRpbmdUZXhlbENvdW50KSB7XG4gICAgICAgIHBhZGRpbmdEYXRhLnB1c2guYXBwbHkocGFkZGluZ0RhdGEsIF90b0NvbnN1bWFibGVBcnJheShuZXcgQXJyYXkoKHBhZGRpbmdUZXhlbENvdW50IC0gdGV4ZWxDb3VudCkgKiA0KS5maWxsKDApKSk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0dXJlID0gdGhpcy5yZUdsLnRleHR1cmUoe1xuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogd2lkdGgsXG4gICAgICAgIGRhdGE6IHBhZGRpbmdEYXRhLFxuICAgICAgICB0eXBlOiAnZmxvYXQnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB0ZXh0dXJlSWQrKyxcbiAgICAgICAgZGF0YTogcGFkZGluZ0RhdGEsXG4gICAgICAgIG9yaWdpbmFsRGF0YUxlbmd0aDogb3JpZ2luYWxEYXRhTGVuZ3RoLFxuICAgICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3I6IGlzVHlwZWRBcnJheShkYXRhKSA/IGRhdGEuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHRleHR1cmVXaWR0aDogd2lkdGgsXG4gICAgICAgIHRleHR1cmU6IHRleHR1cmUsXG4gICAgICAgIHRleGVsQ291bnQ6IHRleGVsQ291bnQsXG4gICAgICAgIGVsZW1lbnRzUGVyVGV4ZWw6IGVsZW1lbnRzUGVyVGV4ZWwsXG4gICAgICAgIGlzT3V0cHV0OiBuYW1lID09PSB0aGlzLmNvbnRleHQub3V0cHV0Lm5hbWVcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xDb21wdXRlTW9kZWw7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xDb21wdXRlTW9kZWwgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbENvbXB1dGVNb2RlbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js":
/*!*********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js ***!
\*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#elements\n */\n\nvar ReglElements = /*#__PURE__*/function () {\n function ReglElements(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglElements);\n\n this.elements = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type,\n count = options.count;\n this.elements = reGl.elements({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE],\n count: count\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglElements, [{\n key: \"get\",\n value: function get() {\n return this.elements;\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data;\n this.elements.subdata(data);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.elements.destroy();\n }\n }]);\n\n return ReglElements;\n}();\n\n\n//# sourceMappingURL=ReglElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xFbGVtZW50cy5qcz9lM2Q3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNyQjtBQUNXO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFRLFVBQVUsc0RBQUU7QUFDakMsWUFBWSxzREFBVyxTQUFTLHNEQUFFO0FBQ2xDO0FBQ0EsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWtDO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsRWxlbWVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgZGF0YVR5cGVNYXAsIHVzYWdlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNlbGVtZW50c1xuICovXG5cbnZhciBSZWdsRWxlbWVudHMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsRWxlbWVudHMocmVHbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsRWxlbWVudHMpO1xuXG4gICAgdGhpcy5lbGVtZW50cyA9IHZvaWQgMDtcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgICAgdXNhZ2UgPSBvcHRpb25zLnVzYWdlLFxuICAgICAgICB0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgICBjb3VudCA9IG9wdGlvbnMuY291bnQ7XG4gICAgdGhpcy5lbGVtZW50cyA9IHJlR2wuZWxlbWVudHMoe1xuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIHVzYWdlOiB1c2FnZU1hcFt1c2FnZSB8fCBnbC5TVEFUSUNfRFJBV10sXG4gICAgICB0eXBlOiBkYXRhVHlwZU1hcFt0eXBlIHx8IGdsLlVOU0lHTkVEX0JZVEVdLFxuICAgICAgY291bnQ6IGNvdW50XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEVsZW1lbnRzLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ViRGF0YShfcmVmKSB7XG4gICAgICB2YXIgZGF0YSA9IF9yZWYuZGF0YTtcbiAgICAgIHRoaXMuZWxlbWVudHMuc3ViZGF0YShkYXRhKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5lbGVtZW50cy5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xFbGVtZW50cztcbn0oKTtcblxuZXhwb3J0IHsgUmVnbEVsZW1lbnRzIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xFbGVtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js":
/*!************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * adaptor for regl.Framebuffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#framebuffers\n */\nvar ReglFramebuffer = /*#__PURE__*/function () {\n function ReglFramebuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglFramebuffer);\n\n this.framebuffer = void 0;\n var width = options.width,\n height = options.height,\n color = options.color,\n colors = options.colors,\n depth = options.depth,\n stencil = options.stencil;\n var framebufferOptions = {\n width: width,\n height: height\n };\n\n if (Array.isArray(colors)) {\n framebufferOptions.colors = colors.map(function (c) {\n return c.get();\n });\n }\n\n if (color && typeof color !== 'boolean') {\n framebufferOptions.color = color.get();\n } // TODO: depth & stencil\n\n\n this.framebuffer = reGl.framebuffer(framebufferOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglFramebuffer, [{\n key: \"get\",\n value: function get() {\n return this.framebuffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.framebuffer.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.framebuffer.resize(width, height);\n }\n }]);\n\n return ReglFramebuffer;\n}();\n\n\n//# sourceMappingURL=ReglFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xGcmFtZWJ1ZmZlci5qcz9hZTc3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXFDO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsRnJhbWVidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5GcmFtZWJ1ZmZlclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjZnJhbWVidWZmZXJzXG4gKi9cbnZhciBSZWdsRnJhbWVidWZmZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsRnJhbWVidWZmZXIocmVHbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsRnJhbWVidWZmZXIpO1xuXG4gICAgdGhpcy5mcmFtZWJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgd2lkdGggPSBvcHRpb25zLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBvcHRpb25zLmhlaWdodCxcbiAgICAgICAgY29sb3IgPSBvcHRpb25zLmNvbG9yLFxuICAgICAgICBjb2xvcnMgPSBvcHRpb25zLmNvbG9ycyxcbiAgICAgICAgZGVwdGggPSBvcHRpb25zLmRlcHRoLFxuICAgICAgICBzdGVuY2lsID0gb3B0aW9ucy5zdGVuY2lsO1xuICAgIHZhciBmcmFtZWJ1ZmZlck9wdGlvbnMgPSB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2xvcnMpKSB7XG4gICAgICBmcmFtZWJ1ZmZlck9wdGlvbnMuY29sb3JzID0gY29sb3JzLm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICByZXR1cm4gYy5nZXQoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb2xvciAmJiB0eXBlb2YgY29sb3IgIT09ICdib29sZWFuJykge1xuICAgICAgZnJhbWVidWZmZXJPcHRpb25zLmNvbG9yID0gY29sb3IuZ2V0KCk7XG4gICAgfSAvLyBUT0RPOiBkZXB0aCAmIHN0ZW5jaWxcblxuXG4gICAgdGhpcy5mcmFtZWJ1ZmZlciA9IHJlR2wuZnJhbWVidWZmZXIoZnJhbWVidWZmZXJPcHRpb25zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsRnJhbWVidWZmZXIsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFtZWJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5mcmFtZWJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcbiAgICAgIHRoaXMuZnJhbWVidWZmZXIucmVzaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsRnJhbWVidWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xGcmFtZWJ1ZmZlciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglModel; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/**\n * adaptor for regl.DrawCommand\n */\nvar ReglModel = /*#__PURE__*/function () {\n function ReglModel(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, ReglModel);\n\n this.reGl = void 0;\n this.drawCommand = void 0;\n this.uniforms = {};\n this.reGl = reGl;\n var vs = options.vs,\n fs = options.fs,\n defines = options.defines,\n attributes = options.attributes,\n uniforms = options.uniforms,\n primitive = options.primitive,\n count = options.count,\n elements = options.elements,\n depth = options.depth,\n blend = options.blend,\n stencil = options.stencil,\n cull = options.cull,\n instances = options.instances,\n scissor = options.scissor,\n viewport = options.viewport;\n var reglUniforms = {};\n\n if (uniforms) {\n this.uniforms = Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms);\n Object.keys(uniforms).forEach(function (uniformName) {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n var reglAttributes = {};\n Object.keys(attributes).forEach(function (name) {\n reglAttributes[name] = attributes[name].get();\n });\n var defineStmts = defines && this.generateDefines(defines) || '';\n var drawParams = {\n attributes: reglAttributes,\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(defineStmts, \"\\n\").concat(fs),\n uniforms: reglUniforms,\n vert: \"\\n\".concat(defineStmts, \"\\n\").concat(vs),\n primitive: _constants__WEBPACK_IMPORTED_MODULE_6__[\"primitiveMap\"][primitive === undefined ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].TRIANGLES : primitive]\n };\n\n if (instances) {\n drawParams.instances = instances;\n } // elements 中可能包含 count,此时不应传入\n\n\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = elements.get();\n }\n\n if (scissor) {\n drawParams.scissor = scissor;\n }\n\n if (viewport) {\n drawParams.viewport = viewport;\n }\n\n this.initDepthDrawParams({\n depth: depth\n }, drawParams);\n this.initBlendDrawParams({\n blend: blend\n }, drawParams);\n this.initStencilDrawParams({\n stencil: stencil\n }, drawParams);\n this.initCullDrawParams({\n cull: cull\n }, drawParams);\n this.drawCommand = reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(ReglModel, [{\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(options.uniforms || {}));\n\n var reglDrawProps = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n reglDrawProps[uniformName] = uniforms[uniformName];\n } else if (type === 'string') {// TODO: image url\n } else {\n reglDrawProps[uniformName] = uniforms[uniformName].get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// don't need do anything since we will call `rendererService.cleanup()`\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n\n }, {\n key: \"initDepthDrawParams\",\n value: function initDepthDrawParams(_ref, drawParams) {\n var depth = _ref.depth;\n\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: _constants__WEBPACK_IMPORTED_MODULE_6__[\"depthFuncMap\"][depth.func || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].LESS],\n range: depth.range || [0, 1]\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n\n }, {\n key: \"initBlendDrawParams\",\n value: function initBlendDrawParams(_ref2, drawParams) {\n var blend = _ref2.blend;\n\n if (blend) {\n var enable = blend.enable,\n func = blend.func,\n equation = blend.equation,\n _blend$color = blend.color,\n color = _blend$color === void 0 ? [0, 0, 0, 0] : _blend$color; // @ts-ignore\n\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n srcAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n dstRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA],\n dstAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA]\n },\n equation: {\n rgb: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD],\n alpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD]\n },\n color: color\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n\n }, {\n key: \"initStencilDrawParams\",\n value: function initStencilDrawParams(_ref3, drawParams) {\n var stencil = _ref3.stencil;\n\n if (stencil) {\n var enable = stencil.enable,\n _stencil$mask = stencil.mask,\n mask = _stencil$mask === void 0 ? -1 : _stencil$mask,\n _stencil$func = stencil.func,\n func = _stencil$func === void 0 ? {\n cmp: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ALWAYS,\n ref: 0,\n mask: -1\n } : _stencil$func,\n _stencil$opFront = stencil.opFront,\n opFront = _stencil$opFront === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opFront,\n _stencil$opBack = stencil.opBack,\n opBack = _stencil$opBack === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opBack;\n drawParams.stencil = {\n enable: !!enable,\n mask: mask,\n func: _objectSpread(_objectSpread({}, func), {}, {\n cmp: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilFuncMap\"][func.cmp]\n }),\n opFront: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zpass]\n },\n opBack: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zpass]\n }\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n\n }, {\n key: \"initCullDrawParams\",\n value: function initCullDrawParams(_ref4, drawParams) {\n var cull = _ref4.cull;\n\n if (cull) {\n var enable = cull.enable,\n _cull$face = cull.face,\n face = _cull$face === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].BACK : _cull$face;\n drawParams.cull = {\n enable: !!enable,\n face: _constants__WEBPACK_IMPORTED_MODULE_6__[\"cullFaceMap\"][face]\n };\n }\n }\n }, {\n key: \"generateDefines\",\n value: function generateDefines(defines) {\n return Object.keys(defines).map(function (name) {\n return \"#define \".concat(name, \" \").concat(Number(defines[name]));\n }).join('\\n');\n }\n }]);\n\n return ReglModel;\n}();\n\n\n//# sourceMappingURL=ReglModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xNb2RlbC5qcz81ZTFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQ2dCO0FBQ0E7QUFDTjs7QUFFOUQsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUUzZTtBQUNVO0FBQ2lGOztBQUVwSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixzRUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLG1DQUFtQztBQUMzRztBQUNBO0FBQ0EsaUJBQWlCLHVEQUFZLDJCQUEyQixzREFBRTtBQUMxRDs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLG9EQUFvRCxrQkFBa0Isc0VBQWU7QUFDckY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCxrQkFBa0Isc0VBQWUsdUJBQXVCOztBQUUzRztBQUNBO0FBQ0EsbUJBQW1CLG9FQUFPOztBQUUxQjtBQUNBO0FBQ0E7QUFDQSxTQUFTLDhCQUE4QjtBQUN2QyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdURBQVksZUFBZSxzREFBRTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1REFBWSx3QkFBd0Isc0RBQUU7QUFDMUQsc0JBQXNCLHVEQUFZLDBCQUEwQixzREFBRTtBQUM5RCxvQkFBb0IsdURBQVksd0JBQXdCLHNEQUFFO0FBQzFELHNCQUFzQix1REFBWSwwQkFBMEIsc0RBQUU7QUFDOUQsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLDJEQUFnQiw2QkFBNkIsc0RBQUU7QUFDaEUsbUJBQW1CLDJEQUFnQiwrQkFBK0Isc0RBQUU7QUFDcEUsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBRTtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUU7QUFDbEIsaUJBQWlCLHNEQUFFO0FBQ25CLGlCQUFpQixzREFBRTtBQUNuQixTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixzREFBRTtBQUNsQixpQkFBaUIsc0RBQUU7QUFDbkIsaUJBQWlCLHNEQUFFO0FBQ25CLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsV0FBVztBQUN6RCxpQkFBaUIseURBQWM7QUFDL0IsV0FBVztBQUNYO0FBQ0Esa0JBQWtCLHVEQUFZO0FBQzlCLG1CQUFtQix1REFBWTtBQUMvQixtQkFBbUIsdURBQVk7QUFDL0IsV0FBVztBQUNYO0FBQ0Esa0JBQWtCLHVEQUFZO0FBQzlCLG1CQUFtQix1REFBWTtBQUMvQixtQkFBbUIsdURBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsc0RBQUU7QUFDN0M7QUFDQTtBQUNBLGdCQUFnQixzREFBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFK0I7QUFDaEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGV4dHJhY3RVbmlmb3JtcyB9IGZyb20gJy4uL3V0aWxzL3VuaWZvcm0nO1xuaW1wb3J0IHsgYmxlbmRFcXVhdGlvbk1hcCwgYmxlbmRGdW5jTWFwLCBjdWxsRmFjZU1hcCwgZGVwdGhGdW5jTWFwLCBwcmltaXRpdmVNYXAsIHN0ZW5jaWxGdW5jTWFwLCBzdGVuY2lsT3BNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5EcmF3Q29tbWFuZFxuICovXG52YXIgUmVnbE1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbE1vZGVsKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbE1vZGVsKTtcblxuICAgIHRoaXMucmVHbCA9IHZvaWQgMDtcbiAgICB0aGlzLmRyYXdDb21tYW5kID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybXMgPSB7fTtcbiAgICB0aGlzLnJlR2wgPSByZUdsO1xuICAgIHZhciB2cyA9IG9wdGlvbnMudnMsXG4gICAgICAgIGZzID0gb3B0aW9ucy5mcyxcbiAgICAgICAgZGVmaW5lcyA9IG9wdGlvbnMuZGVmaW5lcyxcbiAgICAgICAgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyxcbiAgICAgICAgdW5pZm9ybXMgPSBvcHRpb25zLnVuaWZvcm1zLFxuICAgICAgICBwcmltaXRpdmUgPSBvcHRpb25zLnByaW1pdGl2ZSxcbiAgICAgICAgY291bnQgPSBvcHRpb25zLmNvdW50LFxuICAgICAgICBlbGVtZW50cyA9IG9wdGlvbnMuZWxlbWVudHMsXG4gICAgICAgIGRlcHRoID0gb3B0aW9ucy5kZXB0aCxcbiAgICAgICAgYmxlbmQgPSBvcHRpb25zLmJsZW5kLFxuICAgICAgICBzdGVuY2lsID0gb3B0aW9ucy5zdGVuY2lsLFxuICAgICAgICBjdWxsID0gb3B0aW9ucy5jdWxsLFxuICAgICAgICBpbnN0YW5jZXMgPSBvcHRpb25zLmluc3RhbmNlcyxcbiAgICAgICAgc2Npc3NvciA9IG9wdGlvbnMuc2Npc3NvcixcbiAgICAgICAgdmlld3BvcnQgPSBvcHRpb25zLnZpZXdwb3J0O1xuICAgIHZhciByZWdsVW5pZm9ybXMgPSB7fTtcblxuICAgIGlmICh1bmlmb3Jtcykge1xuICAgICAgdGhpcy51bmlmb3JtcyA9IGV4dHJhY3RVbmlmb3Jtcyh1bmlmb3Jtcyk7XG4gICAgICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICAgICAgLy8gdXNlIHJlZ2wgcHJvcCBBUElcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWdsVW5pZm9ybXNbdW5pZm9ybU5hbWVdID0gcmVHbC5wcm9wKHVuaWZvcm1OYW1lKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciByZWdsQXR0cmlidXRlcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHJlZ2xBdHRyaWJ1dGVzW25hbWVdID0gYXR0cmlidXRlc1tuYW1lXS5nZXQoKTtcbiAgICB9KTtcbiAgICB2YXIgZGVmaW5lU3RtdHMgPSBkZWZpbmVzICYmIHRoaXMuZ2VuZXJhdGVEZWZpbmVzKGRlZmluZXMpIHx8ICcnO1xuICAgIHZhciBkcmF3UGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogcmVnbEF0dHJpYnV0ZXMsXG4gICAgICBmcmFnOiBcIiNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSFxcbiAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbHNlXFxuICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cIi5jb25jYXQoZGVmaW5lU3RtdHMsIFwiXFxuXCIpLmNvbmNhdChmcyksXG4gICAgICB1bmlmb3JtczogcmVnbFVuaWZvcm1zLFxuICAgICAgdmVydDogXCJcXG5cIi5jb25jYXQoZGVmaW5lU3RtdHMsIFwiXFxuXCIpLmNvbmNhdCh2cyksXG4gICAgICBwcmltaXRpdmU6IHByaW1pdGl2ZU1hcFtwcmltaXRpdmUgPT09IHVuZGVmaW5lZCA/IGdsLlRSSUFOR0xFUyA6IHByaW1pdGl2ZV1cbiAgICB9O1xuXG4gICAgaWYgKGluc3RhbmNlcykge1xuICAgICAgZHJhd1BhcmFtcy5pbnN0YW5jZXMgPSBpbnN0YW5jZXM7XG4gICAgfSAvLyBlbGVtZW50cyDkuK3lj6/og73ljIXlkKsgY291bnTvvIzmraTml7bkuI3lupTkvKDlhaVcblxuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICBkcmF3UGFyYW1zLmNvdW50ID0gY291bnQ7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRzKSB7XG4gICAgICBkcmF3UGFyYW1zLmVsZW1lbnRzID0gZWxlbWVudHMuZ2V0KCk7XG4gICAgfVxuXG4gICAgaWYgKHNjaXNzb3IpIHtcbiAgICAgIGRyYXdQYXJhbXMuc2Npc3NvciA9IHNjaXNzb3I7XG4gICAgfVxuXG4gICAgaWYgKHZpZXdwb3J0KSB7XG4gICAgICBkcmF3UGFyYW1zLnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0RGVwdGhEcmF3UGFyYW1zKHtcbiAgICAgIGRlcHRoOiBkZXB0aFxuICAgIH0sIGRyYXdQYXJhbXMpO1xuICAgIHRoaXMuaW5pdEJsZW5kRHJhd1BhcmFtcyh7XG4gICAgICBibGVuZDogYmxlbmRcbiAgICB9LCBkcmF3UGFyYW1zKTtcbiAgICB0aGlzLmluaXRTdGVuY2lsRHJhd1BhcmFtcyh7XG4gICAgICBzdGVuY2lsOiBzdGVuY2lsXG4gICAgfSwgZHJhd1BhcmFtcyk7XG4gICAgdGhpcy5pbml0Q3VsbERyYXdQYXJhbXMoe1xuICAgICAgY3VsbDogY3VsbFxuICAgIH0sIGRyYXdQYXJhbXMpO1xuICAgIHRoaXMuZHJhd0NvbW1hbmQgPSByZUdsKGRyYXdQYXJhbXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlZ2xNb2RlbCwgW3tcbiAgICBrZXk6IFwiYWRkVW5pZm9ybXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkVW5pZm9ybXModW5pZm9ybXMpIHtcbiAgICAgIHRoaXMudW5pZm9ybXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMudW5pZm9ybXMpLCBleHRyYWN0VW5pZm9ybXModW5pZm9ybXMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZHJhd1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkcmF3KG9wdGlvbnMpIHtcbiAgICAgIHZhciB1bmlmb3JtcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy51bmlmb3JtcyksIGV4dHJhY3RVbmlmb3JtcyhvcHRpb25zLnVuaWZvcm1zIHx8IHt9KSk7XG5cbiAgICAgIHZhciByZWdsRHJhd1Byb3BzID0ge307XG4gICAgICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICAgICAgdmFyIHR5cGUgPSBfdHlwZW9mKHVuaWZvcm1zW3VuaWZvcm1OYW1lXSk7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdib29sZWFuJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fCBBcnJheS5pc0FycmF5KHVuaWZvcm1zW3VuaWZvcm1OYW1lXSkgfHwgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0uQllURVNfUEVSX0VMRU1FTlQpIHtcbiAgICAgICAgICByZWdsRHJhd1Byb3BzW3VuaWZvcm1OYW1lXSA9IHVuaWZvcm1zW3VuaWZvcm1OYW1lXTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJykgey8vIFRPRE86IGltYWdlIHVybFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZ2xEcmF3UHJvcHNbdW5pZm9ybU5hbWVdID0gdW5pZm9ybXNbdW5pZm9ybU5hbWVdLmdldCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZHJhd0NvbW1hbmQocmVnbERyYXdQcm9wcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHsvLyBkb24ndCBuZWVkIGRvIGFueXRoaW5nIHNpbmNlIHdlIHdpbGwgY2FsbCBgcmVuZGVyZXJTZXJ2aWNlLmNsZWFudXAoKWBcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjZGVwdGgtYnVmZmVyXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0RGVwdGhEcmF3UGFyYW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXREZXB0aERyYXdQYXJhbXMoX3JlZiwgZHJhd1BhcmFtcykge1xuICAgICAgdmFyIGRlcHRoID0gX3JlZi5kZXB0aDtcblxuICAgICAgaWYgKGRlcHRoKSB7XG4gICAgICAgIGRyYXdQYXJhbXMuZGVwdGggPSB7XG4gICAgICAgICAgZW5hYmxlOiBkZXB0aC5lbmFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIWRlcHRoLmVuYWJsZSxcbiAgICAgICAgICBtYXNrOiBkZXB0aC5tYXNrID09PSB1bmRlZmluZWQgPyB0cnVlIDogISFkZXB0aC5tYXNrLFxuICAgICAgICAgIGZ1bmM6IGRlcHRoRnVuY01hcFtkZXB0aC5mdW5jIHx8IGdsLkxFU1NdLFxuICAgICAgICAgIHJhbmdlOiBkZXB0aC5yYW5nZSB8fCBbMCwgMV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYmxlbmRpbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImluaXRCbGVuZERyYXdQYXJhbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdEJsZW5kRHJhd1BhcmFtcyhfcmVmMiwgZHJhd1BhcmFtcykge1xuICAgICAgdmFyIGJsZW5kID0gX3JlZjIuYmxlbmQ7XG5cbiAgICAgIGlmIChibGVuZCkge1xuICAgICAgICB2YXIgZW5hYmxlID0gYmxlbmQuZW5hYmxlLFxuICAgICAgICAgICAgZnVuYyA9IGJsZW5kLmZ1bmMsXG4gICAgICAgICAgICBlcXVhdGlvbiA9IGJsZW5kLmVxdWF0aW9uLFxuICAgICAgICAgICAgX2JsZW5kJGNvbG9yID0gYmxlbmQuY29sb3IsXG4gICAgICAgICAgICBjb2xvciA9IF9ibGVuZCRjb2xvciA9PT0gdm9pZCAwID8gWzAsIDAsIDAsIDBdIDogX2JsZW5kJGNvbG9yOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgZHJhd1BhcmFtcy5ibGVuZCA9IHtcbiAgICAgICAgICBlbmFibGU6ICEhZW5hYmxlLFxuICAgICAgICAgIGZ1bmM6IHtcbiAgICAgICAgICAgIHNyY1JHQjogYmxlbmRGdW5jTWFwW2Z1bmMgJiYgZnVuYy5zcmNSR0IgfHwgZ2wuU1JDX0FMUEhBXSxcbiAgICAgICAgICAgIHNyY0FscGhhOiBibGVuZEZ1bmNNYXBbZnVuYyAmJiBmdW5jLnNyY0FscGhhIHx8IGdsLlNSQ19BTFBIQV0sXG4gICAgICAgICAgICBkc3RSR0I6IGJsZW5kRnVuY01hcFtmdW5jICYmIGZ1bmMuZHN0UkdCIHx8IGdsLk9ORV9NSU5VU19TUkNfQUxQSEFdLFxuICAgICAgICAgICAgZHN0QWxwaGE6IGJsZW5kRnVuY01hcFtmdW5jICYmIGZ1bmMuZHN0QWxwaGEgfHwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVxdWF0aW9uOiB7XG4gICAgICAgICAgICByZ2I6IGJsZW5kRXF1YXRpb25NYXBbZXF1YXRpb24gJiYgZXF1YXRpb24ucmdiIHx8IGdsLkZVTkNfQUREXSxcbiAgICAgICAgICAgIGFscGhhOiBibGVuZEVxdWF0aW9uTWFwW2VxdWF0aW9uICYmIGVxdWF0aW9uLmFscGhhIHx8IGdsLkZVTkNfQUREXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29sb3I6IGNvbG9yXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI3N0ZW5jaWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImluaXRTdGVuY2lsRHJhd1BhcmFtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0U3RlbmNpbERyYXdQYXJhbXMoX3JlZjMsIGRyYXdQYXJhbXMpIHtcbiAgICAgIHZhciBzdGVuY2lsID0gX3JlZjMuc3RlbmNpbDtcblxuICAgICAgaWYgKHN0ZW5jaWwpIHtcbiAgICAgICAgdmFyIGVuYWJsZSA9IHN0ZW5jaWwuZW5hYmxlLFxuICAgICAgICAgICAgX3N0ZW5jaWwkbWFzayA9IHN0ZW5jaWwubWFzayxcbiAgICAgICAgICAgIG1hc2sgPSBfc3RlbmNpbCRtYXNrID09PSB2b2lkIDAgPyAtMSA6IF9zdGVuY2lsJG1hc2ssXG4gICAgICAgICAgICBfc3RlbmNpbCRmdW5jID0gc3RlbmNpbC5mdW5jLFxuICAgICAgICAgICAgZnVuYyA9IF9zdGVuY2lsJGZ1bmMgPT09IHZvaWQgMCA/IHtcbiAgICAgICAgICBjbXA6IGdsLkFMV0FZUyxcbiAgICAgICAgICByZWY6IDAsXG4gICAgICAgICAgbWFzazogLTFcbiAgICAgICAgfSA6IF9zdGVuY2lsJGZ1bmMsXG4gICAgICAgICAgICBfc3RlbmNpbCRvcEZyb250ID0gc3RlbmNpbC5vcEZyb250LFxuICAgICAgICAgICAgb3BGcm9udCA9IF9zdGVuY2lsJG9wRnJvbnQgPT09IHZvaWQgMCA/IHtcbiAgICAgICAgICBmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpwYXNzOiBnbC5LRUVQXG4gICAgICAgIH0gOiBfc3RlbmNpbCRvcEZyb250LFxuICAgICAgICAgICAgX3N0ZW5jaWwkb3BCYWNrID0gc3RlbmNpbC5vcEJhY2ssXG4gICAgICAgICAgICBvcEJhY2sgPSBfc3RlbmNpbCRvcEJhY2sgPT09IHZvaWQgMCA/IHtcbiAgICAgICAgICBmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpwYXNzOiBnbC5LRUVQXG4gICAgICAgIH0gOiBfc3RlbmNpbCRvcEJhY2s7XG4gICAgICAgIGRyYXdQYXJhbXMuc3RlbmNpbCA9IHtcbiAgICAgICAgICBlbmFibGU6ICEhZW5hYmxlLFxuICAgICAgICAgIG1hc2s6IG1hc2ssXG4gICAgICAgICAgZnVuYzogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBmdW5jKSwge30sIHtcbiAgICAgICAgICAgIGNtcDogc3RlbmNpbEZ1bmNNYXBbZnVuYy5jbXBdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgb3BGcm9udDoge1xuICAgICAgICAgICAgZmFpbDogc3RlbmNpbE9wTWFwW29wRnJvbnQuZmFpbF0sXG4gICAgICAgICAgICB6ZmFpbDogc3RlbmNpbE9wTWFwW29wRnJvbnQuemZhaWxdLFxuICAgICAgICAgICAgenBhc3M6IHN0ZW5jaWxPcE1hcFtvcEZyb250LnpwYXNzXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3BCYWNrOiB7XG4gICAgICAgICAgICBmYWlsOiBzdGVuY2lsT3BNYXBbb3BCYWNrLmZhaWxdLFxuICAgICAgICAgICAgemZhaWw6IHN0ZW5jaWxPcE1hcFtvcEJhY2suemZhaWxdLFxuICAgICAgICAgICAgenBhc3M6IHN0ZW5jaWxPcE1hcFtvcEJhY2suenBhc3NdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNjdWxsaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0Q3VsbERyYXdQYXJhbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdEN1bGxEcmF3UGFyYW1zKF9yZWY0LCBkcmF3UGFyYW1zKSB7XG4gICAgICB2YXIgY3VsbCA9IF9yZWY0LmN1bGw7XG5cbiAgICAgIGlmIChjdWxsKSB7XG4gICAgICAgIHZhciBlbmFibGUgPSBjdWxsLmVuYWJsZSxcbiAgICAgICAgICAgIF9jdWxsJGZhY2UgPSBjdWxsLmZhY2UsXG4gICAgICAgICAgICBmYWNlID0gX2N1bGwkZmFjZSA9PT0gdm9pZCAwID8gZ2wuQkFDSyA6IF9jdWxsJGZhY2U7XG4gICAgICAgIGRyYXdQYXJhbXMuY3VsbCA9IHtcbiAgICAgICAgICBlbmFibGU6ICEhZW5hYmxlLFxuICAgICAgICAgIGZhY2U6IGN1bGxGYWNlTWFwW2ZhY2VdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdlbmVyYXRlRGVmaW5lc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZW5lcmF0ZURlZmluZXMoZGVmaW5lcykge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRlZmluZXMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gXCIjZGVmaW5lIFwiLmNvbmNhdChuYW1lLCBcIiBcIikuY29uY2F0KE51bWJlcihkZWZpbmVzW25hbWVdKSk7XG4gICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbE1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsTW9kZWwgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbE1vZGVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglTexture2D = /*#__PURE__*/function () {\n function ReglTexture2D(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglTexture2D);\n\n this.texture = void 0;\n this.width = void 0;\n this.height = void 0;\n var data = options.data,\n _options$type = options.type,\n type = _options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _options$type,\n width = options.width,\n height = options.height,\n _options$flipY = options.flipY,\n flipY = _options$flipY === void 0 ? false : _options$flipY,\n _options$format = options.format,\n format = _options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _options$format,\n _options$mipmap = options.mipmap,\n mipmap = _options$mipmap === void 0 ? false : _options$mipmap,\n _options$wrapS = options.wrapS,\n wrapS = _options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapS,\n _options$wrapT = options.wrapT,\n wrapT = _options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapT,\n _options$aniso = options.aniso,\n aniso = _options$aniso === void 0 ? 0 : _options$aniso,\n _options$alignment = options.alignment,\n alignment = _options$alignment === void 0 ? 1 : _options$alignment,\n _options$premultiplyA = options.premultiplyAlpha,\n premultiplyAlpha = _options$premultiplyA === void 0 ? false : _options$premultiplyA,\n _options$mag = options.mag,\n mag = _options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$mag,\n _options$min = options.min,\n min = _options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$min,\n _options$colorSpace = options.colorSpace,\n colorSpace = _options$colorSpace === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _options$colorSpace;\n this.width = width;\n this.height = height;\n var textureOptions = {\n width: width,\n height: height,\n // @ts-ignore\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type],\n format: _constants__WEBPACK_IMPORTED_MODULE_3__[\"formatMap\"][format],\n wrapS: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapS],\n wrapT: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapT],\n // @ts-ignore\n mag: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][mag],\n min: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][min],\n alignment: alignment,\n flipY: flipY,\n colorSpace: _constants__WEBPACK_IMPORTED_MODULE_3__[\"colorSpaceMap\"][colorSpace],\n premultiplyAlpha: premultiplyAlpha,\n aniso: aniso\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = _constants__WEBPACK_IMPORTED_MODULE_3__[\"mipmapMap\"][mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglTexture2D, [{\n key: \"get\",\n value: function get() {\n return this.texture;\n }\n }, {\n key: \"update\",\n value: function update() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.texture.destroy();\n }\n }]);\n\n return ReglTexture2D;\n}();\n\n\n//# sourceMappingURL=ReglTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xUZXh0dXJlMkQuanM/ZmNmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDckI7QUFDOEQ7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsc0RBQUU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxzREFBRTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsc0RBQUU7QUFDOUM7QUFDQSw0Q0FBNEMsc0RBQUU7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0Msc0RBQUU7QUFDMUM7QUFDQSx3Q0FBd0Msc0RBQUU7QUFDMUM7QUFDQSxzREFBc0Qsc0RBQUU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBVztBQUN2QixjQUFjLG9EQUFTO0FBQ3ZCLGFBQWEsc0RBQVc7QUFDeEIsYUFBYSxzREFBVztBQUN4QjtBQUNBLFdBQVcsb0RBQVM7QUFDcEIsV0FBVyxvREFBUztBQUNwQjtBQUNBO0FBQ0Esa0JBQWtCLHdEQUFhO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsb0RBQVM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRW1DO0FBQ3BDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsVGV4dHVyZTJELmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGNvbG9yU3BhY2VNYXAsIGRhdGFUeXBlTWFwLCBmaWx0ZXJNYXAsIGZvcm1hdE1hcCwgbWlwbWFwTWFwLCB3cmFwTW9kZU1hcCB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5CdWZmZXJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2J1ZmZlcnNcbiAqL1xuXG52YXIgUmVnbFRleHR1cmUyRCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZ2xUZXh0dXJlMkQocmVHbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsVGV4dHVyZTJEKTtcblxuICAgIHRoaXMudGV4dHVyZSA9IHZvaWQgMDtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhLFxuICAgICAgICBfb3B0aW9ucyR0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgICB0eXBlID0gX29wdGlvbnMkdHlwZSA9PT0gdm9pZCAwID8gZ2wuVU5TSUdORURfQllURSA6IF9vcHRpb25zJHR5cGUsXG4gICAgICAgIHdpZHRoID0gb3B0aW9ucy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQsXG4gICAgICAgIF9vcHRpb25zJGZsaXBZID0gb3B0aW9ucy5mbGlwWSxcbiAgICAgICAgZmxpcFkgPSBfb3B0aW9ucyRmbGlwWSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRmbGlwWSxcbiAgICAgICAgX29wdGlvbnMkZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgIGZvcm1hdCA9IF9vcHRpb25zJGZvcm1hdCA9PT0gdm9pZCAwID8gZ2wuUkdCQSA6IF9vcHRpb25zJGZvcm1hdCxcbiAgICAgICAgX29wdGlvbnMkbWlwbWFwID0gb3B0aW9ucy5taXBtYXAsXG4gICAgICAgIG1pcG1hcCA9IF9vcHRpb25zJG1pcG1hcCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRtaXBtYXAsXG4gICAgICAgIF9vcHRpb25zJHdyYXBTID0gb3B0aW9ucy53cmFwUyxcbiAgICAgICAgd3JhcFMgPSBfb3B0aW9ucyR3cmFwUyA9PT0gdm9pZCAwID8gZ2wuQ0xBTVBfVE9fRURHRSA6IF9vcHRpb25zJHdyYXBTLFxuICAgICAgICBfb3B0aW9ucyR3cmFwVCA9IG9wdGlvbnMud3JhcFQsXG4gICAgICAgIHdyYXBUID0gX29wdGlvbnMkd3JhcFQgPT09IHZvaWQgMCA/IGdsLkNMQU1QX1RPX0VER0UgOiBfb3B0aW9ucyR3cmFwVCxcbiAgICAgICAgX29wdGlvbnMkYW5pc28gPSBvcHRpb25zLmFuaXNvLFxuICAgICAgICBhbmlzbyA9IF9vcHRpb25zJGFuaXNvID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkYW5pc28sXG4gICAgICAgIF9vcHRpb25zJGFsaWdubWVudCA9IG9wdGlvbnMuYWxpZ25tZW50LFxuICAgICAgICBhbGlnbm1lbnQgPSBfb3B0aW9ucyRhbGlnbm1lbnQgPT09IHZvaWQgMCA/IDEgOiBfb3B0aW9ucyRhbGlnbm1lbnQsXG4gICAgICAgIF9vcHRpb25zJHByZW11bHRpcGx5QSA9IG9wdGlvbnMucHJlbXVsdGlwbHlBbHBoYSxcbiAgICAgICAgcHJlbXVsdGlwbHlBbHBoYSA9IF9vcHRpb25zJHByZW11bHRpcGx5QSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRwcmVtdWx0aXBseUEsXG4gICAgICAgIF9vcHRpb25zJG1hZyA9IG9wdGlvbnMubWFnLFxuICAgICAgICBtYWcgPSBfb3B0aW9ucyRtYWcgPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfb3B0aW9ucyRtYWcsXG4gICAgICAgIF9vcHRpb25zJG1pbiA9IG9wdGlvbnMubWluLFxuICAgICAgICBtaW4gPSBfb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfb3B0aW9ucyRtaW4sXG4gICAgICAgIF9vcHRpb25zJGNvbG9yU3BhY2UgPSBvcHRpb25zLmNvbG9yU3BhY2UsXG4gICAgICAgIGNvbG9yU3BhY2UgPSBfb3B0aW9ucyRjb2xvclNwYWNlID09PSB2b2lkIDAgPyBnbC5CUk9XU0VSX0RFRkFVTFRfV0VCR0wgOiBfb3B0aW9ucyRjb2xvclNwYWNlO1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB2YXIgdGV4dHVyZU9wdGlvbnMgPSB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHR5cGU6IGRhdGFUeXBlTWFwW3R5cGVdLFxuICAgICAgZm9ybWF0OiBmb3JtYXRNYXBbZm9ybWF0XSxcbiAgICAgIHdyYXBTOiB3cmFwTW9kZU1hcFt3cmFwU10sXG4gICAgICB3cmFwVDogd3JhcE1vZGVNYXBbd3JhcFRdLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFnOiBmaWx0ZXJNYXBbbWFnXSxcbiAgICAgIG1pbjogZmlsdGVyTWFwW21pbl0sXG4gICAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgICAgIGZsaXBZOiBmbGlwWSxcbiAgICAgIGNvbG9yU3BhY2U6IGNvbG9yU3BhY2VNYXBbY29sb3JTcGFjZV0sXG4gICAgICBwcmVtdWx0aXBseUFscGhhOiBwcmVtdWx0aXBseUFscGhhLFxuICAgICAgYW5pc286IGFuaXNvXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICB0ZXh0dXJlT3B0aW9ucy5kYXRhID0gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1pcG1hcCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRleHR1cmVPcHRpb25zLm1pcG1hcCA9IG1pcG1hcE1hcFttaXBtYXBdO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG1pcG1hcCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0ZXh0dXJlT3B0aW9ucy5taXBtYXAgPSBtaXBtYXA7XG4gICAgfVxuXG4gICAgdGhpcy50ZXh0dXJlID0gcmVHbC50ZXh0dXJlKHRleHR1cmVPcHRpb25zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsVGV4dHVyZTJELCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dHVyZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMudGV4dHVyZS5fdGV4dHVyZS5iaW5kKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcbiAgICAgIHRoaXMudGV4dHVyZS5yZXNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy50ZXh0dXJlLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbFRleHR1cmUyRDtcbn0oKTtcblxuZXhwb3J0IHsgUmVnbFRleHR1cmUyRCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsVGV4dHVyZTJELmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js ***!
\******************************************************************/
/*! exports provided: primitiveMap, usageMap, dataTypeMap, formatMap, mipmapMap, filterMap, wrapModeMap, colorSpaceMap, depthFuncMap, blendEquationMap, blendFuncMap, stencilFuncMap, stencilOpMap, cullFaceMap */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"usageMap\", function() { return usageMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataTypeMap\", function() { return dataTypeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mipmapMap\", function() { return mipmapMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorSpaceMap\", function() { return colorSpaceMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilFuncMap\", function() { return stencilFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilOpMap\", function() { return stencilOpMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cullFaceMap\", function() { return cullFaceMap; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n\n\nvar _primitiveMap, _usageMap, _dataTypeMap, _formatMap, _mipmapMap, _filterMap, _wrapModeMap, _colorSpaceMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _stencilFuncMap, _stencilOpMap, _cullFaceMap;\n\n/**\n * @desc 由于 regl 使用大量字符串而非 WebGL 常量,因此需要映射\n */\n\n// @see https://github.com/regl-project/regl/blob/gh-pages/lib/constants/primitives.json\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, 'points'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, 'lines'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, 'line loop'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, 'line strip'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, 'triangles'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, 'triangle fan'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, 'triangle strip'), _primitiveMap);\nvar usageMap = (_usageMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STATIC_DRAW, 'static'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DYNAMIC_DRAW, 'dynamic'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STREAM_DRAW, 'stream'), _usageMap);\nvar dataTypeMap = (_dataTypeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BYTE, 'int8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'int16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INT, 'int32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_BYTE, 'uint8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_SHORT, 'uint16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'uint32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FLOAT, 'float'), _dataTypeMap);\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE, 'luminance'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE_ALPHA, 'luminance alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB, 'rgb'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA4, 'rgba4'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB5_A1, 'rgb5 a1'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB565, 'rgb565'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth stencil'), _formatMap);\nvar mipmapMap = (_mipmapMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DONT_CARE, 'dont care'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NICEST, 'nice'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FASTEST, 'fast'), _mipmapMap);\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_LINEAR, 'mipmap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_LINEAR, 'nearest mipmap linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_NEAREST, 'linear mipmap nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_NEAREST, 'nearest mipmap nearest'), _filterMap);\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror'), _wrapModeMap);\nvar colorSpaceMap = (_colorSpaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NONE, 'none'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BROWSER_DEFAULT_WEBGL, 'browser'), _colorSpaceMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, 'add'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, 'min'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, 'max'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, 'subtract'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, 'reverse subtract'), _blendEquationMap);\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, 'one'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, 'src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, 'one minus src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, 'src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, 'one minus src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, 'dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, 'one minus dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, 'dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, 'one minus dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, 'constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, 'one minus constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_ALPHA, 'constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_ALPHA, 'one minus constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, 'src alpha saturate'), _blendFuncMap);\nvar stencilFuncMap = (_stencilFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _stencilFuncMap);\nvar stencilOpMap = (_stencilOpMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].KEEP, 'keep'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPLACE, 'replace'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INVERT, 'invert'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR, 'increment'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR, 'decrement'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR_WRAP, 'increment wrap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR_WRAP, 'decrement wrap'), _stencilOpMap);\nvar cullFaceMap = (_cullFaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT, 'front'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BACK, 'back'), _cullFaceMap);\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2NvbnN0YW50cy5qcz85YTIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTs7QUFFcEU7O0FBRUE7QUFDQTtBQUNBO0FBQ3lDO0FBQ3pDO0FBQ08sc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsa0JBQWtCLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDRCQUE0Qiw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSxnQ0FBZ0MsNEVBQWUsZ0JBQWdCLHNEQUFFO0FBQ3JhLDhCQUE4QixFQUFFLDRFQUFlLFlBQVksc0RBQUUseUJBQXlCLDRFQUFlLFlBQVksc0RBQUUsMkJBQTJCLDRFQUFlLFlBQVksc0RBQUU7QUFDM0ssb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxnQkFBZ0IsNEVBQWUsZUFBZSxzREFBRSx5QkFBeUIsNEVBQWUsZUFBZSxzREFBRSxnQkFBZ0IsNEVBQWUsZUFBZSxzREFBRSwwQkFBMEIsNEVBQWUsZUFBZSxzREFBRSw0QkFBNEIsNEVBQWUsZUFBZSxzREFBRSwwQkFBMEIsNEVBQWUsZUFBZSxzREFBRTtBQUMvWSxnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLGtCQUFrQiw0RUFBZSxhQUFhLHNEQUFFLDBCQUEwQiw0RUFBZSxhQUFhLHNEQUFFLHNDQUFzQyw0RUFBZSxhQUFhLHNEQUFFLGNBQWMsNEVBQWUsYUFBYSxzREFBRSxnQkFBZ0IsNEVBQWUsYUFBYSxzREFBRSxrQkFBa0IsNEVBQWUsYUFBYSxzREFBRSxzQkFBc0IsNEVBQWUsYUFBYSxzREFBRSxvQkFBb0IsNEVBQWUsYUFBYSxzREFBRSw0QkFBNEIsNEVBQWUsYUFBYSxzREFBRTtBQUN0aEIsZ0NBQWdDLEVBQUUsNEVBQWUsYUFBYSxzREFBRSwwQkFBMEIsNEVBQWUsYUFBYSxzREFBRSxrQkFBa0IsNEVBQWUsYUFBYSxzREFBRTtBQUN4SyxnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLHNCQUFzQiw0RUFBZSxhQUFhLHNEQUFFLG9CQUFvQiw0RUFBZSxhQUFhLHNEQUFFLGtDQUFrQyw0RUFBZSxhQUFhLHNEQUFFLGtEQUFrRCw0RUFBZSxhQUFhLHNEQUFFLGtEQUFrRCw0RUFBZSxhQUFhLHNEQUFFO0FBQ3RZLG9DQUFvQyxFQUFFLDRFQUFlLGVBQWUsc0RBQUUsb0JBQW9CLDRFQUFlLGVBQWUsc0RBQUUsMEJBQTBCLDRFQUFlLGVBQWUsc0RBQUU7QUFDcEwsd0NBQXdDLEVBQUUsNEVBQWUsaUJBQWlCLHNEQUFFLGdCQUFnQiw0RUFBZSxpQkFBaUIsc0RBQUU7QUFDOUgsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLGtCQUFrQiw0RUFBZSxnQkFBZ0Isc0RBQUUsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLDRFQUFlLGdCQUFnQixzREFBRSxvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGtCQUFrQiw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDdGIsOENBQThDLEVBQUUsNEVBQWUsb0JBQW9CLHNEQUFFLG1CQUFtQiw0RUFBZSxvQkFBb0Isc0RBQUUsa0JBQWtCLDRFQUFlLG9CQUFvQixzREFBRSxrQkFBa0IsNEVBQWUsb0JBQW9CLHNEQUFFLDZCQUE2Qiw0RUFBZSxvQkFBb0Isc0RBQUU7QUFDN1Qsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsY0FBYyw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSw4Q0FBOEMsNEVBQWUsZ0JBQWdCLHNEQUFFLDBCQUEwQiw0RUFBZSxnQkFBZ0Isc0RBQUUsOENBQThDLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDhDQUE4Qyw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSw4Q0FBOEMsNEVBQWUsZ0JBQWdCLHNEQUFFLG9DQUFvQyw0RUFBZSxnQkFBZ0Isc0RBQUUsd0RBQXdELDRFQUFlLGdCQUFnQixzREFBRSxvQ0FBb0MsNEVBQWUsZ0JBQWdCLHNEQUFFLHdEQUF3RCw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDN2dDLDBDQUEwQyxFQUFFLDRFQUFlLGtCQUFrQixzREFBRSxrQkFBa0IsNEVBQWUsa0JBQWtCLHNEQUFFLG9CQUFvQiw0RUFBZSxrQkFBa0Isc0RBQUUsZ0JBQWdCLDRFQUFlLGtCQUFrQixzREFBRSxvQkFBb0IsNEVBQWUsa0JBQWtCLHNEQUFFLHNCQUFzQiw0RUFBZSxrQkFBa0Isc0RBQUUsb0JBQW9CLDRFQUFlLGtCQUFrQixzREFBRSxrQkFBa0IsNEVBQWUsa0JBQWtCLHNEQUFFO0FBQzFjLHNDQUFzQyxFQUFFLDRFQUFlLGdCQUFnQixzREFBRSxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLDRFQUFlLGdCQUFnQixzREFBRSxvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLHFCQUFxQiw0RUFBZSxnQkFBZ0Isc0RBQUUscUJBQXFCLDRFQUFlLGdCQUFnQixzREFBRSwrQkFBK0IsNEVBQWUsZ0JBQWdCLHNEQUFFO0FBQ25jLG9DQUFvQyxFQUFFLDRFQUFlLGVBQWUsc0RBQUUsa0JBQWtCLDRFQUFlLGVBQWUsc0RBQUU7QUFDL0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxudmFyIF9wcmltaXRpdmVNYXAsIF91c2FnZU1hcCwgX2RhdGFUeXBlTWFwLCBfZm9ybWF0TWFwLCBfbWlwbWFwTWFwLCBfZmlsdGVyTWFwLCBfd3JhcE1vZGVNYXAsIF9jb2xvclNwYWNlTWFwLCBfZGVwdGhGdW5jTWFwLCBfYmxlbmRFcXVhdGlvbk1hcCwgX2JsZW5kRnVuY01hcCwgX3N0ZW5jaWxGdW5jTWFwLCBfc3RlbmNpbE9wTWFwLCBfY3VsbEZhY2VNYXA7XG5cbi8qKlxuICogQGRlc2Mg55Sx5LqOIHJlZ2wg5L2/55So5aSn6YeP5a2X56ym5Liy6ICM6Z2eIFdlYkdMIOW4uOmHj++8jOWboOatpOmcgOimgeaYoOWwhFxuICovXG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9saWIvY29uc3RhbnRzL3ByaW1pdGl2ZXMuanNvblxuZXhwb3J0IHZhciBwcmltaXRpdmVNYXAgPSAoX3ByaW1pdGl2ZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuUE9JTlRTLCAncG9pbnRzJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FUywgJ2xpbmVzJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FX0xPT1AsICdsaW5lIGxvb3AnKSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVfU1RSSVAsICdsaW5lIHN0cmlwJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRVMsICd0cmlhbmdsZXMnKSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX0ZBTiwgJ3RyaWFuZ2xlIGZhbicpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVfU1RSSVAsICd0cmlhbmdsZSBzdHJpcCcpLCBfcHJpbWl0aXZlTWFwKTtcbmV4cG9ydCB2YXIgdXNhZ2VNYXAgPSAoX3VzYWdlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfdXNhZ2VNYXAsIGdsLlNUQVRJQ19EUkFXLCAnc3RhdGljJyksIF9kZWZpbmVQcm9wZXJ0eShfdXNhZ2VNYXAsIGdsLkRZTkFNSUNfRFJBVywgJ2R5bmFtaWMnKSwgX2RlZmluZVByb3BlcnR5KF91c2FnZU1hcCwgZ2wuU1RSRUFNX0RSQVcsICdzdHJlYW0nKSwgX3VzYWdlTWFwKTtcbmV4cG9ydCB2YXIgZGF0YVR5cGVNYXAgPSAoX2RhdGFUeXBlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLkJZVEUsICdpbnQ4JyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLlVOU0lHTkVEX0lOVCwgJ2ludDE2JyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLklOVCwgJ2ludDMyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLlVOU0lHTkVEX0JZVEUsICd1aW50OCcpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9TSE9SVCwgJ3VpbnQxNicpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9JTlQsICd1aW50MzInKSwgX2RlZmluZVByb3BlcnR5KF9kYXRhVHlwZU1hcCwgZ2wuRkxPQVQsICdmbG9hdCcpLCBfZGF0YVR5cGVNYXApO1xuZXhwb3J0IHZhciBmb3JtYXRNYXAgPSAoX2Zvcm1hdE1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuQUxQSEEsICdhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuTFVNSU5BTkNFLCAnbHVtaW5hbmNlJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5MVU1JTkFOQ0VfQUxQSEEsICdsdW1pbmFuY2UgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQiwgJ3JnYicpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuUkdCQSwgJ3JnYmEnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQkE0LCAncmdiYTQnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQjVfQTEsICdyZ2I1IGExJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0I1NjUsICdyZ2I1NjUnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgJ2RlcHRoJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5ERVBUSF9TVEVOQ0lMLCAnZGVwdGggc3RlbmNpbCcpLCBfZm9ybWF0TWFwKTtcbmV4cG9ydCB2YXIgbWlwbWFwTWFwID0gKF9taXBtYXBNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9taXBtYXBNYXAsIGdsLkRPTlRfQ0FSRSwgJ2RvbnQgY2FyZScpLCBfZGVmaW5lUHJvcGVydHkoX21pcG1hcE1hcCwgZ2wuTklDRVNULCAnbmljZScpLCBfZGVmaW5lUHJvcGVydHkoX21pcG1hcE1hcCwgZ2wuRkFTVEVTVCwgJ2Zhc3QnKSwgX21pcG1hcE1hcCk7XG5leHBvcnQgdmFyIGZpbHRlck1hcCA9IChfZmlsdGVyTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5ORUFSRVNULCAnbmVhcmVzdCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSLCAnbGluZWFyJyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUiwgJ21pcG1hcCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSLCAnbmVhcmVzdCBtaXBtYXAgbGluZWFyJyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsICdsaW5lYXIgbWlwbWFwIG5lYXJlc3QnKSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsICduZWFyZXN0IG1pcG1hcCBuZWFyZXN0JyksIF9maWx0ZXJNYXApO1xuZXhwb3J0IHZhciB3cmFwTW9kZU1hcCA9IChfd3JhcE1vZGVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuUkVQRUFULCAncmVwZWF0JyksIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLkNMQU1QX1RPX0VER0UsICdjbGFtcCcpLCBfZGVmaW5lUHJvcGVydHkoX3dyYXBNb2RlTWFwLCBnbC5NSVJST1JFRF9SRVBFQVQsICdtaXJyb3InKSwgX3dyYXBNb2RlTWFwKTtcbmV4cG9ydCB2YXIgY29sb3JTcGFjZU1hcCA9IChfY29sb3JTcGFjZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NvbG9yU3BhY2VNYXAsIGdsLk5PTkUsICdub25lJyksIF9kZWZpbmVQcm9wZXJ0eShfY29sb3JTcGFjZU1hcCwgZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMLCAnYnJvd3NlcicpLCBfY29sb3JTcGFjZU1hcCk7XG5leHBvcnQgdmFyIGRlcHRoRnVuY01hcCA9IChfZGVwdGhGdW5jTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5ORVZFUiwgJ25ldmVyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5BTFdBWVMsICdhbHdheXMnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkxFU1MsICdsZXNzJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5MRVFVQUwsICdsZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkdSRUFURVIsICdncmVhdGVyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5HRVFVQUwsICdnZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkVRVUFMLCAnZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLk5PVEVRVUFMLCAnbm90ZXF1YWwnKSwgX2RlcHRoRnVuY01hcCk7XG5leHBvcnQgdmFyIGJsZW5kRXF1YXRpb25NYXAgPSAoX2JsZW5kRXF1YXRpb25NYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5GVU5DX0FERCwgJ2FkZCcpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLk1JTl9FWFQsICdtaW4nKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NQVhfRVhULCAnbWF4JyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19TVUJUUkFDVCwgJ3N1YnRyYWN0JyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19SRVZFUlNFX1NVQlRSQUNULCAncmV2ZXJzZSBzdWJ0cmFjdCcpLCBfYmxlbmRFcXVhdGlvbk1hcCk7XG5leHBvcnQgdmFyIGJsZW5kRnVuY01hcCA9IChfYmxlbmRGdW5jTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5aRVJPLCAnemVybycpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FLCAnb25lJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQ09MT1IsICdzcmMgY29sb3InKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IsICdvbmUgbWludXMgc3JjIGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQUxQSEEsICdzcmMgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsICdvbmUgbWludXMgc3JjIGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQ09MT1IsICdkc3QgY29sb3InKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQ09MT1IsICdvbmUgbWludXMgZHN0IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQUxQSEEsICdkc3QgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsICdvbmUgbWludXMgZHN0IGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5DT05TVEFOVF9DT0xPUiwgJ2NvbnN0YW50IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsICdvbmUgbWludXMgY29uc3RhbnQgY29sb3InKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkNPTlNUQU5UX0FMUEhBLCAnY29uc3RhbnQgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwgJ29uZSBtaW51cyBjb25zdGFudCBhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0FMUEhBX1NBVFVSQVRFLCAnc3JjIGFscGhhIHNhdHVyYXRlJyksIF9ibGVuZEZ1bmNNYXApO1xuZXhwb3J0IHZhciBzdGVuY2lsRnVuY01hcCA9IChfc3RlbmNpbEZ1bmNNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuTkVWRVIsICduZXZlcicpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5BTFdBWVMsICdhbHdheXMnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuTEVTUywgJ2xlc3MnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuTEVRVUFMLCAnbGVxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkdSRUFURVIsICdncmVhdGVyJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkdFUVVBTCwgJ2dlcXVhbCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5FUVVBTCwgJ2VxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLk5PVEVRVUFMLCAnbm90ZXF1YWwnKSwgX3N0ZW5jaWxGdW5jTWFwKTtcbmV4cG9ydCB2YXIgc3RlbmNpbE9wTWFwID0gKF9zdGVuY2lsT3BNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLlpFUk8sICd6ZXJvJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5LRUVQLCAna2VlcCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuUkVQTEFDRSwgJ3JlcGxhY2UnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLklOVkVSVCwgJ2ludmVydCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuSU5DUiwgJ2luY3JlbWVudCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuREVDUiwgJ2RlY3JlbWVudCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuSU5DUl9XUkFQLCAnaW5jcmVtZW50IHdyYXAnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLkRFQ1JfV1JBUCwgJ2RlY3JlbWVudCB3cmFwJyksIF9zdGVuY2lsT3BNYXApO1xuZXhwb3J0IHZhciBjdWxsRmFjZU1hcCA9IChfY3VsbEZhY2VNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jdWxsRmFjZU1hcCwgZ2wuRlJPTlQsICdmcm9udCcpLCBfZGVmaW5lUHJvcGVydHkoX2N1bGxGYWNlTWFwLCBnbC5CQUNLLCAnYmFjaycpLCBfY3VsbEZhY2VNYXApO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/index.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgl/index.js ***!
\**************************************************************/
/*! exports provided: WebGLEngine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return WebGLEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! regl */ \"./node_modules/regl/dist/regl.js\");\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(regl__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ReglAttribute */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\");\n/* harmony import */ var _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ReglBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\");\n/* harmony import */ var _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ReglComputeModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\");\n/* harmony import */ var _ReglElements__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ReglElements */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js\");\n/* harmony import */ var _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ReglFramebuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\");\n/* harmony import */ var _ReglModel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ReglModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js\");\n/* harmony import */ var _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ReglTexture2D */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * regl renderer\n */\n\nvar WebGLEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGLEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGLEngine);\n\n this.supportWebGPU = false;\n this.useWGSL = false;\n this.$canvas = void 0;\n this.gl = void 0;\n this.inited = void 0;\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(options) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!options.uniforms) {\n _context2.next = 3;\n break;\n }\n\n _context2.next = 3;\n return Promise.all(Object.keys(options.uniforms).map( /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(name) {\n var texture;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(options.uniforms[name] && options.uniforms[name].load !== undefined)) {\n _context.next = 5;\n break;\n }\n\n _context.next = 3;\n return options.uniforms[name].load();\n\n case 3:\n texture = _context.sent;\n // @ts-ignore\n options.uniforms[name] = texture;\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }()));\n\n case 3:\n return _context2.abrupt(\"return\", new _ReglModel__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this.gl, options));\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this.gl, options);\n };\n\n this.createBuffer = function (options) {\n return new _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.gl, options);\n };\n\n this.createElements = function (options) {\n return new _ReglElements__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this.gl, options);\n };\n\n this.createTexture2D = function (options) {\n return new _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this.gl, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this.gl, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n _this.gl({\n framebuffer: framebuffer ? framebuffer.get() : null\n })(drawCommands);\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(context) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", new _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this.gl, context));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.clear = function (options) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n var color = options.color,\n depth = options.depth,\n stencil = options.stencil,\n _options$framebuffer = options.framebuffer,\n framebuffer = _options$framebuffer === void 0 ? null : _options$framebuffer;\n var reglClearOptions = {\n color: color,\n depth: depth,\n stencil: stencil\n };\n reglClearOptions.framebuffer = framebuffer === null ? framebuffer : framebuffer.get();\n\n _this.gl.clear(reglClearOptions);\n };\n\n this.setScissor = function (scissor) {\n if (_this.gl && _this.gl._gl) {\n // https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/scissor\n if (scissor.enable && scissor.box) {\n // console.log(scissor.box);\n _this.gl._gl.enable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n\n _this.gl._gl.scissor(scissor.box.x, scissor.box.y, scissor.box.width, scissor.box.height);\n } else {\n _this.gl._gl.disable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n }\n\n _this.gl._refresh();\n }\n };\n\n this.viewport = function (_ref4) {\n var x = _ref4.x,\n y = _ref4.y,\n width = _ref4.width,\n height = _ref4.height;\n\n if (_this.gl && _this.gl._gl) {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n _this.gl._gl.viewport(x, y, width, height);\n\n _this.gl._refresh();\n }\n };\n\n this.readPixels = function (options) {\n var framebuffer = options.framebuffer,\n x = options.x,\n y = options.y,\n width = options.width,\n height = options.height;\n var readPixelsOptions = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n if (framebuffer) {\n readPixelsOptions.framebuffer = framebuffer.get();\n }\n\n return _this.gl.read(readPixelsOptions);\n };\n\n this.getCanvas = function () {\n return _this.$canvas;\n };\n\n this.getGLContext = function () {\n return _this.gl._gl;\n };\n\n this.destroy = function () {\n if (_this.gl) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n _this.gl.destroy();\n\n _this.inited = false;\n }\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGLEngine, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(cfg) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this.inited) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt(\"return\");\n\n case 2:\n this.$canvas = cfg.canvas; // tslint:disable-next-line:typedef\n\n _context4.next = 5;\n return new Promise(function (resolve, reject) {\n regl__WEBPACK_IMPORTED_MODULE_6___default()({\n canvas: cfg.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true // preserveDrawingBuffer: false,\n\n },\n pixelRatio: 1,\n // TODO: use extensions\n extensions: ['OES_element_index_uint', 'OES_texture_float', 'OES_standard_derivatives', // wireframe\n 'angle_instanced_arrays' // VSM shadow map\n ],\n optionalExtensions: ['EXT_texture_filter_anisotropic', 'EXT_blend_minmax', 'WEBGL_depth_texture'],\n profile: true,\n onDone: function onDone(err, r) {\n if (err || !r) {\n reject(err);\n } // @ts-ignore\n\n\n resolve(r);\n }\n });\n });\n\n case 5:\n this.gl = _context4.sent;\n this.inited = true;\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function init(_x4) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n // @see https://github.com/antvis/GWebGPUEngine/issues/26\n // @ts-ignore\n return this.gl.limits.readFloat;\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {//\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {//\n }\n }]);\n\n return WebGLEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2luZGV4LmpzP2ZjOTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNKO0FBQ047O0FBRTlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ0Y7QUFDZjtBQUNvQjtBQUNOO0FBQ1k7QUFDUjtBQUNNO0FBQ1o7QUFDUTtBQUM1QztBQUNBO0FBQ0E7O0FBRU8sMEJBQTBCLDREQUFVO0FBQzNDO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDakY7QUFDQSwyQkFBMkIsaUVBQW1CO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQSxzREFBc0QsbURBQVM7O0FBRS9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsaUJBQWlCLHNEQUFhO0FBQzlCOztBQUVBO0FBQ0EsaUJBQWlCLG1EQUFVO0FBQzNCOztBQUVBO0FBQ0EsaUJBQWlCLHNEQUFZO0FBQzdCOztBQUVBO0FBQ0EsaUJBQWlCLHVEQUFhO0FBQzlCOztBQUVBO0FBQ0EsaUJBQWlCLHlEQUFlO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELHlEQUFnQjs7QUFFdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHNEQUFFOztBQUVoQztBQUNBLFNBQVM7QUFDVCwrQkFBK0Isc0RBQUU7QUFDakM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBLGtCQUFrQiwyQ0FBSTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7OztBQUd2QjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGtDQUFrQztBQUNsQztBQUNBLEdBQUc7QUFDSDtBQUNBLGdDQUFnQztBQUNoQztBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuLyoqXG4gKiByZW5kZXIgdy8gcmVnbFxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWRcbiAqL1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHJlZ2wgZnJvbSAncmVnbCc7XG5pbXBvcnQgUmVnbEF0dHJpYnV0ZSBmcm9tICcuL1JlZ2xBdHRyaWJ1dGUnO1xuaW1wb3J0IFJlZ2xCdWZmZXIgZnJvbSAnLi9SZWdsQnVmZmVyJztcbmltcG9ydCBSZWdsQ29tcHV0ZU1vZGVsIGZyb20gJy4vUmVnbENvbXB1dGVNb2RlbCc7XG5pbXBvcnQgUmVnbEVsZW1lbnRzIGZyb20gJy4vUmVnbEVsZW1lbnRzJztcbmltcG9ydCBSZWdsRnJhbWVidWZmZXIgZnJvbSAnLi9SZWdsRnJhbWVidWZmZXInO1xuaW1wb3J0IFJlZ2xNb2RlbCBmcm9tICcuL1JlZ2xNb2RlbCc7XG5pbXBvcnQgUmVnbFRleHR1cmUyRCBmcm9tICcuL1JlZ2xUZXh0dXJlMkQnO1xuLyoqXG4gKiByZWdsIHJlbmRlcmVyXG4gKi9cblxuZXhwb3J0IHZhciBXZWJHTEVuZ2luZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdMRW5naW5lKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR0xFbmdpbmUpO1xuXG4gICAgdGhpcy5zdXBwb3J0V2ViR1BVID0gZmFsc2U7XG4gICAgdGhpcy51c2VXR1NMID0gZmFsc2U7XG4gICAgdGhpcy4kY2FudmFzID0gdm9pZCAwO1xuICAgIHRoaXMuZ2wgPSB2b2lkIDA7XG4gICAgdGhpcy5pbml0ZWQgPSB2b2lkIDA7XG5cbiAgICB0aGlzLmNyZWF0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMudW5pZm9ybXMpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMob3B0aW9ucy51bmlmb3JtcykubWFwKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG9wdGlvbnMudW5pZm9ybXNbbmFtZV0gJiYgb3B0aW9ucy51bmlmb3Jtc1tuYW1lXS5sb2FkICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnVuaWZvcm1zW25hbWVdLmxvYWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IF9jb250ZXh0LnNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudW5pZm9ybXNbbmFtZV0gPSB0ZXh0dXJlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0oKSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBuZXcgUmVnbE1vZGVsKF90aGlzLmdsLCBvcHRpb25zKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMik7XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5jcmVhdGVBdHRyaWJ1dGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsQXR0cmlidXRlKF90aGlzLmdsLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVCdWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsQnVmZmVyKF90aGlzLmdsLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ2xFbGVtZW50cyhfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlVGV4dHVyZTJEID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbFRleHR1cmUyRChfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRnJhbWVidWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsRnJhbWVidWZmZXIoX3RoaXMuZ2wsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLnVzZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKGZyYW1lYnVmZmVyLCBkcmF3Q29tbWFuZHMpIHtcbiAgICAgIF90aGlzLmdsKHtcbiAgICAgICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyID8gZnJhbWVidWZmZXIuZ2V0KCkgOiBudWxsXG4gICAgICB9KShkcmF3Q29tbWFuZHMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUNvbXB1dGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMyhjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KFwicmV0dXJuXCIsIG5ldyBSZWdsQ29tcHV0ZU1vZGVsKF90aGlzLmdsLCBjb250ZXh0KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMyk7XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gzKSB7XG4gICAgICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB0aGlzLmNsZWFyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2NsZWFyLXRoZS1kcmF3LWJ1ZmZlclxuICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5jb2xvcixcbiAgICAgICAgICBkZXB0aCA9IG9wdGlvbnMuZGVwdGgsXG4gICAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbCxcbiAgICAgICAgICBfb3B0aW9ucyRmcmFtZWJ1ZmZlciA9IG9wdGlvbnMuZnJhbWVidWZmZXIsXG4gICAgICAgICAgZnJhbWVidWZmZXIgPSBfb3B0aW9ucyRmcmFtZWJ1ZmZlciA9PT0gdm9pZCAwID8gbnVsbCA6IF9vcHRpb25zJGZyYW1lYnVmZmVyO1xuICAgICAgdmFyIHJlZ2xDbGVhck9wdGlvbnMgPSB7XG4gICAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgICAgZGVwdGg6IGRlcHRoLFxuICAgICAgICBzdGVuY2lsOiBzdGVuY2lsXG4gICAgICB9O1xuICAgICAgcmVnbENsZWFyT3B0aW9ucy5mcmFtZWJ1ZmZlciA9IGZyYW1lYnVmZmVyID09PSBudWxsID8gZnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlci5nZXQoKTtcblxuICAgICAgX3RoaXMuZ2wuY2xlYXIocmVnbENsZWFyT3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuc2V0U2Npc3NvciA9IGZ1bmN0aW9uIChzY2lzc29yKSB7XG4gICAgICBpZiAoX3RoaXMuZ2wgJiYgX3RoaXMuZ2wuX2dsKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0FQSS9XZWJHTFJlbmRlcmluZ0NvbnRleHQvc2Npc3NvclxuICAgICAgICBpZiAoc2Npc3Nvci5lbmFibGUgJiYgc2Npc3Nvci5ib3gpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzY2lzc29yLmJveCk7XG4gICAgICAgICAgX3RoaXMuZ2wuX2dsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpO1xuXG4gICAgICAgICAgX3RoaXMuZ2wuX2dsLnNjaXNzb3Ioc2Npc3Nvci5ib3gueCwgc2Npc3Nvci5ib3gueSwgc2Npc3Nvci5ib3gud2lkdGgsIHNjaXNzb3IuYm94LmhlaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuZ2wuX2dsLmRpc2FibGUoZ2wuU0NJU1NPUl9URVNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmdsLl9yZWZyZXNoKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMudmlld3BvcnQgPSBmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIHZhciB4ID0gX3JlZjQueCxcbiAgICAgICAgICB5ID0gX3JlZjQueSxcbiAgICAgICAgICB3aWR0aCA9IF9yZWY0LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF9yZWY0LmhlaWdodDtcblxuICAgICAgaWYgKF90aGlzLmdsICYmIF90aGlzLmdsLl9nbCkge1xuICAgICAgICAvLyB1c2UgV2ViR0wgY29udGV4dCBkaXJlY3RseVxuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCN1bnNhZmUtZXNjYXBlLWhhdGNoXG4gICAgICAgIF90aGlzLmdsLl9nbC52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgICBfdGhpcy5nbC5fcmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnJlYWRQaXhlbHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIGZyYW1lYnVmZmVyID0gb3B0aW9ucy5mcmFtZWJ1ZmZlcixcbiAgICAgICAgICB4ID0gb3B0aW9ucy54LFxuICAgICAgICAgIHkgPSBvcHRpb25zLnksXG4gICAgICAgICAgd2lkdGggPSBvcHRpb25zLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0O1xuICAgICAgdmFyIHJlYWRQaXhlbHNPcHRpb25zID0ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9O1xuXG4gICAgICBpZiAoZnJhbWVidWZmZXIpIHtcbiAgICAgICAgcmVhZFBpeGVsc09wdGlvbnMuZnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlci5nZXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF90aGlzLmdsLnJlYWQocmVhZFBpeGVsc09wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy4kY2FudmFzO1xuICAgIH07XG5cbiAgICB0aGlzLmdldEdMQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5nbC5fZ2w7XG4gICAgfTtcblxuICAgIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5nbCkge1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNjbGVhbi11cFxuICAgICAgICBfdGhpcy5nbC5kZXN0cm95KCk7XG5cbiAgICAgICAgX3RoaXMuaW5pdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHTEVuZ2luZSwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNChjZmcpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHRoaXMuJGNhbnZhcyA9IGNmZy5jYW52YXM7IC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0eXBlZGVmXG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgIHJlZ2woe1xuICAgICAgICAgICAgICAgICAgICBjYW52YXM6IGNmZy5jYW52YXMsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhbHBoYTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgVEFBIGluc3RlYWQgb2YgTVNBQVxuICAgICAgICAgICAgICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc3BlY3MvMS4wLyM1LjIuMVxuICAgICAgICAgICAgICAgICAgICAgIGFudGlhbGlhczogY2ZnLmFudGlhbGlhcyxcbiAgICAgICAgICAgICAgICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IHRydWUgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVyOiBmYWxzZSxcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwaXhlbFJhdGlvOiAxLFxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiB1c2UgZXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBbJ09FU19lbGVtZW50X2luZGV4X3VpbnQnLCAnT0VTX3RleHR1cmVfZmxvYXQnLCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJywgLy8gd2lyZWZyYW1lXG4gICAgICAgICAgICAgICAgICAgICdhbmdsZV9pbnN0YW5jZWRfYXJyYXlzJyAvLyBWU00gc2hhZG93IG1hcFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEV4dGVuc2lvbnM6IFsnRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljJywgJ0VYVF9ibGVuZF9taW5tYXgnLCAnV0VCR0xfZGVwdGhfdGV4dHVyZSddLFxuICAgICAgICAgICAgICAgICAgICBwcm9maWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvbkRvbmU6IGZ1bmN0aW9uIG9uRG9uZShlcnIsIHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIHx8ICFyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHRoaXMuZ2wgPSBfY29udGV4dDQuc2VudDtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoX3g0KSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpc0Zsb2F0U3VwcG9ydGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRmxvYXRTdXBwb3J0ZWQoKSB7XG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvR1dlYkdQVUVuZ2luZS9pc3N1ZXMvMjZcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiB0aGlzLmdsLmxpbWl0cy5yZWFkRmxvYXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJlZ2luRnJhbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmVnaW5GcmFtZSgpIHsvL1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmRGcmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmRGcmFtZSgpIHsvL1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHTEVuZ2luZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js":
/*!*************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGPUAttribute = /*#__PURE__*/function () {\n function WebGPUAttribute(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUAttribute);\n\n this.engine = engine;\n this.options = options;\n this.attribute = void 0;\n this.buffer = void 0;\n var _options = options,\n buffer = _options.buffer,\n offset = _options.offset,\n stride = _options.stride,\n normalized = _options.normalized,\n size = _options.size,\n divisor = _options.divisor,\n arrayStride = _options.arrayStride,\n attributes = _options.attributes,\n stepMode = _options.stepMode;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0,\n arrayStride: arrayStride || 0,\n // @ts-ignore\n attributes: attributes,\n stepMode: stepMode || 'vertex'\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUAttribute;\n}();\n\n\n//# sourceMappingURL=WebGPUAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVBdHRyaWJ1dGUuanM/YjkzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXFDO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvV2ViR1BVQXR0cmlidXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgV2ViR1BVQXR0cmlidXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gV2ViR1BVQXR0cmlidXRlKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVBdHRyaWJ1dGUpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICBidWZmZXIgPSBfb3B0aW9ucy5idWZmZXIsXG4gICAgICAgIG9mZnNldCA9IF9vcHRpb25zLm9mZnNldCxcbiAgICAgICAgc3RyaWRlID0gX29wdGlvbnMuc3RyaWRlLFxuICAgICAgICBub3JtYWxpemVkID0gX29wdGlvbnMubm9ybWFsaXplZCxcbiAgICAgICAgc2l6ZSA9IF9vcHRpb25zLnNpemUsXG4gICAgICAgIGRpdmlzb3IgPSBfb3B0aW9ucy5kaXZpc29yLFxuICAgICAgICBhcnJheVN0cmlkZSA9IF9vcHRpb25zLmFycmF5U3RyaWRlLFxuICAgICAgICBhdHRyaWJ1dGVzID0gX29wdGlvbnMuYXR0cmlidXRlcyxcbiAgICAgICAgc3RlcE1vZGUgPSBfb3B0aW9ucy5zdGVwTW9kZTtcbiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHtcbiAgICAgIGJ1ZmZlcjogYnVmZmVyLmdldCgpLFxuICAgICAgb2Zmc2V0OiBvZmZzZXQgfHwgMCxcbiAgICAgIHN0cmlkZTogc3RyaWRlIHx8IDAsXG4gICAgICBub3JtYWxpemVkOiBub3JtYWxpemVkIHx8IGZhbHNlLFxuICAgICAgZGl2aXNvcjogZGl2aXNvciB8fCAwLFxuICAgICAgYXJyYXlTdHJpZGU6IGFycmF5U3RyaWRlIHx8IDAsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgICAgc3RlcE1vZGU6IHN0ZXBNb2RlIHx8ICd2ZXJ0ZXgnXG4gICAgfTtcblxuICAgIGlmIChzaXplKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZS5zaXplID0gc2l6ZTtcbiAgICB9XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVQXR0cmlidXRlLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQnVmZmVyKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYnVmZmVyLnN1YkRhdGEob3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVQXR0cmlidXRlO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVBdHRyaWJ1dGUgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVQXR0cmlidXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nvar WebGPUBuffer = /*#__PURE__*/function () {\n function WebGPUBuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUBuffer);\n\n this.engine = engine;\n this.options = options;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type;\n this.buffer = this.createBuffer(data instanceof Array ? new Float32Array(data) : data, // TODO: WebGL 和 WebGPU buffer usage 映射关系\n usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].Vertex | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].CopyDst);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n this.setSubData(this.buffer, offset, data instanceof Array ? new Float32Array(data) : data);\n }\n }, {\n key: \"createBuffer\",\n value: function createBuffer(view, flags) {\n // @ts-ignore\n var padding = view.byteLength % 4;\n var verticesBufferDescriptor = {\n // @ts-ignore\n size: view.byteLength + padding,\n usage: flags\n };\n var buffer = this.engine.device.createBuffer(verticesBufferDescriptor);\n this.setSubData(buffer, 0, view);\n return buffer;\n }\n /**\n * 不同于 Babylon.js 的版本,使用最新的 GPUQueue.writeBuffer 方法\n * @see https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writebuffer\n * 已废弃创建一个临时的 mapped buffer 用于拷贝数据 @see https://gpuweb.github.io/gpuweb/#GPUDevice-createBufferMapped\n * @see https://github.com/gpuweb/gpuweb/blob/master/design/BufferOperations.md#updating-data-to-an-existing-buffer-like-webgls-buffersubdata\n */\n\n }, {\n key: \"setSubData\",\n value: function setSubData(destBuffer, destOffset, srcArrayBuffer) {\n // deprecated API setSubData\n // destBuffer.setSubData(0, srcArrayBuffer);\n // deprecated API createBufferMapped\n // use createBuffer & getMappedRange instead\n // const [srcBuffer, arrayBuffer] = this.engine.device.createBufferMapped({\n // size: byteCount,\n // usage: WebGPUConstants.BufferUsage.CopySrc,\n // });\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue; // @ts-ignore\n\n queue.writeBuffer(destBuffer, destOffset, srcArrayBuffer);\n }\n }]);\n\n return WebGPUBuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVCdWZmZXIuanM/ZDUwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNmO0FBQ2lCOztBQUVoRTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0VBQTJCLFVBQVUsd0VBQTJCO0FBQzdFOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixrQkFBa0IsNERBQVE7QUFDMUIsc0VBQXNFOztBQUV0RTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWtDO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvV2ViR1BVQnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcblxudmFyIFdlYkdQVUJ1ZmZlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUJ1ZmZlcihlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVQnVmZmVyKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgICAgZGF0YSA9IF9vcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gX29wdGlvbnMudXNhZ2UsXG4gICAgICAgIHR5cGUgPSBfb3B0aW9ucy50eXBlO1xuICAgIHRoaXMuYnVmZmVyID0gdGhpcy5jcmVhdGVCdWZmZXIoZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gbmV3IEZsb2F0MzJBcnJheShkYXRhKSA6IGRhdGEsIC8vIFRPRE86IFdlYkdMIOWSjCBXZWJHUFUgYnVmZmVyIHVzYWdlIOaYoOWwhOWFs+ezu1xuICAgIHVzYWdlIHx8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5WZXJ0ZXggfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ViRGF0YShfcmVmKSB7XG4gICAgICB2YXIgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgICBvZmZzZXQgPSBfcmVmLm9mZnNldDtcbiAgICAgIHRoaXMuc2V0U3ViRGF0YSh0aGlzLmJ1ZmZlciwgb2Zmc2V0LCBkYXRhIGluc3RhbmNlb2YgQXJyYXkgPyBuZXcgRmxvYXQzMkFycmF5KGRhdGEpIDogZGF0YSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUJ1ZmZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVCdWZmZXIodmlldywgZmxhZ3MpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZhciBwYWRkaW5nID0gdmlldy5ieXRlTGVuZ3RoICUgNDtcbiAgICAgIHZhciB2ZXJ0aWNlc0J1ZmZlckRlc2NyaXB0b3IgPSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2l6ZTogdmlldy5ieXRlTGVuZ3RoICsgcGFkZGluZyxcbiAgICAgICAgdXNhZ2U6IGZsYWdzXG4gICAgICB9O1xuICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCdWZmZXIodmVydGljZXNCdWZmZXJEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMuc2V0U3ViRGF0YShidWZmZXIsIDAsIHZpZXcpO1xuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5LiN5ZCM5LqOIEJhYnlsb24uanMg55qE54mI5pys77yM5L2/55So5pyA5paw55qEIEdQVVF1ZXVlLndyaXRlQnVmZmVyIOaWueazlVxuICAgICAqIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXF1ZXVlLXdyaXRlYnVmZmVyXG4gICAgICog5bey5bqf5byD5Yib5bu65LiA5Liq5Li05pe255qEIG1hcHBlZCBidWZmZXIg55So5LqO5ou36LSd5pWw5o2uIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jR1BVRGV2aWNlLWNyZWF0ZUJ1ZmZlck1hcHBlZFxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL0J1ZmZlck9wZXJhdGlvbnMubWQjdXBkYXRpbmctZGF0YS10by1hbi1leGlzdGluZy1idWZmZXItbGlrZS13ZWJnbHMtYnVmZmVyc3ViZGF0YVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0U3ViRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTdWJEYXRhKGRlc3RCdWZmZXIsIGRlc3RPZmZzZXQsIHNyY0FycmF5QnVmZmVyKSB7XG4gICAgICAvLyBkZXByZWNhdGVkIEFQSSBzZXRTdWJEYXRhXG4gICAgICAvLyBkZXN0QnVmZmVyLnNldFN1YkRhdGEoMCwgc3JjQXJyYXlCdWZmZXIpO1xuICAgICAgLy8gZGVwcmVjYXRlZCBBUEkgY3JlYXRlQnVmZmVyTWFwcGVkXG4gICAgICAvLyB1c2UgY3JlYXRlQnVmZmVyICYgZ2V0TWFwcGVkUmFuZ2UgaW5zdGVhZFxuICAgICAgLy8gY29uc3QgW3NyY0J1ZmZlciwgYXJyYXlCdWZmZXJdID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7XG4gICAgICAvLyAgIHNpemU6IGJ5dGVDb3VudCxcbiAgICAgIC8vICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5U3JjLFxuICAgICAgLy8gfSk7XG4gICAgICB2YXIgcXVldWUgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZW5naW5lLmRldmljZS5nZXRRdWV1ZSgpIDogdGhpcy5lbmdpbmUuZGV2aWNlLmRlZmF1bHRRdWV1ZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICBxdWV1ZS53cml0ZUJ1ZmZlcihkZXN0QnVmZmVyLCBkZXN0T2Zmc2V0LCBzcmNBcnJheUJ1ZmZlcik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUJ1ZmZlcjtcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVQnVmZmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVUJ1ZmZlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js":
/*!****************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js ***!
\****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUComputeModel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\n\n\nvar WebGPUComputeModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n function WebGPUComputeModel(engine, context) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, WebGPUComputeModel);\n\n this.engine = engine;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"createEntity\"])();\n this.uniformGPUBufferLayout = [];\n this.uniformBuffer = void 0;\n this.vertexBuffers = {};\n this.outputBuffer = void 0;\n this.bindGroupEntries = void 0;\n this.bindGroup = void 0;\n this.computePipeline = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(WebGPUComputeModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n var _yield$this$compileCo, computeStage, buffers, uniforms, bufferBindingIndex, offset, mergedUniformData;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.compileComputePipelineStageDescriptor(this.context.shader);\n\n case 2:\n _yield$this$compileCo = _context.sent;\n computeStage = _yield$this$compileCo.computeStage;\n buffers = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].StorageBuffer;\n });\n uniforms = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].Uniform;\n });\n bufferBindingIndex = uniforms.length ? 1 : 0;\n this.bindGroupEntries = [];\n\n if (bufferBindingIndex) {\n offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n // we use std140 layout @see https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)\n\n mergedUniformData = [];\n uniforms.forEach(function (uniform) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_7__[\"isNumber\"])(uniform.data)) {\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n\n offset += 4; // @ts-ignore\n\n mergedUniformData.push(uniform.data);\n } else {\n var _uniform$data;\n\n // @ts-ignore\n var originDataLength = ((_uniform$data = uniform.data) === null || _uniform$data === void 0 ? void 0 : _uniform$data.length) || 1;\n\n if (originDataLength === 3) {\n // vec3 -> vec4\n // @see http://ptgmedia.pearsoncmg.com/images/9780321552624/downloads/0321552628_AppL.pdf\n originDataLength = 4; // @ts-ignore\n\n uniform.data.push(0);\n } // 4 elements per block/line\n\n\n var padding = offset / 4 % 4;\n\n if (padding > 0) {\n var space = 4 - padding;\n\n if (originDataLength > 1 && originDataLength <= space) {\n if (originDataLength === 2) {\n if (space === 3) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n } else {\n for (var i = 0; i < space; i++) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n }\n\n offset += 4 * originDataLength;\n }\n });\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst\n });\n this.bindGroupEntries.push({\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get()\n }\n });\n } // create GPUBuffers for storeage buffers\n\n\n buffers.forEach(function (buffer) {\n if (buffer.data !== null) {\n if (buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].Vector4FloatArray || buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].FloatArray) {\n var gpuBuffer;\n\n if (buffer.name === _this.context.output.name) {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n _this.outputBuffer = gpuBuffer;\n _this.context.output = {\n name: buffer.name,\n // @ts-ignore\n length: isFinite(Number(buffer.data)) ? 1 : buffer.data.length,\n typedArrayConstructor: Float32Array,\n gpuBuffer: gpuBuffer.get()\n };\n } else {\n if (buffer.isReferer) {\n // @ts-ignore\n if (buffer.data.model && buffer.data.model.outputBuffer) {\n // @ts-ignore\n gpuBuffer = buffer.data.model.outputBuffer;\n } else {// referred kernel haven't been executed\n }\n } else {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n }\n } // @ts-ignore\n\n\n _this.vertexBuffers[buffer.name] = gpuBuffer;\n\n _this.bindGroupEntries.push({\n binding: bufferBindingIndex,\n resource: {\n name: buffer.name,\n refer: gpuBuffer ? undefined : buffer.data,\n // @ts-ignore\n buffer: gpuBuffer ? gpuBuffer.get() : undefined\n }\n });\n\n bufferBindingIndex++;\n }\n }\n }); // create compute pipeline layout\n\n this.computePipeline = this.engine.device.createComputePipeline({\n computeStage: computeStage\n });\n console.log(this.bindGroupEntries);\n this.bindGroup = this.engine.device.createBindGroup({\n layout: this.computePipeline.getBindGroupLayout(0),\n entries: this.bindGroupEntries\n });\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n if (this.uniformBuffer) {\n this.uniformBuffer.destroy();\n }\n\n Object.keys(this.vertexBuffers).forEach(function (bufferName) {\n return _this2.vertexBuffers[bufferName].destroy();\n });\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var output, length, typedArrayConstructor, gpuBuffer, byteCount, gpuReadBuffer, encoder, queue, arraybuffer, typedArray;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n output = this.context.output;\n\n if (!output) {\n _context2.next = 16;\n break;\n }\n\n length = output.length, typedArrayConstructor = output.typedArrayConstructor, gpuBuffer = output.gpuBuffer;\n\n if (!gpuBuffer) {\n _context2.next = 16;\n break;\n }\n\n // await gpuBuffer.mapAsync(WebGPUConstants.MapMode.Read);\n // const arraybuffer = gpuBuffer.getMappedRange();\n // let arraybuffer;\n // if (isSafari) {\n // arraybuffer = await gpuBuffer.mapReadAsync();\n // } else {\n byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT; // @see https://developers.google.com/web/updates/2019/08/get-started-with-gpu-compute-on-the-web\n\n gpuReadBuffer = this.engine.device.createBuffer({\n size: byteCount,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n });\n encoder = this.engine.device.createCommandEncoder();\n encoder.copyBufferToBuffer(gpuBuffer, 0, gpuReadBuffer, 0, byteCount);\n queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n _context2.next = 12;\n return gpuReadBuffer.mapAsync(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"MapMode\"].Read);\n\n case 12:\n arraybuffer = gpuReadBuffer.getMappedRange();\n typedArray = new typedArrayConstructor(arraybuffer.slice(0));\n gpuReadBuffer.unmap();\n return _context2.abrupt(\"return\", typedArray);\n\n case 16:\n return _context2.abrupt(\"return\", new Float32Array());\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"run\",\n value: function run() {\n if (this.engine.currentComputePass) {\n var _this$engine$currentC;\n\n this.engine.currentComputePass.setPipeline(this.computePipeline); // this.bindGroupEntries.forEach((entry) => {\n // if (!entry.resource.buffer) {\n // // get referred kernel's output\n // const gpuBuffer = (entry.resource.refer.model as WebGPUComputeModel)\n // .outputBuffer;\n // this.vertexBuffers[entry.resource.name] = gpuBuffer;\n // entry.resource.buffer = gpuBuffer.get();\n // }\n // });\n // const bindGroup = this.engine.device.createBindGroup({\n // layout: this.computePipeline.getBindGroupLayout(0),\n // entries: this.bindGroupEntries,\n // });\n\n this.engine.currentComputePass.setBindGroup(0, this.bindGroup);\n\n (_this$engine$currentC = this.engine.currentComputePass).dispatch.apply(_this$engine$currentC, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.context.dispatch));\n }\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var buffer = this.vertexBuffers[bufferName];\n\n if (buffer) {\n buffer.subData({\n data: data,\n offset: offset\n });\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform(uniformName, data) {\n var layout = this.uniformGPUBufferLayout.find(function (l) {\n return l.name === uniformName;\n });\n\n if (layout) {\n this.uniformBuffer.subData({\n data: Number.isFinite(data) ? new Float32Array([data]) : new Float32Array(data),\n offset: layout.offset\n });\n }\n }\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n // copy output GPUBuffer of kernel\n var inputBuffer = this.vertexBuffers[inputName];\n var outputBuffer = model.outputBuffer;\n\n if (inputBuffer && outputBuffer && inputBuffer !== outputBuffer) {\n var encoder = this.engine.device.createCommandEncoder();\n var _context$output = model.context.output,\n length = _context$output.length,\n typedArrayConstructor = _context$output.typedArrayConstructor;\n var byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT;\n encoder.copyBufferToBuffer(outputBuffer.get(), 0, inputBuffer.get(), 0, byteCount);\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n }\n }\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"compileComputePipelineStageDescriptor\",\n value: function () {\n var _compileComputePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(computeCode) {\n var computeShader, shaderVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n computeShader = computeCode;\n shaderVersion = '#version 450\\n';\n\n if (this.engine.options.useWGSL) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 5;\n return this.compileShaderToSpirV(computeCode, 'compute', shaderVersion);\n\n case 5:\n computeShader = _context3.sent;\n\n case 6:\n return _context3.abrupt(\"return\", {\n computeStage: {\n module: this.engine.device.createShaderModule({\n code: computeShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n });\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compileComputePipelineStageDescriptor(_x) {\n return _compileComputePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compileComputePipelineStageDescriptor;\n }()\n }]);\n\n return WebGPUComputeModel;\n}();\n\n\n//# sourceMappingURL=WebGPUComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVDb21wdXRlTW9kZWwuanM/MDUzZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ2E7QUFDRjtBQUNKO0FBQ047QUFDK0I7QUFDN0I7QUFDbEI7QUFDSjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSxrQkFBa0Isd0VBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7O0FBRUE7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxpRUFBYTtBQUMvRCxpQkFBaUI7QUFDakI7QUFDQSxrREFBa0QsaUVBQWE7QUFDL0QsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkI7QUFDN0I7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixpRUFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCLGtDQUFrQzs7QUFFbEM7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0EsdUJBQXVCOzs7QUFHdkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOzs7QUFHN0IsNEVBQTRFLCtFQUFrQjs7QUFFOUY7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EseUJBQXlCO0FBQ3pCLHlDQUF5QyxXQUFXO0FBQ3BEO0FBQ0E7QUFDQSwyQkFBMkI7OztBQUczQiwwRUFBMEUsK0VBQWtCOztBQUU1RjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLDJDQUEyQyxxREFBWTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix3RUFBMkIsV0FBVyx3RUFBMkI7QUFDNUYsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsaUJBQWlCOzs7QUFHakI7QUFDQTtBQUNBLHdDQUF3QyxtRUFBZSxzQ0FBc0MsbUVBQWU7QUFDNUc7O0FBRUE7QUFDQSx3Q0FBd0MscURBQVk7QUFDcEQ7QUFDQTtBQUNBLGlDQUFpQyx3RUFBMkIsV0FBVyx3RUFBMkIsV0FBVyx3RUFBMkI7QUFDeEkseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixPQUFPO0FBQ2xDO0FBQ0EseUJBQXlCO0FBQ3pCLDBDQUEwQyxxREFBWTtBQUN0RDtBQUNBO0FBQ0EsbUNBQW1DLHdFQUEyQixXQUFXLHdFQUEyQixXQUFXLHdFQUEyQjtBQUMxSSwyQkFBMkI7QUFDM0I7QUFDQSx1QkFBdUI7OztBQUd2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsRUFBRTs7QUFFbkI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFO0FBQ0EsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQiw2RUFBNkU7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0Esd0JBQXdCLDREQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxvRUFBdUI7O0FBRXJFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5RUFBeUU7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFFWjs7QUFFQSx1R0FBdUcsK0VBQWtCO0FBQ3pIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDREQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxtREFBbUQsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3RHO0FBQ0EsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDREQUFRO0FBQ3ZDLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUV3QztBQUN6QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IEFTVF9UT0tFTl9UWVBFUywgY3JlYXRlRW50aXR5LCBpc1NhZmFyaSwgU1RPUkFHRV9DTEFTUyB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlscy9pcy1udW1iZXInO1xuaW1wb3J0IFdlYkdQVUJ1ZmZlciBmcm9tICcuL1dlYkdQVUJ1ZmZlcic7XG5cbnZhciBXZWJHUFVDb21wdXRlTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog55So5LqO5ZCO57ut5riy5p+T5pe25Yqo5oCB5pu05pawXG4gICAqL1xuICBmdW5jdGlvbiBXZWJHUFVDb21wdXRlTW9kZWwoZW5naW5lLCBjb250ZXh0KSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVUNvbXB1dGVNb2RlbCk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZW50aXR5ID0gY3JlYXRlRW50aXR5KCk7XG4gICAgdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0ID0gW107XG4gICAgdGhpcy51bmlmb3JtQnVmZmVyID0gdm9pZCAwO1xuICAgIHRoaXMudmVydGV4QnVmZmVycyA9IHt9O1xuICAgIHRoaXMub3V0cHV0QnVmZmVyID0gdm9pZCAwO1xuICAgIHRoaXMuYmluZEdyb3VwRW50cmllcyA9IHZvaWQgMDtcbiAgICB0aGlzLmJpbmRHcm91cCA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbXB1dGVQaXBlbGluZSA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVDb21wdXRlTW9kZWwsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB2YXIgX3lpZWxkJHRoaXMkY29tcGlsZUNvLCBjb21wdXRlU3RhZ2UsIGJ1ZmZlcnMsIHVuaWZvcm1zLCBidWZmZXJCaW5kaW5nSW5kZXgsIG9mZnNldCwgbWVyZ2VkVW5pZm9ybURhdGE7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKHRoaXMuY29udGV4dC5zaGFkZXIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBfeWllbGQkdGhpcyRjb21waWxlQ28gPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgIGNvbXB1dGVTdGFnZSA9IF95aWVsZCR0aGlzJGNvbXBpbGVDby5jb21wdXRlU3RhZ2U7XG4gICAgICAgICAgICAgICAgYnVmZmVycyA9IHRoaXMuY29udGV4dC51bmlmb3Jtcy5maWx0ZXIoZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1bmlmb3JtLnN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5TdG9yYWdlQnVmZmVyO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHVuaWZvcm1zID0gdGhpcy5jb250ZXh0LnVuaWZvcm1zLmZpbHRlcihmdW5jdGlvbiAodW5pZm9ybSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuaWZvcm0uc3RvcmFnZUNsYXNzID09PSBTVE9SQUdFX0NMQVNTLlVuaWZvcm07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnVmZmVyQmluZGluZ0luZGV4ID0gdW5pZm9ybXMubGVuZ3RoID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kR3JvdXBFbnRyaWVzID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoYnVmZmVyQmluZGluZ0luZGV4KSB7XG4gICAgICAgICAgICAgICAgICBvZmZzZXQgPSAwOyAvLyBGSVhNRTog5omA5pyJIHVuaWZvcm0g5ZCI5bm25oiQ5LiA5LiqIGJ1ZmZlcu+8jOWbuuWumuS9v+eUqCBGbG9hdDMyQXJyYXkg5a2Y5YKo77yM56Gu5a6e5Lya6YCg5oiQ5LiA5Lqb5YaF5a2Y55qE5rWq6LS5XG4gICAgICAgICAgICAgICAgICAvLyB3ZSB1c2Ugc3RkMTQwIGxheW91dCBAc2VlIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5nbC93aWtpL0ludGVyZmFjZV9CbG9ja18oR0xTTClcblxuICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHVuaWZvcm1zLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKHVuaWZvcm0uZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdW5pZm9ybS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0OyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRVbmlmb3JtRGF0YS5wdXNoKHVuaWZvcm0uZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIF91bmlmb3JtJGRhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbkRhdGFMZW5ndGggPSAoKF91bmlmb3JtJGRhdGEgPSB1bmlmb3JtLmRhdGEpID09PSBudWxsIHx8IF91bmlmb3JtJGRhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF91bmlmb3JtJGRhdGEubGVuZ3RoKSB8fCAxO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGFMZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlYzMgLT4gdmVjNFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHNlZSBodHRwOi8vcHRnbWVkaWEucGVhcnNvbmNtZy5jb20vaW1hZ2VzLzk3ODAzMjE1NTI2MjQvZG93bmxvYWRzLzAzMjE1NTI2MjhfQXBwTC5wZGZcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbkRhdGFMZW5ndGggPSA0OyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm0uZGF0YS5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICAgIH0gLy8gNCBlbGVtZW50cyBwZXIgYmxvY2svbGluZVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFkZGluZyA9IG9mZnNldCAvIDQgJSA0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZGRpbmcgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3BhY2UgPSA0IC0gcGFkZGluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGFMZW5ndGggPiAxICYmIG9yaWdpbkRhdGFMZW5ndGggPD0gc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGFMZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhY2UgPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaC5hcHBseShtZXJnZWRVbmlmb3JtRGF0YSwgX3RvQ29uc3VtYWJsZUFycmF5KHVuaWZvcm0uZGF0YSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BhY2U7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaC5hcHBseShtZXJnZWRVbmlmb3JtRGF0YSwgX3RvQ29uc3VtYWJsZUFycmF5KHVuaWZvcm0uZGF0YSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdW5pZm9ybS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0ICogb3JpZ2luRGF0YUxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKHRoaXMuZW5naW5lLCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IOWkhOeQhiBTdHJ1Y3Qg5ZKMIGJvb2xlYW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBtZXJnZWRVbmlmb3JtRGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KG1lcmdlZFVuaWZvcm1EYXRhKSA6IG1lcmdlZFVuaWZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlVuaWZvcm0gfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmJpbmRHcm91cEVudHJpZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiB0aGlzLnVuaWZvcm1CdWZmZXIuZ2V0KClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSAvLyBjcmVhdGUgR1BVQnVmZmVycyBmb3Igc3RvcmVhZ2UgYnVmZmVyc1xuXG5cbiAgICAgICAgICAgICAgICBidWZmZXJzLmZvckVhY2goZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5kYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIudHlwZSA9PT0gQVNUX1RPS0VOX1RZUEVTLlZlY3RvcjRGbG9hdEFycmF5IHx8IGJ1ZmZlci50eXBlID09PSBBU1RfVE9LRU5fVFlQRVMuRmxvYXRBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBncHVCdWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLm5hbWUgPT09IF90aGlzLmNvbnRleHQub3V0cHV0Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdwdUJ1ZmZlciA9IG5ldyBXZWJHUFVCdWZmZXIoX3RoaXMuZW5naW5lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogaXNGaW5pdGUoTnVtYmVyKGJ1ZmZlci5kYXRhKSkgPyBbYnVmZmVyLmRhdGFdIDogYnVmZmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuU3RvcmFnZSB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5RHN0IHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlTcmNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMub3V0cHV0QnVmZmVyID0gZ3B1QnVmZmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29udGV4dC5vdXRwdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGJ1ZmZlci5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDogaXNGaW5pdGUoTnVtYmVyKGJ1ZmZlci5kYXRhKSkgPyAxIDogYnVmZmVyLmRhdGEubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3I6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QnVmZmVyOiBncHVCdWZmZXIuZ2V0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuaXNSZWZlcmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5kYXRhLm1vZGVsICYmIGJ1ZmZlci5kYXRhLm1vZGVsLm91dHB1dEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHVCdWZmZXIgPSBidWZmZXIuZGF0YS5tb2RlbC5vdXRwdXRCdWZmZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly8gcmVmZXJyZWQga2VybmVsIGhhdmVuJ3QgYmVlbiBleGVjdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncHVCdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKF90aGlzLmVuZ2luZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpc0Zpbml0ZShOdW1iZXIoYnVmZmVyLmRhdGEpKSA/IFtidWZmZXIuZGF0YV0gOiBidWZmZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlN0b3JhZ2UgfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdCB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5U3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0ZXhCdWZmZXJzW2J1ZmZlci5uYW1lXSA9IGdwdUJ1ZmZlcjtcblxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmJpbmRHcm91cEVudHJpZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nOiBidWZmZXJCaW5kaW5nSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBidWZmZXIubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXI6IGdwdUJ1ZmZlciA/IHVuZGVmaW5lZCA6IGJ1ZmZlci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogZ3B1QnVmZmVyID8gZ3B1QnVmZmVyLmdldCgpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBidWZmZXJCaW5kaW5nSW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pOyAvLyBjcmVhdGUgY29tcHV0ZSBwaXBlbGluZSBsYXlvdXRcblxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZVBpcGVsaW5lID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgICBjb21wdXRlU3RhZ2U6IGNvbXB1dGVTdGFnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYmluZEdyb3VwRW50cmllcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kR3JvdXAgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtcbiAgICAgICAgICAgICAgICAgIGxheW91dDogdGhpcy5jb21wdXRlUGlwZWxpbmUuZ2V0QmluZEdyb3VwTGF5b3V0KDApLFxuICAgICAgICAgICAgICAgICAgZW50cmllczogdGhpcy5iaW5kR3JvdXBFbnRyaWVzXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy51bmlmb3JtQnVmZmVyKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybUJ1ZmZlci5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudmVydGV4QnVmZmVycykuZm9yRWFjaChmdW5jdGlvbiAoYnVmZmVyTmFtZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLnZlcnRleEJ1ZmZlcnNbYnVmZmVyTmFtZV0uZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlYWREYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVhZERhdGEgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHtcbiAgICAgICAgdmFyIG91dHB1dCwgbGVuZ3RoLCB0eXBlZEFycmF5Q29uc3RydWN0b3IsIGdwdUJ1ZmZlciwgYnl0ZUNvdW50LCBncHVSZWFkQnVmZmVyLCBlbmNvZGVyLCBxdWV1ZSwgYXJyYXlidWZmZXIsIHR5cGVkQXJyYXk7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuY29udGV4dC5vdXRwdXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW91dHB1dCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxlbmd0aCA9IG91dHB1dC5sZW5ndGgsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IG91dHB1dC50eXBlZEFycmF5Q29uc3RydWN0b3IsIGdwdUJ1ZmZlciA9IG91dHB1dC5ncHVCdWZmZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWdwdUJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGF3YWl0IGdwdUJ1ZmZlci5tYXBBc3luYyhXZWJHUFVDb25zdGFudHMuTWFwTW9kZS5SZWFkKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBhcnJheWJ1ZmZlciA9IGdwdUJ1ZmZlci5nZXRNYXBwZWRSYW5nZSgpO1xuICAgICAgICAgICAgICAgIC8vIGxldCBhcnJheWJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAvLyBpZiAoaXNTYWZhcmkpIHtcbiAgICAgICAgICAgICAgICAvLyAgIGFycmF5YnVmZmVyID0gYXdhaXQgZ3B1QnVmZmVyLm1hcFJlYWRBc3luYygpO1xuICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnl0ZUNvdW50ID0gbGVuZ3RoICogdHlwZWRBcnJheUNvbnN0cnVjdG9yLkJZVEVTX1BFUl9FTEVNRU5UOyAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYi91cGRhdGVzLzIwMTkvMDgvZ2V0LXN0YXJ0ZWQtd2l0aC1ncHUtY29tcHV0ZS1vbi10aGUtd2ViXG5cbiAgICAgICAgICAgICAgICBncHVSZWFkQnVmZmVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICAgICAgICBzaXplOiBieXRlQ291bnQsXG4gICAgICAgICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVuY29kZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTtcbiAgICAgICAgICAgICAgICBlbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihncHVCdWZmZXIsIDAsIGdwdVJlYWRCdWZmZXIsIDAsIGJ5dGVDb3VudCk7XG4gICAgICAgICAgICAgICAgcXVldWUgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZS5kZXZpY2UuZ2V0UXVldWUoKSA6IHRoaXMuZW5naW5lLmRldmljZS5kZWZhdWx0UXVldWU7XG4gICAgICAgICAgICAgICAgcXVldWUuc3VibWl0KFtlbmNvZGVyLmZpbmlzaCgpXSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3B1UmVhZEJ1ZmZlci5tYXBBc3luYyhXZWJHUFVDb25zdGFudHMuTWFwTW9kZS5SZWFkKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIGFycmF5YnVmZmVyID0gZ3B1UmVhZEJ1ZmZlci5nZXRNYXBwZWRSYW5nZSgpO1xuICAgICAgICAgICAgICAgIHR5cGVkQXJyYXkgPSBuZXcgdHlwZWRBcnJheUNvbnN0cnVjdG9yKGFycmF5YnVmZmVyLnNsaWNlKDApKTtcbiAgICAgICAgICAgICAgICBncHVSZWFkQnVmZmVyLnVubWFwKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgdHlwZWRBcnJheSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBuZXcgRmxvYXQzMkFycmF5KCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVhZERhdGEoKSB7XG4gICAgICAgIHJldHVybiBfcmVhZERhdGEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWREYXRhO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICBpZiAodGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzKSB7XG4gICAgICAgIHZhciBfdGhpcyRlbmdpbmUkY3VycmVudEM7XG5cbiAgICAgICAgdGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzLnNldFBpcGVsaW5lKHRoaXMuY29tcHV0ZVBpcGVsaW5lKTsgLy8gdGhpcy5iaW5kR3JvdXBFbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIC8vICAgaWYgKCFlbnRyeS5yZXNvdXJjZS5idWZmZXIpIHtcbiAgICAgICAgLy8gICAgIC8vIGdldCByZWZlcnJlZCBrZXJuZWwncyBvdXRwdXRcbiAgICAgICAgLy8gICAgIGNvbnN0IGdwdUJ1ZmZlciA9IChlbnRyeS5yZXNvdXJjZS5yZWZlci5tb2RlbCBhcyBXZWJHUFVDb21wdXRlTW9kZWwpXG4gICAgICAgIC8vICAgICAgIC5vdXRwdXRCdWZmZXI7XG4gICAgICAgIC8vICAgICB0aGlzLnZlcnRleEJ1ZmZlcnNbZW50cnkucmVzb3VyY2UubmFtZV0gPSBncHVCdWZmZXI7XG4gICAgICAgIC8vICAgICBlbnRyeS5yZXNvdXJjZS5idWZmZXIgPSBncHVCdWZmZXIuZ2V0KCk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9KTtcbiAgICAgICAgLy8gY29uc3QgYmluZEdyb3VwID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgIC8vICAgbGF5b3V0OiB0aGlzLmNvbXB1dGVQaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlvdXQoMCksXG4gICAgICAgIC8vICAgZW50cmllczogdGhpcy5iaW5kR3JvdXBFbnRyaWVzLFxuICAgICAgICAvLyB9KTtcblxuICAgICAgICB0aGlzLmVuZ2luZS5jdXJyZW50Q29tcHV0ZVBhc3Muc2V0QmluZEdyb3VwKDAsIHRoaXMuYmluZEdyb3VwKTtcblxuICAgICAgICAoX3RoaXMkZW5naW5lJGN1cnJlbnRDID0gdGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzKS5kaXNwYXRjaC5hcHBseShfdGhpcyRlbmdpbmUkY3VycmVudEMsIF90b0NvbnN1bWFibGVBcnJheSh0aGlzLmNvbnRleHQuZGlzcGF0Y2gpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihidWZmZXJOYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwO1xuICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMudmVydGV4QnVmZmVyc1tidWZmZXJOYW1lXTtcblxuICAgICAgaWYgKGJ1ZmZlcikge1xuICAgICAgICBidWZmZXIuc3ViRGF0YSh7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlVW5pZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVVbmlmb3JtKHVuaWZvcm1OYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgbGF5b3V0ID0gdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LmZpbmQoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgcmV0dXJuIGwubmFtZSA9PT0gdW5pZm9ybU5hbWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxheW91dCkge1xuICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIuc3ViRGF0YSh7XG4gICAgICAgICAgZGF0YTogTnVtYmVyLmlzRmluaXRlKGRhdGEpID8gbmV3IEZsb2F0MzJBcnJheShbZGF0YV0pIDogbmV3IEZsb2F0MzJBcnJheShkYXRhKSxcbiAgICAgICAgICBvZmZzZXQ6IGxheW91dC5vZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbmZpcm1JbnB1dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25maXJtSW5wdXQobW9kZWwsIGlucHV0TmFtZSkge1xuICAgICAgLy8gY29weSBvdXRwdXQgR1BVQnVmZmVyIG9mIGtlcm5lbFxuICAgICAgdmFyIGlucHV0QnVmZmVyID0gdGhpcy52ZXJ0ZXhCdWZmZXJzW2lucHV0TmFtZV07XG4gICAgICB2YXIgb3V0cHV0QnVmZmVyID0gbW9kZWwub3V0cHV0QnVmZmVyO1xuXG4gICAgICBpZiAoaW5wdXRCdWZmZXIgJiYgb3V0cHV0QnVmZmVyICYmIGlucHV0QnVmZmVyICE9PSBvdXRwdXRCdWZmZXIpIHtcbiAgICAgICAgdmFyIGVuY29kZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTtcbiAgICAgICAgdmFyIF9jb250ZXh0JG91dHB1dCA9IG1vZGVsLmNvbnRleHQub3V0cHV0LFxuICAgICAgICAgICAgbGVuZ3RoID0gX2NvbnRleHQkb3V0cHV0Lmxlbmd0aCxcbiAgICAgICAgICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IF9jb250ZXh0JG91dHB1dC50eXBlZEFycmF5Q29uc3RydWN0b3I7XG4gICAgICAgIHZhciBieXRlQ291bnQgPSBsZW5ndGggKiB0eXBlZEFycmF5Q29uc3RydWN0b3IuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIGVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKG91dHB1dEJ1ZmZlci5nZXQoKSwgMCwgaW5wdXRCdWZmZXIuZ2V0KCksIDAsIGJ5dGVDb3VudCk7XG4gICAgICAgIHZhciBxdWV1ZSA9IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmVuZ2luZS5kZXZpY2UuZ2V0UXVldWUoKSA6IHRoaXMuZW5naW5lLmRldmljZS5kZWZhdWx0UXVldWU7XG4gICAgICAgIHF1ZXVlLnN1Ym1pdChbZW5jb2Rlci5maW5pc2goKV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlU2hhZGVyVG9TcGlyVlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21waWxlU2hhZGVyVG9TcGlyVihzb3VyY2UsIHR5cGUsIHNoYWRlclZlcnNpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVSYXdTaGFkZXJUb1NwaXJWKHNoYWRlclZlcnNpb24gKyBzb3VyY2UsIHR5cGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlUmF3U2hhZGVyVG9TcGlyVlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21waWxlUmF3U2hhZGVyVG9TcGlyVihzb3VyY2UsIHR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5nbHNsYW5nLmNvbXBpbGVHTFNMKHNvdXJjZSwgdHlwZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBpbGVDb21wdXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9jb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoY29tcHV0ZUNvZGUpIHtcbiAgICAgICAgdmFyIGNvbXB1dGVTaGFkZXIsIHNoYWRlclZlcnNpb247XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNvbXB1dGVTaGFkZXIgPSBjb21wdXRlQ29kZTtcbiAgICAgICAgICAgICAgICBzaGFkZXJWZXJzaW9uID0gJyN2ZXJzaW9uIDQ1MFxcbic7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lbmdpbmUub3B0aW9ucy51c2VXR1NMKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVNoYWRlclRvU3BpclYoY29tcHV0ZUNvZGUsICdjb21wdXRlJywgc2hhZGVyVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIGNvbXB1dGVTaGFkZXIgPSBfY29udGV4dDMuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hYnJ1cHQoXCJyZXR1cm5cIiwge1xuICAgICAgICAgICAgICAgICAgY29tcHV0ZVN0YWdlOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZTogdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgY29kZTogY29tcHV0ZVNoYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgaXNXSExTTDogaXNTYWZhcmlcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWluJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBjb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKF94KSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcjtcbiAgICB9KClcbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVDb21wdXRlTW9kZWw7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVUNvbXB1dGVNb2RlbCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js":
/*!************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\nvar WebGPUElements = /*#__PURE__*/function () {\n function WebGPUElements(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUElements);\n\n this.engine = engine;\n this.options = options;\n this.indexCount = void 0;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type,\n count = _options.count;\n this.indexCount = count || 0;\n this.buffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](engine, {\n // @ts-ignore\n data: data instanceof Array ? new Uint16Array(data) : data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].Index | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].CopyDst\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUElements, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"subData\",\n value: function subData(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUElements;\n}();\n\n\n//# sourceMappingURL=WebGPUElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVFbGVtZW50cy5qcz9hZmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ0U7QUFDdEI7O0FBRTFDO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxREFBWTtBQUNsQztBQUNBO0FBQ0EsYUFBYSx3RUFBMkIsU0FBUyx3RUFBMkI7QUFDNUUsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVvQztBQUNyQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IFdlYkdQVUJ1ZmZlciBmcm9tICcuL1dlYkdQVUJ1ZmZlcic7XG5cbnZhciBXZWJHUFVFbGVtZW50cyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUVsZW1lbnRzKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVFbGVtZW50cyk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuaW5kZXhDb3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICBkYXRhID0gX29wdGlvbnMuZGF0YSxcbiAgICAgICAgdXNhZ2UgPSBfb3B0aW9ucy51c2FnZSxcbiAgICAgICAgdHlwZSA9IF9vcHRpb25zLnR5cGUsXG4gICAgICAgIGNvdW50ID0gX29wdGlvbnMuY291bnQ7XG4gICAgdGhpcy5pbmRleENvdW50ID0gY291bnQgfHwgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IG5ldyBXZWJHUFVCdWZmZXIoZW5naW5lLCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkYXRhOiBkYXRhIGluc3RhbmNlb2YgQXJyYXkgPyBuZXcgVWludDE2QXJyYXkoZGF0YSkgOiBkYXRhLFxuICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5JbmRleCB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5RHN0XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVRWxlbWVudHMsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ViRGF0YShvcHRpb25zKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5zdWJEYXRhKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUVsZW1lbnRzO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVFbGVtZW50cyBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVFbGVtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js":
/*!***************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js ***!
\***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGPUFramebuffer = /*#__PURE__*/function () {\n function WebGPUFramebuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUFramebuffer);\n\n this.engine = engine;\n this.options = options;\n this.colorTexture = void 0;\n this.depthTexture = void 0;\n this.width = 0;\n this.height = 0;\n var _options = options,\n width = _options.width,\n height = _options.height,\n color = _options.color,\n colors = _options.colors,\n depth = _options.depth,\n stencil = _options.stencil;\n\n if (color) {\n this.colorTexture = color;\n }\n\n if (depth) {\n this.depthTexture = depth;\n } // TODO: depth & stencil\n\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUFramebuffer, [{\n key: \"get\",\n value: function get() {\n var _this$colorTexture, _this$depthTexture;\n\n return {\n color: (_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 ? void 0 : _this$colorTexture.get(),\n depth: (_this$depthTexture = this.depthTexture) === null || _this$depthTexture === void 0 ? void 0 : _this$depthTexture.get()\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this$colorTexture2, _this$depthTexture2;\n\n (_this$colorTexture2 = this.colorTexture) === null || _this$colorTexture2 === void 0 ? void 0 : _this$colorTexture2.destroy();\n (_this$depthTexture2 = this.depthTexture) === null || _this$depthTexture2 === void 0 ? void 0 : _this$depthTexture2.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n if (width !== this.width || height !== this.height) {\n var _this$colorTexture3, _this$depthTexture3;\n\n (_this$colorTexture3 = this.colorTexture) === null || _this$colorTexture3 === void 0 ? void 0 : _this$colorTexture3.resize({\n width: width,\n height: height\n });\n (_this$depthTexture3 = this.depthTexture) === null || _this$depthTexture3 === void 0 ? void 0 : _this$depthTexture3.resize({\n width: width,\n height: height\n });\n }\n\n this.width = width;\n this.height = height;\n }\n }]);\n\n return WebGPUFramebuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVGcmFtZWJ1ZmZlci5qcz82YmIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFdUM7QUFDeEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVGcmFtZWJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIFdlYkdQVUZyYW1lYnVmZmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gV2ViR1BVRnJhbWVidWZmZXIoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVUZyYW1lYnVmZmVyKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5jb2xvclRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aFRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IDA7XG4gICAgdGhpcy5oZWlnaHQgPSAwO1xuICAgIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICAgIHdpZHRoID0gX29wdGlvbnMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF9vcHRpb25zLmhlaWdodCxcbiAgICAgICAgY29sb3IgPSBfb3B0aW9ucy5jb2xvcixcbiAgICAgICAgY29sb3JzID0gX29wdGlvbnMuY29sb3JzLFxuICAgICAgICBkZXB0aCA9IF9vcHRpb25zLmRlcHRoLFxuICAgICAgICBzdGVuY2lsID0gX29wdGlvbnMuc3RlbmNpbDtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgdGhpcy5jb2xvclRleHR1cmUgPSBjb2xvcjtcbiAgICB9XG5cbiAgICBpZiAoZGVwdGgpIHtcbiAgICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gZGVwdGg7XG4gICAgfSAvLyBUT0RPOiBkZXB0aCAmIHN0ZW5jaWxcblxuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUZyYW1lYnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgdmFyIF90aGlzJGNvbG9yVGV4dHVyZSwgX3RoaXMkZGVwdGhUZXh0dXJlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogKF90aGlzJGNvbG9yVGV4dHVyZSA9IHRoaXMuY29sb3JUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRjb2xvclRleHR1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGNvbG9yVGV4dHVyZS5nZXQoKSxcbiAgICAgICAgZGVwdGg6IChfdGhpcyRkZXB0aFRleHR1cmUgPSB0aGlzLmRlcHRoVGV4dHVyZSkgPT09IG51bGwgfHwgX3RoaXMkZGVwdGhUZXh0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkZXB0aFRleHR1cmUuZ2V0KClcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHZhciBfdGhpcyRjb2xvclRleHR1cmUyLCBfdGhpcyRkZXB0aFRleHR1cmUyO1xuXG4gICAgICAoX3RoaXMkY29sb3JUZXh0dXJlMiA9IHRoaXMuY29sb3JUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRjb2xvclRleHR1cmUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjb2xvclRleHR1cmUyLmRlc3Ryb3koKTtcbiAgICAgIChfdGhpcyRkZXB0aFRleHR1cmUyID0gdGhpcy5kZXB0aFRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGRlcHRoVGV4dHVyZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRlcHRoVGV4dHVyZTIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG5cbiAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHZhciBfdGhpcyRjb2xvclRleHR1cmUzLCBfdGhpcyRkZXB0aFRleHR1cmUzO1xuXG4gICAgICAgIChfdGhpcyRjb2xvclRleHR1cmUzID0gdGhpcy5jb2xvclRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGNvbG9yVGV4dHVyZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGNvbG9yVGV4dHVyZTMucmVzaXplKHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICAgIChfdGhpcyRkZXB0aFRleHR1cmUzID0gdGhpcy5kZXB0aFRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGRlcHRoVGV4dHVyZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRlcHRoVGV4dHVyZTMucmVzaXplKHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVGcmFtZWJ1ZmZlcjtcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVRnJhbWVidWZmZXIgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js":
/*!*********************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js ***!
\*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n\n\n// @ts-ignore\nfunction concatenate(resultConstructor) {\n var totalLength = 0;\n\n for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n for (var _i = 0, _arrays = arrays; _i < _arrays.length; _i++) {\n var arr = _arrays[_i];\n totalLength += arr.length;\n }\n\n var result = new resultConstructor(totalLength);\n var offset = 0;\n\n for (var _i2 = 0, _arrays2 = arrays; _i2 < _arrays2.length; _i2++) {\n var _arr = _arrays2[_i2];\n result.set(_arr, offset);\n offset += _arr.length;\n }\n\n return result;\n}\n\nvar WebGPUModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n\n /**\n * vertex\n */\n\n /**\n * indices's buffer\n */\n function WebGPUModel(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default()(this, WebGPUModel);\n\n this.engine = engine;\n this.options = options;\n this.pipelineLayout = void 0;\n this.renderPipeline = void 0;\n this.uniformsBindGroupLayout = void 0;\n this.uniformBindGroup = void 0;\n this.uniformBuffer = void 0;\n this.uniforms = {};\n this.uniformGPUBufferLayout = [];\n this.attributeCache = {};\n this.indexBuffer = void 0;\n this.indexCount = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default()(WebGPUModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this = this;\n\n var _this$options, vs, fs, attributes, uniforms, primitive, count, elements, depth, blend, stencil, cull, instances, _yield$this$compilePi, vertexStage, fragmentStage, vertexState, descriptor;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$options = this.options, vs = _this$options.vs, fs = _this$options.fs, attributes = _this$options.attributes, uniforms = _this$options.uniforms, primitive = _this$options.primitive, count = _this$options.count, elements = _this$options.elements, depth = _this$options.depth, blend = _this$options.blend, stencil = _this$options.stencil, cull = _this$options.cull, instances = _this$options.instances; // build shaders first\n\n _context.next = 3;\n return this.compilePipelineStageDescriptor(vs, fs, null);\n\n case 3:\n _yield$this$compilePi = _context.sent;\n vertexStage = _yield$this$compilePi.vertexStage;\n fragmentStage = _yield$this$compilePi.fragmentStage;\n\n if (uniforms) {\n // create uniform bind groups & layout\n this.buildUniformBindGroup(uniforms);\n }\n\n if (elements) {\n this.indexBuffer = elements.get();\n this.indexCount = elements.indexCount;\n } // TODO: instanced array\n\n\n vertexState = {\n vertexBuffers: Object.keys(attributes).map(function (attributeName, i) {\n var attribute = attributes[attributeName];\n\n var _attribute$get = attribute.get(),\n arrayStride = _attribute$get.arrayStride,\n stepMode = _attribute$get.stepMode,\n ats = _attribute$get.attributes;\n\n _this.attributeCache[attributeName] = attribute;\n return {\n arrayStride: arrayStride,\n stepMode: stepMode,\n attributes: ats\n };\n })\n };\n descriptor = {\n sampleCount: this.engine.mainPassSampleCount,\n primitiveTopology: _constants__WEBPACK_IMPORTED_MODULE_10__[\"primitiveMap\"][primitive || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].TRIANGLES],\n rasterizationState: _objectSpread(_objectSpread({}, this.getDefaultRasterizationStateDescriptor()), {}, {\n // TODO: support frontface\n cullMode: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getCullMode\"])({\n cull: cull\n })\n }),\n depthStencilState: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getDepthStencilStateDescriptor\"])({\n depth: depth,\n stencil: stencil\n }),\n colorStates: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getColorStateDescriptors\"])({\n blend: blend\n }, this.engine.options.swapChainFormat),\n layout: this.pipelineLayout,\n vertexStage: vertexStage,\n fragmentStage: fragmentStage,\n vertexState: vertexState\n }; // create pipeline\n\n this.renderPipeline = this.engine.device.createRenderPipeline(descriptor);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var _this2 = this;\n\n var renderPass = this.engine.getCurrentRenderPass();\n\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(options.uniforms || {}));\n\n var bindGroupBindings = []; // TODO: uniform 发生修改\n\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n var _this2$uniformGPUBuff;\n\n var offset = (_this2$uniformGPUBuff = _this2.uniformGPUBufferLayout.find(function (_ref) {\n var name = _ref.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff === void 0 ? void 0 : _this2$uniformGPUBuff.offset;\n\n if (offset !== null) {\n _this2.uniformBuffer.subData({\n // @ts-ignore\n data: uniforms[uniformName],\n // @ts-ignore\n offset: offset\n });\n }\n } else {\n var _this2$uniformGPUBuff2;\n\n var _offset = (_this2$uniformGPUBuff2 = _this2.uniformGPUBufferLayout.find(function (_ref2) {\n var name = _ref2.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff2 === void 0 ? void 0 : _this2$uniformGPUBuff2.offset;\n\n if (_offset !== null) {\n var textureOrFramebuffer = uniforms[uniformName].get();\n\n var _ref3 = // @ts-ignore\n textureOrFramebuffer.color || textureOrFramebuffer,\n texture = _ref3.texture,\n sampler = _ref3.sampler;\n\n if (sampler) {\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: sampler\n }); // @ts-ignore\n\n _offset++;\n }\n\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: texture.createView()\n });\n }\n }\n });\n\n if (this.uniformBuffer) {\n bindGroupBindings[0] = {\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get() // 返回 GPUBuffer 原生对象\n\n }\n };\n }\n\n this.uniformBindGroup = this.engine.device.createBindGroup({\n layout: this.uniformsBindGroupLayout,\n entries: bindGroupBindings\n });\n\n if (this.renderPipeline) {\n renderPass.setPipeline(this.renderPipeline);\n }\n\n renderPass.setBindGroup(0, this.uniformBindGroup);\n\n if (this.indexBuffer) {\n renderPass.setIndexBuffer(this.indexBuffer.get(), _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"IndexFormat\"].Uint32, 0);\n }\n\n Object.keys(this.attributeCache).forEach(function (attributeName, i) {\n renderPass.setVertexBuffer(0 + i, _this2.attributeCache[attributeName].get().buffer, 0);\n }); // renderPass.draw(verticesCount, instancesCount, verticesStart, 0);\n\n if (this.indexBuffer) {\n renderPass.drawIndexed(this.indexCount, this.options.instances || 1, 0, 0, 0);\n } else {\n renderPass.draw(this.options.count || 0, this.options.instances || 0, 0, 0);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"compilePipelineStageDescriptor\",\n value: function () {\n var _compilePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(vertexCode, fragmentCode, defines) {\n var shaderVersion, vertexShader, fragmentShader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n shaderVersion = '#version 450\\n';\n vertexShader = vertexCode;\n fragmentShader = fragmentCode;\n\n if (this.engine.options.useWGSL) {\n _context2.next = 10;\n break;\n }\n\n _context2.next = 6;\n return this.compileShaderToSpirV(vertexCode, 'vertex', shaderVersion);\n\n case 6:\n vertexShader = _context2.sent;\n _context2.next = 9;\n return this.compileShaderToSpirV(fragmentCode, 'fragment', shaderVersion);\n\n case 9:\n fragmentShader = _context2.sent;\n\n case 10:\n return _context2.abrupt(\"return\", this.createPipelineStageDescriptor(vertexShader, fragmentShader));\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function compilePipelineStageDescriptor(_x, _x2, _x3) {\n return _compilePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compilePipelineStageDescriptor;\n }()\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"createPipelineStageDescriptor\",\n value: function createPipelineStageDescriptor(vertexShader, fragmentShader) {\n return {\n vertexStage: {\n module: this.engine.device.createShaderModule({\n code: vertexShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n },\n fragmentStage: {\n module: this.engine.device.createShaderModule({\n code: fragmentShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n };\n }\n /**\n * @see https://gpuweb.github.io/gpuweb/#rasterization-state\n */\n\n }, {\n key: \"getDefaultRasterizationStateDescriptor\",\n value: function getDefaultRasterizationStateDescriptor() {\n return {\n frontFace: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"FrontFace\"].CCW,\n cullMode: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"CullMode\"].None,\n depthBias: 0,\n depthBiasSlopeScale: 0,\n depthBiasClamp: 0\n };\n }\n }, {\n key: \"buildUniformBindGroup\",\n value: function buildUniformBindGroup(uniforms) {\n var _this3 = this;\n\n var offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n\n var mergedUniformData = concatenate.apply(void 0, [Float32Array].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object.keys(uniforms).map(function (uniformName) {\n if (uniforms[uniformName]) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: offset\n }); // @ts-ignore\n\n\n offset += (uniforms[uniformName].length || 1) * 4;\n return uniforms[uniformName];\n } else {\n // texture & framebuffer\n return [];\n }\n }))));\n var entries = [];\n var hasUniform = false;\n\n if (mergedUniformData.length) {\n hasUniform = true; // TODO: 所有 uniform 绑定到 slot 0,通过解析 Shader 代码判定可见性\n\n entries.push({\n // TODO: 暂时都绑定到 slot 0\n binding: 0,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Vertex,\n // TODO: 暂时 VS 和 FS 都可见\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].UniformBuffer\n });\n } // 声明 texture & sampler\n\n\n Object.keys(uniforms).filter(function (uniformName) {\n return uniforms[uniformName] === null;\n }).forEach(function (uniformName, i) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: i * 2 + (hasUniform ? 1 : 0)\n });\n\n entries.push({\n // Sampler\n binding: i * 2 + (hasUniform ? 1 : 0),\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].Sampler\n }, {\n // Texture view\n binding: i * 2 + (hasUniform ? 1 : 0) + 1,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].SampledTexture\n });\n });\n this.uniformsBindGroupLayout = this.engine.device.createBindGroupLayout({\n // 最新 API 0.0.22 版本使用 entries。Chrome Canary 84.0.4110.0 已实现。\n // 使用 bindings 会报 Warning: GPUBindGroupLayoutDescriptor.bindings is deprecated: renamed to entries\n // @see https://github.com/antvis/GWebGPUEngine/issues/5\n entries: entries\n });\n this.pipelineLayout = this.engine.device.createPipelineLayout({\n bindGroupLayouts: [this.uniformsBindGroupLayout]\n });\n\n if (hasUniform) {\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].CopyDst\n });\n }\n }\n }]);\n\n return WebGPUModel;\n}();\n\n\n//# sourceMappingURL=WebGPUModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVNb2RlbC5qcz81YTViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ3RCO0FBQ1M7QUFDTztBQUNJO0FBQ0o7QUFDTjs7QUFFOUQsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVqZTtBQUNhO0FBQ2I7QUFDK0Q7QUFDeEU7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQSwwRkFBMEYsYUFBYTtBQUN2RztBQUNBOztBQUVBLG9DQUFvQyxxQkFBcUI7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsc0NBQXNDLHVCQUF1QjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRTs7QUFFQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSxxYUFBcWE7O0FBRXJhO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOzs7QUFHakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsd0RBQVksY0FBYyxzREFBRTtBQUNqRSxvRUFBb0Usb0RBQW9EO0FBQ3hIO0FBQ0EsOEJBQThCLCtEQUFXO0FBQ3pDO0FBQ0EscUJBQXFCO0FBQ3JCLG1CQUFtQjtBQUNuQixxQ0FBcUMsa0ZBQThCO0FBQ25FO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsK0JBQStCLDRFQUF3QjtBQUN2RDtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLG9EQUFvRCxrQkFBa0Isc0VBQWU7QUFDckY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1EQUFtRCxrQkFBa0Isc0VBQWUsdUJBQXVCOztBQUUzRyxpQ0FBaUM7O0FBRWpDO0FBQ0EsbUJBQW1CLG9FQUFPOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEVBQUU7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwwREFBMEQsd0VBQTJCO0FBQ3JGOztBQUVBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDRDQUE0Qyw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDL0Y7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVE7QUFDN0IsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDREQUFRO0FBQzdCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNFQUF5QjtBQUM1QyxrQkFBa0IscUVBQXdCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjs7QUFFckIsOEVBQThFLCtFQUFrQjtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTs7O0FBR2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHdFQUEyQixZQUFZLHdFQUEyQjtBQUN4RjtBQUNBLGdCQUFnQix3RUFBMkI7QUFDM0MsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQTJCO0FBQ2pELGdCQUFnQix3RUFBMkI7QUFDM0MsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQTJCO0FBQ2pELGdCQUFnQix3RUFBMkI7QUFDM0MsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsaUNBQWlDLHNEQUFZO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdFQUEyQixXQUFXLHdFQUEyQjtBQUNsRixTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVpQztBQUNsQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5pbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBnbCwgaXNTYWZhcmkgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RVbmlmb3JtcyB9IGZyb20gJy4uL3V0aWxzL3VuaWZvcm0nO1xuaW1wb3J0IHsgZ2V0Q29sb3JTdGF0ZURlc2NyaXB0b3JzLCBnZXRDdWxsTW9kZSwgZ2V0RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLCBwcmltaXRpdmVNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgV2ViR1BVQnVmZmVyIGZyb20gJy4vV2ViR1BVQnVmZmVyJztcblxuLy8gQHRzLWlnbm9yZVxuZnVuY3Rpb24gY29uY2F0ZW5hdGUocmVzdWx0Q29uc3RydWN0b3IpIHtcbiAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcblxuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJyYXlzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcnJheXNbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgZm9yICh2YXIgX2kgPSAwLCBfYXJyYXlzID0gYXJyYXlzOyBfaSA8IF9hcnJheXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGFyciA9IF9hcnJheXNbX2ldO1xuICAgIHRvdGFsTGVuZ3RoICs9IGFyci5sZW5ndGg7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gbmV3IHJlc3VsdENvbnN0cnVjdG9yKHRvdGFsTGVuZ3RoKTtcbiAgdmFyIG9mZnNldCA9IDA7XG5cbiAgZm9yICh2YXIgX2kyID0gMCwgX2FycmF5czIgPSBhcnJheXM7IF9pMiA8IF9hcnJheXMyLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgX2FyciA9IF9hcnJheXMyW19pMl07XG4gICAgcmVzdWx0LnNldChfYXJyLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSBfYXJyLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBXZWJHUFVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiDnlKjkuo7lkI7nu63muLLmn5Pml7bliqjmgIHmm7TmlrBcbiAgICovXG5cbiAgLyoqXG4gICAqIHZlcnRleFxuICAgKi9cblxuICAvKipcbiAgICogaW5kaWNlcydzIGJ1ZmZlclxuICAgKi9cbiAgZnVuY3Rpb24gV2ViR1BVTW9kZWwoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVU1vZGVsKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5waXBlbGluZUxheW91dCA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbmRlclBpcGVsaW5lID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybXNCaW5kR3JvdXBMYXlvdXQgPSB2b2lkIDA7XG4gICAgdGhpcy51bmlmb3JtQmluZEdyb3VwID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1zID0ge307XG4gICAgdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0ID0gW107XG4gICAgdGhpcy5hdHRyaWJ1dGVDYWNoZSA9IHt9O1xuICAgIHRoaXMuaW5kZXhCdWZmZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5pbmRleENvdW50ID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVU1vZGVsLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIF90aGlzJG9wdGlvbnMsIHZzLCBmcywgYXR0cmlidXRlcywgdW5pZm9ybXMsIHByaW1pdGl2ZSwgY291bnQsIGVsZW1lbnRzLCBkZXB0aCwgYmxlbmQsIHN0ZW5jaWwsIGN1bGwsIGluc3RhbmNlcywgX3lpZWxkJHRoaXMkY29tcGlsZVBpLCB2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgdmVydGV4U3RhdGUsIGRlc2NyaXB0b3I7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLCB2cyA9IF90aGlzJG9wdGlvbnMudnMsIGZzID0gX3RoaXMkb3B0aW9ucy5mcywgYXR0cmlidXRlcyA9IF90aGlzJG9wdGlvbnMuYXR0cmlidXRlcywgdW5pZm9ybXMgPSBfdGhpcyRvcHRpb25zLnVuaWZvcm1zLCBwcmltaXRpdmUgPSBfdGhpcyRvcHRpb25zLnByaW1pdGl2ZSwgY291bnQgPSBfdGhpcyRvcHRpb25zLmNvdW50LCBlbGVtZW50cyA9IF90aGlzJG9wdGlvbnMuZWxlbWVudHMsIGRlcHRoID0gX3RoaXMkb3B0aW9ucy5kZXB0aCwgYmxlbmQgPSBfdGhpcyRvcHRpb25zLmJsZW5kLCBzdGVuY2lsID0gX3RoaXMkb3B0aW9ucy5zdGVuY2lsLCBjdWxsID0gX3RoaXMkb3B0aW9ucy5jdWxsLCBpbnN0YW5jZXMgPSBfdGhpcyRvcHRpb25zLmluc3RhbmNlczsgLy8gYnVpbGQgc2hhZGVycyBmaXJzdFxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKHZzLCBmcywgbnVsbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIF95aWVsZCR0aGlzJGNvbXBpbGVQaSA9IF9jb250ZXh0LnNlbnQ7XG4gICAgICAgICAgICAgICAgdmVydGV4U3RhZ2UgPSBfeWllbGQkdGhpcyRjb21waWxlUGkudmVydGV4U3RhZ2U7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IF95aWVsZCR0aGlzJGNvbXBpbGVQaS5mcmFnbWVudFN0YWdlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHVuaWZvcm1zKSB7XG4gICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdW5pZm9ybSBiaW5kIGdyb3VwcyAmIGxheW91dFxuICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZFVuaWZvcm1CaW5kR3JvdXAodW5pZm9ybXMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleEJ1ZmZlciA9IGVsZW1lbnRzLmdldCgpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleENvdW50ID0gZWxlbWVudHMuaW5kZXhDb3VudDtcbiAgICAgICAgICAgICAgICB9IC8vIFRPRE86IGluc3RhbmNlZCBhcnJheVxuXG5cbiAgICAgICAgICAgICAgICB2ZXJ0ZXhTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnM6IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLm1hcChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgX2F0dHJpYnV0ZSRnZXQgPSBhdHRyaWJ1dGUuZ2V0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheVN0cmlkZSA9IF9hdHRyaWJ1dGUkZ2V0LmFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE1vZGUgPSBfYXR0cmlidXRlJGdldC5zdGVwTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0cyA9IF9hdHRyaWJ1dGUkZ2V0LmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuYXR0cmlidXRlQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSBhdHRyaWJ1dGU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IGFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgIHN0ZXBNb2RlOiBzdGVwTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBhdHNcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0ge1xuICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQ6IHRoaXMuZW5naW5lLm1haW5QYXNzU2FtcGxlQ291bnQsXG4gICAgICAgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogcHJpbWl0aXZlTWFwW3ByaW1pdGl2ZSB8fCBnbC5UUklBTkdMRVNdLFxuICAgICAgICAgICAgICAgICAgcmFzdGVyaXphdGlvblN0YXRlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuZ2V0RGVmYXVsdFJhc3Rlcml6YXRpb25TdGF0ZURlc2NyaXB0b3IoKSksIHt9LCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgZnJvbnRmYWNlXG4gICAgICAgICAgICAgICAgICAgIGN1bGxNb2RlOiBnZXRDdWxsTW9kZSh7XG4gICAgICAgICAgICAgICAgICAgICAgY3VsbDogY3VsbFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZTogZ2V0RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yKHtcbiAgICAgICAgICAgICAgICAgICAgZGVwdGg6IGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICBzdGVuY2lsOiBzdGVuY2lsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGNvbG9yU3RhdGVzOiBnZXRDb2xvclN0YXRlRGVzY3JpcHRvcnMoe1xuICAgICAgICAgICAgICAgICAgICBibGVuZDogYmxlbmRcbiAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZW5naW5lLm9wdGlvbnMuc3dhcENoYWluRm9ybWF0KSxcbiAgICAgICAgICAgICAgICAgIGxheW91dDogdGhpcy5waXBlbGluZUxheW91dCxcbiAgICAgICAgICAgICAgICAgIHZlcnRleFN0YWdlOiB2ZXJ0ZXhTdGFnZSxcbiAgICAgICAgICAgICAgICAgIGZyYWdtZW50U3RhZ2U6IGZyYWdtZW50U3RhZ2UsXG4gICAgICAgICAgICAgICAgICB2ZXJ0ZXhTdGF0ZTogdmVydGV4U3RhdGVcbiAgICAgICAgICAgICAgICB9OyAvLyBjcmVhdGUgcGlwZWxpbmVcblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyUGlwZWxpbmUgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvcik7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImFkZFVuaWZvcm1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZFVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gICAgICB0aGlzLnVuaWZvcm1zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnVuaWZvcm1zKSwgZXh0cmFjdFVuaWZvcm1zKHVuaWZvcm1zKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRyYXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZHJhdyhvcHRpb25zKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHJlbmRlclBhc3MgPSB0aGlzLmVuZ2luZS5nZXRDdXJyZW50UmVuZGVyUGFzcygpO1xuXG4gICAgICB2YXIgdW5pZm9ybXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMudW5pZm9ybXMpLCBleHRyYWN0VW5pZm9ybXMob3B0aW9ucy51bmlmb3JtcyB8fCB7fSkpO1xuXG4gICAgICB2YXIgYmluZEdyb3VwQmluZGluZ3MgPSBbXTsgLy8gVE9ETzogdW5pZm9ybSDlj5HnlJ/kv67mlLlcblxuICAgICAgT2JqZWN0LmtleXModW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIHZhciB0eXBlID0gX3R5cGVvZih1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwgQXJyYXkuaXNBcnJheSh1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pIHx8IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdLkJZVEVTX1BFUl9FTEVNRU5UKSB7XG4gICAgICAgICAgdmFyIF90aGlzMiR1bmlmb3JtR1BVQnVmZjtcblxuICAgICAgICAgIHZhciBvZmZzZXQgPSAoX3RoaXMyJHVuaWZvcm1HUFVCdWZmID0gX3RoaXMyLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQuZmluZChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gdW5pZm9ybU5hbWU7XG4gICAgICAgICAgfSkpID09PSBudWxsIHx8IF90aGlzMiR1bmlmb3JtR1BVQnVmZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHVuaWZvcm1HUFVCdWZmLm9mZnNldDtcblxuICAgICAgICAgIGlmIChvZmZzZXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF90aGlzMi51bmlmb3JtQnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGE6IHVuaWZvcm1zW3VuaWZvcm1OYW1lXSxcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYyO1xuXG4gICAgICAgICAgdmFyIF9vZmZzZXQgPSAoX3RoaXMyJHVuaWZvcm1HUFVCdWZmMiA9IF90aGlzMi51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gdW5pZm9ybU5hbWU7XG4gICAgICAgICAgfSkpID09PSBudWxsIHx8IF90aGlzMiR1bmlmb3JtR1BVQnVmZjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiR1bmlmb3JtR1BVQnVmZjIub2Zmc2V0O1xuXG4gICAgICAgICAgaWYgKF9vZmZzZXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0dXJlT3JGcmFtZWJ1ZmZlciA9IHVuaWZvcm1zW3VuaWZvcm1OYW1lXS5nZXQoKTtcblxuICAgICAgICAgICAgdmFyIF9yZWYzID0gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGV4dHVyZU9yRnJhbWVidWZmZXIuY29sb3IgfHwgdGV4dHVyZU9yRnJhbWVidWZmZXIsXG4gICAgICAgICAgICAgICAgdGV4dHVyZSA9IF9yZWYzLnRleHR1cmUsXG4gICAgICAgICAgICAgICAgc2FtcGxlciA9IF9yZWYzLnNhbXBsZXI7XG5cbiAgICAgICAgICAgIGlmIChzYW1wbGVyKSB7XG4gICAgICAgICAgICAgIGJpbmRHcm91cEJpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBiaW5kaW5nOiBfb2Zmc2V0LFxuICAgICAgICAgICAgICAgIHJlc291cmNlOiBzYW1wbGVyXG4gICAgICAgICAgICAgIH0pOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgX29mZnNldCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiaW5kR3JvdXBCaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBiaW5kaW5nOiBfb2Zmc2V0LFxuICAgICAgICAgICAgICByZXNvdXJjZTogdGV4dHVyZS5jcmVhdGVWaWV3KClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLnVuaWZvcm1CdWZmZXIpIHtcbiAgICAgICAgYmluZEdyb3VwQmluZGluZ3NbMF0gPSB7XG4gICAgICAgICAgYmluZGluZzogMCxcbiAgICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgICAgYnVmZmVyOiB0aGlzLnVuaWZvcm1CdWZmZXIuZ2V0KCkgLy8g6L+U5ZueIEdQVUJ1ZmZlciDljp/nlJ/lr7nosaFcblxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51bmlmb3JtQmluZEdyb3VwID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgIGxheW91dDogdGhpcy51bmlmb3Jtc0JpbmRHcm91cExheW91dCxcbiAgICAgICAgZW50cmllczogYmluZEdyb3VwQmluZGluZ3NcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5yZW5kZXJQaXBlbGluZSkge1xuICAgICAgICByZW5kZXJQYXNzLnNldFBpcGVsaW5lKHRoaXMucmVuZGVyUGlwZWxpbmUpO1xuICAgICAgfVxuXG4gICAgICByZW5kZXJQYXNzLnNldEJpbmRHcm91cCgwLCB0aGlzLnVuaWZvcm1CaW5kR3JvdXApO1xuXG4gICAgICBpZiAodGhpcy5pbmRleEJ1ZmZlcikge1xuICAgICAgICByZW5kZXJQYXNzLnNldEluZGV4QnVmZmVyKHRoaXMuaW5kZXhCdWZmZXIuZ2V0KCksIFdlYkdQVUNvbnN0YW50cy5JbmRleEZvcm1hdC5VaW50MzIsIDApO1xuICAgICAgfVxuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZUNhY2hlKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lLCBpKSB7XG4gICAgICAgIHJlbmRlclBhc3Muc2V0VmVydGV4QnVmZmVyKDAgKyBpLCBfdGhpczIuYXR0cmlidXRlQ2FjaGVbYXR0cmlidXRlTmFtZV0uZ2V0KCkuYnVmZmVyLCAwKTtcbiAgICAgIH0pOyAvLyByZW5kZXJQYXNzLmRyYXcodmVydGljZXNDb3VudCwgaW5zdGFuY2VzQ291bnQsIHZlcnRpY2VzU3RhcnQsIDApO1xuXG4gICAgICBpZiAodGhpcy5pbmRleEJ1ZmZlcikge1xuICAgICAgICByZW5kZXJQYXNzLmRyYXdJbmRleGVkKHRoaXMuaW5kZXhDb3VudCwgdGhpcy5vcHRpb25zLmluc3RhbmNlcyB8fCAxLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbmRlclBhc3MuZHJhdyh0aGlzLm9wdGlvbnMuY291bnQgfHwgMCwgdGhpcy5vcHRpb25zLmluc3RhbmNlcyB8fCAwLCAwLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9jb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMih2ZXJ0ZXhDb2RlLCBmcmFnbWVudENvZGUsIGRlZmluZXMpIHtcbiAgICAgICAgdmFyIHNoYWRlclZlcnNpb24sIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXI7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHNoYWRlclZlcnNpb24gPSAnI3ZlcnNpb24gNDUwXFxuJztcbiAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSB2ZXJ0ZXhDb2RlO1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gZnJhZ21lbnRDb2RlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZW5naW5lLm9wdGlvbnMudXNlV0dTTCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlU2hhZGVyVG9TcGlyVih2ZXJ0ZXhDb2RlLCAndmVydGV4Jywgc2hhZGVyVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlciA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gOTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlU2hhZGVyVG9TcGlyVihmcmFnbWVudENvZGUsICdmcmFnbWVudCcsIHNoYWRlclZlcnNpb24pO1xuXG4gICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IF9jb250ZXh0Mi5zZW50O1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgdGhpcy5jcmVhdGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBjb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IoX3gsIF94MiwgX3gzKSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVNoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVNoYWRlclRvU3BpclYoc291cmNlLCB0eXBlLCBzaGFkZXJWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21waWxlUmF3U2hhZGVyVG9TcGlyVihzaGFkZXJWZXJzaW9uICsgc291cmNlLCB0eXBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVJhd1NoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVJhd1NoYWRlclRvU3BpclYoc291cmNlLCB0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmdpbmUuZ2xzbGFuZy5jb21waWxlR0xTTChzb3VyY2UsIHR5cGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2ZXJ0ZXhTdGFnZToge1xuICAgICAgICAgIG1vZHVsZTogdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICBjb2RlOiB2ZXJ0ZXhTaGFkZXIsXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBpc1dITFNMOiBpc1NhZmFyaVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWluJ1xuICAgICAgICB9LFxuICAgICAgICBmcmFnbWVudFN0YWdlOiB7XG4gICAgICAgICAgbW9kdWxlOiB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtcbiAgICAgICAgICAgIGNvZGU6IGZyYWdtZW50U2hhZGVyLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaXNXSExTTDogaXNTYWZhcmlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNyYXN0ZXJpemF0aW9uLXN0YXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXREZWZhdWx0UmFzdGVyaXphdGlvblN0YXRlRGVzY3JpcHRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZWZhdWx0UmFzdGVyaXphdGlvblN0YXRlRGVzY3JpcHRvcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb250RmFjZTogV2ViR1BVQ29uc3RhbnRzLkZyb250RmFjZS5DQ1csXG4gICAgICAgIGN1bGxNb2RlOiBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuTm9uZSxcbiAgICAgICAgZGVwdGhCaWFzOiAwLFxuICAgICAgICBkZXB0aEJpYXNTbG9wZVNjYWxlOiAwLFxuICAgICAgICBkZXB0aEJpYXNDbGFtcDogMFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYnVpbGRVbmlmb3JtQmluZEdyb3VwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJ1aWxkVW5pZm9ybUJpbmRHcm91cCh1bmlmb3Jtcykge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBvZmZzZXQgPSAwOyAvLyBGSVhNRTog5omA5pyJIHVuaWZvcm0g5ZCI5bm25oiQ5LiA5LiqIGJ1ZmZlcu+8jOWbuuWumuS9v+eUqCBGbG9hdDMyQXJyYXkg5a2Y5YKo77yM56Gu5a6e5Lya6YCg5oiQ5LiA5Lqb5YaF5a2Y55qE5rWq6LS5XG5cbiAgICAgIHZhciBtZXJnZWRVbmlmb3JtRGF0YSA9IGNvbmNhdGVuYXRlLmFwcGx5KHZvaWQgMCwgW0Zsb2F0MzJBcnJheV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShPYmplY3Qua2V5cyh1bmlmb3JtcykubWFwKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICBpZiAodW5pZm9ybXNbdW5pZm9ybU5hbWVdKSB7XG4gICAgICAgICAgX3RoaXMzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiB1bmlmb3JtTmFtZSxcbiAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgfSk7IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgb2Zmc2V0ICs9ICh1bmlmb3Jtc1t1bmlmb3JtTmFtZV0ubGVuZ3RoIHx8IDEpICogNDtcbiAgICAgICAgICByZXR1cm4gdW5pZm9ybXNbdW5pZm9ybU5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRleHR1cmUgJiBmcmFtZWJ1ZmZlclxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSkpKSk7XG4gICAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgICAgdmFyIGhhc1VuaWZvcm0gPSBmYWxzZTtcblxuICAgICAgaWYgKG1lcmdlZFVuaWZvcm1EYXRhLmxlbmd0aCkge1xuICAgICAgICBoYXNVbmlmb3JtID0gdHJ1ZTsgLy8gVE9ETzog5omA5pyJIHVuaWZvcm0g57uR5a6a5YiwIHNsb3QgMO+8jOmAmui/h+ino+aekCBTaGFkZXIg5Luj56CB5Yik5a6a5Y+v6KeB5oCnXG5cbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICAvLyBUT0RPOiDmmoLml7bpg73nu5HlrprliLAgc2xvdCAwXG4gICAgICAgICAgYmluZGluZzogMCxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuRnJhZ21lbnQgfCBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuVmVydGV4LFxuICAgICAgICAgIC8vIFRPRE86IOaaguaXtiBWUyDlkowgRlMg6YO95Y+v6KeBXG4gICAgICAgICAgdHlwZTogV2ViR1BVQ29uc3RhbnRzLkJpbmRpbmdUeXBlLlVuaWZvcm1CdWZmZXJcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIOWjsOaYjiB0ZXh0dXJlICYgc2FtcGxlclxuXG5cbiAgICAgIE9iamVjdC5rZXlzKHVuaWZvcm1zKS5maWx0ZXIoZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIHJldHVybiB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0gPT09IG51bGw7XG4gICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSwgaSkge1xuICAgICAgICBfdGhpczMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5wdXNoKHtcbiAgICAgICAgICBuYW1lOiB1bmlmb3JtTmFtZSxcbiAgICAgICAgICBvZmZzZXQ6IGkgKiAyICsgKGhhc1VuaWZvcm0gPyAxIDogMClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICAvLyBTYW1wbGVyXG4gICAgICAgICAgYmluZGluZzogaSAqIDIgKyAoaGFzVW5pZm9ybSA/IDEgOiAwKSxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuRnJhZ21lbnQsXG4gICAgICAgICAgdHlwZTogV2ViR1BVQ29uc3RhbnRzLkJpbmRpbmdUeXBlLlNhbXBsZXJcbiAgICAgICAgfSwge1xuICAgICAgICAgIC8vIFRleHR1cmUgdmlld1xuICAgICAgICAgIGJpbmRpbmc6IGkgKiAyICsgKGhhc1VuaWZvcm0gPyAxIDogMCkgKyAxLFxuICAgICAgICAgIHZpc2liaWxpdHk6IFdlYkdQVUNvbnN0YW50cy5TaGFkZXJTdGFnZS5GcmFnbWVudCxcbiAgICAgICAgICB0eXBlOiBXZWJHUFVDb25zdGFudHMuQmluZGluZ1R5cGUuU2FtcGxlZFRleHR1cmVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudW5pZm9ybXNCaW5kR3JvdXBMYXlvdXQgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHtcbiAgICAgICAgLy8g5pyA5pawIEFQSSAwLjAuMjIg54mI5pys5L2/55SoIGVudHJpZXPjgIJDaHJvbWUgQ2FuYXJ5IDg0LjAuNDExMC4wIOW3suWunueOsOOAglxuICAgICAgICAvLyDkvb/nlKggYmluZGluZ3Mg5Lya5oqlIFdhcm5pbmc6IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmluZGluZ3MgaXMgZGVwcmVjYXRlZDogcmVuYW1lZCB0byBlbnRyaWVzXG4gICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy81XG4gICAgICAgIGVudHJpZXM6IGVudHJpZXNcbiAgICAgIH0pO1xuICAgICAgdGhpcy5waXBlbGluZUxheW91dCA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7XG4gICAgICAgIGJpbmRHcm91cExheW91dHM6IFt0aGlzLnVuaWZvcm1zQmluZEdyb3VwTGF5b3V0XVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChoYXNVbmlmb3JtKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IG5ldyBXZWJHUFVCdWZmZXIodGhpcy5lbmdpbmUsIHtcbiAgICAgICAgICAvLyBUT0RPOiDlpITnkIYgU3RydWN0IOWSjCBib29sZWFuXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGRhdGE6IG1lcmdlZFVuaWZvcm1EYXRhIGluc3RhbmNlb2YgQXJyYXkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbmV3IEZsb2F0MzJBcnJheShtZXJnZWRVbmlmb3JtRGF0YSkgOiBtZXJnZWRVbmlmb3JtRGF0YSxcbiAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlVuaWZvcm0gfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVTW9kZWw7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVU1vZGVsIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVU1vZGVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js":
/*!*************************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js\");\n\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar WebGPUTexture2D = /*#__PURE__*/function () {\n function WebGPUTexture2D(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUTexture2D);\n\n this.engine = engine;\n this.options = options;\n this.texture = void 0;\n this.sampler = void 0;\n this.width = void 0;\n this.height = void 0;\n this.createTexture();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUTexture2D, [{\n key: \"get\",\n value: function get() {\n return {\n texture: this.texture,\n sampler: this.sampler\n };\n }\n }, {\n key: \"update\",\n value: function update() {// TODO\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n // TODO: it seems that Texture doesn't support `resize`\n if (width !== this.width || height !== this.height) {\n this.destroy();\n this.createTexture();\n }\n\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.texture) {\n this.texture.destroy();\n }\n }\n }, {\n key: \"createTexture\",\n value: function createTexture() {\n var _this$options = this.options,\n data = _this$options.data,\n _this$options$type = _this$options.type,\n type = _this$options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _this$options$type,\n width = _this$options.width,\n height = _this$options.height,\n _this$options$flipY = _this$options.flipY,\n flipY = _this$options$flipY === void 0 ? false : _this$options$flipY,\n _this$options$format = _this$options.format,\n format = _this$options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _this$options$format,\n _this$options$mipmap = _this$options.mipmap,\n mipmap = _this$options$mipmap === void 0 ? false : _this$options$mipmap,\n _this$options$wrapS = _this$options.wrapS,\n wrapS = _this$options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapS,\n _this$options$wrapT = _this$options.wrapT,\n wrapT = _this$options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapT,\n _this$options$aniso = _this$options.aniso,\n aniso = _this$options$aniso === void 0 ? 0 : _this$options$aniso,\n _this$options$alignme = _this$options.alignment,\n alignment = _this$options$alignme === void 0 ? 1 : _this$options$alignme,\n _this$options$premult = _this$options.premultiplyAlpha,\n premultiplyAlpha = _this$options$premult === void 0 ? false : _this$options$premult,\n _this$options$mag = _this$options.mag,\n mag = _this$options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$mag,\n _this$options$min = _this$options.min,\n min = _this$options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$min,\n _this$options$colorSp = _this$options.colorSpace,\n colorSpace = _this$options$colorSp === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _this$options$colorSp,\n usage = _this$options.usage;\n this.width = width;\n this.height = height;\n this.texture = this.engine.device.createTexture({\n size: [width, height, 1],\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n // TODO: https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount\n sampleCount: 1,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureDimension\"].E2d,\n format: _constants__WEBPACK_IMPORTED_MODULE_4__[\"formatMap\"][format],\n // could throw texture binding usage mismatch\n usage: usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].CopyDst\n });\n\n if (!usage || usage & _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled) {\n this.sampler = this.engine.device.createSampler({\n addressModeU: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n addressModeV: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapT],\n addressModeW: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n // TODO: same as addressModeU\n magFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][mag],\n minFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][min],\n maxAnisotropy: aniso // @see https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy\n\n });\n }\n }\n }]);\n\n return WebGPUTexture2D;\n}();\n\n\n//# sourceMappingURL=WebGPUTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVUZXh0dXJlMkQuanM/ZDExMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ3JCO0FBQ3VCO0FBQ0E7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELHNEQUFFO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsc0RBQUU7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELHNEQUFFO0FBQ3JEO0FBQ0EsbURBQW1ELHNEQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLHNEQUFFO0FBQ2pEO0FBQ0EsK0NBQStDLHNEQUFFO0FBQ2pEO0FBQ0EsMERBQTBELHNEQUFFO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZFQUFnQztBQUNuRCxnQkFBZ0Isb0RBQVM7QUFDekI7QUFDQSx3QkFBd0IseUVBQTRCLFdBQVcseUVBQTRCO0FBQzNGLE9BQU87O0FBRVAsNEJBQTRCLHlFQUE0QjtBQUN4RDtBQUNBLHdCQUF3QixzREFBVztBQUNuQyx3QkFBd0Isc0RBQVc7QUFDbkMsd0JBQXdCLHNEQUFXO0FBQ25DO0FBQ0EscUJBQXFCLG9EQUFTO0FBQzlCLHFCQUFxQixvREFBUztBQUM5Qjs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVxQztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXAsIGZvcm1hdE1hcCwgd3JhcE1vZGVNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuQnVmZmVyXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNidWZmZXJzXG4gKi9cblxudmFyIFdlYkdQVVRleHR1cmUyRCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVVRleHR1cmUyRChlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVVGV4dHVyZTJEKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy50ZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMuc2FtcGxlciA9IHZvaWQgMDtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuY3JlYXRlVGV4dHVyZSgpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVVRleHR1cmUyRCwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHR1cmU6IHRoaXMudGV4dHVyZSxcbiAgICAgICAgc2FtcGxlcjogdGhpcy5zYW1wbGVyXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKCkgey8vIFRPRE9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2l6ZShfcmVmKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF9yZWYuaGVpZ2h0O1xuXG4gICAgICAvLyBUT0RPOiBpdCBzZWVtcyB0aGF0IFRleHR1cmUgZG9lc24ndCBzdXBwb3J0IGByZXNpemVgXG4gICAgICBpZiAod2lkdGggIT09IHRoaXMud2lkdGggfHwgaGVpZ2h0ICE9PSB0aGlzLmhlaWdodCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUZXh0dXJlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy50ZXh0dXJlKSB7XG4gICAgICAgIHRoaXMudGV4dHVyZS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVRleHR1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlVGV4dHVyZSgpIHtcbiAgICAgIHZhciBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICAgIGRhdGEgPSBfdGhpcyRvcHRpb25zLmRhdGEsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyR0eXBlID0gX3RoaXMkb3B0aW9ucy50eXBlLFxuICAgICAgICAgIHR5cGUgPSBfdGhpcyRvcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/IGdsLlVOU0lHTkVEX0JZVEUgOiBfdGhpcyRvcHRpb25zJHR5cGUsXG4gICAgICAgICAgd2lkdGggPSBfdGhpcyRvcHRpb25zLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJG9wdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkZmxpcFkgPSBfdGhpcyRvcHRpb25zLmZsaXBZLFxuICAgICAgICAgIGZsaXBZID0gX3RoaXMkb3B0aW9ucyRmbGlwWSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdGhpcyRvcHRpb25zJGZsaXBZLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkZm9ybWF0ID0gX3RoaXMkb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgZm9ybWF0ID0gX3RoaXMkb3B0aW9ucyRmb3JtYXQgPT09IHZvaWQgMCA/IGdsLlJHQkEgOiBfdGhpcyRvcHRpb25zJGZvcm1hdCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJG1pcG1hcCA9IF90aGlzJG9wdGlvbnMubWlwbWFwLFxuICAgICAgICAgIG1pcG1hcCA9IF90aGlzJG9wdGlvbnMkbWlwbWFwID09PSB2b2lkIDAgPyBmYWxzZSA6IF90aGlzJG9wdGlvbnMkbWlwbWFwLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkd3JhcFMgPSBfdGhpcyRvcHRpb25zLndyYXBTLFxuICAgICAgICAgIHdyYXBTID0gX3RoaXMkb3B0aW9ucyR3cmFwUyA9PT0gdm9pZCAwID8gZ2wuQ0xBTVBfVE9fRURHRSA6IF90aGlzJG9wdGlvbnMkd3JhcFMsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyR3cmFwVCA9IF90aGlzJG9wdGlvbnMud3JhcFQsXG4gICAgICAgICAgd3JhcFQgPSBfdGhpcyRvcHRpb25zJHdyYXBUID09PSB2b2lkIDAgPyBnbC5DTEFNUF9UT19FREdFIDogX3RoaXMkb3B0aW9ucyR3cmFwVCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGFuaXNvID0gX3RoaXMkb3B0aW9ucy5hbmlzbyxcbiAgICAgICAgICBhbmlzbyA9IF90aGlzJG9wdGlvbnMkYW5pc28gPT09IHZvaWQgMCA/IDAgOiBfdGhpcyRvcHRpb25zJGFuaXNvLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkYWxpZ25tZSA9IF90aGlzJG9wdGlvbnMuYWxpZ25tZW50LFxuICAgICAgICAgIGFsaWdubWVudCA9IF90aGlzJG9wdGlvbnMkYWxpZ25tZSA9PT0gdm9pZCAwID8gMSA6IF90aGlzJG9wdGlvbnMkYWxpZ25tZSxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJHByZW11bHQgPSBfdGhpcyRvcHRpb25zLnByZW11bHRpcGx5QWxwaGEsXG4gICAgICAgICAgcHJlbXVsdGlwbHlBbHBoYSA9IF90aGlzJG9wdGlvbnMkcHJlbXVsdCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdGhpcyRvcHRpb25zJHByZW11bHQsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRtYWcgPSBfdGhpcyRvcHRpb25zLm1hZyxcbiAgICAgICAgICBtYWcgPSBfdGhpcyRvcHRpb25zJG1hZyA9PT0gdm9pZCAwID8gZ2wuTkVBUkVTVCA6IF90aGlzJG9wdGlvbnMkbWFnLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkbWluID0gX3RoaXMkb3B0aW9ucy5taW4sXG4gICAgICAgICAgbWluID0gX3RoaXMkb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfdGhpcyRvcHRpb25zJG1pbixcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGNvbG9yU3AgPSBfdGhpcyRvcHRpb25zLmNvbG9yU3BhY2UsXG4gICAgICAgICAgY29sb3JTcGFjZSA9IF90aGlzJG9wdGlvbnMkY29sb3JTcCA9PT0gdm9pZCAwID8gZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMIDogX3RoaXMkb3B0aW9ucyRjb2xvclNwLFxuICAgICAgICAgIHVzYWdlID0gX3RoaXMkb3B0aW9ucy51c2FnZTtcbiAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgdGhpcy50ZXh0dXJlID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVRleHR1cmUoe1xuICAgICAgICBzaXplOiBbd2lkdGgsIGhlaWdodCwgMV0sXG4gICAgICAgIC8vIFRPRE86IGFycmF5TGF5ZXJDb3VudCBpcyBkZXByZWNhdGVkOiB1c2Ugc2l6ZS5kZXB0aFxuICAgICAgICAvLyBhcnJheUxheWVyQ291bnQ6IDEsXG4gICAgICAgIG1pcExldmVsQ291bnQ6IDEsXG4gICAgICAgIC8vIFRPRE86IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHV0ZXh0dXJldmlld2Rlc2NyaXB0b3ItbWlwbGV2ZWxjb3VudFxuICAgICAgICBzYW1wbGVDb3VudDogMSxcbiAgICAgICAgZGltZW5zaW9uOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZURpbWVuc2lvbi5FMmQsXG4gICAgICAgIGZvcm1hdDogZm9ybWF0TWFwW2Zvcm1hdF0sXG4gICAgICAgIC8vIGNvdWxkIHRocm93IHRleHR1cmUgYmluZGluZyB1c2FnZSBtaXNtYXRjaFxuICAgICAgICB1c2FnZTogdXNhZ2UgfHwgV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVVc2FnZS5TYW1wbGVkIHwgV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVVc2FnZS5Db3B5RHN0XG4gICAgICB9KTtcblxuICAgICAgaWYgKCF1c2FnZSB8fCB1c2FnZSAmIFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuU2FtcGxlZCkge1xuICAgICAgICB0aGlzLnNhbXBsZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlU2FtcGxlcih7XG4gICAgICAgICAgYWRkcmVzc01vZGVVOiB3cmFwTW9kZU1hcFt3cmFwU10sXG4gICAgICAgICAgYWRkcmVzc01vZGVWOiB3cmFwTW9kZU1hcFt3cmFwVF0sXG4gICAgICAgICAgYWRkcmVzc01vZGVXOiB3cmFwTW9kZU1hcFt3cmFwU10sXG4gICAgICAgICAgLy8gVE9ETzogc2FtZSBhcyBhZGRyZXNzTW9kZVVcbiAgICAgICAgICBtYWdGaWx0ZXI6IGZpbHRlck1hcFttYWddLFxuICAgICAgICAgIG1pbkZpbHRlcjogZmlsdGVyTWFwW21pbl0sXG4gICAgICAgICAgbWF4QW5pc290cm9weTogYW5pc28gLy8gQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1c2FtcGxlcmRlc2NyaXB0b3ItbWF4YW5pc290cm9weVxuXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVUZXh0dXJlMkQ7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVVRleHR1cmUyRCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVUZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js":
/*!*******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js ***!
\*******************************************************************/
/*! exports provided: primitiveMap, depthFuncMap, blendEquationMap, blendFuncMap, formatMap, filterMap, wrapModeMap, getCullMode, getDepthStencilStateDescriptor, getColorStateDescriptors */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCullMode\", function() { return getCullMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDepthStencilStateDescriptor\", function() { return getDepthStencilStateDescriptor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorStateDescriptors\", function() { return getColorStateDescriptors; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n\n\nvar _primitiveMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _formatMap, _filterMap, _wrapModeMap;\n\n\n // WebGPU 不支持 LINE_LOOP & TRIANGLE_FAN\n\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].PointList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineStrip), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleStrip), _primitiveMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Never), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Less), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].LessEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Greater), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].GreaterEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Equal), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].NotEqual), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Add), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Min), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Max), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Subtract), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].ReverseSubtract), _blendEquationMap); // @see https://gpuweb.github.io/gpuweb/#blend-state\n// 不支持 'constant alpha' 和 'one minus constant alpha'\n\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].Zero), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].One), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].BlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusBlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlphaSaturated), _blendFuncMap); // @see https://gpuweb.github.io/gpuweb/#texture-formats\n\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'r8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth32float'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth24plus-stencil8'), _formatMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpufiltermode\n\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _filterMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpuaddressmode\n\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp-to-edge'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror-repeat'), _wrapModeMap);\nfunction getCullMode(_ref) {\n var cull = _ref.cull;\n\n if (!cull || !cull.enable) {\n return _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].None;\n }\n\n if (cull.face) {\n return cull.face === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT ? _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Front : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Back;\n }\n}\nfunction getDepthStencilStateDescriptor(_ref2) {\n var depth = _ref2.depth,\n stencil = _ref2.stencil;\n // TODO: stencil\n var stencilFrontBack = {\n compare: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always,\n depthFailOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n failOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n passOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep\n };\n return {\n depthWriteEnabled: depth && depth.enable,\n depthCompare: depthFuncMap[(depth === null || depth === void 0 ? void 0 : depth.func) || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS],\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"TextureFormat\"].Depth24PlusStencil8,\n stencilFront: stencilFrontBack,\n stencilBack: stencilFrontBack,\n stencilReadMask: 0xffffffff,\n stencilWriteMask: 0xffffffff\n };\n}\n/**\n * @see https://gpuweb.github.io/gpuweb/#color-state\n */\n\nfunction getColorStateDescriptors(_ref3, swapChainFormat) {\n var blend = _ref3.blend;\n return [{\n format: swapChainFormat,\n // https://gpuweb.github.io/gpuweb/#blend-state\n alphaBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n colorBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n writeMask: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"ColorWrite\"].All\n }];\n}\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9jb25zdGFudHMuanM/MTk2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTs7QUFFcEU7O0FBRXlDO0FBQ3VCOztBQUV6RCxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsU0FBUyw4RUFBaUMsYUFBYSw0RUFBZSxnQkFBZ0Isc0RBQUUsUUFBUSw4RUFBaUMsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSw4RUFBaUMsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsYUFBYSw4RUFBaUMsYUFBYSw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSw4RUFBaUMsZ0JBQWdCLDRFQUFlLGdCQUFnQixzREFBRSxlQUFlLDhFQUFpQyxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGlCQUFpQiw4RUFBaUM7QUFDOXBCLHNDQUFzQyxFQUFFLDRFQUFlLGdCQUFnQixzREFBRSxRQUFRLDRFQUErQixTQUFTLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDRFQUErQixVQUFVLDRFQUFlLGdCQUFnQixzREFBRSxPQUFPLDRFQUErQixRQUFRLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDRFQUErQixhQUFhLDRFQUFlLGdCQUFnQixzREFBRSxVQUFVLDRFQUErQixXQUFXLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDRFQUErQixnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLFFBQVEsNEVBQStCLFNBQVMsNEVBQWUsZ0JBQWdCLHNEQUFFLFdBQVcsNEVBQStCO0FBQzNyQiw4Q0FBOEMsRUFBRSw0RUFBZSxvQkFBb0Isc0RBQUUsV0FBVywyRUFBOEIsT0FBTyw0RUFBZSxvQkFBb0Isc0RBQUUsVUFBVSwyRUFBOEIsT0FBTyw0RUFBZSxvQkFBb0Isc0RBQUUsVUFBVSwyRUFBOEIsT0FBTyw0RUFBZSxvQkFBb0Isc0RBQUUsZ0JBQWdCLDJFQUE4QixZQUFZLDRFQUFlLG9CQUFvQixzREFBRSx3QkFBd0IsMkVBQThCLHNDQUFzQztBQUNwaEI7O0FBRU8sc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLE9BQU8sd0VBQTJCLFFBQVEsNEVBQWUsZ0JBQWdCLHNEQUFFLE1BQU0sd0VBQTJCLE9BQU8sNEVBQWUsZ0JBQWdCLHNEQUFFLFlBQVksd0VBQTJCLFlBQVksNEVBQWUsZ0JBQWdCLHNEQUFFLHNCQUFzQix3RUFBMkIsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLHdFQUEyQixZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0Isd0VBQTJCLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSx3RUFBMkIsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLHdFQUEyQixvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLFlBQVksd0VBQTJCLFlBQVksNEVBQWUsZ0JBQWdCLHNEQUFFLHNCQUFzQix3RUFBMkIsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxpQkFBaUIsd0VBQTJCLGNBQWMsNEVBQWUsZ0JBQWdCLHNEQUFFLDJCQUEyQix3RUFBMkIsc0JBQXNCLDRFQUFlLGdCQUFnQixzREFBRSxxQkFBcUIsd0VBQTJCLG9DQUFvQzs7QUFFanVDLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsb0JBQW9CLDRFQUFlLGFBQWEsc0RBQUUsc0JBQXNCLDRFQUFlLGFBQWEsc0RBQUUsbUNBQW1DLDRFQUFlLGFBQWEsc0RBQUUscURBQXFEOztBQUU1UixnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLHNCQUFzQiw0RUFBZSxhQUFhLHNEQUFFLGdDQUFnQzs7QUFFcEosb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxvQkFBb0IsNEVBQWUsZUFBZSxzREFBRSxrQ0FBa0MsNEVBQWUsZUFBZSxzREFBRTtBQUM1TDtBQUNQOztBQUVBO0FBQ0EsV0FBVyxxRUFBd0I7QUFDbkM7O0FBRUE7QUFDQSx5QkFBeUIsc0RBQUUsU0FBUyxxRUFBd0IsU0FBUyxxRUFBd0I7QUFDN0Y7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDRFQUErQjtBQUM1QyxpQkFBaUIsNkVBQWdDO0FBQ2pELFlBQVksNkVBQWdDO0FBQzVDLFlBQVksNkVBQWdDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLDZGQUE2RixzREFBRTtBQUMvRixZQUFZLDBFQUE2QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLHNEQUFFO0FBQzlFLDRFQUE0RSxzREFBRTtBQUM5RSxxRkFBcUYsc0RBQUU7QUFDdkYsS0FBSztBQUNMO0FBQ0EsMEVBQTBFLHNEQUFFO0FBQzVFLDBFQUEwRSxzREFBRTtBQUM1RSxtRkFBbUYsc0RBQUU7QUFDckYsS0FBSztBQUNMLGVBQWUsdUVBQTBCO0FBQ3pDLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvY29uc3RhbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuXG52YXIgX3ByaW1pdGl2ZU1hcCwgX2RlcHRoRnVuY01hcCwgX2JsZW5kRXF1YXRpb25NYXAsIF9ibGVuZEZ1bmNNYXAsIF9mb3JtYXRNYXAsIF9maWx0ZXJNYXAsIF93cmFwTW9kZU1hcDtcblxuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJzsgLy8gV2ViR1BVIOS4jeaUr+aMgSBMSU5FX0xPT1AgJiBUUklBTkdMRV9GQU5cblxuZXhwb3J0IHZhciBwcmltaXRpdmVNYXAgPSAoX3ByaW1pdGl2ZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuUE9JTlRTLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuUG9pbnRMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVTLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuTGluZUxpc3QpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORV9MT09QLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuTGluZUxpc3QpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORV9TVFJJUCwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LkxpbmVTdHJpcCksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRVMsIFdlYkdQVUNvbnN0YW50cy5QcmltaXRpdmVUb3BvbG9neS5UcmlhbmdsZUxpc3QpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVfRkFOLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuVHJpYW5nbGVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX1NUUklQLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuVHJpYW5nbGVTdHJpcCksIF9wcmltaXRpdmVNYXApO1xuZXhwb3J0IHZhciBkZXB0aEZ1bmNNYXAgPSAoX2RlcHRoRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTkVWRVIsIFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uTmV2ZXIpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuQUxXQVlTLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkFsd2F5cyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5MRVNTLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkxlc3MpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTEVRVUFMLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkxlc3NFcXVhbCksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5HUkVBVEVSLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkdyZWF0ZXIpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuR0VRVUFMLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkdyZWF0ZXJFcXVhbCksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5FUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5FcXVhbCksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5OT1RFUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5Ob3RFcXVhbCksIF9kZXB0aEZ1bmNNYXApO1xuZXhwb3J0IHZhciBibGVuZEVxdWF0aW9uTWFwID0gKF9ibGVuZEVxdWF0aW9uTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19BREQsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5BZGQpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLk1JTl9FWFQsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5NaW4pLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLk1BWF9FWFQsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5NYXgpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfU1VCVFJBQ1QsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5TdWJ0cmFjdCksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19SRVZFUlNFX1NVQlRSQUNULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uUmV2ZXJzZVN1YnRyYWN0KSwgX2JsZW5kRXF1YXRpb25NYXApOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2JsZW5kLXN0YXRlXG4vLyDkuI3mlK/mjIEgJ2NvbnN0YW50IGFscGhhJyDlkowgJ29uZSBtaW51cyBjb25zdGFudCBhbHBoYSdcblxuZXhwb3J0IHZhciBibGVuZEZ1bmNNYXAgPSAoX2JsZW5kRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuWkVSTywgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlplcm8pLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19DT0xPUiwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlNyY0NvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c1NyY0NvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19BTFBIQSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlNyY0FscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c1NyY0FscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkRTVF9DT0xPUiwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLkRzdENvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c0RzdENvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkRTVF9BTFBIQSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLkRzdEFscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c0RzdEFscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkNPTlNUQU5UX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuQmxlbmRDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c0JsZW5kQ29sb3IpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0FMUEhBX1NBVFVSQVRFLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuU3JjQWxwaGFTYXR1cmF0ZWQpLCBfYmxlbmRGdW5jTWFwKTsgLy8gQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyN0ZXh0dXJlLWZvcm1hdHNcblxuZXhwb3J0IHZhciBmb3JtYXRNYXAgPSAoX2Zvcm1hdE1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuQUxQSEEsICdyOHVub3JtJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0JBLCAncmdiYTh1bm9ybScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAnZGVwdGgzMmZsb2F0JyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5ERVBUSF9TVEVOQ0lMLCAnZGVwdGgyNHBsdXMtc3RlbmNpbDgnKSwgX2Zvcm1hdE1hcCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZW51bWRlZi1ncHVmaWx0ZXJtb2RlXG5cbmV4cG9ydCB2YXIgZmlsdGVyTWFwID0gKF9maWx0ZXJNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLk5FQVJFU1QsICduZWFyZXN0JyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5MSU5FQVIsICdsaW5lYXInKSwgX2ZpbHRlck1hcCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZW51bWRlZi1ncHVhZGRyZXNzbW9kZVxuXG5leHBvcnQgdmFyIHdyYXBNb2RlTWFwID0gKF93cmFwTW9kZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3dyYXBNb2RlTWFwLCBnbC5SRVBFQVQsICdyZXBlYXQnKSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuQ0xBTVBfVE9fRURHRSwgJ2NsYW1wLXRvLWVkZ2UnKSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuTUlSUk9SRURfUkVQRUFULCAnbWlycm9yLXJlcGVhdCcpLCBfd3JhcE1vZGVNYXApO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1bGxNb2RlKF9yZWYpIHtcbiAgdmFyIGN1bGwgPSBfcmVmLmN1bGw7XG5cbiAgaWYgKCFjdWxsIHx8ICFjdWxsLmVuYWJsZSkge1xuICAgIHJldHVybiBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuTm9uZTtcbiAgfVxuXG4gIGlmIChjdWxsLmZhY2UpIHtcbiAgICByZXR1cm4gY3VsbC5mYWNlID09PSBnbC5GUk9OVCA/IFdlYkdQVUNvbnN0YW50cy5DdWxsTW9kZS5Gcm9udCA6IFdlYkdQVUNvbnN0YW50cy5DdWxsTW9kZS5CYWNrO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yKF9yZWYyKSB7XG4gIHZhciBkZXB0aCA9IF9yZWYyLmRlcHRoLFxuICAgICAgc3RlbmNpbCA9IF9yZWYyLnN0ZW5jaWw7XG4gIC8vIFRPRE86IHN0ZW5jaWxcbiAgdmFyIHN0ZW5jaWxGcm9udEJhY2sgPSB7XG4gICAgY29tcGFyZTogV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5BbHdheXMsXG4gICAgZGVwdGhGYWlsT3A6IFdlYkdQVUNvbnN0YW50cy5TdGVuY2lsT3BlcmF0aW9uLktlZXAsXG4gICAgZmFpbE9wOiBXZWJHUFVDb25zdGFudHMuU3RlbmNpbE9wZXJhdGlvbi5LZWVwLFxuICAgIHBhc3NPcDogV2ViR1BVQ29uc3RhbnRzLlN0ZW5jaWxPcGVyYXRpb24uS2VlcFxuICB9O1xuICByZXR1cm4ge1xuICAgIGRlcHRoV3JpdGVFbmFibGVkOiBkZXB0aCAmJiBkZXB0aC5lbmFibGUsXG4gICAgZGVwdGhDb21wYXJlOiBkZXB0aEZ1bmNNYXBbKGRlcHRoID09PSBudWxsIHx8IGRlcHRoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXB0aC5mdW5jKSB8fCBnbC5BTFdBWVNdLFxuICAgIGZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuRGVwdGgyNFBsdXNTdGVuY2lsOCxcbiAgICBzdGVuY2lsRnJvbnQ6IHN0ZW5jaWxGcm9udEJhY2ssXG4gICAgc3RlbmNpbEJhY2s6IHN0ZW5jaWxGcm9udEJhY2ssXG4gICAgc3RlbmNpbFJlYWRNYXNrOiAweGZmZmZmZmZmLFxuICAgIHN0ZW5jaWxXcml0ZU1hc2s6IDB4ZmZmZmZmZmZcbiAgfTtcbn1cbi8qKlxuICogQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNjb2xvci1zdGF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvclN0YXRlRGVzY3JpcHRvcnMoX3JlZjMsIHN3YXBDaGFpbkZvcm1hdCkge1xuICB2YXIgYmxlbmQgPSBfcmVmMy5ibGVuZDtcbiAgcmV0dXJuIFt7XG4gICAgZm9ybWF0OiBzd2FwQ2hhaW5Gb3JtYXQsXG4gICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYmxlbmQtc3RhdGVcbiAgICBhbHBoYUJsZW5kOiB7XG4gICAgICBzcmNGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuc3JjQWxwaGEgfHwgZ2wuT05FXSxcbiAgICAgIGRzdEZhY3RvcjogYmxlbmRGdW5jTWFwW2JsZW5kICYmIGJsZW5kLmZ1bmMgJiYgYmxlbmQuZnVuYy5kc3RBbHBoYSB8fCBnbC5aRVJPXSxcbiAgICAgIG9wZXJhdGlvbjogYmxlbmRFcXVhdGlvbk1hcFtibGVuZCAmJiBibGVuZC5lcXVhdGlvbiAmJiBibGVuZC5lcXVhdGlvbi5hbHBoYSB8fCBnbC5GVU5DX0FERF1cbiAgICB9LFxuICAgIGNvbG9yQmxlbmQ6IHtcbiAgICAgIHNyY0ZhY3RvcjogYmxlbmRGdW5jTWFwW2JsZW5kICYmIGJsZW5kLmZ1bmMgJiYgYmxlbmQuZnVuYy5zcmNSR0IgfHwgZ2wuT05FXSxcbiAgICAgIGRzdEZhY3RvcjogYmxlbmRGdW5jTWFwW2JsZW5kICYmIGJsZW5kLmZ1bmMgJiYgYmxlbmQuZnVuYy5kc3RSR0IgfHwgZ2wuWkVST10sXG4gICAgICBvcGVyYXRpb246IGJsZW5kRXF1YXRpb25NYXBbYmxlbmQgJiYgYmxlbmQuZXF1YXRpb24gJiYgYmxlbmQuZXF1YXRpb24ucmdiIHx8IGdsLkZVTkNfQUREXVxuICAgIH0sXG4gICAgd3JpdGVNYXNrOiBXZWJHUFVDb25zdGFudHMuQ29sb3JXcml0ZS5BbGxcbiAgfV07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/dom */ \"./node_modules/@antv/g-webgpu-engine/es/utils/dom.js\");\n\n\n\nvar glslang;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return _ref.apply(this, arguments);\n});\n\nfunction _ref() {\n _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!glslang) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", glslang);\n\n case 2:\n _context.next = 4;\n return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__[\"loadScriptAsync\"])('https://preview.babylonjs.com/glslang/glslang.js');\n\n case 4:\n glslang = window.glslang('https://preview.babylonjs.com/glslang/glslang.wasm');\n return _context.abrupt(\"return\", glslang);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _ref.apply(this, arguments);\n}\n//# sourceMappingURL=glslang.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9nbHNsYW5nLmpzPzZhMjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDekI7QUFDL0M7QUFDZTtBQUNmO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFNBQVMsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzVELFdBQVcsaUVBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsa0VBQWU7O0FBRWxDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9nbHNsYW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IHsgbG9hZFNjcmlwdEFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvZG9tJztcbnZhciBnbHNsYW5nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBfcmVmKCkge1xuICBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICB3aGlsZSAoMSkge1xuICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgaWYgKCFnbHNsYW5nKSB7XG4gICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBnbHNsYW5nKTtcblxuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0O1xuICAgICAgICAgICAgcmV0dXJuIGxvYWRTY3JpcHRBc3luYygnaHR0cHM6Ly9wcmV2aWV3LmJhYnlsb25qcy5jb20vZ2xzbGFuZy9nbHNsYW5nLmpzJyk7XG5cbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBnbHNsYW5nID0gd2luZG93Lmdsc2xhbmcoJ2h0dHBzOi8vcHJldmlldy5iYWJ5bG9uanMuY29tL2dsc2xhbmcvZ2xzbGFuZy53YXNtJyk7XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGdsc2xhbmcpO1xuXG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBfY2FsbGVlKTtcbiAgfSkpO1xuICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2xzbGFuZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js ***!
\***************************************************************/
/*! exports provided: WebGPUEngine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return WebGPUEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _glslang__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./glslang */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js\");\n/* harmony import */ var _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUAttribute */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n/* harmony import */ var _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./WebGPUComputeModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\");\n/* harmony import */ var _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUElements */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\");\n/* harmony import */ var _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./WebGPUFramebuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\");\n/* harmony import */ var _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./WebGPUModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\");\n/* harmony import */ var _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./WebGPUTexture2D */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * implements renderService with WebGPU API\n * @see https://webgpu.io/\n * @see https://github.com/BabylonJS/Babylon.js/blob/WebGPU/src/Engines/webgpuEngine.ts\n */\n // import { Glslang } from '@webgpu/glslang/dist/web-devel/glslang.onefile';\n\n\n\n\n\n\n\n\n\n\n\nvar WebGPUEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGPUEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGPUEngine);\n\n this.supportWebGPU = true;\n this.useWGSL = false;\n this.options = void 0;\n this.canvas = void 0;\n this.context = void 0;\n this.glslang = void 0;\n this.adapter = void 0;\n this.device = void 0;\n this.swapChain = void 0;\n this.mainPassSampleCount = void 0;\n this.mainTexture = void 0;\n this.depthTexture = void 0;\n this.mainColorAttachments = void 0;\n this.mainTextureExtends = void 0;\n this.mainDepthAttachment = void 0;\n this.uploadEncoder = void 0;\n this.renderEncoder = void 0;\n this.computeEncoder = void 0;\n this.renderTargetEncoder = void 0;\n this.commandBuffers = new Array(4).fill(undefined);\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n this.currentRenderTargetViewDescriptor = void 0;\n this.currentComputePass = null;\n this.bundleEncoder = void 0;\n this.tempBuffers = [];\n this.currentRenderTarget = null;\n this.uploadEncoderDescriptor = {\n label: 'upload'\n };\n this.renderEncoderDescriptor = {\n label: 'render'\n };\n this.renderTargetEncoderDescriptor = {\n label: 'renderTarget'\n };\n this.computeEncoderDescriptor = {\n label: 'compute'\n };\n this.pipelines = {};\n this.computePipelines = {};\n this.defaultSampleCount = 4;\n this.clearDepthValue = 1;\n this.clearStencilValue = 0;\n this.transientViewport = {\n x: Infinity,\n y: 0,\n width: 0,\n height: 0\n };\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n\n this.clear = function (options) {\n var framebuffer = options.framebuffer,\n color = options.color,\n depth = options.depth,\n stencil = options.stencil;\n\n if (_this.options.supportCompute) {\n _this.startComputePass();\n } // We need to recreate the render pass so that the new parameters for clear color / depth / stencil are taken into account\n\n\n if (_this.currentRenderTarget) {\n if (_this.currentRenderPass) {\n _this.endRenderTargetRenderPass();\n }\n\n _this.startRenderTargetRenderPass(_this.currentRenderTarget, color ? color : null, !!depth, !!stencil);\n } else {\n // if (this.useReverseDepthBuffer) {\n // this._depthCullingState.depthFunc = Constants.GREATER;\n // }\n _this.mainColorAttachments[0].loadValue = color ? color : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.depthLoadValue = depth ? depth : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.stencilLoadValue = stencil ? _this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n\n if (_this.mainRenderPass) {\n _this.endMainRenderPass();\n }\n\n _this.startMainRenderPass();\n }\n };\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(options) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n model = new _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this, options);\n _context.next = 3;\n return model.init();\n\n case 3:\n return _context.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this, options);\n };\n\n this.createBuffer = function (options) {\n return new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this, options);\n };\n\n this.createElements = function (options) {\n return new _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this, options);\n };\n\n this.createTexture2D = function (options) {\n return new _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n // bind\n if (_this.currentRenderTarget) {\n _this.unbindFramebuffer(_this.currentRenderTarget);\n }\n\n _this.currentRenderTarget = framebuffer; // TODO: use mipmap options in framebuffer\n\n _this.currentRenderTargetViewDescriptor = {\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureViewDimension\"].E2d,\n // mipLevelCount: bindWithMipMaps ? WebGPUTextureHelper.computeNumMipmapLevels(texture.width, texture.height) - lodLevel : 1,\n // baseArrayLayer: faceIndex,\n // baseMipLevel: lodLevel,\n arrayLayerCount: 1,\n aspect: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureAspect\"].All\n };\n _this.currentRenderPass = null;\n drawCommands();\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(context) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n model = new _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this, context);\n _context2.next = 3;\n return model.init();\n\n case 3:\n return _context2.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.getCanvas = function () {\n return _this.canvas;\n };\n\n this.getGLContext = function () {\n throw new Error('Method not implemented.');\n };\n\n this.viewport = function (_ref3) {\n var x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n if (!_this.currentRenderPass) {\n // call viewport() before current render pass created\n _this.transientViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n } else if (_this.transientViewport.x !== Infinity) {\n var renderPass = _this.getCurrentRenderPass(); // @see https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setviewport\n\n\n renderPass.setViewport(_this.transientViewport.x, _this.transientViewport.y, _this.transientViewport.width, _this.transientViewport.height, 0, 1);\n } else if (x !== _this.cachedViewport.x || y !== _this.cachedViewport.y || width !== _this.cachedViewport.width || height !== _this.cachedViewport.height) {\n _this.cachedViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n var _renderPass = _this.getCurrentRenderPass();\n\n _renderPass.setViewport(x, y, width, height, 0, 1);\n }\n };\n\n this.readPixels = function (options) {\n throw new Error('Method not implemented.');\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGPUEngine, [{\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n return true;\n }\n }, {\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(config) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.canvas = config.canvas;\n this.options = config;\n this.useWGSL = !!config.useWGSL;\n this.mainPassSampleCount = config.antialiasing ? this.defaultSampleCount : 1;\n _context3.next = 6;\n return this.initGlslang();\n\n case 6:\n this.initContextAndSwapChain();\n this.initMainAttachments();\n\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function init(_x3) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"setScissor\",\n value: function setScissor(scissor) {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.tempBuffers.forEach(function (buffer) {\n return buffer.destroy();\n });\n this.tempBuffers = [];\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {\n this.uploadEncoder = this.device.createCommandEncoder(this.uploadEncoderDescriptor);\n this.renderEncoder = this.device.createCommandEncoder(this.renderEncoderDescriptor);\n this.renderTargetEncoder = this.device.createCommandEncoder(this.renderTargetEncoderDescriptor);\n\n if (this.options.supportCompute) {\n this.computeEncoder = this.device.createCommandEncoder(this.computeEncoderDescriptor);\n }\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {\n if (this.options.supportCompute) {\n this.endComputePass();\n }\n\n this.endMainRenderPass();\n this.commandBuffers[0] = this.uploadEncoder.finish();\n this.commandBuffers[1] = this.renderEncoder.finish();\n\n if (this.options.supportCompute) {\n this.commandBuffers[2] = this.computeEncoder.finish();\n }\n\n this.commandBuffers[3] = this.renderTargetEncoder.finish();\n\n if (_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"]) {\n this.device // @ts-ignore\n .getQueue().submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n } else {\n this.device.defaultQueue.submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n }\n }\n }, {\n key: \"getCurrentRenderPass\",\n value: function getCurrentRenderPass() {\n if (this.currentRenderTarget && !this.currentRenderPass) {\n this.startRenderTargetRenderPass(this.currentRenderTarget, null, false, false);\n } else if (!this.currentRenderPass) {\n this.startMainRenderPass();\n }\n\n return this.currentRenderPass;\n }\n }, {\n key: \"initGlslang\",\n value: function () {\n var _initGlslang = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var _navigator, _navigator$gpu;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(_glslang__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n\n case 2:\n this.glslang = _context4.sent;\n _context4.next = 5;\n return (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$gpu = _navigator.gpu) === null || _navigator$gpu === void 0 ? void 0 : _navigator$gpu.requestAdapter();\n\n case 5:\n this.adapter = _context4.sent;\n _context4.next = 8;\n return this.adapter.requestDevice();\n\n case 8:\n this.device = _context4.sent;\n\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function initGlslang() {\n return _initGlslang.apply(this, arguments);\n }\n\n return initGlslang;\n }()\n }, {\n key: \"initContextAndSwapChain\",\n value: function initContextAndSwapChain() {\n this.context = this.canvas.getContext(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'gpu' : 'gpupresent');\n this.swapChain = this.context.configureSwapChain({\n device: this.device,\n format: this.options.swapChainFormat,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].CopySrc\n });\n }\n }, {\n key: \"initMainAttachments\",\n value: function initMainAttachments() {\n this.mainTextureExtends = {\n width: this.canvas.width,\n height: this.canvas.height,\n depth: 1\n };\n\n if (this.options.antialiasing) {\n var mainTextureDescriptor = {\n size: this.mainTextureExtends,\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].BGRA8Unorm,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n this.mainTexture = this.device.createTexture(mainTextureDescriptor);\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.mainTexture.createDefaultView() : this.mainTexture.createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n } else {\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n }\n\n var depthTextureDescriptor = {\n size: this.mainTextureExtends,\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'depth32float-stencil8' : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].Depth24PlusStencil8,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.depthTexture = this.device.createTexture( // @ts-ignore\n depthTextureDescriptor);\n this.mainDepthAttachment = {\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.depthTexture.createDefaultView() : this.depthTexture.createView(),\n depthLoadValue: this.clearDepthValue,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: this.clearStencilValue,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n };\n }\n }, {\n key: \"startComputePass\",\n value: function startComputePass() {\n if (this.currentComputePass) {\n this.endComputePass();\n }\n\n this.currentComputePass = this.computeEncoder.beginComputePass();\n }\n }, {\n key: \"startMainRenderPass\",\n value: function startMainRenderPass() {\n if (this.currentRenderPass && !this.currentRenderTarget) {\n this.endMainRenderPass();\n } // Resolve in case of MSAA\n\n\n if (this.options.antialiasing) {\n this.mainColorAttachments[0].resolveTarget = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n } else {\n this.mainColorAttachments[0].attachment = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n }\n\n this.currentRenderPass = this.renderEncoder.beginRenderPass({\n colorAttachments: this.mainColorAttachments,\n depthStencilAttachment: this.mainDepthAttachment // TODO: use framebuffer's depth & stencil\n\n });\n this.mainRenderPass = this.currentRenderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n }\n }\n }, {\n key: \"startRenderTargetRenderPass\",\n value: function startRenderTargetRenderPass(renderTarget, clearColor, clearDepth) {\n var _renderTarget$get$col, _renderTarget$get$dep;\n\n var clearStencil = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var gpuTexture = (_renderTarget$get$col = renderTarget.get().color) === null || _renderTarget$get$col === void 0 ? void 0 : _renderTarget$get$col.texture;\n var colorTextureView;\n\n if (gpuTexture) {\n colorTextureView = gpuTexture.createView(this.currentRenderTargetViewDescriptor);\n }\n\n var depthStencilTexture = (_renderTarget$get$dep = renderTarget.get().depth) === null || _renderTarget$get$dep === void 0 ? void 0 : _renderTarget$get$dep.texture;\n var depthStencilTextureView;\n\n if (depthStencilTexture) {\n depthStencilTextureView = depthStencilTexture.createView();\n }\n\n var renderPass = this.renderTargetEncoder.beginRenderPass({\n colorAttachments: [{\n attachment: colorTextureView,\n loadValue: clearColor !== null ? clearColor : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }],\n depthStencilAttachment: depthStencilTexture && depthStencilTextureView ? {\n attachment: depthStencilTextureView,\n depthLoadValue: clearDepth ? this.clearDepthValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: clearStencil ? this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n } : undefined\n });\n this.currentRenderPass = renderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n } // TODO WEBGPU set the scissor rect and the stencil reference value\n\n }\n }, {\n key: \"endMainRenderPass\",\n value: function endMainRenderPass() {\n if (this.currentRenderPass === this.mainRenderPass && this.currentRenderPass !== null) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n }\n }\n }, {\n key: \"endComputePass\",\n value: function endComputePass() {\n if (this.currentComputePass) {\n this.currentComputePass.endPass();\n this.currentComputePass = null;\n }\n }\n }, {\n key: \"endRenderTargetRenderPass\",\n value: function endRenderTargetRenderPass() {\n if (this.currentRenderPass) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n }\n }\n }, {\n key: \"resetCachedViewport\",\n value: function resetCachedViewport() {\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"unbindFramebuffer\",\n value: function unbindFramebuffer(framebuffer) {\n // unbind\n if (this.currentRenderPass && this.currentRenderPass !== this.mainRenderPass) {\n this.endRenderTargetRenderPass();\n }\n\n this.transientViewport.x = Infinity;\n this.currentRenderTarget = null; // if (texture.generateMipMaps && !disableGenerateMipMaps && !texture.isCube) {\n // this._generateMipmaps(texture);\n // }\n\n this.currentRenderPass = this.mainRenderPass;\n }\n }]);\n\n return WebGPUEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9pbmRleC5qcz80ZTU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNKO0FBQ047O0FBRTlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDK0MsWUFBWSxVQUFVOztBQUVMO0FBQ3pCO0FBQ1A7QUFDZ0I7QUFDTjtBQUNZO0FBQ1I7QUFDTTtBQUNaO0FBQ1E7QUFLaEQsMkJBQTJCLDREQUFVO0FBQ3JDO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsbUVBQXNCO0FBQ3hGLG1FQUFtRSxtRUFBc0I7QUFDekYseUZBQXlGLG1FQUFzQjs7QUFFL0c7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEU7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscURBQVc7QUFDdkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsaUJBQWlCLHdEQUFlO0FBQ2hDOztBQUVBO0FBQ0EsaUJBQWlCLHFEQUFZO0FBQzdCOztBQUVBO0FBQ0EsaUJBQWlCLHdEQUFjO0FBQy9COztBQUVBO0FBQ0EsaUJBQWlCLHlEQUFlO0FBQ2hDOztBQUVBO0FBQ0EsaUJBQWlCLDJEQUFpQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUE4Qzs7QUFFOUM7QUFDQSxtQkFBbUIsaUZBQW9DO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDBFQUE2QjtBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsNERBQWtCO0FBQzlDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzREFBc0Q7OztBQUd0RDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxVQUFVLDREQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUM1RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBTzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDLDREQUFRO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLGVBQWUseUVBQTRCLG9CQUFvQix5RUFBNEI7QUFDM0YsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZFQUFnQztBQUNyRCxrQkFBa0IsMEVBQTZCO0FBQy9DLGlCQUFpQix5RUFBNEI7QUFDN0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsNERBQVE7QUFDOUI7QUFDQTtBQUNBLG1CQUFtQixvRUFBdUI7QUFDMUMsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLHNCQUFzQiw0REFBUTtBQUM5QjtBQUNBO0FBQ0EsbUJBQW1CLG9FQUF1QjtBQUMxQyxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw2RUFBZ0M7QUFDbkQsZ0JBQWdCLDREQUFRLDZCQUE2QiwwRUFBNkI7QUFDbEYsZUFBZSx5RUFBNEI7QUFDM0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0REFBUTtBQUM1QjtBQUNBO0FBQ0Esc0JBQXNCLG9FQUF1QjtBQUM3QztBQUNBLHdCQUF3QixvRUFBdUI7QUFDL0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBLHFEQUFxRCw0REFBUTtBQUM3RDtBQUNBLE9BQU87QUFDUCxrREFBa0QsNERBQVE7QUFDMUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxtRUFBc0I7QUFDOUUsbUJBQW1CLG9FQUF1QjtBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDhEQUE4RCxtRUFBc0I7QUFDcEYsd0JBQXdCLG9FQUF1QjtBQUMvQyxvRUFBb0UsbUVBQXNCO0FBQzFGLDBCQUEwQixvRUFBdUI7QUFDakQsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbnZhciBfZGVjLCBfY2xhc3MsIF90ZW1wO1xuXG4vKipcbiAqIGltcGxlbWVudHMgcmVuZGVyU2VydmljZSB3aXRoIFdlYkdQVSBBUElcbiAqIEBzZWUgaHR0cHM6Ly93ZWJncHUuaW8vXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9CYWJ5bG9uSlMvQmFieWxvbi5qcy9ibG9iL1dlYkdQVS9zcmMvRW5naW5lcy93ZWJncHVFbmdpbmUudHNcbiAqL1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJzsgLy8gaW1wb3J0IHsgR2xzbGFuZyB9IGZyb20gJ0B3ZWJncHUvZ2xzbGFuZy9kaXN0L3dlYi1kZXZlbC9nbHNsYW5nLm9uZWZpbGUnO1xuXG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCBnbHNsYW5nIGZyb20gJy4vZ2xzbGFuZyc7XG5pbXBvcnQgV2ViR1BVQXR0cmlidXRlIGZyb20gJy4vV2ViR1BVQXR0cmlidXRlJztcbmltcG9ydCBXZWJHUFVCdWZmZXIgZnJvbSAnLi9XZWJHUFVCdWZmZXInO1xuaW1wb3J0IFdlYkdQVUNvbXB1dGVNb2RlbCBmcm9tICcuL1dlYkdQVUNvbXB1dGVNb2RlbCc7XG5pbXBvcnQgV2ViR1BVRWxlbWVudHMgZnJvbSAnLi9XZWJHUFVFbGVtZW50cyc7XG5pbXBvcnQgV2ViR1BVRnJhbWVidWZmZXIgZnJvbSAnLi9XZWJHUFVGcmFtZWJ1ZmZlcic7XG5pbXBvcnQgV2ViR1BVTW9kZWwgZnJvbSAnLi9XZWJHUFVNb2RlbCc7XG5pbXBvcnQgV2ViR1BVVGV4dHVyZTJEIGZyb20gJy4vV2ViR1BVVGV4dHVyZTJEJztcbmV4cG9ydFxuLyoqXG4gKiByZWdsIHJlbmRlcmVyXG4gKi9cbnZhciBXZWJHUFVFbmdpbmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVFbmdpbmUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVFbmdpbmUpO1xuXG4gICAgdGhpcy5zdXBwb3J0V2ViR1BVID0gdHJ1ZTtcbiAgICB0aGlzLnVzZVdHU0wgPSBmYWxzZTtcbiAgICB0aGlzLm9wdGlvbnMgPSB2b2lkIDA7XG4gICAgdGhpcy5jYW52YXMgPSB2b2lkIDA7XG4gICAgdGhpcy5jb250ZXh0ID0gdm9pZCAwO1xuICAgIHRoaXMuZ2xzbGFuZyA9IHZvaWQgMDtcbiAgICB0aGlzLmFkYXB0ZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXZpY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5zd2FwQ2hhaW4gPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluUGFzc1NhbXBsZUNvdW50ID0gdm9pZCAwO1xuICAgIHRoaXMubWFpblRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aFRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50cyA9IHZvaWQgMDtcbiAgICB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyA9IHZvaWQgMDtcbiAgICB0aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQgPSB2b2lkIDA7XG4gICAgdGhpcy51cGxvYWRFbmNvZGVyID0gdm9pZCAwO1xuICAgIHRoaXMucmVuZGVyRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbXB1dGVFbmNvZGVyID0gdm9pZCAwO1xuICAgIHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbW1hbmRCdWZmZXJzID0gbmV3IEFycmF5KDQpLmZpbGwodW5kZWZpbmVkKTtcbiAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gbnVsbDtcbiAgICB0aGlzLm1haW5SZW5kZXJQYXNzID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXRWaWV3RGVzY3JpcHRvciA9IHZvaWQgMDtcbiAgICB0aGlzLmN1cnJlbnRDb21wdXRlUGFzcyA9IG51bGw7XG4gICAgdGhpcy5idW5kbGVFbmNvZGVyID0gdm9pZCAwO1xuICAgIHRoaXMudGVtcEJ1ZmZlcnMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgPSBudWxsO1xuICAgIHRoaXMudXBsb2FkRW5jb2RlckRlc2NyaXB0b3IgPSB7XG4gICAgICBsYWJlbDogJ3VwbG9hZCdcbiAgICB9O1xuICAgIHRoaXMucmVuZGVyRW5jb2RlckRlc2NyaXB0b3IgPSB7XG4gICAgICBsYWJlbDogJ3JlbmRlcidcbiAgICB9O1xuICAgIHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlckRlc2NyaXB0b3IgPSB7XG4gICAgICBsYWJlbDogJ3JlbmRlclRhcmdldCdcbiAgICB9O1xuICAgIHRoaXMuY29tcHV0ZUVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICdjb21wdXRlJ1xuICAgIH07XG4gICAgdGhpcy5waXBlbGluZXMgPSB7fTtcbiAgICB0aGlzLmNvbXB1dGVQaXBlbGluZXMgPSB7fTtcbiAgICB0aGlzLmRlZmF1bHRTYW1wbGVDb3VudCA9IDQ7XG4gICAgdGhpcy5jbGVhckRlcHRoVmFsdWUgPSAxO1xuICAgIHRoaXMuY2xlYXJTdGVuY2lsVmFsdWUgPSAwO1xuICAgIHRoaXMudHJhbnNpZW50Vmlld3BvcnQgPSB7XG4gICAgICB4OiBJbmZpbml0eSxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdGhpcy5jYWNoZWRWaWV3cG9ydCA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuXG4gICAgdGhpcy5jbGVhciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICB2YXIgZnJhbWVidWZmZXIgPSBvcHRpb25zLmZyYW1lYnVmZmVyLFxuICAgICAgICAgIGNvbG9yID0gb3B0aW9ucy5jb2xvcixcbiAgICAgICAgICBkZXB0aCA9IG9wdGlvbnMuZGVwdGgsXG4gICAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbDtcblxuICAgICAgaWYgKF90aGlzLm9wdGlvbnMuc3VwcG9ydENvbXB1dGUpIHtcbiAgICAgICAgX3RoaXMuc3RhcnRDb21wdXRlUGFzcygpO1xuICAgICAgfSAvLyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRoZSByZW5kZXIgcGFzcyBzbyB0aGF0IHRoZSBuZXcgcGFyYW1ldGVycyBmb3IgY2xlYXIgY29sb3IgLyBkZXB0aCAvIHN0ZW5jaWwgYXJlIHRha2VuIGludG8gYWNjb3VudFxuXG5cbiAgICAgIGlmIChfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIGlmIChfdGhpcy5jdXJyZW50UmVuZGVyUGFzcykge1xuICAgICAgICAgIF90aGlzLmVuZFJlbmRlclRhcmdldFJlbmRlclBhc3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnN0YXJ0UmVuZGVyVGFyZ2V0UmVuZGVyUGFzcyhfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0LCBjb2xvciA/IGNvbG9yIDogbnVsbCwgISFkZXB0aCwgISFzdGVuY2lsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGlmICh0aGlzLnVzZVJldmVyc2VEZXB0aEJ1ZmZlcikge1xuICAgICAgICAvLyAgICAgdGhpcy5fZGVwdGhDdWxsaW5nU3RhdGUuZGVwdGhGdW5jID0gQ29uc3RhbnRzLkdSRUFURVI7XG4gICAgICAgIC8vIH1cbiAgICAgICAgX3RoaXMubWFpbkNvbG9yQXR0YWNobWVudHNbMF0ubG9hZFZhbHVlID0gY29sb3IgPyBjb2xvciA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZDtcbiAgICAgICAgX3RoaXMubWFpbkRlcHRoQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSA9IGRlcHRoID8gZGVwdGggOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQ7XG4gICAgICAgIF90aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQuc3RlbmNpbExvYWRWYWx1ZSA9IHN0ZW5jaWwgPyBfdGhpcy5jbGVhclN0ZW5jaWxWYWx1ZSA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZDtcblxuICAgICAgICBpZiAoX3RoaXMubWFpblJlbmRlclBhc3MpIHtcbiAgICAgICAgICBfdGhpcy5lbmRNYWluUmVuZGVyUGFzcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc3RhcnRNYWluUmVuZGVyUGFzcygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShvcHRpb25zKSB7XG4gICAgICAgIHZhciBtb2RlbDtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtb2RlbCA9IG5ldyBXZWJHUFVNb2RlbChfdGhpcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLmluaXQoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBtb2RlbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHRoaXMuY3JlYXRlQXR0cmlidXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVQXR0cmlidXRlKF90aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVCdWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBXZWJHUFVCdWZmZXIoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUVsZW1lbnRzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVRWxlbWVudHMoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZVRleHR1cmUyRCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFdlYkdQVVRleHR1cmUyRChfdGhpcywgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRnJhbWVidWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBXZWJHUFVGcmFtZWJ1ZmZlcihfdGhpcywgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMudXNlRnJhbWVidWZmZXIgPSBmdW5jdGlvbiAoZnJhbWVidWZmZXIsIGRyYXdDb21tYW5kcykge1xuICAgICAgLy8gYmluZFxuICAgICAgaWYgKF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQpIHtcbiAgICAgICAgX3RoaXMudW5iaW5kRnJhbWVidWZmZXIoX3RoaXMuY3VycmVudFJlbmRlclRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgPSBmcmFtZWJ1ZmZlcjsgLy8gVE9ETzogdXNlIG1pcG1hcCBvcHRpb25zIGluIGZyYW1lYnVmZmVyXG5cbiAgICAgIF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXRWaWV3RGVzY3JpcHRvciA9IHtcbiAgICAgICAgZGltZW5zaW9uOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVZpZXdEaW1lbnNpb24uRTJkLFxuICAgICAgICAvLyBtaXBMZXZlbENvdW50OiBiaW5kV2l0aE1pcE1hcHMgPyBXZWJHUFVUZXh0dXJlSGVscGVyLmNvbXB1dGVOdW1NaXBtYXBMZXZlbHModGV4dHVyZS53aWR0aCwgdGV4dHVyZS5oZWlnaHQpIC0gbG9kTGV2ZWwgOiAxLFxuICAgICAgICAvLyBiYXNlQXJyYXlMYXllcjogZmFjZUluZGV4LFxuICAgICAgICAvLyBiYXNlTWlwTGV2ZWw6IGxvZExldmVsLFxuICAgICAgICBhcnJheUxheWVyQ291bnQ6IDEsXG4gICAgICAgIGFzcGVjdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVBc3BlY3QuQWxsXG4gICAgICB9O1xuICAgICAgX3RoaXMuY3VycmVudFJlbmRlclBhc3MgPSBudWxsO1xuICAgICAgZHJhd0NvbW1hbmRzKCk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlQ29tcHV0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG1vZGVsO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtb2RlbCA9IG5ldyBXZWJHUFVDb21wdXRlTW9kZWwoX3RoaXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWwuaW5pdCgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBtb2RlbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMik7XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyKSB7XG4gICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB0aGlzLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5jYW52YXM7XG4gICAgfTtcblxuICAgIHRoaXMuZ2V0R0xDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH07XG5cbiAgICB0aGlzLnZpZXdwb3J0ID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgeCA9IF9yZWYzLngsXG4gICAgICAgICAgeSA9IF9yZWYzLnksXG4gICAgICAgICAgd2lkdGggPSBfcmVmMy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmMy5oZWlnaHQ7XG5cbiAgICAgIGlmICghX3RoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgLy8gY2FsbCB2aWV3cG9ydCgpIGJlZm9yZSBjdXJyZW50IHJlbmRlciBwYXNzIGNyZWF0ZWRcbiAgICAgICAgX3RoaXMudHJhbnNpZW50Vmlld3BvcnQgPSB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiB5LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChfdGhpcy50cmFuc2llbnRWaWV3cG9ydC54ICE9PSBJbmZpbml0eSkge1xuICAgICAgICB2YXIgcmVuZGVyUGFzcyA9IF90aGlzLmdldEN1cnJlbnRSZW5kZXJQYXNzKCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXJlbmRlcnBhc3NlbmNvZGVyLXNldHZpZXdwb3J0XG5cblxuICAgICAgICByZW5kZXJQYXNzLnNldFZpZXdwb3J0KF90aGlzLnRyYW5zaWVudFZpZXdwb3J0LngsIF90aGlzLnRyYW5zaWVudFZpZXdwb3J0LnksIF90aGlzLnRyYW5zaWVudFZpZXdwb3J0LndpZHRoLCBfdGhpcy50cmFuc2llbnRWaWV3cG9ydC5oZWlnaHQsIDAsIDEpO1xuICAgICAgfSBlbHNlIGlmICh4ICE9PSBfdGhpcy5jYWNoZWRWaWV3cG9ydC54IHx8IHkgIT09IF90aGlzLmNhY2hlZFZpZXdwb3J0LnkgfHwgd2lkdGggIT09IF90aGlzLmNhY2hlZFZpZXdwb3J0LndpZHRoIHx8IGhlaWdodCAhPT0gX3RoaXMuY2FjaGVkVmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgIF90aGlzLmNhY2hlZFZpZXdwb3J0ID0ge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgX3JlbmRlclBhc3MgPSBfdGhpcy5nZXRDdXJyZW50UmVuZGVyUGFzcygpO1xuXG4gICAgICAgIF9yZW5kZXJQYXNzLnNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQsIDAsIDEpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnJlYWRQaXhlbHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVRW5naW5lLCBbe1xuICAgIGtleTogXCJpc0Zsb2F0U3VwcG9ydGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRmxvYXRTdXBwb3J0ZWQoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMyhjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMgPSBjb25maWcuY2FudmFzO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICB0aGlzLnVzZVdHU0wgPSAhIWNvbmZpZy51c2VXR1NMO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCA9IGNvbmZpZy5hbnRpYWxpYXNpbmcgPyB0aGlzLmRlZmF1bHRTYW1wbGVDb3VudCA6IDE7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRHbHNsYW5nKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbnRleHRBbmRTd2FwQ2hhaW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNYWluQXR0YWNobWVudHMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdChfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInNldFNjaXNzb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0U2Npc3NvcihzY2lzc29yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIGlmICh0aGlzLm1haW5UZXh0dXJlKSB7XG4gICAgICAgIHRoaXMubWFpblRleHR1cmUuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kZXB0aFRleHR1cmUpIHtcbiAgICAgICAgdGhpcy5kZXB0aFRleHR1cmUuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlbXBCdWZmZXJzLmZvckVhY2goZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gYnVmZmVyLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZW1wQnVmZmVycyA9IFtdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJiZWdpbkZyYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luRnJhbWUoKSB7XG4gICAgICB0aGlzLnVwbG9hZEVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih0aGlzLnVwbG9hZEVuY29kZXJEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMucmVuZGVyRW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKHRoaXMucmVuZGVyRW5jb2RlckRlc2NyaXB0b3IpO1xuICAgICAgdGhpcy5yZW5kZXJUYXJnZXRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIodGhpcy5yZW5kZXJUYXJnZXRFbmNvZGVyRGVzY3JpcHRvcik7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3VwcG9ydENvbXB1dGUpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlRW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKHRoaXMuY29tcHV0ZUVuY29kZXJEZXNjcmlwdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZW5kRnJhbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kRnJhbWUoKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIHRoaXMuZW5kQ29tcHV0ZVBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbmRNYWluUmVuZGVyUGFzcygpO1xuICAgICAgdGhpcy5jb21tYW5kQnVmZmVyc1swXSA9IHRoaXMudXBsb2FkRW5jb2Rlci5maW5pc2goKTtcbiAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbMV0gPSB0aGlzLnJlbmRlckVuY29kZXIuZmluaXNoKCk7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3VwcG9ydENvbXB1dGUpIHtcbiAgICAgICAgdGhpcy5jb21tYW5kQnVmZmVyc1syXSA9IHRoaXMuY29tcHV0ZUVuY29kZXIuZmluaXNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbM10gPSB0aGlzLnJlbmRlclRhcmdldEVuY29kZXIuZmluaXNoKCk7XG5cbiAgICAgIGlmIChpc1NhZmFyaSkge1xuICAgICAgICB0aGlzLmRldmljZSAvLyBAdHMtaWdub3JlXG4gICAgICAgIC5nZXRRdWV1ZSgpLnN1Ym1pdCh0aGlzLmNvbW1hbmRCdWZmZXJzLmZpbHRlcihmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZXZpY2UuZGVmYXVsdFF1ZXVlLnN1Ym1pdCh0aGlzLmNvbW1hbmRCdWZmZXJzLmZpbHRlcihmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50UmVuZGVyUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50UmVuZGVyUGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgJiYgIXRoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlclRhcmdldFJlbmRlclBhc3ModGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0LCBudWxsLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5jdXJyZW50UmVuZGVyUGFzcykge1xuICAgICAgICB0aGlzLnN0YXJ0TWFpblJlbmRlclBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlbmRlclBhc3M7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluaXRHbHNsYW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdEdsc2xhbmcgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHtcbiAgICAgICAgdmFyIF9uYXZpZ2F0b3IsIF9uYXZpZ2F0b3IkZ3B1O1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2xzbGFuZygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICB0aGlzLmdsc2xhbmcgPSBfY29udGV4dDQuc2VudDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChfbmF2aWdhdG9yID0gbmF2aWdhdG9yKSA9PT0gbnVsbCB8fCBfbmF2aWdhdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX25hdmlnYXRvciRncHUgPSBfbmF2aWdhdG9yLmdwdSkgPT09IG51bGwgfHwgX25hdmlnYXRvciRncHUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9uYXZpZ2F0b3IkZ3B1LnJlcXVlc3RBZGFwdGVyKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlciA9IF9jb250ZXh0NC5zZW50O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJlcXVlc3REZXZpY2UoKTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgdGhpcy5kZXZpY2UgPSBfY29udGV4dDQuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU0LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdEdsc2xhbmcoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdEdsc2xhbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluaXRHbHNsYW5nO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImluaXRDb250ZXh0QW5kU3dhcENoYWluXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRDb250ZXh0QW5kU3dhcENoYWluKCkge1xuICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dChpc1NhZmFyaSA/ICdncHUnIDogJ2dwdXByZXNlbnQnKTtcbiAgICAgIHRoaXMuc3dhcENoYWluID0gdGhpcy5jb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbih7XG4gICAgICAgIGRldmljZTogdGhpcy5kZXZpY2UsXG4gICAgICAgIGZvcm1hdDogdGhpcy5vcHRpb25zLnN3YXBDaGFpbkZvcm1hdCxcbiAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuT3V0cHV0QXR0YWNobWVudCB8IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuQ29weVNyY1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluaXRNYWluQXR0YWNobWVudHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdE1haW5BdHRhY2htZW50cygpIHtcbiAgICAgIHRoaXMubWFpblRleHR1cmVFeHRlbmRzID0ge1xuICAgICAgICB3aWR0aDogdGhpcy5jYW52YXMud2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5jYW52YXMuaGVpZ2h0LFxuICAgICAgICBkZXB0aDogMVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbnRpYWxpYXNpbmcpIHtcbiAgICAgICAgdmFyIG1haW5UZXh0dXJlRGVzY3JpcHRvciA9IHtcbiAgICAgICAgICBzaXplOiB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyxcbiAgICAgICAgICAvLyBUT0RPOiBhcnJheUxheWVyQ291bnQgaXMgZGVwcmVjYXRlZDogdXNlIHNpemUuZGVwdGhcbiAgICAgICAgICAvLyBhcnJheUxheWVyQ291bnQ6IDEsXG4gICAgICAgICAgbWlwTGV2ZWxDb3VudDogMSxcbiAgICAgICAgICBzYW1wbGVDb3VudDogdGhpcy5tYWluUGFzc1NhbXBsZUNvdW50LFxuICAgICAgICAgIGRpbWVuc2lvbjogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVEaW1lbnNpb24uRTJkLFxuICAgICAgICAgIGZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVVc2FnZS5PdXRwdXRBdHRhY2htZW50XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMubWFpblRleHR1cmUpIHtcbiAgICAgICAgICB0aGlzLm1haW5UZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWFpblRleHR1cmUgPSB0aGlzLmRldmljZS5jcmVhdGVUZXh0dXJlKG1haW5UZXh0dXJlRGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMgPSBbe1xuICAgICAgICAgIGF0dGFjaG1lbnQ6IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMubWFpblRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMubWFpblRleHR1cmUuY3JlYXRlVmlldygpLFxuICAgICAgICAgIGxvYWRWYWx1ZTogWzAsIDAsIDAsIDFdLFxuICAgICAgICAgIHN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICAgIH1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50cyA9IFt7XG4gICAgICAgICAgYXR0YWNobWVudDogaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVWaWV3KCksXG4gICAgICAgICAgbG9hZFZhbHVlOiBbMCwgMCwgMCwgMV0sXG4gICAgICAgICAgc3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmVcbiAgICAgICAgfV07XG4gICAgICB9XG5cbiAgICAgIHZhciBkZXB0aFRleHR1cmVEZXNjcmlwdG9yID0ge1xuICAgICAgICBzaXplOiB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyxcbiAgICAgICAgLy8gYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICBtaXBMZXZlbENvdW50OiAxLFxuICAgICAgICBzYW1wbGVDb3VudDogdGhpcy5tYWluUGFzc1NhbXBsZUNvdW50LFxuICAgICAgICBkaW1lbnNpb246IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRGltZW5zaW9uLkUyZCxcbiAgICAgICAgZm9ybWF0OiBpc1NhZmFyaSA/ICdkZXB0aDMyZmxvYXQtc3RlbmNpbDgnIDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuRGVwdGgyNFBsdXNTdGVuY2lsOCxcbiAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuT3V0cHV0QXR0YWNobWVudFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZGVwdGhUZXh0dXJlKSB7XG4gICAgICAgIHRoaXMuZGVwdGhUZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZXB0aFRleHR1cmUgPSB0aGlzLmRldmljZS5jcmVhdGVUZXh0dXJlKCAvLyBAdHMtaWdub3JlXG4gICAgICBkZXB0aFRleHR1cmVEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMubWFpbkRlcHRoQXR0YWNobWVudCA9IHtcbiAgICAgICAgYXR0YWNobWVudDogaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZGVwdGhUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkgOiB0aGlzLmRlcHRoVGV4dHVyZS5jcmVhdGVWaWV3KCksXG4gICAgICAgIGRlcHRoTG9hZFZhbHVlOiB0aGlzLmNsZWFyRGVwdGhWYWx1ZSxcbiAgICAgICAgZGVwdGhTdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZSxcbiAgICAgICAgc3RlbmNpbExvYWRWYWx1ZTogdGhpcy5jbGVhclN0ZW5jaWxWYWx1ZSxcbiAgICAgICAgc3RlbmNpbFN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydENvbXB1dGVQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0Q29tcHV0ZVBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MpIHtcbiAgICAgICAgdGhpcy5lbmRDb21wdXRlUGFzcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRDb21wdXRlUGFzcyA9IHRoaXMuY29tcHV0ZUVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydE1haW5SZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0TWFpblJlbmRlclBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVuZGVyUGFzcyAmJiAhdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuZW5kTWFpblJlbmRlclBhc3MoKTtcbiAgICAgIH0gLy8gUmVzb2x2ZSBpbiBjYXNlIG9mIE1TQUFcblxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFudGlhbGlhc2luZykge1xuICAgICAgICB0aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzWzBdLnJlc29sdmVUYXJnZXQgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVWaWV3KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzWzBdLmF0dGFjaG1lbnQgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVWaWV3KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MgPSB0aGlzLnJlbmRlckVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHtcbiAgICAgICAgY29sb3JBdHRhY2htZW50czogdGhpcy5tYWluQ29sb3JBdHRhY2htZW50cyxcbiAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudDogdGhpcy5tYWluRGVwdGhBdHRhY2htZW50IC8vIFRPRE86IHVzZSBmcmFtZWJ1ZmZlcidzIGRlcHRoICYgc3RlbmNpbFxuXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWFpblJlbmRlclBhc3MgPSB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzO1xuXG4gICAgICBpZiAodGhpcy5jYWNoZWRWaWV3cG9ydCkge1xuICAgICAgICB0aGlzLnZpZXdwb3J0KHRoaXMuY2FjaGVkVmlld3BvcnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydFJlbmRlclRhcmdldFJlbmRlclBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RhcnRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKHJlbmRlclRhcmdldCwgY2xlYXJDb2xvciwgY2xlYXJEZXB0aCkge1xuICAgICAgdmFyIF9yZW5kZXJUYXJnZXQkZ2V0JGNvbCwgX3JlbmRlclRhcmdldCRnZXQkZGVwO1xuXG4gICAgICB2YXIgY2xlYXJTdGVuY2lsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBmYWxzZTtcbiAgICAgIHZhciBncHVUZXh0dXJlID0gKF9yZW5kZXJUYXJnZXQkZ2V0JGNvbCA9IHJlbmRlclRhcmdldC5nZXQoKS5jb2xvcikgPT09IG51bGwgfHwgX3JlbmRlclRhcmdldCRnZXQkY29sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcmVuZGVyVGFyZ2V0JGdldCRjb2wudGV4dHVyZTtcbiAgICAgIHZhciBjb2xvclRleHR1cmVWaWV3O1xuXG4gICAgICBpZiAoZ3B1VGV4dHVyZSkge1xuICAgICAgICBjb2xvclRleHR1cmVWaWV3ID0gZ3B1VGV4dHVyZS5jcmVhdGVWaWV3KHRoaXMuY3VycmVudFJlbmRlclRhcmdldFZpZXdEZXNjcmlwdG9yKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlcHRoU3RlbmNpbFRleHR1cmUgPSAoX3JlbmRlclRhcmdldCRnZXQkZGVwID0gcmVuZGVyVGFyZ2V0LmdldCgpLmRlcHRoKSA9PT0gbnVsbCB8fCBfcmVuZGVyVGFyZ2V0JGdldCRkZXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9yZW5kZXJUYXJnZXQkZ2V0JGRlcC50ZXh0dXJlO1xuICAgICAgdmFyIGRlcHRoU3RlbmNpbFRleHR1cmVWaWV3O1xuXG4gICAgICBpZiAoZGVwdGhTdGVuY2lsVGV4dHVyZSkge1xuICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldyA9IGRlcHRoU3RlbmNpbFRleHR1cmUuY3JlYXRlVmlldygpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVuZGVyUGFzcyA9IHRoaXMucmVuZGVyVGFyZ2V0RW5jb2Rlci5iZWdpblJlbmRlclBhc3Moe1xuICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBbe1xuICAgICAgICAgIGF0dGFjaG1lbnQ6IGNvbG9yVGV4dHVyZVZpZXcsXG4gICAgICAgICAgbG9hZFZhbHVlOiBjbGVhckNvbG9yICE9PSBudWxsID8gY2xlYXJDb2xvciA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZCxcbiAgICAgICAgICBzdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZVxuICAgICAgICB9XSxcbiAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudDogZGVwdGhTdGVuY2lsVGV4dHVyZSAmJiBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldyA/IHtcbiAgICAgICAgICBhdHRhY2htZW50OiBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldyxcbiAgICAgICAgICBkZXB0aExvYWRWYWx1ZTogY2xlYXJEZXB0aCA/IHRoaXMuY2xlYXJEZXB0aFZhbHVlIDogV2ViR1BVQ29uc3RhbnRzLkxvYWRPcC5Mb2FkLFxuICAgICAgICAgIGRlcHRoU3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmUsXG4gICAgICAgICAgc3RlbmNpbExvYWRWYWx1ZTogY2xlYXJTdGVuY2lsID8gdGhpcy5jbGVhclN0ZW5jaWxWYWx1ZSA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZCxcbiAgICAgICAgICBzdGVuY2lsU3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmVcbiAgICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gcmVuZGVyUGFzcztcblxuICAgICAgaWYgKHRoaXMuY2FjaGVkVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy52aWV3cG9ydCh0aGlzLmNhY2hlZFZpZXdwb3J0KTtcbiAgICAgIH0gLy8gVE9ETyBXRUJHUFUgc2V0IHRoZSBzY2lzc29yIHJlY3QgYW5kIHRoZSBzdGVuY2lsIHJlZmVyZW5jZSB2YWx1ZVxuXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZE1haW5SZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZE1haW5SZW5kZXJQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFJlbmRlclBhc3MgPT09IHRoaXMubWFpblJlbmRlclBhc3MgJiYgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzLmVuZFBhc3MoKTtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlZFZpZXdwb3J0KCk7XG4gICAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MgPSBudWxsO1xuICAgICAgICB0aGlzLm1haW5SZW5kZXJQYXNzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZW5kQ29tcHV0ZVBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kQ29tcHV0ZVBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MuZW5kUGFzcygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRDb21wdXRlUGFzcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZFJlbmRlclRhcmdldFJlbmRlclBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kUmVuZGVyVGFyZ2V0UmVuZGVyUGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJQYXNzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MuZW5kUGFzcygpO1xuICAgICAgICB0aGlzLnJlc2V0Q2FjaGVkVmlld3BvcnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzZXRDYWNoZWRWaWV3cG9ydFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldENhY2hlZFZpZXdwb3J0KCkge1xuICAgICAgdGhpcy5jYWNoZWRWaWV3cG9ydCA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5iaW5kRnJhbWVidWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5iaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpIHtcbiAgICAgIC8vIHVuYmluZFxuICAgICAgaWYgKHRoaXMuY3VycmVudFJlbmRlclBhc3MgJiYgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyAhPT0gdGhpcy5tYWluUmVuZGVyUGFzcykge1xuICAgICAgICB0aGlzLmVuZFJlbmRlclRhcmdldFJlbmRlclBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc2llbnRWaWV3cG9ydC54ID0gSW5maW5pdHk7XG4gICAgICB0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgPSBudWxsOyAvLyBpZiAodGV4dHVyZS5nZW5lcmF0ZU1pcE1hcHMgJiYgIWRpc2FibGVHZW5lcmF0ZU1pcE1hcHMgJiYgIXRleHR1cmUuaXNDdWJlKSB7XG4gICAgICAvLyAgIHRoaXMuX2dlbmVyYXRlTWlwbWFwcyh0ZXh0dXJlKTtcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyA9IHRoaXMubWFpblJlbmRlclBhc3M7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUVuZ2luZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/Kernel.js":
/*!**************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/Kernel.js ***!
\**************************************************/
/*! exports provided: Kernel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return Kernel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _utils_is_array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/is-array */ \"./node_modules/@antv/g-webgpu/es/utils/is-array.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/is-number */ \"./node_modules/@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/is-typedarray */ \"./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\nvar Kernel = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Kernel() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Kernel);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor2, this);\n\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n this.model = void 0;\n this.dirty = true;\n this.compiledBundle = void 0;\n this.initPromise = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Kernel, [{\n key: \"init\",\n value: function init() {\n var _this$configService$g = this.configService.get(),\n canvas = _this$configService$g.canvas,\n engineOptions = _this$configService$g.engineOptions;\n\n this.initPromise = this.engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_11__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n }\n }, {\n key: \"setBundle\",\n value: function setBundle(bundle) {\n // deep clone\n this.compiledBundle = JSON.parse(JSON.stringify(bundle));\n }\n }, {\n key: \"setDispatch\",\n value: function setDispatch(dispatch) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.dispatch = dispatch;\n }\n\n return this;\n }\n }, {\n key: \"setMaxIteration\",\n value: function setMaxIteration(maxIteration) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.maxIteration = maxIteration;\n }\n\n return this;\n }\n }, {\n key: \"setBinding\",\n value: function setBinding(name, data) {\n var _this = this;\n\n if (typeof name === 'string') {\n var isNumberLikeData = Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_13__[\"isNumber\"])(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__[\"isTypedArray\"])(data) || Object(_utils_is_array__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(data);\n\n if (this.compiledBundle && this.compiledBundle.context) {\n // set define, eg. setBinding('MAX_LENGTH', 10)\n var existedDefine = this.compiledBundle.context.defines.find(function (b) {\n return b.name === name;\n });\n\n if (existedDefine) {\n existedDefine.value = data;\n return this;\n } // set uniform\n\n\n var existedBinding = this.compiledBundle.context.uniforms.find(function (b) {\n return b.name === name;\n });\n\n if (existedBinding) {\n // update uniform or buffer\n if (isNumberLikeData) {\n // @ts-ignore\n existedBinding.data = data;\n existedBinding.isReferer = false;\n\n if (existedBinding.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].Uniform) {\n if (this.model) {\n // @ts-ignore\n this.model.updateUniform(name, data);\n }\n } else {\n if (this.model) {\n // @ts-ignore\n this.model.updateBuffer(name, data);\n }\n }\n } else {\n // update with another kernel\n existedBinding.isReferer = true; // @ts-ignore\n\n existedBinding.data = data;\n }\n }\n }\n } else {\n Object.keys(name).forEach(function (key) {\n _this.setBinding(key, name[key]);\n });\n }\n\n return this;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this2 = this;\n\n var iteration,\n i,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n iteration = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;\n\n if (!this.dirty) {\n _context.next = 6;\n break;\n }\n\n if (this.compiledBundle.context) {\n if (iteration > 1) {\n this.compiledBundle.context.maxIteration = iteration;\n } else {\n this.compiledBundle.context.maxIteration++;\n }\n }\n\n _context.next = 5;\n return this.compile();\n\n case 5:\n this.dirty = false;\n\n case 6:\n this.engine.beginFrame(); // 首先开启当前 frame 的 compute pass\n\n this.engine.clear({});\n\n if (this.compiledBundle.context) {\n this.compiledBundle.context.uniforms.filter(function (_ref) {\n var isReferer = _ref.isReferer;\n return isReferer;\n }).forEach(function (_ref2) {\n var data = _ref2.data,\n name = _ref2.name;\n\n // @ts-ignore\n _this2.model.confirmInput(data.model, name);\n });\n }\n\n for (i = 0; i < iteration; i++) {\n this.model.run();\n }\n\n this.engine.endFrame();\n return _context.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n /**\n * read output from GPUBuffer\n */\n\n }, {\n key: \"getOutput\",\n value: function () {\n var _getOutput = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.model.readData());\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getOutput() {\n return _getOutput.apply(this, arguments);\n }\n\n return getOutput;\n }()\n }, {\n key: \"compile\",\n value: function () {\n var _compile = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var context, target, shader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.initPromise;\n\n case 2:\n context = _objectSpread({}, this.compiledBundle.context);\n target = this.engine.supportWebGPU ? this.engine.useWGSL ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].WGSL : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL450 : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL100;\n shader = this.compiledBundle.shaders[target]; // this.bindings?.forEach(({ name, data }) => {\n // if (name === name.toUpperCase()) {\n // const define = context.defines.find((d) => d.name === name);\n // if (define) {\n // // @ts-ignore\n // define.value = data;\n // }\n // }\n // });\n // 生成运行时 define\n\n context.defines.filter(function (define) {\n return define.runtime;\n }).forEach(function (define) {\n var valuePlaceHolder = \"\".concat(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"DefineValuePlaceholder\"]).concat(define.name);\n shader = shader.replace(valuePlaceHolder, \"\".concat(define.value));\n });\n context.shader = shader; // 添加 uniform 绑定的数据\n\n context.uniforms.forEach(function (uniform) {\n // const binding = this.bindings.find((b) => b.name === uniform.name);\n // if (binding) {\n // // @ts-ignore\n // uniform.data = binding.referer || binding.data;\n // // @ts-ignore\n // uniform.isReferer = !!binding.referer;\n // }\n // 未指定数据,尝试根据 uniform 类型初始化\n if (!uniform.data) {\n if (uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].StorageBuffer) {\n var sizePerElement = 1;\n\n if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].FloatArray) {\n sizePerElement = 1;\n } else if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n sizePerElement = 4;\n }\n\n uniform.data = new Float32Array(context.output.length * sizePerElement).fill(0);\n }\n }\n }); // } else if (uniform.type === 'image2D') {\n // // @ts-ignore\n // buffer.data = new Uint8ClampedArray(context.output.length!).fill(0);\n // }\n\n this.compiledBundle.context = context;\n _context3.next = 11;\n return this.engine.createComputeModel(this.compiledBundle.context);\n\n case 11:\n this.model = _context3.sent;\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compile() {\n return _compile.apply(this, arguments);\n }\n\n return compile;\n }()\n }]);\n\n return Kernel;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Kernel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvS2VybmVsLmpzPzNiN2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDSjtBQUNzQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFclo7O0FBRS9EO0FBQ2pCO0FBQ0Q7QUFDUDtBQUNNO0FBQ1E7QUFDOUMscUJBQXFCLDZEQUFVLFlBQVkseURBQU0sQ0FBQyw4REFBVSx3QkFBd0IseURBQU0sQ0FBQyw4REFBVTtBQUM1RztBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsa0JBQWtCLHdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsbUVBQVk7QUFDdEMseUJBQXlCLDBFQUE2QjtBQUN0RDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLGtFQUFRLFVBQVUsMEVBQVksVUFBVSxnRUFBTzs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrREFBa0QsaUVBQWE7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLDhDQUE4Qzs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EseUNBQXlDOztBQUV6QyxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQSwyQkFBMkIsZUFBZTtBQUMxQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzFFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFO0FBQ0EsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQztBQUMxQywyRUFBMkUsMERBQU0sUUFBUSwwREFBTSxXQUFXLDBEQUFNO0FBQ2hILDZEQUE2RCw2QkFBNkIsYUFBYTtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLG1EQUFtRCwwRUFBc0I7QUFDekU7QUFDQSxpQkFBaUI7QUFDakIsd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxpRUFBYTtBQUM5RDs7QUFFQSwyQ0FBMkMsbUVBQWU7QUFDMUQ7QUFDQSx1QkFBdUIsMkJBQTJCLG1FQUFlO0FBQ2pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEVBQUUsS0FBSztBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL0tlcm5lbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgQVNUX1RPS0VOX1RZUEVTLCBjcmVhdGVFbnRpdHksIERlZmluZVZhbHVlUGxhY2Vob2xkZXIsIElERU5USUZJRVIsIFNUT1JBR0VfQ0xBU1MsIFRhcmdldCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc3VibW9kdWxlLWltcG9ydHNcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZUNhbnZhcyB9IGZyb20gJy4vdXRpbHMvY2FudmFzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vdXRpbHMvaXMtYXJyYXknO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL2lzLW51bWJlcic7XG5pbXBvcnQgeyBpc1R5cGVkQXJyYXkgfSBmcm9tICcuL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuZXhwb3J0IHZhciBLZXJuZWwgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gS2VybmVsKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBLZXJuZWwpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjb25maWdTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICB0aGlzLmVudGl0eSA9IGNyZWF0ZUVudGl0eSgpO1xuICAgIHRoaXMubW9kZWwgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5jb21waWxlZEJ1bmRsZSA9IHZvaWQgMDtcbiAgICB0aGlzLmluaXRQcm9taXNlID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEtlcm5lbCwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgdmFyIF90aGlzJGNvbmZpZ1NlcnZpY2UkZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXQoKSxcbiAgICAgICAgICBjYW52YXMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuY2FudmFzLFxuICAgICAgICAgIGVuZ2luZU9wdGlvbnMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuZW5naW5lT3B0aW9ucztcblxuICAgICAgdGhpcy5pbml0UHJvbWlzZSA9IHRoaXMuZW5naW5lLmluaXQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGNhbnZhczogY2FudmFzIHx8IGNyZWF0ZUNhbnZhcygpLFxuICAgICAgICBzd2FwQ2hhaW5Gb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkJHUkE4VW5vcm0sXG4gICAgICAgIGFudGlhbGlhc2luZzogZmFsc2VcbiAgICAgIH0sIGVuZ2luZU9wdGlvbnMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QnVuZGxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEJ1bmRsZShidW5kbGUpIHtcbiAgICAgIC8vIGRlZXAgY2xvbmVcbiAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGJ1bmRsZSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXNwYXRjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXNwYXRjaChkaXNwYXRjaCkge1xuICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE1heEl0ZXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNYXhJdGVyYXRpb24obWF4SXRlcmF0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KSB7XG4gICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5tYXhJdGVyYXRpb24gPSBtYXhJdGVyYXRpb247XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRCaW5kaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEJpbmRpbmcobmFtZSwgZGF0YSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YXIgaXNOdW1iZXJMaWtlRGF0YSA9IGlzTnVtYmVyKGRhdGEpIHx8IGlzVHlwZWRBcnJheShkYXRhKSB8fCBpc0FycmF5KGRhdGEpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlICYmIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICAgIC8vIHNldCBkZWZpbmUsIGVnLiBzZXRCaW5kaW5nKCdNQVhfTEVOR1RIJywgMTApXG4gICAgICAgICAgdmFyIGV4aXN0ZWREZWZpbmUgPSB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQuZGVmaW5lcy5maW5kKGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5uYW1lID09PSBuYW1lO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGV4aXN0ZWREZWZpbmUpIHtcbiAgICAgICAgICAgIGV4aXN0ZWREZWZpbmUudmFsdWUgPSBkYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgfSAvLyBzZXQgdW5pZm9ybVxuXG5cbiAgICAgICAgICB2YXIgZXhpc3RlZEJpbmRpbmcgPSB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQudW5pZm9ybXMuZmluZChmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubmFtZSA9PT0gbmFtZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChleGlzdGVkQmluZGluZykge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHVuaWZvcm0gb3IgYnVmZmVyXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXJMaWtlRGF0YSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGV4aXN0ZWRCaW5kaW5nLmRhdGEgPSBkYXRhO1xuICAgICAgICAgICAgICBleGlzdGVkQmluZGluZy5pc1JlZmVyZXIgPSBmYWxzZTtcblxuICAgICAgICAgICAgICBpZiAoZXhpc3RlZEJpbmRpbmcuc3RvcmFnZUNsYXNzID09PSBTVE9SQUdFX0NMQVNTLlVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC51cGRhdGVVbmlmb3JtKG5hbWUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC51cGRhdGVCdWZmZXIobmFtZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyB1cGRhdGUgd2l0aCBhbm90aGVyIGtlcm5lbFxuICAgICAgICAgICAgICBleGlzdGVkQmluZGluZy5pc1JlZmVyZXIgPSB0cnVlOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgZXhpc3RlZEJpbmRpbmcuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhuYW1lKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRCaW5kaW5nKGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgIHZhciBpdGVyYXRpb24sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgX2FyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaXRlcmF0aW9uID0gX2FyZ3MubGVuZ3RoID4gMCAmJiBfYXJnc1swXSAhPT0gdW5kZWZpbmVkID8gX2FyZ3NbMF0gOiAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5tYXhJdGVyYXRpb24gPSBpdGVyYXRpb247XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQubWF4SXRlcmF0aW9uKys7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZSgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmJlZ2luRnJhbWUoKTsgLy8g6aaW5YWI5byA5ZCv5b2T5YmNIGZyYW1lIOeahCBjb21wdXRlIHBhc3NcblxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmNsZWFyKHt9KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC51bmlmb3Jtcy5maWx0ZXIoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzUmVmZXJlciA9IF9yZWYuaXNSZWZlcmVyO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNSZWZlcmVyO1xuICAgICAgICAgICAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBfcmVmMi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9yZWYyLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBfdGhpczIubW9kZWwuY29uZmlybUlucHV0KGRhdGEubW9kZWwsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGl0ZXJhdGlvbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJ1bigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmVuZEZyYW1lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCB0aGlzKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gICAgLyoqXG4gICAgICogcmVhZCBvdXRwdXQgZnJvbSBHUFVCdWZmZXJcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldE91dHB1dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2dldE91dHB1dCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCB0aGlzLm1vZGVsLnJlYWREYXRhKCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBnZXRPdXRwdXQoKSB7XG4gICAgICAgIHJldHVybiBfZ2V0T3V0cHV0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRPdXRwdXQ7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2NvbXBpbGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHtcbiAgICAgICAgdmFyIGNvbnRleHQsIHRhcmdldCwgc2hhZGVyO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFByb21pc2U7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNvbnRleHQgPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IHRoaXMuZW5naW5lLnN1cHBvcnRXZWJHUFUgPyB0aGlzLmVuZ2luZS51c2VXR1NMID8gVGFyZ2V0LldHU0wgOiBUYXJnZXQuR0xTTDQ1MCA6IFRhcmdldC5HTFNMMTAwO1xuICAgICAgICAgICAgICAgIHNoYWRlciA9IHRoaXMuY29tcGlsZWRCdW5kbGUuc2hhZGVyc1t0YXJnZXRdOyAvLyB0aGlzLmJpbmRpbmdzPy5mb3JFYWNoKCh7IG5hbWUsIGRhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vICAgaWYgKG5hbWUgPT09IG5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIC8vICAgICBjb25zdCBkZWZpbmUgPSBjb250ZXh0LmRlZmluZXMuZmluZCgoZCkgPT4gZC5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICAgICAgICAvLyAgICAgaWYgKGRlZmluZSkge1xuICAgICAgICAgICAgICAgIC8vICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyAgICAgICBkZWZpbmUudmFsdWUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6L+Q6KGM5pe2IGRlZmluZVxuXG4gICAgICAgICAgICAgICAgY29udGV4dC5kZWZpbmVzLmZpbHRlcihmdW5jdGlvbiAoZGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5lLnJ1bnRpbWU7XG4gICAgICAgICAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoZGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgdmFsdWVQbGFjZUhvbGRlciA9IFwiXCIuY29uY2F0KERlZmluZVZhbHVlUGxhY2Vob2xkZXIpLmNvbmNhdChkZWZpbmUubmFtZSk7XG4gICAgICAgICAgICAgICAgICBzaGFkZXIgPSBzaGFkZXIucmVwbGFjZSh2YWx1ZVBsYWNlSG9sZGVyLCBcIlwiLmNvbmNhdChkZWZpbmUudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNoYWRlciA9IHNoYWRlcjsgLy8g5re75YqgIHVuaWZvcm0g57uR5a6a55qE5pWw5o2uXG5cbiAgICAgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1zLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGJpbmRpbmcgPSB0aGlzLmJpbmRpbmdzLmZpbmQoKGIpID0+IGIubmFtZSA9PT0gdW5pZm9ybS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgIC8vIGlmIChiaW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgICAvLyAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgIC8vICAgdW5pZm9ybS5kYXRhID0gYmluZGluZy5yZWZlcmVyIHx8IGJpbmRpbmcuZGF0YTtcbiAgICAgICAgICAgICAgICAgIC8vICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgLy8gICB1bmlmb3JtLmlzUmVmZXJlciA9ICEhYmluZGluZy5yZWZlcmVyO1xuICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgLy8g5pyq5oyH5a6a5pWw5o2u77yM5bCd6K+V5qC55o2uIHVuaWZvcm0g57G75Z6L5Yid5aeL5YyWXG4gICAgICAgICAgICAgICAgICBpZiAoIXVuaWZvcm0uZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5pZm9ybS5zdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuU3RvcmFnZUJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplUGVyRWxlbWVudCA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pZm9ybS50eXBlID09PSBBU1RfVE9LRU5fVFlQRVMuRmxvYXRBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVBlckVsZW1lbnQgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodW5pZm9ybS50eXBlID09PSBBU1RfVE9LRU5fVFlQRVMuVmVjdG9yNEZsb2F0QXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVQZXJFbGVtZW50ID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtLmRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KGNvbnRleHQub3V0cHV0Lmxlbmd0aCAqIHNpemVQZXJFbGVtZW50KS5maWxsKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7IC8vIH0gZWxzZSBpZiAodW5pZm9ybS50eXBlID09PSAnaW1hZ2UyRCcpIHtcbiAgICAgICAgICAgICAgICAvLyAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyAgIGJ1ZmZlci5kYXRhID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGNvbnRleHQub3V0cHV0Lmxlbmd0aCEpLmZpbGwoMCk7XG4gICAgICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5jcmVhdGVDb21wdXRlTW9kZWwodGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KTtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBfY29udGV4dDMuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNvbXBpbGUoKSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGlsZTtcbiAgICB9KClcbiAgfV0pO1xuXG4gIHJldHVybiBLZXJuZWw7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY29uZmlnU2VydmljZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9S2VybmVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/Kernel.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/Renderer.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/Renderer.js ***!
\****************************************************/
/*! exports provided: Renderer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n/* babel-plugin-inline-import './material/shaders/map.frag.declaration.glsl' */\nvar mapFragDeclaration = \"#ifdef USE_MAP\\n uniform sampler2D map;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/map.frag.main.glsl' */\nvar mapFragMain = \"#ifdef USE_MAP\\n vec4 texelColor = texture2D(map, vUv);\\n // texelColor = mapTexelToLinear(texelColor);\\n diffuseColor *= texelColor;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.frag.declaration.glsl' */\nvar uvFragDeclaration = \"#if (defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ))\\n varying vec2 vUv;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.declaration.glsl' */\nvar uvVertDeclaration = \"#ifdef USE_UV\\n attribute vec2 uv;\\n\\t#ifdef UVS_VERTEX_ONLY\\n vec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.main.glsl' */\nvar uvVertMain = \"#ifdef USE_UV\\n vUv = (uvTransform * vec3(uv, 1)).xy;\\n#endif\";\nvar Renderer = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ShaderModuleService), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Renderer() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Renderer);\n\n this.container = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"shaderModule\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n this.inited = false;\n this.rendering = false;\n this.pendings = [];\n this.views = [];\n this.size = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Renderer, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var systems, config, _iterator, _step, system;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // 模块化处理\n this.shaderModule.registerBuiltinModules();\n this.shaderModule.registerModule('uv.vert.declaration', {\n vs: uvVertDeclaration\n });\n this.shaderModule.registerModule('uv.vert.main', {\n vs: uvVertMain\n });\n this.shaderModule.registerModule('uv.frag.declaration', {\n fs: uvFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.declaration', {\n fs: mapFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.main', {\n fs: mapFragMain\n });\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n config = this.configService.get();\n\n if (!config.canvas) {\n _context.next = 30;\n break;\n }\n\n _context.next = 11;\n return this.engine.init({\n canvas: config.canvas,\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n });\n\n case 11:\n _iterator = _createForOfIteratorHelper(systems);\n _context.prev = 12;\n\n _iterator.s();\n\n case 14:\n if ((_step = _iterator.n()).done) {\n _context.next = 21;\n break;\n }\n\n system = _step.value;\n\n if (!system.initialize) {\n _context.next = 19;\n break;\n }\n\n _context.next = 19;\n return system.initialize();\n\n case 19:\n _context.next = 14;\n break;\n\n case 21:\n _context.next = 26;\n break;\n\n case 23:\n _context.prev = 23;\n _context.t0 = _context[\"catch\"](12);\n\n _iterator.e(_context.t0);\n\n case 26:\n _context.prev = 26;\n\n _iterator.f();\n\n return _context.finish(26);\n\n case 29:\n this.inited = true;\n\n case 30:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[12, 23, 26, 29]]);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"render\",\n value: function () {\n var _render = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var systems,\n _len,\n views,\n _key,\n _iterator2,\n _step2,\n system,\n _args2 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!this.inited || this.rendering)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n if (this.pendings.length) {\n this.pendings.forEach(function (pending) {\n pending();\n });\n }\n\n this.rendering = true;\n this.engine.beginFrame();\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n\n for (_len = _args2.length, views = new Array(_len), _key = 0; _key < _len; _key++) {\n views[_key] = _args2[_key];\n }\n\n _iterator2 = _createForOfIteratorHelper(systems);\n _context2.prev = 8;\n\n _iterator2.s();\n\n case 10:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 17;\n break;\n }\n\n system = _step2.value;\n\n if (!system.execute) {\n _context2.next = 15;\n break;\n }\n\n _context2.next = 15;\n return system.execute(views);\n\n case 15:\n _context2.next = 10;\n break;\n\n case 17:\n _context2.next = 22;\n break;\n\n case 19:\n _context2.prev = 19;\n _context2.t0 = _context2[\"catch\"](8);\n\n _iterator2.e(_context2.t0);\n\n case 22:\n _context2.prev = 22;\n\n _iterator2.f();\n\n return _context2.finish(22);\n\n case 25:\n // 录制一遍绘制命令,后续直接播放\n // if (this.useRenderBundle) {\n // if (!this.renderBundleRecorded) {\n // this.engine.startRecordBundle();\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // this.renderBundle = this.engine.stopRecordBundle();\n // this.renderBundleRecorded = true;\n // }\n // this.engine.executeBundles([this.renderBundle]);\n // } else {\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // }\n this.engine.endFrame();\n this.rendering = false;\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 19, 22, 25]]);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"clear\",\n value: function clear(options) {\n var _this = this;\n\n if (this.inited) {\n this.engine.clear(options);\n } else {\n this.pendings.unshift(function () {\n _this.engine.clear(options);\n\n _this.pendings.shift();\n });\n }\n\n return this;\n } // public setScissor(\n // scissor: Partial<{\n // enable: boolean;\n // box: {\n // x: number;\n // y: number;\n // width: number;\n // height: number;\n // };\n // }>,\n // ) {\n // this.engine.setScissor(scissor);\n // return this;\n // }\n\n }, {\n key: \"setSize\",\n value: function setSize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n var canvas = this.engine.getCanvas();\n this.size = {\n width: width,\n height: height\n };\n canvas.width = width;\n canvas.height = height;\n return this;\n }\n }, {\n key: \"getSize\",\n value: function getSize() {\n return this.size;\n }\n }]);\n\n return Renderer;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"shaderModule\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvUmVuZGVyZXIuanM/M2QxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLHdEQUF3RCxRQUFRLG1FQUFtRSx3SEFBd0gsZ0JBQWdCLFdBQVcseUJBQXlCLFNBQVMsd0JBQXdCLDRCQUE0QixjQUFjLFNBQVMsOEJBQThCLEVBQUUscUJBQXFCLFVBQVUsRUFBRSxTQUFTLEVBQUUsOEpBQThKLEVBQUUsa0RBQWtELFNBQVMsa0JBQWtCLDJCQUEyQixFQUFFLG1CQUFtQixzQkFBc0IsOEJBQThCLGFBQWEsRUFBRSxzQkFBc0IsZUFBZSxXQUFXLEVBQUUsbUJBQW1CLE1BQU0seURBQXlELEVBQUUsVUFBVSx1QkFBdUIsRUFBRSxFQUFFLEdBQUc7O0FBRTc5QixpREFBaUQsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRCxrSEFBa0g7O0FBRTlaLHNDQUFzQyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxrQkFBa0IsRUFBRSxhQUFhOztBQUVwSTs7QUFFZTtBQUNqQjs7QUFFL0M7QUFDQSxrRUFBa0U7O0FBRWxFO0FBQ0EsMkVBQTJFLGlEQUFpRCwrQkFBK0I7O0FBRTNKO0FBQ0EscUdBQXFHOztBQUVyRztBQUNBLDREQUE0RCx5Q0FBeUMsZ0NBQWdDLHVDQUF1Qzs7QUFFNUs7QUFDQSx3RUFBd0U7QUFDakUsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVSx3QkFBd0Isd0RBQU0sQ0FBQyw4REFBVSwrQkFBK0Isd0RBQU0sQ0FBQyw4REFBVTtBQUM5SjtBQUNBLElBQUksNEVBQWU7O0FBRW5COztBQUVBLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixnREFBZ0QsOERBQVU7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDBFQUE2QjtBQUNoRTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLG9CQUFvQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBO0FBQ0EsZ0RBQWdELDhEQUFVOztBQUUxRCw2RUFBNkUsYUFBYTtBQUMxRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9SZW5kZXJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJzsgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXN1Ym1vZHVsZS1pbXBvcnRzXG5cbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvbWFwLmZyYWcuZGVjbGFyYXRpb24uZ2xzbCcgKi9cbnZhciBtYXBGcmFnRGVjbGFyYXRpb24gPSBcIiNpZmRlZiBVU0VfTUFQXFxuICB1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvbWFwLmZyYWcubWFpbi5nbHNsJyAqL1xudmFyIG1hcEZyYWdNYWluID0gXCIjaWZkZWYgVVNFX01BUFxcbiAgdmVjNCB0ZXhlbENvbG9yID0gdGV4dHVyZTJEKG1hcCwgdlV2KTtcXG4gIC8vIHRleGVsQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKHRleGVsQ29sb3IpO1xcbiAgZGlmZnVzZUNvbG9yICo9IHRleGVsQ29sb3I7XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvdXYuZnJhZy5kZWNsYXJhdGlvbi5nbHNsJyAqL1xudmFyIHV2RnJhZ0RlY2xhcmF0aW9uID0gXCIjaWYgKGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkpXFxuICB2YXJ5aW5nIHZlYzIgdlV2O1xcbiNlbmRpZlwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9tYXRlcmlhbC9zaGFkZXJzL3V2LnZlcnQuZGVjbGFyYXRpb24uZ2xzbCcgKi9cbnZhciB1dlZlcnREZWNsYXJhdGlvbiA9IFwiI2lmZGVmIFVTRV9VVlxcbiAgYXR0cmlidXRlIHZlYzIgdXY7XFxuXFx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxcbiAgICB2ZWMyIHZVdjtcXG5cXHQjZWxzZVxcblxcdFxcdHZhcnlpbmcgdmVjMiB2VXY7XFxuXFx0I2VuZGlmXFxuXFx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xcbiNlbmRpZlwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9tYXRlcmlhbC9zaGFkZXJzL3V2LnZlcnQubWFpbi5nbHNsJyAqL1xudmFyIHV2VmVydE1haW4gPSBcIiNpZmRlZiBVU0VfVVZcXG4gIHZVdiA9ICh1dlRyYW5zZm9ybSAqIHZlYzModXYsIDEpKS54eTtcXG4jZW5kaWZcIjtcbmV4cG9ydCB2YXIgUmVuZGVyZXIgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVuZGVyZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlbmRlcmVyKTtcblxuICAgIHRoaXMuY29udGFpbmVyID0gdm9pZCAwO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJzaGFkZXJNb2R1bGVcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY29uZmlnU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgdGhpcy5pbml0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcmluZyA9IGZhbHNlO1xuICAgIHRoaXMucGVuZGluZ3MgPSBbXTtcbiAgICB0aGlzLnZpZXdzID0gW107XG4gICAgdGhpcy5zaXplID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlbmRlcmVyLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBzeXN0ZW1zLCBjb25maWcsIF9pdGVyYXRvciwgX3N0ZXAsIHN5c3RlbTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIC8vIOaooeWdl+WMluWkhOeQhlxuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyQnVpbHRpbk1vZHVsZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYWRlck1vZHVsZS5yZWdpc3Rlck1vZHVsZSgndXYudmVydC5kZWNsYXJhdGlvbicsIHtcbiAgICAgICAgICAgICAgICAgIHZzOiB1dlZlcnREZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCd1di52ZXJ0Lm1haW4nLCB7XG4gICAgICAgICAgICAgICAgICB2czogdXZWZXJ0TWFpblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCd1di5mcmFnLmRlY2xhcmF0aW9uJywge1xuICAgICAgICAgICAgICAgICAgZnM6IHV2RnJhZ0RlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ21hcC5mcmFnLmRlY2xhcmF0aW9uJywge1xuICAgICAgICAgICAgICAgICAgZnM6IG1hcEZyYWdEZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCdtYXAuZnJhZy5tYWluJywge1xuICAgICAgICAgICAgICAgICAgZnM6IG1hcEZyYWdNYWluXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3lzdGVtcyA9IHRoaXMuY29udGFpbmVyLmdldEFsbChJREVOVElGSUVSLlN5c3RlbXMpO1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXQoKTtcblxuICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmNhbnZhcykge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDMwO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5pbml0KHtcbiAgICAgICAgICAgICAgICAgIGNhbnZhczogY29uZmlnLmNhbnZhcyxcbiAgICAgICAgICAgICAgICAgIHN3YXBDaGFpbkZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgICAgICAgICAgIGFudGlhbGlhc2luZzogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHN5c3RlbXMpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMjtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5zKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICBpZiAoKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDIxO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3lzdGVtID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN5c3RlbS5pbml0aWFsaXplKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5c3RlbS5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMjM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFtcImNhdGNoXCJdKDEyKTtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKF9jb250ZXh0LnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyNjtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDI2KTtcblxuICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjYXNlIDMwOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMsIFtbMTIsIDIzLCAyNiwgMjldXSk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZW5kZXIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHtcbiAgICAgICAgdmFyIHN5c3RlbXMsXG4gICAgICAgICAgICBfbGVuLFxuICAgICAgICAgICAgdmlld3MsXG4gICAgICAgICAgICBfa2V5LFxuICAgICAgICAgICAgX2l0ZXJhdG9yMixcbiAgICAgICAgICAgIF9zdGVwMixcbiAgICAgICAgICAgIHN5c3RlbSxcbiAgICAgICAgICAgIF9hcmdzMiA9IGFyZ3VtZW50cztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpZiAoISghdGhpcy5pbml0ZWQgfHwgdGhpcy5yZW5kZXJpbmcpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdzLmZvckVhY2goZnVuY3Rpb24gKHBlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZygpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmJlZ2luRnJhbWUoKTtcbiAgICAgICAgICAgICAgICBzeXN0ZW1zID0gdGhpcy5jb250YWluZXIuZ2V0QWxsKElERU5USUZJRVIuU3lzdGVtcyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKF9sZW4gPSBfYXJnczIubGVuZ3RoLCB2aWV3cyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgICAgICAgIHZpZXdzW19rZXldID0gX2FyZ3MyW19rZXldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihzeXN0ZW1zKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDg7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTc7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzeXN0ZW0gPSBfc3RlcDIudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN5c3RlbS5leGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3lzdGVtLmV4ZWN1dGUodmlld3MpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE5O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MltcImNhdGNoXCJdKDgpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKF9jb250ZXh0Mi50MCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgyMik7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgICAgICAvLyDlvZXliLbkuIDpgY3nu5jliLblkb3ku6TvvIzlkI7nu63nm7TmjqXmkq3mlL5cbiAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy51c2VSZW5kZXJCdW5kbGUpIHtcbiAgICAgICAgICAgICAgICAvLyAgIGlmICghdGhpcy5yZW5kZXJCdW5kbGVSZWNvcmRlZCkge1xuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVuZ2luZS5zdGFydFJlY29yZEJ1bmRsZSgpO1xuICAgICAgICAgICAgICAgIC8vICAgICBpZiAodGhpcy5vblVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vICAgICAgIGF3YWl0IHRoaXMub25VcGRhdGUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucmVuZGVyQnVuZGxlID0gdGhpcy5lbmdpbmUuc3RvcFJlY29yZEJ1bmRsZSgpO1xuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJlbmRlckJ1bmRsZVJlY29yZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuZW5naW5lLmV4ZWN1dGVCdW5kbGVzKFt0aGlzLnJlbmRlckJ1bmRsZV0pO1xuICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5vblVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vICAgICBhd2FpdCB0aGlzLm9uVXBkYXRlKHRoaXMuZW5naW5lKTtcbiAgICAgICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuZW5kRnJhbWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzLCBbWzgsIDE5LCAyMiwgMjVdXSk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIF9yZW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlbmRlcjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJjbGVhclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhcihvcHRpb25zKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5pbml0ZWQpIHtcbiAgICAgICAgdGhpcy5lbmdpbmUuY2xlYXIob3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBlbmRpbmdzLnVuc2hpZnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmVuZ2luZS5jbGVhcihvcHRpb25zKTtcblxuICAgICAgICAgIF90aGlzLnBlbmRpbmdzLnNoaWZ0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IC8vIHB1YmxpYyBzZXRTY2lzc29yKFxuICAgIC8vICAgc2Npc3NvcjogUGFydGlhbDx7XG4gICAgLy8gICAgIGVuYWJsZTogYm9vbGVhbjtcbiAgICAvLyAgICAgYm94OiB7XG4gICAgLy8gICAgICAgeDogbnVtYmVyO1xuICAgIC8vICAgICAgIHk6IG51bWJlcjtcbiAgICAvLyAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgIC8vICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIC8vICAgICB9O1xuICAgIC8vICAgfT4sXG4gICAgLy8gKSB7XG4gICAgLy8gICB0aGlzLmVuZ2luZS5zZXRTY2lzc29yKHNjaXNzb3IpO1xuICAgIC8vICAgcmV0dXJuIHRoaXM7XG4gICAgLy8gfVxuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0U2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB2YXIgY2FudmFzID0gdGhpcy5lbmdpbmUuZ2V0Q2FudmFzKCk7XG4gICAgICB0aGlzLnNpemUgPSB7XG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH07XG4gICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyZXI7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlcmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/Renderer.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/Scene.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/Scene.js ***!
\*************************************************/
/*! exports provided: Scene */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scene\", function() { return Scene; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar Scene = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function Scene() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Scene);\n\n this.entities = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Scene, [{\n key: \"getEntities\",\n value: function getEntities() {\n return this.entities;\n }\n }, {\n key: \"addRenderable\",\n value: function addRenderable(renderable) {\n this.addEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"removeRenderable\",\n value: function removeRenderable(renderable) {\n this.removeEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"addLight\",\n value: function addLight() {}\n }, {\n key: \"addEntity\",\n value: function addEntity(entity) {\n if (this.entities.indexOf(entity) === -1) {\n this.entities.push(entity);\n }\n\n return this;\n }\n }, {\n key: \"removeEntity\",\n value: function removeEntity(entity) {\n var index = this.entities.indexOf(entity);\n this.entities.splice(index, 1);\n return this;\n }\n }]);\n\n return Scene;\n}(), _temp)) || _class);\n//# sourceMappingURL=Scene.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvU2NlbmUuanM/ZGFmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEOztBQUV1QztBQUNoQyxvQkFBb0IsNERBQVU7QUFDckM7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9TY2VuZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcywgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBTY2VuZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNjZW5lKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTY2VuZSk7XG5cbiAgICB0aGlzLmVudGl0aWVzID0gW107XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2NlbmUsIFt7XG4gICAga2V5OiBcImdldEVudGl0aWVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0aWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXRpZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFJlbmRlcmFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUmVuZGVyYWJsZShyZW5kZXJhYmxlKSB7XG4gICAgICB0aGlzLmFkZEVudGl0eShyZW5kZXJhYmxlLmdldEVudGl0eSgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW1vdmVSZW5kZXJhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZVJlbmRlcmFibGUocmVuZGVyYWJsZSkge1xuICAgICAgdGhpcy5yZW1vdmVFbnRpdHkocmVuZGVyYWJsZS5nZXRFbnRpdHkoKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkTGlnaHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkTGlnaHQoKSB7fVxuICB9LCB7XG4gICAga2V5OiBcImFkZEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRFbnRpdHkoZW50aXR5KSB7XG4gICAgICBpZiAodGhpcy5lbnRpdGllcy5pbmRleE9mKGVudGl0eSkgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaChlbnRpdHkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlRW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUVudGl0eShlbnRpdHkpIHtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuZW50aXRpZXMuaW5kZXhPZihlbnRpdHkpO1xuICAgICAgdGhpcy5lbnRpdGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFNjZW5lO1xufSgpLCBfdGVtcCkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TY2VuZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/Scene.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/View.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/View.js ***!
\************************************************/
/*! exports provided: View */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return View; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _temp;\n\n\n\nvar View = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].RendererSystem), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function View() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, View);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"rendererSystem\", _descriptor, this);\n\n this.camera = void 0;\n this.scene = void 0;\n this.viewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.clearColor = [1, 1, 1, 1];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(View, [{\n key: \"getCamera\",\n value: function getCamera() {\n return this.camera;\n }\n }, {\n key: \"getScene\",\n value: function getScene() {\n return this.scene;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n return this.viewport;\n }\n }, {\n key: \"getClearColor\",\n value: function getClearColor() {\n return this.clearColor;\n }\n }, {\n key: \"setCamera\",\n value: function setCamera(camera) {\n this.camera = camera;\n return this;\n }\n }, {\n key: \"setScene\",\n value: function setScene(scene) {\n this.scene = scene;\n return this;\n }\n }, {\n key: \"setViewport\",\n value: function setViewport(viewport) {\n this.viewport = viewport;\n return this;\n }\n }, {\n key: \"setClearColor\",\n value: function setClearColor(clearColor) {\n this.clearColor = clearColor;\n return this;\n }\n }, {\n key: \"pick\",\n value: function pick(position) {\n return this.rendererSystem.pick(position, this);\n }\n }]);\n\n return View;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"rendererSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=View.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvVmlldy5qcz8wZTkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVpRDtBQUNLO0FBQy9DLG1CQUFtQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsOERBQVUsbUJBQW1CLHVEQUFLLENBQUMsOERBQVU7QUFDcEc7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL1ZpZXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX3RlbXA7XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBWaWV3ID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWMzID0gbmFtZWQoSURFTlRJRklFUi5SZW5kZXJlclN5c3RlbSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBWaWV3KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWaWV3KTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVuZGVyZXJTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5jYW1lcmEgPSB2b2lkIDA7XG4gICAgdGhpcy5zY2VuZSA9IHZvaWQgMDtcbiAgICB0aGlzLnZpZXdwb3J0ID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdGhpcy5jbGVhckNvbG9yID0gWzEsIDEsIDEsIDFdO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpZXcsIFt7XG4gICAga2V5OiBcImdldENhbWVyYVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDYW1lcmEoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYW1lcmE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNjZW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjZW5lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NlbmU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZXdwb3J0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZXdwb3J0KCkge1xuICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENsZWFyQ29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q2xlYXJDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFyQ29sb3I7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENhbWVyYVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDYW1lcmEoY2FtZXJhKSB7XG4gICAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRTY2VuZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTY2VuZShzY2VuZSkge1xuICAgICAgdGhpcy5zY2VuZSA9IHNjZW5lO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFZpZXdwb3J0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZpZXdwb3J0KHZpZXdwb3J0KSB7XG4gICAgICB0aGlzLnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q2xlYXJDb2xvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDbGVhckNvbG9yKGNsZWFyQ29sb3IpIHtcbiAgICAgIHRoaXMuY2xlYXJDb2xvciA9IGNsZWFyQ29sb3I7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGlja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwaWNrKHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJlclN5c3RlbS5waWNrKHBvc2l0aW9uLCB0aGlzKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVmlldztcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlbmRlcmVyU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Vmlldy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/View.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/World.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/World.js ***!
\*************************************************/
/*! exports provided: World */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return World; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-engine */ \"./node_modules/@antv/g-webgpu-engine/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./geometry */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _geometry_Box__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./geometry/Box */ \"./node_modules/@antv/g-webgpu/es/geometry/Box.js\");\n/* harmony import */ var _geometry_Merged__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./geometry/Merged */ \"./node_modules/@antv/g-webgpu/es/geometry/Merged.js\");\n/* harmony import */ var _geometry_Plane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./geometry/Plane */ \"./node_modules/@antv/g-webgpu/es/geometry/Plane.js\");\n/* harmony import */ var _geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./geometry/Sphere */ \"./node_modules/@antv/g-webgpu/es/geometry/Sphere.js\");\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/@antv/g-webgpu/es/Kernel.js\");\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./material */ \"./node_modules/@antv/g-webgpu/es/material/index.js\");\n/* harmony import */ var _material_basic__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./material/basic */ \"./node_modules/@antv/g-webgpu/es/material/basic/index.js\");\n/* harmony import */ var _renderable_grid__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./renderable/grid */ \"./node_modules/@antv/g-webgpu/es/renderable/grid/index.js\");\n/* harmony import */ var _renderable_line__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./renderable/line */ \"./node_modules/@antv/g-webgpu/es/renderable/line/index.js\");\n/* harmony import */ var _renderable_point__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./renderable/point */ \"./node_modules/@antv/g-webgpu/es/renderable/point/index.js\");\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony import */ var _Renderer__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./Renderer */ \"./node_modules/@antv/g-webgpu/es/Renderer.js\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Scene */ \"./node_modules/@antv/g-webgpu/es/Scene.js\");\n/* harmony import */ var _texture_Cache__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./texture/Cache */ \"./node_modules/@antv/g-webgpu/es/texture/Cache.js\");\n/* harmony import */ var _texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./texture/Texture2D */ \"./node_modules/@antv/g-webgpu/es/texture/Texture2D.js\");\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _View__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./View */ \"./node_modules/@antv/g-webgpu/es/View.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n// tslint:disable-next-line:no-reference\n/// \n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar World = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function World() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, World);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor, this);\n\n this.container = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(World, [{\n key: \"getEngine\",\n value: function () {\n var _getEngine = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var engine, _this$configService$g, canvas, engineOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n _this$configService$g = this.configService.get(), canvas = _this$configService$g.canvas, engineOptions = _this$configService$g.engineOptions;\n _context.next = 4;\n return engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_29__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n\n case 4:\n return _context.abrupt(\"return\", engine);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getEngine() {\n return _getEngine.apply(this, arguments);\n }\n\n return getEngine;\n }()\n /**\n * get transform component\n * @param entity\n */\n\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].TransformComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.configService.set(config);\n }\n }, {\n key: \"setContainer\",\n value: function setContainer(container) {\n this.container = container;\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n return this.container;\n }\n }, {\n key: \"createEntity\",\n value: function createEntity() {\n return Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n }\n }, {\n key: \"createScene\",\n value: function createScene() {\n return this.container.get(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]);\n }\n }, {\n key: \"createCamera\",\n value: function createCamera() {\n return this.container.get(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]);\n }\n }, {\n key: \"createView\",\n value: function createView() {\n return this.container.get(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]);\n } // public createLight(type: string,) {\n // return this.container.getNamed(IDENTIFIER.Light, type)\n // }\n\n }, {\n key: \"createRenderable\",\n value: function createRenderable(type, config) {\n var renderable = type ? this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable, type) : this.container.get(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n renderable.setConfig(config || {});\n renderable.setEntity(entity);\n return renderable;\n }\n }, {\n key: \"createGeometry\",\n value: function createGeometry(type, config) {\n var geometry = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n geometry.setConfig(config || {});\n geometry.setEntity(entity);\n return geometry.getComponent();\n }\n }, {\n key: \"createMaterial\",\n value: function createMaterial(type, config) {\n var material = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n material.setConfig(config || {});\n material.setEntity(entity, type);\n return material.getComponent();\n }\n }, {\n key: \"createTexture2D\",\n value: function createTexture2D(config) {\n var texture = this.container.get(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]);\n texture.setConfig(config);\n return texture;\n }\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createBufferGeometry(params);\n }\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createInstancedBufferGeometry(params);\n }\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var materialSystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MaterialSystem);\n return materialSystem.createShaderMaterial(params);\n }\n }, {\n key: \"createKernel\",\n value: function createKernel(precompiledBundle) {\n var kernel = this.container.get(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]);\n\n if (typeof precompiledBundle === 'string') {\n kernel.setBundle(JSON.parse(precompiledBundle));\n } else {\n kernel.setBundle(precompiledBundle);\n }\n\n kernel.init();\n return kernel;\n }\n }, {\n key: \"createRenderer\",\n value: function createRenderer() {\n var renderer = this.container.get(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]);\n renderer.container = this.container;\n renderer.init();\n return renderer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems);\n systems.forEach(function (system) {\n if (system.tearDown) {\n system.tearDown();\n }\n });\n var engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n engine.destroy();\n var interactor = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].InteractorService);\n interactor.destroy();\n }\n }], [{\n key: \"create\",\n value: function create() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var worldContainer = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createWorldContainer\"])(); // bind render engine, fallback to WebGL\n\n var engineClazz = !navigator.gpu ? _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGLEngine\"] : _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGPUEngine\"];\n\n if (!worldContainer.isBound(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine)) {\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine) // @ts-ignore\n .to(engineClazz).inSingletonScope();\n }\n\n worldContainer.bind(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]).toSelf();\n worldContainer.bind(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]).toSelf();\n worldContainer.bind(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]).toSelf();\n worldContainer.bind(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]).toSelf();\n worldContainer.bind(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]).toSelf();\n worldContainer.bind(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]).toSelf();\n worldContainer.bind(World).toSelf();\n worldContainer.bind(_texture_Cache__WEBPACK_IMPORTED_MODULE_27__[\"TextureCache\"]).toSelf();\n worldContainer.bind(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]).toSelf(); // bind geometries\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Box__WEBPACK_IMPORTED_MODULE_14__[\"Box\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].BOX);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__[\"Sphere\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].SPHERE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Plane__WEBPACK_IMPORTED_MODULE_16__[\"Plane\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].PLANE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Merged__WEBPACK_IMPORTED_MODULE_15__[\"Merged\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].MERGED); // bind materials\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material).to(_material_basic__WEBPACK_IMPORTED_MODULE_20__[\"Basic\"]).whenTargetNamed(_material__WEBPACK_IMPORTED_MODULE_19__[\"Material\"].BASIC); // bind renderables\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_point__WEBPACK_IMPORTED_MODULE_23__[\"Point\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].POINT);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_line__WEBPACK_IMPORTED_MODULE_22__[\"Line\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].LINE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_grid__WEBPACK_IMPORTED_MODULE_21__[\"Grid\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].GRID);\n var world = worldContainer.get(World);\n world.setContainer(worldContainer);\n world.setConfig(config);\n return world;\n }\n }]);\n\n return World;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=World.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvV29ybGQuanM/MTgxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNPO0FBQ0k7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQjtBQUNBO0FBQ3NHO0FBQ3BDOztBQUVGO0FBQ2pCO0FBQ047QUFDSDtBQUNEO0FBQ007QUFDRjtBQUNFO0FBQ1Q7QUFDSTtBQUNHO0FBQ0E7QUFDQTtBQUNFO0FBQ1U7QUFDZjtBQUNOO0FBQ2U7QUFDQztBQUNGO0FBQ2hCO0FBQ3ZCLG9CQUFvQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVU7QUFDbEU7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHVCQUF1Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDMUU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLDhEQUFVO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxtRUFBWTtBQUNoRCxtQ0FBbUMsMkVBQTZCO0FBQ2hFO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsOERBQVU7QUFDakQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLDhEQUFVO0FBQ2pEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsd0VBQWE7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdDQUFnQyw2Q0FBSztBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFNO0FBQ3RDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxnQ0FBZ0MsMkNBQUk7QUFDcEMsS0FBSztBQUNMO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxzREFBc0QsOERBQVUsd0NBQXdDLGtFQUFVOztBQUVsSCxtQkFBbUIsd0VBQWE7O0FBRWhDLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDZDQUE2Qyw4REFBVTs7QUFFdkQsbUJBQW1CLHdFQUFhOztBQUVoQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2Q0FBNkMsOERBQVU7O0FBRXZELG1CQUFtQix3RUFBYTs7QUFFaEMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLDZEQUFTO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELDhEQUFVLFVBQVUsOERBQVU7QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELDhEQUFVLFVBQVUsOERBQVU7QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELDhEQUFVLFVBQVUsOERBQVU7QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0NBQXNDLCtDQUFNOztBQUU1QztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3Q0FBd0MsbURBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDBDQUEwQyw4REFBVTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQ0FBc0MsOERBQVU7QUFDaEQ7QUFDQSwwQ0FBMEMsOERBQVU7QUFDcEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0ZBQW9CLEdBQUc7O0FBRWxELHlDQUF5QyxpRUFBVyxHQUFHLGtFQUFZOztBQUVuRSxrQ0FBa0MsOERBQVU7QUFDNUMsNEJBQTRCLDhEQUFVO0FBQ3RDO0FBQ0E7O0FBRUEsMEJBQTBCLG1EQUFRO0FBQ2xDLDBCQUEwQiwrQ0FBTTtBQUNoQywwQkFBMEIsa0VBQVU7QUFDcEMsMEJBQTBCLDJDQUFJO0FBQzlCLDBCQUEwQixzREFBTTtBQUNoQywwQkFBMEIsNkNBQUs7QUFDL0I7QUFDQSwwQkFBMEIsNERBQVk7QUFDdEMsMEJBQTBCLDZEQUFTLFdBQVc7O0FBRTlDLDBCQUEwQiw4REFBVSxjQUFjLGtEQUFHLGtCQUFrQixtREFBUTtBQUMvRSwwQkFBMEIsOERBQVUsY0FBYyx3REFBTSxrQkFBa0IsbURBQVE7QUFDbEYsMEJBQTBCLDhEQUFVLGNBQWMsc0RBQUssa0JBQWtCLG1EQUFRO0FBQ2pGLDBCQUEwQiw4REFBVSxjQUFjLHdEQUFNLGtCQUFrQixtREFBUSxTQUFTOztBQUUzRiwwQkFBMEIsOERBQVUsY0FBYyxzREFBSyxrQkFBa0IsbURBQVEsUUFBUTs7QUFFekYsMEJBQTBCLDhEQUFVLGdCQUFnQix3REFBSyxrQkFBa0Isa0VBQVU7QUFDckYsMEJBQTBCLDhEQUFVLGdCQUFnQixzREFBSSxrQkFBa0Isa0VBQVU7QUFDcEYsMEJBQTBCLDhEQUFVLGdCQUFnQixzREFBSSxrQkFBa0Isa0VBQVU7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvV29ybGQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWZlcmVuY2Vcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2luZGV4LmQudHNcIiAvPlxuaW1wb3J0IHsgY3JlYXRlRW50aXR5IGFzIF9jcmVhdGVFbnRpdHksIGNyZWF0ZVdvcmxkQ29udGFpbmVyLCBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBXZWJHTEVuZ2luZSwgV2ViR1BVRW5naW5lIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtZW5naW5lJzsgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXN1Ym1vZHVsZS1pbXBvcnRzXG5cbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBDYW1lcmEgfSBmcm9tICcuL2NhbWVyYS9DYW1lcmEnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IEJveCB9IGZyb20gJy4vZ2VvbWV0cnkvQm94JztcbmltcG9ydCB7IE1lcmdlZCB9IGZyb20gJy4vZ2VvbWV0cnkvTWVyZ2VkJztcbmltcG9ydCB7IFBsYW5lIH0gZnJvbSAnLi9nZW9tZXRyeS9QbGFuZSc7XG5pbXBvcnQgeyBTcGhlcmUgfSBmcm9tICcuL2dlb21ldHJ5L1NwaGVyZSc7XG5pbXBvcnQgeyBLZXJuZWwgfSBmcm9tICcuL0tlcm5lbCc7XG5pbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJy4vbWF0ZXJpYWwnO1xuaW1wb3J0IHsgQmFzaWMgfSBmcm9tICcuL21hdGVyaWFsL2Jhc2ljJztcbmltcG9ydCB7IEdyaWQgfSBmcm9tICcuL3JlbmRlcmFibGUvZ3JpZCc7XG5pbXBvcnQgeyBMaW5lIH0gZnJvbSAnLi9yZW5kZXJhYmxlL2xpbmUnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuL3JlbmRlcmFibGUvcG9pbnQnO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4vcmVuZGVyYWJsZS9SZW5kZXJhYmxlJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnLi9SZW5kZXJlcic7XG5pbXBvcnQgeyBTY2VuZSB9IGZyb20gJy4vU2NlbmUnO1xuaW1wb3J0IHsgVGV4dHVyZUNhY2hlIH0gZnJvbSAnLi90ZXh0dXJlL0NhY2hlJztcbmltcG9ydCB7IFRleHR1cmUyRCB9IGZyb20gJy4vdGV4dHVyZS9UZXh0dXJlMkQnO1xuaW1wb3J0IHsgY3JlYXRlQ2FudmFzIH0gZnJvbSAnLi91dGlscy9jYW52YXMnO1xuaW1wb3J0IHsgVmlldyB9IGZyb20gJy4vVmlldyc7XG5leHBvcnQgdmFyIFdvcmxkID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuQ29uZmlnU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXb3JsZCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV29ybGQpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjb25maWdTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIHRoaXMuY29udGFpbmVyID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdvcmxkLCBbe1xuICAgIGtleTogXCJnZXRFbmdpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9nZXRFbmdpbmUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgZW5naW5lLCBfdGhpcyRjb25maWdTZXJ2aWNlJGcsIGNhbnZhcywgZW5naW5lT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGVuZ2luZSA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLlJlbmRlckVuZ2luZSk7XG4gICAgICAgICAgICAgICAgX3RoaXMkY29uZmlnU2VydmljZSRnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldCgpLCBjYW52YXMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuY2FudmFzLCBlbmdpbmVPcHRpb25zID0gX3RoaXMkY29uZmlnU2VydmljZSRnLmVuZ2luZU9wdGlvbnM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZS5pbml0KF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgICAgICAgY2FudmFzOiBjYW52YXMgfHwgY3JlYXRlQ2FudmFzKCksXG4gICAgICAgICAgICAgICAgICBzd2FwQ2hhaW5Gb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkJHUkE4VW5vcm0sXG4gICAgICAgICAgICAgICAgICBhbnRpYWxpYXNpbmc6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSwgZW5naW5lT3B0aW9ucykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGVuZ2luZSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBnZXRFbmdpbmUoKSB7XG4gICAgICAgIHJldHVybiBfZ2V0RW5naW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRFbmdpbmU7XG4gICAgfSgpXG4gICAgLyoqXG4gICAgICogZ2V0IHRyYW5zZm9ybSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZW50aXR5XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRUcmFuc2Zvcm1Db21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50KGVudGl0eSkge1xuICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzLmNvbnRhaW5lci5nZXQoSURFTlRJRklFUi5UcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyKTtcbiAgICAgIHJldHVybiBtYW5hZ2VyLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1lc2hDb21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TWVzaENvbXBvbmVudChlbnRpdHkpIHtcbiAgICAgIHZhciBtYW5hZ2VyID0gdGhpcy5jb250YWluZXIuZ2V0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpO1xuICAgICAgcmV0dXJuIG1hbmFnZXIuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZyhjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXQoY29uZmlnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29udGFpbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbnRhaW5lcihjb250YWluZXIpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb250YWluZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlRW50aXR5KCkge1xuICAgICAgcmV0dXJuIF9jcmVhdGVFbnRpdHkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlU2NlbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlU2NlbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0KFNjZW5lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQ2FtZXJhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUNhbWVyYSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXQoQ2FtZXJhKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVWaWV3KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldChWaWV3KTtcbiAgICB9IC8vIHB1YmxpYyBjcmVhdGVMaWdodCh0eXBlOiBzdHJpbmcsKSB7XG4gICAgLy8gICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5MaWdodCwgdHlwZSlcbiAgICAvLyB9XG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVSZW5kZXJhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlcmFibGUodHlwZSwgY29uZmlnKSB7XG4gICAgICB2YXIgcmVuZGVyYWJsZSA9IHR5cGUgPyB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLlJlbmRlcmFibGUsIHR5cGUpIDogdGhpcy5jb250YWluZXIuZ2V0KFJlbmRlcmFibGUpO1xuXG4gICAgICB2YXIgZW50aXR5ID0gX2NyZWF0ZUVudGl0eSgpO1xuXG4gICAgICByZW5kZXJhYmxlLnNldENvbmZpZyhjb25maWcgfHwge30pO1xuICAgICAgcmVuZGVyYWJsZS5zZXRFbnRpdHkoZW50aXR5KTtcbiAgICAgIHJldHVybiByZW5kZXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVHZW9tZXRyeSh0eXBlLCBjb25maWcpIHtcbiAgICAgIHZhciBnZW9tZXRyeSA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuR2VvbWV0cnksIHR5cGUpO1xuXG4gICAgICB2YXIgZW50aXR5ID0gX2NyZWF0ZUVudGl0eSgpO1xuXG4gICAgICBnZW9tZXRyeS5zZXRDb25maWcoY29uZmlnIHx8IHt9KTtcbiAgICAgIGdlb21ldHJ5LnNldEVudGl0eShlbnRpdHkpO1xuICAgICAgcmV0dXJuIGdlb21ldHJ5LmdldENvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVNYXRlcmlhbCh0eXBlLCBjb25maWcpIHtcbiAgICAgIHZhciBtYXRlcmlhbCA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWwsIHR5cGUpO1xuXG4gICAgICB2YXIgZW50aXR5ID0gX2NyZWF0ZUVudGl0eSgpO1xuXG4gICAgICBtYXRlcmlhbC5zZXRDb25maWcoY29uZmlnIHx8IHt9KTtcbiAgICAgIG1hdGVyaWFsLnNldEVudGl0eShlbnRpdHksIHR5cGUpO1xuICAgICAgcmV0dXJuIG1hdGVyaWFsLmdldENvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlMkRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlVGV4dHVyZTJEKGNvbmZpZykge1xuICAgICAgdmFyIHRleHR1cmUgPSB0aGlzLmNvbnRhaW5lci5nZXQoVGV4dHVyZTJEKTtcbiAgICAgIHRleHR1cmUuc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgICByZXR1cm4gdGV4dHVyZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyR2VvbWV0cnkocGFyYW1zKSB7XG4gICAgICB2YXIgZ2VvbWV0cnlTeXN0ZW0gPSB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLlN5c3RlbXMsIElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pO1xuICAgICAgcmV0dXJuIGdlb21ldHJ5U3lzdGVtLmNyZWF0ZUJ1ZmZlckdlb21ldHJ5KHBhcmFtcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KHBhcmFtcykge1xuICAgICAgdmFyIGdlb21ldHJ5U3lzdGVtID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5TeXN0ZW1zLCBJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKTtcbiAgICAgIHJldHVybiBnZW9tZXRyeVN5c3RlbS5jcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeShwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTaGFkZXJNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpIHtcbiAgICAgIHZhciBtYXRlcmlhbFN5c3RlbSA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuU3lzdGVtcywgSURFTlRJRklFUi5NYXRlcmlhbFN5c3RlbSk7XG4gICAgICByZXR1cm4gbWF0ZXJpYWxTeXN0ZW0uY3JlYXRlU2hhZGVyTWF0ZXJpYWwocGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlS2VybmVsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUtlcm5lbChwcmVjb21waWxlZEJ1bmRsZSkge1xuICAgICAgdmFyIGtlcm5lbCA9IHRoaXMuY29udGFpbmVyLmdldChLZXJuZWwpO1xuXG4gICAgICBpZiAodHlwZW9mIHByZWNvbXBpbGVkQnVuZGxlID09PSAnc3RyaW5nJykge1xuICAgICAgICBrZXJuZWwuc2V0QnVuZGxlKEpTT04ucGFyc2UocHJlY29tcGlsZWRCdW5kbGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtlcm5lbC5zZXRCdW5kbGUocHJlY29tcGlsZWRCdW5kbGUpO1xuICAgICAgfVxuXG4gICAgICBrZXJuZWwuaW5pdCgpO1xuICAgICAgcmV0dXJuIGtlcm5lbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVuZGVyZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLmNvbnRhaW5lci5nZXQoUmVuZGVyZXIpO1xuICAgICAgcmVuZGVyZXIuY29udGFpbmVyID0gdGhpcy5jb250YWluZXI7XG4gICAgICByZW5kZXJlci5pbml0KCk7XG4gICAgICByZXR1cm4gcmVuZGVyZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHZhciBzeXN0ZW1zID0gdGhpcy5jb250YWluZXIuZ2V0QWxsKElERU5USUZJRVIuU3lzdGVtcyk7XG4gICAgICBzeXN0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHN5c3RlbSkge1xuICAgICAgICBpZiAoc3lzdGVtLnRlYXJEb3duKSB7XG4gICAgICAgICAgc3lzdGVtLnRlYXJEb3duKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGVuZ2luZSA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLlJlbmRlckVuZ2luZSk7XG4gICAgICBlbmdpbmUuZGVzdHJveSgpO1xuICAgICAgdmFyIGludGVyYWN0b3IgPSB0aGlzLmNvbnRhaW5lci5nZXQoSURFTlRJRklFUi5JbnRlcmFjdG9yU2VydmljZSk7XG4gICAgICBpbnRlcmFjdG9yLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJjcmVhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlKCkge1xuICAgICAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICB2YXIgd29ybGRDb250YWluZXIgPSBjcmVhdGVXb3JsZENvbnRhaW5lcigpOyAvLyBiaW5kIHJlbmRlciBlbmdpbmUsIGZhbGxiYWNrIHRvIFdlYkdMXG5cbiAgICAgIHZhciBlbmdpbmVDbGF6eiA9ICFuYXZpZ2F0b3IuZ3B1ID8gV2ViR0xFbmdpbmUgOiBXZWJHUFVFbmdpbmU7XG5cbiAgICAgIGlmICghd29ybGRDb250YWluZXIuaXNCb3VuZChJREVOVElGSUVSLlJlbmRlckVuZ2luZSkpIHtcbiAgICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlckVuZ2luZSkgLy8gQHRzLWlnbm9yZVxuICAgICAgICAudG8oZW5naW5lQ2xhenopLmluU2luZ2xldG9uU2NvcGUoKTtcbiAgICAgIH1cblxuICAgICAgd29ybGRDb250YWluZXIuYmluZChSZW5kZXJlcikudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKEtlcm5lbCkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFJlbmRlcmFibGUpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChWaWV3KS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoQ2FtZXJhKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoU2NlbmUpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChXb3JsZCkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFRleHR1cmVDYWNoZSkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFRleHR1cmUyRCkudG9TZWxmKCk7IC8vIGJpbmQgZ2VvbWV0cmllc1xuXG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKEJveCkud2hlblRhcmdldE5hbWVkKEdlb21ldHJ5LkJPWCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKFNwaGVyZSkud2hlblRhcmdldE5hbWVkKEdlb21ldHJ5LlNQSEVSRSk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKFBsYW5lKS53aGVuVGFyZ2V0TmFtZWQoR2VvbWV0cnkuUExBTkUpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLkdlb21ldHJ5KS50byhNZXJnZWQpLndoZW5UYXJnZXROYW1lZChHZW9tZXRyeS5NRVJHRUQpOyAvLyBiaW5kIG1hdGVyaWFsc1xuXG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTWF0ZXJpYWwpLnRvKEJhc2ljKS53aGVuVGFyZ2V0TmFtZWQoTWF0ZXJpYWwuQkFTSUMpOyAvLyBiaW5kIHJlbmRlcmFibGVzXG5cbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5SZW5kZXJhYmxlKS50byhQb2ludCkud2hlblRhcmdldE5hbWVkKFJlbmRlcmFibGUuUE9JTlQpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlcmFibGUpLnRvKExpbmUpLndoZW5UYXJnZXROYW1lZChSZW5kZXJhYmxlLkxJTkUpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlcmFibGUpLnRvKEdyaWQpLndoZW5UYXJnZXROYW1lZChSZW5kZXJhYmxlLkdSSUQpO1xuICAgICAgdmFyIHdvcmxkID0gd29ybGRDb250YWluZXIuZ2V0KFdvcmxkKTtcbiAgICAgIHdvcmxkLnNldENvbnRhaW5lcih3b3JsZENvbnRhaW5lcik7XG4gICAgICB3b3JsZC5zZXRDb25maWcoY29uZmlnKTtcbiAgICAgIHJldHVybiB3b3JsZDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV29ybGQ7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJjb25maWdTZXJ2aWNlXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Xb3JsZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/World.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/camera/Camera.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/camera/Camera.js ***!
\*********************************************************/
/*! exports provided: CAMERA_TYPE, CAMERA_TRACKING_MODE, CAMERA_PROJECTION_MODE, Camera */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TYPE\", function() { return CAMERA_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TRACKING_MODE\", function() { return CAMERA_TRACKING_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_PROJECTION_MODE\", function() { return CAMERA_PROJECTION_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return Camera; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/math */ \"./node_modules/@antv/g-webgpu/es/utils/math.js\");\n/* harmony import */ var _Landmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Landmark */ \"./node_modules/@antv/g-webgpu/es/camera/Landmark.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\n\n\n\nvar CAMERA_TYPE;\n\n(function (CAMERA_TYPE) {\n CAMERA_TYPE[\"ORBITING\"] = \"ORBITING\";\n CAMERA_TYPE[\"EXPLORING\"] = \"EXPLORING\";\n CAMERA_TYPE[\"TRACKING\"] = \"TRACKING\";\n})(CAMERA_TYPE || (CAMERA_TYPE = {}));\n\nvar CAMERA_TRACKING_MODE;\n\n(function (CAMERA_TRACKING_MODE) {\n CAMERA_TRACKING_MODE[\"DEFAULT\"] = \"DEFAULT\";\n CAMERA_TRACKING_MODE[\"ROTATIONAL\"] = \"ROTATIONAL\";\n CAMERA_TRACKING_MODE[\"TRANSLATIONAL\"] = \"TRANSLATIONAL\";\n CAMERA_TRACKING_MODE[\"CINEMATIC\"] = \"CINEMATIC\";\n})(CAMERA_TRACKING_MODE || (CAMERA_TRACKING_MODE = {}));\n\nvar CAMERA_PROJECTION_MODE;\n\n(function (CAMERA_PROJECTION_MODE) {\n CAMERA_PROJECTION_MODE[\"ORTHOGRAPHIC\"] = \"ORTHOGRAPHIC\";\n CAMERA_PROJECTION_MODE[\"PERSPECTIVE\"] = \"PERSPECTIVE\";\n})(CAMERA_PROJECTION_MODE || (CAMERA_PROJECTION_MODE = {}));\n\nvar DEG_2_RAD = Math.PI / 180;\nvar RAD_2_DEG = 180 / Math.PI;\n/**\n * 参考「WebGL Insights - 23.Designing Cameras for WebGL Applications」,基于 Responsible Camera 思路设计\n * 保存相机参数,定义相机动作:\n * 1. dolly 沿 n 轴移动\n * 2. pan 沿 u v 轴移动\n * 3. rotate 以方位角旋转\n * 4. 移动到 Landmark,具有平滑的动画效果,其间禁止其他用户交互\n */\n\nvar Camera = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].InteractorService), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Camera() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Camera);\n\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 0, 0);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distance = 1;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.dollyingStep = 0;\n this.maxDistance = Infinity;\n this.minDistance = -Infinity;\n this.rotateWorld = false;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"interactor\", _descriptor, this);\n\n this.fov = 30;\n this.near = 0.1;\n this.far = 10000;\n this.aspect = 1;\n this.left = void 0;\n this.rright = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.zoom = 1;\n this.perspective = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.view = void 0;\n this.following = undefined;\n this.type = CAMERA_TYPE.EXPLORING;\n this.trackingMode = CAMERA_TRACKING_MODE.DEFAULT;\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.frustum = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"Frustum\"]();\n this.landmarks = [];\n this.landmarkAnimationID = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Camera, [{\n key: \"clone\",\n value: function clone() {\n var camera = new Camera();\n camera.setType(this.type, undefined);\n camera.interactor = this.interactor;\n return camera;\n }\n }, {\n key: \"getProjectionMode\",\n value: function getProjectionMode() {\n return this.projectionMode;\n }\n }, {\n key: \"getPerspective\",\n value: function getPerspective() {\n return this.perspective;\n }\n }, {\n key: \"getFrustum\",\n value: function getFrustum() {\n return this.frustum;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"setType\",\n value: function setType(type, trackingMode) {\n this.type = type;\n\n if (this.type === CAMERA_TYPE.EXPLORING) {\n this.setWorldRotation(true);\n } else {\n this.setWorldRotation(false);\n }\n\n this._getAngles();\n\n if (this.type === CAMERA_TYPE.TRACKING && trackingMode !== undefined) {\n this.setTrackingMode(trackingMode);\n }\n\n return this;\n }\n }, {\n key: \"setProjectionMode\",\n value: function setProjectionMode(projectionMode) {\n this.projectionMode = projectionMode;\n return this;\n }\n }, {\n key: \"setTrackingMode\",\n value: function setTrackingMode(trackingMode) {\n if (this.type !== CAMERA_TYPE.TRACKING) {\n throw new Error('Impossible to set a tracking mode if the camera is not of tracking type');\n }\n\n this.trackingMode = trackingMode;\n return this;\n }\n /**\n * If flag is true, it reverses the azimuth and elevation angles.\n * Subsequent calls to rotate, setAzimuth, setElevation,\n * changeAzimuth or changeElevation will cause the inverted effect.\n * setRoll or changeRoll is not affected by this method.\n *\n * This inversion is useful when one wants to simulate that the world\n * is moving, instead of the camera.\n *\n * By default the camera angles are not reversed.\n * @param {Boolean} flag the boolean flag to reverse the angles.\n */\n\n }, {\n key: \"setWorldRotation\",\n value: function setWorldRotation(flag) {\n this.rotateWorld = flag;\n\n this._getAngles();\n }\n /**\n * 计算 MV 矩阵,为相机矩阵的逆矩阵\n */\n\n }, {\n key: \"getViewTransform\",\n value: function getViewTransform() {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.matrix);\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n return this.matrix;\n }\n /**\n * 设置相机矩阵\n */\n\n }, {\n key: \"setMatrix\",\n value: function setMatrix(matrix) {\n this.matrix = matrix;\n\n this._update();\n\n return this;\n }\n }, {\n key: \"setAspect\",\n value: function setAspect(aspect) {\n this.setPerspective(this.near, this.far, this.fov, aspect);\n return this;\n }\n /**\n * Sets an offset in a larger frustum, used in PixelPicking\n */\n\n }, {\n key: \"setViewOffset\",\n value: function setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n\n if (this.view === undefined) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"clearViewOffset\",\n value: function clearViewOffset() {\n if (this.view !== undefined) {\n this.view.enabled = false;\n }\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"setPerspective\",\n value: function setPerspective(near, far, fov, aspect) {\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.fov = fov;\n this.near = near;\n this.far = far;\n this.aspect = aspect;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].perspective(this.perspective, this.fov * DEG_2_RAD, this.aspect, this.near, this.far);\n return this;\n }\n }, {\n key: \"setOrthographic\",\n value: function setOrthographic(l, r, t, b, near, far) {\n this.projectionMode = CAMERA_PROJECTION_MODE.ORTHOGRAPHIC;\n this.rright = r;\n this.left = l;\n this.top = t;\n this.bottom = b;\n this.near = near;\n this.far = far;\n var dx = (this.rright - this.left) / (2 * this.zoom);\n var dy = (this.top - this.bottom) / (2 * this.zoom);\n var cx = (this.rright + this.left) / 2;\n var cy = (this.top + this.bottom) / 2;\n var left = cx - dx;\n var right = cx + dx;\n var top = cy + dy;\n var bottom = cy - dy;\n\n if (this.view !== undefined && this.view.enabled) {\n var scaleW = (this.rright - this.left) / this.view.fullWidth / this.zoom;\n var scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].ortho(this.perspective, left, right, top, bottom, near, far);\n return this;\n }\n /**\n * 设置相机位置\n */\n\n }, {\n key: \"setPosition\",\n value: function setPosition(x, y, z) {\n this._setPosition(x, y, z);\n\n this.setFocalPoint(this.focalPoint);\n return this;\n }\n /**\n * 设置视点位置\n */\n\n }, {\n key: \"setFocalPoint\",\n value: function setFocalPoint(x, y, z) {\n var up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.focalPoint = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n\n if (this.trackingMode === CAMERA_TRACKING_MODE.CINEMATIC) {\n var d = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n x = d[0];\n y = d[1];\n z = d[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(d);\n var el = Math.asin(y / r) * RAD_2_DEG;\n var az = 90 + Math.atan2(z, x) * RAD_2_DEG;\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateY(m, m, az * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateX(m, m, el * DEG_2_RAD);\n up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), [0, 1, 0], m);\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(this.matrix, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].lookAt(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.position, this.focalPoint, up));\n\n this._getAxes();\n\n this._getDistance();\n\n this._getAngles();\n\n return this;\n }\n /**\n * 固定当前视点,按指定距离放置相机\n */\n\n }, {\n key: \"setDistance\",\n value: function setDistance(d) {\n if (this.distance === d || d < 0) {\n return;\n }\n\n this.distance = d;\n\n if (this.distance < 0.0002) {\n this.distance = 0.0002;\n }\n\n this.dollyingStep = this.distance / 100;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n d = this.distance;\n var n = this.forward;\n var f = this.focalPoint;\n pos[0] = d * n[0] + f[0];\n pos[1] = d * n[1] + f[1];\n pos[2] = d * n[2] + f[2];\n\n this._setPosition(pos);\n\n return this;\n }\n }, {\n key: \"setMaxDistance\",\n value: function setMaxDistance(d) {\n this.maxDistance = d;\n return this;\n }\n }, {\n key: \"setMinDistance\",\n value: function setMinDistance(d) {\n this.minDistance = d;\n return this;\n }\n /**\n * Changes the initial azimuth of the camera\n */\n\n }, {\n key: \"changeAzimuth\",\n value: function changeAzimuth(az) {\n this.setAzimuth(this.azimuth + az);\n return this;\n }\n /**\n * Changes the initial elevation of the camera\n */\n\n }, {\n key: \"changeElevation\",\n value: function changeElevation(el) {\n this.setElevation(this.elevation + el);\n return this;\n }\n /**\n * Changes the initial roll of the camera\n */\n\n }, {\n key: \"changeRoll\",\n value: function changeRoll(rl) {\n this.setRoll(this.roll + rl);\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the azimuth in degrees\n */\n\n }, {\n key: \"setAzimuth\",\n value: function setAzimuth(az) {\n this.azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(az);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n }, {\n key: \"getAzimuth\",\n value: function getAzimuth() {\n return this.azimuth;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the elevation in degrees\n */\n\n }, {\n key: \"setElevation\",\n value: function setElevation(el) {\n this.elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(el);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} angle the roll angle\n */\n\n }, {\n key: \"setRoll\",\n value: function setRoll(angle) {\n this.roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(angle);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * Changes the azimuth and elevation with respect to the current camera axes\n * @param {Number} azimuth the relative azimuth\n * @param {Number} elevation the relative elevation\n * @param {Number} roll the relative roll\n */\n\n }, {\n key: \"rotate\",\n value: function rotate(azimuth, elevation, roll) {\n if (this.type === CAMERA_TYPE.EXPLORING) {\n azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n var rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld ? 1 : -1) * elevation * DEG_2_RAD);\n var rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld ? 1 : -1) * azimuth * DEG_2_RAD);\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], roll * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, -this.distance]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else {\n if (Math.abs(this.elevation + elevation) > 90) {\n return;\n }\n\n this.relElevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n this.relAzimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n this.relRoll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n this.elevation += this.relElevation;\n this.azimuth += this.relAzimuth;\n this.roll += this.relRoll;\n this.computeMatrix();\n }\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n this._update();\n\n return this;\n }\n /**\n * 沿水平(right) & 垂直(up)平移相机\n */\n\n }, {\n key: \"pan\",\n value: function pan(tx, ty) {\n var coords = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(tx, ty, 0);\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.right, coords[0]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.up, coords[1]));\n\n this._setPosition(pos);\n\n return this;\n }\n /**\n * 沿 n 轴移动,当距离视点远时移动速度较快,离视点越近速度越慢\n */\n\n }, {\n key: \"dolly\",\n value: function dolly(value) {\n var n = this.forward;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n var step = value * this.dollyingStep;\n var updatedDistance = this.distance + value * this.dollyingStep; // 限制视点距离范围\n\n step = Math.max(Math.min(updatedDistance, this.maxDistance), this.minDistance) - this.distance;\n pos[0] += step * n[0];\n pos[1] += step * n[1];\n pos[2] += step * n[2];\n\n this._setPosition(pos);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n // 重新计算视点距离\n this._getDistance();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n // 保持视距,移动视点位置\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, pos, this.distanceVector);\n }\n\n return this;\n }\n }, {\n key: \"createLandmark\",\n value: function createLandmark(name, params) {\n var camera = this.clone();\n camera.setPosition(params.position);\n camera.setFocalPoint(params.focalPoint);\n\n if (params.roll !== undefined) {\n camera.setRoll(params.roll);\n }\n\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, camera);\n this.landmarks.push(landmark);\n return landmark;\n }\n }, {\n key: \"setLandmark\",\n value: function setLandmark(name) {\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, this);\n this.landmarks.push(landmark);\n return this;\n }\n }, {\n key: \"gotoLandmark\",\n value: function gotoLandmark(name) {\n var _this = this;\n\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var landmark = this.landmarks.find(function (l) {\n return l.name === name;\n });\n\n if (landmark) {\n if (duration === 0) {\n landmark.retrieve(this);\n return;\n }\n\n if (this.landmarkAnimationID !== undefined) {\n window.cancelAnimationFrame(this.landmarkAnimationID);\n } // TODO: do not process events during animation\n\n\n this.interactor.disconnect();\n var destPosition = landmark.getPosition();\n var destFocalPoint = landmark.getFocalPoint();\n var destRoll = landmark.getRoll();\n var timeStart;\n\n var animate = function animate(timestamp) {\n if (timeStart === undefined) {\n timeStart = timestamp;\n }\n\n var elapsed = timestamp - timeStart; // TODO: use better ease function\n\n var t = (1 - Math.cos(elapsed / duration * Math.PI)) / 2;\n var interFocalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interRoll = 0;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interFocalPoint, _this.focalPoint, destFocalPoint, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interPosition, _this.position, destPosition, t);\n interRoll = _this.roll * (1 - t) + destRoll * t;\n\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n var dist = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interFocalPoint, destFocalPoint) + gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interPosition, destPosition);\n\n if (dist > 0.01) {//\n } else {\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n _this.interactor.connect();\n\n return;\n }\n\n if (elapsed < duration) {\n _this.landmarkAnimationID = window.requestAnimationFrame(animate);\n }\n };\n\n window.requestAnimationFrame(animate);\n }\n }\n /**\n * 根据相机矩阵重新计算各种相机参数\n */\n\n }, {\n key: \"_update\",\n value: function _update() {\n this._getAxes();\n\n this._getPosition();\n\n this._getDistance();\n\n this._getAngles();\n }\n /**\n * 计算相机矩阵\n */\n\n }, {\n key: \"computeMatrix\",\n value: function computeMatrix() {\n var rotX;\n var rotY; // 使用四元数描述 3D 旋转\n // @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], this.roll * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].identity(this.matrix); // only consider HCS for EXPLORING and ORBITING cameras\n\n rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.elevation * DEG_2_RAD);\n rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.azimuth * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.focalPoint);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n }\n }\n /**\n * Sets the camera position in the camera matrix\n */\n\n }, {\n key: \"_setPosition\",\n value: function _setPosition(x, y, z) {\n this.position = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n var m = this.matrix;\n m[12] = this.position[0];\n m[13] = this.position[1];\n m[14] = this.position[2];\n m[15] = 1;\n }\n /**\n * Recalculates axes based on the current matrix\n */\n\n }, {\n key: \"_getAxes\",\n value: function _getAxes() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.right, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [1, 0, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.up, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 1, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.forward, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 1, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.right, this.right);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.up, this.up);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.forward, this.forward);\n }\n /**\n * Recalculates euler angles based on the current state\n */\n\n }, {\n key: \"_getAngles\",\n value: function _getAngles() {\n // Recalculates angles\n var x = this.distanceVector[0];\n var y = this.distanceVector[1];\n var z = this.distanceVector[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector); // FAST FAIL: If there is no distance we cannot compute angles\n\n if (r === 0) {\n this.elevation = 0;\n this.azimuth = 0;\n return;\n }\n\n if (this.type === CAMERA_TYPE.TRACKING) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n if (this.rotateWorld) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n this.elevation = -Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = -Math.atan2(-x, -z) * RAD_2_DEG;\n }\n }\n }\n /**\n * 重新计算相机位置,只有 ORBITING 模式相机位置才会发生变化\n */\n\n }, {\n key: \"_getPosition\",\n value: function _getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.position, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 0, 1], this.matrix))); // 相机位置变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视点,只有 TRACKING 模式视点才会发生变化\n */\n\n }, {\n key: \"_getFocalPoint\",\n value: function _getFocalPoint() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat3(this.distanceVector, [0, 0, -this.distance], gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].fromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].create(), this.matrix));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, this.position, this.distanceVector); // 视点变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视距\n */\n\n }, {\n key: \"_getDistance\",\n value: function _getDistance() {\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n this.distance = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector);\n this.dollyingStep = this.distance / 100;\n }\n }]);\n\n return Camera;\n}(), _class3.ProjectionMode = {\n ORTHOGRAPHIC: 'ORTHOGRAPHIC',\n PERSPECTIVE: 'PERSPECTIVE'\n}, _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"interactor\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Camera.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0NhbWVyYS5qcz9hZDk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUUwRDtBQUNEO0FBQ1Y7QUFDTTtBQUNuQjtBQUMzQjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0NBQWtDOztBQUU1Qjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvREFBb0Q7O0FBRTlDOztBQUVQO0FBQ0E7QUFDQTtBQUNBLENBQUMsd0RBQXdEOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyxxQkFBcUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVO0FBQ25FO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsa0JBQWtCLDhDQUFJO0FBQ3RCLGlCQUFpQiw4Q0FBSTtBQUNyQixjQUFjLDhDQUFJO0FBQ2xCLG1CQUFtQiw4Q0FBSTtBQUN2QixvQkFBb0IsOENBQUk7QUFDeEIsc0JBQXNCLDhDQUFJO0FBQzFCLDBCQUEwQiw4Q0FBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsOENBQUk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwyREFBTztBQUM5QjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsOENBQUksUUFBUSw4Q0FBSTtBQUM3QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGVBQWUsOENBQUk7QUFDbkIsd0JBQXdCLDhEQUFVOztBQUVsQztBQUNBLGdCQUFnQiw4Q0FBSSxVQUFVLDhDQUFJO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBSTtBQUNwQjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osYUFBYSw4Q0FBSSxlQUFlLDhDQUFJO0FBQ3BDOztBQUVBLE1BQU0sOENBQUkscUJBQXFCLDhDQUFJLFFBQVEsOENBQUk7O0FBRS9DOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVE7QUFDN0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLDREQUFRO0FBQy9COztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQiw0REFBUTtBQUMxQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDREQUFRO0FBQzFCLG9CQUFvQiw0REFBUTtBQUM1QixlQUFlLDREQUFRO0FBQ3ZCLG1CQUFtQiw4Q0FBSSxjQUFjLDhDQUFJO0FBQ3pDLG1CQUFtQiw4Q0FBSSxjQUFjLDhDQUFJO0FBQ3pDLG1CQUFtQiw4Q0FBSSxjQUFjLDhDQUFJO0FBQ3pDLG1CQUFtQiw4Q0FBSSxVQUFVLDhDQUFJO0FBQ3JDLGVBQWUsOENBQUksVUFBVSw4Q0FBSTtBQUNqQyx3QkFBd0IsOENBQUksVUFBVSw4Q0FBSTtBQUMxQyxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qiw0REFBUTtBQUNwQywwQkFBMEIsNERBQVE7QUFDbEMsdUJBQXVCLDREQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsOERBQVU7QUFDN0IsZ0JBQWdCLDhDQUFJO0FBQ3BCLE1BQU0sOENBQUksZUFBZSw4Q0FBSSxPQUFPLDhDQUFJO0FBQ3hDLE1BQU0sOENBQUksZUFBZSw4Q0FBSSxPQUFPLDhDQUFJOztBQUV4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQSxzRUFBc0U7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFFBQVEsOENBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixpREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5QixpREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7O0FBRTlDO0FBQ0EsZ0NBQWdDLDhDQUFJO0FBQ3BDLDhCQUE4Qiw4Q0FBSTtBQUNsQztBQUNBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2Q7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEscUJBQXFCLDhDQUFJLHlDQUF5Qyw4Q0FBSTs7QUFFdEUsNEJBQTRCO0FBQzVCLFdBQVc7QUFDWDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQSxpQkFBaUIsOENBQUksY0FBYyw4Q0FBSTtBQUN2QyxNQUFNLDhDQUFJLHVCQUF1Qjs7QUFFakMsYUFBYSw4Q0FBSSxjQUFjLDhDQUFJO0FBQ25DLGFBQWEsOENBQUksY0FBYyw4Q0FBSTtBQUNuQyxpQkFBaUIsOENBQUksVUFBVSw4Q0FBSTtBQUNuQyxhQUFhLDhDQUFJLFVBQVUsOENBQUk7QUFDL0Isc0JBQXNCLDhDQUFJLFVBQVUsOENBQUk7O0FBRXhDO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osT0FBTztBQUNQLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQiw4REFBVTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJLGtCQUFrQiw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUk7QUFDOUQsTUFBTSw4Q0FBSSxlQUFlLDhEQUFVLENBQUMsOENBQUksZUFBZSw4Q0FBSTtBQUMzRCxNQUFNLDhDQUFJLG9CQUFvQiw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUk7QUFDaEUsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsOENBQUksNkJBQTZCOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUkscUJBQXFCLDhEQUFVLENBQUMsOENBQUksZUFBZSw4Q0FBSSx3Q0FBd0M7O0FBRXpHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJLDREQUE0RCw4Q0FBSSxVQUFVLDhDQUFJO0FBQ3hGLE1BQU0sOENBQUksMERBQTBEOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJLFVBQVUsOENBQUk7QUFDOUMsc0JBQXNCLDhDQUFJO0FBQzFCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDLHlCQUF5QixzRkFBeUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0NhbWVyYS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9jbGFzczMsIF90ZW1wO1xuXG5pbXBvcnQgeyBGcnVzdHVtLCBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBtYXQzLCBtYXQ0LCBxdWF0LCB2ZWMzLCB2ZWM0IH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBjcmVhdGVWZWMzLCBnZXRBbmdsZSB9IGZyb20gJy4uL3V0aWxzL21hdGgnO1xuaW1wb3J0IExhbmRtYXJrIGZyb20gJy4vTGFuZG1hcmsnO1xuZXhwb3J0IHZhciBDQU1FUkFfVFlQRTtcblxuKGZ1bmN0aW9uIChDQU1FUkFfVFlQRSkge1xuICBDQU1FUkFfVFlQRVtcIk9SQklUSU5HXCJdID0gXCJPUkJJVElOR1wiO1xuICBDQU1FUkFfVFlQRVtcIkVYUExPUklOR1wiXSA9IFwiRVhQTE9SSU5HXCI7XG4gIENBTUVSQV9UWVBFW1wiVFJBQ0tJTkdcIl0gPSBcIlRSQUNLSU5HXCI7XG59KShDQU1FUkFfVFlQRSB8fCAoQ0FNRVJBX1RZUEUgPSB7fSkpO1xuXG5leHBvcnQgdmFyIENBTUVSQV9UUkFDS0lOR19NT0RFO1xuXG4oZnVuY3Rpb24gKENBTUVSQV9UUkFDS0lOR19NT0RFKSB7XG4gIENBTUVSQV9UUkFDS0lOR19NT0RFW1wiREVGQVVMVFwiXSA9IFwiREVGQVVMVFwiO1xuICBDQU1FUkFfVFJBQ0tJTkdfTU9ERVtcIlJPVEFUSU9OQUxcIl0gPSBcIlJPVEFUSU9OQUxcIjtcbiAgQ0FNRVJBX1RSQUNLSU5HX01PREVbXCJUUkFOU0xBVElPTkFMXCJdID0gXCJUUkFOU0xBVElPTkFMXCI7XG4gIENBTUVSQV9UUkFDS0lOR19NT0RFW1wiQ0lORU1BVElDXCJdID0gXCJDSU5FTUFUSUNcIjtcbn0pKENBTUVSQV9UUkFDS0lOR19NT0RFIHx8IChDQU1FUkFfVFJBQ0tJTkdfTU9ERSA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgQ0FNRVJBX1BST0pFQ1RJT05fTU9ERTtcblxuKGZ1bmN0aW9uIChDQU1FUkFfUFJPSkVDVElPTl9NT0RFKSB7XG4gIENBTUVSQV9QUk9KRUNUSU9OX01PREVbXCJPUlRIT0dSQVBISUNcIl0gPSBcIk9SVEhPR1JBUEhJQ1wiO1xuICBDQU1FUkFfUFJPSkVDVElPTl9NT0RFW1wiUEVSU1BFQ1RJVkVcIl0gPSBcIlBFUlNQRUNUSVZFXCI7XG59KShDQU1FUkFfUFJPSkVDVElPTl9NT0RFIHx8IChDQU1FUkFfUFJPSkVDVElPTl9NT0RFID0ge30pKTtcblxudmFyIERFR18yX1JBRCA9IE1hdGguUEkgLyAxODA7XG52YXIgUkFEXzJfREVHID0gMTgwIC8gTWF0aC5QSTtcbi8qKlxuICog5Y+C6ICD44CMV2ViR0wgSW5zaWdodHMgLSAyMy5EZXNpZ25pbmcgQ2FtZXJhcyBmb3IgV2ViR0wgQXBwbGljYXRpb25z44CN77yM5Z+65LqOIFJlc3BvbnNpYmxlIENhbWVyYSDmgJ3ot6/orr7orqFcbiAqIOS/neWtmOebuOacuuWPguaVsO+8jOWumuS5ieebuOacuuWKqOS9nO+8mlxuICogMS4gZG9sbHkg5rK/IG4g6L2056e75YqoXG4gKiAyLiBwYW4g5rK/IHUgdiDovbTnp7vliqhcbiAqIDMuIHJvdGF0ZSDku6XmlrnkvY3op5Lml4vovaxcbiAqIDQuIOenu+WKqOWIsCBMYW5kbWFya++8jOWFt+acieW5s+a7keeahOWKqOeUu+aViOaenO+8jOWFtumXtOemgeatouWFtuS7lueUqOaIt+S6pOS6klxuICovXG5cbmV4cG9ydCB2YXIgQ2FtZXJhID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuSW50ZXJhY3RvclNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENhbWVyYSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2FtZXJhKTtcblxuICAgIHRoaXMubWF0cml4ID0gbWF0NC5jcmVhdGUoKTtcbiAgICB0aGlzLnJpZ2h0ID0gdmVjMy5mcm9tVmFsdWVzKDEsIDAsIDApO1xuICAgIHRoaXMudXAgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMSwgMCk7XG4gICAgdGhpcy5mb3J3YXJkID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDEpO1xuICAgIHRoaXMucG9zaXRpb24gPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMSk7XG4gICAgdGhpcy5mb2NhbFBvaW50ID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApO1xuICAgIHRoaXMuZGlzdGFuY2VWZWN0b3IgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgdGhpcy5kaXN0YW5jZSA9IDE7XG4gICAgdGhpcy5hemltdXRoID0gMDtcbiAgICB0aGlzLmVsZXZhdGlvbiA9IDA7XG4gICAgdGhpcy5yb2xsID0gMDtcbiAgICB0aGlzLnJlbEF6aW11dGggPSAwO1xuICAgIHRoaXMucmVsRWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJlbFJvbGwgPSAwO1xuICAgIHRoaXMuZG9sbHlpbmdTdGVwID0gMDtcbiAgICB0aGlzLm1heERpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgdGhpcy5taW5EaXN0YW5jZSA9IC1JbmZpbml0eTtcbiAgICB0aGlzLnJvdGF0ZVdvcmxkID0gZmFsc2U7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImludGVyYWN0b3JcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5mb3YgPSAzMDtcbiAgICB0aGlzLm5lYXIgPSAwLjE7XG4gICAgdGhpcy5mYXIgPSAxMDAwMDtcbiAgICB0aGlzLmFzcGVjdCA9IDE7XG4gICAgdGhpcy5sZWZ0ID0gdm9pZCAwO1xuICAgIHRoaXMucnJpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMudG9wID0gdm9pZCAwO1xuICAgIHRoaXMuYm90dG9tID0gdm9pZCAwO1xuICAgIHRoaXMuem9vbSA9IDE7XG4gICAgdGhpcy5wZXJzcGVjdGl2ZSA9IG1hdDQuY3JlYXRlKCk7XG4gICAgdGhpcy52aWV3ID0gdm9pZCAwO1xuICAgIHRoaXMuZm9sbG93aW5nID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudHlwZSA9IENBTUVSQV9UWVBFLkVYUExPUklORztcbiAgICB0aGlzLnRyYWNraW5nTW9kZSA9IENBTUVSQV9UUkFDS0lOR19NT0RFLkRFRkFVTFQ7XG4gICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkU7XG4gICAgdGhpcy5mcnVzdHVtID0gbmV3IEZydXN0dW0oKTtcbiAgICB0aGlzLmxhbmRtYXJrcyA9IFtdO1xuICAgIHRoaXMubGFuZG1hcmtBbmltYXRpb25JRCA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDYW1lcmEsIFt7XG4gICAga2V5OiBcImNsb25lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb25lKCkge1xuICAgICAgdmFyIGNhbWVyYSA9IG5ldyBDYW1lcmEoKTtcbiAgICAgIGNhbWVyYS5zZXRUeXBlKHRoaXMudHlwZSwgdW5kZWZpbmVkKTtcbiAgICAgIGNhbWVyYS5pbnRlcmFjdG9yID0gdGhpcy5pbnRlcmFjdG9yO1xuICAgICAgcmV0dXJuIGNhbWVyYTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UHJvamVjdGlvbk1vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UHJvamVjdGlvbk1vZGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9qZWN0aW9uTW9kZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UGVyc3BlY3RpdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGVyc3BlY3RpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZXJzcGVjdGl2ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RnJ1c3R1bVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGcnVzdHVtKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZnJ1c3R1bTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0VHlwZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUeXBlKHR5cGUsIHRyYWNraW5nTW9kZSkge1xuICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIHRoaXMuc2V0V29ybGRSb3RhdGlvbih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0V29ybGRSb3RhdGlvbihmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORyAmJiB0cmFja2luZ01vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNldFRyYWNraW5nTW9kZSh0cmFja2luZ01vZGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UHJvamVjdGlvbk1vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UHJvamVjdGlvbk1vZGUocHJvamVjdGlvbk1vZGUpIHtcbiAgICAgIHRoaXMucHJvamVjdGlvbk1vZGUgPSBwcm9qZWN0aW9uTW9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRUcmFja2luZ01vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VHJhY2tpbmdNb2RlKHRyYWNraW5nTW9kZSkge1xuICAgICAgaWYgKHRoaXMudHlwZSAhPT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlIHRvIHNldCBhIHRyYWNraW5nIG1vZGUgaWYgdGhlIGNhbWVyYSBpcyBub3Qgb2YgdHJhY2tpbmcgdHlwZScpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRyYWNraW5nTW9kZSA9IHRyYWNraW5nTW9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiBmbGFnIGlzIHRydWUsIGl0IHJldmVyc2VzIHRoZSBhemltdXRoIGFuZCBlbGV2YXRpb24gYW5nbGVzLlxuICAgICAqIFN1YnNlcXVlbnQgY2FsbHMgdG8gcm90YXRlLCBzZXRBemltdXRoLCBzZXRFbGV2YXRpb24sXG4gICAgICogY2hhbmdlQXppbXV0aCBvciBjaGFuZ2VFbGV2YXRpb24gd2lsbCBjYXVzZSB0aGUgaW52ZXJ0ZWQgZWZmZWN0LlxuICAgICAqIHNldFJvbGwgb3IgY2hhbmdlUm9sbCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBtZXRob2QuXG4gICAgICpcbiAgICAgKiBUaGlzIGludmVyc2lvbiBpcyB1c2VmdWwgd2hlbiBvbmUgd2FudHMgdG8gc2ltdWxhdGUgdGhhdCB0aGUgd29ybGRcbiAgICAgKiBpcyBtb3ZpbmcsIGluc3RlYWQgb2YgdGhlIGNhbWVyYS5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIGNhbWVyYSBhbmdsZXMgYXJlIG5vdCByZXZlcnNlZC5cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGZsYWcgdGhlIGJvb2xlYW4gZmxhZyB0byByZXZlcnNlIHRoZSBhbmdsZXMuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRXb3JsZFJvdGF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFdvcmxkUm90YXRpb24oZmxhZykge1xuICAgICAgdGhpcy5yb3RhdGVXb3JsZCA9IGZsYWc7XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorqHnrpcgTVYg55+p6Zi177yM5Li655u45py655+p6Zi155qE6YCG55+p6Zi1XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWV3VHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZXdUcmFuc2Zvcm0oKSB7XG4gICAgICByZXR1cm4gbWF0NC5pbnZlcnQobWF0NC5jcmVhdGUoKSwgdGhpcy5tYXRyaXgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRXb3JsZFRyYW5zZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRXb3JsZFRyYW5zZm9ybSgpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hdHJpeDtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u55u45py655+p6Zi1XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRNYXRyaXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWF0cml4KG1hdHJpeCkge1xuICAgICAgdGhpcy5tYXRyaXggPSBtYXRyaXg7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZSgpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QXNwZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEFzcGVjdChhc3BlY3QpIHtcbiAgICAgIHRoaXMuc2V0UGVyc3BlY3RpdmUodGhpcy5uZWFyLCB0aGlzLmZhciwgdGhpcy5mb3YsIGFzcGVjdCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhbiBvZmZzZXQgaW4gYSBsYXJnZXIgZnJ1c3R1bSwgdXNlZCBpbiBQaXhlbFBpY2tpbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFZpZXdPZmZzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vmlld09mZnNldChmdWxsV2lkdGgsIGZ1bGxIZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMuYXNwZWN0ID0gZnVsbFdpZHRoIC8gZnVsbEhlaWdodDtcblxuICAgICAgaWYgKHRoaXMudmlldyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMudmlldyA9IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIGZ1bGxXaWR0aDogMSxcbiAgICAgICAgICBmdWxsSGVpZ2h0OiAxLFxuICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgb2Zmc2V0WTogMCxcbiAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICBoZWlnaHQ6IDFcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy52aWV3LmVuYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52aWV3LmZ1bGxXaWR0aCA9IGZ1bGxXaWR0aDtcbiAgICAgIHRoaXMudmlldy5mdWxsSGVpZ2h0ID0gZnVsbEhlaWdodDtcbiAgICAgIHRoaXMudmlldy5vZmZzZXRYID0geDtcbiAgICAgIHRoaXMudmlldy5vZmZzZXRZID0geTtcbiAgICAgIHRoaXMudmlldy53aWR0aCA9IHdpZHRoO1xuICAgICAgdGhpcy52aWV3LmhlaWdodCA9IGhlaWdodDtcblxuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgPT09IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkUpIHtcbiAgICAgICAgdGhpcy5zZXRQZXJzcGVjdGl2ZSh0aGlzLm5lYXIsIHRoaXMuZmFyLCB0aGlzLmZvdiwgdGhpcy5hc3BlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRPcnRob2dyYXBoaWModGhpcy5sZWZ0LCB0aGlzLnJyaWdodCwgdGhpcy50b3AsIHRoaXMuYm90dG9tLCB0aGlzLm5lYXIsIHRoaXMuZmFyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyVmlld09mZnNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhclZpZXdPZmZzZXQoKSB7XG4gICAgICBpZiAodGhpcy52aWV3ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52aWV3LmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgPT09IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkUpIHtcbiAgICAgICAgdGhpcy5zZXRQZXJzcGVjdGl2ZSh0aGlzLm5lYXIsIHRoaXMuZmFyLCB0aGlzLmZvdiwgdGhpcy5hc3BlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRPcnRob2dyYXBoaWModGhpcy5sZWZ0LCB0aGlzLnJyaWdodCwgdGhpcy50b3AsIHRoaXMuYm90dG9tLCB0aGlzLm5lYXIsIHRoaXMuZmFyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFBlcnNwZWN0aXZlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBlcnNwZWN0aXZlKG5lYXIsIGZhciwgZm92LCBhc3BlY3QpIHtcbiAgICAgIHRoaXMucHJvamVjdGlvbk1vZGUgPSBDQU1FUkFfUFJPSkVDVElPTl9NT0RFLlBFUlNQRUNUSVZFO1xuICAgICAgdGhpcy5mb3YgPSBmb3Y7XG4gICAgICB0aGlzLm5lYXIgPSBuZWFyO1xuICAgICAgdGhpcy5mYXIgPSBmYXI7XG4gICAgICB0aGlzLmFzcGVjdCA9IGFzcGVjdDtcbiAgICAgIG1hdDQucGVyc3BlY3RpdmUodGhpcy5wZXJzcGVjdGl2ZSwgdGhpcy5mb3YgKiBERUdfMl9SQUQsIHRoaXMuYXNwZWN0LCB0aGlzLm5lYXIsIHRoaXMuZmFyKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRPcnRob2dyYXBoaWNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0T3J0aG9ncmFwaGljKGwsIHIsIHQsIGIsIG5lYXIsIGZhcikge1xuICAgICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IENBTUVSQV9QUk9KRUNUSU9OX01PREUuT1JUSE9HUkFQSElDO1xuICAgICAgdGhpcy5ycmlnaHQgPSByO1xuICAgICAgdGhpcy5sZWZ0ID0gbDtcbiAgICAgIHRoaXMudG9wID0gdDtcbiAgICAgIHRoaXMuYm90dG9tID0gYjtcbiAgICAgIHRoaXMubmVhciA9IG5lYXI7XG4gICAgICB0aGlzLmZhciA9IGZhcjtcbiAgICAgIHZhciBkeCA9ICh0aGlzLnJyaWdodCAtIHRoaXMubGVmdCkgLyAoMiAqIHRoaXMuem9vbSk7XG4gICAgICB2YXIgZHkgPSAodGhpcy50b3AgLSB0aGlzLmJvdHRvbSkgLyAoMiAqIHRoaXMuem9vbSk7XG4gICAgICB2YXIgY3ggPSAodGhpcy5ycmlnaHQgKyB0aGlzLmxlZnQpIC8gMjtcbiAgICAgIHZhciBjeSA9ICh0aGlzLnRvcCArIHRoaXMuYm90dG9tKSAvIDI7XG4gICAgICB2YXIgbGVmdCA9IGN4IC0gZHg7XG4gICAgICB2YXIgcmlnaHQgPSBjeCArIGR4O1xuICAgICAgdmFyIHRvcCA9IGN5ICsgZHk7XG4gICAgICB2YXIgYm90dG9tID0gY3kgLSBkeTtcblxuICAgICAgaWYgKHRoaXMudmlldyAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmlldy5lbmFibGVkKSB7XG4gICAgICAgIHZhciBzY2FsZVcgPSAodGhpcy5ycmlnaHQgLSB0aGlzLmxlZnQpIC8gdGhpcy52aWV3LmZ1bGxXaWR0aCAvIHRoaXMuem9vbTtcbiAgICAgICAgdmFyIHNjYWxlSCA9ICh0aGlzLnRvcCAtIHRoaXMuYm90dG9tKSAvIHRoaXMudmlldy5mdWxsSGVpZ2h0IC8gdGhpcy56b29tO1xuICAgICAgICBsZWZ0ICs9IHNjYWxlVyAqIHRoaXMudmlldy5vZmZzZXRYO1xuICAgICAgICByaWdodCA9IGxlZnQgKyBzY2FsZVcgKiB0aGlzLnZpZXcud2lkdGg7XG4gICAgICAgIHRvcCAtPSBzY2FsZUggKiB0aGlzLnZpZXcub2Zmc2V0WTtcbiAgICAgICAgYm90dG9tID0gdG9wIC0gc2NhbGVIICogdGhpcy52aWV3LmhlaWdodDtcbiAgICAgIH1cblxuICAgICAgbWF0NC5vcnRobyh0aGlzLnBlcnNwZWN0aXZlLCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhcik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u55u45py65L2N572uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQb3NpdGlvbih4LCB5LCB6KSB7XG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbih4LCB5LCB6KTtcblxuICAgICAgdGhpcy5zZXRGb2NhbFBvaW50KHRoaXMuZm9jYWxQb2ludCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u6KeG54K55L2N572uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRGb2NhbFBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZvY2FsUG9pbnQoeCwgeSwgeikge1xuICAgICAgdmFyIHVwID0gdmVjMy5mcm9tVmFsdWVzKDAsIDEsIDApO1xuICAgICAgdGhpcy5mb2NhbFBvaW50ID0gY3JlYXRlVmVjMyh4LCB5LCB6KTtcblxuICAgICAgaWYgKHRoaXMudHJhY2tpbmdNb2RlID09PSBDQU1FUkFfVFJBQ0tJTkdfTU9ERS5DSU5FTUFUSUMpIHtcbiAgICAgICAgdmFyIGQgPSB2ZWMzLnN1YnRyYWN0KHZlYzMuY3JlYXRlKCksIHRoaXMuZm9jYWxQb2ludCwgdGhpcy5wb3NpdGlvbik7XG4gICAgICAgIHggPSBkWzBdO1xuICAgICAgICB5ID0gZFsxXTtcbiAgICAgICAgeiA9IGRbMl07XG4gICAgICAgIHZhciByID0gdmVjMy5sZW5ndGgoZCk7XG4gICAgICAgIHZhciBlbCA9IE1hdGguYXNpbih5IC8gcikgKiBSQURfMl9ERUc7XG4gICAgICAgIHZhciBheiA9IDkwICsgTWF0aC5hdGFuMih6LCB4KSAqIFJBRF8yX0RFRztcbiAgICAgICAgdmFyIG0gPSBtYXQ0LmNyZWF0ZSgpO1xuICAgICAgICBtYXQ0LnJvdGF0ZVkobSwgbSwgYXogKiBERUdfMl9SQUQpO1xuICAgICAgICBtYXQ0LnJvdGF0ZVgobSwgbSwgZWwgKiBERUdfMl9SQUQpO1xuICAgICAgICB1cCA9IHZlYzMudHJhbnNmb3JtTWF0NCh2ZWMzLmNyZWF0ZSgpLCBbMCwgMSwgMF0sIG0pO1xuICAgICAgfVxuXG4gICAgICBtYXQ0LmludmVydCh0aGlzLm1hdHJpeCwgbWF0NC5sb29rQXQobWF0NC5jcmVhdGUoKSwgdGhpcy5wb3NpdGlvbiwgdGhpcy5mb2NhbFBvaW50LCB1cCkpO1xuXG4gICAgICB0aGlzLl9nZXRBeGVzKCk7XG5cbiAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5Zu65a6a5b2T5YmN6KeG54K577yM5oyJ5oyH5a6a6Led56a75pS+572u55u45py6XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXN0YW5jZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXN0YW5jZShkKSB7XG4gICAgICBpZiAodGhpcy5kaXN0YW5jZSA9PT0gZCB8fCBkIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzdGFuY2UgPSBkO1xuXG4gICAgICBpZiAodGhpcy5kaXN0YW5jZSA8IDAuMDAwMikge1xuICAgICAgICB0aGlzLmRpc3RhbmNlID0gMC4wMDAyO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRvbGx5aW5nU3RlcCA9IHRoaXMuZGlzdGFuY2UgLyAxMDA7XG4gICAgICB2YXIgcG9zID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgIGQgPSB0aGlzLmRpc3RhbmNlO1xuICAgICAgdmFyIG4gPSB0aGlzLmZvcndhcmQ7XG4gICAgICB2YXIgZiA9IHRoaXMuZm9jYWxQb2ludDtcbiAgICAgIHBvc1swXSA9IGQgKiBuWzBdICsgZlswXTtcbiAgICAgIHBvc1sxXSA9IGQgKiBuWzFdICsgZlsxXTtcbiAgICAgIHBvc1syXSA9IGQgKiBuWzJdICsgZlsyXTtcblxuICAgICAgdGhpcy5fc2V0UG9zaXRpb24ocG9zKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE1heERpc3RhbmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE1heERpc3RhbmNlKGQpIHtcbiAgICAgIHRoaXMubWF4RGlzdGFuY2UgPSBkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE1pbkRpc3RhbmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE1pbkRpc3RhbmNlKGQpIHtcbiAgICAgIHRoaXMubWluRGlzdGFuY2UgPSBkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGluaXRpYWwgYXppbXV0aCBvZiB0aGUgY2FtZXJhXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjaGFuZ2VBemltdXRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNoYW5nZUF6aW11dGgoYXopIHtcbiAgICAgIHRoaXMuc2V0QXppbXV0aCh0aGlzLmF6aW11dGggKyBheik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgaW5pdGlhbCBlbGV2YXRpb24gb2YgdGhlIGNhbWVyYVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY2hhbmdlRWxldmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNoYW5nZUVsZXZhdGlvbihlbCkge1xuICAgICAgdGhpcy5zZXRFbGV2YXRpb24odGhpcy5lbGV2YXRpb24gKyBlbCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgaW5pdGlhbCByb2xsIG9mIHRoZSBjYW1lcmFcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNoYW5nZVJvbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlUm9sbChybCkge1xuICAgICAgdGhpcy5zZXRSb2xsKHRoaXMucm9sbCArIHJsKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrmlrnkvY3op5LvvIzkuI3lkIznm7jmnLrmqKHlvI/kuIvpnIDopoHph43mlrDorqHnrpfnm7jmnLrkvY3nva7miJbogIXmmK/op4bngrnkvY3nva5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gZWwgdGhlIGF6aW11dGggaW4gZGVncmVlc1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QXppbXV0aFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRBemltdXRoKGF6KSB7XG4gICAgICB0aGlzLmF6aW11dGggPSBnZXRBbmdsZShheik7XG4gICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEF6aW11dGhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXppbXV0aCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmF6aW11dGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruebuOacuuaWueS9jeinku+8jOS4jeWQjOebuOacuuaooeW8j+S4i+mcgOimgemHjeaWsOiuoeeul+ebuOacuuS9jee9ruaIluiAheaYr+inhueCueS9jee9rlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBlbCB0aGUgZWxldmF0aW9uIGluIGRlZ3JlZXNcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldEVsZXZhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRFbGV2YXRpb24oZWwpIHtcbiAgICAgIHRoaXMuZWxldmF0aW9uID0gZ2V0QW5nbGUoZWwpO1xuICAgICAgdGhpcy5jb21wdXRlTWF0cml4KCk7XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aGlzLl9nZXRGb2NhbFBvaW50KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrmlrnkvY3op5LvvIzkuI3lkIznm7jmnLrmqKHlvI/kuIvpnIDopoHph43mlrDorqHnrpfnm7jmnLrkvY3nva7miJbogIXmmK/op4bngrnkvY3nva5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gYW5nbGUgdGhlIHJvbGwgYW5nbGVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFJvbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Um9sbChhbmdsZSkge1xuICAgICAgdGhpcy5yb2xsID0gZ2V0QW5nbGUoYW5nbGUpO1xuICAgICAgdGhpcy5jb21wdXRlTWF0cml4KCk7XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aGlzLl9nZXRGb2NhbFBvaW50KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBhemltdXRoIGFuZCBlbGV2YXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGNhbWVyYSBheGVzXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGF6aW11dGggdGhlIHJlbGF0aXZlIGF6aW11dGhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gZWxldmF0aW9uIHRoZSByZWxhdGl2ZSBlbGV2YXRpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gcm9sbCB0aGUgcmVsYXRpdmUgcm9sbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicm90YXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJvdGF0ZShhemltdXRoLCBlbGV2YXRpb24sIHJvbGwpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICBhemltdXRoID0gZ2V0QW5nbGUoYXppbXV0aCk7XG4gICAgICAgIGVsZXZhdGlvbiA9IGdldEFuZ2xlKGVsZXZhdGlvbik7XG4gICAgICAgIHJvbGwgPSBnZXRBbmdsZShyb2xsKTtcbiAgICAgICAgdmFyIHJvdFggPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMSwgMCwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkID8gMSA6IC0xKSAqIGVsZXZhdGlvbiAqIERFR18yX1JBRCk7XG4gICAgICAgIHZhciByb3RZID0gcXVhdC5zZXRBeGlzQW5nbGUocXVhdC5jcmVhdGUoKSwgWzAsIDEsIDBdLCAodGhpcy5yb3RhdGVXb3JsZCA/IDEgOiAtMSkgKiBhemltdXRoICogREVHXzJfUkFEKTtcbiAgICAgICAgdmFyIHJvdFogPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMCwgMCwgMV0sIHJvbGwgKiBERUdfMl9SQUQpO1xuICAgICAgICB2YXIgcm90USA9IHF1YXQubXVsdGlwbHkocXVhdC5jcmVhdGUoKSwgcm90WSwgcm90WCk7XG4gICAgICAgIHJvdFEgPSBxdWF0Lm11bHRpcGx5KHF1YXQuY3JlYXRlKCksIHJvdFEsIHJvdFopO1xuICAgICAgICB2YXIgcm90TWF0cml4ID0gbWF0NC5mcm9tUXVhdChtYXQ0LmNyZWF0ZSgpLCByb3RRKTtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCBbMCwgMCwgLXRoaXMuZGlzdGFuY2VdKTtcbiAgICAgICAgbWF0NC5tdWx0aXBseSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIHJvdE1hdHJpeCk7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgWzAsIDAsIHRoaXMuZGlzdGFuY2VdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmVsZXZhdGlvbiArIGVsZXZhdGlvbikgPiA5MCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsRWxldmF0aW9uID0gZ2V0QW5nbGUoZWxldmF0aW9uKTtcbiAgICAgICAgdGhpcy5yZWxBemltdXRoID0gZ2V0QW5nbGUoYXppbXV0aCk7XG4gICAgICAgIHRoaXMucmVsUm9sbCA9IGdldEFuZ2xlKHJvbGwpO1xuICAgICAgICB0aGlzLmVsZXZhdGlvbiArPSB0aGlzLnJlbEVsZXZhdGlvbjtcbiAgICAgICAgdGhpcy5hemltdXRoICs9IHRoaXMucmVsQXppbXV0aDtcbiAgICAgICAgdGhpcy5yb2xsICs9IHRoaXMucmVsUm9sbDtcbiAgICAgICAgdGhpcy5jb21wdXRlTWF0cml4KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aGlzLl9nZXRGb2NhbFBvaW50KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3VwZGF0ZSgpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5rK/5rC05bmzKHJpZ2h0KSAmIOWeguebtCh1cCnlubPnp7vnm7jmnLpcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInBhblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYW4odHgsIHR5KSB7XG4gICAgICB2YXIgY29vcmRzID0gY3JlYXRlVmVjMyh0eCwgdHksIDApO1xuICAgICAgdmFyIHBvcyA9IHZlYzMuY2xvbmUodGhpcy5wb3NpdGlvbik7XG4gICAgICB2ZWMzLmFkZChwb3MsIHBvcywgdmVjMy5zY2FsZSh2ZWMzLmNyZWF0ZSgpLCB0aGlzLnJpZ2h0LCBjb29yZHNbMF0pKTtcbiAgICAgIHZlYzMuYWRkKHBvcywgcG9zLCB2ZWMzLnNjYWxlKHZlYzMuY3JlYXRlKCksIHRoaXMudXAsIGNvb3Jkc1sxXSkpO1xuXG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbihwb3MpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5rK/IG4g6L2056e75Yqo77yM5b2T6Led56a76KeG54K56L+c5pe256e75Yqo6YCf5bqm6L6D5b+r77yM56a76KeG54K56LaK6L+R6YCf5bqm6LaK5oWiXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJkb2xseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkb2xseSh2YWx1ZSkge1xuICAgICAgdmFyIG4gPSB0aGlzLmZvcndhcmQ7XG4gICAgICB2YXIgcG9zID0gdmVjMy5jbG9uZSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHZhciBzdGVwID0gdmFsdWUgKiB0aGlzLmRvbGx5aW5nU3RlcDtcbiAgICAgIHZhciB1cGRhdGVkRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlICsgdmFsdWUgKiB0aGlzLmRvbGx5aW5nU3RlcDsgLy8g6ZmQ5Yi26KeG54K56Led56a76IyD5Zu0XG5cbiAgICAgIHN0ZXAgPSBNYXRoLm1heChNYXRoLm1pbih1cGRhdGVkRGlzdGFuY2UsIHRoaXMubWF4RGlzdGFuY2UpLCB0aGlzLm1pbkRpc3RhbmNlKSAtIHRoaXMuZGlzdGFuY2U7XG4gICAgICBwb3NbMF0gKz0gc3RlcCAqIG5bMF07XG4gICAgICBwb3NbMV0gKz0gc3RlcCAqIG5bMV07XG4gICAgICBwb3NbMl0gKz0gc3RlcCAqIG5bMl07XG5cbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKHBvcyk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLk9SQklUSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIC8vIOmHjeaWsOiuoeeul+inhueCuei3neemu1xuICAgICAgICB0aGlzLl9nZXREaXN0YW5jZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIC8vIOS/neaMgeinhui3ne+8jOenu+WKqOinhueCueS9jee9rlxuICAgICAgICB2ZWMzLmFkZCh0aGlzLmZvY2FsUG9pbnQsIHBvcywgdGhpcy5kaXN0YW5jZVZlY3Rvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVMYW5kbWFya1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVMYW5kbWFyayhuYW1lLCBwYXJhbXMpIHtcbiAgICAgIHZhciBjYW1lcmEgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjYW1lcmEuc2V0UG9zaXRpb24ocGFyYW1zLnBvc2l0aW9uKTtcbiAgICAgIGNhbWVyYS5zZXRGb2NhbFBvaW50KHBhcmFtcy5mb2NhbFBvaW50KTtcblxuICAgICAgaWYgKHBhcmFtcy5yb2xsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FtZXJhLnNldFJvbGwocGFyYW1zLnJvbGwpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGFuZG1hcmsgPSBuZXcgTGFuZG1hcmsobmFtZSwgY2FtZXJhKTtcbiAgICAgIHRoaXMubGFuZG1hcmtzLnB1c2gobGFuZG1hcmspO1xuICAgICAgcmV0dXJuIGxhbmRtYXJrO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMYW5kbWFya1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMYW5kbWFyayhuYW1lKSB7XG4gICAgICB2YXIgbGFuZG1hcmsgPSBuZXcgTGFuZG1hcmsobmFtZSwgdGhpcyk7XG4gICAgICB0aGlzLmxhbmRtYXJrcy5wdXNoKGxhbmRtYXJrKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnb3RvTGFuZG1hcmtcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ290b0xhbmRtYXJrKG5hbWUpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBkdXJhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTAwMDtcbiAgICAgIHZhciBsYW5kbWFyayA9IHRoaXMubGFuZG1hcmtzLmZpbmQoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgcmV0dXJuIGwubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGFuZG1hcmspIHtcbiAgICAgICAgaWYgKGR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgbGFuZG1hcmsucmV0cmlldmUodGhpcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGFuZG1hcmtBbmltYXRpb25JRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubGFuZG1hcmtBbmltYXRpb25JRCk7XG4gICAgICAgIH0gLy8gVE9ETzogZG8gbm90IHByb2Nlc3MgZXZlbnRzIGR1cmluZyBhbmltYXRpb25cblxuXG4gICAgICAgIHRoaXMuaW50ZXJhY3Rvci5kaXNjb25uZWN0KCk7XG4gICAgICAgIHZhciBkZXN0UG9zaXRpb24gPSBsYW5kbWFyay5nZXRQb3NpdGlvbigpO1xuICAgICAgICB2YXIgZGVzdEZvY2FsUG9pbnQgPSBsYW5kbWFyay5nZXRGb2NhbFBvaW50KCk7XG4gICAgICAgIHZhciBkZXN0Um9sbCA9IGxhbmRtYXJrLmdldFJvbGwoKTtcbiAgICAgICAgdmFyIHRpbWVTdGFydDtcblxuICAgICAgICB2YXIgYW5pbWF0ZSA9IGZ1bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7XG4gICAgICAgICAgaWYgKHRpbWVTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aW1lU3RhcnQgPSB0aW1lc3RhbXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGVsYXBzZWQgPSB0aW1lc3RhbXAgLSB0aW1lU3RhcnQ7IC8vIFRPRE86IHVzZSBiZXR0ZXIgZWFzZSBmdW5jdGlvblxuXG4gICAgICAgICAgdmFyIHQgPSAoMSAtIE1hdGguY29zKGVsYXBzZWQgLyBkdXJhdGlvbiAqIE1hdGguUEkpKSAvIDI7XG4gICAgICAgICAgdmFyIGludGVyRm9jYWxQb2ludCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgdmFyIGludGVyUG9zaXRpb24gPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgIHZhciBpbnRlclJvbGwgPSAwO1xuICAgICAgICAgIHZlYzMubGVycChpbnRlckZvY2FsUG9pbnQsIF90aGlzLmZvY2FsUG9pbnQsIGRlc3RGb2NhbFBvaW50LCB0KTtcbiAgICAgICAgICB2ZWMzLmxlcnAoaW50ZXJQb3NpdGlvbiwgX3RoaXMucG9zaXRpb24sIGRlc3RQb3NpdGlvbiwgdCk7XG4gICAgICAgICAgaW50ZXJSb2xsID0gX3RoaXMucm9sbCAqICgxIC0gdCkgKyBkZXN0Um9sbCAqIHQ7XG5cbiAgICAgICAgICBfdGhpcy5zZXRGb2NhbFBvaW50KGludGVyRm9jYWxQb2ludCk7XG5cbiAgICAgICAgICBfdGhpcy5zZXRQb3NpdGlvbihpbnRlclBvc2l0aW9uKTtcblxuICAgICAgICAgIF90aGlzLnNldFJvbGwoaW50ZXJSb2xsKTtcblxuICAgICAgICAgIF90aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgICAgIHZhciBkaXN0ID0gdmVjMy5kaXN0KGludGVyRm9jYWxQb2ludCwgZGVzdEZvY2FsUG9pbnQpICsgdmVjMy5kaXN0KGludGVyUG9zaXRpb24sIGRlc3RQb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoZGlzdCA+IDAuMDEpIHsvL1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5zZXRGb2NhbFBvaW50KGludGVyRm9jYWxQb2ludCk7XG5cbiAgICAgICAgICAgIF90aGlzLnNldFBvc2l0aW9uKGludGVyUG9zaXRpb24pO1xuXG4gICAgICAgICAgICBfdGhpcy5zZXRSb2xsKGludGVyUm9sbCk7XG5cbiAgICAgICAgICAgIF90aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgICAgICAgX3RoaXMuaW50ZXJhY3Rvci5jb25uZWN0KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICAgICAgICBfdGhpcy5sYW5kbWFya0FuaW1hdGlvbklEID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICog5qC55o2u55u45py655+p6Zi16YeN5paw6K6h566X5ZCE56eN55u45py65Y+C5pWwXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfdXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGUoKSB7XG4gICAgICB0aGlzLl9nZXRBeGVzKCk7XG5cbiAgICAgIHRoaXMuX2dldFBvc2l0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorqHnrpfnm7jmnLrnn6npmLVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbXB1dGVNYXRyaXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcHV0ZU1hdHJpeCgpIHtcbiAgICAgIHZhciByb3RYO1xuICAgICAgdmFyIHJvdFk7IC8vIOS9v+eUqOWbm+WFg+aVsOaPj+i/sCAzRCDml4vovaxcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly94aWFvaXZlci5naXRodWIuaW8vY29kaW5nLzIwMTgvMTIvMjgvQ2FtZXJhLSVFOCVBRSVCRSVFOCVBRSVBMS0lRTQlQjglODAuaHRtbFxuXG4gICAgICB2YXIgcm90WiA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFswLCAwLCAxXSwgdGhpcy5yb2xsICogREVHXzJfUkFEKTtcbiAgICAgIG1hdDQuaWRlbnRpdHkodGhpcy5tYXRyaXgpOyAvLyBvbmx5IGNvbnNpZGVyIEhDUyBmb3IgRVhQTE9SSU5HIGFuZCBPUkJJVElORyBjYW1lcmFzXG5cbiAgICAgIHJvdFggPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMSwgMCwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkICYmIHRoaXMudHlwZSAhPT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORyA/IDEgOiAtMSkgKiB0aGlzLmVsZXZhdGlvbiAqIERFR18yX1JBRCk7XG4gICAgICByb3RZID0gcXVhdC5zZXRBeGlzQW5nbGUocXVhdC5jcmVhdGUoKSwgWzAsIDEsIDBdLCAodGhpcy5yb3RhdGVXb3JsZCAmJiB0aGlzLnR5cGUgIT09IENBTUVSQV9UWVBFLlRSQUNLSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcgPyAxIDogLTEpICogdGhpcy5hemltdXRoICogREVHXzJfUkFEKTtcbiAgICAgIHZhciByb3RRID0gcXVhdC5tdWx0aXBseShxdWF0LmNyZWF0ZSgpLCByb3RZLCByb3RYKTtcbiAgICAgIHJvdFEgPSBxdWF0Lm11bHRpcGx5KHF1YXQuY3JlYXRlKCksIHJvdFEsIHJvdFopO1xuICAgICAgdmFyIHJvdE1hdHJpeCA9IG1hdDQuZnJvbVF1YXQobWF0NC5jcmVhdGUoKSwgcm90USk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLk9SQklUSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgdGhpcy5mb2NhbFBvaW50KTtcbiAgICAgICAgbWF0NC5tdWx0aXBseSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIHJvdE1hdHJpeCk7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgWzAsIDAsIHRoaXMuZGlzdGFuY2VdKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICBtYXQ0LnRyYW5zbGF0ZSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIHRoaXMucG9zaXRpb24pO1xuICAgICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgcm90TWF0cml4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY2FtZXJhIHBvc2l0aW9uIGluIHRoZSBjYW1lcmEgbWF0cml4XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfc2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3NldFBvc2l0aW9uKHgsIHksIHopIHtcbiAgICAgIHRoaXMucG9zaXRpb24gPSBjcmVhdGVWZWMzKHgsIHksIHopO1xuICAgICAgdmFyIG0gPSB0aGlzLm1hdHJpeDtcbiAgICAgIG1bMTJdID0gdGhpcy5wb3NpdGlvblswXTtcbiAgICAgIG1bMTNdID0gdGhpcy5wb3NpdGlvblsxXTtcbiAgICAgIG1bMTRdID0gdGhpcy5wb3NpdGlvblsyXTtcbiAgICAgIG1bMTVdID0gMTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVjYWxjdWxhdGVzIGF4ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbWF0cml4XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QXhlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0QXhlcygpIHtcbiAgICAgIHZlYzMuY29weSh0aGlzLnJpZ2h0LCBjcmVhdGVWZWMzKHZlYzQudHJhbnNmb3JtTWF0NCh2ZWM0LmNyZWF0ZSgpLCBbMSwgMCwgMCwgMF0sIHRoaXMubWF0cml4KSkpO1xuICAgICAgdmVjMy5jb3B5KHRoaXMudXAsIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFswLCAxLCAwLCAwXSwgdGhpcy5tYXRyaXgpKSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5mb3J3YXJkLCBjcmVhdGVWZWMzKHZlYzQudHJhbnNmb3JtTWF0NCh2ZWM0LmNyZWF0ZSgpLCBbMCwgMCwgMSwgMF0sIHRoaXMubWF0cml4KSkpO1xuICAgICAgdmVjMy5ub3JtYWxpemUodGhpcy5yaWdodCwgdGhpcy5yaWdodCk7XG4gICAgICB2ZWMzLm5vcm1hbGl6ZSh0aGlzLnVwLCB0aGlzLnVwKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRoaXMuZm9yd2FyZCwgdGhpcy5mb3J3YXJkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVjYWxjdWxhdGVzIGV1bGVyIGFuZ2xlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiX2dldEFuZ2xlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0QW5nbGVzKCkge1xuICAgICAgLy8gUmVjYWxjdWxhdGVzIGFuZ2xlc1xuICAgICAgdmFyIHggPSB0aGlzLmRpc3RhbmNlVmVjdG9yWzBdO1xuICAgICAgdmFyIHkgPSB0aGlzLmRpc3RhbmNlVmVjdG9yWzFdO1xuICAgICAgdmFyIHogPSB0aGlzLmRpc3RhbmNlVmVjdG9yWzJdO1xuICAgICAgdmFyIHIgPSB2ZWMzLmxlbmd0aCh0aGlzLmRpc3RhbmNlVmVjdG9yKTsgLy8gRkFTVCBGQUlMOiBJZiB0aGVyZSBpcyBubyBkaXN0YW5jZSB3ZSBjYW5ub3QgY29tcHV0ZSBhbmdsZXNcblxuICAgICAgaWYgKHIgPT09IDApIHtcbiAgICAgICAgdGhpcy5lbGV2YXRpb24gPSAwO1xuICAgICAgICB0aGlzLmF6aW11dGggPSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuZWxldmF0aW9uID0gTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgdGhpcy5hemltdXRoID0gTWF0aC5hdGFuMigteCwgLXopICogUkFEXzJfREVHO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMucm90YXRlV29ybGQpIHtcbiAgICAgICAgICB0aGlzLmVsZXZhdGlvbiA9IE1hdGguYXNpbih5IC8gcikgKiBSQURfMl9ERUc7XG4gICAgICAgICAgdGhpcy5hemltdXRoID0gTWF0aC5hdGFuMigteCwgLXopICogUkFEXzJfREVHO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWxldmF0aW9uID0gLU1hdGguYXNpbih5IC8gcikgKiBSQURfMl9ERUc7XG4gICAgICAgICAgdGhpcy5hemltdXRoID0gLU1hdGguYXRhbjIoLXgsIC16KSAqIFJBRF8yX0RFRztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDph43mlrDorqHnrpfnm7jmnLrkvY3nva7vvIzlj6rmnIkgT1JCSVRJTkcg5qih5byP55u45py65L2N572u5omN5Lya5Y+R55Sf5Y+Y5YyWXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2dldFBvc2l0aW9uKCkge1xuICAgICAgdmVjMy5jb3B5KHRoaXMucG9zaXRpb24sIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFswLCAwLCAwLCAxXSwgdGhpcy5tYXRyaXgpKSk7IC8vIOebuOacuuS9jee9ruWPmOWMlu+8jOmcgOimgemHjeaWsOiuoeeul+inhui3nVxuXG4gICAgICB0aGlzLl9nZXREaXN0YW5jZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDph43mlrDorqHnrpfop4bngrnvvIzlj6rmnIkgVFJBQ0tJTkcg5qih5byP6KeG54K55omN5Lya5Y+R55Sf5Y+Y5YyWXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0Rm9jYWxQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0Rm9jYWxQb2ludCgpIHtcbiAgICAgIHZlYzMudHJhbnNmb3JtTWF0Myh0aGlzLmRpc3RhbmNlVmVjdG9yLCBbMCwgMCwgLXRoaXMuZGlzdGFuY2VdLCBtYXQzLmZyb21NYXQ0KG1hdDMuY3JlYXRlKCksIHRoaXMubWF0cml4KSk7XG4gICAgICB2ZWMzLmFkZCh0aGlzLmZvY2FsUG9pbnQsIHRoaXMucG9zaXRpb24sIHRoaXMuZGlzdGFuY2VWZWN0b3IpOyAvLyDop4bngrnlj5jljJbvvIzpnIDopoHph43mlrDorqHnrpfop4bot51cblxuICAgICAgdGhpcy5fZ2V0RGlzdGFuY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6YeN5paw6K6h566X6KeG6LedXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0RGlzdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2dldERpc3RhbmNlKCkge1xuICAgICAgdGhpcy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuc3VidHJhY3QodmVjMy5jcmVhdGUoKSwgdGhpcy5mb2NhbFBvaW50LCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMuZGlzdGFuY2UgPSB2ZWMzLmxlbmd0aCh0aGlzLmRpc3RhbmNlVmVjdG9yKTtcbiAgICAgIHRoaXMuZG9sbHlpbmdTdGVwID0gdGhpcy5kaXN0YW5jZSAvIDEwMDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2FtZXJhO1xufSgpLCBfY2xhc3MzLlByb2plY3Rpb25Nb2RlID0ge1xuICBPUlRIT0dSQVBISUM6ICdPUlRIT0dSQVBISUMnLFxuICBQRVJTUEVDVElWRTogJ1BFUlNQRUNUSVZFJ1xufSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImludGVyYWN0b3JcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNhbWVyYS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/camera/Camera.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/camera/Landmark.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/camera/Landmark.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Landmark; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * 保存相机状态,便于后续在多个 Landmark 间移动\n */\nvar Landmark = /*#__PURE__*/function () {\n function Landmark(name, c) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Landmark);\n\n this.name = void 0;\n this.matrix = void 0;\n this.right = void 0;\n this.up = void 0;\n this.forward = void 0;\n this.position = void 0;\n this.focalPoint = void 0;\n this.distanceVector = void 0;\n this.distance = void 0;\n this.dollyingStep = void 0;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.name = name;\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].clone(c.matrix);\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.right);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.up);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.forward);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.position);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.focalPoint);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.distanceVector);\n this.azimuth = c.azimuth;\n this.elevation = c.elevation;\n this.roll = c.roll;\n this.relAzimuth = c.relAzimuth;\n this.relElevation = c.relElevation;\n this.relRoll = c.relRoll;\n this.dollyingStep = c.dollyingStep;\n this.distance = c.distance;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Landmark, [{\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"getFocalPoint\",\n value: function getFocalPoint() {\n return this.focalPoint;\n }\n }, {\n key: \"getRoll\",\n value: function getRoll() {\n return this.roll;\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(c) {\n c.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].copy(c.matrix, this.matrix);\n c.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.right, this.right);\n c.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.up, this.up);\n c.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.forward, this.forward);\n c.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.position, this.position);\n c.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.focalPoint, this.focalPoint);\n c.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.distanceVector, this.distanceVector);\n c.azimuth = this.azimuth;\n c.elevation = this.elevation;\n c.roll = this.roll;\n c.relAzimuth = this.relAzimuth;\n c.relElevation = this.relElevation;\n c.relRoll = this.relRoll;\n c.dollyingStep = this.dollyingStep;\n c.distance = this.distance;\n }\n }]);\n\n return Landmark;\n}();\n\n\n//# sourceMappingURL=Landmark.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0xhbmRtYXJrLmpzP2I5ZGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUN2Qjs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsOENBQUk7QUFDdEIsaUJBQWlCLDhDQUFJO0FBQ3JCLGNBQWMsOENBQUk7QUFDbEIsbUJBQW1CLDhDQUFJO0FBQ3ZCLG9CQUFvQiw4Q0FBSTtBQUN4QixzQkFBc0IsOENBQUk7QUFDMUIsMEJBQTBCLDhDQUFJO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiw4Q0FBSTtBQUNyQixnQkFBZ0IsOENBQUk7QUFDcEIsYUFBYSw4Q0FBSTtBQUNqQixrQkFBa0IsOENBQUk7QUFDdEIsbUJBQW1CLDhDQUFJO0FBQ3ZCLHFCQUFxQiw4Q0FBSTtBQUN6Qix5QkFBeUIsOENBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRThCO0FBQy9CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2NhbWVyYS9MYW5kbWFyay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IG1hdDQsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuXG4vKipcbiAqIOS/neWtmOebuOacuueKtuaAge+8jOS+v+S6juWQjue7reWcqOWkmuS4qiBMYW5kbWFyayDpl7Tnp7vliqhcbiAqL1xudmFyIExhbmRtYXJrID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGFuZG1hcmsobmFtZSwgYykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMYW5kbWFyayk7XG5cbiAgICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXRyaXggPSB2b2lkIDA7XG4gICAgdGhpcy5yaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLnVwID0gdm9pZCAwO1xuICAgIHRoaXMuZm9yd2FyZCA9IHZvaWQgMDtcbiAgICB0aGlzLnBvc2l0aW9uID0gdm9pZCAwO1xuICAgIHRoaXMuZm9jYWxQb2ludCA9IHZvaWQgMDtcbiAgICB0aGlzLmRpc3RhbmNlVmVjdG9yID0gdm9pZCAwO1xuICAgIHRoaXMuZGlzdGFuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5kb2xseWluZ1N0ZXAgPSB2b2lkIDA7XG4gICAgdGhpcy5hemltdXRoID0gMDtcbiAgICB0aGlzLmVsZXZhdGlvbiA9IDA7XG4gICAgdGhpcy5yb2xsID0gMDtcbiAgICB0aGlzLnJlbEF6aW11dGggPSAwO1xuICAgIHRoaXMucmVsRWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJlbFJvbGwgPSAwO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5tYXRyaXggPSBtYXQ0LmNsb25lKGMubWF0cml4KTtcbiAgICB0aGlzLnJpZ2h0ID0gdmVjMy5jbG9uZShjLnJpZ2h0KTtcbiAgICB0aGlzLnVwID0gdmVjMy5jbG9uZShjLnVwKTtcbiAgICB0aGlzLmZvcndhcmQgPSB2ZWMzLmNsb25lKGMuZm9yd2FyZCk7XG4gICAgdGhpcy5wb3NpdGlvbiA9IHZlYzMuY2xvbmUoYy5wb3NpdGlvbik7XG4gICAgdGhpcy5mb2NhbFBvaW50ID0gdmVjMy5jbG9uZShjLmZvY2FsUG9pbnQpO1xuICAgIHRoaXMuZGlzdGFuY2VWZWN0b3IgPSB2ZWMzLmNsb25lKGMuZGlzdGFuY2VWZWN0b3IpO1xuICAgIHRoaXMuYXppbXV0aCA9IGMuYXppbXV0aDtcbiAgICB0aGlzLmVsZXZhdGlvbiA9IGMuZWxldmF0aW9uO1xuICAgIHRoaXMucm9sbCA9IGMucm9sbDtcbiAgICB0aGlzLnJlbEF6aW11dGggPSBjLnJlbEF6aW11dGg7XG4gICAgdGhpcy5yZWxFbGV2YXRpb24gPSBjLnJlbEVsZXZhdGlvbjtcbiAgICB0aGlzLnJlbFJvbGwgPSBjLnJlbFJvbGw7XG4gICAgdGhpcy5kb2xseWluZ1N0ZXAgPSBjLmRvbGx5aW5nU3RlcDtcbiAgICB0aGlzLmRpc3RhbmNlID0gYy5kaXN0YW5jZTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMYW5kbWFyaywgW3tcbiAgICBrZXk6IFwiZ2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Rm9jYWxQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGb2NhbFBvaW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9jYWxQb2ludDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Um9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSb2xsKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9sbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmV0cmlldmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmV0cmlldmUoYykge1xuICAgICAgYy5tYXRyaXggPSBtYXQ0LmNvcHkoYy5tYXRyaXgsIHRoaXMubWF0cml4KTtcbiAgICAgIGMucmlnaHQgPSB2ZWMzLmNvcHkoYy5yaWdodCwgdGhpcy5yaWdodCk7XG4gICAgICBjLnVwID0gdmVjMy5jb3B5KGMudXAsIHRoaXMudXApO1xuICAgICAgYy5mb3J3YXJkID0gdmVjMy5jb3B5KGMuZm9yd2FyZCwgdGhpcy5mb3J3YXJkKTtcbiAgICAgIGMucG9zaXRpb24gPSB2ZWMzLmNvcHkoYy5wb3NpdGlvbiwgdGhpcy5wb3NpdGlvbik7XG4gICAgICBjLmZvY2FsUG9pbnQgPSB2ZWMzLmNvcHkoYy5mb2NhbFBvaW50LCB0aGlzLmZvY2FsUG9pbnQpO1xuICAgICAgYy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuY29weShjLmRpc3RhbmNlVmVjdG9yLCB0aGlzLmRpc3RhbmNlVmVjdG9yKTtcbiAgICAgIGMuYXppbXV0aCA9IHRoaXMuYXppbXV0aDtcbiAgICAgIGMuZWxldmF0aW9uID0gdGhpcy5lbGV2YXRpb247XG4gICAgICBjLnJvbGwgPSB0aGlzLnJvbGw7XG4gICAgICBjLnJlbEF6aW11dGggPSB0aGlzLnJlbEF6aW11dGg7XG4gICAgICBjLnJlbEVsZXZhdGlvbiA9IHRoaXMucmVsRWxldmF0aW9uO1xuICAgICAgYy5yZWxSb2xsID0gdGhpcy5yZWxSb2xsO1xuICAgICAgYy5kb2xseWluZ1N0ZXAgPSB0aGlzLmRvbGx5aW5nU3RlcDtcbiAgICAgIGMuZGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMYW5kbWFyaztcbn0oKTtcblxuZXhwb3J0IHsgTGFuZG1hcmsgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFuZG1hcmsuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/camera/Landmark.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/geometry/Box.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/geometry/Box.js ***!
\********************************************************/
/*! exports provided: Box */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Box\", function() { return Box; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\nvar primitiveUv1Padding = 4.0 / 64;\nvar primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nvar\n/**\n * borrow from playcanvas:\n * Creates a procedural box-shaped mesh\n */\nBox = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Box, _Geometry);\n\n var _super = _createSuper(Box);\n\n function Box() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Box);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Box, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 1 : _this$config$widthSeg,\n _this$config$heightSe = _this$config.heightSegments,\n heightSegments = _this$config$heightSe === void 0 ? 1 : _this$config$heightSe,\n _this$config$depthSeg = _this$config.depthSegments,\n depthSegments = _this$config$depthSeg === void 0 ? 1 : _this$config$depthSeg,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(0.5, 0.5, 0.5) : _this$config$halfExte;\n var ws = widthSegments;\n var hs = heightSegments;\n var ds = depthSegments;\n\n var _halfExtents = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(halfExtents, 3),\n hex = _halfExtents[0],\n hey = _halfExtents[1],\n hez = _halfExtents[2];\n\n var corners = [gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, -hez)];\n var faceAxes = [[0, 1, 3], // FRONT\n [4, 5, 7], // BACK\n [3, 2, 6], // TOP\n [1, 0, 4], // BOTTOM\n [1, 4, 2], // RIGHT\n [5, 0, 6] // LEFT\n ];\n var faceNormals = [[0, 0, 1], // FRONT\n [0, 0, -1], // BACK\n [0, 1, 0], // TOP\n [0, -1, 0], // BOTTOM\n [1, 0, 0], // RIGHT\n [-1, 0, 0] // LEFT\n ];\n var sides = {\n FRONT: 0,\n BACK: 1,\n TOP: 2,\n BOTTOM: 3,\n RIGHT: 4,\n LEFT: 5\n };\n var positions = [];\n var normals = [];\n var uvs = [];\n var uvs1 = [];\n var indices = [];\n var vcounter = 0;\n\n var generateFace = function generateFace(side, uSegments, vSegments) {\n var u;\n var v;\n var i;\n var j;\n\n for (i = 0; i <= uSegments; i++) {\n for (j = 0; j <= vSegments; j++) {\n var temp1 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp2 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp3 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp1, corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp2, corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].sub(temp3, temp2, corners[faceAxes[side][0]]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].add(r, temp1, temp3);\n u = i / uSegments;\n v = j / vSegments;\n positions.push(r[0], r[1], r[2]);\n normals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n uvs.push(u, v); // pack as 3x2\n // 1/3 will be empty, but it's either that or stretched pixels\n // TODO: generate non-rectangular lightMaps, so we could use space without stretching\n\n u /= 3;\n v /= 3;\n u = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n v = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n u += side % 3 / 3;\n v += Math.floor(side / 3) / 3;\n uvs1.push(u, v);\n\n if (i < uSegments && j < vSegments) {\n indices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n }\n };\n\n generateFace(sides.FRONT, ws, hs);\n generateFace(sides.BACK, ws, hs);\n generateFace(sides.TOP, ws, ds);\n generateFace(sides.BOTTOM, ws, ds);\n generateFace(sides.RIGHT, ds, hs);\n generateFace(sides.LEFT, ds, hs); // generate AABB\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Box;\n}(___WEBPACK_IMPORTED_MODULE_9__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Box.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvQm94LmpzPzcxMWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0U7QUFDRTtBQUNOO0FBQ047QUFDa0M7QUFDdEI7O0FBRXBFOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRW5RO0FBQzlCO0FBQ007QUFDVjtBQUM3QjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQVU7QUFDeEIsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELDhDQUFJO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsMkVBQWM7QUFDdkM7QUFDQTtBQUNBOztBQUVBLHFCQUFxQiw4Q0FBSSw4QkFBOEIsOENBQUksNkJBQTZCLDhDQUFJLDRCQUE0Qiw4Q0FBSSw2QkFBNkIsOENBQUksOEJBQThCLDhDQUFJLCtCQUErQiw4Q0FBSSw4QkFBOEIsOENBQUk7QUFDcFE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLHFCQUFxQixnQkFBZ0I7QUFDckMsd0JBQXdCLDhDQUFJO0FBQzVCLHdCQUF3Qiw4Q0FBSTtBQUM1Qix3QkFBd0IsOENBQUk7QUFDNUIsb0JBQW9CLDhDQUFJO0FBQ3hCLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTtBQUNoQixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QyxpQkFBaUIsb0ZBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTtBQUNUO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywwQ0FBUTtBQUNWIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L0JveC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG52YXIgX2RlYywgX2NsYXNzO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLic7XG52YXIgcHJpbWl0aXZlVXYxUGFkZGluZyA9IDQuMCAvIDY0O1xudmFyIHByaW1pdGl2ZVV2MVBhZGRpbmdTY2FsZSA9IDEuMCAtIHByaW1pdGl2ZVV2MVBhZGRpbmcgKiAyO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBib3Jyb3cgZnJvbSBwbGF5Y2FudmFzOlxuICogQ3JlYXRlcyBhIHByb2NlZHVyYWwgYm94LXNoYXBlZCBtZXNoXG4gKi9cbkJveCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0dlb21ldHJ5KSB7XG4gIF9pbmhlcml0cyhCb3gsIF9HZW9tZXRyeSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihCb3gpO1xuXG4gIGZ1bmN0aW9uIEJveCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQm94KTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCb3gsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJHdpZHRoU2VnID0gX3RoaXMkY29uZmlnLndpZHRoU2VnbWVudHMsXG4gICAgICAgICAgd2lkdGhTZWdtZW50cyA9IF90aGlzJGNvbmZpZyR3aWR0aFNlZyA9PT0gdm9pZCAwID8gMSA6IF90aGlzJGNvbmZpZyR3aWR0aFNlZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckaGVpZ2h0U2UgPSBfdGhpcyRjb25maWcuaGVpZ2h0U2VnbWVudHMsXG4gICAgICAgICAgaGVpZ2h0U2VnbWVudHMgPSBfdGhpcyRjb25maWckaGVpZ2h0U2UgPT09IHZvaWQgMCA/IDEgOiBfdGhpcyRjb25maWckaGVpZ2h0U2UsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGRlcHRoU2VnID0gX3RoaXMkY29uZmlnLmRlcHRoU2VnbWVudHMsXG4gICAgICAgICAgZGVwdGhTZWdtZW50cyA9IF90aGlzJGNvbmZpZyRkZXB0aFNlZyA9PT0gdm9pZCAwID8gMSA6IF90aGlzJGNvbmZpZyRkZXB0aFNlZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckaGFsZkV4dGUgPSBfdGhpcyRjb25maWcuaGFsZkV4dGVudHMsXG4gICAgICAgICAgaGFsZkV4dGVudHMgPSBfdGhpcyRjb25maWckaGFsZkV4dGUgPT09IHZvaWQgMCA/IHZlYzMuZnJvbVZhbHVlcygwLjUsIDAuNSwgMC41KSA6IF90aGlzJGNvbmZpZyRoYWxmRXh0ZTtcbiAgICAgIHZhciB3cyA9IHdpZHRoU2VnbWVudHM7XG4gICAgICB2YXIgaHMgPSBoZWlnaHRTZWdtZW50cztcbiAgICAgIHZhciBkcyA9IGRlcHRoU2VnbWVudHM7XG5cbiAgICAgIHZhciBfaGFsZkV4dGVudHMgPSBfc2xpY2VkVG9BcnJheShoYWxmRXh0ZW50cywgMyksXG4gICAgICAgICAgaGV4ID0gX2hhbGZFeHRlbnRzWzBdLFxuICAgICAgICAgIGhleSA9IF9oYWxmRXh0ZW50c1sxXSxcbiAgICAgICAgICBoZXogPSBfaGFsZkV4dGVudHNbMl07XG5cbiAgICAgIHZhciBjb3JuZXJzID0gW3ZlYzMuZnJvbVZhbHVlcygtaGV4LCAtaGV5LCBoZXopLCB2ZWMzLmZyb21WYWx1ZXMoaGV4LCAtaGV5LCBoZXopLCB2ZWMzLmZyb21WYWx1ZXMoaGV4LCBoZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcygtaGV4LCBoZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIC1oZXksIC1oZXopLCB2ZWMzLmZyb21WYWx1ZXMoLWhleCwgLWhleSwgLWhleiksIHZlYzMuZnJvbVZhbHVlcygtaGV4LCBoZXksIC1oZXopLCB2ZWMzLmZyb21WYWx1ZXMoaGV4LCBoZXksIC1oZXopXTtcbiAgICAgIHZhciBmYWNlQXhlcyA9IFtbMCwgMSwgM10sIC8vIEZST05UXG4gICAgICBbNCwgNSwgN10sIC8vIEJBQ0tcbiAgICAgIFszLCAyLCA2XSwgLy8gVE9QXG4gICAgICBbMSwgMCwgNF0sIC8vIEJPVFRPTVxuICAgICAgWzEsIDQsIDJdLCAvLyBSSUdIVFxuICAgICAgWzUsIDAsIDZdIC8vIExFRlRcbiAgICAgIF07XG4gICAgICB2YXIgZmFjZU5vcm1hbHMgPSBbWzAsIDAsIDFdLCAvLyBGUk9OVFxuICAgICAgWzAsIDAsIC0xXSwgLy8gQkFDS1xuICAgICAgWzAsIDEsIDBdLCAvLyBUT1BcbiAgICAgIFswLCAtMSwgMF0sIC8vIEJPVFRPTVxuICAgICAgWzEsIDAsIDBdLCAvLyBSSUdIVFxuICAgICAgWy0xLCAwLCAwXSAvLyBMRUZUXG4gICAgICBdO1xuICAgICAgdmFyIHNpZGVzID0ge1xuICAgICAgICBGUk9OVDogMCxcbiAgICAgICAgQkFDSzogMSxcbiAgICAgICAgVE9QOiAyLFxuICAgICAgICBCT1RUT006IDMsXG4gICAgICAgIFJJR0hUOiA0LFxuICAgICAgICBMRUZUOiA1XG4gICAgICB9O1xuICAgICAgdmFyIHBvc2l0aW9ucyA9IFtdO1xuICAgICAgdmFyIG5vcm1hbHMgPSBbXTtcbiAgICAgIHZhciB1dnMgPSBbXTtcbiAgICAgIHZhciB1dnMxID0gW107XG4gICAgICB2YXIgaW5kaWNlcyA9IFtdO1xuICAgICAgdmFyIHZjb3VudGVyID0gMDtcblxuICAgICAgdmFyIGdlbmVyYXRlRmFjZSA9IGZ1bmN0aW9uIGdlbmVyYXRlRmFjZShzaWRlLCB1U2VnbWVudHMsIHZTZWdtZW50cykge1xuICAgICAgICB2YXIgdTtcbiAgICAgICAgdmFyIHY7XG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgajtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IHVTZWdtZW50czsgaSsrKSB7XG4gICAgICAgICAgZm9yIChqID0gMDsgaiA8PSB2U2VnbWVudHM7IGorKykge1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgICAgICAgIHZhciB0ZW1wMiA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgdGVtcDMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmFyIHIgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmVjMy5sZXJwKHRlbXAxLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzBdXSwgY29ybmVyc1tmYWNlQXhlc1tzaWRlXVsxXV0sIGkgLyB1U2VnbWVudHMpO1xuICAgICAgICAgICAgdmVjMy5sZXJwKHRlbXAyLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzBdXSwgY29ybmVyc1tmYWNlQXhlc1tzaWRlXVsyXV0sIGogLyB2U2VnbWVudHMpO1xuICAgICAgICAgICAgdmVjMy5zdWIodGVtcDMsIHRlbXAyLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzBdXSk7XG4gICAgICAgICAgICB2ZWMzLmFkZChyLCB0ZW1wMSwgdGVtcDMpO1xuICAgICAgICAgICAgdSA9IGkgLyB1U2VnbWVudHM7XG4gICAgICAgICAgICB2ID0gaiAvIHZTZWdtZW50cztcbiAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHJbMF0sIHJbMV0sIHJbMl0pO1xuICAgICAgICAgICAgbm9ybWFscy5wdXNoKGZhY2VOb3JtYWxzW3NpZGVdWzBdLCBmYWNlTm9ybWFsc1tzaWRlXVsxXSwgZmFjZU5vcm1hbHNbc2lkZV1bMl0pO1xuICAgICAgICAgICAgdXZzLnB1c2godSwgdik7IC8vIHBhY2sgYXMgM3gyXG4gICAgICAgICAgICAvLyAxLzMgd2lsbCBiZSBlbXB0eSwgYnV0IGl0J3MgZWl0aGVyIHRoYXQgb3Igc3RyZXRjaGVkIHBpeGVsc1xuICAgICAgICAgICAgLy8gVE9ETzogZ2VuZXJhdGUgbm9uLXJlY3Rhbmd1bGFyIGxpZ2h0TWFwcywgc28gd2UgY291bGQgdXNlIHNwYWNlIHdpdGhvdXQgc3RyZXRjaGluZ1xuXG4gICAgICAgICAgICB1IC89IDM7XG4gICAgICAgICAgICB2IC89IDM7XG4gICAgICAgICAgICB1ID0gdSAqIHByaW1pdGl2ZVV2MVBhZGRpbmdTY2FsZSArIHByaW1pdGl2ZVV2MVBhZGRpbmc7XG4gICAgICAgICAgICB2ID0gdiAqIHByaW1pdGl2ZVV2MVBhZGRpbmdTY2FsZSArIHByaW1pdGl2ZVV2MVBhZGRpbmc7XG4gICAgICAgICAgICB1ICs9IHNpZGUgJSAzIC8gMztcbiAgICAgICAgICAgIHYgKz0gTWF0aC5mbG9vcihzaWRlIC8gMykgLyAzO1xuICAgICAgICAgICAgdXZzMS5wdXNoKHUsIHYpO1xuXG4gICAgICAgICAgICBpZiAoaSA8IHVTZWdtZW50cyAmJiBqIDwgdlNlZ21lbnRzKSB7XG4gICAgICAgICAgICAgIGluZGljZXMucHVzaCh2Y291bnRlciArIHZTZWdtZW50cyArIDEsIHZjb3VudGVyICsgMSwgdmNvdW50ZXIpO1xuICAgICAgICAgICAgICBpbmRpY2VzLnB1c2godmNvdW50ZXIgKyB2U2VnbWVudHMgKyAxLCB2Y291bnRlciArIHZTZWdtZW50cyArIDIsIHZjb3VudGVyICsgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZjb3VudGVyKys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuRlJPTlQsIHdzLCBocyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuQkFDSywgd3MsIGhzKTtcbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5UT1AsIHdzLCBkcyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuQk9UVE9NLCB3cywgZHMpO1xuICAgICAgZ2VuZXJhdGVGYWNlKHNpZGVzLlJJR0hULCBkcywgaHMpO1xuICAgICAgZ2VuZXJhdGVGYWNlKHNpZGVzLkxFRlQsIGRzLCBocyk7IC8vIGdlbmVyYXRlIEFBQkJcblxuICAgICAgdmFyIGFhYmIgPSBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMocG9zaXRpb25zKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgY29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKGluZGljZXMpO1xuICAgICAgY29tcG9uZW50LmFhYmIgPSBhYWJiO1xuICAgICAgY29tcG9uZW50LnZlcnRleENvdW50ID0gdmNvdW50ZXI7XG4gICAgICBjb21wb25lbnQuYXR0cmlidXRlcyA9IFt7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbShwb3NpdGlvbnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ25vcm1hbCcsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKG5vcm1hbHMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3V2JyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20odXZzKSxcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH1dOyAvLyBUT0RPOiBiYXJ5Y2VudHJpYyAmIHRhbmdlbnRcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQm94O1xufShHZW9tZXRyeSkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Cb3guanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Box.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/geometry/Merged.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/geometry/Merged.js ***!
\***********************************************************/
/*! exports provided: Merged */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Merged\", function() { return Merged; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js\");\n/* harmony import */ var _utils_typedarray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/typedarray */ \"./node_modules/@antv/g-webgpu/es/utils/typedarray.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar\n/**\n * merge many geometries into one, use a batch of draw calls\n */\nMerged = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Merged, _Geometry);\n\n var _super = _createSuper(Merged);\n\n function Merged() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Merged);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Merged, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config$geometri = this.config.geometries,\n geometries = _this$config$geometri === void 0 ? [] : _this$config$geometri;\n var mergedComponent = this.getComponent();\n mergedComponent.aabb = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n var mergedAttributes = [];\n var mergedIndices = [];\n var indexOffset = 0;\n geometries.forEach(function (geometry) {\n var aabb = geometry.aabb,\n indices = geometry.indices,\n vertexCount = geometry.vertexCount,\n attributes = geometry.attributes; // merge aabb\n\n mergedComponent.aabb.add(aabb);\n mergedComponent.vertexCount += vertexCount; // merge indices\n\n if (indices) {\n mergedIndices.push.apply(mergedIndices, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(indices.map(function (index) {\n return index + indexOffset;\n })));\n }\n\n indexOffset += vertexCount; // merge attributes\n\n attributes.forEach(function (attribute, i) {\n if (!mergedAttributes[i]) {\n mergedAttributes[i] = attribute;\n mergedAttributes[i].dirty = true;\n } else {\n if (attribute.data) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_9__[\"isNumber\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].push(attribute.data);\n } else if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__[\"isTypedArray\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].data = Object(_utils_typedarray__WEBPACK_IMPORTED_MODULE_11__[\"merge\"])( // @ts-ignore\n mergedAttributes[i].data, attribute.data);\n } else {\n // @ts-ignore\n mergedAttributes[i].data = mergedAttributes[i].data.concat(attribute.data);\n }\n }\n }\n });\n });\n mergedComponent.attributes = mergedAttributes;\n mergedComponent.indices = Uint32Array.from(mergedIndices);\n mergedComponent.dirty = true;\n }\n }]);\n\n return Merged;\n}(___WEBPACK_IMPORTED_MODULE_8__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Merged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvTWVyZ2VkLmpzP2Y1MTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ047QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUV2UjtBQUNKO0FBQ1Y7QUFDaUI7QUFDUTtBQUNWO0FBQ3JDO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFVO0FBQzNCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHdEQUFJO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBLG1EQUFtRDs7QUFFbkQ7QUFDQSxrREFBa0QsK0VBQWtCO0FBQ3BFO0FBQ0EsV0FBVztBQUNYOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxrQkFBa0IsaUVBQVE7QUFDMUI7QUFDQTtBQUNBLGVBQWUsVUFBVSwwRUFBWTtBQUNyQztBQUNBLDJDQUEyQyxnRUFBSztBQUNoRDtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMENBQVE7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9nZW9tZXRyeS9NZXJnZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG52YXIgX2RlYywgX2NsYXNzO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IEFBQkIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbHMvaXMtbnVtYmVyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICcuLi91dGlscy90eXBlZGFycmF5JztcbmV4cG9ydCB2YXJcbi8qKlxuICogbWVyZ2UgbWFueSBnZW9tZXRyaWVzIGludG8gb25lLCB1c2UgYSBiYXRjaCBvZiBkcmF3IGNhbGxzXG4gKi9cbk1lcmdlZCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0dlb21ldHJ5KSB7XG4gIF9pbmhlcml0cyhNZXJnZWQsIF9HZW9tZXRyeSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNZXJnZWQpO1xuXG4gIGZ1bmN0aW9uIE1lcmdlZCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWVyZ2VkKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNZXJnZWQsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnJGdlb21ldHJpID0gdGhpcy5jb25maWcuZ2VvbWV0cmllcyxcbiAgICAgICAgICBnZW9tZXRyaWVzID0gX3RoaXMkY29uZmlnJGdlb21ldHJpID09PSB2b2lkIDAgPyBbXSA6IF90aGlzJGNvbmZpZyRnZW9tZXRyaTtcbiAgICAgIHZhciBtZXJnZWRDb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmFhYmIgPSBuZXcgQUFCQigpO1xuICAgICAgdmFyIG1lcmdlZEF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHZhciBtZXJnZWRJbmRpY2VzID0gW107XG4gICAgICB2YXIgaW5kZXhPZmZzZXQgPSAwO1xuICAgICAgZ2VvbWV0cmllcy5mb3JFYWNoKGZ1bmN0aW9uIChnZW9tZXRyeSkge1xuICAgICAgICB2YXIgYWFiYiA9IGdlb21ldHJ5LmFhYmIsXG4gICAgICAgICAgICBpbmRpY2VzID0gZ2VvbWV0cnkuaW5kaWNlcyxcbiAgICAgICAgICAgIHZlcnRleENvdW50ID0gZ2VvbWV0cnkudmVydGV4Q291bnQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gZ2VvbWV0cnkuYXR0cmlidXRlczsgLy8gbWVyZ2UgYWFiYlxuXG4gICAgICAgIG1lcmdlZENvbXBvbmVudC5hYWJiLmFkZChhYWJiKTtcbiAgICAgICAgbWVyZ2VkQ29tcG9uZW50LnZlcnRleENvdW50ICs9IHZlcnRleENvdW50OyAvLyBtZXJnZSBpbmRpY2VzXG5cbiAgICAgICAgaWYgKGluZGljZXMpIHtcbiAgICAgICAgICBtZXJnZWRJbmRpY2VzLnB1c2guYXBwbHkobWVyZ2VkSW5kaWNlcywgX3RvQ29uc3VtYWJsZUFycmF5KGluZGljZXMubWFwKGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4T2Zmc2V0ICs9IHZlcnRleENvdW50OyAvLyBtZXJnZSBhdHRyaWJ1dGVzXG5cbiAgICAgICAgYXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUsIGkpIHtcbiAgICAgICAgICBpZiAoIW1lcmdlZEF0dHJpYnV0ZXNbaV0pIHtcbiAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0gPSBhdHRyaWJ1dGU7XG4gICAgICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2ldLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5kYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChpc051bWJlcihhdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5wdXNoKGF0dHJpYnV0ZS5kYXRhKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoYXR0cmlidXRlLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGF0YSA9IG1lcmdlKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhLCBhdHRyaWJ1dGUuZGF0YSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGF0YSA9IG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGF0YS5jb25jYXQoYXR0cmlidXRlLmRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmF0dHJpYnV0ZXMgPSBtZXJnZWRBdHRyaWJ1dGVzO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKG1lcmdlZEluZGljZXMpO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmRpcnR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVyZ2VkO1xufShHZW9tZXRyeSkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXJnZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Merged.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/geometry/Plane.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/geometry/Plane.js ***!
\**********************************************************/
/*! exports provided: Plane */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nPlane = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Plane, _Geometry);\n\n var _super = _createSuper(Plane);\n\n function Plane() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? [0.5, 0.5] : _this$config$halfExte,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 5 : _this$config$widthSeg,\n _this$config$lengthSe = _this$config.lengthSegments,\n lengthSegments = _this$config$lengthSe === void 0 ? 5 : _this$config$lengthSe;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n var vcounter = 0;\n\n for (var i = 0; i <= widthSegments; i++) {\n for (var j = 0; j <= lengthSegments; j++) {\n var x = -halfExtents[0] + 2.0 * halfExtents[0] * i / widthSegments;\n var y = 0.0;\n var z = -(-halfExtents[1] + 2.0 * halfExtents[1] * j / lengthSegments);\n var u = i / widthSegments;\n var v = j / lengthSegments;\n positions.push(x, y, z);\n normals.push(0.0, 1.0, 0.0);\n uvs.push(u, v);\n\n if (i < widthSegments && j < lengthSegments) {\n indices.push(vcounter + lengthSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + lengthSegments + 1, vcounter + lengthSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Plane;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvUGxhbmUuanM/NDA5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ047QUFDa0M7QUFDdEI7O0FBRXBFOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRW5RO0FBQ3hCO0FBQ1Y7QUFDdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNERBQVU7QUFDMUIsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLG9CQUFvQjtBQUN6Qyx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLGlCQUFpQixvRkFBd0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFO0FBQ1Q7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDBDQUFRO0FBQ1YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvUGxhbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG52YXIgX2RlYywgX2NsYXNzO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJy4nO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBib3Jyb3cgZnJvbSBwbGF5Y2FudmFzXG4gKi9cblBsYW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKFBsYW5lLCBfR2VvbWV0cnkpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUGxhbmUpO1xuXG4gIGZ1bmN0aW9uIFBsYW5lKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQbGFuZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGxhbmUsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGhhbGZFeHRlID0gX3RoaXMkY29uZmlnLmhhbGZFeHRlbnRzLFxuICAgICAgICAgIGhhbGZFeHRlbnRzID0gX3RoaXMkY29uZmlnJGhhbGZFeHRlID09PSB2b2lkIDAgPyBbMC41LCAwLjVdIDogX3RoaXMkY29uZmlnJGhhbGZFeHRlLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyR3aWR0aFNlZyA9IF90aGlzJGNvbmZpZy53aWR0aFNlZ21lbnRzLFxuICAgICAgICAgIHdpZHRoU2VnbWVudHMgPSBfdGhpcyRjb25maWckd2lkdGhTZWcgPT09IHZvaWQgMCA/IDUgOiBfdGhpcyRjb25maWckd2lkdGhTZWcsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGxlbmd0aFNlID0gX3RoaXMkY29uZmlnLmxlbmd0aFNlZ21lbnRzLFxuICAgICAgICAgIGxlbmd0aFNlZ21lbnRzID0gX3RoaXMkY29uZmlnJGxlbmd0aFNlID09PSB2b2lkIDAgPyA1IDogX3RoaXMkY29uZmlnJGxlbmd0aFNlO1xuICAgICAgdmFyIHBvc2l0aW9ucyA9IFtdO1xuICAgICAgdmFyIG5vcm1hbHMgPSBbXTtcbiAgICAgIHZhciB1dnMgPSBbXTtcbiAgICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgICB2YXIgdmNvdW50ZXIgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSB3aWR0aFNlZ21lbnRzOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gbGVuZ3RoU2VnbWVudHM7IGorKykge1xuICAgICAgICAgIHZhciB4ID0gLWhhbGZFeHRlbnRzWzBdICsgMi4wICogaGFsZkV4dGVudHNbMF0gKiBpIC8gd2lkdGhTZWdtZW50cztcbiAgICAgICAgICB2YXIgeSA9IDAuMDtcbiAgICAgICAgICB2YXIgeiA9IC0oLWhhbGZFeHRlbnRzWzFdICsgMi4wICogaGFsZkV4dGVudHNbMV0gKiBqIC8gbGVuZ3RoU2VnbWVudHMpO1xuICAgICAgICAgIHZhciB1ID0gaSAvIHdpZHRoU2VnbWVudHM7XG4gICAgICAgICAgdmFyIHYgPSBqIC8gbGVuZ3RoU2VnbWVudHM7XG4gICAgICAgICAgcG9zaXRpb25zLnB1c2goeCwgeSwgeik7XG4gICAgICAgICAgbm9ybWFscy5wdXNoKDAuMCwgMS4wLCAwLjApO1xuICAgICAgICAgIHV2cy5wdXNoKHUsIHYpO1xuXG4gICAgICAgICAgaWYgKGkgPCB3aWR0aFNlZ21lbnRzICYmIGogPCBsZW5ndGhTZWdtZW50cykge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKHZjb3VudGVyICsgbGVuZ3RoU2VnbWVudHMgKyAxLCB2Y291bnRlciArIDEsIHZjb3VudGVyKTtcbiAgICAgICAgICAgIGluZGljZXMucHVzaCh2Y291bnRlciArIGxlbmd0aFNlZ21lbnRzICsgMSwgdmNvdW50ZXIgKyBsZW5ndGhTZWdtZW50cyArIDIsIHZjb3VudGVyICsgMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmNvdW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgfSAvLyBnZW5lcmF0ZSBBQUJCXG5cblxuICAgICAgdmFyIGFhYmIgPSBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMocG9zaXRpb25zKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgY29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKGluZGljZXMpO1xuICAgICAgY29tcG9uZW50LmFhYmIgPSBhYWJiO1xuICAgICAgY29tcG9uZW50LnZlcnRleENvdW50ID0gdmNvdW50ZXI7XG4gICAgICBjb21wb25lbnQuYXR0cmlidXRlcyA9IFt7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbShwb3NpdGlvbnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ25vcm1hbCcsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKG5vcm1hbHMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3V2JyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20odXZzKSxcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH1dOyAvLyBUT0RPOiBiYXJ5Y2VudHJpYyAmIHRhbmdlbnRcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGxhbmU7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBsYW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Plane.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/geometry/Sphere.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/geometry/Sphere.js ***!
\***********************************************************/
/*! exports provided: Sphere */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sphere\", function() { return Sphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nSphere = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Sphere, _Geometry);\n\n var _super = _createSuper(Sphere);\n\n function Sphere() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Sphere);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Sphere, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$radius = _this$config.radius,\n radius = _this$config$radius === void 0 ? 0.5 : _this$config$radius,\n _this$config$latitude = _this$config.latitudeBands,\n latitudeBands = _this$config$latitude === void 0 ? 16 : _this$config$latitude,\n _this$config$longitud = _this$config.longitudeBands,\n longitudeBands = _this$config$longitud === void 0 ? 16 : _this$config$longitud;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n\n for (var lat = 0; lat <= latitudeBands; lat++) {\n var theta = lat * Math.PI / latitudeBands;\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n\n for (var lon = 0; lon <= longitudeBands; lon++) {\n // Sweep the sphere from the positive Z axis to match a 3DS Max sphere\n var phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2.0;\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var x = cosPhi * sinTheta;\n var y = cosTheta;\n var z = sinPhi * sinTheta;\n var u = 1.0 - lon / longitudeBands;\n var v = 1.0 - lat / latitudeBands;\n positions.push(x * radius, y * radius, z * radius);\n normals.push(x, y, z);\n uvs.push(u, v);\n }\n }\n\n for (var _lat = 0; _lat < latitudeBands; ++_lat) {\n for (var _lon = 0; _lon < longitudeBands; ++_lon) {\n var first = _lat * (longitudeBands + 1) + _lon;\n var second = first + longitudeBands + 1;\n indices.push(first + 1, second, first);\n indices.push(first + 1, second + 1, second);\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = positions.length / 3;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Sphere;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Sphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvU3BoZXJlLmpzPzE0YjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVuUTtBQUN4QjtBQUNWO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFVO0FBQzNCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0JBQXNCO0FBQzdDO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsdUJBQXVCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLHNCQUFzQjtBQUM5QywwQkFBMEIsdUJBQXVCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxpQkFBaUIsb0ZBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTtBQUNUO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywwQ0FBUTtBQUNWIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L1NwaGVyZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLic7XG5leHBvcnQgdmFyXG4vKipcbiAqIGJvcnJvdyBmcm9tIHBsYXljYW52YXNcbiAqL1xuU3BoZXJlID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKFNwaGVyZSwgX0dlb21ldHJ5KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNwaGVyZSk7XG5cbiAgZnVuY3Rpb24gU3BoZXJlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTcGhlcmUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFNwaGVyZSwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckcmFkaXVzID0gX3RoaXMkY29uZmlnLnJhZGl1cyxcbiAgICAgICAgICByYWRpdXMgPSBfdGhpcyRjb25maWckcmFkaXVzID09PSB2b2lkIDAgPyAwLjUgOiBfdGhpcyRjb25maWckcmFkaXVzLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRsYXRpdHVkZSA9IF90aGlzJGNvbmZpZy5sYXRpdHVkZUJhbmRzLFxuICAgICAgICAgIGxhdGl0dWRlQmFuZHMgPSBfdGhpcyRjb25maWckbGF0aXR1ZGUgPT09IHZvaWQgMCA/IDE2IDogX3RoaXMkY29uZmlnJGxhdGl0dWRlLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRsb25naXR1ZCA9IF90aGlzJGNvbmZpZy5sb25naXR1ZGVCYW5kcyxcbiAgICAgICAgICBsb25naXR1ZGVCYW5kcyA9IF90aGlzJGNvbmZpZyRsb25naXR1ZCA9PT0gdm9pZCAwID8gMTYgOiBfdGhpcyRjb25maWckbG9uZ2l0dWQ7XG4gICAgICB2YXIgcG9zaXRpb25zID0gW107XG4gICAgICB2YXIgbm9ybWFscyA9IFtdO1xuICAgICAgdmFyIHV2cyA9IFtdO1xuICAgICAgdmFyIGluZGljZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgbGF0ID0gMDsgbGF0IDw9IGxhdGl0dWRlQmFuZHM7IGxhdCsrKSB7XG4gICAgICAgIHZhciB0aGV0YSA9IGxhdCAqIE1hdGguUEkgLyBsYXRpdHVkZUJhbmRzO1xuICAgICAgICB2YXIgc2luVGhldGEgPSBNYXRoLnNpbih0aGV0YSk7XG4gICAgICAgIHZhciBjb3NUaGV0YSA9IE1hdGguY29zKHRoZXRhKTtcblxuICAgICAgICBmb3IgKHZhciBsb24gPSAwOyBsb24gPD0gbG9uZ2l0dWRlQmFuZHM7IGxvbisrKSB7XG4gICAgICAgICAgLy8gU3dlZXAgdGhlIHNwaGVyZSBmcm9tIHRoZSBwb3NpdGl2ZSBaIGF4aXMgdG8gbWF0Y2ggYSAzRFMgTWF4IHNwaGVyZVxuICAgICAgICAgIHZhciBwaGkgPSBsb24gKiAyICogTWF0aC5QSSAvIGxvbmdpdHVkZUJhbmRzIC0gTWF0aC5QSSAvIDIuMDtcbiAgICAgICAgICB2YXIgc2luUGhpID0gTWF0aC5zaW4ocGhpKTtcbiAgICAgICAgICB2YXIgY29zUGhpID0gTWF0aC5jb3MocGhpKTtcbiAgICAgICAgICB2YXIgeCA9IGNvc1BoaSAqIHNpblRoZXRhO1xuICAgICAgICAgIHZhciB5ID0gY29zVGhldGE7XG4gICAgICAgICAgdmFyIHogPSBzaW5QaGkgKiBzaW5UaGV0YTtcbiAgICAgICAgICB2YXIgdSA9IDEuMCAtIGxvbiAvIGxvbmdpdHVkZUJhbmRzO1xuICAgICAgICAgIHZhciB2ID0gMS4wIC0gbGF0IC8gbGF0aXR1ZGVCYW5kcztcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaCh4ICogcmFkaXVzLCB5ICogcmFkaXVzLCB6ICogcmFkaXVzKTtcbiAgICAgICAgICBub3JtYWxzLnB1c2goeCwgeSwgeik7XG4gICAgICAgICAgdXZzLnB1c2godSwgdik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgX2xhdCA9IDA7IF9sYXQgPCBsYXRpdHVkZUJhbmRzOyArK19sYXQpIHtcbiAgICAgICAgZm9yICh2YXIgX2xvbiA9IDA7IF9sb24gPCBsb25naXR1ZGVCYW5kczsgKytfbG9uKSB7XG4gICAgICAgICAgdmFyIGZpcnN0ID0gX2xhdCAqIChsb25naXR1ZGVCYW5kcyArIDEpICsgX2xvbjtcbiAgICAgICAgICB2YXIgc2Vjb25kID0gZmlyc3QgKyBsb25naXR1ZGVCYW5kcyArIDE7XG4gICAgICAgICAgaW5kaWNlcy5wdXNoKGZpcnN0ICsgMSwgc2Vjb25kLCBmaXJzdCk7XG4gICAgICAgICAgaW5kaWNlcy5wdXNoKGZpcnN0ICsgMSwgc2Vjb25kICsgMSwgc2Vjb25kKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBnZW5lcmF0ZSBBQUJCXG5cblxuICAgICAgdmFyIGFhYmIgPSBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMocG9zaXRpb25zKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgY29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKGluZGljZXMpO1xuICAgICAgY29tcG9uZW50LmFhYmIgPSBhYWJiO1xuICAgICAgY29tcG9uZW50LnZlcnRleENvdW50ID0gcG9zaXRpb25zLmxlbmd0aCAvIDM7XG4gICAgICBjb21wb25lbnQuYXR0cmlidXRlcyA9IFt7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbShwb3NpdGlvbnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ25vcm1hbCcsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKG5vcm1hbHMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3V2JyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20odXZzKSxcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH1dOyAvLyBUT0RPOiBiYXJ5Y2VudHJpYyAmIHRhbmdlbnRcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3BoZXJlO1xufShHZW9tZXRyeSkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TcGhlcmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Sphere.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/geometry/index.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/geometry/index.js ***!
\**********************************************************/
/*! exports provided: Geometry */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return Geometry; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Geometry = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].GeometryComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Geometry() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Geometry);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"geometry\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Geometry, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.component = this.geometry.create(entity);\n this.component.entity = entity;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Geometry;\n}(), _class3.BOX = 'box', _class3.SPHERE = 'sphere', _class3.PLANE = 'plane', _class3.MERGED = 'merged', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvaW5kZXguanM/ZmZhNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFaUQ7QUFDRjtBQUN4Qyx1QkFBdUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVO0FBQ3JFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7O0FBRUEsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywrSEFBK0gsc0ZBQXlCO0FBQ3pKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIEdlb21ldHJ5ID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZW9tZXRyeSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2VvbWV0cnkpO1xuXG4gICAgdGhpcy5jb25maWcgPSB2b2lkIDA7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImdlb21ldHJ5XCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIHRoaXMuZW50aXR5ID0gdm9pZCAwO1xuICAgIHRoaXMuY29tcG9uZW50ID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEdlb21ldHJ5LCBbe1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXR5O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tcG9uZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRFbnRpdHkoZW50aXR5KSB7XG4gICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgIHRoaXMuY29tcG9uZW50ID0gdGhpcy5nZW9tZXRyeS5jcmVhdGUoZW50aXR5KTtcbiAgICAgIHRoaXMuY29tcG9uZW50LmVudGl0eSA9IGVudGl0eTtcbiAgICAgIHRoaXMub25FbnRpdHlDcmVhdGVkKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7Ly9cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gR2VvbWV0cnk7XG59KCksIF9jbGFzczMuQk9YID0gJ2JveCcsIF9jbGFzczMuU1BIRVJFID0gJ3NwaGVyZScsIF9jbGFzczMuUExBTkUgPSAncGxhbmUnLCBfY2xhc3MzLk1FUkdFRCA9ICdtZXJnZWQnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/index.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/index.js ***!
\*************************************************/
/*! exports provided: World, Kernel, Camera, Renderable, Geometry, Material */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return _camera_Camera__WEBPACK_IMPORTED_MODULE_0__[\"Camera\"]; });\n\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return _geometry__WEBPACK_IMPORTED_MODULE_1__[\"Geometry\"]; });\n\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/@antv/g-webgpu/es/Kernel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return _Kernel__WEBPACK_IMPORTED_MODULE_2__[\"Kernel\"]; });\n\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./material */ \"./node_modules/@antv/g-webgpu/es/material/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return _material__WEBPACK_IMPORTED_MODULE_3__[\"Material\"]; });\n\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__[\"Renderable\"]; });\n\n/* harmony import */ var _World__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./World */ \"./node_modules/@antv/g-webgpu/es/World.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return _World__WEBPACK_IMPORTED_MODULE_5__[\"World\"]; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvaW5kZXguanM/YTE5NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNIO0FBQ0o7QUFDSTtBQUNlO0FBQ3JCO0FBQ2lDO0FBQ2pFIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FtZXJhIH0gZnJvbSAnLi9jYW1lcmEvQ2FtZXJhJztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBLZXJuZWwgfSBmcm9tICcuL0tlcm5lbCc7XG5pbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJy4vbWF0ZXJpYWwnO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4vcmVuZGVyYWJsZS9SZW5kZXJhYmxlJztcbmltcG9ydCB7IFdvcmxkIH0gZnJvbSAnLi9Xb3JsZCc7XG5leHBvcnQgeyBXb3JsZCwgS2VybmVsLCBDYW1lcmEsIFJlbmRlcmFibGUsIEdlb21ldHJ5LCBNYXRlcmlhbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/material/basic/index.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/material/basic/index.js ***!
\****************************************************************/
/*! exports provided: Basic */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basic\", function() { return Basic; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! .. */ \"./node_modules/@antv/g-webgpu/es/material/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.basic.frag.glsl' */\nvar webglFragmentShaderGLSL = \"varying vec4 fragColor;\\n\\n#pragma include \\\"uv.frag.declaration\\\"\\n#pragma include \\\"map.frag.declaration\\\"\\n\\nvoid main() {\\n vec4 diffuseColor = fragColor;\\n\\n #pragma include \\\"map.frag.main\\\"\\n\\n gl_FragColor = diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.basic.vert.glsl' */\nvar webglVertexShaderGLSL = \"attribute vec3 position;\\nattribute vec3 normal;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform vec4 color;\\n\\nvarying vec4 fragColor;\\n\\n#pragma include \\\"uv.vert.declaration\\\"\\n\\nvoid main() {\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n fragColor = color;\\n\\n #pragma include \\\"uv.vert.main\\\"\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.frag.glsl' */\nvar webgpuFragmentShaderGLSL = \"// layout(set = 0, binding = 1) uniform WireframeUniforms {\\n// float lineWidth;\\n// vec4 lineColor;\\n// } wireframe;\\n\\nlayout(location = 0) in vec4 fragColor;\\n// layout(location = 1) in vec3 v_Barycentric;\\n\\nlayout(location = 0) out vec4 outColor;\\n\\n// wireframe\\n// float edgeFactor() {\\n// vec3 d = fwidth(v_Barycentric);\\n// vec3 a3 = smoothstep(vec3(0.0), d * wireframe.lineWidth, v_Barycentric);\\n// return min(min(a3.x, a3.y), a3.z);\\n// }\\n\\nvoid main() {\\n // outColor = mix(fragColor, wireframe.lineColor, (1.0 - edgeFactor()));\\n outColor = fragColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.vert.glsl' */\nvar webgpuVertexShaderGLSL = \"layout(set = 0, binding = 0) uniform Uniforms {\\n vec4 color;\\n mat4 projectionMatrix;\\n mat4 modelViewMatrix;\\n} uniforms;\\n\\nlayout(location = 0) in vec3 position;\\n// layout(location = 1) in vec3 barycentric;\\n\\nlayout(location = 0) out vec4 fragColor;\\n// layout(location = 1) out vec3 v_Barycentric;\\n\\nvoid main() {\\n gl_Position = uniforms.projectionMatrix * uniforms.modelViewMatrix * vec4(position, 1.0);\\n fragColor = uniforms.color;\\n // v_Barycentric = barycentric;\\n}\";\nvar\n/**\n * This material is not affected by lights.\n * @see https://threejs.org/docs/#api/en/materials/MeshBasicMaterial\n */\nBasic = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Material) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Basic, _Material);\n\n var _super = _createSuper(Basic);\n\n function Basic() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Basic);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"engine\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Basic, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var component = this.getComponent();\n var vertexShaderGLSL = this.engine.supportWebGPU ? webgpuVertexShaderGLSL : webglVertexShaderGLSL;\n var fragmentShaderGLSL = this.engine.supportWebGPU ? webgpuFragmentShaderGLSL : webglFragmentShaderGLSL;\n this.shaderModuleService.registerModule('material-basic', {\n vs: vertexShaderGLSL,\n fs: fragmentShaderGLSL\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('material-basic'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n component.vertexShaderGLSL = vs;\n component.fragmentShaderGLSL = fs; // @ts-ignore\n\n component.setUniform(extractedUniforms);\n\n if (this.config.map) {\n component.setDefines({\n USE_UV: 1,\n USE_MAP: 1\n });\n component.setUniform({\n // @ts-ignore\n map: this.config.map,\n uvTransform: gl_matrix__WEBPACK_IMPORTED_MODULE_10__[\"mat3\"].create()\n });\n }\n }\n }]);\n\n return Basic;\n}(___WEBPACK_IMPORTED_MODULE_12__[\"Material\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvbWF0ZXJpYWwvYmFzaWMvaW5kZXguanM/N2U2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRWpSO0FBQ2hCO0FBQ2M7QUFDakI7O0FBRTlCO0FBQ0Esc0RBQXNELHNHQUFzRyxrQ0FBa0MseUVBQXlFLEdBQUc7O0FBRTFRO0FBQ0EscURBQXFELHdCQUF3QixrQ0FBa0MsK0JBQStCLHFCQUFxQiwyQkFBMkIsNERBQTRELDJFQUEyRSxzQkFBc0IseUNBQXlDOztBQUVwWTtBQUNBLDJGQUEyRix1QkFBdUIsc0JBQXNCLE1BQU0sV0FBVywyQ0FBMkMsZ0RBQWdELDJDQUEyQyx5Q0FBeUMsc0NBQXNDLCtFQUErRSx5Q0FBeUMsTUFBTSxpQkFBaUIsNEVBQTRFLHlCQUF5QixHQUFHOztBQUVybUI7QUFDQSw2RUFBNkUsZUFBZSwwQkFBMEIseUJBQXlCLEdBQUcsVUFBVSwwQ0FBMEMsOENBQThDLDRDQUE0QyxpREFBaUQsaUJBQWlCLDZGQUE2RiwrQkFBK0IsbUNBQW1DLEdBQUc7QUFDN2Y7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVUsd0JBQXdCLHlEQUFNLENBQUMsOERBQVU7QUFDaEcsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CLHVFQUF1RSxhQUFhO0FBQ3BGO0FBQ0E7O0FBRUE7O0FBRUEsSUFBSSx1RkFBMEIsK0JBQStCLG1GQUFzQjs7QUFFbkYsSUFBSSx1RkFBMEIsNkNBQTZDLG1GQUFzQjs7QUFFakc7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0M7O0FBRXhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBSTtBQUMzQixTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMkNBQVEsMEJBQTBCLHNGQUF5QjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9tYXRlcmlhbC9iYXNpYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IG1hdDMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi4nO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLmJhc2ljLmZyYWcuZ2xzbCcgKi9cbnZhciB3ZWJnbEZyYWdtZW50U2hhZGVyR0xTTCA9IFwidmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInV2LmZyYWcuZGVjbGFyYXRpb25cXFwiXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJtYXAuZnJhZy5kZWNsYXJhdGlvblxcXCJcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2ZWM0IGRpZmZ1c2VDb2xvciA9IGZyYWdDb2xvcjtcXG5cXG4gICNwcmFnbWEgaW5jbHVkZSBcXFwibWFwLmZyYWcubWFpblxcXCJcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IGRpZmZ1c2VDb2xvcjtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuYmFzaWMudmVydC5nbHNsJyAqL1xudmFyIHdlYmdsVmVydGV4U2hhZGVyR0xTTCA9IFwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XFxuYXR0cmlidXRlIHZlYzMgbm9ybWFsO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxudW5pZm9ybSB2ZWM0IGNvbG9yO1xcblxcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XFxuXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJ1di52ZXJ0LmRlY2xhcmF0aW9uXFxcIlxcblxcbnZvaWQgbWFpbigpIHtcXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XFxuICBmcmFnQ29sb3IgPSBjb2xvcjtcXG5cXG4gICNwcmFnbWEgaW5jbHVkZSBcXFwidXYudmVydC5tYWluXFxcIlxcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJncHUuYmFzaWMuZnJhZy5nbHNsJyAqL1xudmFyIHdlYmdwdUZyYWdtZW50U2hhZGVyR0xTTCA9IFwiLy8gbGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKSB1bmlmb3JtIFdpcmVmcmFtZVVuaWZvcm1zIHtcXG4vLyAgIGZsb2F0IGxpbmVXaWR0aDtcXG4vLyAgIHZlYzQgbGluZUNvbG9yO1xcbi8vIH0gd2lyZWZyYW1lO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzQgZnJhZ0NvbG9yO1xcbi8vIGxheW91dChsb2NhdGlvbiA9IDEpIGluIHZlYzMgdl9CYXJ5Y2VudHJpYztcXG5cXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBvdXRDb2xvcjtcXG5cXG4vLyB3aXJlZnJhbWVcXG4vLyBmbG9hdCBlZGdlRmFjdG9yKCkge1xcbi8vICAgdmVjMyBkID0gZndpZHRoKHZfQmFyeWNlbnRyaWMpO1xcbi8vICAgdmVjMyBhMyA9IHNtb290aHN0ZXAodmVjMygwLjApLCBkICogd2lyZWZyYW1lLmxpbmVXaWR0aCwgdl9CYXJ5Y2VudHJpYyk7XFxuLy8gICByZXR1cm4gbWluKG1pbihhMy54LCBhMy55KSwgYTMueik7XFxuLy8gfVxcblxcbnZvaWQgbWFpbigpIHtcXG4gIC8vIG91dENvbG9yID0gbWl4KGZyYWdDb2xvciwgd2lyZWZyYW1lLmxpbmVDb2xvciwgKDEuMCAtIGVkZ2VGYWN0b3IoKSkpO1xcbiAgb3V0Q29sb3IgPSBmcmFnQ29sb3I7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdwdS5iYXNpYy52ZXJ0Lmdsc2wnICovXG52YXIgd2ViZ3B1VmVydGV4U2hhZGVyR0xTTCA9IFwibGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAwKSB1bmlmb3JtIFVuaWZvcm1zIHtcXG4gIHZlYzQgY29sb3I7XFxuICBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxuICBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG59IHVuaWZvcm1zO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgcG9zaXRpb247XFxuLy8gbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gdmVjMyBiYXJ5Y2VudHJpYztcXG5cXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBmcmFnQ29sb3I7XFxuLy8gbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IHZlYzMgdl9CYXJ5Y2VudHJpYztcXG5cXG52b2lkIG1haW4oKSB7XFxuICBnbF9Qb3NpdGlvbiA9IHVuaWZvcm1zLnByb2plY3Rpb25NYXRyaXggKiB1bmlmb3Jtcy5tb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xcbiAgZnJhZ0NvbG9yID0gdW5pZm9ybXMuY29sb3I7XFxuICAvLyB2X0JhcnljZW50cmljID0gYmFyeWNlbnRyaWM7XFxufVwiO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBUaGlzIG1hdGVyaWFsIGlzIG5vdCBhZmZlY3RlZCBieSBsaWdodHMuXG4gKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL21hdGVyaWFscy9NZXNoQmFzaWNNYXRlcmlhbFxuICovXG5CYXNpYyA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9NYXRlcmlhbCkge1xuICBfaW5oZXJpdHMoQmFzaWMsIF9NYXRlcmlhbCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihCYXNpYyk7XG5cbiAgZnVuY3Rpb24gQmFzaWMoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJhc2ljKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgX2Rlc2NyaXB0b3IyLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQmFzaWMsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5nZXRDb21wb25lbnQoKTtcbiAgICAgIHZhciB2ZXJ0ZXhTaGFkZXJHTFNMID0gdGhpcy5lbmdpbmUuc3VwcG9ydFdlYkdQVSA/IHdlYmdwdVZlcnRleFNoYWRlckdMU0wgOiB3ZWJnbFZlcnRleFNoYWRlckdMU0w7XG4gICAgICB2YXIgZnJhZ21lbnRTaGFkZXJHTFNMID0gdGhpcy5lbmdpbmUuc3VwcG9ydFdlYkdQVSA/IHdlYmdwdUZyYWdtZW50U2hhZGVyR0xTTCA6IHdlYmdsRnJhZ21lbnRTaGFkZXJHTFNMO1xuICAgICAgdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLnJlZ2lzdGVyTW9kdWxlKCdtYXRlcmlhbC1iYXNpYycsIHtcbiAgICAgICAgdnM6IHZlcnRleFNoYWRlckdMU0wsXG4gICAgICAgIGZzOiBmcmFnbWVudFNoYWRlckdMU0xcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3RoaXMkc2hhZGVyTW9kdWxlU2VyID0gdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLmdldE1vZHVsZSgnbWF0ZXJpYWwtYmFzaWMnKSxcbiAgICAgICAgICB2cyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci52cyxcbiAgICAgICAgICBmcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci5mcyxcbiAgICAgICAgICBleHRyYWN0ZWRVbmlmb3JtcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci51bmlmb3JtcztcblxuICAgICAgY29tcG9uZW50LnZlcnRleFNoYWRlckdMU0wgPSB2cztcbiAgICAgIGNvbXBvbmVudC5mcmFnbWVudFNoYWRlckdMU0wgPSBmczsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICBjb21wb25lbnQuc2V0VW5pZm9ybShleHRyYWN0ZWRVbmlmb3Jtcyk7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5tYXApIHtcbiAgICAgICAgY29tcG9uZW50LnNldERlZmluZXMoe1xuICAgICAgICAgIFVTRV9VVjogMSxcbiAgICAgICAgICBVU0VfTUFQOiAxXG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQuc2V0VW5pZm9ybSh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcDogdGhpcy5jb25maWcubWFwLFxuICAgICAgICAgIHV2VHJhbnNmb3JtOiBtYXQzLmNyZWF0ZSgpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCYXNpYztcbn0oTWF0ZXJpYWwpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/material/basic/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/material/index.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/material/index.js ***!
\**********************************************************/
/*! exports provided: Material */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return Material; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Material = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MaterialComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Material() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Material);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"material\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Material, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity, type) {\n this.entity = entity;\n this.component = this.material.create(entity);\n this.component.entity = entity;\n this.component.type = type;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Material;\n}(), _class3.BASIC = 'basic', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvbWF0ZXJpYWwvaW5kZXguanM/MTg0NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFaUQ7QUFDRjtBQUN4Qyx1QkFBdUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVO0FBQ3JFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7O0FBRUEsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHVDQUF1QztBQUN2QztBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLG9EQUFvRCxzRkFBeUI7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvbWF0ZXJpYWwvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfY2xhc3MzLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmV4cG9ydCB2YXIgTWF0ZXJpYWwgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1hdGVyaWFsKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNYXRlcmlhbCk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHZvaWQgMDtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwibWF0ZXJpYWxcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnQgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWF0ZXJpYWwsIFt7XG4gICAga2V5OiBcImdldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVudGl0eShlbnRpdHksIHR5cGUpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jb21wb25lbnQgPSB0aGlzLm1hdGVyaWFsLmNyZWF0ZShlbnRpdHkpO1xuICAgICAgdGhpcy5jb21wb25lbnQuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jb21wb25lbnQudHlwZSA9IHR5cGU7XG4gICAgICB0aGlzLm9uRW50aXR5Q3JlYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkVudGl0eUNyZWF0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FbnRpdHlDcmVhdGVkKCkgey8vXG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1hdGVyaWFsO1xufSgpLCBfY2xhc3MzLkJBU0lDID0gJ2Jhc2ljJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/material/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/renderable/Renderable.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/renderable/Renderable.js ***!
\*****************************************************************/
/*! exports provided: Renderable */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return Renderable; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\n\n\nvar Renderable = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].TransformComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].SceneGraphSystem), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Renderable() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Renderable);\n\n this.attributes = {};\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"transform\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"sceneGraphSystem\", _descriptor4, this);\n\n this.meshComponent = void 0;\n this.transformComponent = void 0;\n this.entity = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Renderable, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent() {\n return this.transformComponent;\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent() {\n return this.meshComponent;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.cullable.create(entity);\n this.meshComponent = this.mesh.create(entity);\n this.transformComponent = this.transform.create(entity);\n this.onEntityCreated();\n }\n }, {\n key: \"setMaterial\",\n value: function setMaterial(material) {\n this.meshComponent.material = material;\n return this;\n }\n }, {\n key: \"setGeometry\",\n value: function setGeometry(geometry) {\n this.meshComponent.geometry = geometry;\n return this;\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n var _this = this;\n\n Object.keys(attributes).forEach(function (name) {\n if (attributes[name] !== undefined && attributes[name] !== _this.attributes[name]) {\n _this.onAttributeChanged({\n name: name,\n data: attributes[name]\n });\n\n _this.attributes[name] = attributes[name];\n }\n });\n }\n }, {\n key: \"setVisible\",\n value: function setVisible(visible) {\n var _this2 = this;\n\n this.meshComponent.visible = visible;\n this.meshComponent.children.forEach(function (childEntity) {\n var child = _this2.mesh.getComponentByEntity(childEntity);\n\n if (child) {\n child.visible = visible;\n }\n });\n return this;\n }\n }, {\n key: \"isVisible\",\n value: function isVisible() {\n return this.meshComponent.visible;\n }\n }, {\n key: \"attach\",\n value: function attach(parentRenderable) {\n this.sceneGraphSystem.attach(this.entity, parentRenderable.entity);\n return this;\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.sceneGraphSystem.detach(this.entity);\n return this;\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren() {\n this.sceneGraphSystem.detachChildren(this.entity);\n return this;\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }, {\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n\n if (this.meshComponent && this.meshComponent.material) {\n this.meshComponent.material.setUniform(this.convertAttributeName2UniformName(name), data);\n }\n }\n }, {\n key: \"convertAttributeName2UniformName\",\n value: function convertAttributeName2UniformName(attributeName) {\n return attributeName;\n }\n }]);\n\n return Renderable;\n}(), _class3.POINT = 'point', _class3.LINE = 'line', _class3.GRID = 'grid', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"transform\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"sceneGraphSystem\", [_dec5, _dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9SZW5kZXJhYmxlLmpzPzA0MWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlEO0FBQ0s7QUFDL0MseUJBQXlCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVSxnQ0FBZ0Msd0RBQU0sQ0FBQyw4REFBVSxvQ0FBb0Msd0RBQU0sQ0FBQyw4REFBVSxxQ0FBcUMsd0RBQU0sQ0FBQyw4REFBVSxtQkFBbUIsdURBQUssQ0FBQyw4REFBVTtBQUN0UTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsa0dBQWtHLHNGQUF5QjtBQUM1SDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9yZW5kZXJhYmxlL1JlbmRlcmFibGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9kZWM1LCBfZGVjNiwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF9kZXNjcmlwdG9yNCwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBSZW5kZXJhYmxlID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLkN1bGxhYmxlQ29tcG9uZW50TWFuYWdlciksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM1ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM2ID0gbmFtZWQoSURFTlRJRklFUi5TY2VuZUdyYXBoU3lzdGVtKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJhYmxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZW5kZXJhYmxlKTtcblxuICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY3VsbGFibGVcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwidHJhbnNmb3JtXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNjZW5lR3JhcGhTeXN0ZW1cIiwgX2Rlc2NyaXB0b3I0LCB0aGlzKTtcblxuICAgIHRoaXMubWVzaENvbXBvbmVudCA9IHZvaWQgMDtcbiAgICB0aGlzLnRyYW5zZm9ybUNvbXBvbmVudCA9IHZvaWQgMDtcbiAgICB0aGlzLmVudGl0eSA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZW5kZXJhYmxlLCBbe1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXR5O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUcmFuc2Zvcm1Db21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtQ29tcG9uZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRNZXNoQ29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE1lc2hDb21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNoQ29tcG9uZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRFbnRpdHkoZW50aXR5KSB7XG4gICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgIHRoaXMuY3VsbGFibGUuY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQgPSB0aGlzLm1lc2guY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLnRyYW5zZm9ybUNvbXBvbmVudCA9IHRoaXMudHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpO1xuICAgICAgdGhpcy5vbkVudGl0eUNyZWF0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWF0ZXJpYWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWF0ZXJpYWwobWF0ZXJpYWwpIHtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEdlb21ldHJ5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEdlb21ldHJ5KGdlb21ldHJ5KSB7XG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQuZ2VvbWV0cnkgPSBnZW9tZXRyeTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRBdHRyaWJ1dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAoYXR0cmlidXRlc1tuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGF0dHJpYnV0ZXNbbmFtZV0gIT09IF90aGlzLmF0dHJpYnV0ZXNbbmFtZV0pIHtcbiAgICAgICAgICBfdGhpcy5vbkF0dHJpYnV0ZUNoYW5nZWQoe1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZXNbbmFtZV1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIF90aGlzLmF0dHJpYnV0ZXNbbmFtZV0gPSBhdHRyaWJ1dGVzW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0VmlzaWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWaXNpYmxlKHZpc2libGUpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQudmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGRFbnRpdHkpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gX3RoaXMyLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoY2hpbGRFbnRpdHkpO1xuXG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIGNoaWxkLnZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc1Zpc2libGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNWaXNpYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWVzaENvbXBvbmVudC52aXNpYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKHBhcmVudFJlbmRlcmFibGUpIHtcbiAgICAgIHRoaXMuc2NlbmVHcmFwaFN5c3RlbS5hdHRhY2godGhpcy5lbnRpdHksIHBhcmVudFJlbmRlcmFibGUuZW50aXR5KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGV0YWNoKCkge1xuICAgICAgdGhpcy5zY2VuZUdyYXBoU3lzdGVtLmRldGFjaCh0aGlzLmVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoQ2hpbGRyZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGV0YWNoQ2hpbGRyZW4oKSB7XG4gICAgICB0aGlzLnNjZW5lR3JhcGhTeXN0ZW0uZGV0YWNoQ2hpbGRyZW4odGhpcy5lbnRpdHkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7Ly9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25BdHRyaWJ1dGVDaGFuZ2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQXR0cmlidXRlQ2hhbmdlZChfcmVmKSB7XG4gICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgICAgICBkYXRhID0gX3JlZi5kYXRhO1xuXG4gICAgICBpZiAodGhpcy5tZXNoQ29tcG9uZW50ICYmIHRoaXMubWVzaENvbXBvbmVudC5tYXRlcmlhbCkge1xuICAgICAgICB0aGlzLm1lc2hDb21wb25lbnQubWF0ZXJpYWwuc2V0VW5pZm9ybSh0aGlzLmNvbnZlcnRBdHRyaWJ1dGVOYW1lMlVuaWZvcm1OYW1lKG5hbWUpLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29udmVydEF0dHJpYnV0ZU5hbWUyVW5pZm9ybU5hbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udmVydEF0dHJpYnV0ZU5hbWUyVW5pZm9ybU5hbWUoYXR0cmlidXRlTmFtZSkge1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlbmRlcmFibGU7XG59KCksIF9jbGFzczMuUE9JTlQgPSAncG9pbnQnLCBfY2xhc3MzLkxJTkUgPSAnbGluZScsIF9jbGFzczMuR1JJRCA9ICdncmlkJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidHJhbnNmb3JtXCIsIFtfZGVjNF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjQgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNjZW5lR3JhcGhTeXN0ZW1cIiwgW19kZWM1LCBfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZW5kZXJhYmxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/renderable/grid/index.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/renderable/grid/index.js ***!
\*****************************************************************/
/*! exports provided: Grid */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return Grid; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.grid.frag.glsl' */\nvar gridFrag = \"// generate grid, borrow from clay.gl viewer\\n// @see https://github.com/pissang/clay-viewer/blob/master/src/graphic/ground.glsl\\n#extension GL_OES_standard_derivatives : enable\\n\\nvarying vec3 v_Position;\\n// varying vec3 v_Normal;\\n\\nuniform float u_GridSize : 5;\\nuniform float u_GridSize2 : .5;\\nuniform vec4 u_GridColor : [0, 0, 0, 1];\\nuniform vec4 u_GridColor2 : [0.3, 0.3, 0.3, 1];\\nuniform bool u_GridEnabled : true;\\n\\n// uniform vec3 u_LightDirection;\\n// uniform vec3 u_LightColor;\\n// uniform vec3 u_Camera;\\n\\nvoid main() {\\n // vec3 n = v_Normal;\\n // vec3 l = normalize(u_LightDirection);\\n // float NdotL = clamp(dot(n, l), 0.001, 1.0);\\n\\n gl_FragColor = vec4(1.);\\n\\n if (u_GridEnabled) {\\n float wx = v_Position.x;\\n float wz = v_Position.z;\\n // float x0 = abs(fract(wx / u_GridSize - 0.5) - 0.5) / fwidth(wx) * u_GridSize / 2.0;\\n // float z0 = abs(fract(wz / u_GridSize - 0.5) - 0.5) / fwidth(wz) * u_GridSize / 2.0;\\n\\n float x1 = abs(fract(wx / u_GridSize2 - 0.5) - 0.5) / fwidth(wx) * u_GridSize2;\\n float z1 = abs(fract(wz / u_GridSize2 - 0.5) - 0.5) / fwidth(wz) * u_GridSize2;\\n\\n // float v0 = 1.0 - clamp(min(x0, z0), 0.0, 1.0);\\n float v1 = 1.0 - clamp(min(x1, z1), 0.0, 1.0);\\n // if (v0 > 0.1) {\\n // gl_FragColor = mix(gl_FragColor, u_GridColor, v0);\\n // }\\n // else {\\n gl_FragColor = mix(gl_FragColor, u_GridColor2, v1);\\n // }\\n }\\n\\n // float shadowFactor = calcShadow(u_ShadowMap, v_PositionFromLight, l, n);\\n // vec3 diffuseColor = u_LightColor * NdotL * shadowFactor;\\n\\n // gl_FragColor.rgb *= diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.grid.vert.glsl' */\nvar gridVert = \"attribute vec3 a_Position;\\n\\nvarying vec3 v_Position;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nvoid main() {\\n v_Position = a_Position;\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_Position, 1.);\\n}\";\nvar Grid = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Grid, _Renderable);\n\n var _super = _createSuper(Grid);\n\n function Grid() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Grid);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Grid, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'gridColor') {\n mesh.material.setUniform('u_GridColor', data);\n mesh.material.setUniform('u_GridColor2', data);\n } else if (name === 'gridSize') {\n mesh.material.setUniform('u_GridSize', data);\n mesh.material.setUniform('u_GridSize2', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: gridVert,\n fs: gridFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n this.setMaterial(material);\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: 4\n });\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].BACK\n }).setDepth({\n enable: true,\n func: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].LESS\n }); // @ts-ignore\n\n material.setUniform(extractedUniforms);\n this.setAttributes({\n gridColor: this.config.gridColor,\n gridSize: this.config.gridSize\n });\n geometry.setIndex([0, 3, 2, 2, 1, 0]);\n geometry.setAttribute('a_Position', Float32Array.from([-4, -1, -4, 4, -1, -4, 4, -1, 4, -4, -1, 4]), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n }\n }]);\n\n return Grid;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_11__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9ncmlkL2luZGV4LmpzPzcwYmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDb0I7QUFDMUI7QUFDa0M7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFN1E7QUFDQztBQUNYOztBQUUzQztBQUNBLDZOQUE2TiwyQkFBMkIsaUNBQWlDLGlDQUFpQywwQ0FBMEMsaURBQWlELG9DQUFvQyxxQ0FBcUMsK0JBQStCLDJCQUEyQixpQkFBaUIseUJBQXlCLDRDQUE0QyxrREFBa0QsOEJBQThCLDBCQUEwQiw4QkFBOEIsOEJBQThCLDRGQUE0Riw0RkFBNEYsdUZBQXVGLHFGQUFxRix5REFBeUQsb0RBQW9ELHdCQUF3QiwrREFBK0QsVUFBVSxlQUFlLDZEQUE2RCxVQUFVLEtBQUssaUZBQWlGLCtEQUErRCwwQ0FBMEMsR0FBRzs7QUFFOWxEO0FBQ0EsMENBQTBDLDRCQUE0QixrQ0FBa0MsK0JBQStCLGlCQUFpQiw0QkFBNEIsNEVBQTRFLEdBQUc7QUFDNVAsbUJBQW1CLDZEQUFVLFlBQVkseURBQU0sQ0FBQyw4REFBVSxtQkFBbUIsd0RBQUssQ0FBQyw4REFBVSwwQkFBMEIseURBQU0sQ0FBQyw4REFBVSxtQkFBbUIsd0RBQUssQ0FBQyw4REFBVSwwQkFBMEIseURBQU0sQ0FBQyw4REFBVTtBQUM3TixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHVGQUEwQix1Q0FBdUMsbUZBQXNCOztBQUUzRixJQUFJLHVGQUEwQix3Q0FBd0MsbUZBQXNCOztBQUU1RixJQUFJLHVGQUEwQiw2Q0FBNkMsbUZBQXNCOztBQUVqRztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHNEQUFFO0FBQ2hCLE9BQU87QUFDUDtBQUNBLGNBQWMsc0RBQUU7QUFDaEIsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQyx1REFBVSwwQkFBMEIsc0ZBQXlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvZ3JpZC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2wsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4uL1JlbmRlcmFibGUnO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLmdyaWQuZnJhZy5nbHNsJyAqL1xudmFyIGdyaWRGcmFnID0gXCIvLyBnZW5lcmF0ZSBncmlkLCBib3Jyb3cgZnJvbSBjbGF5LmdsIHZpZXdlclxcbi8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Bpc3NhbmcvY2xheS12aWV3ZXIvYmxvYi9tYXN0ZXIvc3JjL2dyYXBoaWMvZ3JvdW5kLmdsc2xcXG4jZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZVxcblxcbnZhcnlpbmcgdmVjMyB2X1Bvc2l0aW9uO1xcbi8vIHZhcnlpbmcgdmVjMyB2X05vcm1hbDtcXG5cXG51bmlmb3JtIGZsb2F0IHVfR3JpZFNpemUgOiA1O1xcbnVuaWZvcm0gZmxvYXQgdV9HcmlkU2l6ZTIgOiAuNTtcXG51bmlmb3JtIHZlYzQgdV9HcmlkQ29sb3IgOiBbMCwgMCwgMCwgMV07XFxudW5pZm9ybSB2ZWM0IHVfR3JpZENvbG9yMiA6IFswLjMsIDAuMywgMC4zLCAxXTtcXG51bmlmb3JtIGJvb2wgdV9HcmlkRW5hYmxlZCA6IHRydWU7XFxuXFxuLy8gdW5pZm9ybSB2ZWMzIHVfTGlnaHREaXJlY3Rpb247XFxuLy8gdW5pZm9ybSB2ZWMzIHVfTGlnaHRDb2xvcjtcXG4vLyB1bmlmb3JtIHZlYzMgdV9DYW1lcmE7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgLy8gdmVjMyBuID0gdl9Ob3JtYWw7XFxuICAvLyB2ZWMzIGwgPSBub3JtYWxpemUodV9MaWdodERpcmVjdGlvbik7XFxuICAvLyBmbG9hdCBOZG90TCA9IGNsYW1wKGRvdChuLCBsKSwgMC4wMDEsIDEuMCk7XFxuXFxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuKTtcXG5cXG4gIGlmICh1X0dyaWRFbmFibGVkKSB7XFxuICAgIGZsb2F0IHd4ID0gdl9Qb3NpdGlvbi54O1xcbiAgICBmbG9hdCB3eiA9IHZfUG9zaXRpb24uejtcXG4gICAgLy8gZmxvYXQgeDAgPSBhYnMoZnJhY3Qod3ggLyB1X0dyaWRTaXplIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3gpICogdV9HcmlkU2l6ZSAvIDIuMDtcXG4gICAgLy8gZmxvYXQgejAgPSBhYnMoZnJhY3Qod3ogLyB1X0dyaWRTaXplIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3opICogdV9HcmlkU2l6ZSAvIDIuMDtcXG5cXG4gICAgZmxvYXQgeDEgPSBhYnMoZnJhY3Qod3ggLyB1X0dyaWRTaXplMiAtIDAuNSkgLSAwLjUpIC8gZndpZHRoKHd4KSAqIHVfR3JpZFNpemUyO1xcbiAgICBmbG9hdCB6MSA9IGFicyhmcmFjdCh3eiAvIHVfR3JpZFNpemUyIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3opICogdV9HcmlkU2l6ZTI7XFxuXFxuICAgIC8vIGZsb2F0IHYwID0gMS4wIC0gY2xhbXAobWluKHgwLCB6MCksIDAuMCwgMS4wKTtcXG4gICAgZmxvYXQgdjEgPSAxLjAgLSBjbGFtcChtaW4oeDEsIHoxKSwgMC4wLCAxLjApO1xcbiAgICAvLyBpZiAodjAgPiAwLjEpIHtcXG4gICAgICAgIC8vIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIHVfR3JpZENvbG9yLCB2MCk7XFxuICAgIC8vIH1cXG4gICAgLy8gZWxzZSB7XFxuICAgICAgICBnbF9GcmFnQ29sb3IgPSBtaXgoZ2xfRnJhZ0NvbG9yLCB1X0dyaWRDb2xvcjIsIHYxKTtcXG4gICAgLy8gfVxcbiAgfVxcblxcbiAgLy8gZmxvYXQgc2hhZG93RmFjdG9yID0gY2FsY1NoYWRvdyh1X1NoYWRvd01hcCwgdl9Qb3NpdGlvbkZyb21MaWdodCwgbCwgbik7XFxuICAvLyB2ZWMzIGRpZmZ1c2VDb2xvciA9IHVfTGlnaHRDb2xvciAqIE5kb3RMICogc2hhZG93RmFjdG9yO1xcblxcbiAgLy8gZ2xfRnJhZ0NvbG9yLnJnYiAqPSBkaWZmdXNlQ29sb3I7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLmdyaWQudmVydC5nbHNsJyAqL1xudmFyIGdyaWRWZXJ0ID0gXCJhdHRyaWJ1dGUgdmVjMyBhX1Bvc2l0aW9uO1xcblxcbnZhcnlpbmcgdmVjMyB2X1Bvc2l0aW9uO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9Qb3NpdGlvbiA9IGFfUG9zaXRpb247XFxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KGFfUG9zaXRpb24sIDEuKTtcXG59XCI7XG5leHBvcnQgdmFyIEdyaWQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzMgPSBuYW1lZChJREVOVElGSUVSLk1hdGVyaWFsU3lzdGVtKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzUgPSBuYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKSwgX2RlYzYgPSBpbmplY3QoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlbmRlcmFibGUpIHtcbiAgX2luaGVyaXRzKEdyaWQsIF9SZW5kZXJhYmxlKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEdyaWQpO1xuXG4gIGZ1bmN0aW9uIEdyaWQoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdyaWQpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcIm1hdGVyaWFsU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJnZW9tZXRyeVN5c3RlbVwiLCBfZGVzY3JpcHRvcjIsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgX2Rlc2NyaXB0b3IzLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoR3JpZCwgW3tcbiAgICBrZXk6IFwib25BdHRyaWJ1dGVDaGFuZ2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQXR0cmlidXRlQ2hhbmdlZChfcmVmKSB7XG4gICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgICAgICBkYXRhID0gX3JlZi5kYXRhO1xuICAgICAgdmFyIG1lc2ggPSB0aGlzLmdldE1lc2hDb21wb25lbnQoKTtcblxuICAgICAgaWYgKG1lc2ggJiYgbWVzaC5tYXRlcmlhbCkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2dyaWRDb2xvcicpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZENvbG9yJywgZGF0YSk7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X0dyaWRDb2xvcjInLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnZ3JpZFNpemUnKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X0dyaWRTaXplJywgZGF0YSk7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X0dyaWRTaXplMicsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ2dyaWQnLCB7XG4gICAgICAgIHZzOiBncmlkVmVydCxcbiAgICAgICAgZnM6IGdyaWRGcmFnXG4gICAgICB9KTtcblxuICAgICAgdmFyIF90aGlzJHNoYWRlck1vZHVsZVNlciA9IHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5nZXRNb2R1bGUoJ2dyaWQnKSxcbiAgICAgICAgICB2cyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci52cyxcbiAgICAgICAgICBmcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci5mcyxcbiAgICAgICAgICBleHRyYWN0ZWRVbmlmb3JtcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci51bmlmb3JtcztcblxuICAgICAgdmFyIG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFN5c3RlbS5jcmVhdGVTaGFkZXJNYXRlcmlhbCh7XG4gICAgICAgIHZlcnRleFNoYWRlcjogdnMsXG4gICAgICAgIGZyYWdtZW50U2hhZGVyOiBmc1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnlTeXN0ZW0uY3JlYXRlQnVmZmVyR2VvbWV0cnkoe1xuICAgICAgICB2ZXJ0ZXhDb3VudDogNFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldEdlb21ldHJ5KGdlb21ldHJ5KTtcbiAgICAgIG1hdGVyaWFsLnNldEN1bGwoe1xuICAgICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgICBmYWNlOiBnbC5CQUNLXG4gICAgICB9KS5zZXREZXB0aCh7XG4gICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgZnVuYzogZ2wuTEVTU1xuICAgICAgfSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybShleHRyYWN0ZWRVbmlmb3Jtcyk7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICBncmlkQ29sb3I6IHRoaXMuY29uZmlnLmdyaWRDb2xvcixcbiAgICAgICAgZ3JpZFNpemU6IHRoaXMuY29uZmlnLmdyaWRTaXplXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEluZGV4KFswLCAzLCAyLCAyLCAxLCAwXSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfUG9zaXRpb24nLCBGbG9hdDMyQXJyYXkuZnJvbShbLTQsIC0xLCAtNCwgNCwgLTEsIC00LCA0LCAtMSwgNCwgLTQsIC0xLCA0XSksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHcmlkO1xufShSZW5kZXJhYmxlKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVN5c3RlbVwiLCBbX2RlYzQsIF9kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/grid/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/renderable/line/index.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/renderable/line/index.js ***!
\*****************************************************************/
/*! exports provided: Line */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/polyline-normals */ \"./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.line.frag.glsl' */\nvar lineFrag = \"uniform float u_dash_array : 0.02;\\nuniform float u_dash_offset : 0;\\nuniform float u_dash_ratio : 0;\\nuniform float u_thickness : 0.02;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n float blur = 1. - smoothstep(0.98, 1., length(v_normal));\\n\\n gl_FragColor = v_color;\\n gl_FragColor.a *= blur * ceil(mod(v_counters + u_dash_offset, u_dash_array) - (u_dash_array * u_dash_ratio));\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.line.vert.glsl' */\nvar lineVert = \"attribute vec2 a_pos;\\nattribute vec4 a_color;\\nattribute float a_line_miter;\\nattribute vec2 a_line_normal;\\nattribute float a_counters;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform float u_thickness : 0.02;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n v_color = a_color;\\n v_counters = a_counters;\\n\\n vec3 normal = normalize(vec3(a_line_normal, 0.0));\\n\\n vec4 offset = vec4(normal * u_thickness / 2.0 * a_line_miter, 0.0);\\n\\n v_normal = vec2(normal * sign(a_line_miter));\\n\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_pos, 0.0, 1.0) + offset;\\n}\\n\";\nvar Line = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Line, _Renderable);\n\n var _super = _createSuper(Line);\n\n function Line() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _this.vertexCount = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Line, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n switch (name) {\n case 'dashArray':\n mesh.material.setUniform('u_dash_array', data);\n break;\n\n case 'dashOffset':\n mesh.material.setUniform('u_dash_offset', data);\n break;\n\n case 'dashRatio':\n mesh.material.setUniform('u_dash_ratio', data);\n break;\n\n case 'thickness':\n mesh.material.setUniform('u_thickness', data);\n break;\n\n case 'color':\n var colors = new Array(this.vertexCount).fill(undefined).map(function () {\n return data;\n }).reduce(function (prev, cur) {\n // @ts-ignore\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []); // @ts-ignore\n\n mesh.geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n break;\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this2 = this;\n\n this.shaderModuleService.registerModule('line', {\n vs: lineVert,\n fs: lineFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('line'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n\n var _getNormals = Object(_utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this.config.points, false),\n normals = _getNormals.normals,\n attrIndex = _getNormals.attrIndex,\n attrPos = _getNormals.attrPos,\n attrCounters = _getNormals.attrCounters;\n\n var vertexCount = attrPos.length;\n this.vertexCount = vertexCount;\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: vertexCount\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].BACK\n }) // @ts-ignore\n .setUniform(extractedUniforms);\n this.setAttributes({\n dashArray: this.config.dashArray,\n dashOffset: this.config.dashOffset,\n dashRatio: this.config.dashRatio,\n thickness: this.config.thickness\n });\n var attrNormal = [];\n var attrMiter = [];\n normals.forEach(function (n) {\n var norm = n[0];\n var miter = n[1];\n attrNormal.push([norm[0], norm[1]]); // @ts-ignore\n\n attrMiter.push(miter);\n }); // [[0,1,2], [2,1,3]]\n\n geometry.setIndex(attrIndex.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []));\n geometry.setAttribute('a_pos', Float32Array.from(attrPos.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n var colors = new Array(vertexCount).fill(undefined).map(function () {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(_this2.config.color);\n }).reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []);\n geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('a_line_miter', Float32Array.from(attrMiter), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_line_normal', Float32Array.from(attrNormal.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('a_counters', Float32Array.from(attrCounters), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n }\n }]);\n\n return Line;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_13__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9saW5lL2luZGV4LmpzP2QzMDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ2dCO0FBQ3RCO0FBQ047QUFDb0I7QUFDMUI7QUFDa0M7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFN1E7QUFDQztBQUNBO0FBQ1g7O0FBRTNDO0FBQ0Esa0RBQWtELGtDQUFrQyxpQ0FBaUMsbUNBQW1DLHlCQUF5Qix3QkFBd0IsMkJBQTJCLGlCQUFpQiwrREFBK0QsK0JBQStCLG1IQUFtSCxHQUFHOztBQUV6YztBQUNBLHFDQUFxQyx5QkFBeUIsK0JBQStCLCtCQUErQiw2QkFBNkIsa0NBQWtDLCtCQUErQixtQ0FBbUMsMEJBQTBCLHlCQUF5Qix3QkFBd0IsMkJBQTJCLGlCQUFpQixzQkFBc0IsNEJBQTRCLHdEQUF3RCx5RUFBeUUsbURBQW1ELHdGQUF3RixHQUFHO0FBQzlxQixtQkFBbUIsNkRBQVUsWUFBWSx5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVO0FBQzdOLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQix1RUFBdUUsYUFBYTtBQUNwRjtBQUNBOztBQUVBOztBQUVBLElBQUksdUZBQTBCLHVDQUF1QyxtRkFBc0I7O0FBRTNGLElBQUksdUZBQTBCLHdDQUF3QyxtRkFBc0I7O0FBRTVGLElBQUksdUZBQTBCLDZDQUE2QyxtRkFBc0I7O0FBRWpHO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLCtCQUErQiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDM0UsYUFBYSxNQUFNOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCx3QkFBd0Isd0VBQVU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHVEQUFFO0FBQ2hCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQSx5QkFBeUIsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQ3JFLE9BQU87QUFDUDtBQUNBLHlCQUF5QiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDckUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxlQUFlLCtFQUFrQjtBQUNqQyxPQUFPO0FBQ1AseUJBQXlCLCtFQUFrQixRQUFRLCtFQUFrQjtBQUNyRSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLHlCQUF5QiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDckUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQyx1REFBVSwwQkFBMEIsc0ZBQXlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvbGluZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2wsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IGdldE5vcm1hbHMgZnJvbSAnLi4vLi4vdXRpbHMvcG9seWxpbmUtbm9ybWFscyc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi4vUmVuZGVyYWJsZSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wubGluZS5mcmFnLmdsc2wnICovXG52YXIgbGluZUZyYWcgPSBcInVuaWZvcm0gZmxvYXQgdV9kYXNoX2FycmF5IDogMC4wMjtcXG51bmlmb3JtIGZsb2F0IHVfZGFzaF9vZmZzZXQgOiAwO1xcbnVuaWZvcm0gZmxvYXQgdV9kYXNoX3JhdGlvIDogMDtcXG51bmlmb3JtIGZsb2F0IHVfdGhpY2tuZXNzIDogMC4wMjtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzIgdl9ub3JtYWw7XFxudmFyeWluZyBmbG9hdCB2X2NvdW50ZXJzO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgZmxvYXQgYmx1ciA9IDEuIC0gc21vb3Roc3RlcCgwLjk4LCAxLiwgbGVuZ3RoKHZfbm9ybWFsKSk7XFxuXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3I7XFxuICAgIGdsX0ZyYWdDb2xvci5hICo9IGJsdXIgKiBjZWlsKG1vZCh2X2NvdW50ZXJzICsgdV9kYXNoX29mZnNldCwgdV9kYXNoX2FycmF5KSAtICh1X2Rhc2hfYXJyYXkgKiB1X2Rhc2hfcmF0aW8pKTtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wubGluZS52ZXJ0Lmdsc2wnICovXG52YXIgbGluZVZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbmF0dHJpYnV0ZSB2ZWM0IGFfY29sb3I7XFxuYXR0cmlidXRlIGZsb2F0IGFfbGluZV9taXRlcjtcXG5hdHRyaWJ1dGUgdmVjMiBhX2xpbmVfbm9ybWFsO1xcbmF0dHJpYnV0ZSBmbG9hdCBhX2NvdW50ZXJzO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxudW5pZm9ybSBmbG9hdCB1X3RoaWNrbmVzcyA6IDAuMDI7XFxudW5pZm9ybSB2ZWMyIHVfdmlld3BvcnQ7XFxuXFxudmFyeWluZyB2ZWM0IHZfY29sb3I7XFxudmFyeWluZyB2ZWMyIHZfbm9ybWFsO1xcbnZhcnlpbmcgZmxvYXQgdl9jb3VudGVycztcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2X2NvbG9yID0gYV9jb2xvcjtcXG4gIHZfY291bnRlcnMgPSBhX2NvdW50ZXJzO1xcblxcbiAgdmVjMyBub3JtYWwgPSBub3JtYWxpemUodmVjMyhhX2xpbmVfbm9ybWFsLCAwLjApKTtcXG5cXG4gIHZlYzQgb2Zmc2V0ID0gdmVjNChub3JtYWwgKiB1X3RoaWNrbmVzcyAvIDIuMCAqIGFfbGluZV9taXRlciwgMC4wKTtcXG5cXG4gIHZfbm9ybWFsID0gdmVjMihub3JtYWwgKiBzaWduKGFfbGluZV9taXRlcikpO1xcblxcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChhX3BvcywgMC4wLCAxLjApICsgb2Zmc2V0O1xcbn1cXG5cIjtcbmV4cG9ydCB2YXIgTGluZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjNSA9IG5hbWVkKElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVuZGVyYWJsZSkge1xuICBfaW5oZXJpdHMoTGluZSwgX1JlbmRlcmFibGUpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTGluZSk7XG5cbiAgZnVuY3Rpb24gTGluZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGluZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwibWF0ZXJpYWxTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcImdlb21ldHJ5U3lzdGVtXCIsIF9kZXNjcmlwdG9yMiwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF90aGlzLnZlcnRleENvdW50ID0gdm9pZCAwO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMaW5lLCBbe1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMuZ2V0TWVzaENvbXBvbmVudCgpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLm1hdGVyaWFsKSB7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgIGNhc2UgJ2Rhc2hBcnJheSc6XG4gICAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfZGFzaF9hcnJheScsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoT2Zmc2V0JzpcbiAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9kYXNoX29mZnNldCcsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoUmF0aW8nOlxuICAgICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X2Rhc2hfcmF0aW8nLCBkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndGhpY2tuZXNzJzpcbiAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV90aGlja25lc3MnLCBkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgdmFyIGNvbG9ycyA9IG5ldyBBcnJheSh0aGlzLnZlcnRleENvdW50KS5maWxsKHVuZGVmaW5lZCkubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoY3VyKSk7XG4gICAgICAgICAgICB9LCBbXSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgbWVzaC5nZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfY29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShjb2xvcnMpLCB7XG4gICAgICAgICAgICAgIGFycmF5U3RyaWRlOiA0ICogNCxcbiAgICAgICAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDQnXG4gICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLnJlZ2lzdGVyTW9kdWxlKCdsaW5lJywge1xuICAgICAgICB2czogbGluZVZlcnQsXG4gICAgICAgIGZzOiBsaW5lRnJhZ1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBfdGhpcyRzaGFkZXJNb2R1bGVTZXIgPSB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UuZ2V0TW9kdWxlKCdsaW5lJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudnMsXG4gICAgICAgICAgZnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIuZnMsXG4gICAgICAgICAgZXh0cmFjdGVkVW5pZm9ybXMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudW5pZm9ybXM7XG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxTeXN0ZW0uY3JlYXRlU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXI6IHZzLFxuICAgICAgICBmcmFnbWVudFNoYWRlcjogZnNcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX2dldE5vcm1hbHMgPSBnZXROb3JtYWxzKHRoaXMuY29uZmlnLnBvaW50cywgZmFsc2UpLFxuICAgICAgICAgIG5vcm1hbHMgPSBfZ2V0Tm9ybWFscy5ub3JtYWxzLFxuICAgICAgICAgIGF0dHJJbmRleCA9IF9nZXROb3JtYWxzLmF0dHJJbmRleCxcbiAgICAgICAgICBhdHRyUG9zID0gX2dldE5vcm1hbHMuYXR0clBvcyxcbiAgICAgICAgICBhdHRyQ291bnRlcnMgPSBfZ2V0Tm9ybWFscy5hdHRyQ291bnRlcnM7XG5cbiAgICAgIHZhciB2ZXJ0ZXhDb3VudCA9IGF0dHJQb3MubGVuZ3RoO1xuICAgICAgdGhpcy52ZXJ0ZXhDb3VudCA9IHZlcnRleENvdW50O1xuICAgICAgdmFyIGdlb21ldHJ5ID0gdGhpcy5nZW9tZXRyeVN5c3RlbS5jcmVhdGVCdWZmZXJHZW9tZXRyeSh7XG4gICAgICAgIHZlcnRleENvdW50OiB2ZXJ0ZXhDb3VudFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHRoaXMuc2V0R2VvbWV0cnkoZ2VvbWV0cnkpO1xuICAgICAgbWF0ZXJpYWwuc2V0Q3VsbCh7XG4gICAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICAgIH0pIC8vIEB0cy1pZ25vcmVcbiAgICAgIC5zZXRVbmlmb3JtKGV4dHJhY3RlZFVuaWZvcm1zKTtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgIGRhc2hBcnJheTogdGhpcy5jb25maWcuZGFzaEFycmF5LFxuICAgICAgICBkYXNoT2Zmc2V0OiB0aGlzLmNvbmZpZy5kYXNoT2Zmc2V0LFxuICAgICAgICBkYXNoUmF0aW86IHRoaXMuY29uZmlnLmRhc2hSYXRpbyxcbiAgICAgICAgdGhpY2tuZXNzOiB0aGlzLmNvbmZpZy50aGlja25lc3NcbiAgICAgIH0pO1xuICAgICAgdmFyIGF0dHJOb3JtYWwgPSBbXTtcbiAgICAgIHZhciBhdHRyTWl0ZXIgPSBbXTtcbiAgICAgIG5vcm1hbHMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgbm9ybSA9IG5bMF07XG4gICAgICAgIHZhciBtaXRlciA9IG5bMV07XG4gICAgICAgIGF0dHJOb3JtYWwucHVzaChbbm9ybVswXSwgbm9ybVsxXV0pOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgYXR0ck1pdGVyLnB1c2gobWl0ZXIpO1xuICAgICAgfSk7IC8vIFtbMCwxLDJdLCBbMiwxLDNdXVxuXG4gICAgICBnZW9tZXRyeS5zZXRJbmRleChhdHRySW5kZXgucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgIH0sIFtdKSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfcG9zJywgRmxvYXQzMkFycmF5LmZyb20oYXR0clBvcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmV2KSwgX3RvQ29uc3VtYWJsZUFycmF5KGN1cikpO1xuICAgICAgfSwgW10pKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICB2YXIgY29sb3JzID0gbmV3IEFycmF5KHZlcnRleENvdW50KS5maWxsKHVuZGVmaW5lZCkubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90b0NvbnN1bWFibGVBcnJheShfdGhpczIuY29uZmlnLmNvbG9yKTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoY3VyKSk7XG4gICAgICB9LCBbXSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfY29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShjb2xvcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogNCxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9saW5lX21pdGVyJywgRmxvYXQzMkFycmF5LmZyb20oYXR0ck1pdGVyKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDEsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9saW5lX25vcm1hbCcsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJOb3JtYWwucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgIH0sIFtdKSksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDMsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdhX2NvdW50ZXJzJywgRmxvYXQzMkFycmF5LmZyb20oYXR0ckNvdW50ZXJzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDEsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogNCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGluZTtcbn0oUmVuZGVyYWJsZSksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJtYXRlcmlhbFN5c3RlbVwiLCBbX2RlYzIsIF9kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgW19kZWM0LCBfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgW19kZWM2XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/line/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/renderable/point/index.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/renderable/point/index.js ***!
\******************************************************************/
/*! exports provided: Point */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _utils_picking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/picking */ \"./node_modules/@antv/g-webgpu/es/utils/picking.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.point.frag.glsl' */\nvar pointFrag = \"uniform float u_blur : 0.05;\\nuniform float u_opacity : 0.7;\\nuniform float u_stroke_width : 0.01;\\nuniform vec4 u_stroke_color : [0, 0, 0, 0];\\nuniform float u_stroke_opacity : 1;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"sdf2d\\\"\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n int shape = int(floor(v_data.w + 0.5));\\n\\n float antialiasblur = v_data.z;\\n float antialiased_blur = -max(u_blur, antialiasblur);\\n float r = v_radius / (v_radius + u_stroke_width);\\n\\n float outer_df;\\n float inner_df;\\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\\n // if (shape == 0) {\\n outer_df = sdCircle(v_data.xy, 1.0);\\n inner_df = sdCircle(v_data.xy, r);\\n // } else if (shape == 1) {\\n // outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\\n // inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\\n // } else if (shape == 2) {\\n // outer_df = sdBox(v_data.xy, vec2(1.));\\n // inner_df = sdBox(v_data.xy, vec2(r));\\n // } else if (shape == 3) {\\n // outer_df = sdPentagon(v_data.xy, 0.8);\\n // inner_df = sdPentagon(v_data.xy, r * 0.8);\\n // } else if (shape == 4) {\\n // outer_df = sdHexagon(v_data.xy, 0.8);\\n // inner_df = sdHexagon(v_data.xy, r * 0.8);\\n // } else if (shape == 5) {\\n // outer_df = sdOctogon(v_data.xy, 1.0);\\n // inner_df = sdOctogon(v_data.xy, r);\\n // } else if (shape == 6) {\\n // outer_df = sdHexagram(v_data.xy, 0.52);\\n // inner_df = sdHexagram(v_data.xy, r * 0.52);\\n // } else if (shape == 7) {\\n // outer_df = sdRhombus(v_data.xy, vec2(1.0));\\n // inner_df = sdRhombus(v_data.xy, vec2(r));\\n // } else if (shape == 8) {\\n // outer_df = sdVesica(v_data.xy, 1.1, 0.8);\\n // inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\\n // }\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, outer_df);\\n\\n float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n inner_df\\n );\\n vec4 strokeColor = u_stroke_color == vec4(0) ? v_color : u_stroke_color;\\n\\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), strokeColor * u_stroke_opacity, color_t);\\n gl_FragColor.a = gl_FragColor.a * opacity_t;\\n\\n gl_FragColor = filterColor(gl_FragColor);\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.point.vert.glsl' */\nvar pointVert = \"attribute vec2 position;\\nattribute vec4 color;\\nattribute float shape;\\nattribute vec2 offset;\\nattribute float size;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nuniform float u_stroke_width : 0.01;\\nuniform float u_device_pixel_ratio;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n v_color = color;\\n v_radius = size;\\n\\n lowp float antialiasblur = 1.0 / u_device_pixel_ratio * (size + u_stroke_width);\\n\\n // construct point coords\\n v_data = vec4(position, antialiasblur, shape);\\n\\n gl_Position = projectionMatrix * modelViewMatrix\\n * vec4(position * size + offset, 0.0, 1.0);\\n\\n setPickingColor(a_PickingColor);\\n}\";\nvar pointShapes = ['circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'];\nvar Point = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Point, _Renderable);\n\n var _super = _createSuper(Point);\n\n function Point() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Point);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Point, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'strokeWidth') {\n mesh.material.setUniform('u_stroke_width', data);\n } else if (name === 'strokeColor') {\n mesh.material.setUniform('u_stroke_color', data);\n } else if (name === 'strokeOpacity') {\n mesh.material.setUniform('u_stroke_opacity', data);\n } else if (name === 'opacity') {\n mesh.material.setUniform('u_opacity', data);\n } else if (name === 'blur') {\n mesh.material.setUniform('u_blur', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: pointVert,\n fs: pointFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs,\n cull: {\n enable: false\n },\n depth: {\n enable: false\n },\n blend: {\n enable: true,\n func: {\n srcRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].SRC_ALPHA,\n dstRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].ONE_MINUS_SRC_ALPHA,\n srcAlpha: 1,\n dstAlpha: 1\n }\n }\n }); // TODO: support define stroke-relative props per point\n\n material.setUniform(_objectSpread({\n u_device_pixel_ratio: window.devicePixelRatio\n }, extractedUniforms));\n var attributes = this.buildAttributes();\n var geometry = this.geometrySystem.createInstancedBufferGeometry({\n maxInstancedCount: attributes.instancedOffsets.length / 2,\n vertexCount: 6\n });\n geometry.setIndex([0, 2, 1, 0, 3, 2]);\n geometry.setAttribute('position', Float32Array.from(attributes.positions), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('offset', Float32Array.from(attributes.instancedOffsets), {\n arrayStride: 4 * 2,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('color', Float32Array.from(attributes.instancedColors), {\n arrayStride: 4 * 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('size', Float32Array.from(attributes.instancedSizes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('shape', Float32Array.from(attributes.instancedShapes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_PickingColor', Float32Array.from(attributes.instancedPickingColors), {\n arrayStride: 4 * 3,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 6,\n offset: 0,\n format: 'float3'\n }]\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n }\n }, {\n key: \"buildAttribute\",\n value: function buildAttribute(config, attributes, index) {\n var _attributes$instanced, _attributes$instanced2, _attributes$instanced3, _attributes$instanced4;\n\n (_attributes$instanced = attributes.instancedPickingColors).push.apply(_attributes$instanced, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object(_utils_picking__WEBPACK_IMPORTED_MODULE_13__[\"encodePickingColor\"])(config.id || index)));\n\n attributes.instancedShapes.push(pointShapes.indexOf(config.shape || 'circle'));\n\n (_attributes$instanced2 = attributes.instancedColors).push.apply(_attributes$instanced2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.color || [1, 0, 0, 1]));\n\n (_attributes$instanced3 = attributes.instancedOffsets).push.apply(_attributes$instanced3, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.position || [0, 0]));\n\n (_attributes$instanced4 = attributes.instancedSizes).push.apply(_attributes$instanced4, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.size || [0.2, 0.2]));\n }\n }, {\n key: \"buildAttributes\",\n value: function buildAttributes() {\n var _this2 = this;\n\n var attributes = {\n positions: [1, 1, 1, -1, -1, -1, -1, 1],\n instancedOffsets: [],\n instancedColors: [],\n instancedSizes: [],\n instancedShapes: [],\n instancedPickingColors: []\n };\n\n if (Array.isArray(this.config)) {\n this.config.forEach(function (config, i) {\n _this2.buildAttribute(config, attributes, i);\n });\n } else {\n this.buildAttribute(this.config, attributes, 0);\n }\n\n return attributes;\n }\n }]);\n\n return Point;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_14__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9wb2ludC9pbmRleC5qcz9hMjE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEU7QUFDTjtBQUNzQjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGhCLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRTdRO0FBQ0M7QUFDRztBQUNkOztBQUUzQztBQUNBLDZDQUE2QyxnQ0FBZ0Msc0NBQXNDLDZDQUE2QyxxQ0FBcUMseUJBQXlCLHNCQUFzQix5QkFBeUIsMkVBQTJFLDJDQUEyQyxxQ0FBcUMseURBQXlELHFEQUFxRCxxQkFBcUIsbUJBQW1CLGdJQUFnSSwwQ0FBMEMsd0NBQXdDLFFBQVEsdUJBQXVCLDJEQUEyRCwrREFBK0QsUUFBUSx1QkFBdUIsK0NBQStDLDhDQUE4QyxRQUFRLHVCQUF1QiwrQ0FBK0MsbURBQW1ELFFBQVEsdUJBQXVCLDhDQUE4QyxrREFBa0QsUUFBUSx1QkFBdUIsOENBQThDLDRDQUE0QyxRQUFRLHVCQUF1QixnREFBZ0Qsb0RBQW9ELFFBQVEsdUJBQXVCLG9EQUFvRCxrREFBa0QsUUFBUSx1QkFBdUIsa0RBQWtELDBEQUEwRCxRQUFRLG9FQUFvRSxvSEFBb0gsNEVBQTRFLDRHQUE0RyxnREFBZ0QsK0NBQStDLEdBQUc7O0FBRTN3RTtBQUNBLHlDQUF5Qyx1QkFBdUIsd0JBQXdCLHdCQUF3Qix1QkFBdUIsa0NBQWtDLCtCQUErQix3Q0FBd0MscUNBQXFDLDBCQUEwQix5QkFBeUIsc0JBQXNCLHlCQUF5QixnREFBZ0Qsb0JBQW9CLG9CQUFvQixzRkFBc0YsaUZBQWlGLHVHQUF1RyxzQ0FBc0MsR0FBRztBQUN0d0I7QUFLQSxvQkFBb0IsNkRBQVUsWUFBWSx5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVO0FBQ3ZOLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQix1RUFBdUUsYUFBYTtBQUNwRjtBQUNBOztBQUVBOztBQUVBLElBQUksdUZBQTBCLHVDQUF1QyxtRkFBc0I7O0FBRTNGLElBQUksdUZBQTBCLHdDQUF3QyxtRkFBc0I7O0FBRTVGLElBQUksdUZBQTBCLDZDQUE2QyxtRkFBc0I7O0FBRWpHO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdURBQUU7QUFDdEIsb0JBQW9CLHVEQUFFO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLG9HQUFvRywrRUFBa0IsQ0FBQywwRUFBa0I7O0FBRXpJOztBQUVBLCtGQUErRiwrRUFBa0I7O0FBRWpILGdHQUFnRywrRUFBa0I7O0FBRWxILDhGQUE4RiwrRUFBa0I7QUFDaEg7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLHVEQUFVLDBCQUEwQixzRkFBeUI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9wb2ludC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IGdsLCBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUsIG5hbWVkIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGVuY29kZVBpY2tpbmdDb2xvciB9IGZyb20gJy4uLy4uL3V0aWxzL3BpY2tpbmcnO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4uL1JlbmRlcmFibGUnO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLnBvaW50LmZyYWcuZ2xzbCcgKi9cbnZhciBwb2ludEZyYWcgPSBcInVuaWZvcm0gZmxvYXQgdV9ibHVyIDogMC4wNTtcXG51bmlmb3JtIGZsb2F0IHVfb3BhY2l0eSA6IDAuNztcXG51bmlmb3JtIGZsb2F0IHVfc3Ryb2tlX3dpZHRoIDogMC4wMTtcXG51bmlmb3JtIHZlYzQgdV9zdHJva2VfY29sb3IgOiBbMCwgMCwgMCwgMF07XFxudW5pZm9ybSBmbG9hdCB1X3N0cm9rZV9vcGFjaXR5IDogMTtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzQgdl9kYXRhO1xcbnZhcnlpbmcgZmxvYXQgdl9yYWRpdXM7XFxuXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJzZGYyZFxcXCJcXG4jcHJhZ21hIGluY2x1ZGUgXFxcInBpY2tpbmdcXFwiXFxuXFxudm9pZCBtYWluKCkge1xcbiAgaW50IHNoYXBlID0gaW50KGZsb29yKHZfZGF0YS53ICsgMC41KSk7XFxuXFxuICBmbG9hdCBhbnRpYWxpYXNibHVyID0gdl9kYXRhLno7XFxuICBmbG9hdCBhbnRpYWxpYXNlZF9ibHVyID0gLW1heCh1X2JsdXIsIGFudGlhbGlhc2JsdXIpO1xcbiAgZmxvYXQgciA9IHZfcmFkaXVzIC8gKHZfcmFkaXVzICsgdV9zdHJva2Vfd2lkdGgpO1xcblxcbiAgZmxvYXQgb3V0ZXJfZGY7XFxuICBmbG9hdCBpbm5lcl9kZjtcXG4gIC8vICdjaXJjbGUnLCAndHJpYW5nbGUnLCAnc3F1YXJlJywgJ3BlbnRhZ29uJywgJ2hleGFnb24nLCAnb2N0b2dvbicsICdoZXhhZ3JhbScsICdyaG9tYnVzJywgJ3Zlc2ljYSdcXG4gIC8vIGlmIChzaGFwZSA9PSAwKSB7XFxuICAgIG91dGVyX2RmID0gc2RDaXJjbGUodl9kYXRhLnh5LCAxLjApO1xcbiAgICBpbm5lcl9kZiA9IHNkQ2lyY2xlKHZfZGF0YS54eSwgcik7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDEpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEVxdWlsYXRlcmFsVHJpYW5nbGUoMS4xICogdl9kYXRhLnh5KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEVxdWlsYXRlcmFsVHJpYW5nbGUoMS4xIC8gciAqIHZfZGF0YS54eSk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDIpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEJveCh2X2RhdGEueHksIHZlYzIoMS4pKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEJveCh2X2RhdGEueHksIHZlYzIocikpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSAzKSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RQZW50YWdvbih2X2RhdGEueHksIDAuOCk7XFxuICAvLyAgIGlubmVyX2RmID0gc2RQZW50YWdvbih2X2RhdGEueHksIHIgKiAwLjgpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSA0KSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RIZXhhZ29uKHZfZGF0YS54eSwgMC44KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEhleGFnb24odl9kYXRhLnh5LCByICogMC44KTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gNSkge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkT2N0b2dvbih2X2RhdGEueHksIDEuMCk7XFxuICAvLyAgIGlubmVyX2RmID0gc2RPY3RvZ29uKHZfZGF0YS54eSwgcik7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDYpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEhleGFncmFtKHZfZGF0YS54eSwgMC41Mik7XFxuICAvLyAgIGlubmVyX2RmID0gc2RIZXhhZ3JhbSh2X2RhdGEueHksIHIgKiAwLjUyKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gNykge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkUmhvbWJ1cyh2X2RhdGEueHksIHZlYzIoMS4wKSk7XFxuICAvLyAgIGlubmVyX2RmID0gc2RSaG9tYnVzKHZfZGF0YS54eSwgdmVjMihyKSk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDgpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZFZlc2ljYSh2X2RhdGEueHksIDEuMSwgMC44KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZFZlc2ljYSh2X2RhdGEueHksIHIgKiAxLjEsIHIgKiAwLjgpO1xcbiAgLy8gfVxcblxcbiAgZmxvYXQgb3BhY2l0eV90ID0gc21vb3Roc3RlcCgwLjAsIGFudGlhbGlhc2VkX2JsdXIsIG91dGVyX2RmKTtcXG5cXG4gIGZsb2F0IGNvbG9yX3QgPSB1X3N0cm9rZV93aWR0aCA8IDAuMDEgPyAwLjAgOiBzbW9vdGhzdGVwKFxcbiAgICBhbnRpYWxpYXNlZF9ibHVyLFxcbiAgICAwLjAsXFxuICAgIGlubmVyX2RmXFxuICApO1xcbiAgdmVjNCBzdHJva2VDb2xvciA9IHVfc3Ryb2tlX2NvbG9yID09IHZlYzQoMCkgPyB2X2NvbG9yIDogdV9zdHJva2VfY29sb3I7XFxuXFxuICBnbF9GcmFnQ29sb3IgPSBtaXgodmVjNCh2X2NvbG9yLnJnYiwgdl9jb2xvci5hICogdV9vcGFjaXR5KSwgc3Ryb2tlQ29sb3IgKiB1X3N0cm9rZV9vcGFjaXR5LCBjb2xvcl90KTtcXG4gIGdsX0ZyYWdDb2xvci5hID0gZ2xfRnJhZ0NvbG9yLmEgKiBvcGFjaXR5X3Q7XFxuXFxuICBnbF9GcmFnQ29sb3IgPSBmaWx0ZXJDb2xvcihnbF9GcmFnQ29sb3IpO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5wb2ludC52ZXJ0Lmdsc2wnICovXG52YXIgcG9pbnRWZXJ0ID0gXCJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcXG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcXG5hdHRyaWJ1dGUgZmxvYXQgc2hhcGU7XFxuYXR0cmlidXRlIHZlYzIgb2Zmc2V0O1xcbmF0dHJpYnV0ZSBmbG9hdCBzaXplO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxuXFxudW5pZm9ybSBmbG9hdCB1X3N0cm9rZV93aWR0aCA6IDAuMDE7XFxudW5pZm9ybSBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbztcXG51bmlmb3JtIHZlYzIgdV92aWV3cG9ydDtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzQgdl9kYXRhO1xcbnZhcnlpbmcgZmxvYXQgdl9yYWRpdXM7XFxuXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJwaWNraW5nXFxcIlxcblxcbnZvaWQgbWFpbigpIHtcXG4gIHZfY29sb3IgPSBjb2xvcjtcXG4gIHZfcmFkaXVzID0gc2l6ZTtcXG5cXG4gIGxvd3AgZmxvYXQgYW50aWFsaWFzYmx1ciA9IDEuMCAvIHVfZGV2aWNlX3BpeGVsX3JhdGlvICogKHNpemUgKyB1X3N0cm9rZV93aWR0aCk7XFxuXFxuICAvLyBjb25zdHJ1Y3QgcG9pbnQgY29vcmRzXFxuICB2X2RhdGEgPSB2ZWM0KHBvc2l0aW9uLCBhbnRpYWxpYXNibHVyLCBzaGFwZSk7XFxuXFxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXhcXG4gICAgKiB2ZWM0KHBvc2l0aW9uICogc2l6ZSArIG9mZnNldCwgMC4wLCAxLjApO1xcblxcbiAgc2V0UGlja2luZ0NvbG9yKGFfUGlja2luZ0NvbG9yKTtcXG59XCI7XG52YXIgcG9pbnRTaGFwZXMgPSBbJ2NpcmNsZScsICd0cmlhbmdsZScsICdzcXVhcmUnLCAncGVudGFnb24nLCAnaGV4YWdvbicsICdvY3RvZ29uJywgJ2hleGFncmFtJywgJ3Job21idXMnLCAndmVzaWNhJ107XG5leHBvcnRcbi8qKlxuICogVXNlIFNERiB0byBkcmF3IDJEIHBvaW50IHdpdGggc3Ryb2tlLlxuICovXG52YXIgUG9pbnQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzMgPSBuYW1lZChJREVOVElGSUVSLk1hdGVyaWFsU3lzdGVtKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzUgPSBuYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKSwgX2RlYzYgPSBpbmplY3QoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlbmRlcmFibGUpIHtcbiAgX2luaGVyaXRzKFBvaW50LCBfUmVuZGVyYWJsZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihQb2ludCk7XG5cbiAgZnVuY3Rpb24gUG9pbnQoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBvaW50KTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJtYXRlcmlhbFN5c3RlbVwiLCBfZGVzY3JpcHRvciwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IyLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzaGFkZXJNb2R1bGVTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMywgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBvaW50LCBbe1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMuZ2V0TWVzaENvbXBvbmVudCgpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLm1hdGVyaWFsKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnc3Ryb2tlV2lkdGgnKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X3N0cm9rZV93aWR0aCcsIGRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdzdHJva2VDb2xvcicpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfc3Ryb2tlX2NvbG9yJywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3N0cm9rZU9wYWNpdHknKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X3N0cm9rZV9vcGFjaXR5JywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ29wYWNpdHknKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X29wYWNpdHknLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnYmx1cicpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfYmx1cicsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ2dyaWQnLCB7XG4gICAgICAgIHZzOiBwb2ludFZlcnQsXG4gICAgICAgIGZzOiBwb2ludEZyYWdcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3RoaXMkc2hhZGVyTW9kdWxlU2VyID0gdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLmdldE1vZHVsZSgnZ3JpZCcpLFxuICAgICAgICAgIHZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnZzLFxuICAgICAgICAgIGZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLmZzLFxuICAgICAgICAgIGV4dHJhY3RlZFVuaWZvcm1zID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsU3lzdGVtLmNyZWF0ZVNoYWRlck1hdGVyaWFsKHtcbiAgICAgICAgdmVydGV4U2hhZGVyOiB2cyxcbiAgICAgICAgZnJhZ21lbnRTaGFkZXI6IGZzLFxuICAgICAgICBjdWxsOiB7XG4gICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBkZXB0aDoge1xuICAgICAgICAgIGVuYWJsZTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgICAgZnVuYzoge1xuICAgICAgICAgICAgc3JjUkdCOiBnbC5TUkNfQUxQSEEsXG4gICAgICAgICAgICBkc3RSR0I6IGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsXG4gICAgICAgICAgICBzcmNBbHBoYTogMSxcbiAgICAgICAgICAgIGRzdEFscGhhOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTsgLy8gVE9ETzogc3VwcG9ydCBkZWZpbmUgc3Ryb2tlLXJlbGF0aXZlIHByb3BzIHBlciBwb2ludFxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB1X2RldmljZV9waXhlbF9yYXRpbzogd2luZG93LmRldmljZVBpeGVsUmF0aW9cbiAgICAgIH0sIGV4dHJhY3RlZFVuaWZvcm1zKSk7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuYnVpbGRBdHRyaWJ1dGVzKCk7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSB0aGlzLmdlb21ldHJ5U3lzdGVtLmNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KHtcbiAgICAgICAgbWF4SW5zdGFuY2VkQ291bnQ6IGF0dHJpYnV0ZXMuaW5zdGFuY2VkT2Zmc2V0cy5sZW5ndGggLyAyLFxuICAgICAgICB2ZXJ0ZXhDb3VudDogNlxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRJbmRleChbMCwgMiwgMSwgMCwgMywgMl0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJpYnV0ZXMucG9zaXRpb25zKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ29mZnNldCcsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJpYnV0ZXMuaW5zdGFuY2VkT2Zmc2V0cyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ2luc3RhbmNlJyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2NvbG9yJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRDb2xvcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogNCxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0NCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdzaXplJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRTaXplcyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQsXG4gICAgICAgIHN0ZXBNb2RlOiAnaW5zdGFuY2UnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAzLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdzaGFwZScsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJpYnV0ZXMuaW5zdGFuY2VkU2hhcGVzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDQsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0J1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfUGlja2luZ0NvbG9yJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRQaWNraW5nQ29sb3JzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAnaW5zdGFuY2UnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiA2LFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgdGhpcy5zZXRHZW9tZXRyeShnZW9tZXRyeSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJ1aWxkQXR0cmlidXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJ1aWxkQXR0cmlidXRlKGNvbmZpZywgYXR0cmlidXRlcywgaW5kZXgpIHtcbiAgICAgIHZhciBfYXR0cmlidXRlcyRpbnN0YW5jZWQsIF9hdHRyaWJ1dGVzJGluc3RhbmNlZDIsIF9hdHRyaWJ1dGVzJGluc3RhbmNlZDMsIF9hdHRyaWJ1dGVzJGluc3RhbmNlZDQ7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQgPSBhdHRyaWJ1dGVzLmluc3RhbmNlZFBpY2tpbmdDb2xvcnMpLnB1c2guYXBwbHkoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkLCBfdG9Db25zdW1hYmxlQXJyYXkoZW5jb2RlUGlja2luZ0NvbG9yKGNvbmZpZy5pZCB8fCBpbmRleCkpKTtcblxuICAgICAgYXR0cmlidXRlcy5pbnN0YW5jZWRTaGFwZXMucHVzaChwb2ludFNoYXBlcy5pbmRleE9mKGNvbmZpZy5zaGFwZSB8fCAnY2lyY2xlJykpO1xuXG4gICAgICAoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMiA9IGF0dHJpYnV0ZXMuaW5zdGFuY2VkQ29sb3JzKS5wdXNoLmFwcGx5KF9hdHRyaWJ1dGVzJGluc3RhbmNlZDIsIF90b0NvbnN1bWFibGVBcnJheShjb25maWcuY29sb3IgfHwgWzEsIDAsIDAsIDFdKSk7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQzID0gYXR0cmlidXRlcy5pbnN0YW5jZWRPZmZzZXRzKS5wdXNoLmFwcGx5KF9hdHRyaWJ1dGVzJGluc3RhbmNlZDMsIF90b0NvbnN1bWFibGVBcnJheShjb25maWcucG9zaXRpb24gfHwgWzAsIDBdKSk7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQ0ID0gYXR0cmlidXRlcy5pbnN0YW5jZWRTaXplcykucHVzaC5hcHBseShfYXR0cmlidXRlcyRpbnN0YW5jZWQ0LCBfdG9Db25zdW1hYmxlQXJyYXkoY29uZmlnLnNpemUgfHwgWzAuMiwgMC4yXSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJidWlsZEF0dHJpYnV0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGVzKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBwb3NpdGlvbnM6IFsxLCAxLCAxLCAtMSwgLTEsIC0xLCAtMSwgMV0sXG4gICAgICAgIGluc3RhbmNlZE9mZnNldHM6IFtdLFxuICAgICAgICBpbnN0YW5jZWRDb2xvcnM6IFtdLFxuICAgICAgICBpbnN0YW5jZWRTaXplczogW10sXG4gICAgICAgIGluc3RhbmNlZFNoYXBlczogW10sXG4gICAgICAgIGluc3RhbmNlZFBpY2tpbmdDb2xvcnM6IFtdXG4gICAgICB9O1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZm9yRWFjaChmdW5jdGlvbiAoY29uZmlnLCBpKSB7XG4gICAgICAgICAgX3RoaXMyLmJ1aWxkQXR0cmlidXRlKGNvbmZpZywgYXR0cmlidXRlcywgaSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idWlsZEF0dHJpYnV0ZSh0aGlzLmNvbmZpZywgYXR0cmlidXRlcywgMCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQb2ludDtcbn0oUmVuZGVyYWJsZSksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJtYXRlcmlhbFN5c3RlbVwiLCBbX2RlYzIsIF9kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgW19kZWM0LCBfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgW19kZWM2XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/point/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/texture/Cache.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/texture/Cache.js ***!
\*********************************************************/
/*! exports provided: TextureCache */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextureCache\", function() { return TextureCache; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar TextureCache = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function TextureCache() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TextureCache);\n\n this.cache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TextureCache, [{\n key: \"get\",\n value: function get(name) {\n return this.cache[name];\n }\n }, {\n key: \"set\",\n value: function set(name, texture) {\n this.cache[name] = texture;\n }\n }]);\n\n return TextureCache;\n}(), _temp)) || _class);\n//# sourceMappingURL=Cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdGV4dHVyZS9DYWNoZS5qcz84NTA5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDLDJCQUEyQiw0REFBVTtBQUM1QztBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy90ZXh0dXJlL0NhY2hlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFRleHR1cmVDYWNoZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHR1cmVDYWNoZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGV4dHVyZUNhY2hlKTtcblxuICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUZXh0dXJlQ2FjaGUsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbbmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQobmFtZSwgdGV4dHVyZSkge1xuICAgICAgdGhpcy5jYWNoZVtuYW1lXSA9IHRleHR1cmU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRleHR1cmVDYWNoZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FjaGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/texture/Cache.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/texture/Texture2D.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/texture/Texture2D.js ***!
\*************************************************************/
/*! exports provided: Texture2D */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Texture2D\", function() { return Texture2D; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Cache */ \"./node_modules/@antv/g-webgpu/es/texture/Cache.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar Texture2D = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_Cache__WEBPACK_IMPORTED_MODULE_10__[\"TextureCache\"]), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Texture2D() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Texture2D);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"textureCache\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n this.config = void 0;\n this.loaded = false;\n this.texture = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Texture2D, [{\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return this.loaded;\n } // public update(config: ITexture2DInitializationOptions) {\n // if (this.loaded && this.texture) {\n // const t = this.texture.get();\n // }\n // }\n\n }, {\n key: \"load\",\n value: function () {\n var _load = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.config.url) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n var existed = _this.textureCache.get(_this.config.url);\n\n if (existed) {\n resolve(existed);\n } else {\n var image = new Image();\n image.crossOrigin = 'Anonymous';\n image.src = _this.config.url;\n\n image.onload = function () {\n var texture = _this.engine.createTexture2D(_objectSpread(_objectSpread({}, _this.config), {}, {\n data: image,\n width: image.width,\n height: image.height,\n flipY: true\n }));\n\n _this.textureCache.set(_this.config.url, texture);\n\n _this.texture = texture;\n _this.loaded = true;\n resolve(texture);\n };\n\n image.onerror = function () {\n reject();\n };\n }\n }));\n\n case 4:\n this.loaded = true;\n this.texture = this.engine.createTexture2D(this.config);\n return _context.abrupt(\"return\", this.texture);\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function load() {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return Texture2D;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"textureCache\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Texture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdGV4dHVyZS9UZXh0dXJlMkQuanM/ODhjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNPO0FBQ0k7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRW5lO0FBQ0Y7QUFDUjtBQUNoQyx3QkFBd0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLG9EQUFZLFdBQVcsd0RBQU0sQ0FBQyw4REFBVTtBQUNwRztBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtGQUErRixtQkFBbUI7QUFDbEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdGV4dHVyZS9UZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBUZXh0dXJlQ2FjaGUgfSBmcm9tICcuL0NhY2hlJztcbmV4cG9ydCB2YXIgVGV4dHVyZTJEID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KFRleHR1cmVDYWNoZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHR1cmUyRCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGV4dHVyZTJEKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwidGV4dHVyZUNhY2hlXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZW5naW5lXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHZvaWQgMDtcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMudGV4dHVyZSA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUZXh0dXJlMkQsIFt7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNMb2FkZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNMb2FkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWQ7XG4gICAgfSAvLyBwdWJsaWMgdXBkYXRlKGNvbmZpZzogSVRleHR1cmUyREluaXRpYWxpemF0aW9uT3B0aW9ucykge1xuICAgIC8vICAgaWYgKHRoaXMubG9hZGVkICYmIHRoaXMudGV4dHVyZSkge1xuICAgIC8vICAgICBjb25zdCB0ID0gdGhpcy50ZXh0dXJlLmdldCgpO1xuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICB9LCB7XG4gICAga2V5OiBcImxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9sb2FkID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb25maWcudXJsKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0ZWQgPSBfdGhpcy50ZXh0dXJlQ2FjaGUuZ2V0KF90aGlzLmNvbmZpZy51cmwpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGV4aXN0ZWQpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IF90aGlzLmNvbmZpZy51cmw7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJlID0gX3RoaXMuZW5naW5lLmNyZWF0ZVRleHR1cmUyRChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLmNvbmZpZyksIHt9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1hZ2UuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxpcFk6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy50ZXh0dXJlQ2FjaGUuc2V0KF90aGlzLmNvbmZpZy51cmwsIHRleHR1cmUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMudGV4dHVyZSA9IHRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRleHR1cmUpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gdGhpcy5lbmdpbmUuY3JlYXRlVGV4dHVyZTJEKHRoaXMuY29uZmlnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMudGV4dHVyZSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBsb2FkKCkge1xuICAgICAgICByZXR1cm4gX2xvYWQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxvYWQ7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gVGV4dHVyZTJEO1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidGV4dHVyZUNhY2hlXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dHVyZTJELmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/texture/Texture2D.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/canvas.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/canvas.js ***!
\********************************************************/
/*! exports provided: createCanvas */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCanvas\", function() { return createCanvas; });\nfunction createCanvas() {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n throw new Error('Cannot create a canvas in this context');\n }\n}\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvY2FudmFzLmpzPzMzY2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy91dGlscy9jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FudmFzKCkge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgYSBjYW52YXMgaW4gdGhpcyBjb250ZXh0Jyk7XG4gIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbnZhcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/is-array.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/is-array.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/g-webgpu/es/utils/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Array.isArray ? Array.isArray(value) : Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtYXJyYXkuanM/MDRkNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCO0FBQ2Y7QUFDaEIsZ0RBQWdELHdEQUFNO0FBQ3RELENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLWFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSA/IEFycmF5LmlzQXJyYXkodmFsdWUpIDogaXNUeXBlKHZhbHVlLCAnQXJyYXknKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-array.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/is-number.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/is-number.js ***!
\***********************************************************/
/*! exports provided: isNumber */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzPzE2NDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLW51bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-number.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/is-type.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/is-type.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\n\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isType);\n//# sourceMappingURL=is-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtdHlwZS5qcz80ZGIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRWUscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy91dGlscy9pcy10eXBlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciBpc1R5cGUgPSBmdW5jdGlvbiBpc1R5cGUodmFsdWUsIHR5cGUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCAnICsgdHlwZSArICddJztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-type.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js ***!
\***************************************************************/
/*! exports provided: isTypedArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcz80MzA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixvRUFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblxudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbnZhciBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XSc7XG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJztcbnZhciBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nO1xudmFyIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcbnZhciBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcbnZhciB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG52YXIgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nO1xudmFyIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJztcbnZhciBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XSc7XG52YXIgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XSc7XG52YXIgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XSc7XG52YXIgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XSc7XG52YXIgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJztcbnZhciB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nO1xudmFyIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG5cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID0gdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID0gdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cblxuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cblxuXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xuXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cblxuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSldO1xufVxuXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgaXNUeXBlZEFycmF5ID0gYmFzZUlzVHlwZWRBcnJheTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGVkYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/math.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/math.js ***!
\******************************************************/
/*! exports provided: getAngle, createVec3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/g-webgpu/es/utils/is-number.js\");\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvbWF0aC5qcz82OWY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDTTtBQUNoQztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxNQUFNLDJEQUFRO0FBQ2QsV0FBVyw4Q0FBSTtBQUNmOztBQUVBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmLEdBQUc7OztBQUdILFNBQVMsOENBQUk7QUFDYjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi9pcy1udW1iZXInO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlKGFuZ2xlKSB7XG4gIGlmIChhbmdsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSBpZiAoYW5nbGUgPiAzNjAgfHwgYW5nbGUgPCAtMzYwKSB7XG4gICAgcmV0dXJuIGFuZ2xlICUgMzYwO1xuICB9XG5cbiAgcmV0dXJuIGFuZ2xlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZlYzMoeCwgeSwgeikge1xuICBpZiAoaXNOdW1iZXIoeCkpIHtcbiAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHgsIHksIHopO1xuICB9XG5cbiAgaWYgKHgubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIHZlYzMuY2xvbmUoeCk7XG4gIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh4WzBdLCB4WzFdLCB4WzJdKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/math.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/picking.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/picking.js ***!
\*********************************************************/
/*! exports provided: encodePickingColor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=picking.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvcGlja2luZy5qcz8wZDhmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy91dGlscy9waWNraW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVBpY2tpbmdDb2xvcihmZWF0dXJlSWR4KSB7XG4gIHJldHVybiBbZmVhdHVyZUlkeCArIDEgJiAyNTUsIGZlYXR1cmVJZHggKyAxID4+IDggJiAyNTUsIGZlYXR1cmVJZHggKyAxID4+IDggPj4gOCAmIDI1NV07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waWNraW5nLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/picking.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-vec2 */ \"./node_modules/gl-vec2/index.js\");\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(gl_vec2__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! polyline-miter-util */ \"./node_modules/polyline-miter-util/index.js\");\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__);\n// @ts-ignore\n // @ts-ignore\n\n\n\nfunction extrusions(positions, out, point, normal, scale) {\n addNext(out, normal, -scale);\n addNext(out, normal, scale);\n positions.push(point);\n positions.push(point);\n}\n\nfunction addNext(out, normal, length) {\n out.push([[normal[0], normal[1]], length]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (points, closed, indexOffset) {\n var lineA = [0, 0];\n var lineB = [0, 0];\n var tangent = [0, 0];\n var miter = [0, 0];\n\n var _lastFlip = -1;\n\n var _started = false;\n var _normal = null;\n var tmp = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"create\"])();\n var count = indexOffset || 0;\n var miterLimit = 3;\n var out = [];\n var attrPos = [];\n var attrIndex = [];\n var attrCounters = [0, 0];\n\n if (closed) {\n points = points.slice();\n points.push(points[0]);\n }\n\n var total = points.length;\n\n for (var i = 1; i < total; i++) {\n var index = count;\n var last = points[i - 1];\n var cur = points[i];\n var next = i < points.length - 1 ? points[i + 1] : null;\n attrCounters.push(i / total, i / total);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineA, cur, last);\n\n if (!_normal) {\n _normal = [0, 0];\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA);\n }\n\n if (!_started) {\n _started = true;\n extrusions(attrPos, out, last, _normal, 1);\n }\n\n attrIndex.push([index + 0, index + 1, index + 2]);\n\n if (!next) {\n // no miter, simple segment\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n } else {\n // miter with last\n // get unit dir of next line\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineB, next, cur); // stores tangent & miter\n\n var miterLen = Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"computeMiter\"])(tangent, miter, lineA, lineB, 1); // get orientation\n\n var flip = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"dot\"])(tangent, _normal) < 0 ? -1 : 1;\n var bevel = miterLen > miterLimit; // 处理相邻线段重叠的情况\n\n if (!isFinite(miterLen)) {\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n _lastFlip = flip;\n continue;\n }\n\n if (bevel) {\n miterLen = miterLimit;\n attrCounters.push(i / total); // next two points in our first segment\n\n addNext(out, _normal, -flip);\n attrPos.push(cur);\n addNext(out, miter, miterLen * flip);\n attrPos.push(cur);\n attrIndex.push(_lastFlip !== -flip ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]); // now add the bevel triangle\n\n attrIndex.push([index + 2, index + 3, index + 4]);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(tmp, lineB);\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, tmp); // store normal for next round\n\n addNext(out, _normal, -flip);\n attrPos.push(cur); // the miter is now the normal for our next join\n\n count += 3;\n } else {\n // miter\n // next two points for our miter join\n extrusions(attrPos, out, cur, miter, miterLen);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n flip = -1; // the miter is now the normal for our next join\n\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, miter);\n count += 2;\n }\n\n _lastFlip = flip;\n }\n }\n\n return {\n normals: out,\n attrIndex: attrIndex,\n attrPos: attrPos,\n attrCounters: attrCounters\n };\n});\n//# sourceMappingURL=polyline-normals.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvcG9seWxpbmUtbm9ybWFscy5qcz9lNWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUM0Qzs7QUFFMEI7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUkscUVBQVM7O0FBRWI7QUFDQTtBQUNBLE1BQU0sa0VBQU07QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxrRUFBTSxpQkFBaUI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsTUFBTSxxRUFBUyxtQkFBbUI7O0FBRWxDLHFCQUFxQix3RUFBWSxrQ0FBa0M7O0FBRW5FLGlCQUFpQixtREFBRztBQUNwQix3Q0FBd0M7O0FBRXhDO0FBQ0EsUUFBUSxrRUFBTSxpQkFBaUI7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdIQUFnSDs7QUFFaEg7QUFDQSxRQUFRLGtFQUFNO0FBQ2QsUUFBUSxvREFBSSxlQUFlOztBQUUzQjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCLFFBQVEsb0RBQUk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvcG9seWxpbmUtbm9ybWFscy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGNvcHksIGNyZWF0ZSwgZG90IH0gZnJvbSAnZ2wtdmVjMic7IC8vIEB0cy1pZ25vcmVcblxuaW1wb3J0IHsgY29tcHV0ZU1pdGVyLCBkaXJlY3Rpb24sIG5vcm1hbCB9IGZyb20gJ3BvbHlsaW5lLW1pdGVyLXV0aWwnO1xuXG5mdW5jdGlvbiBleHRydXNpb25zKHBvc2l0aW9ucywgb3V0LCBwb2ludCwgbm9ybWFsLCBzY2FsZSkge1xuICBhZGROZXh0KG91dCwgbm9ybWFsLCAtc2NhbGUpO1xuICBhZGROZXh0KG91dCwgbm9ybWFsLCBzY2FsZSk7XG4gIHBvc2l0aW9ucy5wdXNoKHBvaW50KTtcbiAgcG9zaXRpb25zLnB1c2gocG9pbnQpO1xufVxuXG5mdW5jdGlvbiBhZGROZXh0KG91dCwgbm9ybWFsLCBsZW5ndGgpIHtcbiAgb3V0LnB1c2goW1tub3JtYWxbMF0sIG5vcm1hbFsxXV0sIGxlbmd0aF0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocG9pbnRzLCBjbG9zZWQsIGluZGV4T2Zmc2V0KSB7XG4gIHZhciBsaW5lQSA9IFswLCAwXTtcbiAgdmFyIGxpbmVCID0gWzAsIDBdO1xuICB2YXIgdGFuZ2VudCA9IFswLCAwXTtcbiAgdmFyIG1pdGVyID0gWzAsIDBdO1xuXG4gIHZhciBfbGFzdEZsaXAgPSAtMTtcblxuICB2YXIgX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgdmFyIF9ub3JtYWwgPSBudWxsO1xuICB2YXIgdG1wID0gY3JlYXRlKCk7XG4gIHZhciBjb3VudCA9IGluZGV4T2Zmc2V0IHx8IDA7XG4gIHZhciBtaXRlckxpbWl0ID0gMztcbiAgdmFyIG91dCA9IFtdO1xuICB2YXIgYXR0clBvcyA9IFtdO1xuICB2YXIgYXR0ckluZGV4ID0gW107XG4gIHZhciBhdHRyQ291bnRlcnMgPSBbMCwgMF07XG5cbiAgaWYgKGNsb3NlZCkge1xuICAgIHBvaW50cyA9IHBvaW50cy5zbGljZSgpO1xuICAgIHBvaW50cy5wdXNoKHBvaW50c1swXSk7XG4gIH1cblxuICB2YXIgdG90YWwgPSBwb2ludHMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgdG90YWw7IGkrKykge1xuICAgIHZhciBpbmRleCA9IGNvdW50O1xuICAgIHZhciBsYXN0ID0gcG9pbnRzW2kgLSAxXTtcbiAgICB2YXIgY3VyID0gcG9pbnRzW2ldO1xuICAgIHZhciBuZXh0ID0gaSA8IHBvaW50cy5sZW5ndGggLSAxID8gcG9pbnRzW2kgKyAxXSA6IG51bGw7XG4gICAgYXR0ckNvdW50ZXJzLnB1c2goaSAvIHRvdGFsLCBpIC8gdG90YWwpO1xuICAgIGRpcmVjdGlvbihsaW5lQSwgY3VyLCBsYXN0KTtcblxuICAgIGlmICghX25vcm1hbCkge1xuICAgICAgX25vcm1hbCA9IFswLCAwXTtcbiAgICAgIG5vcm1hbChfbm9ybWFsLCBsaW5lQSk7XG4gICAgfVxuXG4gICAgaWYgKCFfc3RhcnRlZCkge1xuICAgICAgX3N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGxhc3QsIF9ub3JtYWwsIDEpO1xuICAgIH1cblxuICAgIGF0dHJJbmRleC5wdXNoKFtpbmRleCArIDAsIGluZGV4ICsgMSwgaW5kZXggKyAyXSk7XG5cbiAgICBpZiAoIW5leHQpIHtcbiAgICAgIC8vIG5vIG1pdGVyLCBzaW1wbGUgc2VnbWVudFxuICAgICAgbm9ybWFsKF9ub3JtYWwsIGxpbmVBKTsgLy8gcmVzZXQgbm9ybWFsXG5cbiAgICAgIGV4dHJ1c2lvbnMoYXR0clBvcywgb3V0LCBjdXIsIF9ub3JtYWwsIDEpO1xuICAgICAgYXR0ckluZGV4LnB1c2goX2xhc3RGbGlwID09PSAxID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pO1xuICAgICAgY291bnQgKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWl0ZXIgd2l0aCBsYXN0XG4gICAgICAvLyBnZXQgdW5pdCBkaXIgb2YgbmV4dCBsaW5lXG4gICAgICBkaXJlY3Rpb24obGluZUIsIG5leHQsIGN1cik7IC8vIHN0b3JlcyB0YW5nZW50ICYgbWl0ZXJcblxuICAgICAgdmFyIG1pdGVyTGVuID0gY29tcHV0ZU1pdGVyKHRhbmdlbnQsIG1pdGVyLCBsaW5lQSwgbGluZUIsIDEpOyAvLyBnZXQgb3JpZW50YXRpb25cblxuICAgICAgdmFyIGZsaXAgPSBkb3QodGFuZ2VudCwgX25vcm1hbCkgPCAwID8gLTEgOiAxO1xuICAgICAgdmFyIGJldmVsID0gbWl0ZXJMZW4gPiBtaXRlckxpbWl0OyAvLyDlpITnkIbnm7jpgrvnur/mrrXph43lj6DnmoTmg4XlhrVcblxuICAgICAgaWYgKCFpc0Zpbml0ZShtaXRlckxlbikpIHtcbiAgICAgICAgbm9ybWFsKF9ub3JtYWwsIGxpbmVBKTsgLy8gcmVzZXQgbm9ybWFsXG5cbiAgICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGN1ciwgX25vcm1hbCwgMSk7XG4gICAgICAgIGF0dHJJbmRleC5wdXNoKF9sYXN0RmxpcCA9PT0gMSA/IFtpbmRleCwgaW5kZXggKyAyLCBpbmRleCArIDNdIDogW2luZGV4ICsgMiwgaW5kZXggKyAxLCBpbmRleCArIDNdKTtcbiAgICAgICAgY291bnQgKz0gMjtcbiAgICAgICAgX2xhc3RGbGlwID0gZmxpcDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZXZlbCkge1xuICAgICAgICBtaXRlckxlbiA9IG1pdGVyTGltaXQ7XG4gICAgICAgIGF0dHJDb3VudGVycy5wdXNoKGkgLyB0b3RhbCk7IC8vIG5leHQgdHdvIHBvaW50cyBpbiBvdXIgZmlyc3Qgc2VnbWVudFxuXG4gICAgICAgIGFkZE5leHQob3V0LCBfbm9ybWFsLCAtZmxpcCk7XG4gICAgICAgIGF0dHJQb3MucHVzaChjdXIpO1xuICAgICAgICBhZGROZXh0KG91dCwgbWl0ZXIsIG1pdGVyTGVuICogZmxpcCk7XG4gICAgICAgIGF0dHJQb3MucHVzaChjdXIpO1xuICAgICAgICBhdHRySW5kZXgucHVzaChfbGFzdEZsaXAgIT09IC1mbGlwID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pOyAvLyBub3cgYWRkIHRoZSBiZXZlbCB0cmlhbmdsZVxuXG4gICAgICAgIGF0dHJJbmRleC5wdXNoKFtpbmRleCArIDIsIGluZGV4ICsgMywgaW5kZXggKyA0XSk7XG4gICAgICAgIG5vcm1hbCh0bXAsIGxpbmVCKTtcbiAgICAgICAgY29weShfbm9ybWFsLCB0bXApOyAvLyBzdG9yZSBub3JtYWwgZm9yIG5leHQgcm91bmRcblxuICAgICAgICBhZGROZXh0KG91dCwgX25vcm1hbCwgLWZsaXApO1xuICAgICAgICBhdHRyUG9zLnB1c2goY3VyKTsgLy8gdGhlIG1pdGVyIGlzIG5vdyB0aGUgbm9ybWFsIGZvciBvdXIgbmV4dCBqb2luXG5cbiAgICAgICAgY291bnQgKz0gMztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG1pdGVyXG4gICAgICAgIC8vIG5leHQgdHdvIHBvaW50cyBmb3Igb3VyIG1pdGVyIGpvaW5cbiAgICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGN1ciwgbWl0ZXIsIG1pdGVyTGVuKTtcbiAgICAgICAgYXR0ckluZGV4LnB1c2goX2xhc3RGbGlwID09PSAxID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pO1xuICAgICAgICBmbGlwID0gLTE7IC8vIHRoZSBtaXRlciBpcyBub3cgdGhlIG5vcm1hbCBmb3Igb3VyIG5leHQgam9pblxuXG4gICAgICAgIGNvcHkoX25vcm1hbCwgbWl0ZXIpO1xuICAgICAgICBjb3VudCArPSAyO1xuICAgICAgfVxuXG4gICAgICBfbGFzdEZsaXAgPSBmbGlwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbm9ybWFsczogb3V0LFxuICAgIGF0dHJJbmRleDogYXR0ckluZGV4LFxuICAgIGF0dHJQb3M6IGF0dHJQb3MsXG4gICAgYXR0ckNvdW50ZXJzOiBhdHRyQ291bnRlcnNcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlsaW5lLW5vcm1hbHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js\n");
/***/ }),
/***/ "./node_modules/@antv/g-webgpu/es/utils/typedarray.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g-webgpu/es/utils/typedarray.js ***!
\************************************************************/
/*! exports provided: merge */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\nfunction merge(a, b) {\n // Checks for truthy values on both arrays\n if (!a && !b) {\n throw new Error('Please specify valid arguments for parameters a and b.');\n } // Checks for truthy values or empty arrays on each argument\n // to avoid the unnecessary construction of a new array and\n // the type comparison\n\n\n if (!b || b.length === 0) {\n return a;\n }\n\n if (!a || a.length === 0) {\n return b;\n } // Make sure that both typed arrays are of the same type\n\n\n if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {\n throw new Error('The types of the two arguments passed for parameters a and b do not match.');\n } // @ts-ignore\n\n\n var c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n//# sourceMappingURL=typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvdHlwZWRhcnJheS5qcz8wODlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvdHlwZWRhcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtZXJnZShhLCBiKSB7XG4gIC8vIENoZWNrcyBmb3IgdHJ1dGh5IHZhbHVlcyBvbiBib3RoIGFycmF5c1xuICBpZiAoIWEgJiYgIWIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBzcGVjaWZ5IHZhbGlkIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVycyBhIGFuZCBiLicpO1xuICB9IC8vIENoZWNrcyBmb3IgdHJ1dGh5IHZhbHVlcyBvciBlbXB0eSBhcnJheXMgb24gZWFjaCBhcmd1bWVudFxuICAvLyB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIGEgbmV3IGFycmF5IGFuZFxuICAvLyB0aGUgdHlwZSBjb21wYXJpc29uXG5cblxuICBpZiAoIWIgfHwgYi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYTtcbiAgfVxuXG4gIGlmICghYSB8fCBhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiO1xuICB9IC8vIE1ha2Ugc3VyZSB0aGF0IGJvdGggdHlwZWQgYXJyYXlzIGFyZSBvZiB0aGUgc2FtZSB0eXBlXG5cblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlcyBvZiB0aGUgdHdvIGFyZ3VtZW50cyBwYXNzZWQgZm9yIHBhcmFtZXRlcnMgYSBhbmQgYiBkbyBub3QgbWF0Y2guJyk7XG4gIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgdmFyIGMgPSBuZXcgYS5jb25zdHJ1Y3RvcihhLmxlbmd0aCArIGIubGVuZ3RoKTtcbiAgYy5zZXQoYSk7XG4gIGMuc2V0KGIsIGEubGVuZ3RoKTtcbiAgcmV0dXJuIGM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlZGFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/typedarray.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/behavior/behavior.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/behavior/behavior.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _behaviorOption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behaviorOption */ \"./node_modules/@antv/g6-core/es/behavior/behaviorOption.js\");\n\n\n\nvar Behavior =\n/** @class */\nfunction () {\n function Behavior() {}\n /**\n * 自定义 Behavior\n * @param type Behavior 名称\n * @param behavior Behavior 定义的方法集合\n */\n\n\n Behavior.registerBehavior = function (type, behavior) {\n if (!behavior) {\n throw new Error(\"please specify handler for this behavior: \".concat(type));\n }\n\n var prototype = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(_behaviorOption__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n Object.assign(prototype, behavior); // eslint-disable-next-line func-names\n\n var base = function base(cfg) {\n var _this = this;\n\n Object.assign(this, this.getDefaultCfg(), cfg);\n var events = this.getEvents();\n this.events = null;\n var eventsToBind = {};\n\n if (events) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handle, event) {\n eventsToBind[event] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"wrapBehavior\"])(_this, handle);\n });\n this.events = eventsToBind;\n }\n };\n\n base.prototype = prototype;\n Behavior.types[type] = base;\n };\n\n Behavior.hasBehavior = function (type) {\n return !!Behavior.types[type];\n };\n\n Behavior.getBehavior = function (type) {\n return Behavior.types[type];\n }; // 所有自定义的 Behavior 的实例\n\n\n Behavior.types = {};\n return Behavior;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Behavior);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvci5qcz8yOGQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF1RDtBQUNUOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix3REFBSyxDQUFDLHVEQUFjO0FBQ3hDLHVDQUF1Qzs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQ0FBZ0MsK0RBQVk7QUFDNUMsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsQ0FBQzs7QUFFYyx1RUFBUSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUsIGVhY2gsIHdyYXBCZWhhdmlvciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGJlaGF2aW9yT3B0aW9uIGZyb20gJy4vYmVoYXZpb3JPcHRpb24nO1xuXG52YXIgQmVoYXZpb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCZWhhdmlvcigpIHt9XG4gIC8qKlxuICAgKiDoh6rlrprkuYkgQmVoYXZpb3JcbiAgICogQHBhcmFtIHR5cGUgQmVoYXZpb3Ig5ZCN56ewXG4gICAqIEBwYXJhbSBiZWhhdmlvciBCZWhhdmlvciDlrprkuYnnmoTmlrnms5Xpm4blkIhcbiAgICovXG5cblxuICBCZWhhdmlvci5yZWdpc3RlckJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUsIGJlaGF2aW9yKSB7XG4gICAgaWYgKCFiZWhhdmlvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGxlYXNlIHNwZWNpZnkgaGFuZGxlciBmb3IgdGhpcyBiZWhhdmlvcjogXCIuY29uY2F0KHR5cGUpKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlID0gY2xvbmUoYmVoYXZpb3JPcHRpb24pO1xuICAgIE9iamVjdC5hc3NpZ24ocHJvdG90eXBlLCBiZWhhdmlvcik7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cbiAgICB2YXIgYmFzZSA9IGZ1bmN0aW9uIGJhc2UoY2ZnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRoaXMuZ2V0RGVmYXVsdENmZygpLCBjZmcpO1xuICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICB0aGlzLmV2ZW50cyA9IG51bGw7XG4gICAgICB2YXIgZXZlbnRzVG9CaW5kID0ge307XG5cbiAgICAgIGlmIChldmVudHMpIHtcbiAgICAgICAgZWFjaChldmVudHMsIGZ1bmN0aW9uIChoYW5kbGUsIGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnRzVG9CaW5kW2V2ZW50XSA9IHdyYXBCZWhhdmlvcihfdGhpcywgaGFuZGxlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzVG9CaW5kO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBiYXNlLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICBCZWhhdmlvci50eXBlc1t0eXBlXSA9IGJhc2U7XG4gIH07XG5cbiAgQmVoYXZpb3IuaGFzQmVoYXZpb3IgPSBmdW5jdGlvbiAodHlwZSkge1xuICAgIHJldHVybiAhIUJlaGF2aW9yLnR5cGVzW3R5cGVdO1xuICB9O1xuXG4gIEJlaGF2aW9yLmdldEJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gQmVoYXZpb3IudHlwZXNbdHlwZV07XG4gIH07IC8vIOaJgOacieiHquWumuS5ieeahCBCZWhhdmlvciDnmoTlrp7kvotcblxuXG4gIEJlaGF2aW9yLnR5cGVzID0ge307XG4gIHJldHVybiBCZWhhdmlvcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgQmVoYXZpb3I7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/behavior/behavior.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/behavior/behaviorOption.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/behavior/behaviorOption.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n // 自定义 Behavior 时候共有的方法\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {};\n },\n\n /**\n * register event handler, behavior will auto bind events\n * for example:\n * return {\n * click: 'onClick'\n * }\n */\n getEvents: function getEvents() {\n return {};\n },\n updateCfg: function updateCfg(cfg) {\n Object.assign(this, cfg);\n return true;\n },\n shouldBegin: function shouldBegin() {\n return true;\n },\n shouldUpdate: function shouldUpdate() {\n return true;\n },\n shouldEnd: function shouldEnd() {\n return true;\n },\n\n /**\n * auto bind events when register behavior\n * @param graph Graph instance\n */\n bind: function bind(graph) {\n var _this = this;\n\n var events = this.events;\n this.graph = graph;\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', true);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.on(event, handler);\n }); // To avoid the tabs switching makes the keydown related behaviors disable\n\n document.addEventListener('visibilitychange', function () {\n _this.keydown = false;\n });\n },\n unbind: function unbind(graph) {\n var events = this.events;\n var draggable = graph.get('canvas').get('draggable');\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', false);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.off(event, handler);\n });\n graph.get('canvas').set('draggable', draggable);\n },\n get: function get(val) {\n return this[val];\n },\n set: function set(key, val) {\n this[key] = val;\n return this;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvck9wdGlvbi5qcz8xZTU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7O0FBRW5CO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yT3B0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoh6rlrprkuYkgQmVoYXZpb3Ig5pe25YCZ5YWx5pyJ55qE5pa55rOVXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG5cbiAgLyoqXG4gICAqIHJlZ2lzdGVyIGV2ZW50IGhhbmRsZXIsIGJlaGF2aW9yIHdpbGwgYXV0byBiaW5kIGV2ZW50c1xuICAgKiBmb3IgZXhhbXBsZTpcbiAgICogcmV0dXJuIHtcbiAgICogIGNsaWNrOiAnb25DbGljaydcbiAgICogfVxuICAgKi9cbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICB1cGRhdGVDZmc6IGZ1bmN0aW9uIHVwZGF0ZUNmZyhjZmcpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNmZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEJlZ2luOiBmdW5jdGlvbiBzaG91bGRCZWdpbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgc2hvdWxkVXBkYXRlOiBmdW5jdGlvbiBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEVuZDogZnVuY3Rpb24gc2hvdWxkRW5kKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBhdXRvIGJpbmQgZXZlbnRzIHdoZW4gcmVnaXN0ZXIgYmVoYXZpb3JcbiAgICogQHBhcmFtIGdyYXBoIEdyYXBoIGluc3RhbmNlXG4gICAqL1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGdyYXBoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIHRydWUpO1xuICAgIH1cblxuICAgIGVhY2goZXZlbnRzLCBmdW5jdGlvbiAoaGFuZGxlciwgZXZlbnQpIHtcbiAgICAgIGdyYXBoLm9uKGV2ZW50LCBoYW5kbGVyKTtcbiAgICB9KTsgLy8gVG8gYXZvaWQgdGhlIHRhYnMgc3dpdGNoaW5nIG1ha2VzIHRoZSBrZXlkb3duIHJlbGF0ZWQgYmVoYXZpb3JzIGRpc2FibGVcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gICAgfSk7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGdyYXBoKSB7XG4gICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzO1xuICAgIHZhciBkcmFnZ2FibGUgPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldCgnZHJhZ2dhYmxlJyk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKGhhbmRsZXIsIGV2ZW50KSB7XG4gICAgICBncmFwaC5vZmYoZXZlbnQsIGhhbmRsZXIpO1xuICAgIH0pO1xuICAgIGdyYXBoLmdldCgnY2FudmFzJykuc2V0KCdkcmFnZ2FibGUnLCBkcmFnZ2FibGUpO1xuICB9LFxuICBnZXQ6IGZ1bmN0aW9uIGdldCh2YWwpIHtcbiAgICByZXR1cm4gdGhpc1t2YWxdO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgIHRoaXNba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/behavior/behaviorOption.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/behavior/index.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/behavior/index.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-core/es/behavior/behavior.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcz8zZTFlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7QUFDbkIsZ0hBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCZWhhdmlvciBmcm9tICcuL2JlaGF2aW9yJztcbmV4cG9ydCBkZWZhdWx0IEJlaGF2aW9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/behavior/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/arrow.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/arrow.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n triangle: function triangle(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + length, \",-\").concat(width / 2, \" L \").concat(begin + length, \",\").concat(width / 2, \" Z\");\n return path;\n },\n vee: function vee(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 20;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + length, \",-\").concat(width / 2, \"\\n L \").concat(begin + 2 * length / 3, \",0 L \").concat(begin + length, \",\").concat(width / 2, \" Z\");\n return path;\n },\n circle: function circle(r, d) {\n if (r === void 0) {\n r = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \", 0\\n a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(r * 2, \",0\\n a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(-r * 2, \",0\");\n return path;\n },\n rect: function rect(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 10;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",\").concat(width / 2, \" \\n L \").concat(begin, \",\").concat(width / 2, \" Z\");\n return path;\n },\n diamond: function diamond(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 \\n L \").concat(begin + length / 2, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",0 \\n L \").concat(begin + length / 2, \",\").concat(width / 2, \" Z\");\n return path;\n },\n triangleRect: function triangleRect(tWidth, tLength, rWidth, rLength, gap, d) {\n if (tWidth === void 0) {\n tWidth = 15;\n }\n\n if (tLength === void 0) {\n tLength = 15;\n }\n\n if (rWidth === void 0) {\n rWidth = 15;\n }\n\n if (rLength === void 0) {\n rLength = 3;\n }\n\n if (gap === void 0) {\n gap = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var rectBegin = begin + tLength + gap;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + tLength, \",-\").concat(tWidth / 2, \" L \").concat(begin + tLength, \",\").concat(tWidth / 2, \" Z\\n M \").concat(rectBegin, \", -\").concat(rWidth / 2, \"\\n L \").concat(rectBegin + rLength, \" -\").concat(rWidth / 2, \"\\n L \").concat(rectBegin + rLength, \" \").concat(rWidth / 2, \"\\n L \").concat(rectBegin, \" \").concat(rWidth / 2, \"\\n Z\");\n return path;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2Fycm93LmpzPzY2NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIHRyaWFuZ2xlOiBmdW5jdGlvbiB0cmlhbmdsZSh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTA7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoYmVnaW4sIFwiLDAgTCBcIikuY29uY2F0KGJlZ2luICsgbGVuZ3RoLCBcIiwtXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFpcIik7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIHZlZTogZnVuY3Rpb24gdmVlKHdpZHRoLCBsZW5ndGgsIGQpIHtcbiAgICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIGxlbmd0aCA9IDIwO1xuICAgIH1cblxuICAgIGlmIChkID09PSB2b2lkIDApIHtcbiAgICAgIGQgPSAwO1xuICAgIH1cblxuICAgIHZhciBiZWdpbiA9IGQgKiAyO1xuICAgIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChiZWdpbiwgXCIsMCBMIFwiKS5jb25jYXQoYmVnaW4gKyBsZW5ndGgsIFwiLC1cIikuY29uY2F0KHdpZHRoIC8gMiwgXCJcXG4gICAgICAgIEwgXCIpLmNvbmNhdChiZWdpbiArIDIgKiBsZW5ndGggLyAzLCBcIiwwIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFpcIik7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIGNpcmNsZTogZnVuY3Rpb24gY2lyY2xlKHIsIGQpIHtcbiAgICBpZiAociA9PT0gdm9pZCAwKSB7XG4gICAgICByID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoYmVnaW4sIFwiLCAwXFxuICAgICAgICAgICAgYSBcIikuY29uY2F0KHIsIFwiLFwiKS5jb25jYXQociwgXCIgMCAxLDAgXCIpLmNvbmNhdChyICogMiwgXCIsMFxcbiAgICAgICAgICAgIGEgXCIpLmNvbmNhdChyLCBcIixcIikuY29uY2F0KHIsIFwiIDAgMSwwIFwiKS5jb25jYXQoLXIgKiAyLCBcIiwwXCIpO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICByZWN0OiBmdW5jdGlvbiByZWN0KHdpZHRoLCBsZW5ndGgsIGQpIHtcbiAgICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSAxMDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIGxlbmd0aCA9IDEwO1xuICAgIH1cblxuICAgIGlmIChkID09PSB2b2lkIDApIHtcbiAgICAgIGQgPSAwO1xuICAgIH1cblxuICAgIHZhciBiZWdpbiA9IGQgKiAyO1xuICAgIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChiZWdpbiwgXCIsXCIpLmNvbmNhdCgtd2lkdGggLyAyLCBcIiBcXG4gICAgICAgIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCgtd2lkdGggLyAyLCBcIiBcXG4gICAgICAgIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFxcbiAgICAgICAgTCBcIikuY29uY2F0KGJlZ2luLCBcIixcIikuY29uY2F0KHdpZHRoIC8gMiwgXCIgWlwiKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgZGlhbW9uZDogZnVuY3Rpb24gZGlhbW9uZCh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTU7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoYmVnaW4sIFwiLDAgXFxuICAgICAgICBMIFwiKS5jb25jYXQoYmVnaW4gKyBsZW5ndGggLyAyLCBcIixcIikuY29uY2F0KC13aWR0aCAvIDIsIFwiIFxcbiAgICAgICAgTCBcIikuY29uY2F0KGJlZ2luICsgbGVuZ3RoLCBcIiwwIFxcbiAgICAgICAgTCBcIikuY29uY2F0KGJlZ2luICsgbGVuZ3RoIC8gMiwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFpcIik7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIHRyaWFuZ2xlUmVjdDogZnVuY3Rpb24gdHJpYW5nbGVSZWN0KHRXaWR0aCwgdExlbmd0aCwgcldpZHRoLCByTGVuZ3RoLCBnYXAsIGQpIHtcbiAgICBpZiAodFdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHRXaWR0aCA9IDE1O1xuICAgIH1cblxuICAgIGlmICh0TGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIHRMZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAocldpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHJXaWR0aCA9IDE1O1xuICAgIH1cblxuICAgIGlmIChyTGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIHJMZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChnYXAgPT09IHZvaWQgMCkge1xuICAgICAgZ2FwID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcmVjdEJlZ2luID0gYmVnaW4gKyB0TGVuZ3RoICsgZ2FwO1xuICAgIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChiZWdpbiwgXCIsMCBMIFwiKS5jb25jYXQoYmVnaW4gKyB0TGVuZ3RoLCBcIiwtXCIpLmNvbmNhdCh0V2lkdGggLyAyLCBcIiBMIFwiKS5jb25jYXQoYmVnaW4gKyB0TGVuZ3RoLCBcIixcIikuY29uY2F0KHRXaWR0aCAvIDIsIFwiIFpcXG4gICAgICAgICAgICBNIFwiKS5jb25jYXQocmVjdEJlZ2luLCBcIiwgLVwiKS5jb25jYXQocldpZHRoIC8gMiwgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQocmVjdEJlZ2luICsgckxlbmd0aCwgXCIgLVwiKS5jb25jYXQocldpZHRoIC8gMiwgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQocmVjdEJlZ2luICsgckxlbmd0aCwgXCIgXCIpLmNvbmNhdChyV2lkdGggLyAyLCBcIlxcbiAgICAgICAgICAgIEwgXCIpLmNvbmNhdChyZWN0QmVnaW4sIFwiIFwiKS5jb25jYXQocldpZHRoIC8gMiwgXCJcXG4gICAgICAgICAgICBaXCIpO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/arrow.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/combo.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/combo.js ***!
\********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\nvar singleCombo = {\n itemType: 'combo',\n // 单个图形的类型\n shapeType: 'single-combo',\n\n /**\n * Combo 标题文本相对图形的位置,默认为 top\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'top',\n\n /**\n * 标题文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n refX: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refX,\n refY: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refY,\n options: {\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n\n /**\n * 获取 Combo 宽高\n * @internal 返回 Combo 的大小,以 [width, height] 的方式维护\n * @param {Object} cfg Combo 的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var size = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.size || this.options.size || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size); // size 是数组,若长度为 1,则补长度为 2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(padding)) padding = padding[0];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refX\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n var dis = r + padding;\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -dis - refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: dis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: -dis + refX,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: dis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'combo-shape'\n });\n return shape;\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item); // special for some types of nodes\n }\n};\n\nvar singleComboDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_4__[\"shapeBase\"]), singleCombo);\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('single-combo', singleComboDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvLmpzPzczNjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2tCO0FBQ3BCO0FBQ0g7QUFDWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUSwrQ0FBTTtBQUNkLFFBQVEsK0NBQU07QUFDZDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0EsZUFBZSx3REFBSyxrQ0FBa0MsK0NBQU0sb0JBQW9COztBQUVoRixRQUFRLDBEQUFPO0FBQ2Y7QUFDQSxLQUFLOzs7QUFHTCxTQUFTLDBEQUFPO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsb0JBQW9CLHNEQUFRLEdBQUc7QUFDL0I7O0FBRUEsZ0NBQWdDO0FBQ2hDO0FBQ0E7O0FBRUEscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLG9EQUFTOztBQUVwRCw4Q0FBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOaWwsIGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBzaGFwZUJhc2UgfSBmcm9tICcuL3NoYXBlQmFzZSc7XG52YXIgc2luZ2xlQ29tYm8gPSB7XG4gIGl0ZW1UeXBlOiAnY29tYm8nLFxuICAvLyDljZXkuKrlm77lvaLnmoTnsbvlnotcbiAgc2hhcGVUeXBlOiAnc2luZ2xlLWNvbWJvJyxcblxuICAvKipcbiAgICogQ29tYm8g5qCH6aKY5paH5pys55u45a+55Zu+5b2i55qE5L2N572u77yM6buY6K6k5Li6IHRvcFxuICAgKiDkvY3nva7ljIXmi6zvvJogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCBjZW50ZXJcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIGxhYmVsUG9zaXRpb246ICd0b3AnLFxuXG4gIC8qKlxuICAgKiDmoIfpopjmlofmnKznm7jlr7nlgY/np7vvvIzlvZMgbGFiZWxQb3NpdGlvbiDkuI3kuLogY2VudGVyIOaXtuacieaViFxuICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgKi9cbiAgcmVmWDogR2xvYmFsLmNvbWJvTGFiZWwucmVmWCxcbiAgcmVmWTogR2xvYmFsLmNvbWJvTGFiZWwucmVmWSxcbiAgb3B0aW9uczoge1xuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPliBDb21ibyDlrr3pq5hcbiAgICogQGludGVybmFsIOi/lOWbniBDb21ibyDnmoTlpKflsI/vvIzku6UgW3dpZHRoLCBoZWlnaHRdIOeahOaWueW8j+e7tOaKpFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyBDb21ibyDnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl9IOWuvemrmFxuICAgKi9cbiAgZ2V0U2l6ZTogZnVuY3Rpb24gZ2V0U2l6ZShjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IGNsb25lKGNmZy5zaXplIHx8IHRoaXMub3B0aW9ucy5zaXplIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc2l6ZSk7IC8vIHNpemUg5piv5pWw57uE77yM6Iul6ZW/5bqm5Li6IDHvvIzliJnooaXplb/luqbkuLogMlxuXG4gICAgaWYgKGlzQXJyYXkoc2l6ZSkgJiYgc2l6ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNpemUgPSBbc2l6ZVswXSwgc2l6ZVswXV07XG4gICAgfSAvLyBzaXplIOS4uuaVsOWtl++8jOWImei9rOaNouS4uuaVsOe7hFxuXG5cbiAgICBpZiAoIWlzQXJyYXkoc2l6ZSkpIHtcbiAgICAgIHNpemUgPSBbc2l6ZSwgc2l6ZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpemU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWFxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgdmFyIGRpcyA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBzdHlsZTtcblxuICAgIHN3aXRjaCAobGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtZGlzIC0gcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogZGlzICsgcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAtZGlzICsgcmVmWCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGRpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3R5bGUudGV4dCA9IGNmZy5sYWJlbDtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc2hhcGVUeXBlID0gdGhpcy5zaGFwZVR5cGU7IC8vIHx8IHRoaXMudHlwZe+8jOmDveW3sue7j+WKoOS6hiBzaGFwZVR5cGVcblxuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgbmFtZTogJ2NvbWJvLXNoYXBlJ1xuICAgIH0pO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pOyAvLyBzcGVjaWFsIGZvciBzb21lIHR5cGVzIG9mIG5vZGVzXG4gIH1cbn07XG5cbnZhciBzaW5nbGVDb21ib0RlZiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUJhc2UpLCBzaW5nbGVDb21ibyk7XG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ3NpbmdsZS1jb21ibycsIHNpbmdsZUNvbWJvRGVmKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combo.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/combos/circle.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/combos/circle.js ***!
\****************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n // 圆形 Combo\n\n_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo('circle', {\n // 自定义节点时的配置\n options: {\n size: [_global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0], _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0]],\n padding: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.padding[0],\n animate: true,\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fontSize\n },\n refX: 0,\n refY: 0\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n delete style.height;\n delete style.width;\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: 'circle-combo',\n name: 'circle-combo',\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取 Combo 的样式,供基于该 Combo 自定义时使用\n * @param {Object} cfg Combo 数据模型\n * @return {Object} Combo 的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n var size = this.getSize(cfg);\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(style.r) || isNaN(style.r)) r = size[0] / 2 || _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.r;else r = Math.max(style.r, size[0] / 2) || size[0] / 2;\n }\n\n style.r = r + padding;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0\n }, style);\n\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n }\n\n cfgStyle.r = r + padding;\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.r = cfgStyle.r;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n this.updateShape(cfg, item, style, true);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9jaXJjbGUuanM/MWFmMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0M7QUFDTDtBQUM4Qjs7QUFFM0QsOENBQUs7QUFDTDtBQUNBO0FBQ0EsV0FBVywrQ0FBTSx1QkFBdUIsK0NBQU07QUFDOUMsYUFBYSwrQ0FBTTtBQUNuQjtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUE7QUFDQSxVQUFVLDJEQUFRO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLFdBQVcsMkRBQVEsZ0RBQWdELCtDQUFNLHNCQUFzQjtBQUMvRjs7QUFFQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLEtBQUs7O0FBRUwsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmLG1CQUFtQix3REFBSztBQUN4Qjs7QUFFQTtBQUNBLFVBQVUsMkRBQVE7QUFDbEIsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGNsb25lLCBtaXgsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJzsgLy8g5ZyG5b2iIENvbWJvXG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ2NpcmNsZScsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzBdLCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF1dLFxuICAgIHBhZGRpbmc6IEdsb2JhbC5kZWZhdWx0Q29tYm8ucGFkZGluZ1swXSxcbiAgICBhbmltYXRlOiB0cnVlLFxuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZVxuICAgICAgfSxcbiAgICAgIHJlZlg6IDAsXG4gICAgICByZWZZOiAwXG4gICAgfSxcbiAgICBzdGF0ZVN0eWxlczogX19hc3NpZ24oe30sIEdsb2JhbC5jb21ib1N0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdjaXJjbGUnLFxuICAvLyDmlofmnKzkvY3nva5cbiAgbGFiZWxQb3NpdGlvbjogJ3RvcCcsXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAnY2lyY2xlLWNvbWJvJyxcbiAgICAgIG5hbWU6ICdjaXJjbGUtY29tYm8nLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g55qE5qC35byP77yM5L6b5Z+65LqO6K+lIENvbWJvIOiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIENvbWJvIOaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IENvbWJvIOeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBwYWRkaW5nID0gY2ZnLnBhZGRpbmcgfHwgdGhpcy5vcHRpb25zLnBhZGRpbmc7XG4gICAgaWYgKGlzQXJyYXkocGFkZGluZykpIHBhZGRpbmcgPSBwYWRkaW5nWzBdO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLnIpIHx8IGlzTmFOKHN0eWxlLnIpKSByID0gc2l6ZVswXSAvIDIgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5yO2Vsc2UgciA9IE1hdGgubWF4KHN0eWxlLnIsIHNpemVbMF0gLyAyKSB8fCBzaXplWzBdIC8gMjtcbiAgICB9XG5cbiAgICBzdHlsZS5yID0gciArIHBhZGRpbmc7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LCBzdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSBjZmcuc3R5bGUuciA9IHI7ZWxzZSB7XG4gICAgICBjZmcuc3R5bGUgPSB7XG4gICAgICAgIHI6IHJcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgfVxuXG4gICAgY2ZnU3R5bGUuciA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBpdGVtQ2FjaGVTaXplID0gaXRlbS5nZXQoJ3NpemVDYWNoZScpO1xuXG4gICAgaWYgKGl0ZW1DYWNoZVNpemUpIHtcbiAgICAgIGl0ZW1DYWNoZVNpemUuciA9IGNmZ1N0eWxlLnI7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSwgY2ZnU3R5bGUpO1xuICAgIGlmIChjZmcuc3R5bGUpIGNmZy5zdHlsZS5yID0gcjtlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgcjogclxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlKTtcbiAgfVxufSwgJ3NpbmdsZS1jb21ibycpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combos/circle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/combos/index.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/combos/index.js ***!
\***************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g6-core/es/element/combos/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g6-core/es/element/combos/rect.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9pbmRleC5qcz9lOTdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2NpcmNsZSc7XG5pbXBvcnQgJy4vcmVjdCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combos/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/combos/rect.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/combos/rect.js ***!
\**************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('rect', {\n // 自定义 Combo 时的配置\n options: {\n size: [40, 5],\n padding: [25, 20, 15, 20],\n animate: true,\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: 'rect-combo',\n name: 'rect-combo',\n draggable: true\n });\n return keyShape;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refY\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var leftDis = cfgStyle.width / 2 + padding[3];\n var topDis = cfgStyle.height / 2 + padding[0];\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0 - leftDis + refX,\n y: 0 - topDis + refY,\n textBaseline: 'top',\n textAlign: 'left'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: topDis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: 0 - leftDis + refY,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: leftDis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = this.getSize(cfg);\n var width;\n var height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.width) || isNaN(style.width)) width = size[0] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.width;else width = Math.max(style.width, size[0]) || size[0];\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.height) || isNaN(style.height)) height = size[1] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.height;else height = Math.max(style.height, size[1]) || size[1];\n }\n\n var x = -width / 2 - padding[3];\n var y = -height / 2 - padding[0];\n style.width = width + padding[1] + padding[3];\n style.height = height + padding[0] + padding[2];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y\n }, style);\n\n if (!cfg.style) {\n cfg.style = {\n width: width,\n height: height\n };\n } else {\n cfg.style.width = width;\n cfg.style.height = height;\n }\n\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.style);\n var width, height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n width = Math.max(cfgStyle.width, size[0]) || size[0];\n height = Math.max(cfgStyle.height, size[1]) || size[1];\n }\n\n cfgStyle.width = width + padding[1] + padding[3];\n cfgStyle.height = height + padding[0] + padding[2];\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.width = cfgStyle.width;\n itemCacheSize.height = cfgStyle.height;\n }\n\n cfgStyle.x = -width / 2 - padding[3];\n cfgStyle.y = -height / 2 - padding[0]; // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n\n if (cfg.style) {\n cfg.style.width = width;\n cfg.style.height = height;\n } else {\n cfg.style = {\n width: width,\n height: height\n };\n }\n\n this.updateShape(cfg, item, style, false);\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9yZWN0LmpzP2YxZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN3QjtBQUN2QjtBQUNMO0FBQzdCLDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXLDJEQUFRLHdEQUF3RCwrQ0FBTSwwQkFBMEI7QUFDM0csV0FBVywyREFBUSwyREFBMkQsK0NBQU0sMkJBQTJCO0FBQy9HOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLG1CQUFtQix3REFBSztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHOztBQUV0QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLG9CQUFvQixzREFBUSxHQUFHO0FBQy9COztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9jb21ib3MvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBtaXgsIGlzTnVtYmVyLCBjbG9uZSwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5TaGFwZS5yZWdpc3RlckNvbWJvKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYkgQ29tYm8g5pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbNDAsIDVdLFxuICAgIHBhZGRpbmc6IFsyNSwgMjAsIDE1LCAyMF0sXG4gICAgYW5pbWF0ZTogdHJ1ZSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLmNvbWJvTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG4gIHNoYXBlVHlwZTogJ3JlY3QnLFxuICBsYWJlbFBvc2l0aW9uOiAndG9wJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBuYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWVxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGlzID0gY2ZnU3R5bGUud2lkdGggLyAyICsgcGFkZGluZ1szXTtcbiAgICB2YXIgdG9wRGlzID0gY2ZnU3R5bGUuaGVpZ2h0IC8gMiArIHBhZGRpbmdbMF07XG4gICAgdmFyIHN0eWxlO1xuXG4gICAgc3dpdGNoIChsYWJlbFBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwIC0gbGVmdERpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCAtIHRvcERpcyArIHJlZlksXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiB0b3BEaXMgKyByZWZZLFxuICAgICAgICAgIHRleHRCYXNlbGluZTogJ2JvdHRvbScsXG4gICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAgLSBsZWZ0RGlzICsgcmVmWSxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGxlZnREaXMgKyByZWZYLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMub3B0aW9ucy5zdHlsZTtcbiAgICB2YXIgcGFkZGluZyA9IGNmZy5wYWRkaW5nIHx8IHRoaXMub3B0aW9ucy5wYWRkaW5nO1xuICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkgcGFkZGluZyA9IFtwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nXTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGg7XG4gICAgdmFyIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLndpZHRoKSB8fCBpc05hTihzdHlsZS53aWR0aCkpIHdpZHRoID0gc2l6ZVswXSB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLndpZHRoO2Vsc2Ugd2lkdGggPSBNYXRoLm1heChzdHlsZS53aWR0aCwgc2l6ZVswXSkgfHwgc2l6ZVswXTtcbiAgICAgIGlmICghaXNOdW1iZXIoc3R5bGUuaGVpZ2h0KSB8fCBpc05hTihzdHlsZS5oZWlnaHQpKSBoZWlnaHQgPSBzaXplWzFdIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuaGVpZ2h0O2Vsc2UgaGVpZ2h0ID0gTWF0aC5tYXgoc3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIHZhciB4ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgdmFyIHkgPSAtaGVpZ2h0IC8gMiAtIHBhZGRpbmdbMF07XG4gICAgc3R5bGUud2lkdGggPSB3aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHN0eWxlLmhlaWdodCA9IGhlaWdodCArIHBhZGRpbmdbMF0gKyBwYWRkaW5nWzJdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgaWYgKCFjZmcuc3R5bGUpIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2ZnLnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICBjZmcuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgd2lkdGgsIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KGNmZ1N0eWxlLndpZHRoLCBzaXplWzBdKSB8fCBzaXplWzBdO1xuICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoY2ZnU3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIGNmZ1N0eWxlLndpZHRoID0gd2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICBjZmdTdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICB2YXIgaXRlbUNhY2hlU2l6ZSA9IGl0ZW0uZ2V0KCdzaXplQ2FjaGUnKTtcblxuICAgIGlmIChpdGVtQ2FjaGVTaXplKSB7XG4gICAgICBpdGVtQ2FjaGVTaXplLndpZHRoID0gY2ZnU3R5bGUud2lkdGg7XG4gICAgICBpdGVtQ2FjaGVTaXplLmhlaWdodCA9IGNmZ1N0eWxlLmhlaWdodDtcbiAgICB9XG5cbiAgICBjZmdTdHlsZS54ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgY2ZnU3R5bGUueSA9IC1oZWlnaHQgLyAyIC0gcGFkZGluZ1swXTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmdTdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSB7XG4gICAgICBjZmcuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgIGNmZy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlKTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pO1xuICB9XG59LCAnc2luZ2xlLWNvbWJvJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combos/rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/edge.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/edge.js ***!
\*******************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/@antv/g6-core/es/element/shapeBase.js\");\n/**\n * @fileOverview 自定义边\n * @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。\n */\n\n\n\n\n\n\n\n\nvar CLS_SHAPE = 'edge-shape'; // start,end 倒置,center 不变\n\nfunction revertAlign(labelPosition) {\n var textAlign = labelPosition;\n\n if (labelPosition === 'start') {\n textAlign = 'end';\n } else if (labelPosition === 'end') {\n textAlign = 'start';\n }\n\n return textAlign;\n}\n\nvar singleEdge = {\n itemType: 'edge',\n\n /**\n * 文本的位置\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本的 x 偏移\n * @type {Number}\n */\n refX: 0,\n\n /**\n * 文本的 y 偏移\n * @type {Number}\n */\n refY: 0,\n\n /**\n * 文本是否跟着线自动旋转,默认 false\n * @type {Boolean}\n */\n labelAutoRotate: false,\n // 自定义边时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.stroke,\n lineAppendWidth: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.lineAppendWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeStateStyles)\n },\n\n /**\n * 获取边的 path\n * @internal 供扩展的边覆盖\n * @param {Array} points 构成边的点的集合\n * @return {Array} 构成 path 的数组\n */\n getPath: function getPath(points) {\n var path = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = cfg.size || _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var path = this.getPath(points);\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style, {\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.color,\n lineWidth: size,\n path: path\n }, style);\n return styles;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer(); // const strokeStyle: ShapeStyle = {\n // stroke: cfg.color,\n // };\n\n var shape = ((_a = item.getKeyShape) === null || _a === void 0 ? void 0 : _a.call(item)) || group['shapeMap']['edge-shape']; // group.find((element) => element.get('className') === 'edge-shape');\n\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr(); // const previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);\n\n var previousStyle = cfg.style || {};\n\n if (previousStyle.stroke === undefined) {\n previousStyle.stroke = cfg.color;\n }\n\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var routeCfg = {\n radius: previousStyle.radius\n };\n\n if (!controlPoints) {\n routeCfg = {\n source: source,\n target: target,\n offset: previousStyle.offset,\n radius: previousStyle.radius\n };\n }\n\n var path = this.getPath(points, routeCfg);\n var style = {};\n\n if (updateType === 'move') {\n style = {\n path: path\n };\n } else {\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n if (style.lineWidth === undefined) style.lineWdith = (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(size) ? size : size === null || size === void 0 ? void 0 : size[0]) || currentAttr.lineWidth;\n if (style.path === undefined) style.path = path;\n if (style.stroke === undefined) style.stroke = currentAttr.stroke || cfg.color;\n }\n\n if (shape) {\n shape.attr(style);\n }\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n var labelPosition = labelCfg.position || this.labelPosition; // 文本的位置用户可以传入\n\n var style = {};\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n\n var pointPercent;\n\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n } // 偏移量\n\n\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY; // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX;\n style.y = cfg.startPoint.y + offsetY;\n style.text = cfg.label;\n return style;\n }\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var offsetStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLabelPosition\"])(pathShape, pointPercent, offsetX, offsetY, autoRotate);\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n style.rotate = offsetStyle.rotate;\n style.textAlign = this._getTextAlign(labelPosition, offsetStyle.angle);\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n if (!label) {\n return {};\n }\n\n var bbox = label.getBBox();\n var backgroundStyle = labelCfg.style && labelCfg.style.background;\n\n if (!backgroundStyle) {\n return {};\n }\n\n var padding = backgroundStyle.padding;\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight,\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0],\n matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1]\n });\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n\n if (autoRotate) {\n style.matrix = label.attr('matrix') || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n return style;\n },\n // 获取文本对齐方式\n _getTextAlign: function _getTextAlign(labelPosition, angle) {\n var textAlign = 'center';\n\n if (!angle) {\n return labelPosition;\n }\n\n angle = angle % (Math.PI * 2); // 取模\n\n if (labelPosition !== 'center') {\n if (angle >= 0 && angle <= Math.PI / 2 || angle >= 3 / 2 * Math.PI && angle < 2 * Math.PI) {\n textAlign = labelPosition;\n } else {\n textAlign = revertAlign(labelPosition);\n }\n }\n\n return textAlign;\n },\n\n /**\n * @internal 获取边的控制点\n * @param {Object} cfg 边的配置项\n * @return {Array} 控制点的数组\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * @internal 处理需要重计算点和边的情况\n * @param {Object} cfg 边的配置项\n * @return {Object} 边的配置项\n */\n getPathPoints: function getPathPoints(cfg) {\n return cfg;\n },\n\n /**\n * 绘制边\n * @override\n * @param {Object} cfg 边的配置项\n * @param {G.Group} group 边的容器\n * @return {IShape} 图形\n */\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n var shape = group.addShape('path', {\n className: CLS_SHAPE,\n name: CLS_SHAPE,\n attrs: shapeStyle\n });\n group['shapeMap'][CLS_SHAPE] = shape;\n return shape;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n name: 'text-shape',\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n label.rotateAtStart(rotate);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label, labelStyle, rotate);\n var labelBgClassname = this.itemType + _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"CLS_LABEL_BG_SUFFIX\"];\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label, labelStyle, rotate) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, labelCfg);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style,\n labelRelated: true\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n }\n};\n\nvar singleEdgeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"shapeBase\"]), singleEdge);\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('single-edge', singleEdgeDef); // 直线, 不支持控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('line', {\n // 控制点不生效\n getControlPoints: function getControlPoints() {\n return undefined;\n }\n}, 'single-edge'); // 直线\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('spline', {\n getPath: function getPath(points) {\n var path = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getSpline\"])(points);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('arc', {\n curveOffset: 20,\n clockwise: 1,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var midPoint = {\n x: (startPoint.x + endPoint.x) / 2,\n y: (startPoint.y + endPoint.y) / 2\n };\n var center;\n var arcPoint; // 根据给定点计算圆弧\n\n if (cfg.controlPoints !== undefined) {\n arcPoint = cfg.controlPoints[0];\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint); // 根据控制点和直线关系决定 clockwise值\n\n if (startPoint.x <= endPoint.x && startPoint.y > endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 0 : 1;\n } else if (startPoint.x <= endPoint.x && startPoint.y < endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 1 : 0;\n } else if (startPoint.x > endPoint.x && startPoint.y <= endPoint.y) {\n this.clockwise = center.y < arcPoint.y ? 0 : 1;\n } else {\n this.clockwise = center.y < arcPoint.y ? 1 : 0;\n } // 若给定点和两端点共线,无法生成圆弧,绘制直线\n\n\n if ((arcPoint.x - startPoint.x) / (arcPoint.y - startPoint.y) === (endPoint.x - startPoint.x) / (endPoint.y - startPoint.y)) {\n return [];\n }\n } else {\n // 根据直线连线中点的的偏移计算圆弧\n // 若用户给定偏移量则根据其计算,否则按照默认偏移值计算\n if (cfg.curveOffset === undefined) {\n cfg.curveOffset = this.curveOffset;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(cfg.curveOffset)) {\n cfg.curveOffset = cfg.curveOffset[0];\n }\n\n if (cfg.curveOffset < 0) {\n this.clockwise = 0;\n } else {\n this.clockwise = 1;\n }\n\n var vec = {\n x: endPoint.x - startPoint.x,\n y: endPoint.y - startPoint.y\n };\n var edgeAngle = Math.atan2(vec.y, vec.x);\n arcPoint = {\n x: cfg.curveOffset * Math.cos(-Math.PI / 2 + edgeAngle) + midPoint.x,\n y: cfg.curveOffset * Math.sin(-Math.PI / 2 + edgeAngle) + midPoint.y\n };\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint);\n }\n\n var radius = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"distance\"])(startPoint, center);\n var controlPoints = [{\n x: radius,\n y: radius\n }];\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]); // 控制点与端点共线\n\n if (points.length === 2) {\n path.push(['L', points[1].x, points[1].y]);\n } else {\n path.push(['A', points[1].x, points[1].y, 0, 0, this.clockwise, points[2].x, points[2].y]);\n }\n\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('quadratic', {\n curvePosition: 0.5,\n curveOffset: -20,\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定controlPoints\n\n if (!controlPoints || !controlPoints.length) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0];\n var innerPoint = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition, cfg.curveOffset);\n controlPoints = [innerPoint];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['Q', points[1].x, points[1].y, points[2].x, points[2].y]);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic', {\n curvePosition: [1 / 2, 1 / 2],\n curveOffset: [-20, 20],\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定 controlPoints\n\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n\n if (!controlPoints || !controlPoints.length || controlPoints.length < 2) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var innerPoint1 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[0], cfg.curveOffset[0]);\n var innerPoint2 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[1], cfg.curveOffset[1]);\n controlPoints = [innerPoint1, innerPoint2];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n return path;\n }\n}, 'single-edge'); // 垂直方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-vertical', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var yDist = endPoint.y - startPoint.y;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(yDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x,\n y: startPoint.y + yDist * this.curvePosition[0] + curveOffset[0]\n };\n var innerPoint2 = {\n x: endPoint.x,\n y: endPoint.y - yDist * this.curvePosition[1] + curveOffset[1]\n };\n return [innerPoint1, innerPoint2];\n }\n}, 'cubic'); // 水平方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-horizontal', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var xDist = endPoint.x - startPoint.x;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(xDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x + xDist * this.curvePosition[0] + curveOffset[0],\n y: startPoint.y\n };\n var innerPoint2 = {\n x: endPoint.x - xDist * this.curvePosition[1] + curveOffset[1],\n y: endPoint.y\n };\n var controlPoints = [innerPoint1, innerPoint2];\n return controlPoints;\n }\n}, 'cubic');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('loop', {\n getPathPoints: function getPathPoints(cfg) {\n return Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLoopCfgs\"])(cfg);\n },\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n afterDraw: function afterDraw(cfg) {\n cfg.controlPoints = undefined;\n },\n afterUpdate: function afterUpdate(cfg) {\n cfg.controlPoints = undefined;\n }\n}, 'cubic');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2VkZ2UuanM/ODk2YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNpQztBQUN5QztBQUNWO0FBQ0M7QUFDUDtBQUMzQjtBQUNIO0FBQ2lDO0FBQzdELDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsdUJBQXVCLCtDQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixrQkFBa0IsK0NBQU07QUFDeEIsb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLDJCQUEyQiwrQ0FBTTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLGlCQUFpQixzREFBRyxHQUFHLEVBQUUsK0NBQU07QUFDL0IsY0FBYywrQ0FBTTtBQUNwQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUEsZ0lBQWdJOztBQUVoSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLG1DQUFtQyxnQ0FBZ0M7O0FBRW5FOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYyxzREFBUSxHQUFHO0FBQ3pCLDREQUE0RCwyREFBUTtBQUNwRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLCtGQUErRjtBQUMvRjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsd0RBQUsseURBQXlEO0FBQ3RFLHNCQUFzQixzRUFBZ0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsUUFBUSx3REFBSyx5REFBeUQ7O0FBRXRFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQiwwREFBTyxHQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDLDhEQUFtQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFPLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHLEVBQUUsb0RBQVM7O0FBRW5ELDhDQUFLLDRDQUE0Qzs7QUFFakQsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsaUJBQWlCOztBQUVsQiw4Q0FBSztBQUNMO0FBQ0EsZUFBZSw0REFBUztBQUN4QjtBQUNBO0FBQ0EsQ0FBQztBQUNELDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSxlQUFlLDBFQUF1QixpQ0FBaUM7O0FBRXZFO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDBEQUFPO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMEVBQXVCO0FBQ3RDOztBQUVBLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDBEQUFPO0FBQ2pCLFVBQVUsMERBQU87QUFDakIsdUJBQXVCLGtFQUFlO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQixRQUFRLDJEQUFROztBQUVoQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0VBQWU7QUFDdkMsd0JBQXdCLGtFQUFlO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxpQkFBaUI7O0FBRWxCLDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQixRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLFdBQVc7O0FBRVosOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7QUFDaEIsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDhDQUFLO0FBQ0w7QUFDQSxXQUFXLGlFQUFXO0FBQ3RCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvZWRnZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyDoh6rlrprkuYnovrlcbiAqIEBkZXNjcmlwdGlvbiDoh6rlrprkuYnovrnkuK3mnInlpKfph4/pgLvovpHlkIzoh6rlrprkuYnoioLngrnph43lpI3vvIzomb3nhLblj6/ku6Xmj5Dlj5bmiJDkuLogbWl4aW4g77yM5L2G5piv6ICD6JmR5Yiw5Luj56CB55qE5Y+v6K+75oCn77yM6L+Y5piv5Y2V54us5a6e546w44CCXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBkZWVwTWl4LCBtaXgsIGVhY2gsIGlzTmlsLCBpc051bWJlciwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0TGFiZWxQb3NpdGlvbiwgZ2V0TG9vcENmZ3MgfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGdldENpcmNsZUNlbnRlckJ5UG9pbnRzIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IGdldENvbnRyb2xQb2ludCwgZ2V0U3BsaW5lIH0gZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IHNoYXBlQmFzZSwgQ0xTX0xBQkVMX0JHX1NVRkZJWCB9IGZyb20gJy4vc2hhcGVCYXNlJztcbnZhciBDTFNfU0hBUEUgPSAnZWRnZS1zaGFwZSc7IC8vIHN0YXJ0LGVuZCDlgJLnva7vvIxjZW50ZXIg5LiN5Y+YXG5cbmZ1bmN0aW9uIHJldmVydEFsaWduKGxhYmVsUG9zaXRpb24pIHtcbiAgdmFyIHRleHRBbGlnbiA9IGxhYmVsUG9zaXRpb247XG5cbiAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICB0ZXh0QWxpZ24gPSAnZW5kJztcbiAgfSBlbHNlIGlmIChsYWJlbFBvc2l0aW9uID09PSAnZW5kJykge1xuICAgIHRleHRBbGlnbiA9ICdzdGFydCc7XG4gIH1cblxuICByZXR1cm4gdGV4dEFsaWduO1xufVxuXG52YXIgc2luZ2xlRWRnZSA9IHtcbiAgaXRlbVR5cGU6ICdlZGdlJyxcblxuICAvKipcbiAgICog5paH5pys55qE5L2N572uXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcblxuICAvKipcbiAgICog5paH5pys55qEIHgg5YGP56e7XG4gICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAqL1xuICByZWZYOiAwLFxuXG4gIC8qKlxuICAgKiDmlofmnKznmoQgeSDlgY/np7tcbiAgICogQHR5cGUge051bWJlcn1cbiAgICovXG4gIHJlZlk6IDAsXG5cbiAgLyoqXG4gICAqIOaWh+acrOaYr+WQpui3n+edgOe6v+iHquWKqOaXi+i9rO+8jOm7mOiupCBmYWxzZVxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICovXG4gIGxhYmVsQXV0b1JvdGF0ZTogZmFsc2UsXG4gIC8vIOiHquWumuS5iei+ueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHRFZGdlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdEVkZ2Uuc3R5bGUuc3Ryb2tlLFxuICAgICAgbGluZUFwcGVuZFdpZHRoOiBHbG9iYWwuZGVmYXVsdEVkZ2Uuc3R5bGUubGluZUFwcGVuZFdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLmVkZ2VMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLmVkZ2VMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmVkZ2VTdGF0ZVN0eWxlcylcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6L6555qEIHBhdGhcbiAgICogQGludGVybmFsIOS+m+aJqeWxleeahOi+ueimhuebllxuICAgKiBAcGFyYW0gIHtBcnJheX0gcG9pbnRzIOaehOaIkOi+ueeahOeCueeahOmbhuWQiFxuICAgKiBAcmV0dXJuIHtBcnJheX0g5p6E5oiQIHBhdGgg55qE5pWw57uEXG4gICAqL1xuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gW107XG4gICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICBwYXRoLnB1c2goWydNJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aC5wdXNoKFsnTCcsIHBvaW50LngsIHBvaW50LnldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IGNmZy5zaXplIHx8IEdsb2JhbC5kZWZhdWx0RWRnZS5zaXplO1xuICAgIGNmZyA9IHRoaXMuZ2V0UGF0aFBvaW50cyhjZmcpO1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gdGhpcy5nZXRDb250cm9sUG9pbnRzKGNmZyk7XG4gICAgdmFyIHBvaW50cyA9IFtzdGFydFBvaW50XTsgLy8g5re75Yqg6LW35aeL54K5XG4gICAgLy8g5re75Yqg5o6n5Yi254K5XG5cbiAgICBpZiAoY29udHJvbFBvaW50cykge1xuICAgICAgcG9pbnRzID0gcG9pbnRzLmNvbmNhdChjb250cm9sUG9pbnRzKTtcbiAgICB9IC8vIOa3u+WKoOe7k+adn+eCuVxuXG5cbiAgICBwb2ludHMucHVzaChlbmRQb2ludCk7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGgocG9pbnRzKTtcbiAgICB2YXIgc3R5bGVzID0gbWl4KHt9LCBHbG9iYWwuZGVmYXVsdEVkZ2Uuc3R5bGUsIHtcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHRFZGdlLmNvbG9yLFxuICAgICAgbGluZVdpZHRoOiBzaXplLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGVTaGFwZVN0eWxlOiBmdW5jdGlvbiB1cGRhdGVTaGFwZVN0eWxlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIGNvbnN0IHN0cm9rZVN0eWxlOiBTaGFwZVN0eWxlID0ge1xuICAgIC8vICAgc3Ryb2tlOiBjZmcuY29sb3IsXG4gICAgLy8gfTtcblxuICAgIHZhciBzaGFwZSA9ICgoX2EgPSBpdGVtLmdldEtleVNoYXBlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChpdGVtKSkgfHwgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXTsgLy8gZ3JvdXAuZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnZWRnZS1zaGFwZScpO1xuXG4gICAgdmFyIHNpemUgPSBjZmcuc2l6ZTtcbiAgICBjZmcgPSB0aGlzLmdldFBhdGhQb2ludHMoY2ZnKTtcbiAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICB2YXIgY29udHJvbFBvaW50cyA9IHRoaXMuZ2V0Q29udHJvbFBvaW50cyhjZmcpOyAvLyB8fCBjZmcuY29udHJvbFBvaW50cztcblxuICAgIHZhciBwb2ludHMgPSBbc3RhcnRQb2ludF07IC8vIOa3u+WKoOi1t+Wni+eCuVxuICAgIC8vIOa3u+WKoOaOp+WItueCuVxuXG4gICAgaWYgKGNvbnRyb2xQb2ludHMpIHtcbiAgICAgIHBvaW50cyA9IHBvaW50cy5jb25jYXQoY29udHJvbFBvaW50cyk7XG4gICAgfSAvLyDmt7vliqDnu5PmnZ/ngrlcblxuXG4gICAgcG9pbnRzLnB1c2goZW5kUG9pbnQpO1xuICAgIHZhciBjdXJyZW50QXR0ciA9IHNoYXBlLmF0dHIoKTsgLy8gY29uc3QgcHJldmlvdXNTdHlsZSA9IG1peCh7fSwgc3Ryb2tlU3R5bGUsIGN1cnJlbnRBdHRyLCBjZmcuc3R5bGUpO1xuXG4gICAgdmFyIHByZXZpb3VzU3R5bGUgPSBjZmcuc3R5bGUgfHwge307XG5cbiAgICBpZiAocHJldmlvdXNTdHlsZS5zdHJva2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJldmlvdXNTdHlsZS5zdHJva2UgPSBjZmcuY29sb3I7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZSA9IGNmZy5zb3VyY2VOb2RlO1xuICAgIHZhciB0YXJnZXQgPSBjZmcudGFyZ2V0Tm9kZTtcbiAgICB2YXIgcm91dGVDZmcgPSB7XG4gICAgICByYWRpdXM6IHByZXZpb3VzU3R5bGUucmFkaXVzXG4gICAgfTtcblxuICAgIGlmICghY29udHJvbFBvaW50cykge1xuICAgICAgcm91dGVDZmcgPSB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgb2Zmc2V0OiBwcmV2aW91c1N0eWxlLm9mZnNldCxcbiAgICAgICAgcmFkaXVzOiBwcmV2aW91c1N0eWxlLnJhZGl1c1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aChwb2ludHMsIHJvdXRlQ2ZnKTtcbiAgICB2YXIgc3R5bGUgPSB7fTtcblxuICAgIGlmICh1cGRhdGVUeXBlID09PSAnbW92ZScpIHtcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICBwYXRoOiBwYXRoXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudEF0dHIuZW5kQXJyb3cgJiYgcHJldmlvdXNTdHlsZS5lbmRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2ZnLnN0eWxlLmVuZEFycm93ID0ge1xuICAgICAgICAgIHBhdGg6ICcnXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50QXR0ci5zdGFydEFycm93ICYmIHByZXZpb3VzU3R5bGUuc3RhcnRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2ZnLnN0eWxlLnN0YXJ0QXJyb3cgPSB7XG4gICAgICAgICAgcGF0aDogJydcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc3R5bGUgPSBfX2Fzc2lnbih7fSwgY2ZnLnN0eWxlKTtcbiAgICAgIGlmIChzdHlsZS5saW5lV2lkdGggPT09IHVuZGVmaW5lZCkgc3R5bGUubGluZVdkaXRoID0gKGlzTnVtYmVyKHNpemUpID8gc2l6ZSA6IHNpemUgPT09IG51bGwgfHwgc2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2l6ZVswXSkgfHwgY3VycmVudEF0dHIubGluZVdpZHRoO1xuICAgICAgaWYgKHN0eWxlLnBhdGggPT09IHVuZGVmaW5lZCkgc3R5bGUucGF0aCA9IHBhdGg7XG4gICAgICBpZiAoc3R5bGUuc3Ryb2tlID09PSB1bmRlZmluZWQpIHN0eWxlLnN0cm9rZSA9IGN1cnJlbnRBdHRyLnN0cm9rZSB8fCBjZmcuY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlKSB7XG4gICAgICBzaGFwZS5hdHRyKHN0eWxlKTtcbiAgICB9XG4gIH0sXG4gIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbFN0eWxlQnlQb3NpdGlvbihjZmcsIGxhYmVsQ2ZnLCBncm91cCkge1xuICAgIHZhciBsYWJlbFBvc2l0aW9uID0gbGFiZWxDZmcucG9zaXRpb24gfHwgdGhpcy5sYWJlbFBvc2l0aW9uOyAvLyDmlofmnKznmoTkvY3nva7nlKjmiLflj6/ku6XkvKDlhaVcblxuICAgIHZhciBzdHlsZSA9IHt9O1xuICAgIHZhciBwYXRoU2hhcGUgPSBncm91cCA9PT0gbnVsbCB8fCBncm91cCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ3JvdXBbJ3NoYXBlTWFwJ11bQ0xTX1NIQVBFXTsgLy8gZ3JvdXA/LmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gQ0xTX1NIQVBFKTtcbiAgICAvLyDkuI3lr7kgcGF0aFNoYXBlIOi/m+ihjOWIpOepuu+8jOWmguaenOe6v+S4jeWtmOWcqO+8jOivtOaYjuaciemXrumimOS6hlxuXG4gICAgdmFyIHBvaW50UGVyY2VudDtcblxuICAgIGlmIChsYWJlbFBvc2l0aW9uID09PSAnc3RhcnQnKSB7XG4gICAgICBwb2ludFBlcmNlbnQgPSAwO1xuICAgIH0gZWxzZSBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDAuNTtcbiAgICB9IC8vIOWBj+enu+mHj1xuXG5cbiAgICB2YXIgb2Zmc2V0WCA9IGxhYmVsQ2ZnLnJlZlggfHwgdGhpcy5yZWZYO1xuICAgIHZhciBvZmZzZXRZID0gbGFiZWxDZmcucmVmWSB8fCB0aGlzLnJlZlk7IC8vIOWmguaenOS4pOS4quiKgueCuemHjeWPoO+8jOe6v+WwseWPmOaIkOS6huS4gOS4queCue+8jOi/meaXtuWAmWxhYmVs55qE5L2N572u77yM5bCx5piv6L+Z5Liq54K5ICsg57ud5a+55YGP56e7XG5cbiAgICBpZiAoY2ZnLnN0YXJ0UG9pbnQueCA9PT0gY2ZnLmVuZFBvaW50LnggJiYgY2ZnLnN0YXJ0UG9pbnQueSA9PT0gY2ZnLmVuZFBvaW50LnkpIHtcbiAgICAgIHN0eWxlLnggPSBjZmcuc3RhcnRQb2ludC54ICsgb2Zmc2V0WDtcbiAgICAgIHN0eWxlLnkgPSBjZmcuc3RhcnRQb2ludC55ICsgb2Zmc2V0WTtcbiAgICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfVxuXG4gICAgdmFyIGF1dG9Sb3RhdGU7XG4gICAgaWYgKGlzTmlsKGxhYmVsQ2ZnLmF1dG9Sb3RhdGUpKSBhdXRvUm90YXRlID0gdGhpcy5sYWJlbEF1dG9Sb3RhdGU7ZWxzZSBhdXRvUm90YXRlID0gbGFiZWxDZmcuYXV0b1JvdGF0ZTtcbiAgICB2YXIgb2Zmc2V0U3R5bGUgPSBnZXRMYWJlbFBvc2l0aW9uKHBhdGhTaGFwZSwgcG9pbnRQZXJjZW50LCBvZmZzZXRYLCBvZmZzZXRZLCBhdXRvUm90YXRlKTtcbiAgICBzdHlsZS54ID0gb2Zmc2V0U3R5bGUueDtcbiAgICBzdHlsZS55ID0gb2Zmc2V0U3R5bGUueTtcbiAgICBzdHlsZS5yb3RhdGUgPSBvZmZzZXRTdHlsZS5yb3RhdGU7XG4gICAgc3R5bGUudGV4dEFsaWduID0gdGhpcy5fZ2V0VGV4dEFsaWduKGxhYmVsUG9zaXRpb24sIG9mZnNldFN0eWxlLmFuZ2xlKTtcbiAgICBzdHlsZS50ZXh0ID0gY2ZnLmxhYmVsO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgbGFiZWxDZmcpIHtcbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgdmFyIGJib3ggPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgdmFyIGJhY2tncm91bmRTdHlsZSA9IGxhYmVsQ2ZnLnN0eWxlICYmIGxhYmVsQ2ZnLnN0eWxlLmJhY2tncm91bmQ7XG5cbiAgICBpZiAoIWJhY2tncm91bmRTdHlsZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHZhciBwYWRkaW5nID0gYmFja2dyb3VuZFN0eWxlLnBhZGRpbmc7XG4gICAgdmFyIGJhY2tncm91bmRXaWR0aCA9IGJib3gud2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICB2YXIgYmFja2dyb3VuZEhlaWdodCA9IGJib3guaGVpZ2h0ICsgcGFkZGluZ1swXSArIHBhZGRpbmdbMl07XG5cbiAgICB2YXIgc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYmFja2dyb3VuZFN0eWxlKSwge1xuICAgICAgd2lkdGg6IGJhY2tncm91bmRXaWR0aCxcbiAgICAgIGhlaWdodDogYmFja2dyb3VuZEhlaWdodCxcbiAgICAgIHg6IGJib3gubWluWCAtIHBhZGRpbmdbM10sXG4gICAgICB5OiBiYm94Lm1pblkgLSBwYWRkaW5nWzBdLFxuICAgICAgbWF0cml4OiBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV1cbiAgICB9KTtcblxuICAgIHZhciBhdXRvUm90YXRlO1xuICAgIGlmIChpc05pbChsYWJlbENmZy5hdXRvUm90YXRlKSkgYXV0b1JvdGF0ZSA9IHRoaXMubGFiZWxBdXRvUm90YXRlO2Vsc2UgYXV0b1JvdGF0ZSA9IGxhYmVsQ2ZnLmF1dG9Sb3RhdGU7XG5cbiAgICBpZiAoYXV0b1JvdGF0ZSkge1xuICAgICAgc3R5bGUubWF0cml4ID0gbGFiZWwuYXR0cignbWF0cml4JykgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgLy8g6I635Y+W5paH5pys5a+56b2Q5pa55byPXG4gIF9nZXRUZXh0QWxpZ246IGZ1bmN0aW9uIF9nZXRUZXh0QWxpZ24obGFiZWxQb3NpdGlvbiwgYW5nbGUpIHtcbiAgICB2YXIgdGV4dEFsaWduID0gJ2NlbnRlcic7XG5cbiAgICBpZiAoIWFuZ2xlKSB7XG4gICAgICByZXR1cm4gbGFiZWxQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBhbmdsZSA9IGFuZ2xlICUgKE1hdGguUEkgKiAyKTsgLy8g5Y+W5qihXG5cbiAgICBpZiAobGFiZWxQb3NpdGlvbiAhPT0gJ2NlbnRlcicpIHtcbiAgICAgIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDw9IE1hdGguUEkgLyAyIHx8IGFuZ2xlID49IDMgLyAyICogTWF0aC5QSSAmJiBhbmdsZSA8IDIgKiBNYXRoLlBJKSB7XG4gICAgICAgIHRleHRBbGlnbiA9IGxhYmVsUG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0QWxpZ24gPSByZXZlcnRBbGlnbihsYWJlbFBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dEFsaWduO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwg6I635Y+W6L6555qE5o6n5Yi254K5XG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheX0g5o6n5Yi254K555qE5pWw57uEXG4gICAqL1xuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHJldHVybiBjZmcuY29udHJvbFBvaW50cztcbiAgfSxcblxuICAvKipcbiAgICogQGludGVybmFsIOWkhOeQhumcgOimgemHjeiuoeeul+eCueWSjOi+ueeahOaDheWGtVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOi+ueeahOmFjee9rumhuVxuICAgKi9cbiAgZ2V0UGF0aFBvaW50czogZnVuY3Rpb24gZ2V0UGF0aFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbovrlcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAg6L6555qE6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0cuR3JvdXB9IGdyb3VwIOi+ueeahOWuueWZqFxuICAgKiBAcmV0dXJuIHtJU2hhcGV9IOWbvuW9olxuICAgKi9cbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIHNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6IENMU19TSEFQRSxcbiAgICAgIG5hbWU6IENMU19TSEFQRSxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bQ0xTX1NIQVBFXSA9IHNoYXBlO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBsYWJlbFN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlO1xuICAgIHZhciBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IGxhYmVsU3R5bGUsXG4gICAgICBuYW1lOiAndGV4dC1zaGFwZScsXG4gICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1zaGFwZSddID0gbGFiZWw7XG5cbiAgICBpZiAoIWlzTmFOKHJvdGF0ZSkgJiYgcm90YXRlICE9PSAnJykge1xuICAgICAgbGFiZWwucm90YXRlQXRTdGFydChyb3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChsYWJlbFN0eWxlLmJhY2tncm91bmQpIHtcbiAgICAgIHZhciByZWN0ID0gdGhpcy5kcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCwgbGFiZWxTdHlsZSwgcm90YXRlKTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lID0gdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9CR19TVUZGSVg7XG4gICAgICByZWN0LnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZSk7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXSA9IHJlY3Q7XG4gICAgICBsYWJlbC50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9LFxuICBkcmF3TGFiZWxCZzogZnVuY3Rpb24gZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwsIGxhYmVsU3R5bGUsIHJvdGF0ZSkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgbGFiZWxDZmcpO1xuICAgIHZhciByZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBuYW1lOiAndGV4dC1iZy1zaGFwZScsXG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1iZy1zaGFwZSddID0gcmVjdDtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxufTtcblxudmFyIHNpbmdsZUVkZ2VEZWYgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2hhcGVCYXNlKSwgc2luZ2xlRWRnZSk7XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnc2luZ2xlLWVkZ2UnLCBzaW5nbGVFZGdlRGVmKTsgLy8g55u057q/LCDkuI3mlK/mjIHmjqfliLbngrlcblxuU2hhcGUucmVnaXN0ZXJFZGdlKCdsaW5lJywge1xuICAvLyDmjqfliLbngrnkuI3nlJ/mlYhcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cygpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsgLy8g55u057q/XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnc3BsaW5lJywge1xuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gZ2V0U3BsaW5lKHBvaW50cyk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn0sICdzaW5nbGUtZWRnZScpO1xuU2hhcGUucmVnaXN0ZXJFZGdlKCdhcmMnLCB7XG4gIGN1cnZlT2Zmc2V0OiAyMCxcbiAgY2xvY2t3aXNlOiAxLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIHZhciBtaWRQb2ludCA9IHtcbiAgICAgIHg6IChzdGFydFBvaW50LnggKyBlbmRQb2ludC54KSAvIDIsXG4gICAgICB5OiAoc3RhcnRQb2ludC55ICsgZW5kUG9pbnQueSkgLyAyXG4gICAgfTtcbiAgICB2YXIgY2VudGVyO1xuICAgIHZhciBhcmNQb2ludDsgLy8g5qC55o2u57uZ5a6a54K56K6h566X5ZyG5bynXG5cbiAgICBpZiAoY2ZnLmNvbnRyb2xQb2ludHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJjUG9pbnQgPSBjZmcuY29udHJvbFBvaW50c1swXTtcbiAgICAgIGNlbnRlciA9IGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHN0YXJ0UG9pbnQsIGFyY1BvaW50LCBlbmRQb2ludCk7IC8vIOagueaNruaOp+WItueCueWSjOebtOe6v+WFs+ezu+WGs+WumiBjbG9ja3dpc2XlgLxcblxuICAgICAgaWYgKHN0YXJ0UG9pbnQueCA8PSBlbmRQb2ludC54ICYmIHN0YXJ0UG9pbnQueSA+IGVuZFBvaW50LnkpIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSBjZW50ZXIueCA+IGFyY1BvaW50LnggPyAwIDogMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnRQb2ludC54IDw9IGVuZFBvaW50LnggJiYgc3RhcnRQb2ludC55IDwgZW5kUG9pbnQueSkge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IGNlbnRlci54ID4gYXJjUG9pbnQueCA/IDEgOiAwO1xuICAgICAgfSBlbHNlIGlmIChzdGFydFBvaW50LnggPiBlbmRQb2ludC54ICYmIHN0YXJ0UG9pbnQueSA8PSBlbmRQb2ludC55KSB7XG4gICAgICAgIHRoaXMuY2xvY2t3aXNlID0gY2VudGVyLnkgPCBhcmNQb2ludC55ID8gMCA6IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IGNlbnRlci55IDwgYXJjUG9pbnQueSA/IDEgOiAwO1xuICAgICAgfSAvLyDoi6Xnu5nlrprngrnlkozkuKTnq6/ngrnlhbHnur/vvIzml6Dms5XnlJ/miJDlnIblvKfvvIznu5jliLbnm7Tnur9cblxuXG4gICAgICBpZiAoKGFyY1BvaW50LnggLSBzdGFydFBvaW50LngpIC8gKGFyY1BvaW50LnkgLSBzdGFydFBvaW50LnkpID09PSAoZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueCkgLyAoZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDmoLnmja7nm7Tnur/ov57nur/kuK3ngrnnmoTnmoTlgY/np7vorqHnrpflnIblvKdcbiAgICAgIC8vIOiLpeeUqOaIt+e7meWumuWBj+enu+mHj+WImeagueaNruWFtuiuoeeul++8jOWQpuWImeaMieeFp+m7mOiupOWBj+enu+WAvOiuoeeul1xuICAgICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0FycmF5KGNmZy5jdXJ2ZU9mZnNldCkpIHtcbiAgICAgICAgY2ZnLmN1cnZlT2Zmc2V0ID0gY2ZnLmN1cnZlT2Zmc2V0WzBdO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0IDwgMCkge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHZhciB2ZWMgPSB7XG4gICAgICAgIHg6IGVuZFBvaW50LnggLSBzdGFydFBvaW50LngsXG4gICAgICAgIHk6IGVuZFBvaW50LnkgLSBzdGFydFBvaW50LnlcbiAgICAgIH07XG4gICAgICB2YXIgZWRnZUFuZ2xlID0gTWF0aC5hdGFuMih2ZWMueSwgdmVjLngpO1xuICAgICAgYXJjUG9pbnQgPSB7XG4gICAgICAgIHg6IGNmZy5jdXJ2ZU9mZnNldCAqIE1hdGguY29zKC1NYXRoLlBJIC8gMiArIGVkZ2VBbmdsZSkgKyBtaWRQb2ludC54LFxuICAgICAgICB5OiBjZmcuY3VydmVPZmZzZXQgKiBNYXRoLnNpbigtTWF0aC5QSSAvIDIgKyBlZGdlQW5nbGUpICsgbWlkUG9pbnQueVxuICAgICAgfTtcbiAgICAgIGNlbnRlciA9IGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHN0YXJ0UG9pbnQsIGFyY1BvaW50LCBlbmRQb2ludCk7XG4gICAgfVxuXG4gICAgdmFyIHJhZGl1cyA9IGRpc3RhbmNlKHN0YXJ0UG9pbnQsIGNlbnRlcik7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBbe1xuICAgICAgeDogcmFkaXVzLFxuICAgICAgeTogcmFkaXVzXG4gICAgfV07XG4gICAgcmV0dXJuIGNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBwYXRoLnB1c2goWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7IC8vIOaOp+WItueCueS4juerr+eCueWFsee6v1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludHNbMV0ueCwgcG9pbnRzWzFdLnldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aC5wdXNoKFsnQScsIHBvaW50c1sxXS54LCBwb2ludHNbMV0ueSwgMCwgMCwgdGhpcy5jbG9ja3dpc2UsIHBvaW50c1syXS54LCBwb2ludHNbMl0ueV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgncXVhZHJhdGljJywge1xuICBjdXJ2ZVBvc2l0aW9uOiAwLjUsXG4gIGN1cnZlT2Zmc2V0OiAtMjAsXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBjZmcuY29udHJvbFBvaW50czsgLy8g5oyH5a6aY29udHJvbFBvaW50c1xuXG4gICAgaWYgKCFjb250cm9sUG9pbnRzIHx8ICFjb250cm9sUG9pbnRzLmxlbmd0aCkge1xuICAgICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlT2Zmc2V0ID0gdGhpcy5jdXJ2ZU9mZnNldDtcbiAgICAgIGlmIChjZmcuY3VydmVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVQb3NpdGlvbiA9IHRoaXMuY3VydmVQb3NpdGlvbjtcbiAgICAgIGlmIChpc0FycmF5KHRoaXMuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBjZmcuY3VydmVPZmZzZXRbMF07XG4gICAgICBpZiAoaXNBcnJheSh0aGlzLmN1cnZlUG9zaXRpb24pKSBjZmcuY3VydmVQb3NpdGlvbiA9IGNmZy5jdXJ2ZU9mZnNldFswXTtcbiAgICAgIHZhciBpbm5lclBvaW50ID0gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBjZmcuY3VydmVQb3NpdGlvbiwgY2ZnLmN1cnZlT2Zmc2V0KTtcbiAgICAgIGNvbnRyb2xQb2ludHMgPSBbaW5uZXJQb2ludF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBwYXRoLnB1c2goWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gICAgcGF0aC5wdXNoKFsnUScsIHBvaW50c1sxXS54LCBwb2ludHNbMV0ueSwgcG9pbnRzWzJdLngsIHBvaW50c1syXS55XSk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn0sICdzaW5nbGUtZWRnZScpO1xuU2hhcGUucmVnaXN0ZXJFZGdlKCdjdWJpYycsIHtcbiAgY3VydmVQb3NpdGlvbjogWzEgLyAyLCAxIC8gMl0sXG4gIGN1cnZlT2Zmc2V0OiBbLTIwLCAyMF0sXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBjZmcuY29udHJvbFBvaW50czsgLy8g5oyH5a6aIGNvbnRyb2xQb2ludHNcblxuICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlT2Zmc2V0ID0gdGhpcy5jdXJ2ZU9mZnNldDtcbiAgICBpZiAoY2ZnLmN1cnZlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlUG9zaXRpb24gPSB0aGlzLmN1cnZlUG9zaXRpb247XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZU9mZnNldCkpIGNmZy5jdXJ2ZU9mZnNldCA9IFtjZmcuY3VydmVPZmZzZXQsIC1jZmcuY3VydmVPZmZzZXRdO1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVQb3NpdGlvbikpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gW2NmZy5jdXJ2ZVBvc2l0aW9uLCAxIC0gY2ZnLmN1cnZlUG9zaXRpb25dO1xuXG4gICAgaWYgKCFjb250cm9sUG9pbnRzIHx8ICFjb250cm9sUG9pbnRzLmxlbmd0aCB8fCBjb250cm9sUG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgICB2YXIgaW5uZXJQb2ludDEgPSBnZXRDb250cm9sUG9pbnQoc3RhcnRQb2ludCwgZW5kUG9pbnQsIGNmZy5jdXJ2ZVBvc2l0aW9uWzBdLCBjZmcuY3VydmVPZmZzZXRbMF0pO1xuICAgICAgdmFyIGlubmVyUG9pbnQyID0gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBjZmcuY3VydmVQb3NpdGlvblsxXSwgY2ZnLmN1cnZlT2Zmc2V0WzFdKTtcbiAgICAgIGNvbnRyb2xQb2ludHMgPSBbaW5uZXJQb2ludDEsIGlubmVyUG9pbnQyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udHJvbFBvaW50cztcbiAgfSxcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChwb2ludHMpIHtcbiAgICB2YXIgcGF0aCA9IFtdO1xuICAgIHBhdGgucHVzaChbJ00nLCBwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnldKTtcbiAgICBwYXRoLnB1c2goWydDJywgcG9pbnRzWzFdLngsIHBvaW50c1sxXS55LCBwb2ludHNbMl0ueCwgcG9pbnRzWzJdLnksIHBvaW50c1szXS54LCBwb2ludHNbM10ueV0pO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsgLy8g5Z6C55u05pa55ZCR55qE5LiJ6Zi26LSd5aGe5bCU5puy57q/77yM5LiN5YaN6ICD6JmR55So5oi35aSW6YOo5Lyg5YWl55qE5o6n5Yi254K5XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnY3ViaWMtdmVydGljYWwnLCB7XG4gIGN1cnZlUG9zaXRpb246IFsxIC8gMiwgMSAvIDJdLFxuICBtaW5DdXJ2ZU9mZnNldDogWzAsIDBdLFxuICBjdXJ2ZU9mZnNldDogdW5kZWZpbmVkLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIGlmIChjZmcuY3VydmVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVQb3NpdGlvbiA9IHRoaXMuY3VydmVQb3NpdGlvbjtcbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgaWYgKGNmZy5taW5DdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSBjZmcubWluQ3VydmVPZmZzZXQgPSB0aGlzLm1pbkN1cnZlT2Zmc2V0O1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBbY2ZnLmN1cnZlT2Zmc2V0LCAtY2ZnLmN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLm1pbkN1cnZlT2Zmc2V0KSkgY2ZnLm1pbkN1cnZlT2Zmc2V0ID0gW2NmZy5taW5DdXJ2ZU9mZnNldCwgLWNmZy5taW5DdXJ2ZU9mZnNldF07XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZVBvc2l0aW9uKSkgY2ZnLmN1cnZlUG9zaXRpb24gPSBbY2ZnLmN1cnZlUG9zaXRpb24sIDEgLSBjZmcuY3VydmVQb3NpdGlvbl07XG4gICAgdmFyIHlEaXN0ID0gZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueTtcbiAgICB2YXIgY3VydmVPZmZzZXQgPSBbMCwgMF07XG5cbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0KSB7XG4gICAgICBjdXJ2ZU9mZnNldCA9IGNmZy5jdXJ2ZU9mZnNldDtcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKHlEaXN0KSA8IE1hdGguYWJzKGNmZy5taW5DdXJ2ZU9mZnNldFswXSkpIHtcbiAgICAgIGN1cnZlT2Zmc2V0ID0gY2ZnLm1pbkN1cnZlT2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBpbm5lclBvaW50MSA9IHtcbiAgICAgIHg6IHN0YXJ0UG9pbnQueCxcbiAgICAgIHk6IHN0YXJ0UG9pbnQueSArIHlEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzBdICsgY3VydmVPZmZzZXRbMF1cbiAgICB9O1xuICAgIHZhciBpbm5lclBvaW50MiA9IHtcbiAgICAgIHg6IGVuZFBvaW50LngsXG4gICAgICB5OiBlbmRQb2ludC55IC0geURpc3QgKiB0aGlzLmN1cnZlUG9zaXRpb25bMV0gKyBjdXJ2ZU9mZnNldFsxXVxuICAgIH07XG4gICAgcmV0dXJuIFtpbm5lclBvaW50MSwgaW5uZXJQb2ludDJdO1xuICB9XG59LCAnY3ViaWMnKTsgLy8g5rC05bmz5pa55ZCR55qE5LiJ6Zi26LSd5aGe5bCU5puy57q/77yM5LiN5YaN6ICD6JmR55So5oi35aSW6YOo5Lyg5YWl55qE5o6n5Yi254K5XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnY3ViaWMtaG9yaXpvbnRhbCcsIHtcbiAgY3VydmVQb3NpdGlvbjogWzEgLyAyLCAxIC8gMl0sXG4gIG1pbkN1cnZlT2Zmc2V0OiBbMCwgMF0sXG4gIGN1cnZlT2Zmc2V0OiB1bmRlZmluZWQsXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgaWYgKGNmZy5jdXJ2ZVBvc2l0aW9uID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gdGhpcy5jdXJ2ZVBvc2l0aW9uO1xuICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlT2Zmc2V0ID0gdGhpcy5jdXJ2ZU9mZnNldDtcbiAgICBpZiAoY2ZnLm1pbkN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5taW5DdXJ2ZU9mZnNldCA9IHRoaXMubWluQ3VydmVPZmZzZXQ7XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZU9mZnNldCkpIGNmZy5jdXJ2ZU9mZnNldCA9IFtjZmcuY3VydmVPZmZzZXQsIC1jZmcuY3VydmVPZmZzZXRdO1xuICAgIGlmIChpc051bWJlcihjZmcubWluQ3VydmVPZmZzZXQpKSBjZmcubWluQ3VydmVPZmZzZXQgPSBbY2ZnLm1pbkN1cnZlT2Zmc2V0LCAtY2ZnLm1pbkN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLmN1cnZlUG9zaXRpb24pKSBjZmcuY3VydmVQb3NpdGlvbiA9IFtjZmcuY3VydmVQb3NpdGlvbiwgMSAtIGNmZy5jdXJ2ZVBvc2l0aW9uXTtcbiAgICB2YXIgeERpc3QgPSBlbmRQb2ludC54IC0gc3RhcnRQb2ludC54O1xuICAgIHZhciBjdXJ2ZU9mZnNldCA9IFswLCAwXTtcblxuICAgIGlmIChjZmcuY3VydmVPZmZzZXQpIHtcbiAgICAgIGN1cnZlT2Zmc2V0ID0gY2ZnLmN1cnZlT2Zmc2V0O1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoeERpc3QpIDwgTWF0aC5hYnMoY2ZnLm1pbkN1cnZlT2Zmc2V0WzBdKSkge1xuICAgICAgY3VydmVPZmZzZXQgPSBjZmcubWluQ3VydmVPZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIGlubmVyUG9pbnQxID0ge1xuICAgICAgeDogc3RhcnRQb2ludC54ICsgeERpc3QgKiB0aGlzLmN1cnZlUG9zaXRpb25bMF0gKyBjdXJ2ZU9mZnNldFswXSxcbiAgICAgIHk6IHN0YXJ0UG9pbnQueVxuICAgIH07XG4gICAgdmFyIGlubmVyUG9pbnQyID0ge1xuICAgICAgeDogZW5kUG9pbnQueCAtIHhEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzFdICsgY3VydmVPZmZzZXRbMV0sXG4gICAgICB5OiBlbmRQb2ludC55XG4gICAgfTtcbiAgICB2YXIgY29udHJvbFBvaW50cyA9IFtpbm5lclBvaW50MSwgaW5uZXJQb2ludDJdO1xuICAgIHJldHVybiBjb250cm9sUG9pbnRzO1xuICB9XG59LCAnY3ViaWMnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgnbG9vcCcsIHtcbiAgZ2V0UGF0aFBvaW50czogZnVuY3Rpb24gZ2V0UGF0aFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gZ2V0TG9vcENmZ3MoY2ZnKTtcbiAgfSxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGFmdGVyRHJhdzogZnVuY3Rpb24gYWZ0ZXJEcmF3KGNmZykge1xuICAgIGNmZy5jb250cm9sUG9pbnRzID0gdW5kZWZpbmVkO1xuICB9LFxuICBhZnRlclVwZGF0ZTogZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoY2ZnKSB7XG4gICAgY2ZnLmNvbnRyb2xQb2ludHMgPSB1bmRlZmluZWQ7XG4gIH1cbn0sICdjdWJpYycpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/edge.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/hull/bubbleset.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/hull/bubbleset.js ***!
\*****************************************************************/
/*! exports provided: genBubbleSet */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genBubbleSet\", function() { return genBubbleSet; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n\nvar defaultOps = {\n maxRoutingIterations: 100,\n maxMarchingIterations: 100,\n pixelGroupSize: 2,\n edgeR0: 10,\n edgeR1: 10,\n nodeR0: 5,\n nodeR1: 10,\n morphBuffer: 5,\n threshold: 0.001,\n skip: 16,\n nodeInfluenceFactor: 1,\n edgeInfluenceFactor: 1,\n negativeNodeInfluenceFactor: -0.5\n};\n/**\n * Marching square algorithm for traching the contour of a pixel group\n * https://www.emanueleferonato.com/2013/03/01/using-marching-squares-algorithm-to-trace-the-contour-of-an-image/\n * @param potentialArea\n * @param threshold\n */\n\nfunction MarchingSquares(contour, potentialArea, threshold) {\n var marched = false;\n\n var getVal = function getVal(x, y) {\n return potentialArea.cells[x + y * potentialArea.width];\n };\n\n var getState = function getState(x, y) {\n var squareVal = 0;\n\n if (getVal(x - 1, y - 1) >= threshold) {\n squareVal += 1;\n }\n\n if (getVal(x, y - 1) > threshold) {\n squareVal += 2;\n }\n\n if (getVal(x - 1, y) > threshold) {\n squareVal += 4;\n }\n\n if (getVal(x, y) > threshold) {\n squareVal += 8;\n }\n\n return squareVal;\n };\n\n var doMarch = function doMarch(xPos, yPos) {\n var x = xPos;\n var y = yPos;\n var prevX;\n var prevY;\n\n for (var i = 0; i < potentialArea.width * potentialArea.height; i++) {\n prevX = x;\n prevY = y;\n\n if (contour.findIndex(function (item) {\n return item.x === x && item.y === y;\n }) > -1) {\n if (contour[0].x !== x || contour[0].y !== y) {// encountered a loop but haven't returned to start: change direction using conditionals and continue back to start\n } else {\n return true;\n }\n } else {\n contour.push({\n x: x,\n y: y\n });\n }\n\n var state = getState(x, y); // assign the move direction according to state of the square\n\n switch (state) {\n case -1:\n console.warn('Marched out of bounds');\n return true;\n\n case 0:\n case 3:\n case 2:\n case 7:\n x++; // go right\n\n break;\n\n case 12:\n case 14:\n case 4:\n x--; // go left\n\n break;\n\n case 6:\n // go left if come from up else go right\n if (prevX === 0) {\n if (prevY === -1) {\n x -= 1;\n } else {\n x += 1;\n }\n }\n\n break;\n\n case 1:\n case 13:\n case 5:\n y--; // go up\n\n break;\n\n case 9:\n // go up if come from right else go down\n if (prevX === 1) {\n if (prevY === 0) {\n y -= 1;\n } else {\n y += 1;\n }\n }\n\n break;\n\n case 10:\n case 8:\n case 11:\n y++; // go down\n\n break;\n\n default:\n console.warn(\"Marching squares invalid state: \".concat(state));\n return true;\n }\n }\n };\n\n this.march = function () {\n for (var x = 0; x < potentialArea.width && !marched; x += 1) {\n for (var y = 0; y < potentialArea.height && !marched; y += 1) {\n if (getVal(x, y) > threshold && getState(x, y) !== 15) {\n marched = doMarch(x, y);\n }\n }\n }\n\n return marched;\n };\n}\n/**\n * Space partition & assign value to each cell\n * @param points\n */\n\n\nvar initGridCells = function initGridCells(width, height, pixelGroupSize) {\n var scaleWidth = Math.ceil(width / pixelGroupSize);\n var scaleHeight = Math.ceil(height / pixelGroupSize);\n var gridCells = new Float32Array(Math.max(0, scaleWidth * scaleHeight)).fill(0);\n return {\n cells: gridCells,\n width: scaleWidth,\n height: scaleHeight\n };\n};\n/**\n * Find the optimal already visited member to item;\n Optimal: minimize cost(j) = distance(i,j) ∗ countObstacles(i,j)\n * @param item\n * @param visited\n */\n\n\nvar pickBestNeighbor = function pickBestNeighbor(item, visited, nonMembers) {\n var closestNeighbour = null;\n var minCost = Number.POSITIVE_INFINITY;\n visited.forEach(function (neighbourItem) {\n var itemP = {\n x: item.getModel().x,\n y: item.getModel().y\n };\n var neighbourItemP = {\n x: neighbourItem.getModel().x,\n y: neighbourItem.getModel().y\n };\n var dist = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])(itemP, neighbourItemP);\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](itemP.x, itemP.y, neighbourItemP.x, neighbourItemP.y);\n var numberObstacles = nonMembers.reduce(function (count, _item) {\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(_item, directLine) > 0) {\n return count + 1;\n }\n\n return count;\n }, 0);\n\n if (dist * Math.pow(numberObstacles + 1, 2) < minCost) {\n closestNeighbour = neighbourItem;\n minCost = dist * Math.pow(numberObstacles + 1, 2);\n }\n });\n return closestNeighbour;\n};\n/**\n * 返回和线相交的item中,离边的起点最近的item\n * @param items\n * @param line\n */\n\n\nvar getIntersectItem = function getIntersectItem(items, line) {\n var minDistance = Number.POSITIVE_INFINITY;\n var closestItem = null;\n items.forEach(function (item) {\n var distance = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(item, line); // find closest intersection\n\n if (distance >= 0 && distance < minDistance) {\n closestItem = item;\n minDistance = distance;\n }\n });\n return closestItem;\n};\n/**\n * Modify the directLine and Route virtual edges around obstacles\n */\n\n\nvar computeRoute = function computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer) {\n var checkedLines = [];\n var linesToCheck = [];\n linesToCheck.push(directLine);\n var hasIntersection = true;\n var iterations = 0;\n\n var pointExists = function pointExists(point, lines) {\n var flag = false;\n lines.forEach(function (line) {\n if (flag) return;\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x1,\n y: line.y1\n }) || Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x2,\n y: line.y2\n })) {\n flag = true;\n }\n });\n return flag;\n };\n\n var isPointInNonMembers = function isPointInNonMembers(point, _nonMembers) {\n for (var _i = 0, _nonMembers_1 = _nonMembers; _i < _nonMembers_1.length; _i++) {\n var item = _nonMembers_1[_i];\n var bbox = item.getBBox();\n var itemContour = [[bbox.x, bbox.y], [bbox.x + bbox.width, bbox.y], [bbox.x, bbox.y + bbox.height], [bbox.x + bbox.width, bbox.y + bbox.height]];\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(itemContour, point.x, point.y)) {\n return true;\n }\n }\n\n return false;\n }; // outer loop end when no more intersections or out of iterations\n\n\n while (hasIntersection && iterations < maxRoutingIterations) {\n hasIntersection = false;\n\n var _loop_1 = function _loop_1() {\n var line = linesToCheck.pop();\n var closestItem = getIntersectItem(nonMembers, line);\n\n if (closestItem) {\n var _a = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"itemIntersectByLine\"])(closestItem, line),\n intersections_1 = _a[0],\n countIntersections = _a[1]; // if line passes through item\n\n\n if (countIntersections === 2) {\n var testReroute = function testReroute(isFirst) {\n var tempMorphBuffer = morphBuffer;\n var virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst); // test the virtualNode already exists\n\n var exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n var pointInside = isPointInNonMembers(virtualNode, nonMembers);\n\n while (!exist && pointInside && tempMorphBuffer >= 1) {\n // try a smaller buffer\n tempMorphBuffer /= 1.5;\n virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst);\n exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n pointInside = isPointInNonMembers(virtualNode, nonMembers);\n } // 第二次route时不要求pointInside\n\n\n if (virtualNode && !exist && (!isFirst || !pointInside)) {\n // add 2 rerouted lines to check\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line.x1, line.y1, virtualNode.x, virtualNode.y));\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](virtualNode.x, virtualNode.y, line.x2, line.y2));\n hasIntersection = true;\n }\n };\n\n testReroute(true);\n\n if (!hasIntersection) {\n // if we didn't find a valid point around the first corner, try the second\n testReroute(false);\n }\n }\n } // no intersection found, mark this line as completed\n\n\n if (!hasIntersection) {\n checkedLines.push(line);\n }\n\n iterations += 1;\n }; // inner loop end when out of lines or found an intersection\n\n\n while (!hasIntersection && linesToCheck.length) {\n _loop_1();\n }\n } // 加入剩余的线\n\n\n while (linesToCheck.length) {\n checkedLines.push(linesToCheck.pop());\n }\n\n return checkedLines;\n};\n/**\n * Connect item with visited members using direct line or virtual edges\n */\n\n\nfunction getRoute(item, nonMembers, visited, maxRoutingIterations, morphBuffer) {\n var optimalNeighbor = pickBestNeighbor(item, visited, nonMembers);\n\n if (optimalNeighbor === null) {\n return [];\n } // merge the consecutive lines\n\n\n var mergeLines = function mergeLines(checkedLines) {\n var finalRoute = [];\n\n while (checkedLines.length > 0) {\n var line1 = checkedLines.pop();\n\n if (checkedLines.length === 0) {\n finalRoute.push(line1);\n break;\n }\n\n var line2 = checkedLines.pop();\n var mergeLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line1.x1, line1.y1, line2.x2, line2.y2);\n var closestItem = getIntersectItem(nonMembers, mergeLine); // merge most recent line and previous line\n\n if (!closestItem) {\n checkedLines.push(mergeLine);\n } else {\n finalRoute.push(line1);\n checkedLines.push(line2);\n }\n }\n\n return finalRoute;\n };\n\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](item.getModel().x, item.getModel().y, optimalNeighbor.getModel().x, optimalNeighbor.getModel().y);\n var checkedLines = computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer);\n var finalRoute = mergeLines(checkedLines);\n return finalRoute;\n}\n/**\n * Calculate the countor that includes the selected items and exclues the non-selected items\n * @param graph\n * @param members\n * @param nonMembers\n * @param options\n */\n\n\nvar genBubbleSet = function genBubbleSet(members, nonMembers, ops) {\n // eslint-disable-next-line no-redeclare\n var options = Object.assign(defaultOps, ops);\n var centroid = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"getPointsCenter\"])(members.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n })); // 按照到中心距离远近排序\n\n members = members.sort(function (a, b) {\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: a.getModel().x,\n y: a.getModel().y\n }, centroid) - Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: b.getModel().x,\n y: b.getModel().y\n }, centroid);\n });\n var visited = [];\n var virtualEdges = [];\n members.forEach(function (item) {\n var lines = getRoute(item, nonMembers, visited, options.maxRoutingIterations, options.morphBuffer);\n lines.forEach(function (l) {\n virtualEdges.push(l);\n });\n visited.push(item);\n }); // 由于edge也可以作为member和nonMember传入,暂时不考虑把edges作为参数传入genBubbleSet\n // edges && edges.forEach(e => {\n // virtualEdges.push(new Line(e.getSource().getModel().x, e.getSource().getModel().y, e.getTarget().getModel().x, e.getTarget().getModel().y));\n // });\n\n var activeRegion = getActiveRregion(members, virtualEdges, options.nodeR0);\n var potentialArea = initGridCells(activeRegion.width, activeRegion.height, options.pixelGroupSize); // Use march squares to generate contour\n\n var contour = [];\n var hull = [];\n\n for (var iterations = 0; iterations < options.maxMarchingIterations; iterations++) {\n fillPotentialArea(members, nonMembers, virtualEdges, activeRegion, potentialArea, options);\n contour = [];\n hull = [];\n if (!new MarchingSquares(contour, potentialArea, options.threshold).march()) continue;\n var marchedPath = contour.map(function (point) {\n return {\n x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX),\n y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY)\n };\n }); // const marchedPath = marchingSquares(potentialArea, options.threshold).map(point => ({ x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX), y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY) }))\n\n if (marchedPath) {\n var size = marchedPath.length;\n\n if (options.skip > 1) {\n size = Math.floor(marchedPath.length / options.skip); // if we reduced too much (fewer than three points in reduced surface) reduce skip and try again\n\n while (size < 3 && options.skip > 1) {\n options.skip -= 1;\n size = Math.floor(marchedPath.length / options.skip);\n }\n } // copy hull values\n\n\n for (var i = 0, j = 0; j < size; j += 1, i += options.skip) {\n hull.push({\n x: marchedPath[i].x,\n y: marchedPath[i].y\n });\n }\n }\n\n var isContourValid = function isContourValid() {\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var item = members_1[_i];\n var hullPoints = hull.map(function (point) {\n return [point.x, point.y];\n });\n if (!Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(hullPoints, item.getBBox().centerX, item.getBBox().centerY)) return false;\n } // 不强制要求所有nonMembers都没有包含在内\n // for (const item of nonMembers) {\n // if (isPointInPolygon({ x: item.getBBox().centerX, y: item.getBBox().centerY }, contour)) return false\n // }\n\n\n return true;\n };\n\n if (hull && isContourValid()) {\n return hull;\n } // update parameters for next iteraction\n\n\n options.threshold *= 0.9;\n\n if (iterations <= options.maxMarchingIterations * 0.5) {\n options.memberInfluenceFactor *= 1.2;\n options.edgeInfluenceFactor *= 1.2;\n } else if (options.nonMemberInfluenceFactor !== 0 && nonMembers.length > 0) {\n // after half the iterations, start increasing positive energy and lowering the threshold\n options.nonMemberInfluenceFactor *= 0.8;\n } else {\n break;\n }\n }\n\n return hull;\n};\n/**\n * unionboundingbox\n * @param members\n * @param edges\n */\n\nfunction getActiveRregion(members, edges, offset) {\n var activeRegion = {\n minX: Number.POSITIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY,\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n var bboxes = [];\n members.forEach(function (item) {\n bboxes.push(item.getBBox());\n });\n edges.forEach(function (l) {\n bboxes.push(l.getBBox());\n });\n\n for (var _i = 0, bboxes_1 = bboxes; _i < bboxes_1.length; _i++) {\n var bbox = bboxes_1[_i];\n activeRegion.minX = (bbox.minX < activeRegion.minX ? bbox.minX : activeRegion.minX) - offset;\n activeRegion.minY = (bbox.minY < activeRegion.minY ? bbox.minY : activeRegion.minY) - offset;\n activeRegion.maxX = (bbox.maxX > activeRegion.maxX ? bbox.maxX : activeRegion.maxX) + offset;\n activeRegion.maxY = (bbox.maxY > activeRegion.maxY ? bbox.maxY : activeRegion.maxY) + offset;\n }\n\n activeRegion.width = activeRegion.maxX - activeRegion.minX;\n activeRegion.height = activeRegion.maxY - activeRegion.minY;\n activeRegion.x = activeRegion.minX;\n activeRegion.y = activeRegion.minY;\n return activeRegion;\n}\n\nfunction fillPotentialArea(members, nonMembers, edges, activeRegion, potentialArea, options) {\n function pos2GridIx(x, offset) {\n var gridIx = Math.floor((x - offset) / options.pixelGroupSize);\n return gridIx < 0 ? 0 : gridIx;\n }\n\n function gridIx2Pos(x, offset) {\n return x * options.pixelGroupSize + offset;\n } // using inverse a for numerical stability\n\n\n var nodeInfA = (options.nodeR0 - options.nodeR1) * (options.nodeR0 - options.nodeR1);\n var edgeInfA = (options.edgeR0 - options.edgeR1) * (options.edgeR0 - options.edgeR1);\n\n var getAffectedRegion = function getAffectedRegion(bbox, thresholdR) {\n var startX = Math.min(pos2GridIx(bbox.minX, thresholdR + activeRegion.minX), potentialArea.width);\n var startY = Math.min(pos2GridIx(bbox.minY, thresholdR + activeRegion.minY), potentialArea.height);\n var endX = Math.min(pos2GridIx(bbox.maxX, -thresholdR + activeRegion.minX), potentialArea.width);\n var endY = Math.min(pos2GridIx(bbox.maxY, -thresholdR + activeRegion.minY), potentialArea.height);\n return [startX, startY, endX, endY];\n };\n\n var addItemInfluence = function addItemInfluence(item, influenceFactor) {\n var bbox = item.getBBox();\n\n var _a = getAffectedRegion(bbox, options.nodeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // calculate item influence for each cell\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var distanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointRectSquareDist\"])({\n x: tempX,\n y: tempY\n }, {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n });\n\n if (distanceSq < Math.pow(options.nodeR1, 2)) {\n var dr = Math.sqrt(distanceSq) - options.nodeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * dr * dr;\n }\n }\n }\n };\n\n var addEdgeInfluence = function addEdgeInfluence(line, influenceFactor) {\n var bbox = line.getBBox();\n\n var _a = getAffectedRegion(bbox, options.edgeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // for every point in active part of potentialArea, calculate distance to nearest point on line and add influence\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea.cells[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var minDistanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointLineSquareDist\"])({\n x: tempX,\n y: tempY\n }, line); // only influence if less than r1\n\n if (minDistanceSq < Math.pow(options.edgeR1, 2)) {\n var mdr = Math.sqrt(minDistanceSq) - options.edgeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * mdr * mdr;\n }\n }\n }\n };\n\n if (options.nodeInfluenceFactor) {\n members.forEach(function (item) {\n addItemInfluence(item, options.nodeInfluenceFactor / nodeInfA);\n });\n }\n\n if (options.edgeInfluenceFactor) {\n edges.forEach(function (edge) {\n addEdgeInfluence(edge, options.edgeInfluenceFactor / edgeInfA);\n });\n }\n\n if (options.negativeNodeInfluenceFactor) {\n nonMembers.forEach(function (item) {\n addItemInfluence(item, options.negativeNodeInfluenceFactor / nodeInfA);\n });\n }\n}\n\nfunction rerouteLine(item, buffer, intersections, wrapNormal) {\n var bbox = item.getBBox();\n var topIntersect = intersections[0],\n leftIntersect = intersections[1],\n bottomIntersect = intersections[2],\n rightIntersect = intersections[3];\n var cornerPos = {\n topLeft: {\n x: bbox.minX - buffer,\n y: bbox.minY - buffer\n },\n topRight: {\n x: bbox.maxX + buffer,\n y: bbox.minY - buffer\n },\n bottomLeft: {\n x: bbox.minX - buffer,\n y: bbox.maxY + buffer\n },\n bottomRight: {\n x: bbox.maxX + buffer,\n y: bbox.maxY + buffer\n }\n };\n var totalArea = bbox.height * bbox.width;\n\n function calcHalfArea(intersect1, intersect2) {\n return bbox.width * ((intersect1.y - bbox.minY + (intersect2.y - bbox.minY)) * 0.5);\n } // 根据线和boundingbox相交的情况,确定control point的位置\n\n\n if (leftIntersect) {\n // 相交区域有三角形\n if (topIntersect) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight; // 相交区域分成上下两个梯形,比较面积\n\n var topArea = calcHalfArea(leftIntersect, rightIntersect);\n\n if (topArea < totalArea * 0.5) {\n if (leftIntersect.y > rightIntersect.y) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n }\n\n if (leftIntersect.y < rightIntersect.y) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n }\n\n if (rightIntersect) {\n if (topIntersect) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n } // 相交区域分成左右两个梯形\n\n\n var leftArea = calcHalfArea(topIntersect, bottomIntersect);\n\n if (leftArea < totalArea * 0.5) {\n if (topIntersect.x > bottomIntersect.x) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n }\n\n if (topIntersect.x < bottomIntersect.x) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvYnViYmxlc2V0LmpzP2UwMDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXNMO0FBQ3RMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdEQUFnRDtBQUNuRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsdURBQXVEO0FBQ3ZELFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjOztBQUVkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIscUNBQXFDO0FBQ3hELHFCQUFxQixzQ0FBc0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQVU7QUFDekIseUJBQXlCLCtDQUFJO0FBQzdCO0FBQ0EsVUFBVSxpRUFBYztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQWMsYUFBYTs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsa0VBQWU7QUFDekI7QUFDQTtBQUNBLE9BQU8sS0FBSyxrRUFBZTtBQUMzQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRCwyQkFBMkI7QUFDNUU7QUFDQTtBQUNBOztBQUVBLFVBQVUsbUVBQWdCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNFQUFtQjtBQUNwQztBQUNBLHVDQUF1Qzs7O0FBR3ZDO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRzs7QUFFbEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOzs7QUFHYjtBQUNBO0FBQ0Esb0NBQW9DLCtDQUFJO0FBQ3hDLG9DQUFvQywrQ0FBSTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsK0NBQUk7QUFDOUIsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUJBQXVCLCtDQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixrRUFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBLFdBQVcsNkRBQVU7QUFDckI7QUFDQTtBQUNBLEtBQUssY0FBYyw2REFBVTtBQUM3QjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTs7QUFFQSwwQkFBMEIsNENBQTRDO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRSx5RkFBeUYsMklBQTJJOztBQUUzTztBQUNBOztBQUVBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLDRCQUE0QixVQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLHVCQUF1QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsYUFBYSxtRUFBZ0I7QUFDN0IsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLHVEQUF1RDtBQUN4Rjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUgscUNBQXFDLHNCQUFzQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7O0FBR3JCLHdCQUF3QixVQUFVO0FBQ2xDLDBCQUEwQixVQUFVO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNFQUFtQjtBQUM1QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckIsd0JBQXdCLFVBQVU7QUFDbEMsMEJBQTBCLFVBQVU7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEIsc0VBQW1CO0FBQy9DO0FBQ0E7QUFDQSxTQUFTLFFBQVE7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvaHVsbC9idWJibGVzZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXVhcmVEaXN0LCBwb2ludExpbmVTcXVhcmVEaXN0LCBpdGVtSW50ZXJzZWN0QnlMaW5lLCBnZXRQb2ludHNDZW50ZXIsIGZyYWN0aW9uVG9MaW5lLCBpc1BvaW50c092ZXJsYXAsIHBvaW50UmVjdFNxdWFyZURpc3QsIExpbmUsIGlzUG9pbnRJblBvbHlnb24gfSBmcm9tICcuLi8uLi91dGlsL21hdGgnO1xudmFyIGRlZmF1bHRPcHMgPSB7XG4gIG1heFJvdXRpbmdJdGVyYXRpb25zOiAxMDAsXG4gIG1heE1hcmNoaW5nSXRlcmF0aW9uczogMTAwLFxuICBwaXhlbEdyb3VwU2l6ZTogMixcbiAgZWRnZVIwOiAxMCxcbiAgZWRnZVIxOiAxMCxcbiAgbm9kZVIwOiA1LFxuICBub2RlUjE6IDEwLFxuICBtb3JwaEJ1ZmZlcjogNSxcbiAgdGhyZXNob2xkOiAwLjAwMSxcbiAgc2tpcDogMTYsXG4gIG5vZGVJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIGVkZ2VJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIG5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvcjogLTAuNVxufTtcbi8qKlxuICogTWFyY2hpbmcgc3F1YXJlIGFsZ29yaXRobSBmb3IgdHJhY2hpbmcgdGhlIGNvbnRvdXIgb2YgYSBwaXhlbCBncm91cFxuICogaHR0cHM6Ly93d3cuZW1hbnVlbGVmZXJvbmF0by5jb20vMjAxMy8wMy8wMS91c2luZy1tYXJjaGluZy1zcXVhcmVzLWFsZ29yaXRobS10by10cmFjZS10aGUtY29udG91ci1vZi1hbi1pbWFnZS9cbiAqIEBwYXJhbSBwb3RlbnRpYWxBcmVhXG4gKiBAcGFyYW0gdGhyZXNob2xkXG4gKi9cblxuZnVuY3Rpb24gTWFyY2hpbmdTcXVhcmVzKGNvbnRvdXIsIHBvdGVudGlhbEFyZWEsIHRocmVzaG9sZCkge1xuICB2YXIgbWFyY2hlZCA9IGZhbHNlO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwoeCwgeSkge1xuICAgIHJldHVybiBwb3RlbnRpYWxBcmVhLmNlbGxzW3ggKyB5ICogcG90ZW50aWFsQXJlYS53aWR0aF07XG4gIH07XG5cbiAgdmFyIGdldFN0YXRlID0gZnVuY3Rpb24gZ2V0U3RhdGUoeCwgeSkge1xuICAgIHZhciBzcXVhcmVWYWwgPSAwO1xuXG4gICAgaWYgKGdldFZhbCh4IC0gMSwgeSAtIDEpID49IHRocmVzaG9sZCkge1xuICAgICAgc3F1YXJlVmFsICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKGdldFZhbCh4LCB5IC0gMSkgPiB0aHJlc2hvbGQpIHtcbiAgICAgIHNxdWFyZVZhbCArPSAyO1xuICAgIH1cblxuICAgIGlmIChnZXRWYWwoeCAtIDEsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gNDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gODtcbiAgICB9XG5cbiAgICByZXR1cm4gc3F1YXJlVmFsO1xuICB9O1xuXG4gIHZhciBkb01hcmNoID0gZnVuY3Rpb24gZG9NYXJjaCh4UG9zLCB5UG9zKSB7XG4gICAgdmFyIHggPSB4UG9zO1xuICAgIHZhciB5ID0geVBvcztcbiAgICB2YXIgcHJldlg7XG4gICAgdmFyIHByZXZZO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3RlbnRpYWxBcmVhLndpZHRoICogcG90ZW50aWFsQXJlYS5oZWlnaHQ7IGkrKykge1xuICAgICAgcHJldlggPSB4O1xuICAgICAgcHJldlkgPSB5O1xuXG4gICAgICBpZiAoY29udG91ci5maW5kSW5kZXgoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ueCA9PT0geCAmJiBpdGVtLnkgPT09IHk7XG4gICAgICB9KSA+IC0xKSB7XG4gICAgICAgIGlmIChjb250b3VyWzBdLnggIT09IHggfHwgY29udG91clswXS55ICE9PSB5KSB7Ly8gZW5jb3VudGVyZWQgYSBsb29wIGJ1dCBoYXZlbid0IHJldHVybmVkIHRvIHN0YXJ0OiBjaGFuZ2UgZGlyZWN0aW9uIHVzaW5nIGNvbmRpdGlvbmFscyBhbmQgY29udGludWUgYmFjayB0byBzdGFydFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250b3VyLnB1c2goe1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoeCwgeSk7IC8vIGFzc2lnbiB0aGUgbW92ZSBkaXJlY3Rpb24gYWNjb3JkaW5nIHRvIHN0YXRlIG9mIHRoZSBzcXVhcmVcblxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlIC0xOlxuICAgICAgICAgIGNvbnNvbGUud2FybignTWFyY2hlZCBvdXQgb2YgYm91bmRzJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHgrKzsgLy8gZ28gcmlnaHRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTI6XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB4LS07IC8vIGdvIGxlZnRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAvLyBnbyBsZWZ0IGlmIGNvbWUgZnJvbSB1cCBlbHNlIGdvIHJpZ2h0XG4gICAgICAgICAgaWYgKHByZXZYID09PSAwKSB7XG4gICAgICAgICAgICBpZiAocHJldlkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHggLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHggKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5LS07IC8vIGdvIHVwXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgLy8gZ28gdXAgaWYgY29tZSBmcm9tIHJpZ2h0IGVsc2UgZ28gZG93blxuICAgICAgICAgIGlmIChwcmV2WCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHByZXZZID09PSAwKSB7XG4gICAgICAgICAgICAgIHkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeSsrOyAvLyBnbyBkb3duXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihcIk1hcmNoaW5nIHNxdWFyZXMgaW52YWxpZCBzdGF0ZTogXCIuY29uY2F0KHN0YXRlKSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHRoaXMubWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCBwb3RlbnRpYWxBcmVhLndpZHRoICYmICFtYXJjaGVkOyB4ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgcG90ZW50aWFsQXJlYS5oZWlnaHQgJiYgIW1hcmNoZWQ7IHkgKz0gMSkge1xuICAgICAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkICYmIGdldFN0YXRlKHgsIHkpICE9PSAxNSkge1xuICAgICAgICAgIG1hcmNoZWQgPSBkb01hcmNoKHgsIHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmNoZWQ7XG4gIH07XG59XG4vKipcbiAqIFNwYWNlIHBhcnRpdGlvbiAmIGFzc2lnbiB2YWx1ZSB0byBlYWNoIGNlbGxcbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5cbnZhciBpbml0R3JpZENlbGxzID0gZnVuY3Rpb24gaW5pdEdyaWRDZWxscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbEdyb3VwU2l6ZSkge1xuICB2YXIgc2NhbGVXaWR0aCA9IE1hdGguY2VpbCh3aWR0aCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIHNjYWxlSGVpZ2h0ID0gTWF0aC5jZWlsKGhlaWdodCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIGdyaWRDZWxscyA9IG5ldyBGbG9hdDMyQXJyYXkoTWF0aC5tYXgoMCwgc2NhbGVXaWR0aCAqIHNjYWxlSGVpZ2h0KSkuZmlsbCgwKTtcbiAgcmV0dXJuIHtcbiAgICBjZWxsczogZ3JpZENlbGxzLFxuICAgIHdpZHRoOiBzY2FsZVdpZHRoLFxuICAgIGhlaWdodDogc2NhbGVIZWlnaHRcbiAgfTtcbn07XG4vKipcbiAqIEZpbmQgdGhlIG9wdGltYWwgYWxyZWFkeSB2aXNpdGVkIG1lbWJlciB0byBpdGVtO1xuICAgT3B0aW1hbDogbWluaW1pemUgY29zdChqKSA9IGRpc3RhbmNlKGksaikg4oiXIGNvdW50T2JzdGFjbGVzKGksailcbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gdmlzaXRlZFxuICovXG5cblxudmFyIHBpY2tCZXN0TmVpZ2hib3IgPSBmdW5jdGlvbiBwaWNrQmVzdE5laWdoYm9yKGl0ZW0sIHZpc2l0ZWQsIG5vbk1lbWJlcnMpIHtcbiAgdmFyIGNsb3Nlc3ROZWlnaGJvdXIgPSBudWxsO1xuICB2YXIgbWluQ29zdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmlzaXRlZC5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvdXJJdGVtKSB7XG4gICAgdmFyIGl0ZW1QID0ge1xuICAgICAgeDogaXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBpdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIG5laWdoYm91ckl0ZW1QID0ge1xuICAgICAgeDogbmVpZ2hib3VySXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBuZWlnaGJvdXJJdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIGRpc3QgPSBzcXVhcmVEaXN0KGl0ZW1QLCBuZWlnaGJvdXJJdGVtUCk7XG4gICAgdmFyIGRpcmVjdExpbmUgPSBuZXcgTGluZShpdGVtUC54LCBpdGVtUC55LCBuZWlnaGJvdXJJdGVtUC54LCBuZWlnaGJvdXJJdGVtUC55KTtcbiAgICB2YXIgbnVtYmVyT2JzdGFjbGVzID0gbm9uTWVtYmVycy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBfaXRlbSkge1xuICAgICAgaWYgKGZyYWN0aW9uVG9MaW5lKF9pdGVtLCBkaXJlY3RMaW5lKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIGNvdW50ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sIDApO1xuXG4gICAgaWYgKGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKSA8IG1pbkNvc3QpIHtcbiAgICAgIGNsb3Nlc3ROZWlnaGJvdXIgPSBuZWlnaGJvdXJJdGVtO1xuICAgICAgbWluQ29zdCA9IGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvc2VzdE5laWdoYm91cjtcbn07XG4vKipcbiAqIOi/lOWbnuWSjOe6v+ebuOS6pOeahGl0ZW3kuK3vvIznprvovrnnmoTotbfngrnmnIDov5HnmoRpdGVtXG4gKiBAcGFyYW0gaXRlbXNcbiAqIEBwYXJhbSBsaW5lXG4gKi9cblxuXG52YXIgZ2V0SW50ZXJzZWN0SXRlbSA9IGZ1bmN0aW9uIGdldEludGVyc2VjdEl0ZW0oaXRlbXMsIGxpbmUpIHtcbiAgdmFyIG1pbkRpc3RhbmNlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICB2YXIgY2xvc2VzdEl0ZW0gPSBudWxsO1xuICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGRpc3RhbmNlID0gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSk7IC8vIGZpbmQgY2xvc2VzdCBpbnRlcnNlY3Rpb25cblxuICAgIGlmIChkaXN0YW5jZSA+PSAwICYmIGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIGNsb3Nlc3RJdGVtID0gaXRlbTtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsb3Nlc3RJdGVtO1xufTtcbi8qKlxuICogTW9kaWZ5IHRoZSBkaXJlY3RMaW5lIGFuZCBSb3V0ZSB2aXJ0dWFsIGVkZ2VzIGFyb3VuZCBvYnN0YWNsZXNcbiAqL1xuXG5cbnZhciBjb21wdXRlUm91dGUgPSBmdW5jdGlvbiBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKSB7XG4gIHZhciBjaGVja2VkTGluZXMgPSBbXTtcbiAgdmFyIGxpbmVzVG9DaGVjayA9IFtdO1xuICBsaW5lc1RvQ2hlY2sucHVzaChkaXJlY3RMaW5lKTtcbiAgdmFyIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gIHZhciBpdGVyYXRpb25zID0gMDtcblxuICB2YXIgcG9pbnRFeGlzdHMgPSBmdW5jdGlvbiBwb2ludEV4aXN0cyhwb2ludCwgbGluZXMpIHtcbiAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChmbGFnKSByZXR1cm47XG5cbiAgICAgIGlmIChpc1BvaW50c092ZXJsYXAocG9pbnQsIHtcbiAgICAgICAgeDogbGluZS54MSxcbiAgICAgICAgeTogbGluZS55MVxuICAgICAgfSkgfHwgaXNQb2ludHNPdmVybGFwKHBvaW50LCB7XG4gICAgICAgIHg6IGxpbmUueDIsXG4gICAgICAgIHk6IGxpbmUueTJcbiAgICAgIH0pKSB7XG4gICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGFnO1xuICB9O1xuXG4gIHZhciBpc1BvaW50SW5Ob25NZW1iZXJzID0gZnVuY3Rpb24gaXNQb2ludEluTm9uTWVtYmVycyhwb2ludCwgX25vbk1lbWJlcnMpIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9ub25NZW1iZXJzXzEgPSBfbm9uTWVtYmVyczsgX2kgPCBfbm9uTWVtYmVyc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBfbm9uTWVtYmVyc18xW19pXTtcbiAgICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gICAgICB2YXIgaXRlbUNvbnRvdXIgPSBbW2Jib3gueCwgYmJveC55XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueV0sIFtiYm94LngsIGJib3gueSArIGJib3guaGVpZ2h0XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueSArIGJib3guaGVpZ2h0XV07XG5cbiAgICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKGl0ZW1Db250b3VyLCBwb2ludC54LCBwb2ludC55KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07IC8vIG91dGVyIGxvb3AgZW5kIHdoZW4gbm8gbW9yZSBpbnRlcnNlY3Rpb25zIG9yIG91dCBvZiBpdGVyYXRpb25zXG5cblxuICB3aGlsZSAoaGFzSW50ZXJzZWN0aW9uICYmIGl0ZXJhdGlvbnMgPCBtYXhSb3V0aW5nSXRlcmF0aW9ucykge1xuICAgIGhhc0ludGVyc2VjdGlvbiA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgICAgdmFyIGxpbmUgPSBsaW5lc1RvQ2hlY2sucG9wKCk7XG4gICAgICB2YXIgY2xvc2VzdEl0ZW0gPSBnZXRJbnRlcnNlY3RJdGVtKG5vbk1lbWJlcnMsIGxpbmUpO1xuXG4gICAgICBpZiAoY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgdmFyIF9hID0gaXRlbUludGVyc2VjdEJ5TGluZShjbG9zZXN0SXRlbSwgbGluZSksXG4gICAgICAgICAgICBpbnRlcnNlY3Rpb25zXzEgPSBfYVswXSxcbiAgICAgICAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyA9IF9hWzFdOyAvLyBpZiBsaW5lIHBhc3NlcyB0aHJvdWdoIGl0ZW1cblxuXG4gICAgICAgIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDIpIHtcbiAgICAgICAgICB2YXIgdGVzdFJlcm91dGUgPSBmdW5jdGlvbiB0ZXN0UmVyb3V0ZShpc0ZpcnN0KSB7XG4gICAgICAgICAgICB2YXIgdGVtcE1vcnBoQnVmZmVyID0gbW9ycGhCdWZmZXI7XG4gICAgICAgICAgICB2YXIgdmlydHVhbE5vZGUgPSByZXJvdXRlTGluZShjbG9zZXN0SXRlbSwgdGVtcE1vcnBoQnVmZmVyLCBpbnRlcnNlY3Rpb25zXzEsIGlzRmlyc3QpOyAvLyB0ZXN0IHRoZSB2aXJ0dWFsTm9kZSBhbHJlYWR5IGV4aXN0c1xuXG4gICAgICAgICAgICB2YXIgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgIHZhciBwb2ludEluc2lkZSA9IGlzUG9pbnRJbk5vbk1lbWJlcnModmlydHVhbE5vZGUsIG5vbk1lbWJlcnMpO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWV4aXN0ICYmIHBvaW50SW5zaWRlICYmIHRlbXBNb3JwaEJ1ZmZlciA+PSAxKSB7XG4gICAgICAgICAgICAgIC8vIHRyeSBhIHNtYWxsZXIgYnVmZmVyXG4gICAgICAgICAgICAgIHRlbXBNb3JwaEJ1ZmZlciAvPSAxLjU7XG4gICAgICAgICAgICAgIHZpcnR1YWxOb2RlID0gcmVyb3V0ZUxpbmUoY2xvc2VzdEl0ZW0sIHRlbXBNb3JwaEJ1ZmZlciwgaW50ZXJzZWN0aW9uc18xLCBpc0ZpcnN0KTtcbiAgICAgICAgICAgICAgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgICAgcG9pbnRJbnNpZGUgPSBpc1BvaW50SW5Ob25NZW1iZXJzKHZpcnR1YWxOb2RlLCBub25NZW1iZXJzKTtcbiAgICAgICAgICAgIH0gLy8g56ys5LqM5qyhcm91dGXml7bkuI3opoHmsYJwb2ludEluc2lkZVxuXG5cbiAgICAgICAgICAgIGlmICh2aXJ0dWFsTm9kZSAmJiAhZXhpc3QgJiYgKCFpc0ZpcnN0IHx8ICFwb2ludEluc2lkZSkpIHtcbiAgICAgICAgICAgICAgLy8gYWRkIDIgcmVyb3V0ZWQgbGluZXMgdG8gY2hlY2tcbiAgICAgICAgICAgICAgbGluZXNUb0NoZWNrLnB1c2gobmV3IExpbmUobGluZS54MSwgbGluZS55MSwgdmlydHVhbE5vZGUueCwgdmlydHVhbE5vZGUueSkpO1xuICAgICAgICAgICAgICBsaW5lc1RvQ2hlY2sucHVzaChuZXcgTGluZSh2aXJ0dWFsTm9kZS54LCB2aXJ0dWFsTm9kZS55LCBsaW5lLngyLCBsaW5lLnkyKSk7XG4gICAgICAgICAgICAgIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRlc3RSZXJvdXRlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgdmFsaWQgcG9pbnQgYXJvdW5kIHRoZSBmaXJzdCBjb3JuZXIsIHRyeSB0aGUgc2Vjb25kXG4gICAgICAgICAgICB0ZXN0UmVyb3V0ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIG5vIGludGVyc2VjdGlvbiBmb3VuZCwgbWFyayB0aGlzIGxpbmUgYXMgY29tcGxldGVkXG5cblxuICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobGluZSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdGlvbnMgKz0gMTtcbiAgICB9OyAvLyBpbm5lciBsb29wIGVuZCB3aGVuIG91dCBvZiBsaW5lcyBvciBmb3VuZCBhbiBpbnRlcnNlY3Rpb25cblxuXG4gICAgd2hpbGUgKCFoYXNJbnRlcnNlY3Rpb24gJiYgbGluZXNUb0NoZWNrLmxlbmd0aCkge1xuICAgICAgX2xvb3BfMSgpO1xuICAgIH1cbiAgfSAvLyDliqDlhaXliankvZnnmoTnur9cblxuXG4gIHdoaWxlIChsaW5lc1RvQ2hlY2subGVuZ3RoKSB7XG4gICAgY2hlY2tlZExpbmVzLnB1c2gobGluZXNUb0NoZWNrLnBvcCgpKTtcbiAgfVxuXG4gIHJldHVybiBjaGVja2VkTGluZXM7XG59O1xuLyoqXG4gKiAgQ29ubmVjdCBpdGVtIHdpdGggdmlzaXRlZCBtZW1iZXJzIHVzaW5nIGRpcmVjdCBsaW5lIG9yIHZpcnR1YWwgZWRnZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFJvdXRlKGl0ZW0sIG5vbk1lbWJlcnMsIHZpc2l0ZWQsIG1heFJvdXRpbmdJdGVyYXRpb25zLCBtb3JwaEJ1ZmZlcikge1xuICB2YXIgb3B0aW1hbE5laWdoYm9yID0gcGlja0Jlc3ROZWlnaGJvcihpdGVtLCB2aXNpdGVkLCBub25NZW1iZXJzKTtcblxuICBpZiAob3B0aW1hbE5laWdoYm9yID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICBtZXJnZSB0aGUgY29uc2VjdXRpdmUgbGluZXNcblxuXG4gIHZhciBtZXJnZUxpbmVzID0gZnVuY3Rpb24gbWVyZ2VMaW5lcyhjaGVja2VkTGluZXMpIHtcbiAgICB2YXIgZmluYWxSb3V0ZSA9IFtdO1xuXG4gICAgd2hpbGUgKGNoZWNrZWRMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbGluZTEgPSBjaGVja2VkTGluZXMucG9wKCk7XG5cbiAgICAgIGlmIChjaGVja2VkTGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGluZTIgPSBjaGVja2VkTGluZXMucG9wKCk7XG4gICAgICB2YXIgbWVyZ2VMaW5lID0gbmV3IExpbmUobGluZTEueDEsIGxpbmUxLnkxLCBsaW5lMi54MiwgbGluZTIueTIpO1xuICAgICAgdmFyIGNsb3Nlc3RJdGVtID0gZ2V0SW50ZXJzZWN0SXRlbShub25NZW1iZXJzLCBtZXJnZUxpbmUpOyAvLyBtZXJnZSBtb3N0IHJlY2VudCBsaW5lIGFuZCBwcmV2aW91cyBsaW5lXG5cbiAgICAgIGlmICghY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobWVyZ2VMaW5lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGNoZWNrZWRMaW5lcy5wdXNoKGxpbmUyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxSb3V0ZTtcbiAgfTtcblxuICB2YXIgZGlyZWN0TGluZSA9IG5ldyBMaW5lKGl0ZW0uZ2V0TW9kZWwoKS54LCBpdGVtLmdldE1vZGVsKCkueSwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueCwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueSk7XG4gIHZhciBjaGVja2VkTGluZXMgPSBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKTtcbiAgdmFyIGZpbmFsUm91dGUgPSBtZXJnZUxpbmVzKGNoZWNrZWRMaW5lcyk7XG4gIHJldHVybiBmaW5hbFJvdXRlO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvdW50b3IgdGhhdCBpbmNsdWRlcyB0aGUgIHNlbGVjdGVkIGl0ZW1zIGFuZCBleGNsdWVzIHRoZSBub24tc2VsZWN0ZWQgaXRlbXNcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG1lbWJlcnNcbiAqIEBwYXJhbSBub25NZW1iZXJzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5cblxuZXhwb3J0IHZhciBnZW5CdWJibGVTZXQgPSBmdW5jdGlvbiBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgb3BzKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbiAgdmFyIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHMsIG9wcyk7XG4gIHZhciBjZW50cm9pZCA9IGdldFBvaW50c0NlbnRlcihtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSkpOyAvLyDmjInnhafliLDkuK3lv4Pot53nprvov5zov5HmjpLluo9cblxuICBtZW1iZXJzID0gbWVtYmVycy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBhLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKSAtIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYi5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBiLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKTtcbiAgfSk7XG4gIHZhciB2aXNpdGVkID0gW107XG4gIHZhciB2aXJ0dWFsRWRnZXMgPSBbXTtcbiAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGxpbmVzID0gZ2V0Um91dGUoaXRlbSwgbm9uTWVtYmVycywgdmlzaXRlZCwgb3B0aW9ucy5tYXhSb3V0aW5nSXRlcmF0aW9ucywgb3B0aW9ucy5tb3JwaEJ1ZmZlcik7XG4gICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbiAobCkge1xuICAgICAgdmlydHVhbEVkZ2VzLnB1c2gobCk7XG4gICAgfSk7XG4gICAgdmlzaXRlZC5wdXNoKGl0ZW0pO1xuICB9KTsgLy8g55Sx5LqOZWRnZeS5n+WPr+S7peS9nOS4um1lbWJlcuWSjG5vbk1lbWJlcuS8oOWFpe+8jOaaguaXtuS4jeiAg+iZkeaKimVkZ2Vz5L2c5Li65Y+C5pWw5Lyg5YWlZ2VuQnViYmxlU2V0XG4gIC8vIGVkZ2VzICYmIGVkZ2VzLmZvckVhY2goZSA9PiB7XG4gIC8vICAgdmlydHVhbEVkZ2VzLnB1c2gobmV3IExpbmUoZS5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpLngsIGUuZ2V0U291cmNlKCkuZ2V0TW9kZWwoKS55LCBlLmdldFRhcmdldCgpLmdldE1vZGVsKCkueCwgZS5nZXRUYXJnZXQoKS5nZXRNb2RlbCgpLnkpKTtcbiAgLy8gfSk7XG5cbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IGdldEFjdGl2ZVJyZWdpb24obWVtYmVycywgdmlydHVhbEVkZ2VzLCBvcHRpb25zLm5vZGVSMCk7XG4gIHZhciBwb3RlbnRpYWxBcmVhID0gaW5pdEdyaWRDZWxscyhhY3RpdmVSZWdpb24ud2lkdGgsIGFjdGl2ZVJlZ2lvbi5oZWlnaHQsIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpOyAvLyBVc2UgbWFyY2ggc3F1YXJlcyB0byBnZW5lcmF0ZSBjb250b3VyXG5cbiAgdmFyIGNvbnRvdXIgPSBbXTtcbiAgdmFyIGh1bGwgPSBbXTtcblxuICBmb3IgKHZhciBpdGVyYXRpb25zID0gMDsgaXRlcmF0aW9ucyA8IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zOyBpdGVyYXRpb25zKyspIHtcbiAgICBmaWxsUG90ZW50aWFsQXJlYShtZW1iZXJzLCBub25NZW1iZXJzLCB2aXJ0dWFsRWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucyk7XG4gICAgY29udG91ciA9IFtdO1xuICAgIGh1bGwgPSBbXTtcbiAgICBpZiAoIW5ldyBNYXJjaGluZ1NxdWFyZXMoY29udG91ciwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcmNoKCkpIGNvbnRpbnVlO1xuICAgIHZhciBtYXJjaGVkUGF0aCA9IGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogTWF0aC5yb3VuZChwb2ludC54ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5YKSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChwb2ludC55ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5ZKVxuICAgICAgfTtcbiAgICB9KTsgLy8gY29uc3QgbWFyY2hlZFBhdGggPSBtYXJjaGluZ1NxdWFyZXMocG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcChwb2ludCA9PiAoeyB4OiBNYXRoLnJvdW5kKHBvaW50LnggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblgpLCB5OiBNYXRoLnJvdW5kKHBvaW50LnkgKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblkpIH0pKVxuXG4gICAgaWYgKG1hcmNoZWRQYXRoKSB7XG4gICAgICB2YXIgc2l6ZSA9IG1hcmNoZWRQYXRoLmxlbmd0aDtcblxuICAgICAgaWYgKG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgc2l6ZSA9IE1hdGguZmxvb3IobWFyY2hlZFBhdGgubGVuZ3RoIC8gb3B0aW9ucy5za2lwKTsgLy8gaWYgd2UgcmVkdWNlZCB0b28gbXVjaCAoZmV3ZXIgdGhhbiB0aHJlZSBwb2ludHMgaW4gcmVkdWNlZCBzdXJmYWNlKSByZWR1Y2Ugc2tpcCBhbmQgdHJ5IGFnYWluXG5cbiAgICAgICAgd2hpbGUgKHNpemUgPCAzICYmIG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgICBvcHRpb25zLnNraXAgLT0gMTtcbiAgICAgICAgICBzaXplID0gTWF0aC5mbG9vcihtYXJjaGVkUGF0aC5sZW5ndGggLyBvcHRpb25zLnNraXApO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNvcHkgaHVsbCB2YWx1ZXNcblxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGogPCBzaXplOyBqICs9IDEsIGkgKz0gb3B0aW9ucy5za2lwKSB7XG4gICAgICAgIGh1bGwucHVzaCh7XG4gICAgICAgICAgeDogbWFyY2hlZFBhdGhbaV0ueCxcbiAgICAgICAgICB5OiBtYXJjaGVkUGF0aFtpXS55XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpc0NvbnRvdXJWYWxpZCA9IGZ1bmN0aW9uIGlzQ29udG91clZhbGlkKCkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwLCBtZW1iZXJzXzEgPSBtZW1iZXJzOyBfaSA8IG1lbWJlcnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBtZW1iZXJzXzFbX2ldO1xuICAgICAgICB2YXIgaHVsbFBvaW50cyA9IGh1bGwubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgICAgIHJldHVybiBbcG9pbnQueCwgcG9pbnQueV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oaHVsbFBvaW50cywgaXRlbS5nZXRCQm94KCkuY2VudGVyWCwgaXRlbS5nZXRCQm94KCkuY2VudGVyWSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LiN5by65Yi26KaB5rGC5omA5pyJbm9uTWVtYmVyc+mDveayoeacieWMheWQq+WcqOWGhVxuICAgICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIG5vbk1lbWJlcnMpIHtcbiAgICAgIC8vICAgaWYgKGlzUG9pbnRJblBvbHlnb24oeyB4OiBpdGVtLmdldEJCb3goKS5jZW50ZXJYLCB5OiBpdGVtLmdldEJCb3goKS5jZW50ZXJZIH0sIGNvbnRvdXIpKSByZXR1cm4gZmFsc2VcbiAgICAgIC8vIH1cblxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgaWYgKGh1bGwgJiYgaXNDb250b3VyVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIGh1bGw7XG4gICAgfSAvLyB1cGRhdGUgcGFyYW1ldGVycyBmb3IgbmV4dCBpdGVyYWN0aW9uXG5cblxuICAgIG9wdGlvbnMudGhyZXNob2xkICo9IDAuOTtcblxuICAgIGlmIChpdGVyYXRpb25zIDw9IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zICogMC41KSB7XG4gICAgICBvcHRpb25zLm1lbWJlckluZmx1ZW5jZUZhY3RvciAqPSAxLjI7XG4gICAgICBvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IgKj0gMS4yO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgIT09IDAgJiYgbm9uTWVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBhZnRlciBoYWxmIHRoZSBpdGVyYXRpb25zLCBzdGFydCBpbmNyZWFzaW5nIHBvc2l0aXZlIGVuZXJneSBhbmQgbG93ZXJpbmcgdGhlIHRocmVzaG9sZFxuICAgICAgb3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgKj0gMC44O1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaHVsbDtcbn07XG4vKipcbiAqIHVuaW9uYm91bmRpbmdib3hcbiAqIEBwYXJhbSBtZW1iZXJzXG4gKiBAcGFyYW0gZWRnZXNcbiAqL1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVScmVnaW9uKG1lbWJlcnMsIGVkZ2VzLCBvZmZzZXQpIHtcbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IHtcbiAgICBtaW5YOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgbWluWTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIG1heFg6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxcbiAgICBtYXhZOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICB2YXIgYmJveGVzID0gW107XG4gIG1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGJib3hlcy5wdXNoKGl0ZW0uZ2V0QkJveCgpKTtcbiAgfSk7XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICBiYm94ZXMucHVzaChsLmdldEJCb3goKSk7XG4gIH0pO1xuXG4gIGZvciAodmFyIF9pID0gMCwgYmJveGVzXzEgPSBiYm94ZXM7IF9pIDwgYmJveGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGJib3ggPSBiYm94ZXNfMVtfaV07XG4gICAgYWN0aXZlUmVnaW9uLm1pblggPSAoYmJveC5taW5YIDwgYWN0aXZlUmVnaW9uLm1pblggPyBiYm94Lm1pblggOiBhY3RpdmVSZWdpb24ubWluWCkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1pblkgPSAoYmJveC5taW5ZIDwgYWN0aXZlUmVnaW9uLm1pblkgPyBiYm94Lm1pblkgOiBhY3RpdmVSZWdpb24ubWluWSkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFggPSAoYmJveC5tYXhYID4gYWN0aXZlUmVnaW9uLm1heFggPyBiYm94Lm1heFggOiBhY3RpdmVSZWdpb24ubWF4WCkgKyBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFkgPSAoYmJveC5tYXhZID4gYWN0aXZlUmVnaW9uLm1heFkgPyBiYm94Lm1heFkgOiBhY3RpdmVSZWdpb24ubWF4WSkgKyBvZmZzZXQ7XG4gIH1cblxuICBhY3RpdmVSZWdpb24ud2lkdGggPSBhY3RpdmVSZWdpb24ubWF4WCAtIGFjdGl2ZVJlZ2lvbi5taW5YO1xuICBhY3RpdmVSZWdpb24uaGVpZ2h0ID0gYWN0aXZlUmVnaW9uLm1heFkgLSBhY3RpdmVSZWdpb24ubWluWTtcbiAgYWN0aXZlUmVnaW9uLnggPSBhY3RpdmVSZWdpb24ubWluWDtcbiAgYWN0aXZlUmVnaW9uLnkgPSBhY3RpdmVSZWdpb24ubWluWTtcbiAgcmV0dXJuIGFjdGl2ZVJlZ2lvbjtcbn1cblxuZnVuY3Rpb24gZmlsbFBvdGVudGlhbEFyZWEobWVtYmVycywgbm9uTWVtYmVycywgZWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucykge1xuICBmdW5jdGlvbiBwb3MyR3JpZEl4KHgsIG9mZnNldCkge1xuICAgIHZhciBncmlkSXggPSBNYXRoLmZsb29yKCh4IC0gb2Zmc2V0KSAvIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpO1xuICAgIHJldHVybiBncmlkSXggPCAwID8gMCA6IGdyaWRJeDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdyaWRJeDJQb3MoeCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIHggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgb2Zmc2V0O1xuICB9IC8vIHVzaW5nIGludmVyc2UgYSBmb3IgbnVtZXJpY2FsIHN0YWJpbGl0eVxuXG5cbiAgdmFyIG5vZGVJbmZBID0gKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpICogKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpO1xuICB2YXIgZWRnZUluZkEgPSAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSkgKiAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSk7XG5cbiAgdmFyIGdldEFmZmVjdGVkUmVnaW9uID0gZnVuY3Rpb24gZ2V0QWZmZWN0ZWRSZWdpb24oYmJveCwgdGhyZXNob2xkUikge1xuICAgIHZhciBzdGFydFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWluWCwgdGhyZXNob2xkUiArIGFjdGl2ZVJlZ2lvbi5taW5YKSwgcG90ZW50aWFsQXJlYS53aWR0aCk7XG4gICAgdmFyIHN0YXJ0WSA9IE1hdGgubWluKHBvczJHcmlkSXgoYmJveC5taW5ZLCB0aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgdmFyIGVuZFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWF4WCwgLXRocmVzaG9sZFIgKyBhY3RpdmVSZWdpb24ubWluWCksIHBvdGVudGlhbEFyZWEud2lkdGgpO1xuICAgIHZhciBlbmRZID0gTWF0aC5taW4ocG9zMkdyaWRJeChiYm94Lm1heFksIC10aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgcmV0dXJuIFtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWV07XG4gIH07XG5cbiAgdmFyIGFkZEl0ZW1JbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLm5vZGVSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGNhbGN1bGF0ZSBpdGVtIGluZmx1ZW5jZSBmb3IgZWFjaCBjZWxsXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYVt4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlU3EgPSBwb2ludFJlY3RTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgICB3aWR0aDogYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGJib3guaGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkaXN0YW5jZVNxIDwgTWF0aC5wb3cob3B0aW9ucy5ub2RlUjEsIDIpKSB7XG4gICAgICAgICAgdmFyIGRyID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3EpIC0gb3B0aW9ucy5ub2RlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIGRyICogZHI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkZEVkZ2VJbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRFZGdlSW5mbHVlbmNlKGxpbmUsIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gbGluZS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLmVkZ2VSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGZvciBldmVyeSBwb2ludCBpbiBhY3RpdmUgcGFydCBvZiBwb3RlbnRpYWxBcmVhLCBjYWxjdWxhdGUgZGlzdGFuY2UgdG8gbmVhcmVzdCBwb2ludCBvbiBsaW5lIGFuZCBhZGQgaW5mbHVlbmNlXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIG1pbkRpc3RhbmNlU3EgPSBwb2ludExpbmVTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCBsaW5lKTsgLy8gb25seSBpbmZsdWVuY2UgaWYgbGVzcyB0aGFuIHIxXG5cbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlU3EgPCBNYXRoLnBvdyhvcHRpb25zLmVkZ2VSMSwgMikpIHtcbiAgICAgICAgICB2YXIgbWRyID0gTWF0aC5zcXJ0KG1pbkRpc3RhbmNlU3EpIC0gb3B0aW9ucy5lZGdlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIG1kciAqIG1kcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBpZiAob3B0aW9ucy5ub2RlSW5mbHVlbmNlRmFjdG9yKSB7XG4gICAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIG9wdGlvbnMubm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IpIHtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBhZGRFZGdlSW5mbHVlbmNlKGVkZ2UsIG9wdGlvbnMuZWRnZUluZmx1ZW5jZUZhY3RvciAvIGVkZ2VJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3Rvcikge1xuICAgIG5vbk1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgYWRkSXRlbUluZmx1ZW5jZShpdGVtLCBvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXJvdXRlTGluZShpdGVtLCBidWZmZXIsIGludGVyc2VjdGlvbnMsIHdyYXBOb3JtYWwpIHtcbiAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgdmFyIHRvcEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMF0sXG4gICAgICBsZWZ0SW50ZXJzZWN0ID0gaW50ZXJzZWN0aW9uc1sxXSxcbiAgICAgIGJvdHRvbUludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMl0sXG4gICAgICByaWdodEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbM107XG4gIHZhciBjb3JuZXJQb3MgPSB7XG4gICAgdG9wTGVmdDoge1xuICAgICAgeDogYmJveC5taW5YIC0gYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICB0b3BSaWdodDoge1xuICAgICAgeDogYmJveC5tYXhYICsgYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICBib3R0b21MZWZ0OiB7XG4gICAgICB4OiBiYm94Lm1pblggLSBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9LFxuICAgIGJvdHRvbVJpZ2h0OiB7XG4gICAgICB4OiBiYm94Lm1heFggKyBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9XG4gIH07XG4gIHZhciB0b3RhbEFyZWEgPSBiYm94LmhlaWdodCAqIGJib3gud2lkdGg7XG5cbiAgZnVuY3Rpb24gY2FsY0hhbGZBcmVhKGludGVyc2VjdDEsIGludGVyc2VjdDIpIHtcbiAgICByZXR1cm4gYmJveC53aWR0aCAqICgoaW50ZXJzZWN0MS55IC0gYmJveC5taW5ZICsgKGludGVyc2VjdDIueSAtIGJib3gubWluWSkpICogMC41KTtcbiAgfSAvLyDmoLnmja7nur/lkoxib3VuZGluZ2JveOebuOS6pOeahOaDheWGte+8jOehruWummNvbnRyb2wgcG9pbnTnmoTkvY3nva5cblxuXG4gIGlmIChsZWZ0SW50ZXJzZWN0KSB7XG4gICAgLy8g55u45Lqk5Yy65Z+f5pyJ5LiJ6KeS5b2iXG4gICAgaWYgKHRvcEludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICBpZiAoYm90dG9tSW50ZXJzZWN0KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21MZWZ0IDogY29ybmVyUG9zLnRvcFJpZ2h0OyAvLyDnm7jkuqTljLrln5/liIbmiJDkuIrkuIvkuKTkuKrmoq/lvaLvvIzmr5TovoPpnaLnp69cblxuICAgIHZhciB0b3BBcmVhID0gY2FsY0hhbGZBcmVhKGxlZnRJbnRlcnNlY3QsIHJpZ2h0SW50ZXJzZWN0KTtcblxuICAgIGlmICh0b3BBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgICBpZiAobGVmdEludGVyc2VjdC55ID4gcmlnaHRJbnRlcnNlY3QueSkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICAgIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRJbnRlcnNlY3QueSA8IHJpZ2h0SW50ZXJzZWN0LnkpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLmJvdHRvbUxlZnQgOiBjb3JuZXJQb3MudG9wUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfVxuXG4gIGlmIChyaWdodEludGVyc2VjdCkge1xuICAgIGlmICh0b3BJbnRlcnNlY3QpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgaWYgKGJvdHRvbUludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfSAvLyDnm7jkuqTljLrln5/liIbmiJDlt6blj7PkuKTkuKrmoq/lvaJcblxuXG4gIHZhciBsZWZ0QXJlYSA9IGNhbGNIYWxmQXJlYSh0b3BJbnRlcnNlY3QsIGJvdHRvbUludGVyc2VjdCk7XG5cbiAgaWYgKGxlZnRBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgaWYgKHRvcEludGVyc2VjdC54ID4gYm90dG9tSW50ZXJzZWN0LngpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcExlZnQgOiBjb3JuZXJQb3MuYm90dG9tUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tTGVmdCA6IGNvcm5lclBvcy50b3BSaWdodDtcbiAgfVxuXG4gIGlmICh0b3BJbnRlcnNlY3QueCA8IGJvdHRvbUludGVyc2VjdC54KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy50b3BSaWdodCA6IGNvcm5lclBvcy5ib3R0b21MZWZ0O1xuICByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21SaWdodCA6IGNvcm5lclBvcy50b3BMZWZ0O1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/hull/bubbleset.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/hull/convexHull.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/hull/convexHull.js ***!
\******************************************************************/
/*! exports provided: cross, genConvexHull */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genConvexHull\", function() { return genConvexHull; });\n/**\n * Use cross product to judge the direction of the turn.\n * Returns a positive value, if OAB makes a clockwise turn,\n * negative for counter-clockwise turn, and zero if the points are collinear.\n */\nvar cross = function cross(a, b, o) {\n return (a.y - o.y) * (b.x - o.x) - (a.x - o.x) * (b.y - o.y);\n};\n/**\n * Generate a convex hull of given points. Andrew's monotone chain algorithm.\n * @param points An array of [x, y] representing the coordinates of points.\n * @return a list of vertices of the convex hull in counter-clockwise order,\n */\n\nvar genConvexHull = function genConvexHull(items) {\n var points = items.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n });\n points.sort(function (a, b) {\n return a.x === b.x ? a.y - b.y : a.x - b.x;\n });\n\n if (points.length === 1) {\n return points;\n } // build the lower hull\n\n\n var lower = [];\n\n for (var i = 0; i < points.length; i++) {\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n lower.pop();\n }\n\n lower.push(points[i]);\n } // build the upper hull\n\n\n var upper = [];\n\n for (var i = points.length - 1; i >= 0; i--) {\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {\n upper.pop();\n }\n\n upper.push(points[i]);\n }\n\n upper.pop();\n lower.pop();\n var strictHull = lower.concat(upper);\n return strictHull;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvY29udmV4SHVsbC5qcz83MzdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUEsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9odWxsL2NvbnZleEh1bGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBjcm9zcyBwcm9kdWN0IHRvIGp1ZGdlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHR1cm4uXG4gKiBSZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUsIGlmIE9BQiBtYWtlcyBhIGNsb2Nrd2lzZSB0dXJuLFxuICogbmVnYXRpdmUgZm9yIGNvdW50ZXItY2xvY2t3aXNlIHR1cm4sIGFuZCB6ZXJvIGlmIHRoZSBwb2ludHMgYXJlIGNvbGxpbmVhci5cbiAqL1xuZXhwb3J0IHZhciBjcm9zcyA9IGZ1bmN0aW9uIGNyb3NzKGEsIGIsIG8pIHtcbiAgcmV0dXJuIChhLnkgLSBvLnkpICogKGIueCAtIG8ueCkgLSAoYS54IC0gby54KSAqIChiLnkgLSBvLnkpO1xufTtcbi8qKlxuICogR2VuZXJhdGUgYSBjb252ZXggaHVsbCBvZiBnaXZlbiBwb2ludHMuIEFuZHJldydzIG1vbm90b25lIGNoYWluIGFsZ29yaXRobS5cbiAqIEBwYXJhbSBwb2ludHMgQW4gYXJyYXkgb2YgW3gsIHldIHJlcHJlc2VudGluZyB0aGUgY29vcmRpbmF0ZXMgb2YgcG9pbnRzLlxuICogQHJldHVybiBhIGxpc3Qgb2YgdmVydGljZXMgb2YgdGhlIGNvbnZleCBodWxsIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLFxuICovXG5cbmV4cG9ydCB2YXIgZ2VuQ29udmV4SHVsbCA9IGZ1bmN0aW9uIGdlbkNvbnZleEh1bGwoaXRlbXMpIHtcbiAgdmFyIHBvaW50cyA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSk7XG4gIHBvaW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEueCA9PT0gYi54ID8gYS55IC0gYi55IDogYS54IC0gYi54O1xuICB9KTtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8gYnVpbGQgdGhlIGxvd2VyIGh1bGxcblxuXG4gIHZhciBsb3dlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgd2hpbGUgKGxvd2VyLmxlbmd0aCA+PSAyICYmIGNyb3NzKGxvd2VyW2xvd2VyLmxlbmd0aCAtIDJdLCBsb3dlcltsb3dlci5sZW5ndGggLSAxXSwgcG9pbnRzW2ldKSA8PSAwKSB7XG4gICAgICBsb3dlci5wb3AoKTtcbiAgICB9XG5cbiAgICBsb3dlci5wdXNoKHBvaW50c1tpXSk7XG4gIH0gLy8gYnVpbGQgdGhlIHVwcGVyIGh1bGxcblxuXG4gIHZhciB1cHBlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB3aGlsZSAodXBwZXIubGVuZ3RoID49IDIgJiYgY3Jvc3ModXBwZXJbdXBwZXIubGVuZ3RoIC0gMl0sIHVwcGVyW3VwcGVyLmxlbmd0aCAtIDFdLCBwb2ludHNbaV0pIDw9IDApIHtcbiAgICAgIHVwcGVyLnBvcCgpO1xuICAgIH1cblxuICAgIHVwcGVyLnB1c2gocG9pbnRzW2ldKTtcbiAgfVxuXG4gIHVwcGVyLnBvcCgpO1xuICBsb3dlci5wb3AoKTtcbiAgdmFyIHN0cmljdEh1bGwgPSBsb3dlci5jb25jYXQodXBwZXIpO1xuICByZXR1cm4gc3RyaWN0SHVsbDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/hull/convexHull.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/index.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/index.js ***!
\********************************************************/
/*! exports provided: Arrow, Marker, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/@antv/g6-core/es/element/node.js\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edge */ \"./node_modules/@antv/g6-core/es/element/edge.js\");\n/* harmony import */ var _combo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./combo */ \"./node_modules/@antv/g6-core/es/element/combo.js\");\n/* harmony import */ var _combos__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./combos */ \"./node_modules/@antv/g6-core/es/element/combos/index.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nodes */ \"./node_modules/@antv/g6-core/es/element/nodes/index.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./arrow */ \"./node_modules/@antv/g6-core/es/element/arrow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _arrow__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./marker */ \"./node_modules/@antv/g6-core/es/element/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_shape__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzP2VkYmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDWjtBQUNBO0FBQ0M7QUFDQztBQUNEO0FBQzBCO0FBQ0U7QUFDOUIsNkdBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0ICcuL25vZGUnO1xuaW1wb3J0ICcuL2VkZ2UnO1xuaW1wb3J0ICcuL2NvbWJvJztcbmltcG9ydCAnLi9jb21ib3MnO1xuaW1wb3J0ICcuL25vZGVzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXJyb3cgfSBmcm9tICcuL2Fycm93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/marker.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/marker.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n collapse: function collapse(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x + r - 4, y]];\n },\n expand: function expand(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x - r + 2 * r - 4, y], ['M', x - r + r, y - r + 4], ['L', x, y + r - 4]];\n },\n upTriangle: function upTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y + l2], ['L', x + l1, y + l2], ['L', x, y - r], ['Z']];\n },\n downTriangle: function downTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y - l2], ['L', x + l1, y - l2], ['L', x, y + r], ['Z']];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcz84OWZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgY29sbGFwc2U6IGZ1bmN0aW9uIGNvbGxhcHNlKHgsIHksIHIpIHtcbiAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydhJywgciwgciwgMCwgMSwgMCwgciAqIDIsIDBdLCBbJ2EnLCByLCByLCAwLCAxLCAwLCAtciAqIDIsIDBdLCBbJ00nLCB4IC0gciArIDQsIHldLCBbJ0wnLCB4ICsgciAtIDQsIHldXTtcbiAgfSxcbiAgZXhwYW5kOiBmdW5jdGlvbiBleHBhbmQoeCwgeSwgcikge1xuICAgIHJldHVybiBbWydNJywgeCAtIHIsIHldLCBbJ2EnLCByLCByLCAwLCAxLCAwLCByICogMiwgMF0sIFsnYScsIHIsIHIsIDAsIDEsIDAsIC1yICogMiwgMF0sIFsnTScsIHggLSByICsgNCwgeV0sIFsnTCcsIHggLSByICsgMiAqIHIgLSA0LCB5XSwgWydNJywgeCAtIHIgKyByLCB5IC0gciArIDRdLCBbJ0wnLCB4LCB5ICsgciAtIDRdXTtcbiAgfSxcbiAgdXBUcmlhbmdsZTogZnVuY3Rpb24gdXBUcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5ICsgbDJdLCBbJ0wnLCB4ICsgbDEsIHkgKyBsMl0sIFsnTCcsIHgsIHkgLSByXSwgWydaJ11dO1xuICB9LFxuICBkb3duVHJpYW5nbGU6IGZ1bmN0aW9uIGRvd25UcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5IC0gbDJdLCBbJ0wnLCB4ICsgbDEsIHkgLSBsMl0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/marker.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/node.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/node.js ***!
\*******************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\n\nvar singleNode = {\n itemType: 'node',\n // 单个图形的类型\n shapeType: 'single-node',\n\n /**\n * 文本相对图形的位置,默认以中心点\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n offset: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].nodeLabel.offset,\n\n /**\n * 获取节点宽高\n * @internal 返回节点的大小,以 [width, height] 的方式维护\n * @param {Object} cfg 节点的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var _a;\n\n var size = ((_a = this.mergeStyle) === null || _a === void 0 ? void 0 : _a.size) || cfg.size || this.getOptions({}).size || _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].defaultNode.size; // Global.defaultNode.size; // \n // size 是数组,但长度为1,则补长度为2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的节点复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition; // 默认的位置(最可能的情形),所以放在最上面\n\n if (labelPosition === 'center') {\n return {\n x: 0,\n y: 0,\n text: cfg.label\n };\n }\n\n var offset = labelCfg.offset;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(offset)) {\n // 考虑 offset = 0 的场景,不用用 labelCfg.offset || Global.nodeLabel.offset\n offset = this.offset; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -size[1] / 2 - offset,\n textBaseline: 'bottom' // 文本在图形的上面\n\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: size[1] / 2 + offset,\n textBaseline: 'top'\n };\n break;\n\n case 'left':\n style = {\n x: -size[0] / 2 - offset,\n y: 0,\n textAlign: 'right'\n };\n break;\n\n default:\n style = {\n x: size[0] / 2 + offset,\n y: 0,\n textAlign: 'left'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n var _a;\n\n if (!label) return {};\n var backgroundStyle = (_a = labelCfg.style) === null || _a === void 0 ? void 0 : _a.background;\n if (!backgroundStyle) return {};\n var bbox = label.getBBox();\n var padding = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(backgroundStyle.padding);\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0]\n }, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight\n });\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'node-shape'\n });\n group['shapeMap']['node-shape'] = shape;\n return shape;\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints;\n\n if (markLeft) {\n currentLinkPoints = markLeft.attr();\n }\n\n if (markRight && !currentLinkPoints) {\n currentLinkPoints = markRight.attr();\n }\n\n if (markTop && !currentLinkPoints) {\n currentLinkPoints = markTop.attr();\n }\n\n if (markBottom && !currentLinkPoints) {\n currentLinkPoints = markBottom.attr();\n }\n\n if (!currentLinkPoints) currentLinkPoints = defaultLinkPoints;\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n bottom = _a.bottom;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }));\n }\n } else if (left) {\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n }\n\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }));\n } else if (right) {\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n }\n\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }));\n } else if (top) {\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }));\n }\n } else if (bottom) {\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) {\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n\n if (!undefined || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('label'))) {\n this.updateLabel(cfg, item, updateType);\n }\n\n if (hasIcon) {\n this.updateIcon(cfg, item);\n }\n },\n updateIcon: function updateIcon(cfg, item) {\n var _this = this;\n\n var group = item.getContainer();\n var icon = (this.mergeStyle || this.getOptions(cfg)).icon;\n\n var _a = cfg.icon ? cfg.icon : {\n show: undefined,\n text: undefined\n },\n show = _a.show,\n text = _a.text;\n\n var iconShape = group['shapeMap'][\"\".concat(this.type, \"-icon\")] || group.find(function (ele) {\n return ele.get('name') === \"\".concat(_this.type, \"-icon\");\n });\n\n if (iconShape) {\n // 若原先存在 icon\n if (show || show === undefined) {\n // 若传入 show: true, 或没有设置,则更新原有的 icon 样式\n var iconConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, iconShape.attr(), icon);\n var _b = iconConfig.width,\n w = _b === void 0 ? 20 : _b,\n _c = iconConfig.height,\n h = _c === void 0 ? 20 : _c;\n\n if (iconConfig.fontFamily === 'iconfont' || iconConfig.hasOwnProperty('text')) {\n w = 0;\n h = 0;\n }\n\n iconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconConfig), {\n x: -w / 2,\n y: -h / 2\n }));\n } else {\n // 若传入了 show: false 则删除原先的 icon\n iconShape.remove();\n }\n } else if (show) {\n // 如果原先不存在 icon,但传入了 show: true,则新增 icon\n var name_5 = \"\".concat(this.type, \"-icon\");\n\n if (text) {\n group['shapeMap'][name_5] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: name_5,\n name: name_5\n });\n } else {\n var w = icon.width,\n h = icon.height;\n group['shapeMap'][name_5] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, icon), {\n x: -w / 2,\n y: -h / 2\n }),\n className: name_5,\n name: name_5\n });\n } // to ensure the label is on the top of all the shapes\n\n\n var labelShape = group['shapeMap']['node-label'] || group.find(function (ele) {\n return ele.get('name') === 'node-label';\n });\n\n if (labelShape) {\n labelShape.toFront();\n }\n }\n }\n};\n\nvar singleNodeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_5__[\"shapeBase\"]), singleNode);\n\n_shape__WEBPACK_IMPORTED_MODULE_4__[\"default\"].registerNode('single-node', singleNodeDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGUuanM/YWJkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNnQjtBQUNKO0FBQ2Q7QUFDSDtBQUNZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxVQUFVLCtDQUFNOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQSxzSEFBc0gsVUFBVSwrQ0FBTSxrQkFBa0IsNEJBQTRCO0FBQ3BMOztBQUVBLFFBQVEsMERBQU87QUFDZjtBQUNBLEtBQUs7OztBQUdMLFNBQVMsMERBQU87QUFDaEI7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLHdEQUFLO0FBQ2I7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnRUFBYTtBQUMvQjtBQUNBO0FBQ0EsV0FBVyxzREFBUSxDQUFDLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNCQUFzQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDMUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3pDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdkM7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHdCQUF3QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDNUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxHQUFHOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzREFBRyxHQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLG9EQUFTOztBQUVuRCw4Q0FBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvbm9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc05pbCwgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBmb3JtYXRQYWRkaW5nIH0gZnJvbSAnLi4vdXRpbC9iYXNlJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IHNoYXBlQmFzZSB9IGZyb20gJy4vc2hhcGVCYXNlJztcbnZhciBzaW5nbGVOb2RlID0ge1xuICBpdGVtVHlwZTogJ25vZGUnLFxuICAvLyDljZXkuKrlm77lvaLnmoTnsbvlnotcbiAgc2hhcGVUeXBlOiAnc2luZ2xlLW5vZGUnLFxuXG4gIC8qKlxuICAgKiDmlofmnKznm7jlr7nlm77lvaLnmoTkvY3nva7vvIzpu5jorqTku6XkuK3lv4PngrlcbiAgICog5L2N572u5YyF5ous77yaIHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCwgY2VudGVyXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcblxuICAvKipcbiAgICog5paH5pys55u45a+55YGP56e777yM5b2TIGxhYmVsUG9zaXRpb24g5LiN5Li6IGNlbnRlciDml7bmnInmlYhcbiAgICogQHR5cGUge051bWJlcn1cbiAgICovXG4gIG9mZnNldDogR2xvYmFsLm5vZGVMYWJlbC5vZmZzZXQsXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueWuvemrmFxuICAgKiBAaW50ZXJuYWwg6L+U5Zue6IqC54K555qE5aSn5bCP77yM5LulIFt3aWR0aCwgaGVpZ2h0XSDnmoTmlrnlvI/nu7TmiqRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fSDlrr3pq5hcbiAgICovXG4gIGdldFNpemU6IGZ1bmN0aW9uIGdldFNpemUoY2ZnKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHNpemUgPSAoKF9hID0gdGhpcy5tZXJnZVN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2l6ZSkgfHwgY2ZnLnNpemUgfHwgdGhpcy5nZXRPcHRpb25zKHt9KS5zaXplIHx8IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplOyAvLyBHbG9iYWwuZGVmYXVsdE5vZGUuc2l6ZTsgLy8gIFxuICAgIC8vIHNpemUg5piv5pWw57uE77yM5L2G6ZW/5bqm5Li6Me+8jOWImeihpemVv+W6puS4ujJcblxuICAgIGlmIChpc0FycmF5KHNpemUpICYmIHNpemUubGVuZ3RoID09PSAxKSB7XG4gICAgICBzaXplID0gW3NpemVbMF0sIHNpemVbMF1dO1xuICAgIH0gLy8gc2l6ZSDkuLrmlbDlrZfvvIzliJnovazmjaLkuLrmlbDnu4RcblxuXG4gICAgaWYgKCFpc0FycmF5KHNpemUpKSB7XG4gICAgICBzaXplID0gW3NpemUsIHNpemVdO1xuICAgIH1cblxuICAgIHJldHVybiBzaXplO1xuICB9LFxuICAvLyDnp4HmnInmlrnms5XvvIzkuI3luIzmnJvmianlsZXnmoToioLngrnlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjsgLy8g6buY6K6k55qE5L2N572u77yI5pyA5Y+v6IO955qE5oOF5b2i77yJ77yM5omA5Lul5pS+5Zyo5pyA5LiK6Z2iXG5cbiAgICBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHRleHQ6IGNmZy5sYWJlbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgb2Zmc2V0ID0gbGFiZWxDZmcub2Zmc2V0O1xuXG4gICAgaWYgKGlzTmlsKG9mZnNldCkpIHtcbiAgICAgIC8vIOiAg+iZkSBvZmZzZXQgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5vZmZzZXQgfHwgR2xvYmFsLm5vZGVMYWJlbC5vZmZzZXRcbiAgICAgIG9mZnNldCA9IHRoaXMub2Zmc2V0OyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBzdHlsZTtcblxuICAgIHN3aXRjaCAobGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtc2l6ZVsxXSAvIDIgLSBvZmZzZXQsXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyAvLyDmlofmnKzlnKjlm77lvaLnmoTkuIrpnaJcblxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBzaXplWzFdIC8gMiArIG9mZnNldCxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICd0b3AnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogLXNpemVbMF0gLyAyIC0gb2Zmc2V0LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiBzaXplWzBdIC8gMiArIG9mZnNldCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuICBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uKGxhYmVsLCBsYWJlbENmZykge1xuICAgIHZhciBfYTtcblxuICAgIGlmICghbGFiZWwpIHJldHVybiB7fTtcbiAgICB2YXIgYmFja2dyb3VuZFN0eWxlID0gKF9hID0gbGFiZWxDZmcuc3R5bGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5iYWNrZ3JvdW5kO1xuICAgIGlmICghYmFja2dyb3VuZFN0eWxlKSByZXR1cm4ge307XG4gICAgdmFyIGJib3ggPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgdmFyIHBhZGRpbmcgPSBmb3JtYXRQYWRkaW5nKGJhY2tncm91bmRTdHlsZS5wYWRkaW5nKTtcbiAgICB2YXIgYmFja2dyb3VuZFdpZHRoID0gYmJveC53aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHZhciBiYWNrZ3JvdW5kSGVpZ2h0ID0gYmJveC5oZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe1xuICAgICAgeDogYmJveC5taW5YIC0gcGFkZGluZ1szXSxcbiAgICAgIHk6IGJib3gubWluWSAtIHBhZGRpbmdbMF1cbiAgICB9LCBiYWNrZ3JvdW5kU3R5bGUpLCB7XG4gICAgICB3aWR0aDogYmFja2dyb3VuZFdpZHRoLFxuICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSGVpZ2h0XG4gICAgfSk7XG4gIH0sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc2hhcGVUeXBlID0gdGhpcy5zaGFwZVR5cGU7IC8vIHx8IHRoaXMudHlwZe+8jOmDveW3sue7j+WKoOS6hiBzaGFwZVR5cGVcblxuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgbmFtZTogJ25vZGUtc2hhcGUnXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ25vZGUtc2hhcGUnXSA9IHNoYXBlO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog5pu05pawbGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBJdGVt5omA5Zyo55qEZ3JvdXBcbiAgICovXG4gIHVwZGF0ZUxpbmtQb2ludHM6IGZ1bmN0aW9uIHVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGlua1BvaW50cyA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHM7XG4gICAgdmFyIG1hcmtMZWZ0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrUmlnaHQgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1RvcCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXRvcCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtCb3R0b20gPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1ib3R0b20nO1xuICAgIH0pO1xuICAgIHZhciBjdXJyZW50TGlua1BvaW50cztcblxuICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgY3VycmVudExpbmtQb2ludHMgPSBtYXJrTGVmdC5hdHRyKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtSaWdodCAmJiAhY3VycmVudExpbmtQb2ludHMpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gbWFya1JpZ2h0LmF0dHIoKTtcbiAgICB9XG5cbiAgICBpZiAobWFya1RvcCAmJiAhY3VycmVudExpbmtQb2ludHMpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gbWFya1RvcC5hdHRyKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtCb3R0b20gJiYgIWN1cnJlbnRMaW5rUG9pbnRzKSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IG1hcmtCb3R0b20uYXR0cigpO1xuICAgIH1cblxuICAgIGlmICghY3VycmVudExpbmtQb2ludHMpIGN1cnJlbnRMaW5rUG9pbnRzID0gZGVmYXVsdExpbmtQb2ludHM7XG4gICAgdmFyIGxpbmtQb2ludHMgPSBtaXgoe30sIGN1cnJlbnRMaW5rUG9pbnRzLCBjZmcubGlua1BvaW50cyk7XG4gICAgdmFyIG1hcmtGaWxsID0gbGlua1BvaW50cy5maWxsLFxuICAgICAgICBtYXJrU3Ryb2tlID0gbGlua1BvaW50cy5zdHJva2UsXG4gICAgICAgIGJvcmRlcldpZHRoID0gbGlua1BvaW50cy5saW5lV2lkdGg7XG4gICAgdmFyIG1hcmtTaXplID0gbGlua1BvaW50cy5zaXplIC8gMjtcbiAgICBpZiAoIW1hcmtTaXplKSBtYXJrU2l6ZSA9IGxpbmtQb2ludHMucjtcblxuICAgIHZhciBfYSA9IGNmZy5saW5rUG9pbnRzID8gY2ZnLmxpbmtQb2ludHMgOiB7XG4gICAgICBsZWZ0OiB1bmRlZmluZWQsXG4gICAgICByaWdodDogdW5kZWZpbmVkLFxuICAgICAgdG9wOiB1bmRlZmluZWQsXG4gICAgICBib3R0b206IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgICAgIGxlZnQgPSBfYS5sZWZ0LFxuICAgICAgICByaWdodCA9IF9hLnJpZ2h0LFxuICAgICAgICB0b3AgPSBfYS50b3AsXG4gICAgICAgIGJvdHRvbSA9IF9hLmJvdHRvbTtcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuXG4gICAgaWYgKG1hcmtMZWZ0KSB7XG4gICAgICBpZiAoIWxlZnQgJiYgbGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtMZWZ0LnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya0xlZnQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICB2YXIgbmFtZV8xID0gJ2xpbmstcG9pbnQtbGVmdCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzFdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMSxcbiAgICAgICAgbmFtZTogbmFtZV8xLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobWFya1JpZ2h0KSB7XG4gICAgICBpZiAoIXJpZ2h0ICYmIHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya1JpZ2h0LnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXTtcbiAgICAgIH1cblxuICAgICAgbWFya1JpZ2h0LmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICB5OiAwXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgdmFyIG5hbWVfMiA9ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfMl0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB3aWR0aCAvIDIsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzIsXG4gICAgICAgIG5hbWU6IG5hbWVfMixcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtUb3ApIHtcbiAgICAgIGlmICghdG9wICYmIHRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtUb3AucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXTtcbiAgICAgIH1cblxuICAgICAgbWFya1RvcC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgIHZhciBuYW1lXzMgPSAnbGluay1wb2ludC10b3AnO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV8zXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV8zLFxuICAgICAgICBuYW1lOiBuYW1lXzMsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXJrQm90dG9tKSB7XG4gICAgICBpZiAoIWJvdHRvbSAmJiBib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXJrQm90dG9tLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrQm90dG9tLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDJcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYm90dG9tKSB7XG4gICAgICB2YXIgbmFtZV80ID0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNF0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV80LFxuICAgICAgICBuYW1lOiBuYW1lXzQsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSwgaGFzSWNvbiwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIGtleVNoYXBlLmF0dHIoX19hc3NpZ24oe30sIGtleVNoYXBlU3R5bGUpKTtcblxuICAgIGlmICghdW5kZWZpbmVkIHx8ICh1cGRhdGVUeXBlID09PSBudWxsIHx8IHVwZGF0ZVR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVwZGF0ZVR5cGUuaW5jbHVkZXMoJ2xhYmVsJykpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxhYmVsKGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKGhhc0ljb24pIHtcbiAgICAgIHRoaXMudXBkYXRlSWNvbihjZmcsIGl0ZW0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlSWNvbjogZnVuY3Rpb24gdXBkYXRlSWNvbihjZmcsIGl0ZW0pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgaWNvbiA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb247XG5cbiAgICB2YXIgX2EgPSBjZmcuaWNvbiA/IGNmZy5pY29uIDoge1xuICAgICAgc2hvdzogdW5kZWZpbmVkLFxuICAgICAgdGV4dDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAgICAgc2hvdyA9IF9hLnNob3csXG4gICAgICAgIHRleHQgPSBfYS50ZXh0O1xuXG4gICAgdmFyIGljb25TaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSBcIlwiLmNvbmNhdChfdGhpcy50eXBlLCBcIi1pY29uXCIpO1xuICAgIH0pO1xuXG4gICAgaWYgKGljb25TaGFwZSkge1xuICAgICAgLy8g6Iul5Y6f5YWI5a2Y5ZyoIGljb25cbiAgICAgIGlmIChzaG93IHx8IHNob3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyDoi6XkvKDlhaUgc2hvdzogdHJ1ZSwg5oiW5rKh5pyJ6K6+572u77yM5YiZ5pu05paw5Y6f5pyJ55qEIGljb24g5qC35byPXG4gICAgICAgIHZhciBpY29uQ29uZmlnID0gbWl4KHt9LCBpY29uU2hhcGUuYXR0cigpLCBpY29uKTtcbiAgICAgICAgdmFyIF9iID0gaWNvbkNvbmZpZy53aWR0aCxcbiAgICAgICAgICAgIHcgPSBfYiA9PT0gdm9pZCAwID8gMjAgOiBfYixcbiAgICAgICAgICAgIF9jID0gaWNvbkNvbmZpZy5oZWlnaHQsXG4gICAgICAgICAgICBoID0gX2MgPT09IHZvaWQgMCA/IDIwIDogX2M7XG5cbiAgICAgICAgaWYgKGljb25Db25maWcuZm9udEZhbWlseSA9PT0gJ2ljb25mb250JyB8fCBpY29uQ29uZmlnLmhhc093blByb3BlcnR5KCd0ZXh0JykpIHtcbiAgICAgICAgICB3ID0gMDtcbiAgICAgICAgICBoID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGljb25TaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uQ29uZmlnKSwge1xuICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICB5OiAtaCAvIDJcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g6Iul5Lyg5YWl5LqGIHNob3c6IGZhbHNlIOWImeWIoOmZpOWOn+WFiOeahCBpY29uXG4gICAgICAgIGljb25TaGFwZS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNob3cpIHtcbiAgICAgIC8vIOWmguaenOWOn+WFiOS4jeWtmOWcqCBpY29u77yM5L2G5Lyg5YWl5LqGIHNob3c6IHRydWXvvIzliJnmlrDlop4gaWNvblxuICAgICAgdmFyIG5hbWVfNSA9IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKTtcblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV81XSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IG5hbWVfNSxcbiAgICAgICAgICBuYW1lOiBuYW1lXzVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdyA9IGljb24ud2lkdGgsXG4gICAgICAgICAgICBoID0gaWNvbi5oZWlnaHQ7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uKSwge1xuICAgICAgICAgICAgeDogLXcgLyAyLFxuICAgICAgICAgICAgeTogLWggLyAyXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzUsXG4gICAgICAgICAgbmFtZTogbmFtZV81XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyB0byBlbnN1cmUgdGhlIGxhYmVsIGlzIG9uIHRoZSB0b3Agb2YgYWxsIHRoZSBzaGFwZXNcblxuXG4gICAgICB2YXIgbGFiZWxTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydub2RlLWxhYmVsJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWxhYmVsJztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGFiZWxTaGFwZSkge1xuICAgICAgICBsYWJlbFNoYXBlLnRvRnJvbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBzaW5nbGVOb2RlRGVmID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNoYXBlQmFzZSksIHNpbmdsZU5vZGUpO1xuXG5TaGFwZS5yZWdpc3Rlck5vZGUoJ3NpbmdsZS1ub2RlJywgc2luZ2xlTm9kZURlZik7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/node.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/nodes/image.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/nodes/image.js ***!
\**************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n\n\n\n/**\n * 基本的图片,可以添加文本,默认文本在图片的下面\n */\n\n_shape__WEBPACK_IMPORTED_MODULE_1__[\"default\"].registerNode('image', {\n options: {\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*eD7nT6tmYgAAAAAAAAAAAABkARQnAQ',\n size: 200,\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n clipCfg: {\n show: false,\n type: 'circle',\n // circle\n r: 50,\n // ellipse\n rx: 50,\n ry: 35,\n // rect\n width: 50,\n height: 35,\n // polygon\n points: [[30, 12], [12, 30], [30, 48], [48, 30]],\n // path\n path: [['M', 25, 25], ['L', 50, 25], ['A', 12.5, 12.5, 0, 1, 1, 50, 50], ['A', 12.5, 12.5, 0, 1, 0, 50, 50], ['L', 25, 75], ['Z']],\n // 坐标\n x: 0,\n y: 0 // clip 的属性样式\n // style: {\n // lineWidth: 1\n // },\n\n }\n },\n shapeType: 'image',\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType;\n var style = this.getShapeStyle(cfg);\n delete style.fill;\n var shape = group.addShape(shapeType, {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n this.drawClip(cfg, shape);\n return shape;\n },\n drawClip: function drawClip(cfg, shape) {\n var clip = (this.mergeStyle || this.getOptions(cfg)).clipCfg;\n\n if (!clip.show) {\n return;\n } // 支持 circle、rect、ellipse、Polygon 及自定义 path clip\n\n\n var type = clip.type,\n x = clip.x,\n y = clip.y,\n style = clip.style;\n\n if (type === 'circle') {\n var r = clip.r;\n shape.setClip({\n type: 'circle',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n r: r,\n x: x,\n y: y\n }, style)\n });\n } else if (type === 'rect') {\n var width = clip.width,\n height = clip.height;\n var rectX = x - width / 2;\n var rectY = y - height / 2;\n shape.setClip({\n type: 'rect',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: rectX,\n y: rectY,\n width: width,\n height: height\n }, style)\n });\n } else if (type === 'ellipse') {\n var rx = clip.rx,\n ry = clip.ry;\n shape.setClip({\n type: 'ellipse',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y,\n rx: rx,\n ry: ry\n }, style)\n });\n } else if (type === 'polygon') {\n var points = clip.points;\n shape.setClip({\n type: 'polygon',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n points: points\n }, style)\n });\n } else if (type === 'path') {\n var path = clip.path;\n shape.setClip({\n type: 'path',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style)\n });\n }\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n defaultStyle = _a.style,\n img = _a.img;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (defaultStyle) {\n width = defaultStyle.width || size[0];\n height = defaultStyle.height || size[1];\n }\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height,\n img: img\n }, defaultStyle);\n\n return style;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n var shapeClassName = \"\".concat(this.itemType, \"-shape\");\n var shape = group['shapeMap'][shapeClassName] || group.find(function (element) {\n return element.get('className') === shapeClassName;\n }) || item.getKeyShape();\n var shapeStyle = this.getShapeStyle(cfg);\n\n if (shape && !shape.destroyed) {\n shape.attr(shapeStyle);\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzPzQyZjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNLO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG4vKipcbiAqIOWfuuacrOeahOWbvueJh++8jOWPr+S7pea3u+WKoOaWh+acrO+8jOm7mOiupOaWh+acrOWcqOWbvueJh+eahOS4i+mdolxuICovXG5cblNoYXBlLnJlZ2lzdGVyTm9kZSgnaW1hZ2UnLCB7XG4gIG9wdGlvbnM6IHtcbiAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL21kbi9ybXNfZjhjNmEwL2FmdHMvaW1nL0EqZUQ3blQ2dG1ZZ0FBQUFBQUFBQUFBQUJrQVJRbkFRJyxcbiAgICBzaXplOiAyMDAsXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGlwQ2ZnOiB7XG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIHR5cGU6ICdjaXJjbGUnLFxuICAgICAgLy8gY2lyY2xlXG4gICAgICByOiA1MCxcbiAgICAgIC8vIGVsbGlwc2VcbiAgICAgIHJ4OiA1MCxcbiAgICAgIHJ5OiAzNSxcbiAgICAgIC8vIHJlY3RcbiAgICAgIHdpZHRoOiA1MCxcbiAgICAgIGhlaWdodDogMzUsXG4gICAgICAvLyBwb2x5Z29uXG4gICAgICBwb2ludHM6IFtbMzAsIDEyXSwgWzEyLCAzMF0sIFszMCwgNDhdLCBbNDgsIDMwXV0sXG4gICAgICAvLyBwYXRoXG4gICAgICBwYXRoOiBbWydNJywgMjUsIDI1XSwgWydMJywgNTAsIDI1XSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMSwgNTAsIDUwXSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMCwgNTAsIDUwXSwgWydMJywgMjUsIDc1XSwgWydaJ11dLFxuICAgICAgLy8g5Z2Q5qCHXG4gICAgICB4OiAwLFxuICAgICAgeTogMCAvLyBjbGlwIOeahOWxnuaAp+agt+W8j1xuICAgICAgLy8gc3R5bGU6IHtcbiAgICAgIC8vICAgbGluZVdpZHRoOiAxXG4gICAgICAvLyB9LFxuXG4gICAgfVxuICB9LFxuICBzaGFwZVR5cGU6ICdpbWFnZScsXG4gIGxhYmVsUG9zaXRpb246ICdib3R0b20nLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlVHlwZSA9IHRoaXMuc2hhcGVUeXBlO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIGRlbGV0ZSBzdHlsZS5maWxsO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuZHJhd0NsaXAoY2ZnLCBzaGFwZSk7XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuICBkcmF3Q2xpcDogZnVuY3Rpb24gZHJhd0NsaXAoY2ZnLCBzaGFwZSkge1xuICAgIHZhciBjbGlwID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuY2xpcENmZztcblxuICAgIGlmICghY2xpcC5zaG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmlK/mjIEgY2lyY2xl44CBcmVjdOOAgWVsbGlwc2XjgIFQb2x5Z29uIOWPiuiHquWumuS5iSBwYXRoIGNsaXBcblxuXG4gICAgdmFyIHR5cGUgPSBjbGlwLnR5cGUsXG4gICAgICAgIHggPSBjbGlwLngsXG4gICAgICAgIHkgPSBjbGlwLnksXG4gICAgICAgIHN0eWxlID0gY2xpcC5zdHlsZTtcblxuICAgIGlmICh0eXBlID09PSAnY2lyY2xlJykge1xuICAgICAgdmFyIHIgPSBjbGlwLnI7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgcjogcixcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHlcbiAgICAgICAgfSwgc3R5bGUpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZWN0Jykge1xuICAgICAgdmFyIHdpZHRoID0gY2xpcC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBjbGlwLmhlaWdodDtcbiAgICAgIHZhciByZWN0WCA9IHggLSB3aWR0aCAvIDI7XG4gICAgICB2YXIgcmVjdFkgPSB5IC0gaGVpZ2h0IC8gMjtcbiAgICAgIHNoYXBlLnNldENsaXAoe1xuICAgICAgICB0eXBlOiAncmVjdCcsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogcmVjdFgsXG4gICAgICAgICAgeTogcmVjdFksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZWxsaXBzZScpIHtcbiAgICAgIHZhciByeCA9IGNsaXAucngsXG4gICAgICAgICAgcnkgPSBjbGlwLnJ5O1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdlbGxpcHNlJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgcng6IHJ4LFxuICAgICAgICAgIHJ5OiByeVxuICAgICAgICB9LCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BvbHlnb24nKSB7XG4gICAgICB2YXIgcG9pbnRzID0gY2xpcC5wb2ludHM7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncGF0aCcpIHtcbiAgICAgIHZhciBwYXRoID0gY2xpcC5wYXRoO1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdwYXRoJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICBwYXRoOiBwYXRoXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgZGVmYXVsdFN0eWxlID0gX2Euc3R5bGUsXG4gICAgICAgIGltZyA9IF9hLmltZztcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcblxuICAgIGlmIChkZWZhdWx0U3R5bGUpIHtcbiAgICAgIHdpZHRoID0gZGVmYXVsdFN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgICBoZWlnaHQgPSBkZWZhdWx0U3R5bGUuaGVpZ2h0IHx8IHNpemVbMV07XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBpbWc6IGltZ1xuICAgIH0sIGRlZmF1bHRTdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2hhcGVDbGFzc05hbWUgPSBcIlwiLmNvbmNhdCh0aGlzLml0ZW1UeXBlLCBcIi1zaGFwZVwiKTtcbiAgICB2YXIgc2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVtzaGFwZUNsYXNzTmFtZV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gc2hhcGVDbGFzc05hbWU7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG5cbiAgICBpZiAoc2hhcGUgJiYgIXNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgc2hhcGUuYXR0cihzaGFwZVN0eWxlKTtcbiAgICB9XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/image.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/nodes/index.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/nodes/index.js ***!
\**************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _simple_circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./simple-circle */ \"./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js\");\n/* harmony import */ var _simple_rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./simple-rect */ \"./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js\");\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./image */ \"./node_modules/@antv/g6-core/es/element/nodes/image.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2luZGV4LmpzPzJjNjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUI7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vc2ltcGxlLWNpcmNsZSc7XG5pbXBvcnQgJy4vc2ltcGxlLXJlY3QnO1xuaW1wb3J0ICcuL2ltYWdlJzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js":
/*!**********************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js ***!
\**********************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n\n\n\n // 带有图标的圆,可用于拓扑图中\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-circle', {\n // 自定义节点时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-circle',\n // 文本位置\n labelPosition: 'center',\n shapeMap: {},\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var name = \"\".concat(this.type, \"-keyShape\");\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n r: size[0] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, keyShape.attr(), strokeStyle, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1jaXJjbGUuanM/MGQzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0k7QUFDSDtBQUNMOztBQUU3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsWUFBWSwrQ0FBTTtBQUNsQixpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSwrQ0FBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQiwwREFBTyxHQUFHO0FBQzFCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9ub2Rlcy9zaW1wbGUtY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7IC8vIOW4puacieWbvuagh+eahOWchu+8jOWPr+eUqOS6juaLk+aJkeWbvuS4rVxuXG5TaGFwZS5yZWdpc3Rlck5vZGUoJ3NpbXBsZS1jaXJjbGUnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBzaGFwZU1hcDoge30sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgbmFtZSA9IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIik7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3IsXG4gICAgICByOiBzaXplWzBdIC8gMlxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js":
/*!********************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js ***!
\********************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzP2U0YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNBO0FBQ0M7QUFDTDtBQUM3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTixnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi8uLi9nbG9iYWwnO1xuaW1wb3J0IFNoYXBlIGZyb20gJy4uL3NoYXBlJztcblNoYXBlLnJlZ2lzdGVyTm9kZSgnc2ltcGxlLXJlY3QnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzEwMCwgMzBdLFxuICAgIHN0eWxlOiB7XG4gICAgICByYWRpdXM6IDAsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5zdHJva2UsXG4gICAgICBmaWxsOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICAvLyBhbmNob3JQb2ludHM6IFt7IHg6IDAsIHk6IDAuNSB9LCB7IHg6IDEsIHk6IDAuNSB9XVxuICAgIGFuY2hvclBvaW50czogW1swLCAwLjVdLCBbMSwgMC41XV0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtcmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZS53aWR0aCB8fCBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzdHlsZS5oZWlnaHQgfHwgc2l6ZVsxXTtcblxuICAgIHZhciBzdHlsZXMgPSBfX2Fzc2lnbih7XG4gICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuXG4gICAgaWYgKCFjZmcuc2l6ZSkge1xuICAgICAgc2l6ZVswXSA9IGtleVNoYXBlLmF0dHIoJ3dpZHRoJykgfHwgZGVmYXVsdFN0eWxlLndpZHRoO1xuICAgICAgc2l6ZVsxXSA9IGtleVNoYXBlLmF0dHIoJ2hlaWdodCcpIHx8IGRlZmF1bHRTdHlsZS5oZWlnaHQ7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgeDogLXNpemVbMF0gLyAyLFxuICAgICAgeTogLXNpemVbMV0gLyAyLFxuICAgICAgd2lkdGg6IHNpemVbMF0sXG4gICAgICBoZWlnaHQ6IHNpemVbMV1cbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIGtleVNoYXBlLmF0dHIoKSwgc3Ryb2tlU3R5bGUpO1xuICAgIHN0eWxlID0gbWl4KHN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgZmFsc2UsIHVwZGF0ZVR5cGUpO1xuICB9XG59LCAnc2luZ2xlLW5vZGUnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/shape.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/shape.js ***!
\********************************************************/
/*! exports provided: ShapeFactoryBase, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShapeFactoryBase\", function() { return ShapeFactoryBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./xml */ \"./node_modules/@antv/g6-core/es/element/xml.js\");\n\n\n\nvar cache = {}; // ucfirst 开销过大,进行缓存\n// 首字母大写\n\nfunction ucfirst(str) {\n if (!cache[str]) {\n cache[str] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(str);\n }\n\n return cache[str];\n}\n/**\n * 工厂方法的基类\n * @type Shape.FactoryBase\n */\n\n\nvar ShapeFactoryBase = {\n /**\n * 默认的形状,当没有指定/匹配 shapeType 时,使用默认的\n * @type {String}\n */\n defaultShapeType: 'defaultType',\n\n /**\n * 形状的 className,用于搜索\n * @type {String}\n */\n className: null,\n\n /**\n * 获取绘制 Shape 的工具类,无状态\n * @param {String} type 类型\n * @return {Shape} 工具类\n */\n getShape: function getShape(type) {\n var self = this;\n var shape = self[type] || self[self.defaultShapeType] || self['simple-circle'];\n return shape;\n },\n\n /**\n * 绘制图形\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G.Group} group 图形的分组\n * @return {IShape} 图形对象\n */\n draw: function draw(type, cfg, group) {\n var shape = this.getShape(type);\n group['shapeMap'] = {};\n var rst = shape.draw(cfg, group);\n\n if (shape.afterDraw) {\n shape.afterDraw(cfg, group, rst);\n }\n\n return rst;\n },\n\n /**\n * 更新\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G6.Item} item 节点、边、分组等\n */\n baseUpdate: function baseUpdate(type, cfg, item, updateType) {\n var _a, _b;\n\n var shape = this.getShape(type); // 防止没定义 update 函数\n\n if (shape.update) {\n // shape.mergeStyle = updateType === 'move' || updateType === 'bbox' ? {} : shape.getOptions?.(cfg);\n shape.mergeStyle = (_a = shape.getOptions) === null || _a === void 0 ? void 0 : _a.call(shape, cfg, updateType);\n (_b = shape.update) === null || _b === void 0 ? void 0 : _b.call(shape, cfg, item, updateType);\n }\n\n if (shape.afterUpdate) {\n shape.afterUpdate(cfg, item);\n }\n },\n\n /**\n * 设置状态\n * @param {String} type 类型\n * @param {String} name 状态名\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点、边、分组等\n */\n setState: function setState(type, name, value, item) {\n var shape = this.getShape(type); // 调用 shape/shapeBase.ts 中的 setState 方法\n\n shape.setState(name, value, item);\n },\n\n /**\n * 是否允许更新,不重新绘制图形\n * @param {String} type 类型\n * @return {Boolean} 是否允许使用更新\n */\n shouldUpdate: function shouldUpdate(type) {\n var shape = this.getShape(type);\n return !!shape.update;\n },\n getControlPoints: function getControlPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getControlPoints(cfg);\n },\n\n /**\n * 获取控制点\n * @param {String} type 节点、边类型\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getAnchorPoints(cfg);\n }\n};\n/**\n * 元素的框架\n */\n\nvar ShapeFramework = {\n // 默认样式及配置\n options: {},\n\n /**\n * 绘制\n */\n draw: function draw(cfg, group) {\n return this.drawShape(cfg, group);\n },\n\n /**\n * 绘制\n */\n drawShape: function\n /* cfg, group */\n drawShape() {},\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n */\n afterDraw: function\n /* cfg, group */\n afterDraw() {},\n // update(cfg, item) // 默认不定义\n afterUpdate: function\n /* cfg, item */\n afterUpdate() {},\n\n /**\n * 设置节点、边状态\n */\n setState: function\n /* name, value, item */\n setState() {},\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var defaultAnchorPoints = this.options.anchorPoints;\n var anchorPoints = cfg.anchorPoints || defaultAnchorPoints;\n return anchorPoints;\n }\n /* 如果没定义 update 方法,每次都调用 draw 方法\n update(cfg, item) {\n }\n */\n\n};\n\nvar Shape =\n/** @class */\nfunction () {\n function Shape() {}\n\n Shape.registerFactory = function (factoryType, cfg) {\n var className = ucfirst(factoryType);\n var factoryBase = ShapeFactoryBase;\n\n var shapeFactory = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, factoryBase), cfg);\n\n Shape[className] = shapeFactory;\n shapeFactory.className = className;\n return shapeFactory;\n };\n\n Shape.getFactory = function (factoryType) {\n var className = ucfirst(factoryType);\n return Shape[className];\n };\n\n Shape.registerNode = function (shapeType, nodeDefinition, extendShapeType) {\n var shapeFactory = Shape.Node;\n var shapeObj;\n\n if (typeof nodeDefinition === 'string' || typeof nodeDefinition === 'function') {\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(nodeDefinition);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition);\n } else if (nodeDefinition.jsx) {\n var jsx = nodeDefinition.jsx;\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(jsx);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition), nodeDefinition);\n } else {\n shapeFactory.getShape(extendShapeType);\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), nodeDefinition);\n }\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'node';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerEdge = function (shapeType, edgeDefinition, extendShapeType) {\n var shapeFactory = Shape.Edge;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), edgeDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'edge';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerCombo = function (shapeType, comboDefinition, extendShapeType) {\n var shapeFactory = Shape.Combo;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), comboDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'combo';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n return Shape;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shape); // 注册 Node 的工厂方法\n\nShape.registerFactory('node', {\n defaultShapeType: 'circle'\n}); // 注册 Edge 的工厂方法\n\nShape.registerFactory('edge', {\n defaultShapeType: 'line'\n}); // 注册 Combo 的工厂方法\n\nShape.registerFactory('combo', {\n defaultShapeType: 'circle'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlLmpzPzE5MjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNPO0FBQ0U7QUFDMUMsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQVU7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsK0VBQStFO0FBQy9FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsaUJBQWlCO0FBQzlCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTs7QUFFZjtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsV0FBVztBQUN6QjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxXQUFXO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHOztBQUUzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsOERBQWlCO0FBQ2hELGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckMsS0FBSztBQUNMO0FBQ0EsK0JBQStCLDhEQUFpQjtBQUNoRCxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG9FQUFLLEVBQUM7O0FBRXJCO0FBQ0E7QUFDQSxDQUFDLEVBQUU7O0FBRUg7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvc2hhcGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgdXBwZXJGaXJzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlTm9kZUZyb21YTUwgfSBmcm9tICcuL3htbCc7XG52YXIgY2FjaGUgPSB7fTsgLy8gdWNmaXJzdCDlvIDplIDov4flpKfvvIzov5vooYznvJPlrZhcbi8vIOmmluWtl+avjeWkp+WGmVxuXG5mdW5jdGlvbiB1Y2ZpcnN0KHN0cikge1xuICBpZiAoIWNhY2hlW3N0cl0pIHtcbiAgICBjYWNoZVtzdHJdID0gdXBwZXJGaXJzdChzdHIpO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlW3N0cl07XG59XG4vKipcbiAqIOW3peWOguaWueazleeahOWfuuexu1xuICogQHR5cGUgU2hhcGUuRmFjdG9yeUJhc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgU2hhcGVGYWN0b3J5QmFzZSA9IHtcbiAgLyoqXG4gICAqIOm7mOiupOeahOW9oueKtu+8jOW9k+ayoeacieaMh+Wumi/ljLnphY0gc2hhcGVUeXBlIOaXtu+8jOS9v+eUqOm7mOiupOeahFxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgZGVmYXVsdFNoYXBlVHlwZTogJ2RlZmF1bHRUeXBlJyxcblxuICAvKipcbiAgICog5b2i54q255qEIGNsYXNzTmFtZe+8jOeUqOS6juaQnOe0olxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgY2xhc3NOYW1lOiBudWxsLFxuXG4gIC8qKlxuICAgKiDojrflj5bnu5jliLYgU2hhcGUg55qE5bel5YW357G777yM5peg54q25oCBXG4gICAqIEBwYXJhbSAge1N0cmluZ30gdHlwZSDnsbvlnotcbiAgICogQHJldHVybiB7U2hhcGV9IOW3peWFt+exu1xuICAgKi9cbiAgZ2V0U2hhcGU6IGZ1bmN0aW9uIGdldFNoYXBlKHR5cGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHNoYXBlID0gc2VsZlt0eXBlXSB8fCBzZWxmW3NlbGYuZGVmYXVsdFNoYXBlVHlwZV0gfHwgc2VsZlsnc2ltcGxlLWNpcmNsZSddO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi25Zu+5b2iXG4gICAqIEBwYXJhbSAge1N0cmluZ30gdHlwZSAg57G75Z6LXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOmFjee9rumhuVxuICAgKiBAcGFyYW0gIHtHLkdyb3VwfSBncm91cCDlm77lvaLnmoTliIbnu4RcbiAgICogQHJldHVybiB7SVNoYXBlfSDlm77lvaLlr7nosaFcbiAgICovXG4gIGRyYXc6IGZ1bmN0aW9uIGRyYXcodHlwZSwgY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ10gPSB7fTtcbiAgICB2YXIgcnN0ID0gc2hhcGUuZHJhdyhjZmcsIGdyb3VwKTtcblxuICAgIGlmIChzaGFwZS5hZnRlckRyYXcpIHtcbiAgICAgIHNoYXBlLmFmdGVyRHJhdyhjZmcsIGdyb3VwLCByc3QpO1xuICAgIH1cblxuICAgIHJldHVybiByc3Q7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHR5cGUgIOexu+Wei1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDphY3nva7poblcbiAgICogQHBhcmFtICB7RzYuSXRlbX0gaXRlbSDoioLngrnjgIHovrnjgIHliIbnu4TnrYlcbiAgICovXG4gIGJhc2VVcGRhdGU6IGZ1bmN0aW9uIGJhc2VVcGRhdGUodHlwZSwgY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7IC8vIOmYsuatouayoeWumuS5iSB1cGRhdGUg5Ye95pWwXG5cbiAgICBpZiAoc2hhcGUudXBkYXRlKSB7XG4gICAgICAvLyBzaGFwZS5tZXJnZVN0eWxlID0gdXBkYXRlVHlwZSA9PT0gJ21vdmUnIHx8IHVwZGF0ZVR5cGUgPT09ICdiYm94JyA/IHt9IDogc2hhcGUuZ2V0T3B0aW9ucz8uKGNmZyk7XG4gICAgICBzaGFwZS5tZXJnZVN0eWxlID0gKF9hID0gc2hhcGUuZ2V0T3B0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc2hhcGUsIGNmZywgdXBkYXRlVHlwZSk7XG4gICAgICAoX2IgPSBzaGFwZS51cGRhdGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHNoYXBlLCBjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpO1xuICAgIH1cblxuICAgIGlmIChzaGFwZS5hZnRlclVwZGF0ZSkge1xuICAgICAgc2hhcGUuYWZ0ZXJVcGRhdGUoY2ZnLCBpdGVtKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiuvue9rueKtuaAgVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSAg57G75Z6LXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lICDnirbmgIHlkI1cbiAgICogQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSB2YWx1ZSDnirbmgIHlgLxcbiAgICogQHBhcmFtIHtHNi5JdGVtfSBpdGVtICDoioLngrnjgIHovrnjgIHliIbnu4TnrYlcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZSh0eXBlLCBuYW1lLCB2YWx1ZSwgaXRlbSkge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7IC8vIOiwg+eUqCBzaGFwZS9zaGFwZUJhc2UudHMg5Lit55qEIHNldFN0YXRlIOaWueazlVxuXG4gICAgc2hhcGUuc2V0U3RhdGUobmFtZSwgdmFsdWUsIGl0ZW0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmmK/lkKblhYHorrjmm7TmlrDvvIzkuI3ph43mlrDnu5jliLblm77lvaJcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0eXBlIOexu+Wei1xuICAgKiBAcmV0dXJuIHtCb29sZWFufSDmmK/lkKblhYHorrjkvb/nlKjmm7TmlrBcbiAgICovXG4gIHNob3VsZFVwZGF0ZTogZnVuY3Rpb24gc2hvdWxkVXBkYXRlKHR5cGUpIHtcbiAgICB2YXIgc2hhcGUgPSB0aGlzLmdldFNoYXBlKHR5cGUpO1xuICAgIHJldHVybiAhIXNoYXBlLnVwZGF0ZTtcbiAgfSxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyh0eXBlLCBjZmcpIHtcbiAgICB2YXIgc2hhcGUgPSB0aGlzLmdldFNoYXBlKHR5cGUpO1xuICAgIHJldHVybiBzaGFwZS5nZXRDb250cm9sUG9pbnRzKGNmZyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDoioLngrnjgIHovrnnsbvlnotcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0QW5jaG9yUG9pbnRzOiBmdW5jdGlvbiBnZXRBbmNob3JQb2ludHModHlwZSwgY2ZnKSB7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTtcbiAgICByZXR1cm4gc2hhcGUuZ2V0QW5jaG9yUG9pbnRzKGNmZyk7XG4gIH1cbn07XG4vKipcbiAqIOWFg+e0oOeahOahhuaetlxuICovXG5cbnZhciBTaGFwZUZyYW1ld29yayA9IHtcbiAgLy8g6buY6K6k5qC35byP5Y+K6YWN572uXG4gIG9wdGlvbnM6IHt9LFxuXG4gIC8qKlxuICAgKiDnu5jliLZcbiAgICovXG4gIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY2ZnLCBncm91cCkge1xuICAgIHJldHVybiB0aGlzLmRyYXdTaGFwZShjZmcsIGdyb3VwKTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi2XG4gICAqL1xuICBkcmF3U2hhcGU6IGZ1bmN0aW9uXG4gICAgLyogY2ZnLCBncm91cCAqL1xuICBkcmF3U2hhcGUoKSB7fSxcblxuICAvKipcbiAgICog57uY5Yi25a6M5oiQ5ZCO55qE5pON5L2c77yM5L6/5LqO55So5oi357un5om/546w5pyJ55qE6IqC54K544CB6L65XG4gICAqL1xuICBhZnRlckRyYXc6IGZ1bmN0aW9uXG4gICAgLyogY2ZnLCBncm91cCAqL1xuICBhZnRlckRyYXcoKSB7fSxcbiAgLy8gdXBkYXRlKGNmZywgaXRlbSkgLy8g6buY6K6k5LiN5a6a5LmJXG4gIGFmdGVyVXBkYXRlOiBmdW5jdGlvblxuICAgIC8qIGNmZywgaXRlbSAqL1xuICBhZnRlclVwZGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiDorr7nva7oioLngrnjgIHovrnnirbmgIFcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvblxuICAgIC8qIG5hbWUsIHZhbHVlLCBpdGVtICovXG4gIHNldFN0YXRlKCkge30sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g5o6n5Yi254K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ5o6n5Yi254K5XG4gICAqL1xuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHJldHVybiBjZmcuY29udHJvbFBvaW50cztcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCueOAgei+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheXxudWxsfSDmjqfliLbngrnnmoTmlbDnu4Qs5aaC5p6c5Li6IG51bGzvvIzliJnmsqHmnInmjqfliLbngrlcbiAgICovXG4gIGdldEFuY2hvclBvaW50czogZnVuY3Rpb24gZ2V0QW5jaG9yUG9pbnRzKGNmZykge1xuICAgIHZhciBkZWZhdWx0QW5jaG9yUG9pbnRzID0gdGhpcy5vcHRpb25zLmFuY2hvclBvaW50cztcbiAgICB2YXIgYW5jaG9yUG9pbnRzID0gY2ZnLmFuY2hvclBvaW50cyB8fCBkZWZhdWx0QW5jaG9yUG9pbnRzO1xuICAgIHJldHVybiBhbmNob3JQb2ludHM7XG4gIH1cbiAgLyog5aaC5p6c5rKh5a6a5LmJIHVwZGF0ZSDmlrnms5XvvIzmr4/mrKHpg73osIPnlKggZHJhdyDmlrnms5VcbiAgdXBkYXRlKGNmZywgaXRlbSkge1xuICAgICB9XG4gICovXG5cbn07XG5cbnZhciBTaGFwZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNoYXBlKCkge31cblxuICBTaGFwZS5yZWdpc3RlckZhY3RvcnkgPSBmdW5jdGlvbiAoZmFjdG9yeVR5cGUsIGNmZykge1xuICAgIHZhciBjbGFzc05hbWUgPSB1Y2ZpcnN0KGZhY3RvcnlUeXBlKTtcbiAgICB2YXIgZmFjdG9yeUJhc2UgPSBTaGFwZUZhY3RvcnlCYXNlO1xuXG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBmYWN0b3J5QmFzZSksIGNmZyk7XG5cbiAgICBTaGFwZVtjbGFzc05hbWVdID0gc2hhcGVGYWN0b3J5O1xuICAgIHNoYXBlRmFjdG9yeS5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgcmV0dXJuIHNoYXBlRmFjdG9yeTtcbiAgfTtcblxuICBTaGFwZS5nZXRGYWN0b3J5ID0gZnVuY3Rpb24gKGZhY3RvcnlUeXBlKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHVjZmlyc3QoZmFjdG9yeVR5cGUpO1xuICAgIHJldHVybiBTaGFwZVtjbGFzc05hbWVdO1xuICB9O1xuXG4gIFNoYXBlLnJlZ2lzdGVyTm9kZSA9IGZ1bmN0aW9uIChzaGFwZVR5cGUsIG5vZGVEZWZpbml0aW9uLCBleHRlbmRTaGFwZVR5cGUpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuTm9kZTtcbiAgICB2YXIgc2hhcGVPYmo7XG5cbiAgICBpZiAodHlwZW9mIG5vZGVEZWZpbml0aW9uID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZURlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBhdXRvTm9kZURlZmluaXRpb24gPSBjcmVhdGVOb2RlRnJvbVhNTChub2RlRGVmaW5pdGlvbik7XG4gICAgICBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoJ3NpbmdsZS1ub2RlJykpLCBhdXRvTm9kZURlZmluaXRpb24pO1xuICAgIH0gZWxzZSBpZiAobm9kZURlZmluaXRpb24uanN4KSB7XG4gICAgICB2YXIganN4ID0gbm9kZURlZmluaXRpb24uanN4O1xuICAgICAgdmFyIGF1dG9Ob2RlRGVmaW5pdGlvbiA9IGNyZWF0ZU5vZGVGcm9tWE1MKGpzeCk7XG4gICAgICBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoJ3NpbmdsZS1ub2RlJykpLCBhdXRvTm9kZURlZmluaXRpb24pLCBub2RlRGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNoYXBlRmFjdG9yeS5nZXRTaGFwZShleHRlbmRTaGFwZVR5cGUpO1xuICAgICAgdmFyIGV4dGVuZFNoYXBlID0gZXh0ZW5kU2hhcGVUeXBlID8gc2hhcGVGYWN0b3J5LmdldFNoYXBlKGV4dGVuZFNoYXBlVHlwZSkgOiBTaGFwZUZyYW1ld29yaztcbiAgICAgIHNoYXBlT2JqID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dGVuZFNoYXBlKSwgbm9kZURlZmluaXRpb24pO1xuICAgIH1cblxuICAgIHNoYXBlT2JqLnR5cGUgPSBzaGFwZVR5cGU7XG4gICAgc2hhcGVPYmouaXRlbVR5cGUgPSAnbm9kZSc7XG4gICAgc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0gPSBzaGFwZU9iajtcbiAgICByZXR1cm4gc2hhcGVPYmo7XG4gIH07XG5cbiAgU2hhcGUucmVnaXN0ZXJFZGdlID0gZnVuY3Rpb24gKHNoYXBlVHlwZSwgZWRnZURlZmluaXRpb24sIGV4dGVuZFNoYXBlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBTaGFwZS5FZGdlO1xuICAgIHZhciBleHRlbmRTaGFwZSA9IGV4dGVuZFNoYXBlVHlwZSA/IHNoYXBlRmFjdG9yeS5nZXRTaGFwZShleHRlbmRTaGFwZVR5cGUpIDogU2hhcGVGcmFtZXdvcms7XG5cbiAgICB2YXIgc2hhcGVPYmogPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0ZW5kU2hhcGUpLCBlZGdlRGVmaW5pdGlvbik7XG5cbiAgICBzaGFwZU9iai50eXBlID0gc2hhcGVUeXBlO1xuICAgIHNoYXBlT2JqLml0ZW1UeXBlID0gJ2VkZ2UnO1xuICAgIHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdID0gc2hhcGVPYmo7XG4gICAgcmV0dXJuIHNoYXBlT2JqO1xuICB9O1xuXG4gIFNoYXBlLnJlZ2lzdGVyQ29tYm8gPSBmdW5jdGlvbiAoc2hhcGVUeXBlLCBjb21ib0RlZmluaXRpb24sIGV4dGVuZFNoYXBlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBTaGFwZS5Db21ibztcbiAgICB2YXIgZXh0ZW5kU2hhcGUgPSBleHRlbmRTaGFwZVR5cGUgPyBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoZXh0ZW5kU2hhcGVUeXBlKSA6IFNoYXBlRnJhbWV3b3JrO1xuXG4gICAgdmFyIHNoYXBlT2JqID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dGVuZFNoYXBlKSwgY29tYm9EZWZpbml0aW9uKTtcblxuICAgIHNoYXBlT2JqLnR5cGUgPSBzaGFwZVR5cGU7XG4gICAgc2hhcGVPYmouaXRlbVR5cGUgPSAnY29tYm8nO1xuICAgIHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdID0gc2hhcGVPYmo7XG4gICAgcmV0dXJuIHNoYXBlT2JqO1xuICB9O1xuXG4gIHJldHVybiBTaGFwZTtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcGU7IC8vIOazqOWGjCBOb2RlIOeahOW3peWOguaWueazlVxuXG5TaGFwZS5yZWdpc3RlckZhY3RvcnkoJ25vZGUnLCB7XG4gIGRlZmF1bHRTaGFwZVR5cGU6ICdjaXJjbGUnXG59KTsgLy8g5rOo5YaMIEVkZ2Ug55qE5bel5Y6C5pa55rOVXG5cblNoYXBlLnJlZ2lzdGVyRmFjdG9yeSgnZWRnZScsIHtcbiAgZGVmYXVsdFNoYXBlVHlwZTogJ2xpbmUnXG59KTsgLy8g5rOo5YaMIENvbWJvIOeahOW3peWOguaWueazlVxuXG5TaGFwZS5yZWdpc3RlckZhY3RvcnkoJ2NvbWJvJywge1xuICBkZWZhdWx0U2hhcGVUeXBlOiAnY2lyY2xlJ1xufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/shape.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/shapeBase.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/shapeBase.js ***!
\************************************************************/
/*! exports provided: CLS_LABEL_BG_SUFFIX, shapeBase */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLS_LABEL_BG_SUFFIX\", function() { return CLS_LABEL_BG_SUFFIX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shapeBase\", function() { return shapeBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar CLS_SHAPE_SUFFIX = '-shape';\nvar CLS_LABEL_SUFFIX = '-label';\nvar ARROWS = ['startArrow', 'endArrow'];\nvar SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: undefined,\n fill: undefined,\n lineAppendWidth: 1,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n x: 0,\n y: 0,\n r: 10,\n width: 20,\n height: 20,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar PATH_SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: '#000',\n lineDash: undefined,\n startArrow: false,\n endArrow: false,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar SHAPES_DEFAULT_ATTRS = {\n edge: PATH_SHAPE_DEFAULT_ATTRS,\n node: SHAPE_DEFAULT_ATTRS,\n combo: SHAPE_DEFAULT_ATTRS\n};\nvar CLS_LABEL_BG_SUFFIX = '-label-bg'; // 单个 shape 带有一个 label,共用这段代码\n\nvar shapeBase = {\n // 默认样式及配置\n options: {\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n },\n descriptionCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n }\n },\n itemType: '',\n\n /**\n * 形状的类型,例如 circle,ellipse,polyline...\n */\n type: '',\n getCustomConfig: function getCustomConfig(cfg) {\n return {};\n },\n getOptions: function getOptions(cfg, updateType) {\n if (updateType === 'move' || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox'))) {\n return {};\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])({}, this.options, this.getCustomConfig(cfg) || {}, cfg);\n },\n\n /**\n * 绘制节点/边,包含文本\n * @override\n * @param {Object} cfg 节点的配置项\n * @param {G.Group} group 节点的容器\n * @return {IShape} 绘制的图形\n */\n draw: function draw(cfg, group) {\n group['shapeMap'] = {};\n this.mergeStyle = this.getOptions(cfg);\n var shape = this.drawShape(cfg, group);\n shape.set('className', this.itemType + CLS_SHAPE_SUFFIX);\n group['shapeMap'][this.itemType + CLS_SHAPE_SUFFIX] = shape;\n\n if (cfg.label) {\n var label = this.drawLabel(cfg, group);\n label.set('className', this.itemType + CLS_LABEL_SUFFIX);\n group['shapeMap'][this.itemType + CLS_LABEL_SUFFIX] = label;\n }\n\n return shape;\n },\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n * @param cfg\n * @param group\n * @param keyShape\n */\n afterDraw: function afterDraw(cfg, group, keyShape) {},\n drawShape: function drawShape(cfg, group) {\n return null;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = (this.mergeStyle || this.getOptions(cfg) || {}).labelCfg; // image的情况下有可能为null\n\n var labelCfg = defaultLabelCfg || {};\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n draggable: true,\n className: 'text-shape',\n name: 'text-shape',\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n var labelBBox = label.getBBox();\n var labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (labelStyle.rotateCenter) {\n switch (labelStyle.rotateCenter) {\n case 'center':\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n\n case 'lefttop':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n break;\n\n case 'leftcenter':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n break;\n\n default:\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n }\n } else {\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n }\n\n label.setMatrix(labelMatrix);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label);\n var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, labelCfg);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style,\n labelRelated: true\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n return {\n text: cfg.label\n };\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n return {};\n },\n\n /**\n * 获取文本的配置项\n * @param cfg 节点的配置项\n * @param labelCfg 文本的配置项\n * @param group 父容器,label 的定位可能与图形相关\n */\n getLabelStyle: function getLabelStyle(cfg, labelCfg, group) {\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group);\n var attrName = \"\".concat(this.itemType, \"Label\"); // 取 nodeLabel,edgeLabel 的配置项\n\n var defaultStyle = _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName] ? _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName].style : null;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, defaultStyle), calculateStyle), labelCfg.style);\n },\n\n /**\n * 获取图形的配置项\n * @param cfg\n */\n getShapeStyle: function getShapeStyle(cfg) {\n return cfg.style;\n },\n\n /**\n * 更新节点,包含文本\n * @override\n * @param {Object} cfg 节点/边的配置项\n * @param {G6.Item} item 节点/边\n */\n update: function update(cfg, item, updateType) {\n this.updateShapeStyle(cfg, item, updateType);\n this.updateLabel(cfg, item, updateType);\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer();\n var shape = item.getKeyShape();\n var shapeStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, shape.attr(), cfg.style);\n\n var _loop_1 = function _loop_1(key) {\n var _b;\n\n var style = shapeStyle[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style)) {\n // 更新图元素样式,支持更新子元素\n var subShape = ((_a = group['shapeMap']) === null || _a === void 0 ? void 0 : _a[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n shape.attr((_b = {}, _b[key] = style, _b));\n }\n };\n\n for (var key in shapeStyle) {\n _loop_1(key);\n }\n },\n updateLabel: function updateLabel(cfg, item, updateType) {\n var _a, _b; // 防止 cfg.label = \"\" 的情况\n\n\n if (cfg.label || cfg.label === '') {\n var group = item.getContainer();\n var _c = (this.mergeStyle || this.getOptions({}, updateType) || {}).labelCfg,\n labelCfg = _c === void 0 ? {} : _c;\n var labelClassName_1 = this.itemType + CLS_LABEL_SUFFIX;\n var label = group['shapeMap'][labelClassName_1] || group.find(function (ele) {\n return ele.get('className') === labelClassName_1;\n });\n var labelBgClassname_1 = this.itemType + CLS_LABEL_BG_SUFFIX;\n var labelBg = group['shapeMap'][labelBgClassname_1] || group.find(function (ele) {\n return ele.get('className') === labelBgClassname_1;\n }); // 若传入的新配置中有 label,(用户没传入但原先有 label,label 也会有值)\n\n if (!label) {\n // 若原先不存在 label,则绘制一个新的 label\n var newLabel = this.drawLabel(cfg, group);\n newLabel.set('className', labelClassName_1);\n group['shapeMap'][labelClassName_1] = newLabel;\n } else {\n // 若原先存在 label,则更新样式。与 getLabelStyle 不同在于这里需要融合当前 label 的样式\n // 融合 style 以外的属性:position, offset, ...\n if (!updateType || updateType === 'bbox|label' || this.itemType === 'edge' && updateType !== 'style') {\n labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(labelCfg, cfg.labelCfg);\n } // 获取位置信息\n\n\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group); // 取 nodeLabel,edgeLabel 的配置项\n\n var cfgStyle = (_a = cfg.labelCfg) === null || _a === void 0 ? void 0 : _a.style; // const cfgBgStyle = labelCfg.style?.background;\n // 需要融合当前\b label 的样式 label.attr()。不再需要全局/默认样式,因为已经应用在当前的 label 上\n\n var labelStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, calculateStyle), cfgStyle);\n\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate; // 计算 label 的旋转矩阵\n\n if (!isNaN(rotate) && rotate !== '') {\n // if G 4.x define the rotateAtStart, use it directly instead of using the following codes\n var rotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n rotateMatrix = transform(rotateMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n labelStyle.matrix = rotateMatrix;\n label.attr(labelStyle);\n } else {\n if (((_b = label.getMatrix()) === null || _b === void 0 ? void 0 : _b[4]) !== 1) {\n label.resetMatrix();\n }\n\n label.attr(labelStyle);\n }\n\n if (!labelBg) {\n if (labelStyle.background) {\n labelBg = this.drawLabelBg(cfg, group, label);\n labelBg.set('classname', labelBgClassname_1);\n group['shapeMap'][labelBgClassname_1] = labelBg;\n label.toFront();\n }\n } else if (labelStyle.background) {\n var calculateBgStyle = this.getLabelBgStyleByPosition(label, labelCfg);\n labelBg.attr(calculateBgStyle);\n } else {\n group.removeChild(labelBg);\n }\n }\n }\n },\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate(cfg, item) {},\n\n /**\n * 设置节点的状态,主要是交互状态,业务状态请在 draw 方法中实现\n * 单图形的节点仅考虑 selected、active 状态,有其他状态需求的用户自己复写这个方法\n * @override\n * @param {String} name 状态名称\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点\n */\n setState: function setState(name, value, item) {\n var _a, _b;\n\n var _c;\n\n var shape = item.get('keyShape');\n if (!shape || shape.destroyed) return;\n var type = item.getType();\n var stateName = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isBoolean\"])(value) ? name : \"\".concat(name, \":\").concat(value);\n var shapeStateStyle = this.getStateStyle(stateName, item);\n var itemStateStyle = item.getStateStyle(stateName); // const originStyle = item.getOriginStyle();\n // 不允许设置一个不存在的状态\n\n if (!itemStateStyle && !shapeStateStyle) {\n return;\n } // 要设置或取消的状态的样式\n // 当没有 state 状态时,默认使用 model.stateStyles 中的样式\n\n\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, itemStateStyle || shapeStateStyle);\n var group = item.getContainer(); // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值。使用对象检索更快\n\n var keptAttrs = {\n x: 1,\n y: 1,\n cx: 1,\n cy: 1,\n matrix: 1\n };\n\n if (type === 'combo') {\n keptAttrs.r = 1;\n keptAttrs.width = 1;\n keptAttrs.height = 1;\n }\n\n if (value) {\n var _loop_2 = function _loop_2(key) {\n var _d;\n\n var style = styles[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(key)) {\n var subShape = ((_c = group['shapeMap']) === null || _c === void 0 ? void 0 : _c[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n // 非纯对象,则认为是设置到 keyShape 上面的\n shape.attr((_d = {}, _d[key] = style, _d));\n }\n }; // style 为要设置的状态的样式\n\n\n for (var key in styles) {\n _loop_2(key);\n }\n } else {\n // 所有生效的 state 的样式\n var enableStatesStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getCurrentStatesStyle());\n var model = item.getModel(); // 原始样式\n\n var originStyle_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, model.style, Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getOriginStyle()));\n var keyShapeName_1 = shape.get('name'); // cloning shape.attr(), keys.forEach to avoid cloning the img attr, which leads to maximum clone heap #2383\n // const keyShapeStyles = clone(shape.attr())\n\n var shapeAttrs_1 = shape.attr();\n var keyShapeStyles_1 = {};\n Object.keys(shapeAttrs_1).forEach(function (key) {\n if (key === 'img') return;\n var attr = shapeAttrs_1[key];\n\n if (attr && _typeof(attr) === 'object') {\n keyShapeStyles_1[key] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(attr);\n } else {\n keyShapeStyles_1[key] = attr;\n }\n }); // 已有样式 - 要取消的状态的样式\n\n var filtetDisableStatesStyle = {};\n\n var _loop_3 = function _loop_3(p) {\n var style = styles[p];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(p)) {\n var subShape_1 = group['shapeMap'][p] || group.find(function (ele) {\n return ele.get('name') === p;\n });\n\n if (subShape_1) {\n var subShapeStyles_1 = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(subShape_1.attr());\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(style, function (v, key) {\n if (p === keyShapeName_1 && keyShapeStyles_1[key] && !keptAttrs[key]) {\n delete keyShapeStyles_1[key];\n var value_1 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n shape.attr(key, value_1);\n } else if (subShapeStyles_1[key] || subShapeStyles_1[key] === 0) {\n delete subShapeStyles_1[key];\n var value_2 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n subShape_1.attr(key, value_2);\n }\n });\n filtetDisableStatesStyle[p] = subShapeStyles_1;\n }\n } else {\n if (keyShapeStyles_1[p] && !keptAttrs[p]) {\n delete keyShapeStyles_1[p];\n var value_3 = originStyle_1[p] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p] : undefined) || SHAPES_DEFAULT_ATTRS[type][p];\n shape.attr(p, value_3);\n }\n }\n }; // styles 为要取消的状态的样式\n\n\n for (var p in styles) {\n _loop_3(p);\n } // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值后,\n // 如果 keyShape 有 name 属性,则 filtetDisableStatesStyle 的格式为 { keyShapeName: {} }\n // 否则为普通对象\n\n\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(filtetDisableStatesStyle, keyShapeStyles_1);\n } else {\n filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1;\n }\n\n for (var key in enableStatesStyle) {\n if (keptAttrs[key]) continue;\n var enableStyle = enableStatesStyle[key];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(enableStyle) || ARROWS.includes(key)) {\n // 把样式属性merge到keyShape中\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1, (_a = {}, _a[key] = enableStyle, _a));\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b));\n delete originStyle_1[key];\n }\n\n delete enableStatesStyle[key];\n }\n }\n\n var originstyles = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle);\n var keyShapeSetted = false;\n\n var _loop_4 = function _loop_4(originKey) {\n var _e, _f;\n\n var style = originstyles[originKey];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(originKey)) {\n var subShape = group['shapeMap'][originKey] || group.find(function (ele) {\n return ele.get('name') === originKey;\n });\n\n if (subShape) {\n // The text's position and matrix is not allowed to be affected by states\n if (subShape.get('type') === 'text' || subShape.get('labelRelated')) {\n delete style.x;\n delete style.y;\n delete style.matrix;\n }\n\n if (originKey === keyShapeName_1) {\n if (type === 'combo') {\n delete style.r;\n delete style.width;\n delete style.height;\n }\n\n keyShapeSetted = true;\n }\n\n subShape.attr(style);\n }\n } else if (!keyShapeSetted) {\n var value_4 = style || SHAPES_DEFAULT_ATTRS[type][originKey]; // 当更新 combo 状态时,当不存在 keyShapeName 时候,则认为是设置到 keyShape 上面的\n\n if (type === 'combo') {\n if (!keyShapeName_1) {\n shape.attr((_e = {}, _e[originKey] = value_4, _e));\n }\n } else {\n shape.attr((_f = {}, _f[originKey] = value_4, _f));\n }\n }\n };\n\n for (var originKey in originstyles) {\n _loop_4(originKey);\n }\n }\n },\n\n /**\n * 获取不同状态下的样式\n *\n * @param {string} name 状态名称\n * @param {Item} item Node或Edge的实例\n * @return {object} 样式\n */\n getStateStyle: function getStateStyle(name, item) {\n var model = item.getModel();\n var type = item.getType();\n\n var _a = this.getOptions(model),\n stateStyles = _a.stateStyles,\n _b = _a.style,\n style = _b === void 0 ? {} : _b;\n\n var modelStateStyle = model.stateStyles ? model.stateStyles[name] : stateStyles && stateStyles[name];\n\n if (type === 'combo') {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(modelStateStyle);\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, style, modelStateStyle);\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 锚点的数组,如果为 null,则没有锚点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var _a, _b;\n\n var anchorPoints = (cfg === null || cfg === void 0 ? void 0 : cfg.anchorPoints) || ((_a = this.getCustomConfig(cfg)) === null || _a === void 0 ? void 0 : _a.anchorPoints) || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.anchorPoints);\n return anchorPoints;\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlQmFzZS5qcz82ODg0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBdUIsMkJBQTJCLHNHQUFzRyxtQkFBbUIsRUFBRSxtQkFBbUIsNkhBQTZILEVBQUUsZUFBZTs7QUFFN1M7QUFDRjtBQUNTO0FBQ3lDO0FBQy9CO0FBQ2xELGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHNDQUFzQzs7QUFFdEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsMERBQU8sR0FBRywrQ0FBK0M7QUFDcEUsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHdFQUF3RSxXQUFXOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJELHVCQUF1QiwrQ0FBTSxhQUFhLCtDQUFNO0FBQ2hELFdBQVcsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDeEMsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFHLEdBQUc7O0FBRTNCO0FBQ0E7O0FBRUE7O0FBRUEsVUFBVSxnRUFBYTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsMkJBQTJCO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZTs7O0FBR2Y7QUFDQTtBQUNBLHFEQUFxRCxtQkFBbUI7QUFDeEUsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMERBQU87QUFDNUIsU0FBUzs7O0FBR1QsZ0ZBQWdGOztBQUVoRix5RkFBeUY7QUFDekY7O0FBRUEseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRzs7QUFFN0M7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsaURBQWlEOztBQUVqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0REFBUztBQUM3QjtBQUNBLHVEQUF1RDtBQUN2RDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQSxpQkFBaUIsc0RBQUcsR0FBRztBQUN2QixvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFlBQVksZ0VBQWE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDhCQUE4QixxRUFBZTtBQUM3QyxrQ0FBa0M7O0FBRWxDLDBCQUEwQixzREFBRyxHQUFHLGVBQWUscUVBQWU7QUFDOUQsNkNBQTZDO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0Msd0RBQUs7QUFDdkMsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7O0FBRUE7QUFDQTs7QUFFQSxZQUFZLGdFQUFhO0FBQ3pCO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0EsbUNBQW1DLHFFQUFlO0FBQ2xELFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBO0FBQ0EsT0FBTztBQUNQLGdFQUFnRSxpQkFBaUI7QUFDakY7OztBQUdBO0FBQ0EsUUFBUSxzREFBRztBQUNYLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGdFQUFhO0FBQzFCO0FBQ0E7QUFDQSxZQUFZLHNEQUFHLHdCQUF3QjtBQUN2QyxXQUFXO0FBQ1gsWUFBWSxzREFBRyx3Q0FBd0M7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLDBEQUFPO0FBQ2I7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxZQUFZLGdFQUFhO0FBQ3pCO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsdUVBQXVFOztBQUV2RTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0EsV0FBVztBQUNYLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLEtBQUs7QUFDbEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCOztBQUVBLFdBQVcsc0RBQUcsR0FBRztBQUNqQixHQUFHOztBQUVIO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxXQUFXO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9zaGFwZUJhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfSwgX3R5cGVvZihvYmopOyB9XG5cbmltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBkZWVwTWl4LCBlYWNoLCBtaXgsIGlzQm9vbGVhbiwgaXNQbGFpbk9iamVjdCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNsb25lQmVzaWRlc0ltZyB9IGZyb20gJy4uL3V0aWwvZ3JhcGhpYyc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBDTFNfU0hBUEVfU1VGRklYID0gJy1zaGFwZSc7XG52YXIgQ0xTX0xBQkVMX1NVRkZJWCA9ICctbGFiZWwnO1xudmFyIEFSUk9XUyA9IFsnc3RhcnRBcnJvdycsICdlbmRBcnJvdyddO1xudmFyIFNIQVBFX0RFRkFVTFRfQVRUUlMgPSB7XG4gIGxpbmVXaWR0aDogMSxcbiAgc3Ryb2tlOiB1bmRlZmluZWQsXG4gIGZpbGw6IHVuZGVmaW5lZCxcbiAgbGluZUFwcGVuZFdpZHRoOiAxLFxuICBvcGFjaXR5OiB1bmRlZmluZWQsXG4gIHN0cm9rZU9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgZmlsbE9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgeDogMCxcbiAgeTogMCxcbiAgcjogMTAsXG4gIHdpZHRoOiAyMCxcbiAgaGVpZ2h0OiAyMCxcbiAgc2hhZG93Q29sb3I6IHVuZGVmaW5lZCxcbiAgc2hhZG93Qmx1cjogMCxcbiAgc2hhZG93T2Zmc2V0WDogMCxcbiAgc2hhZG93T2Zmc2V0WTogMFxufTtcbnZhciBQQVRIX1NIQVBFX0RFRkFVTFRfQVRUUlMgPSB7XG4gIGxpbmVXaWR0aDogMSxcbiAgc3Ryb2tlOiAnIzAwMCcsXG4gIGxpbmVEYXNoOiB1bmRlZmluZWQsXG4gIHN0YXJ0QXJyb3c6IGZhbHNlLFxuICBlbmRBcnJvdzogZmFsc2UsXG4gIG9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgc3Ryb2tlT3BhY2l0eTogdW5kZWZpbmVkLFxuICBmaWxsT3BhY2l0eTogdW5kZWZpbmVkLFxuICBzaGFkb3dDb2xvcjogdW5kZWZpbmVkLFxuICBzaGFkb3dCbHVyOiAwLFxuICBzaGFkb3dPZmZzZXRYOiAwLFxuICBzaGFkb3dPZmZzZXRZOiAwXG59O1xudmFyIFNIQVBFU19ERUZBVUxUX0FUVFJTID0ge1xuICBlZGdlOiBQQVRIX1NIQVBFX0RFRkFVTFRfQVRUUlMsXG4gIG5vZGU6IFNIQVBFX0RFRkFVTFRfQVRUUlMsXG4gIGNvbWJvOiBTSEFQRV9ERUZBVUxUX0FUVFJTXG59O1xuZXhwb3J0IHZhciBDTFNfTEFCRUxfQkdfU1VGRklYID0gJy1sYWJlbC1iZyc7IC8vIOWNleS4qiBzaGFwZSDluKbmnInkuIDkuKogbGFiZWzvvIzlhbHnlKjov5nmrrXku6PnoIFcblxuZXhwb3J0IHZhciBzaGFwZUJhc2UgPSB7XG4gIC8vIOm7mOiupOagt+W8j+WPiumFjee9rlxuICBvcHRpb25zOiB7XG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbkNmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGl0ZW1UeXBlOiAnJyxcblxuICAvKipcbiAgICog5b2i54q255qE57G75Z6L77yM5L6L5aaCIGNpcmNsZe+8jGVsbGlwc2XvvIxwb2x5bGluZS4uLlxuICAgKi9cbiAgdHlwZTogJycsXG4gIGdldEN1c3RvbUNvbmZpZzogZnVuY3Rpb24gZ2V0Q3VzdG9tQ29uZmlnKGNmZykge1xuICAgIHJldHVybiB7fTtcbiAgfSxcbiAgZ2V0T3B0aW9uczogZnVuY3Rpb24gZ2V0T3B0aW9ucyhjZmcsIHVwZGF0ZVR5cGUpIHtcbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnIHx8ICh1cGRhdGVUeXBlID09PSBudWxsIHx8IHVwZGF0ZVR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVwZGF0ZVR5cGUuaW5jbHVkZXMoJ2Jib3gnKSkpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVlcE1peCh7fSwgdGhpcy5vcHRpb25zLCB0aGlzLmdldEN1c3RvbUNvbmZpZyhjZmcpIHx8IHt9LCBjZmcpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLboioLngrkv6L6577yM5YyF5ZCr5paH5pysXG4gICAqIEBvdmVycmlkZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnnmoTphY3nva7poblcbiAgICogQHBhcmFtICB7Ry5Hcm91cH0gZ3JvdXAg6IqC54K555qE5a655ZmoXG4gICAqIEByZXR1cm4ge0lTaGFwZX0g57uY5Yi255qE5Zu+5b2iXG4gICAqL1xuICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNmZywgZ3JvdXApIHtcbiAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgIHRoaXMubWVyZ2VTdHlsZSA9IHRoaXMuZ2V0T3B0aW9ucyhjZmcpO1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZHJhd1NoYXBlKGNmZywgZ3JvdXApO1xuICAgIHNoYXBlLnNldCgnY2xhc3NOYW1lJywgdGhpcy5pdGVtVHlwZSArIENMU19TSEFQRV9TVUZGSVgpO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMuaXRlbVR5cGUgKyBDTFNfU0hBUEVfU1VGRklYXSA9IHNoYXBlO1xuXG4gICAgaWYgKGNmZy5sYWJlbCkge1xuICAgICAgdmFyIGxhYmVsID0gdGhpcy5kcmF3TGFiZWwoY2ZnLCBncm91cCk7XG4gICAgICBsYWJlbC5zZXQoJ2NsYXNzTmFtZScsIHRoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfU1VGRklYKTtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfU1VGRklYXSA9IGxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi25a6M5oiQ5ZCO55qE5pON5L2c77yM5L6/5LqO55So5oi357un5om/546w5pyJ55qE6IqC54K544CB6L65XG4gICAqIEBwYXJhbSBjZmdcbiAgICogQHBhcmFtIGdyb3VwXG4gICAqIEBwYXJhbSBrZXlTaGFwZVxuICAgKi9cbiAgYWZ0ZXJEcmF3OiBmdW5jdGlvbiBhZnRlckRyYXcoY2ZnLCBncm91cCwga2V5U2hhcGUpIHt9LFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGRyYXdMYWJlbDogZnVuY3Rpb24gZHJhd0xhYmVsKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExhYmVsQ2ZnID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSB8fCB7fSkubGFiZWxDZmc7IC8vIGltYWdl55qE5oOF5Ya15LiL5pyJ5Y+v6IO95Li6bnVsbFxuXG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVmYXVsdExhYmVsQ2ZnIHx8IHt9O1xuICAgIHZhciBsYWJlbFN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlO1xuICAgIHZhciBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IGxhYmVsU3R5bGUsXG4gICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICBjbGFzc05hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgIG5hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgIGxhYmVsUmVsYXRlZDogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LXNoYXBlJ10gPSBsYWJlbDtcblxuICAgIGlmICghaXNOYU4ocm90YXRlKSAmJiByb3RhdGUgIT09ICcnKSB7XG4gICAgICB2YXIgbGFiZWxCQm94ID0gbGFiZWwuZ2V0QkJveCgpO1xuICAgICAgdmFyIGxhYmVsTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuXG4gICAgICBpZiAobGFiZWxTdHlsZS5yb3RhdGVDZW50ZXIpIHtcbiAgICAgICAgc3dpdGNoIChsYWJlbFN0eWxlLnJvdGF0ZUNlbnRlcikge1xuICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbEJCb3gud2lkdGggLyAyLCAtbGFiZWxCQm94LmhlaWdodCAvIDJdLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbEJCb3gud2lkdGggLyAyLCBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnbGVmdHRvcCc6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbFN0eWxlLngsIC1sYWJlbFN0eWxlLnldLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbFN0eWxlLngsIGxhYmVsU3R5bGUueV1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnbGVmdGNlbnRlcic6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbFN0eWxlLngsIC1sYWJlbFN0eWxlLnkgLSBsYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55ICsgbGFiZWxCQm94LmhlaWdodCAvIDJdXSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbEJCb3gud2lkdGggLyAyLCAtbGFiZWxCQm94LmhlaWdodCAvIDJdLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbEJCb3gud2lkdGggLyAyLCBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbFN0eWxlLngsIC1sYWJlbFN0eWxlLnkgLSBsYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55ICsgbGFiZWxCQm94LmhlaWdodCAvIDJdXSk7XG4gICAgICB9XG5cbiAgICAgIGxhYmVsLnNldE1hdHJpeChsYWJlbE1hdHJpeCk7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsU3R5bGUuYmFja2dyb3VuZCkge1xuICAgICAgdmFyIHJlY3QgPSB0aGlzLmRyYXdMYWJlbEJnKGNmZywgZ3JvdXAsIGxhYmVsKTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lID0gdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9CR19TVUZGSVg7XG4gICAgICByZWN0LnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZSk7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXSA9IHJlY3Q7XG4gICAgICBsYWJlbC50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9LFxuICBkcmF3TGFiZWxCZzogZnVuY3Rpb24gZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwpIHtcbiAgICB2YXIgZGVmYXVsdExhYmVsQ2ZnID0gdGhpcy5vcHRpb25zLmxhYmVsQ2ZnO1xuICAgIHZhciBsYWJlbENmZyA9IG1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgbGFiZWxDZmcpO1xuICAgIHZhciByZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBuYW1lOiAndGV4dC1iZy1zaGFwZScsXG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1iZy1zaGFwZSddID0gcmVjdDtcbiAgICByZXR1cm4gcmVjdDtcbiAgfSxcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IGNmZy5sYWJlbFxuICAgIH07XG4gIH0sXG4gIGdldExhYmVsQmdTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsQmdTdHlsZUJ5UG9zaXRpb24obGFiZWwsIGxhYmVsQ2ZnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmlofmnKznmoTphY3nva7poblcbiAgICogQHBhcmFtIGNmZyDoioLngrnnmoTphY3nva7poblcbiAgICogQHBhcmFtIGxhYmVsQ2ZnIOaWh+acrOeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gZ3JvdXAg54i25a655Zmo77yMbGFiZWwg55qE5a6a5L2N5Y+v6IO95LiO5Zu+5b2i55u45YWzXG4gICAqL1xuICBnZXRMYWJlbFN0eWxlOiBmdW5jdGlvbiBnZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKSB7XG4gICAgdmFyIGNhbGN1bGF0ZVN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlQnlQb3NpdGlvbihjZmcsIGxhYmVsQ2ZnLCBncm91cCk7XG4gICAgdmFyIGF0dHJOYW1lID0gXCJcIi5jb25jYXQodGhpcy5pdGVtVHlwZSwgXCJMYWJlbFwiKTsgLy8g5Y+WIG5vZGVMYWJlbO+8jGVkZ2VMYWJlbCDnmoTphY3nva7poblcblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSBHbG9iYWxbYXR0ck5hbWVdID8gR2xvYmFsW2F0dHJOYW1lXS5zdHlsZSA6IG51bGw7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0U3R5bGUpLCBjYWxjdWxhdGVTdHlsZSksIGxhYmVsQ2ZnLnN0eWxlKTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W5Zu+5b2i55qE6YWN572u6aG5XG4gICAqIEBwYXJhbSBjZmdcbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgcmV0dXJuIGNmZy5zdHlsZTtcbiAgfSxcblxuICAvKipcbiAgICog5pu05paw6IqC54K577yM5YyF5ZCr5paH5pysXG4gICAqIEBvdmVycmlkZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrkv6L6555qE6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0c2Lkl0ZW19IGl0ZW0g6IqC54K5L+i+uVxuICAgKi9cbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdGhpcy51cGRhdGVTaGFwZVN0eWxlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpO1xuICB9LFxuICB1cGRhdGVTaGFwZVN0eWxlOiBmdW5jdGlvbiB1cGRhdGVTaGFwZVN0eWxlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7XG4gICAgdmFyIHNoYXBlID0gaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaGFwZVN0eWxlID0gbWl4KHt9LCBzaGFwZS5hdHRyKCksIGNmZy5zdHlsZSk7XG5cbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoa2V5KSB7XG4gICAgICB2YXIgX2I7XG5cbiAgICAgIHZhciBzdHlsZSA9IHNoYXBlU3R5bGVba2V5XTtcblxuICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpKSB7XG4gICAgICAgIC8vIOabtOaWsOWbvuWFg+e0oOagt+W8j++8jOaUr+aMgeabtOaWsOWtkOWFg+e0oFxuICAgICAgICB2YXIgc3ViU2hhcGUgPSAoKF9hID0gZ3JvdXBbJ3NoYXBlTWFwJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtrZXldKSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IGtleTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1YlNoYXBlID09PSBudWxsIHx8IHN1YlNoYXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXBlLmF0dHIoKF9iID0ge30sIF9iW2tleV0gPSBzdHlsZSwgX2IpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNoYXBlU3R5bGUpIHtcbiAgICAgIF9sb29wXzEoa2V5KTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZUxhYmVsOiBmdW5jdGlvbiB1cGRhdGVMYWJlbChjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgX2EsIF9iOyAvLyDpmLLmraIgY2ZnLmxhYmVsID0gXCJcIiDnmoTmg4XlhrVcblxuXG4gICAgaWYgKGNmZy5sYWJlbCB8fCBjZmcubGFiZWwgPT09ICcnKSB7XG4gICAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgICAgdmFyIF9jID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoe30sIHVwZGF0ZVR5cGUpIHx8IHt9KS5sYWJlbENmZyxcbiAgICAgICAgICBsYWJlbENmZyA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jO1xuICAgICAgdmFyIGxhYmVsQ2xhc3NOYW1lXzEgPSB0aGlzLml0ZW1UeXBlICsgQ0xTX0xBQkVMX1NVRkZJWDtcbiAgICAgIHZhciBsYWJlbCA9IGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQ2xhc3NOYW1lXzFdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmdldCgnY2xhc3NOYW1lJykgPT09IGxhYmVsQ2xhc3NOYW1lXzE7XG4gICAgICB9KTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lXzEgPSB0aGlzLml0ZW1UeXBlICsgQ0xTX0xBQkVMX0JHX1NVRkZJWDtcbiAgICAgIHZhciBsYWJlbEJnID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbGFiZWxCZ0NsYXNzbmFtZV8xXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZS5nZXQoJ2NsYXNzTmFtZScpID09PSBsYWJlbEJnQ2xhc3NuYW1lXzE7XG4gICAgICB9KTsgLy8g6Iul5Lyg5YWl55qE5paw6YWN572u5Lit5pyJIGxhYmVs77yM77yI55So5oi35rKh5Lyg5YWl5L2G5Y6f5YWI5pyJIGxhYmVs77yMbGFiZWwg5Lmf5Lya5pyJ5YC877yJXG5cbiAgICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgLy8g6Iul5Y6f5YWI5LiN5a2Y5ZyoIGxhYmVs77yM5YiZ57uY5Yi25LiA5Liq5paw55qEIGxhYmVsXG4gICAgICAgIHZhciBuZXdMYWJlbCA9IHRoaXMuZHJhd0xhYmVsKGNmZywgZ3JvdXApO1xuICAgICAgICBuZXdMYWJlbC5zZXQoJ2NsYXNzTmFtZScsIGxhYmVsQ2xhc3NOYW1lXzEpO1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbENsYXNzTmFtZV8xXSA9IG5ld0xhYmVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g6Iul5Y6f5YWI5a2Y5ZyoIGxhYmVs77yM5YiZ5pu05paw5qC35byP44CC5LiOIGdldExhYmVsU3R5bGUg5LiN5ZCM5Zyo5LqO6L+Z6YeM6ZyA6KaB6J6N5ZCI5b2T5YmNIGxhYmVsIOeahOagt+W8j1xuICAgICAgICAvLyDono3lkIggc3R5bGUg5Lul5aSW55qE5bGe5oCn77yacG9zaXRpb24sIG9mZnNldCwgLi4uXG4gICAgICAgIGlmICghdXBkYXRlVHlwZSB8fCB1cGRhdGVUeXBlID09PSAnYmJveHxsYWJlbCcgfHwgdGhpcy5pdGVtVHlwZSA9PT0gJ2VkZ2UnICYmIHVwZGF0ZVR5cGUgIT09ICdzdHlsZScpIHtcbiAgICAgICAgICBsYWJlbENmZyA9IGRlZXBNaXgobGFiZWxDZmcsIGNmZy5sYWJlbENmZyk7XG4gICAgICAgIH0gLy8g6I635Y+W5L2N572u5L+h5oGvXG5cblxuICAgICAgICB2YXIgY2FsY3VsYXRlU3R5bGUgPSB0aGlzLmdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKTsgLy8g5Y+WIG5vZGVMYWJlbO+8jGVkZ2VMYWJlbCDnmoTphY3nva7poblcblxuICAgICAgICB2YXIgY2ZnU3R5bGUgPSAoX2EgPSBjZmcubGFiZWxDZmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdHlsZTsgLy8gY29uc3QgY2ZnQmdTdHlsZSA9IGxhYmVsQ2ZnLnN0eWxlPy5iYWNrZ3JvdW5kO1xuICAgICAgICAvLyDpnIDopoHono3lkIjlvZPliY1cYiBsYWJlbCDnmoTmoLflvI8gbGFiZWwuYXR0cigp44CC5LiN5YaN6ZyA6KaB5YWo5bGAL+m7mOiupOagt+W8j++8jOWboOS4uuW3sue7j+W6lOeUqOWcqOW9k+WJjeeahCBsYWJlbCDkuIpcblxuICAgICAgICB2YXIgbGFiZWxTdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjYWxjdWxhdGVTdHlsZSksIGNmZ1N0eWxlKTtcblxuICAgICAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgICAgIGRlbGV0ZSBsYWJlbFN0eWxlLnJvdGF0ZTsgLy8g6K6h566XIGxhYmVsIOeahOaXi+i9rOefqemYtVxuXG4gICAgICAgIGlmICghaXNOYU4ocm90YXRlKSAmJiByb3RhdGUgIT09ICcnKSB7XG4gICAgICAgICAgLy8gaWYgRyA0LnggZGVmaW5lIHRoZSByb3RhdGVBdFN0YXJ0LCB1c2UgaXQgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyB0aGUgZm9sbG93aW5nIGNvZGVzXG4gICAgICAgICAgdmFyIHJvdGF0ZU1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICByb3RhdGVNYXRyaXggPSB0cmFuc2Zvcm0ocm90YXRlTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueV0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55XV0pO1xuICAgICAgICAgIGxhYmVsU3R5bGUubWF0cml4ID0gcm90YXRlTWF0cml4O1xuICAgICAgICAgIGxhYmVsLmF0dHIobGFiZWxTdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCgoX2IgPSBsYWJlbC5nZXRNYXRyaXgoKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzRdKSAhPT0gMSkge1xuICAgICAgICAgICAgbGFiZWwucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsYWJlbC5hdHRyKGxhYmVsU3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsYWJlbEJnKSB7XG4gICAgICAgICAgaWYgKGxhYmVsU3R5bGUuYmFja2dyb3VuZCkge1xuICAgICAgICAgICAgbGFiZWxCZyA9IHRoaXMuZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwpO1xuICAgICAgICAgICAgbGFiZWxCZy5zZXQoJ2NsYXNzbmFtZScsIGxhYmVsQmdDbGFzc25hbWVfMSk7XG4gICAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXzFdID0gbGFiZWxCZztcbiAgICAgICAgICAgIGxhYmVsLnRvRnJvbnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGFiZWxTdHlsZS5iYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgdmFyIGNhbGN1bGF0ZUJnU3R5bGUgPSB0aGlzLmdldExhYmVsQmdTdHlsZUJ5UG9zaXRpb24obGFiZWwsIGxhYmVsQ2ZnKTtcbiAgICAgICAgICBsYWJlbEJnLmF0dHIoY2FsY3VsYXRlQmdTdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXAucmVtb3ZlQ2hpbGQobGFiZWxCZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8vIHVwZGF0ZShjZmcsIGl0ZW0pIC8vIOm7mOiupOS4jeWumuS5iVxuICBhZnRlclVwZGF0ZTogZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoY2ZnLCBpdGVtKSB7fSxcblxuICAvKipcbiAgICog6K6+572u6IqC54K555qE54q25oCB77yM5Li76KaB5piv5Lqk5LqS54q25oCB77yM5Lia5Yqh54q25oCB6K+35ZyoIGRyYXcg5pa55rOV5Lit5a6e546wXG4gICAqIOWNleWbvuW9oueahOiKgueCueS7heiAg+iZkSBzZWxlY3RlZOOAgWFjdGl2ZSDnirbmgIHvvIzmnInlhbbku5bnirbmgIHpnIDmsYLnmoTnlKjmiLfoh6rlt7HlpI3lhpnov5nkuKrmlrnms5VcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbmFtZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtICB7U3RyaW5nIHwgQm9vbGVhbn0gdmFsdWUg54q25oCB5YC8XG4gICAqIEBwYXJhbSAge0c2Lkl0ZW19IGl0ZW0g6IqC54K5XG4gICAqL1xuICBzZXRTdGF0ZTogZnVuY3Rpb24gc2V0U3RhdGUobmFtZSwgdmFsdWUsIGl0ZW0pIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIF9jO1xuXG4gICAgdmFyIHNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAgaWYgKCFzaGFwZSB8fCBzaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuICAgIHZhciBzdGF0ZU5hbWUgPSBpc0Jvb2xlYW4odmFsdWUpID8gbmFtZSA6IFwiXCIuY29uY2F0KG5hbWUsIFwiOlwiKS5jb25jYXQodmFsdWUpO1xuICAgIHZhciBzaGFwZVN0YXRlU3R5bGUgPSB0aGlzLmdldFN0YXRlU3R5bGUoc3RhdGVOYW1lLCBpdGVtKTtcbiAgICB2YXIgaXRlbVN0YXRlU3R5bGUgPSBpdGVtLmdldFN0YXRlU3R5bGUoc3RhdGVOYW1lKTsgLy8gY29uc3Qgb3JpZ2luU3R5bGUgPSBpdGVtLmdldE9yaWdpblN0eWxlKCk7XG4gICAgLy8g5LiN5YWB6K646K6+572u5LiA5Liq5LiN5a2Y5Zyo55qE54q25oCBXG5cbiAgICBpZiAoIWl0ZW1TdGF0ZVN0eWxlICYmICFzaGFwZVN0YXRlU3R5bGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOimgeiuvue9ruaIluWPlua2iOeahOeKtuaAgeeahOagt+W8j1xuICAgIC8vIOW9k+ayoeaciSBzdGF0ZSDnirbmgIHml7bvvIzpu5jorqTkvb/nlKggbW9kZWwuc3RhdGVTdHlsZXMg5Lit55qE5qC35byPXG5cblxuICAgIHZhciBzdHlsZXMgPSBtaXgoe30sIGl0ZW1TdGF0ZVN0eWxlIHx8IHNoYXBlU3RhdGVTdHlsZSk7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8g5LuO5Zu+5YWD57Sg546w5pyJ55qE5qC35byP5Lit5Yig6Zmk5pys5qyh6KaB5Y+W5raI55qEIHN0YXRlcyDkuK3lrZjlnKjnmoTlsZ7mgKflgLzjgILkvb/nlKjlr7nosaHmo4DntKLmm7Tlv6tcblxuICAgIHZhciBrZXB0QXR0cnMgPSB7XG4gICAgICB4OiAxLFxuICAgICAgeTogMSxcbiAgICAgIGN4OiAxLFxuICAgICAgY3k6IDEsXG4gICAgICBtYXRyaXg6IDFcbiAgICB9O1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGtlcHRBdHRycy5yID0gMTtcbiAgICAgIGtlcHRBdHRycy53aWR0aCA9IDE7XG4gICAgICBrZXB0QXR0cnMuaGVpZ2h0ID0gMTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gX2xvb3BfMihrZXkpIHtcbiAgICAgICAgdmFyIF9kO1xuXG4gICAgICAgIHZhciBzdHlsZSA9IHN0eWxlc1trZXldO1xuXG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHN0eWxlKSAmJiAhQVJST1dTLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICB2YXIgc3ViU2hhcGUgPSAoKF9jID0gZ3JvdXBbJ3NoYXBlTWFwJ10pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1trZXldKSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ25hbWUnKSA9PT0ga2V5O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN1YlNoYXBlID09PSBudWxsIHx8IHN1YlNoYXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyDpnZ7nuq/lr7nosaHvvIzliJnorqTkuLrmmK/orr7nva7liLAga2V5U2hhcGUg5LiK6Z2i55qEXG4gICAgICAgICAgc2hhcGUuYXR0cigoX2QgPSB7fSwgX2Rba2V5XSA9IHN0eWxlLCBfZCkpO1xuICAgICAgICB9XG4gICAgICB9OyAvLyBzdHlsZSDkuLropoHorr7nva7nmoTnirbmgIHnmoTmoLflvI9cblxuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc3R5bGVzKSB7XG4gICAgICAgIF9sb29wXzIoa2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5omA5pyJ55Sf5pWI55qEIHN0YXRlIOeahOagt+W8j1xuICAgICAgdmFyIGVuYWJsZVN0YXRlc1N0eWxlID0gY2xvbmVCZXNpZGVzSW1nKGl0ZW0uZ2V0Q3VycmVudFN0YXRlc1N0eWxlKCkpO1xuICAgICAgdmFyIG1vZGVsID0gaXRlbS5nZXRNb2RlbCgpOyAvLyDljp/lp4vmoLflvI9cblxuICAgICAgdmFyIG9yaWdpblN0eWxlXzEgPSBtaXgoe30sIG1vZGVsLnN0eWxlLCBjbG9uZUJlc2lkZXNJbWcoaXRlbS5nZXRPcmlnaW5TdHlsZSgpKSk7XG4gICAgICB2YXIga2V5U2hhcGVOYW1lXzEgPSBzaGFwZS5nZXQoJ25hbWUnKTsgLy8gY2xvbmluZyAgc2hhcGUuYXR0cigpLCBrZXlzLmZvckVhY2ggdG8gYXZvaWQgY2xvbmluZyB0aGUgaW1nIGF0dHIsIHdoaWNoIGxlYWRzIHRvIG1heGltdW0gY2xvbmUgaGVhcCAjMjM4M1xuICAgICAgLy8gY29uc3Qga2V5U2hhcGVTdHlsZXMgPSBjbG9uZShzaGFwZS5hdHRyKCkpXG5cbiAgICAgIHZhciBzaGFwZUF0dHJzXzEgPSBzaGFwZS5hdHRyKCk7XG4gICAgICB2YXIga2V5U2hhcGVTdHlsZXNfMSA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoc2hhcGVBdHRyc18xKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2ltZycpIHJldHVybjtcbiAgICAgICAgdmFyIGF0dHIgPSBzaGFwZUF0dHJzXzFba2V5XTtcblxuICAgICAgICBpZiAoYXR0ciAmJiBfdHlwZW9mKGF0dHIpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGtleVNoYXBlU3R5bGVzXzFba2V5XSA9IGNsb25lKGF0dHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleVNoYXBlU3R5bGVzXzFba2V5XSA9IGF0dHI7XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyDlt7LmnInmoLflvI8gLSDopoHlj5bmtojnmoTnirbmgIHnmoTmoLflvI9cblxuICAgICAgdmFyIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZSA9IHt9O1xuXG4gICAgICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIF9sb29wXzMocCkge1xuICAgICAgICB2YXIgc3R5bGUgPSBzdHlsZXNbcF07XG5cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpICYmICFBUlJPV1MuaW5jbHVkZXMocCkpIHtcbiAgICAgICAgICB2YXIgc3ViU2hhcGVfMSA9IGdyb3VwWydzaGFwZU1hcCddW3BdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZS5nZXQoJ25hbWUnKSA9PT0gcDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChzdWJTaGFwZV8xKSB7XG4gICAgICAgICAgICB2YXIgc3ViU2hhcGVTdHlsZXNfMSA9IGNsb25lQmVzaWRlc0ltZyhzdWJTaGFwZV8xLmF0dHIoKSk7XG4gICAgICAgICAgICBlYWNoKHN0eWxlLCBmdW5jdGlvbiAodiwga2V5KSB7XG4gICAgICAgICAgICAgIGlmIChwID09PSBrZXlTaGFwZU5hbWVfMSAmJiBrZXlTaGFwZVN0eWxlc18xW2tleV0gJiYgIWtlcHRBdHRyc1trZXldKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGVzXzFba2V5XTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVfMSA9IG9yaWdpblN0eWxlXzFbcF1ba2V5XSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtrZXldO1xuICAgICAgICAgICAgICAgIHNoYXBlLmF0dHIoa2V5LCB2YWx1ZV8xKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJTaGFwZVN0eWxlc18xW2tleV0gfHwgc3ViU2hhcGVTdHlsZXNfMVtrZXldID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1YlNoYXBlU3R5bGVzXzFba2V5XTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVfMiA9IG9yaWdpblN0eWxlXzFbcF1ba2V5XSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtrZXldO1xuICAgICAgICAgICAgICAgIHN1YlNoYXBlXzEuYXR0cihrZXksIHZhbHVlXzIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZVtwXSA9IHN1YlNoYXBlU3R5bGVzXzE7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChrZXlTaGFwZVN0eWxlc18xW3BdICYmICFrZXB0QXR0cnNbcF0pIHtcbiAgICAgICAgICAgIGRlbGV0ZSBrZXlTaGFwZVN0eWxlc18xW3BdO1xuICAgICAgICAgICAgdmFyIHZhbHVlXzMgPSBvcmlnaW5TdHlsZV8xW3BdIHx8IChvcmlnaW5TdHlsZV8xW2tleVNoYXBlTmFtZV8xXSA/IG9yaWdpblN0eWxlXzFba2V5U2hhcGVOYW1lXzFdW3BdIDogdW5kZWZpbmVkKSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtwXTtcbiAgICAgICAgICAgIHNoYXBlLmF0dHIocCwgdmFsdWVfMyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9OyAvLyBzdHlsZXMg5Li66KaB5Y+W5raI55qE54q25oCB55qE5qC35byPXG5cblxuICAgICAgZm9yICh2YXIgcCBpbiBzdHlsZXMpIHtcbiAgICAgICAgX2xvb3BfMyhwKTtcbiAgICAgIH0gLy8g5LuO5Zu+5YWD57Sg546w5pyJ55qE5qC35byP5Lit5Yig6Zmk5pys5qyh6KaB5Y+W5raI55qEIHN0YXRlcyDkuK3lrZjlnKjnmoTlsZ7mgKflgLzlkI7vvIxcbiAgICAgIC8vIOWmguaenCBrZXlTaGFwZSDmnIkgbmFtZSDlsZ7mgKfvvIzliJkgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlIOeahOagvOW8j+S4uiB7IGtleVNoYXBlTmFtZToge30gfVxuICAgICAgLy8g5ZCm5YiZ5Li65pmu6YCa5a+56LGhXG5cblxuICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICBtaXgoZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlLCBrZXlTaGFwZVN0eWxlc18xKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZVtrZXlTaGFwZU5hbWVfMV0gPSBrZXlTaGFwZVN0eWxlc18xO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gZW5hYmxlU3RhdGVzU3R5bGUpIHtcbiAgICAgICAgaWYgKGtlcHRBdHRyc1trZXldKSBjb250aW51ZTtcbiAgICAgICAgdmFyIGVuYWJsZVN0eWxlID0gZW5hYmxlU3RhdGVzU3R5bGVba2V5XTtcblxuICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZW5hYmxlU3R5bGUpIHx8IEFSUk9XUy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgLy8g5oqK5qC35byP5bGe5oCnbWVyZ2XliLBrZXlTaGFwZeS4rVxuICAgICAgICAgIGlmICgha2V5U2hhcGVOYW1lXzEpIHtcbiAgICAgICAgICAgIG1peChvcmlnaW5TdHlsZV8xLCAoX2EgPSB7fSwgX2Fba2V5XSA9IGVuYWJsZVN0eWxlLCBfYSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtaXgob3JpZ2luU3R5bGVfMVtrZXlTaGFwZU5hbWVfMV0sIChfYiA9IHt9LCBfYltrZXldID0gZW5hYmxlU3R5bGUsIF9iKSk7XG4gICAgICAgICAgICBkZWxldGUgb3JpZ2luU3R5bGVfMVtrZXldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlbGV0ZSBlbmFibGVTdGF0ZXNTdHlsZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBvcmlnaW5zdHlsZXMgPSB7fTtcbiAgICAgIGRlZXBNaXgob3JpZ2luc3R5bGVzLCBvcmlnaW5TdHlsZV8xLCBmaWx0ZXREaXNhYmxlU3RhdGVzU3R5bGUsIGVuYWJsZVN0YXRlc1N0eWxlKTtcbiAgICAgIHZhciBrZXlTaGFwZVNldHRlZCA9IGZhbHNlO1xuXG4gICAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIF9sb29wXzQob3JpZ2luS2V5KSB7XG4gICAgICAgIHZhciBfZSwgX2Y7XG5cbiAgICAgICAgdmFyIHN0eWxlID0gb3JpZ2luc3R5bGVzW29yaWdpbktleV07XG5cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpICYmICFBUlJPV1MuaW5jbHVkZXMob3JpZ2luS2V5KSkge1xuICAgICAgICAgIHZhciBzdWJTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddW29yaWdpbktleV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSBvcmlnaW5LZXk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoc3ViU2hhcGUpIHtcbiAgICAgICAgICAgIC8vIFRoZSB0ZXh0J3MgcG9zaXRpb24gYW5kIG1hdHJpeCBpcyBub3QgYWxsb3dlZCB0byBiZSBhZmZlY3RlZCBieSBzdGF0ZXNcbiAgICAgICAgICAgIGlmIChzdWJTaGFwZS5nZXQoJ3R5cGUnKSA9PT0gJ3RleHQnIHx8IHN1YlNoYXBlLmdldCgnbGFiZWxSZWxhdGVkJykpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlLng7XG4gICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS55O1xuICAgICAgICAgICAgICBkZWxldGUgc3R5bGUubWF0cml4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3JpZ2luS2V5ID09PSBrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS5yO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAga2V5U2hhcGVTZXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWtleVNoYXBlU2V0dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlXzQgPSBzdHlsZSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtvcmlnaW5LZXldOyAvLyDlvZPmm7TmlrAgY29tYm8g54q25oCB5pe277yM5b2T5LiN5a2Y5ZyoIGtleVNoYXBlTmFtZSDml7blgJnvvIzliJnorqTkuLrmmK/orr7nva7liLAga2V5U2hhcGUg5LiK6Z2i55qEXG5cbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBzaGFwZS5hdHRyKChfZSA9IHt9LCBfZVtvcmlnaW5LZXldID0gdmFsdWVfNCwgX2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUuYXR0cigoX2YgPSB7fSwgX2Zbb3JpZ2luS2V5XSA9IHZhbHVlXzQsIF9mKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBvcmlnaW5LZXkgaW4gb3JpZ2luc3R5bGVzKSB7XG4gICAgICAgIF9sb29wXzQob3JpZ2luS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluS4jeWQjOeKtuaAgeS4i+eahOagt+W8j1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIE5vZGXmiJZFZGdl55qE5a6e5L6LXG4gICAqIEByZXR1cm4ge29iamVjdH0g5qC35byPXG4gICAqL1xuICBnZXRTdGF0ZVN0eWxlOiBmdW5jdGlvbiBnZXRTdGF0ZVN0eWxlKG5hbWUsIGl0ZW0pIHtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHZhciBfYSA9IHRoaXMuZ2V0T3B0aW9ucyhtb2RlbCksXG4gICAgICAgIHN0YXRlU3R5bGVzID0gX2Euc3RhdGVTdHlsZXMsXG4gICAgICAgIF9iID0gX2Euc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG5cbiAgICB2YXIgbW9kZWxTdGF0ZVN0eWxlID0gbW9kZWwuc3RhdGVTdHlsZXMgPyBtb2RlbC5zdGF0ZVN0eWxlc1tuYW1lXSA6IHN0YXRlU3R5bGVzICYmIHN0YXRlU3R5bGVzW25hbWVdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBjbG9uZShtb2RlbFN0YXRlU3R5bGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtaXgoe30sIHN0eWxlLCBtb2RlbFN0YXRlU3R5bGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmjqfliLbngrlcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g6ZSa54K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ6ZSa54K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyhjZmcpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIGFuY2hvclBvaW50cyA9IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuYW5jaG9yUG9pbnRzKSB8fCAoKF9hID0gdGhpcy5nZXRDdXN0b21Db25maWcoY2ZnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFuY2hvclBvaW50cykgfHwgKChfYiA9IHRoaXMub3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFuY2hvclBvaW50cyk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50cztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/shapeBase.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/element/xml.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g6-core/es/element/xml.js ***!
\******************************************************/
/*! exports provided: xmlDataRenderer, parseXML, getBBox, generateTarget, compareTwoTarget, createNodeFromXML */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"xmlDataRenderer\", function() { return xmlDataRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseXML\", function() { return parseXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateTarget\", function() { return generateTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compareTwoTarget\", function() { return compareTwoTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNodeFromXML\", function() { return createNodeFromXML; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * @fileOverview 从xml建立自定义Node,包含update\n * @author xuzhi.mxz@antfin.com\n */\n\n\n\n/**\n * 一种更宽松的JSON 解析,如果遇到不符合规范的字段会直接转为字符串\n * @param text json 内容\n */\n\nfunction looseJSONParse(text) {\n if (typeof text !== 'string') {\n return text;\n }\n\n var safeParse = function safeParse(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n try {\n return JSON.parse(str.trim());\n } catch (e) {\n return str.trim();\n }\n };\n\n var firstAttempt = safeParse(text);\n\n if (typeof firstAttempt !== 'string') {\n return firstAttempt;\n }\n\n var tail = function tail(arr) {\n return arr[arr.length - 1];\n };\n\n var str = text.trim();\n var objectStack = [];\n var syntaxStack = [];\n\n var isLastPair = function isLastPair() {\n var syntaxes = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n syntaxes[_i] = arguments[_i];\n }\n\n return syntaxes.some(function (syntax) {\n return tail(syntaxStack) === syntax;\n });\n };\n\n var getValueStore = function getValueStore() {\n return tail(objectStack);\n };\n\n var rst = null;\n var i = 0;\n var temp = '';\n\n while (i < str.length) {\n var nowChar = str[i];\n var isInString = isLastPair('\"', \"'\");\n\n if (!isInString && !nowChar.trim()) {\n i += 1;\n continue;\n }\n\n var isLastTranslate = str[i - 1] === '\\\\';\n var isInObject = isLastPair('}');\n var isInArray = isLastPair(']');\n var isWaitingValue = isLastPair(',');\n var tempArr = getValueStore();\n\n if (isInString) {\n if (tail(syntaxStack) === nowChar && !isLastTranslate) {\n syntaxStack.pop();\n var value = safeParse(temp);\n tempArr.push(value);\n rst = value;\n temp = '';\n } else {\n temp += nowChar;\n }\n } else if (isInArray && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n } else if (isInObject && nowChar === ':') {\n syntaxStack.push(',');\n\n if (temp) {\n tempArr.push(temp);\n temp = '';\n }\n } else if (isWaitingValue && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n syntaxStack.pop();\n } else if (nowChar === '}' && (isInObject || isWaitingValue)) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n if (isWaitingValue) {\n syntaxStack.pop();\n }\n\n var obj = {};\n\n for (var c = 1; c < tempArr.length; c += 2) {\n obj[tempArr[c - 1]] = tempArr[c];\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(obj);\n }\n\n syntaxStack.pop();\n rst = obj;\n } else if (nowChar === ']' && isInArray) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(tempArr);\n }\n\n syntaxStack.pop();\n rst = tempArr;\n } else if (nowChar === '{') {\n objectStack.push([]);\n syntaxStack.push('}');\n } else if (nowChar === '[') {\n objectStack.push([]);\n syntaxStack.push(']');\n } else if (nowChar === '\"') {\n syntaxStack.push('\"');\n } else if (nowChar === \"'\") {\n syntaxStack.push(\"'\");\n } else {\n temp += nowChar;\n }\n\n i += 1;\n }\n\n return rst || temp;\n}\n\nvar keyConvert = function keyConvert(str) {\n return str.split('-').reduce(function (a, b) {\n return a + b.charAt(0).toUpperCase() + b.slice(1);\n });\n};\n/**\n * 简单的一个{{}}模板渲染,不包含任何复杂语法\n * @param xml\n */\n\n\nvar xmlDataRenderer = function xmlDataRenderer(xml) {\n return function (data) {\n var len = xml.length;\n var arr = [];\n var i = 0;\n var tmp = '';\n\n while (i < len) {\n if (xml[i] === '{' && xml[i + 1] === '{') {\n arr.push(tmp);\n tmp = '';\n i += 2;\n } else if (xml[i] === '}' && xml[i + 1] === '}') {\n if (arr.length) {\n var last = arr.pop();\n tmp = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(data, tmp, last.endsWith('=') ? \"\\\"{\".concat(tmp, \"}\\\"\") : tmp);\n arr.push(last + tmp);\n }\n\n i += 2;\n tmp = '';\n } else {\n tmp += xml[i];\n i += 1;\n }\n }\n\n arr.push(tmp);\n return arr.map(function (e, index) {\n return arr[index - 1] && arr[index - 1].endsWith('=') ? \"\\\"{\".concat(e, \"}\\\"\") : e;\n }).join('');\n };\n};\n/**\n * 解析XML,并转化为相应的JSON结构\n * @param xml xml解析后的节点\n */\n\nfunction parseXML(xml, cfg) {\n var attrs = {};\n var keys = xml.getAttributeNames && xml.getAttributeNames() || [];\n var children = xml.children && Array.from(xml.children).map(function (e) {\n return parseXML(e, cfg);\n });\n var rst = {};\n var tagName = xml.tagName ? xml.tagName.toLowerCase() : 'group';\n\n if (tagName === 'text') {\n attrs.text = xml.innerText;\n }\n\n rst.type = tagName;\n\n if (tagName === 'img') {\n rst.type = 'image';\n }\n\n Array.from(keys).forEach(function (k) {\n var key = keyConvert(k);\n var val = xml.getAttribute(k);\n\n try {\n if (key === 'style' || key === 'attrs') {\n var style = looseJSONParse(val);\n attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), style);\n } else {\n rst[key] = looseJSONParse(val);\n }\n } catch (e) {\n if (key === 'style') {\n throw e;\n }\n\n rst[key] = val;\n }\n });\n rst.attrs = attrs;\n\n if (cfg && cfg.style && rst.name && _typeof(cfg.style[rst.name]) === 'object') {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style[rst.name]);\n }\n\n if (cfg && cfg.style && rst.keyshape) {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style);\n }\n\n if (children.length) {\n rst.children = children;\n }\n\n return rst;\n}\n/**\n * 根据偏移量和内部节点最终的bounding box来得出该shape最终的bbox\n */\n\nfunction getBBox(node, offset, chilrenBBox) {\n var _a = node.attrs,\n attrs = _a === void 0 ? {} : _a;\n var bbox = {\n x: offset.x || 0,\n y: offset.y || 0,\n width: chilrenBBox.width || 0,\n height: chilrenBBox.height || 0\n };\n var shapeHeight, shapeWidth;\n\n switch (node.type) {\n case 'maker':\n case 'circle':\n if (attrs.r) {\n shapeWidth = 2 * attrs.r;\n shapeHeight = 2 * attrs.r;\n }\n\n break;\n\n case 'text':\n if (attrs.text) {\n shapeWidth = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getTextSize\"])(attrs.text, attrs.fontSize || 12)[0];\n shapeHeight = 16;\n bbox.y += shapeHeight;\n bbox.height = shapeHeight;\n bbox.width = shapeWidth;\n node.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n fontSize: 12,\n fill: '#000'\n }, attrs);\n }\n\n break;\n\n default:\n if (attrs.width) {\n shapeWidth = attrs.width;\n }\n\n if (attrs.height) {\n shapeHeight = attrs.height;\n }\n\n }\n\n if (shapeHeight >= 0) {\n bbox.height = shapeHeight;\n }\n\n if (shapeWidth >= 0) {\n bbox.width = shapeWidth;\n }\n\n if (attrs.marginTop) {\n bbox.y += attrs.marginTop;\n }\n\n if (attrs.marginLeft) {\n bbox.x += attrs.marginLeft;\n }\n\n return bbox;\n}\n/**\n * 把从xml计算出的结构填上位置信息,补全attrs\n * @param target\n * @param lastOffset\n */\n\nfunction generateTarget(target, lastOffset) {\n var _a;\n\n if (lastOffset === void 0) {\n lastOffset = {\n x: 0,\n y: 0\n };\n }\n\n var defaultBbox = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, lastOffset);\n\n if ((_a = target.children) === null || _a === void 0 ? void 0 : _a.length) {\n var _b = target.attrs,\n attrs = _b === void 0 ? {} : _b;\n var marginTop = attrs.marginTop;\n\n var offset = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, lastOffset);\n\n if (marginTop) {\n offset.y += marginTop;\n }\n\n for (var index = 0; index < target.children.length; index++) {\n target.children[index].attrs.key = \"\".concat(attrs.key || 'root', \" -\").concat(index, \" \");\n var node = generateTarget(target.children[index], offset);\n\n if (node.bbox) {\n var bbox = node.bbox;\n\n if (node.attrs.next === 'inline') {\n offset.x += node.bbox.width;\n } else {\n offset.y += node.bbox.height;\n }\n\n if (bbox.width + bbox.x > defaultBbox.width) {\n defaultBbox.width = bbox.width + bbox.x;\n }\n\n if (bbox.height + bbox.y > defaultBbox.height) {\n defaultBbox.height = bbox.height + bbox.y;\n }\n }\n }\n }\n\n target.bbox = getBBox(target, lastOffset, defaultBbox);\n target.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, target.attrs), target.bbox);\n return target;\n}\n/**\n * 对比前后两个最终计算出来的node,并对比出最小改动,\n * 动作: 'add' 添加节点 | ’delete‘ 删除节点 | ’change‘ 改变节点attrs | 'restructure' 重构节点\n * @param nowTarget\n * @param formerTarget\n */\n\nfunction compareTwoTarget(nowTarget, formerTarget) {\n var _a, _b, _c, _d;\n\n var type = (nowTarget || {}).type;\n var key = ((formerTarget === null || formerTarget === void 0 ? void 0 : formerTarget.attrs) || {}).key;\n\n if (key && nowTarget) {\n nowTarget.attrs.key = key;\n }\n\n if (!nowTarget && formerTarget) {\n return {\n action: 'delete',\n val: formerTarget,\n type: type,\n key: key\n };\n }\n\n if (nowTarget && !formerTarget) {\n return {\n action: 'add',\n val: nowTarget,\n type: type\n };\n }\n\n if (!nowTarget && !formerTarget) {\n return {\n action: 'same',\n type: type\n };\n }\n\n var children = [];\n\n if (((_a = nowTarget.children) === null || _a === void 0 ? void 0 : _a.length) > 0 || ((_b = formerTarget.children) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n var length_1 = Math.max((_c = nowTarget.children) === null || _c === void 0 ? void 0 : _c.length, (_d = formerTarget.children) === null || _d === void 0 ? void 0 : _d.length);\n var formerChilren = formerTarget.children || [];\n var nowChilren = nowTarget.children || [];\n\n for (var index = 0; index < length_1; index += 1) {\n children.push(compareTwoTarget(nowChilren[index], formerChilren[index]));\n }\n }\n\n var formerKeys = Object.keys(formerTarget.attrs);\n var nowKeys = Object.keys(nowTarget.attrs);\n\n if (formerTarget.type !== nowTarget.type) {\n return {\n action: 'restructure',\n nowTarget: nowTarget,\n formerTarget: formerTarget,\n key: key,\n children: children\n };\n }\n\n if (formerKeys.filter(function (e) {\n return e !== 'children';\n }).some(function (e) {\n return nowTarget.attrs[e] !== formerTarget.attrs[e] || !nowKeys.includes(e);\n })) {\n return {\n action: 'change',\n val: nowTarget,\n children: children,\n type: type,\n key: key\n };\n }\n\n return {\n action: 'same',\n children: children,\n type: type,\n key: key\n };\n}\n/**\n * 根据xml或者返回xml的函数构建自定义节点的结构\n * @param gen\n */\n\nfunction createNodeFromXML(gen) {\n var structures = {};\n\n var compileXML = function compileXML(cfg) {\n var rawStr = typeof gen === 'function' ? gen(cfg) : gen;\n var target = xmlDataRenderer(rawStr)(cfg);\n var xmlParser = document.createElement('div');\n xmlParser.innerHTML = target;\n var xml = xmlParser.children[0];\n var result = generateTarget(parseXML(xml, cfg));\n xmlParser.remove();\n return result;\n };\n\n return {\n draw: function draw(cfg, group) {\n var resultTarget = compileXML(cfg);\n var keyshape = group;\n\n var renderTarget = function renderTarget(target) {\n var _a = target.attrs,\n attrs = _a === void 0 ? {} : _a,\n bbox = target.bbox,\n type = target.type,\n children = target.children,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(target, [\"attrs\", \"bbox\", \"type\", \"children\"]);\n\n if (target.type !== 'group') {\n var shape = group.addShape(target.type, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n attrs: attrs,\n origin: {\n bbox: bbox,\n type: type,\n children: children\n }\n }, rest));\n\n if (target.keyshape) {\n keyshape = shape;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return renderTarget(n);\n });\n }\n };\n\n renderTarget(resultTarget);\n structures[cfg.id] = [resultTarget];\n return keyshape;\n },\n update: function update(cfg, node) {\n if (!structures[cfg.id]) {\n structures[cfg.id] = [];\n }\n\n var container = node.getContainer();\n var children = container.get('children');\n var newTarget = compileXML(cfg);\n var lastTarget = structures[cfg.id].pop();\n var diffResult = compareTwoTarget(newTarget, lastTarget);\n\n var addShape = function addShape(shape) {\n var _a;\n\n if (shape.type !== 'group') {\n container.addShape(shape.type, {\n attrs: shape.attrs\n });\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return addShape(e);\n });\n }\n };\n\n var delShape = function delShape(shape) {\n var _a;\n\n var targetShape = children.find(function (e) {\n return e.attrs.key === shape.attrs.key;\n });\n\n if (targetShape) {\n container.removeChild(targetShape);\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return delShape(e);\n });\n }\n };\n\n var updateTarget = function updateTarget(target) {\n var key = target.key;\n\n if (target.type !== 'group') {\n var targetShape = children.find(function (e) {\n return e.attrs.key === key;\n });\n\n switch (target.action) {\n case 'change':\n if (targetShape) {\n var originAttr = target.val.keyshape ? node.getOriginStyle() : {};\n targetShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, originAttr), target.val.attrs));\n }\n\n break;\n\n case 'add':\n addShape(target.val);\n break;\n\n case 'delete':\n delShape(target.val);\n break;\n\n case 'restructure':\n delShape(target.formerTarget);\n addShape(target.nowTarget);\n break;\n\n default:\n break;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return updateTarget(n);\n });\n }\n };\n\n updateTarget(diffResult);\n structures[cfg.id].push(newTarget);\n },\n getAnchorPoints: function getAnchorPoints() {\n return [[0, 0.5], [1, 0.5], [0.5, 1], [0.5, 0]];\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3htbC5qcz85NGQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQXVCLDJCQUEyQixzR0FBc0csbUJBQW1CLEVBQUUsbUJBQW1CLDZIQUE2SCxFQUFFLGVBQWU7O0FBRTlVO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ1I7QUFDYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyx3QkFBd0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssd0JBQXdCO0FBQzdCO0FBQ0EseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsT0FBTyx1QkFBdUIsc0JBQXNCO0FBQ3BEO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUcscUNBQXFDLGdCQUFnQjtBQUN4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtFQUFrRSxjQUFjO0FBQ2hGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEMsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxnQkFBZ0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3BDOztBQUVBO0FBQ0EsZ0JBQWdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNwQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsaUVBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGtDQUFrQztBQUNsQzs7QUFFQSxpQkFBaUIsc0RBQVEsR0FBRzs7QUFFNUI7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixnQ0FBZ0M7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUEsNkJBQTZCO0FBQzdCLG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0RBQU07O0FBRXpCO0FBQ0Esa0RBQWtELHNEQUFRO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyRDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQveG1sLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH0sIF90eXBlb2Yob2JqKTsgfVxuXG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcg5LuOeG1s5bu656uL6Ieq5a6a5LmJTm9kZe+8jOWMheWQq3VwZGF0ZVxuICogQGF1dGhvciB4dXpoaS5teHpAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldFRleHRTaXplIH0gZnJvbSAnLi4vdXRpbC9ncmFwaGljJztcbi8qKlxuICog5LiA56eN5pu05a695p2+55qESlNPTiDop6PmnpDvvIzlpoLmnpzpgYfliLDkuI3nrKblkIjop4TojIPnmoTlrZfmrrXkvJrnm7TmjqXovazkuLrlrZfnrKbkuLJcbiAqIEBwYXJhbSB0ZXh0IGpzb24g5YaF5a65XG4gKi9cblxuZnVuY3Rpb24gbG9vc2VKU09OUGFyc2UodGV4dCkge1xuICBpZiAodHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICB2YXIgc2FmZVBhcnNlID0gZnVuY3Rpb24gc2FmZVBhcnNlKHN0cikge1xuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyLnRyaW0oKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHN0ci50cmltKCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBmaXJzdEF0dGVtcHQgPSBzYWZlUGFyc2UodGV4dCk7XG5cbiAgaWYgKHR5cGVvZiBmaXJzdEF0dGVtcHQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZpcnN0QXR0ZW1wdDtcbiAgfVxuXG4gIHZhciB0YWlsID0gZnVuY3Rpb24gdGFpbChhcnIpIHtcbiAgICByZXR1cm4gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgfTtcblxuICB2YXIgc3RyID0gdGV4dC50cmltKCk7XG4gIHZhciBvYmplY3RTdGFjayA9IFtdO1xuICB2YXIgc3ludGF4U3RhY2sgPSBbXTtcblxuICB2YXIgaXNMYXN0UGFpciA9IGZ1bmN0aW9uIGlzTGFzdFBhaXIoKSB7XG4gICAgdmFyIHN5bnRheGVzID0gW107XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgc3ludGF4ZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ludGF4ZXMuc29tZShmdW5jdGlvbiAoc3ludGF4KSB7XG4gICAgICByZXR1cm4gdGFpbChzeW50YXhTdGFjaykgPT09IHN5bnRheDtcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgZ2V0VmFsdWVTdG9yZSA9IGZ1bmN0aW9uIGdldFZhbHVlU3RvcmUoKSB7XG4gICAgcmV0dXJuIHRhaWwob2JqZWN0U3RhY2spO1xuICB9O1xuXG4gIHZhciByc3QgPSBudWxsO1xuICB2YXIgaSA9IDA7XG4gIHZhciB0ZW1wID0gJyc7XG5cbiAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoKSB7XG4gICAgdmFyIG5vd0NoYXIgPSBzdHJbaV07XG4gICAgdmFyIGlzSW5TdHJpbmcgPSBpc0xhc3RQYWlyKCdcIicsIFwiJ1wiKTtcblxuICAgIGlmICghaXNJblN0cmluZyAmJiAhbm93Q2hhci50cmltKCkpIHtcbiAgICAgIGkgKz0gMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBpc0xhc3RUcmFuc2xhdGUgPSBzdHJbaSAtIDFdID09PSAnXFxcXCc7XG4gICAgdmFyIGlzSW5PYmplY3QgPSBpc0xhc3RQYWlyKCd9Jyk7XG4gICAgdmFyIGlzSW5BcnJheSA9IGlzTGFzdFBhaXIoJ10nKTtcbiAgICB2YXIgaXNXYWl0aW5nVmFsdWUgPSBpc0xhc3RQYWlyKCcsJyk7XG4gICAgdmFyIHRlbXBBcnIgPSBnZXRWYWx1ZVN0b3JlKCk7XG5cbiAgICBpZiAoaXNJblN0cmluZykge1xuICAgICAgaWYgKHRhaWwoc3ludGF4U3RhY2spID09PSBub3dDaGFyICYmICFpc0xhc3RUcmFuc2xhdGUpIHtcbiAgICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNhZmVQYXJzZSh0ZW1wKTtcbiAgICAgICAgdGVtcEFyci5wdXNoKHZhbHVlKTtcbiAgICAgICAgcnN0ID0gdmFsdWU7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXAgKz0gbm93Q2hhcjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzSW5BcnJheSAmJiBub3dDaGFyID09PSAnLCcpIHtcbiAgICAgIGlmICh0ZW1wKSB7XG4gICAgICAgIHRlbXBBcnIucHVzaChzYWZlUGFyc2UodGVtcCkpO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0luT2JqZWN0ICYmIG5vd0NoYXIgPT09ICc6Jykge1xuICAgICAgc3ludGF4U3RhY2sucHVzaCgnLCcpO1xuXG4gICAgICBpZiAodGVtcCkge1xuICAgICAgICB0ZW1wQXJyLnB1c2godGVtcCk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2FpdGluZ1ZhbHVlICYmIG5vd0NoYXIgPT09ICcsJykge1xuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHNhZmVQYXJzZSh0ZW1wKSk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cblxuICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgfSBlbHNlIGlmIChub3dDaGFyID09PSAnfScgJiYgKGlzSW5PYmplY3QgfHwgaXNXYWl0aW5nVmFsdWUpKSB7XG4gICAgICBpZiAodGVtcCkge1xuICAgICAgICB0ZW1wQXJyLnB1c2goc2FmZVBhcnNlKHRlbXApKTtcbiAgICAgICAgdGVtcCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNXYWl0aW5nVmFsdWUpIHtcbiAgICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBvYmogPSB7fTtcblxuICAgICAgZm9yICh2YXIgYyA9IDE7IGMgPCB0ZW1wQXJyLmxlbmd0aDsgYyArPSAyKSB7XG4gICAgICAgIG9ialt0ZW1wQXJyW2MgLSAxXV0gPSB0ZW1wQXJyW2NdO1xuICAgICAgfVxuXG4gICAgICBvYmplY3RTdGFjay5wb3AoKTtcblxuICAgICAgaWYgKG9iamVjdFN0YWNrLmxlbmd0aCkge1xuICAgICAgICB0YWlsKG9iamVjdFN0YWNrKS5wdXNoKG9iaik7XG4gICAgICB9XG5cbiAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgcnN0ID0gb2JqO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ10nICYmIGlzSW5BcnJheSkge1xuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHNhZmVQYXJzZSh0ZW1wKSk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cblxuICAgICAgb2JqZWN0U3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChvYmplY3RTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdGFpbChvYmplY3RTdGFjaykucHVzaCh0ZW1wQXJyKTtcbiAgICAgIH1cblxuICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgICByc3QgPSB0ZW1wQXJyO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ3snKSB7XG4gICAgICBvYmplY3RTdGFjay5wdXNoKFtdKTtcbiAgICAgIHN5bnRheFN0YWNrLnB1c2goJ30nKTtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09ICdbJykge1xuICAgICAgb2JqZWN0U3RhY2sucHVzaChbXSk7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKCddJyk7XG4gICAgfSBlbHNlIGlmIChub3dDaGFyID09PSAnXCInKSB7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKCdcIicpO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gXCInXCIpIHtcbiAgICAgIHN5bnRheFN0YWNrLnB1c2goXCInXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZW1wICs9IG5vd0NoYXI7XG4gICAgfVxuXG4gICAgaSArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHJzdCB8fCB0ZW1wO1xufVxuXG52YXIga2V5Q29udmVydCA9IGZ1bmN0aW9uIGtleUNvbnZlcnQoc3RyKSB7XG4gIHJldHVybiBzdHIuc3BsaXQoJy0nKS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYSArIGIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBiLnNsaWNlKDEpO1xuICB9KTtcbn07XG4vKipcbiAqIOeugOWNleeahOS4gOS4qnt7fX3mqKHmnb/muLLmn5PvvIzkuI3ljIXlkKvku7vkvZXlpI3mnYLor63ms5VcbiAqIEBwYXJhbSB4bWxcbiAqL1xuXG5cbmV4cG9ydCB2YXIgeG1sRGF0YVJlbmRlcmVyID0gZnVuY3Rpb24geG1sRGF0YVJlbmRlcmVyKHhtbCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgbGVuID0geG1sLmxlbmd0aDtcbiAgICB2YXIgYXJyID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciB0bXAgPSAnJztcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBpZiAoeG1sW2ldID09PSAneycgJiYgeG1sW2kgKyAxXSA9PT0gJ3snKSB7XG4gICAgICAgIGFyci5wdXNoKHRtcCk7XG4gICAgICAgIHRtcCA9ICcnO1xuICAgICAgICBpICs9IDI7XG4gICAgICB9IGVsc2UgaWYgKHhtbFtpXSA9PT0gJ30nICYmIHhtbFtpICsgMV0gPT09ICd9Jykge1xuICAgICAgICBpZiAoYXJyLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gYXJyLnBvcCgpO1xuICAgICAgICAgIHRtcCA9IGdldChkYXRhLCB0bXAsIGxhc3QuZW5kc1dpdGgoJz0nKSA/IFwiXFxcIntcIi5jb25jYXQodG1wLCBcIn1cXFwiXCIpIDogdG1wKTtcbiAgICAgICAgICBhcnIucHVzaChsYXN0ICsgdG1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgdG1wID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0bXAgKz0geG1sW2ldO1xuICAgICAgICBpICs9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXJyLnB1c2godG1wKTtcbiAgICByZXR1cm4gYXJyLm1hcChmdW5jdGlvbiAoZSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBhcnJbaW5kZXggLSAxXSAmJiBhcnJbaW5kZXggLSAxXS5lbmRzV2l0aCgnPScpID8gXCJcXFwie1wiLmNvbmNhdChlLCBcIn1cXFwiXCIpIDogZTtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTtcbn07XG4vKipcbiAqIOino+aekFhNTO+8jOW5tui9rOWMluS4uuebuOW6lOeahEpTT07nu5PmnoRcbiAqIEBwYXJhbSB4bWwgeG1s6Kej5p6Q5ZCO55qE6IqC54K5XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWE1MKHhtbCwgY2ZnKSB7XG4gIHZhciBhdHRycyA9IHt9O1xuICB2YXIga2V5cyA9IHhtbC5nZXRBdHRyaWJ1dGVOYW1lcyAmJiB4bWwuZ2V0QXR0cmlidXRlTmFtZXMoKSB8fCBbXTtcbiAgdmFyIGNoaWxkcmVuID0geG1sLmNoaWxkcmVuICYmIEFycmF5LmZyb20oeG1sLmNoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gcGFyc2VYTUwoZSwgY2ZnKTtcbiAgfSk7XG4gIHZhciByc3QgPSB7fTtcbiAgdmFyIHRhZ05hbWUgPSB4bWwudGFnTmFtZSA/IHhtbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiAnZ3JvdXAnO1xuXG4gIGlmICh0YWdOYW1lID09PSAndGV4dCcpIHtcbiAgICBhdHRycy50ZXh0ID0geG1sLmlubmVyVGV4dDtcbiAgfVxuXG4gIHJzdC50eXBlID0gdGFnTmFtZTtcblxuICBpZiAodGFnTmFtZSA9PT0gJ2ltZycpIHtcbiAgICByc3QudHlwZSA9ICdpbWFnZSc7XG4gIH1cblxuICBBcnJheS5mcm9tKGtleXMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICB2YXIga2V5ID0ga2V5Q29udmVydChrKTtcbiAgICB2YXIgdmFsID0geG1sLmdldEF0dHJpYnV0ZShrKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnIHx8IGtleSA9PT0gJ2F0dHJzJykge1xuICAgICAgICB2YXIgc3R5bGUgPSBsb29zZUpTT05QYXJzZSh2YWwpO1xuICAgICAgICBhdHRycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdFtrZXldID0gbG9vc2VKU09OUGFyc2UodmFsKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG5cbiAgICAgIHJzdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJzdC5hdHRycyA9IGF0dHJzO1xuXG4gIGlmIChjZmcgJiYgY2ZnLnN0eWxlICYmIHJzdC5uYW1lICYmIF90eXBlb2YoY2ZnLnN0eWxlW3JzdC5uYW1lXSkgPT09ICdvYmplY3QnKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZVtyc3QubmFtZV0pO1xuICB9XG5cbiAgaWYgKGNmZyAmJiBjZmcuc3R5bGUgJiYgcnN0LmtleXNoYXBlKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZSk7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgcnN0LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH1cblxuICByZXR1cm4gcnN0O1xufVxuLyoqXG4gKiDmoLnmja7lgY/np7vph4/lkozlhoXpg6joioLngrnmnIDnu4jnmoRib3VuZGluZyBib3jmnaXlvpflh7ror6VzaGFwZeacgOe7iOeahGJib3hcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QkJveChub2RlLCBvZmZzZXQsIGNoaWxyZW5CQm94KSB7XG4gIHZhciBfYSA9IG5vZGUuYXR0cnMsXG4gICAgICBhdHRycyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICB2YXIgYmJveCA9IHtcbiAgICB4OiBvZmZzZXQueCB8fCAwLFxuICAgIHk6IG9mZnNldC55IHx8IDAsXG4gICAgd2lkdGg6IGNoaWxyZW5CQm94LndpZHRoIHx8IDAsXG4gICAgaGVpZ2h0OiBjaGlscmVuQkJveC5oZWlnaHQgfHwgMFxuICB9O1xuICB2YXIgc2hhcGVIZWlnaHQsIHNoYXBlV2lkdGg7XG5cbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlICdtYWtlcic6XG4gICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIGlmIChhdHRycy5yKSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSAyICogYXR0cnMucjtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSAyICogYXR0cnMucjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGlmIChhdHRycy50ZXh0KSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSBnZXRUZXh0U2l6ZShhdHRycy50ZXh0LCBhdHRycy5mb250U2l6ZSB8fCAxMilbMF07XG4gICAgICAgIHNoYXBlSGVpZ2h0ID0gMTY7XG4gICAgICAgIGJib3gueSArPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC53aWR0aCA9IHNoYXBlV2lkdGg7XG4gICAgICAgIG5vZGUuYXR0cnMgPSBfX2Fzc2lnbih7XG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZpbGw6ICcjMDAwJ1xuICAgICAgICB9LCBhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChhdHRycy53aWR0aCkge1xuICAgICAgICBzaGFwZVdpZHRoID0gYXR0cnMud2lkdGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgICB9XG5cbiAgfVxuXG4gIGlmIChzaGFwZUhlaWdodCA+PSAwKSB7XG4gICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgfVxuXG4gIGlmIChzaGFwZVdpZHRoID49IDApIHtcbiAgICBiYm94LndpZHRoID0gc2hhcGVXaWR0aDtcbiAgfVxuXG4gIGlmIChhdHRycy5tYXJnaW5Ub3ApIHtcbiAgICBiYm94LnkgKz0gYXR0cnMubWFyZ2luVG9wO1xuICB9XG5cbiAgaWYgKGF0dHJzLm1hcmdpbkxlZnQpIHtcbiAgICBiYm94LnggKz0gYXR0cnMubWFyZ2luTGVmdDtcbiAgfVxuXG4gIHJldHVybiBiYm94O1xufVxuLyoqXG4gKiDmiorku454bWzorqHnrpflh7rnmoTnu5PmnoTloavkuIrkvY3nva7kv6Hmga/vvIzooaXlhahhdHRyc1xuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGxhc3RPZmZzZXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LCBsYXN0T2Zmc2V0KSB7XG4gIHZhciBfYTtcblxuICBpZiAobGFzdE9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgbGFzdE9mZnNldCA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBkZWZhdWx0QmJveCA9IF9fYXNzaWduKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0sIGxhc3RPZmZzZXQpO1xuXG4gIGlmICgoX2EgPSB0YXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICB2YXIgX2IgPSB0YXJnZXQuYXR0cnMsXG4gICAgICAgIGF0dHJzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gICAgdmFyIG1hcmdpblRvcCA9IGF0dHJzLm1hcmdpblRvcDtcblxuICAgIHZhciBvZmZzZXQgPSBfX2Fzc2lnbih7fSwgbGFzdE9mZnNldCk7XG5cbiAgICBpZiAobWFyZ2luVG9wKSB7XG4gICAgICBvZmZzZXQueSArPSBtYXJnaW5Ub3A7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRhcmdldC5jaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRhcmdldC5jaGlsZHJlbltpbmRleF0uYXR0cnMua2V5ID0gXCJcIi5jb25jYXQoYXR0cnMua2V5IHx8ICdyb290JywgXCIgLVwiKS5jb25jYXQoaW5kZXgsIFwiIFwiKTtcbiAgICAgIHZhciBub2RlID0gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LmNoaWxkcmVuW2luZGV4XSwgb2Zmc2V0KTtcblxuICAgICAgaWYgKG5vZGUuYmJveCkge1xuICAgICAgICB2YXIgYmJveCA9IG5vZGUuYmJveDtcblxuICAgICAgICBpZiAobm9kZS5hdHRycy5uZXh0ID09PSAnaW5saW5lJykge1xuICAgICAgICAgIG9mZnNldC54ICs9IG5vZGUuYmJveC53aWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQueSArPSBub2RlLmJib3guaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJib3gud2lkdGggKyBiYm94LnggPiBkZWZhdWx0QmJveC53aWR0aCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LndpZHRoID0gYmJveC53aWR0aCArIGJib3gueDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiYm94LmhlaWdodCArIGJib3gueSA+IGRlZmF1bHRCYm94LmhlaWdodCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LmhlaWdodCA9IGJib3guaGVpZ2h0ICsgYmJveC55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LmJib3ggPSBnZXRCQm94KHRhcmdldCwgbGFzdE9mZnNldCwgZGVmYXVsdEJib3gpO1xuICB0YXJnZXQuYXR0cnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGFyZ2V0LmF0dHJzKSwgdGFyZ2V0LmJib3gpO1xuICByZXR1cm4gdGFyZ2V0O1xufVxuLyoqXG4gKiDlr7nmr5TliY3lkI7kuKTkuKrmnIDnu4jorqHnrpflh7rmnaXnmoRub2Rl77yM5bm25a+55q+U5Ye65pyA5bCP5pS55YqoLFxuICog5Yqo5L2c77yaICdhZGQnIOa3u+WKoOiKgueCuSDvvZwg4oCZZGVsZXRl4oCYIOWIoOmZpOiKgueCuSDvvZwg4oCZY2hhbmdl4oCYIOaUueWPmOiKgueCuWF0dHJzIO+9nCAncmVzdHJ1Y3R1cmUnIOmHjeaehOiKgueCuVxuICogQHBhcmFtIG5vd1RhcmdldFxuICogQHBhcmFtIGZvcm1lclRhcmdldFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHdvVGFyZ2V0KG5vd1RhcmdldCwgZm9ybWVyVGFyZ2V0KSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcblxuICB2YXIgdHlwZSA9IChub3dUYXJnZXQgfHwge30pLnR5cGU7XG4gIHZhciBrZXkgPSAoKGZvcm1lclRhcmdldCA9PT0gbnVsbCB8fCBmb3JtZXJUYXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvcm1lclRhcmdldC5hdHRycykgfHwge30pLmtleTtcblxuICBpZiAoa2V5ICYmIG5vd1RhcmdldCkge1xuICAgIG5vd1RhcmdldC5hdHRycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZiAoIW5vd1RhcmdldCAmJiBmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgIHZhbDogZm9ybWVyVGFyZ2V0LFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGtleToga2V5XG4gICAgfTtcbiAgfVxuXG4gIGlmIChub3dUYXJnZXQgJiYgIWZvcm1lclRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgdmFsOiBub3dUYXJnZXQsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIGlmICghbm93VGFyZ2V0ICYmICFmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnc2FtZScsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gIGlmICgoKF9hID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDAgfHwgKChfYiA9IGZvcm1lclRhcmdldC5jaGlsZHJlbikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPiAwKSB7XG4gICAgdmFyIGxlbmd0aF8xID0gTWF0aC5tYXgoKF9jID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoLCAoX2QgPSBmb3JtZXJUYXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5sZW5ndGgpO1xuICAgIHZhciBmb3JtZXJDaGlscmVuID0gZm9ybWVyVGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuICAgIHZhciBub3dDaGlscmVuID0gbm93VGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aF8xOyBpbmRleCArPSAxKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGNvbXBhcmVUd29UYXJnZXQobm93Q2hpbHJlbltpbmRleF0sIGZvcm1lckNoaWxyZW5baW5kZXhdKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGZvcm1lcktleXMgPSBPYmplY3Qua2V5cyhmb3JtZXJUYXJnZXQuYXR0cnMpO1xuICB2YXIgbm93S2V5cyA9IE9iamVjdC5rZXlzKG5vd1RhcmdldC5hdHRycyk7XG5cbiAgaWYgKGZvcm1lclRhcmdldC50eXBlICE9PSBub3dUYXJnZXQudHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdyZXN0cnVjdHVyZScsXG4gICAgICBub3dUYXJnZXQ6IG5vd1RhcmdldCxcbiAgICAgIGZvcm1lclRhcmdldDogZm9ybWVyVGFyZ2V0LFxuICAgICAga2V5OiBrZXksXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9O1xuICB9XG5cbiAgaWYgKGZvcm1lcktleXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgcmV0dXJuIGUgIT09ICdjaGlsZHJlbic7XG4gIH0pLnNvbWUoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gbm93VGFyZ2V0LmF0dHJzW2VdICE9PSBmb3JtZXJUYXJnZXQuYXR0cnNbZV0gfHwgIW5vd0tleXMuaW5jbHVkZXMoZSk7XG4gIH0pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2NoYW5nZScsXG4gICAgICB2YWw6IG5vd1RhcmdldCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBrZXk6IGtleVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbjogJ3NhbWUnLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5XG4gIH07XG59XG4vKipcbiAqIOagueaNrnhtbOaIluiAhei/lOWbnnhtbOeahOWHveaVsOaehOW7uuiHquWumuS5ieiKgueCueeahOe7k+aehFxuICogQHBhcmFtIGdlblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb2RlRnJvbVhNTChnZW4pIHtcbiAgdmFyIHN0cnVjdHVyZXMgPSB7fTtcblxuICB2YXIgY29tcGlsZVhNTCA9IGZ1bmN0aW9uIGNvbXBpbGVYTUwoY2ZnKSB7XG4gICAgdmFyIHJhd1N0ciA9IHR5cGVvZiBnZW4gPT09ICdmdW5jdGlvbicgPyBnZW4oY2ZnKSA6IGdlbjtcbiAgICB2YXIgdGFyZ2V0ID0geG1sRGF0YVJlbmRlcmVyKHJhd1N0cikoY2ZnKTtcbiAgICB2YXIgeG1sUGFyc2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgeG1sUGFyc2VyLmlubmVySFRNTCA9IHRhcmdldDtcbiAgICB2YXIgeG1sID0geG1sUGFyc2VyLmNoaWxkcmVuWzBdO1xuICAgIHZhciByZXN1bHQgPSBnZW5lcmF0ZVRhcmdldChwYXJzZVhNTCh4bWwsIGNmZykpO1xuICAgIHhtbFBhcnNlci5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjZmcsIGdyb3VwKSB7XG4gICAgICB2YXIgcmVzdWx0VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGtleXNoYXBlID0gZ3JvdXA7XG5cbiAgICAgIHZhciByZW5kZXJUYXJnZXQgPSBmdW5jdGlvbiByZW5kZXJUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHZhciBfYSA9IHRhcmdldC5hdHRycyxcbiAgICAgICAgICAgIGF0dHJzID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2EsXG4gICAgICAgICAgICBiYm94ID0gdGFyZ2V0LmJib3gsXG4gICAgICAgICAgICB0eXBlID0gdGFyZ2V0LnR5cGUsXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHRhcmdldC5jaGlsZHJlbixcbiAgICAgICAgICAgIHJlc3QgPSBfX3Jlc3QodGFyZ2V0LCBbXCJhdHRyc1wiLCBcImJib3hcIiwgXCJ0eXBlXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gICAgICAgIGlmICh0YXJnZXQudHlwZSAhPT0gJ2dyb3VwJykge1xuICAgICAgICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHRhcmdldC50eXBlLCBfX2Fzc2lnbih7XG4gICAgICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgICAgICBvcmlnaW46IHtcbiAgICAgICAgICAgICAgYmJveDogYmJveCxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzdCkpO1xuXG4gICAgICAgICAgaWYgKHRhcmdldC5rZXlzaGFwZSkge1xuICAgICAgICAgICAga2V5c2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUYXJnZXQobik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlbmRlclRhcmdldChyZXN1bHRUYXJnZXQpO1xuICAgICAgc3RydWN0dXJlc1tjZmcuaWRdID0gW3Jlc3VsdFRhcmdldF07XG4gICAgICByZXR1cm4ga2V5c2hhcGU7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIG5vZGUpIHtcbiAgICAgIGlmICghc3RydWN0dXJlc1tjZmcuaWRdKSB7XG4gICAgICAgIHN0cnVjdHVyZXNbY2ZnLmlkXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGFpbmVyID0gbm9kZS5nZXRDb250YWluZXIoKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICB2YXIgbmV3VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGxhc3RUYXJnZXQgPSBzdHJ1Y3R1cmVzW2NmZy5pZF0ucG9wKCk7XG4gICAgICB2YXIgZGlmZlJlc3VsdCA9IGNvbXBhcmVUd29UYXJnZXQobmV3VGFyZ2V0LCBsYXN0VGFyZ2V0KTtcblxuICAgICAgdmFyIGFkZFNoYXBlID0gZnVuY3Rpb24gYWRkU2hhcGUoc2hhcGUpIHtcbiAgICAgICAgdmFyIF9hO1xuXG4gICAgICAgIGlmIChzaGFwZS50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgY29udGFpbmVyLmFkZFNoYXBlKHNoYXBlLnR5cGUsIHtcbiAgICAgICAgICAgIGF0dHJzOiBzaGFwZS5hdHRyc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChfYSA9IHNoYXBlLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgc2hhcGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkU2hhcGUoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBkZWxTaGFwZSA9IGZ1bmN0aW9uIGRlbFNoYXBlKHNoYXBlKSB7XG4gICAgICAgIHZhciBfYTtcblxuICAgICAgICB2YXIgdGFyZ2V0U2hhcGUgPSBjaGlsZHJlbi5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBzaGFwZS5hdHRycy5rZXk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0YXJnZXRTaGFwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKF9hID0gc2hhcGUuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICAgICAgICBzaGFwZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxTaGFwZShlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmFyIHVwZGF0ZVRhcmdldCA9IGZ1bmN0aW9uIHVwZGF0ZVRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGtleSA9IHRhcmdldC5rZXk7XG5cbiAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgdmFyIHRhcmdldFNoYXBlID0gY2hpbGRyZW4uZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBrZXk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKHRhcmdldC5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2NoYW5nZSc6XG4gICAgICAgICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgICAgICAgIHZhciBvcmlnaW5BdHRyID0gdGFyZ2V0LnZhbC5rZXlzaGFwZSA/IG5vZGUuZ2V0T3JpZ2luU3R5bGUoKSA6IHt9O1xuICAgICAgICAgICAgICAgIHRhcmdldFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIG9yaWdpbkF0dHIpLCB0YXJnZXQudmFsLmF0dHJzKSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgYWRkU2hhcGUodGFyZ2V0LnZhbCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICBkZWxTaGFwZSh0YXJnZXQudmFsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Jlc3RydWN0dXJlJzpcbiAgICAgICAgICAgICAgZGVsU2hhcGUodGFyZ2V0LmZvcm1lclRhcmdldCk7XG4gICAgICAgICAgICAgIGFkZFNoYXBlKHRhcmdldC5ub3dUYXJnZXQpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldC5jaGlsZHJlbikge1xuICAgICAgICAgIHRhcmdldC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlVGFyZ2V0KG4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB1cGRhdGVUYXJnZXQoZGlmZlJlc3VsdCk7XG4gICAgICBzdHJ1Y3R1cmVzW2NmZy5pZF0ucHVzaChuZXdUYXJnZXQpO1xuICAgIH0sXG4gICAgZ2V0QW5jaG9yUG9pbnRzOiBmdW5jdGlvbiBnZXRBbmNob3JQb2ludHMoKSB7XG4gICAgICByZXR1cm4gW1swLCAwLjVdLCBbMSwgMC41XSwgWzAuNSwgMV0sIFswLjUsIDBdXTtcbiAgICB9XG4gIH07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/xml.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/global.js":
/*!*************************************************!*\
!*** ./node_modules/@antv/g6-core/es/global.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar activeFill = 'rgb(247, 250, 255)';\nvar nodeMainFill = 'rgb(239, 244, 255)';\nvar comboFill = 'rgb(253, 253, 253)';\nvar disabledFill = 'rgb(250, 250, 250)';\nvar edgeMainStroke = 'rgb(224, 224, 224)';\nvar edgeInactiveStroke = 'rgb(234, 234, 234)';\nvar edgeDisablesStroke = 'rgb(245, 245, 245)';\nvar inactiveStroke = 'rgb(191, 213, 255)';\nvar highlightStroke = '#4572d9';\nvar highlightFill = 'rgb(223, 234, 255)';\nvar colorSet = {\n // for nodes\n mainStroke: subjectColor,\n mainFill: nodeMainFill,\n activeStroke: subjectColor,\n activeFill: activeFill,\n inactiveStroke: inactiveStroke,\n inactiveFill: activeFill,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: highlightStroke,\n highlightFill: highlightFill,\n disableStroke: edgeMainStroke,\n disableFill: disabledFill,\n // for edges\n edgeMainStroke: edgeMainStroke,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: edgeInactiveStroke,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: edgeDisablesStroke,\n // for combos\n comboMainStroke: edgeMainStroke,\n comboMainFill: comboFill,\n comboActiveStroke: subjectColor,\n comboActiveFill: activeFill,\n comboInactiveStroke: edgeMainStroke,\n comboInactiveFill: comboFill,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: comboFill,\n comboHighlightStroke: highlightStroke,\n comboHighlightFill: comboFill,\n comboDisableStroke: edgeInactiveStroke,\n comboDisableFill: disabledFill\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.3',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: nodeMainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n windowFontFamily: typeof window !== 'undefined' && window.getComputedStyle && document.body ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9nbG9iYWwuanM/MmUwYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZ2xvYmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHN1YmplY3RDb2xvciA9ICdyZ2IoOTUsIDE0OSwgMjU1KSc7XG52YXIgYmFja0NvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7XG52YXIgdGV4dENvbG9yID0gJ3JnYigwLCAwLCAwKSc7XG52YXIgYWN0aXZlRmlsbCA9ICdyZ2IoMjQ3LCAyNTAsIDI1NSknO1xudmFyIG5vZGVNYWluRmlsbCA9ICdyZ2IoMjM5LCAyNDQsIDI1NSknO1xudmFyIGNvbWJvRmlsbCA9ICdyZ2IoMjUzLCAyNTMsIDI1MyknO1xudmFyIGRpc2FibGVkRmlsbCA9ICdyZ2IoMjUwLCAyNTAsIDI1MCknO1xudmFyIGVkZ2VNYWluU3Ryb2tlID0gJ3JnYigyMjQsIDIyNCwgMjI0KSc7XG52YXIgZWRnZUluYWN0aXZlU3Ryb2tlID0gJ3JnYigyMzQsIDIzNCwgMjM0KSc7XG52YXIgZWRnZURpc2FibGVzU3Ryb2tlID0gJ3JnYigyNDUsIDI0NSwgMjQ1KSc7XG52YXIgaW5hY3RpdmVTdHJva2UgPSAncmdiKDE5MSwgMjEzLCAyNTUpJztcbnZhciBoaWdobGlnaHRTdHJva2UgPSAnIzQ1NzJkOSc7XG52YXIgaGlnaGxpZ2h0RmlsbCA9ICdyZ2IoMjIzLCAyMzQsIDI1NSknO1xudmFyIGNvbG9yU2V0ID0ge1xuICAvLyBmb3Igbm9kZXNcbiAgbWFpblN0cm9rZTogc3ViamVjdENvbG9yLFxuICBtYWluRmlsbDogbm9kZU1haW5GaWxsLFxuICBhY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgYWN0aXZlRmlsbDogYWN0aXZlRmlsbCxcbiAgaW5hY3RpdmVTdHJva2U6IGluYWN0aXZlU3Ryb2tlLFxuICBpbmFjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIHNlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIHNlbGVjdGVkRmlsbDogYmFja0NvbG9yLFxuICBoaWdobGlnaHRTdHJva2U6IGhpZ2hsaWdodFN0cm9rZSxcbiAgaGlnaGxpZ2h0RmlsbDogaGlnaGxpZ2h0RmlsbCxcbiAgZGlzYWJsZVN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGRpc2FibGVGaWxsOiBkaXNhYmxlZEZpbGwsXG4gIC8vIGZvciBlZGdlc1xuICBlZGdlTWFpblN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGVkZ2VBY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgZWRnZUluYWN0aXZlU3Ryb2tlOiBlZGdlSW5hY3RpdmVTdHJva2UsXG4gIGVkZ2VTZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICBlZGdlSGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGVkZ2VEaXNhYmxlU3Ryb2tlOiBlZGdlRGlzYWJsZXNTdHJva2UsXG4gIC8vIGZvciBjb21ib3NcbiAgY29tYm9NYWluU3Ryb2tlOiBlZGdlTWFpblN0cm9rZSxcbiAgY29tYm9NYWluRmlsbDogY29tYm9GaWxsLFxuICBjb21ib0FjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICBjb21ib0FjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIGNvbWJvSW5hY3RpdmVTdHJva2U6IGVkZ2VNYWluU3Ryb2tlLFxuICBjb21ib0luYWN0aXZlRmlsbDogY29tYm9GaWxsLFxuICBjb21ib1NlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGNvbWJvU2VsZWN0ZWRGaWxsOiBjb21ib0ZpbGwsXG4gIGNvbWJvSGlnaGxpZ2h0U3Ryb2tlOiBoaWdobGlnaHRTdHJva2UsXG4gIGNvbWJvSGlnaGxpZ2h0RmlsbDogY29tYm9GaWxsLFxuICBjb21ib0Rpc2FibGVTdHJva2U6IGVkZ2VJbmFjdGl2ZVN0cm9rZSxcbiAgY29tYm9EaXNhYmxlRmlsbDogZGlzYWJsZWRGaWxsXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiAnMC41LjMnLFxuICByb290Q29udGFpbmVyQ2xhc3NOYW1lOiAncm9vdC1jb250YWluZXInLFxuICBub2RlQ29udGFpbmVyQ2xhc3NOYW1lOiAnbm9kZS1jb250YWluZXInLFxuICBlZGdlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZWRnZS1jb250YWluZXInLFxuICBjb21ib0NvbnRhaW5lckNsYXNzTmFtZTogJ2NvbWJvLWNvbnRhaW5lcicsXG4gIGRlbGVnYXRlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZGVsZWdhdGUtY29udGFpbmVyJyxcbiAgZGVmYXVsdExvb3BQb3NpdGlvbjogJ3RvcCcsXG4gIG5vZGVMYWJlbDoge1xuICAgIHN0eWxlOiB7XG4gICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICBmb250U2l6ZTogMTIsXG4gICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJ1xuICAgIH0sXG4gICAgb2Zmc2V0OiA0IC8vIOiKgueCueeahOm7mOiupOaWh+acrOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuXG4gIH0sXG4gIGRlZmF1bHROb2RlOiB7XG4gICAgdHlwZTogJ2NpcmNsZScsXG4gICAgc3R5bGU6IHtcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQubWFpblN0cm9rZSxcbiAgICAgIGZpbGw6IG5vZGVNYWluRmlsbFxuICAgIH0sXG4gICAgc2l6ZTogMjAsXG4gICAgY29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgbGlua1BvaW50czoge1xuICAgICAgc2l6ZTogOCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZVxuICAgIH1cbiAgfSxcbiAgLy8g6IqC54K55bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LnNlbGVjdGVkRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDQsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgZmlsbDogY29sb3JTZXQuaGlnaGxpZ2h0RmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmluYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaW5hY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIGRpc2FibGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmRpc2FibGVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5kaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBlZGdlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogdGV4dENvbG9yLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICBmb250U2l6ZTogMTJcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRFZGdlOiB7XG4gICAgdHlwZTogJ2xpbmUnLFxuICAgIHNpemU6IDEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZU1haW5TdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IDJcbiAgICB9LFxuICAgIGNvbG9yOiBjb2xvclNldC5lZGdlTWFpblN0cm9rZVxuICB9LFxuICAvLyDovrnlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgZWRnZVN0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VBY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VTZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VEaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBjb21ib0xhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfSxcbiAgICByZWZZOiAxMCxcbiAgICByZWZYOiAxMCAvLyBDb21ibyDnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Q29tYm86IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9NYWluRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9NYWluU3Ryb2tlLFxuICAgICAgcjogNSxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMTBcbiAgICB9LFxuICAgIHNpemU6IFsyMCwgNV0sXG4gICAgY29sb3I6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICBwYWRkaW5nOiBbMjUsIDIwLCAxNSwgMjBdXG4gIH0sXG4gIC8vIGNvbWJvIOW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBjb21ib1N0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9BY3RpdmVGaWxsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib1NlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9TZWxlY3RlZEZpbGwsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIHNoYWRvd0JsdXI6IDEwLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0OiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9IaWdobGlnaHRGaWxsLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9JbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZUZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9XG4gIH0sXG4gIGRlbGVnYXRlU3R5bGU6IHtcbiAgICBmaWxsOiAnI0YzRjlGRicsXG4gICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICBzdHJva2U6ICcjMTg5MEZGJyxcbiAgICBzdHJva2VPcGFjaXR5OiAwLjksXG4gICAgbGluZURhc2g6IFs1LCA1XVxuICB9LFxuICB3aW5kb3dGb250RmFtaWx5OiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSAmJiBkb2N1bWVudC5ib2R5ID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1mYW1pbHknKSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnIDogJ0FyaWFsLCBzYW5zLXNlcmlmJ1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/global.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/event.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/event.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar EventController =\n/** @class */\nfunction () {\n function EventController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.initEvents();\n }\n\n return EventController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2V2ZW50LmpzP2NiYjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw4RUFBZSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRXZlbnRDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRXZlbnRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RXZlbnRzKCk7XG4gIH1cblxuICByZXR1cm4gRXZlbnRDb250cm9sbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/event.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/index.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/index.js ***!
\*****************************************************************/
/*! exports provided: ModeController, ViewController, ItemController, StateController */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mode */ \"./node_modules/@antv/g6-core/es/graph/controller/mode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ModeController\", function() { return _mode__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@antv/g6-core/es/graph/controller/view.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ViewController\", function() { return _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/graph/controller/item.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ItemController\", function() { return _item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ \"./node_modules/@antv/g6-core/es/graph/controller/state.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateController\", function() { return _state__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2luZGV4LmpzP2M4ZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kZUNvbnRyb2xsZXIgfSBmcm9tICcuL21vZGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4vdmlldyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEl0ZW1Db250cm9sbGVyIH0gZnJvbSAnLi9pdGVtJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3RhdGVDb250cm9sbGVyIH0gZnJvbSAnLi9zdGF0ZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/item.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/item.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../item/edge */ \"./node_modules/@antv/g6-core/es/item/edge.js\");\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../item/node */ \"./node_modules/@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../item/combo */ \"./node_modules/@antv/g6-core/es/item/combo.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n\n\n\n\n\n\nvar NODE = 'node';\nvar EDGE = 'edge';\nvar VEDGE = 'vedge';\nvar COMBO = 'combo';\nvar CFG_PREFIX = 'default';\nvar MAPPER_SUFFIX = 'Mapper';\nvar STATE_SUFFIX = 'stateStyles';\n\nvar ItemController =\n/** @class */\nfunction () {\n function ItemController(graph) {\n var _this = this;\n\n this.edgeToBeUpdateMap = {};\n /**\n * 更新边限流,同时可以防止相同的边频繁重复更新\n * */\n\n this.throttleRefresh = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"throttle\"])(function (_) {\n var _a;\n\n var graph = _this.graph;\n if (!graph || graph.get('destroyed')) return;\n var edgeToBeUpdateMap = _this.edgeToBeUpdateMap;\n if (!edgeToBeUpdateMap || !((_a = Object.keys(edgeToBeUpdateMap)) === null || _a === void 0 ? void 0 : _a.length)) return;\n Object.keys(edgeToBeUpdateMap).forEach(function (eid) {\n var edge = edgeToBeUpdateMap[eid].edge;\n if (!edge || edge.destroyed) return;\n edge.refresh(edgeToBeUpdateMap[eid].updateType);\n });\n _this.edgeToBeUpdateMap = {};\n }, 16, {\n trailing: true,\n leading: true\n });\n this.graph = graph;\n this.destroyed = false;\n }\n /**\n * 增加 Item 实例\n *\n * @param {ITEM_TYPE} type 实例类型,node 或 edge\n * @param {(NodeConfig & EdgeConfig)} model 数据模型\n * @returns {(Item)}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addItem = function (type, model) {\n var graph = this.graph;\n var vType = type === VEDGE ? EDGE : type;\n var parent = graph.get(\"\".concat(vType, \"Group\")) || graph.get('group');\n var upperType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(vType);\n var item = null; // 获取 this.get('styles') 中的值\n\n var styles = graph.get(vType + Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(STATE_SUFFIX)) || {};\n var defaultModel = graph.get(CFG_PREFIX + upperType);\n\n if (model[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = model[STATE_SUFFIX];\n }\n\n if (defaultModel) {\n // 很多布局会直接修改原数据模型,所以不能用 merge 的形式,逐个写入原 model 中\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(defaultModel, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, val, model[cfg]);\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = model[cfg] || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(defaultModel[cfg]);\n } else {\n model[cfg] = model[cfg] || defaultModel[cfg];\n }\n });\n }\n\n var mapper = graph.get(vType + MAPPER_SUFFIX);\n\n if (mapper) {\n var mappedModel_1 = mapper(model);\n\n if (mappedModel_1[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = mappedModel_1[STATE_SUFFIX];\n delete mappedModel_1[STATE_SUFFIX];\n } // 如果配置了 defaultEdge 或 defaultNode,则将默认配置的数据也合并进去\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(mappedModel_1, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model[cfg], val);\n } else {\n model[cfg] = mappedModel_1[cfg] || model[cfg];\n }\n });\n }\n\n graph.emit('beforeadditem', {\n type: type,\n model: model\n });\n\n if (type === EDGE || type === VEDGE) {\n var source = void 0;\n var target = void 0;\n source = model.source; // eslint-disable-line prefer-destructuring\n\n target = model.target; // eslint-disable-line prefer-destructuring\n\n if (source && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n if (target && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n if (!source || !target) {\n console.warn(\"The source or target node of edge \".concat(model.id, \" does not exist!\"));\n return;\n }\n\n if (source.getType && source.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(source as ICombo);\n }\n\n if (target.getType && target.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(target as ICombo);\n }\n\n item = new _item_edge__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n model: model,\n source: source,\n target: target,\n styles: styles,\n linkCenter: graph.get('linkCenter'),\n group: parent.addGroup()\n });\n } else if (type === NODE) {\n item = new _item_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n model: model,\n styles: styles,\n group: parent.addGroup()\n });\n } else if (type === COMBO) {\n var children = model.children;\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph);\n if (!isNaN(comboBBox.x)) model.x = comboBBox.x;else if (isNaN(model.x)) model.x = Math.random() * 100;\n if (!isNaN(comboBBox.y)) model.y = comboBBox.y;else if (isNaN(model.y)) model.y = Math.random() * 100;\n var comboGroup = parent.addGroup();\n comboGroup.setZIndex(model.depth);\n item = new _item_combo__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n model: model,\n styles: styles,\n bbox: model.collapsed ? Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])([], graph) : comboBBox,\n group: comboGroup\n });\n var comboModel_1 = item.getModel();\n (children || []).forEach(function (child) {\n var childItem = graph.findById(child.id);\n item.addChild(childItem);\n child.depth = comboModel_1.depth + 2;\n }); // collapse the combo if the collapsed is true in the model\n\n if (model.collapsed) {\n setTimeout(function () {\n if (!item.destroyed) {\n graph.collapseCombo(item);\n }\n }, 0);\n }\n }\n\n if (item) {\n graph.get(\"\".concat(type, \"s\")).push(item);\n graph.get('itemMap')[item.get('id')] = item;\n graph.emit('afteradditem', {\n item: item,\n model: model\n }); // eslint-disable-next-line consistent-return\n\n return item;\n }\n };\n /**\n * 更新节点或边\n *\n * @param {Item} item ID 或 实例\n * @param {(EdgeConfig | Partial)} cfg 数据模型\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateItem = function (item, cfg) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n } // 更新的 item 的类型\n\n\n var type = '';\n if (item.getType) type = item.getType();\n var mapper = graph.get(type + MAPPER_SUFFIX);\n var model = item.getModel();\n var updateType = item.getUpdateType(cfg);\n\n if (mapper) {\n var result = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, cfg);\n var mappedModel = mapper(result); // 将 update 时候用户传入的参数与mapperModel做deepMix,以便复用之前设置的参数值\n\n var newModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, mappedModel, cfg);\n\n if (mappedModel[STATE_SUFFIX]) {\n item.set('styles', newModel[STATE_SUFFIX]);\n delete newModel[STATE_SUFFIX];\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(newModel, function (val, key) {\n cfg[key] = val;\n });\n } else {\n // merge update传进来的对象参数,model中没有的数据不做处理,对象和字符串值也不做处理,直接替换原来的\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(cfg, function (val, key) {\n if (model[key]) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n cfg[key] = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, model[key]), cfg[key]);\n }\n }\n });\n } // emit beforeupdateitem 事件\n\n\n graph.emit('beforeupdateitem', {\n item: item,\n cfg: cfg\n });\n\n if (type === EDGE) {\n // 若是边要更新source || target, 为了不影响示例内部model,并且重新计算startPoint和endPoint,手动设置\n if (cfg.source) {\n var source = cfg.source;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n item.setSource(source);\n }\n\n if (cfg.target) {\n var target = cfg.target;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n item.setTarget(target);\n }\n\n item.update(cfg);\n } // item.update(cfg);\n\n\n if (type === NODE || type === COMBO) {\n item.update(cfg, updateType);\n var edges_1 = item.getEdges();\n var refreshEdge = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox')) || updateType === 'move';\n\n if (type === NODE) {\n if (updateType === 'move') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n _this.edgeToBeUpdateMap[edge.getID()] = {\n edge: edge,\n updateType: updateType\n };\n\n _this.throttleRefresh();\n });\n } else if (refreshEdge) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh(updateType);\n });\n }\n } else if (refreshEdge && type === COMBO) {\n var shapeFactory = item.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined || cfg.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate || cfg.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!item || item.destroyed) return;\n var keyShape = item.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n if (edge && !edge.destroyed) edge.refresh();\n });\n }, 201);\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh();\n });\n }\n }\n }\n\n graph.emit('afterupdateitem', {\n item: item,\n cfg: cfg\n });\n };\n /**\n * 根据 combo 的子元素更新 combo 的位置及大小\n *\n * @param {ICombo} combo ID 或 实例\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateCombo = function (combo, children) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n if (!combo || combo.destroyed) {\n return;\n }\n\n var model = combo.getModel();\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph, combo);\n var comboX = comboBBox.x,\n comboY = comboBBox.y;\n combo.set('bbox', comboBBox);\n combo.update({\n x: comboX || model.x,\n y: comboY || model.y\n });\n var shapeFactory = combo.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!combo || combo.destroyed) return;\n var keyShape = combo.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n combo.getShapeCfg(model); // 更新 combo 缓存的 size\n\n _this.updateComboEdges(combo);\n }, 201);\n } else {\n this.updateComboEdges(combo);\n }\n };\n\n ItemController.prototype.updateComboEdges = function (combo) {\n var combEdges = combo.getEdges() || [];\n\n for (var i = 0; i < combEdges.length; i++) {\n var edge = combEdges[i];\n\n if (edge && !edge.destroyed) {\n var edgeSF = edge.get('shapeFactory');\n var edgeCfg = edge.getShapeCfg(edge.getModel());\n var edgeGroup = edge.getContainer();\n edgeGroup.clear();\n var keyShape = edgeSF.draw(edgeCfg.type, edgeCfg, edgeGroup);\n edge.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n edge.setOriginStyle();\n }\n }\n };\n /**\n * 收起 combo,隐藏相关元素\n */\n\n\n ItemController.prototype.collapseCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.hideItem(node);\n });\n children.combos.forEach(function (c) {\n graph.hideItem(c);\n });\n };\n /**\n * 展开 combo,相关元素出现\n * 若子 combo 原先是收起状态,则保持它的收起状态\n */\n\n\n ItemController.prototype.expandCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.showItem(node);\n });\n children.combos.forEach(function (c) {\n if (c.getModel().collapsed) {\n c.show();\n } else {\n graph.showItem(c);\n }\n });\n };\n /**\n * 删除指定的节点或边\n *\n * @param {Item} item item ID 或实例\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.removeItem = function (item) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n }\n\n var itemModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(item.getModel());\n graph.emit('beforeremoveitem', {\n item: itemModel\n });\n var type = '';\n if (item.getType) type = item.getType();\n var items = graph.get(\"\".concat(type, \"s\"));\n var index = items.indexOf(item);\n if (index > -1) items.splice(index, 1);\n\n if (type === EDGE) {\n var vitems = graph.get(\"v\".concat(type, \"s\"));\n var vindex = vitems.indexOf(item);\n if (vindex > -1) vitems.splice(vindex, 1);\n }\n\n var itemId = item.get('id');\n var itemMap = graph.get('itemMap');\n delete itemMap[itemId];\n var comboTrees = graph.get('comboTrees');\n var id = item.get('id');\n\n if (type === NODE) {\n var comboId = item.getModel().comboId;\n\n if (comboTrees && comboId) {\n var brothers_1 = comboTrees;\n var found_1 = false; // the flag to terminate the forEach circulation\n // remove the node from the children array of its parent fromt he tree\n\n comboTrees.forEach(function (ctree) {\n if (found_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id && brothers_1) {\n var bidx = brothers_1.indexOf(combo);\n brothers_1.splice(bidx, 1);\n found_1 = true;\n return false; // terminate the traverse\n }\n\n brothers_1 = combo.children;\n return true;\n });\n });\n } // 若移除的是节点,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (comboId) graph.updateCombo(comboId);\n } else if (type === COMBO) {\n var parentId = item.getModel().parentId;\n var comboInTree_1; // find the subtree rooted at the item to be removed\n\n var found_2 = false; // the flag to terminate the forEach circulation\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_2) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id) {\n comboInTree_1 = combo;\n found_2 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n comboInTree_1.removed = true;\n\n if (comboInTree_1 && comboInTree_1.children) {\n comboInTree_1.children.forEach(function (child) {\n _this.removeItem(child.id);\n });\n } // 若移除的是 combo,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (parentId) graph.updateCombo(parentId);\n }\n\n item.destroy();\n graph.emit('afterremoveitem', {\n item: itemModel,\n type: type\n });\n };\n /**\n * 更新 item 状态\n *\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {boolean} value 是否启用状态或状态值\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.setItemState = function (item, state, value) {\n var graph = this.graph;\n var stateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = \"\".concat(state, \":\").concat(value);\n } // 已经存在要设置的 state,或不存在 state 的样式为 undefined\n\n\n if (item.hasState(stateName) === value && value || // 当该状态已经存在且现在需要设置为 true 时,不需要继续。当该状态不存在,且设置为 false 时,需要继续\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value) && item.hasState(stateName)) {\n // 当该状态 value 是字符串,且已经存在该状态,不需要继续\n return;\n }\n\n graph.emit('beforeitemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n item.setState(state, value);\n graph.autoPaint();\n graph.emit('afteritemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n ItemController.prototype.priorityState = function (item, state) {\n var graph = this.graph;\n var currentItem = item;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n currentItem = graph.findById(item);\n } // 先取消已有的 state\n\n\n this.setItemState(currentItem, state, false); // 再设置state,则此时该优先级为最高\n\n this.setItemState(currentItem, state, true);\n };\n /**\n * 清除所有指定的状态\n *\n * @param {Item} item Item 实例\n * @param {string[]} states 状态名称集合\n * @memberof ItemController\n */\n\n\n ItemController.prototype.clearItemStates = function (item, states) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemstatesclear', {\n item: item,\n states: states\n });\n item.clearStates(states);\n graph.emit('afteritemstatesclear', {\n item: item,\n states: states\n });\n };\n /**\n * 刷新指定的 Item\n *\n * @param {Item} item Item ID 或 实例\n * @memberof ItemController\n */\n\n\n ItemController.prototype.refreshItem = function (item) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemrefresh', {\n item: item\n }); // 调用 Item 的 refresh 方法,实现刷新功能\n\n item.refresh();\n graph.emit('afteritemrefresh', {\n item: item\n });\n };\n /**\n * 根据 graph 上用 combos 数据生成的 comboTree 来增加所有 combos\n *\n * @param {ComboTree[]} comboTrees graph 上用 combos 数据生成的 comboTree\n * @param {ComboConfig[]} comboModels combos 数据\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addCombos = function (comboTrees, comboModels) {\n var _this = this;\n\n var graph = this.graph;\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTreeUp\"])(ctree, function (child) {\n var comboModel;\n comboModels.forEach(function (model) {\n if (model.id === child.id) {\n model.children = child.children;\n model.depth = child.depth;\n comboModel = model;\n }\n });\n\n if (comboModel) {\n _this.addItem('combo', comboModel);\n }\n\n return true;\n });\n });\n var comboGroup = graph.get('comboGroup');\n if (comboGroup) comboGroup.sort();\n };\n /**\n * 改变Item的显示状态\n *\n * @param {Item} item Item ID 或 实例\n * @param {boolean} visible 是否显示\n * @memberof ItemController\n */\n\n\n ItemController.prototype.changeItemVisibility = function (item, visible) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item) {\n console.warn('The item to be shown or hidden does not exist!');\n return;\n }\n\n graph.emit('beforeitemvisibilitychange', {\n item: item,\n visible: visible\n });\n item.changeVisibility(visible);\n\n if (item.getType && item.getType() === NODE) {\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏节点,则将与之关联的边也隐藏\n // 若显示节点,则将与之关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n } else if (item.getType && item.getType() === COMBO) {\n var comboTrees = graph.get('comboTrees');\n var id_1 = item.get('id');\n var children_1 = [];\n var found_3 = false; // flag the terminate the forEach\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_3) return;\n if (!ctree.children || ctree.children.length === 0) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id_1) {\n children_1 = combo.children;\n found_3 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n\n if (children_1 && (!visible || visible && !item.getModel().collapsed)) {\n children_1.forEach(function (child) {\n var childItem = graph.findById(child.id);\n\n _this.changeItemVisibility(childItem, visible);\n });\n }\n\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏 combo,则将与 combo 本身关联的边也隐藏\n // 若显示 combo,则将与 combo 本身关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n }\n\n graph.emit('afteritemvisibilitychange', {\n item: item,\n visible: visible\n });\n return item;\n };\n\n ItemController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = true;\n };\n\n return ItemController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanM/MTY3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNvRTtBQUNsRTtBQUNBO0FBQ0U7QUFDMkM7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsMkRBQVE7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDBCQUEwQjtBQUN2QyxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkRBQVU7QUFDOUIsb0JBQW9COztBQUVwQixtQ0FBbUMsNkRBQVU7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRLFVBQVUsMERBQU87QUFDckMsdUJBQXVCLDBEQUFPLEdBQUc7QUFDakMsU0FBUyxVQUFVLDBEQUFPO0FBQzFCLHFDQUFxQyx3REFBSztBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsTUFBTSx1REFBSTtBQUNWLFlBQVksMkRBQVEsVUFBVSwwREFBTztBQUNyQyx1QkFBdUIsMERBQU8sR0FBRztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUIsNEJBQTRCOztBQUU1QixvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQSxvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQSxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixrRUFBWTtBQUNsQyxxREFBcUQ7QUFDckQscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxpQkFBaUIsbURBQUs7QUFDdEI7QUFDQTtBQUNBLGdDQUFnQyxrRUFBWTtBQUM1QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsbUNBQW1DO0FBQ2hEO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsMERBQU8sR0FBRztBQUM3Qix1Q0FBdUM7O0FBRXZDLHFCQUFxQiwwREFBTyxHQUFHOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsY0FBYywyREFBUSxVQUFVLDBEQUFPO0FBQ3ZDLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsWUFBWSwyREFBUTtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isa0VBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGVBQWU7QUFDZjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHdEQUFLO0FBQ3pCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQSxVQUFVLGtFQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87OztBQUdQOztBQUVBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3QkFBd0I7O0FBRXhCLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBLFFBQVEsa0VBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7O0FBR1A7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSxJQUFJLDJEQUFRO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLGNBQWM7QUFDM0I7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxrRUFBWTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzQXJyYXksIGlzT2JqZWN0LCBpc1N0cmluZywgdXBwZXJGaXJzdCwgdGhyb3R0bGUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBFZGdlIGZyb20gJy4uLy4uL2l0ZW0vZWRnZSc7XG5pbXBvcnQgTm9kZSBmcm9tICcuLi8uLi9pdGVtL25vZGUnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4uLy4uL2l0ZW0vY29tYm8nO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlVXAsIHRyYXZlcnNlVHJlZSwgZ2V0Q29tYm9CQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9ncmFwaGljJztcbnZhciBOT0RFID0gJ25vZGUnO1xudmFyIEVER0UgPSAnZWRnZSc7XG52YXIgVkVER0UgPSAndmVkZ2UnO1xudmFyIENPTUJPID0gJ2NvbWJvJztcbnZhciBDRkdfUFJFRklYID0gJ2RlZmF1bHQnO1xudmFyIE1BUFBFUl9TVUZGSVggPSAnTWFwcGVyJztcbnZhciBTVEFURV9TVUZGSVggPSAnc3RhdGVTdHlsZXMnO1xuXG52YXIgSXRlbUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJdGVtQ29udHJvbGxlcihncmFwaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmVkZ2VUb0JlVXBkYXRlTWFwID0ge307XG4gICAgLyoqXG4gICAgICog5pu05paw6L656ZmQ5rWB77yM5ZCM5pe25Y+v5Lul6Ziy5q2i55u45ZCM55qE6L656aKR57mB6YeN5aSN5pu05pawXG4gICAgICogKi9cblxuICAgIHRoaXMudGhyb3R0bGVSZWZyZXNoID0gdGhyb3R0bGUoZnVuY3Rpb24gKF8pIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGg7XG4gICAgICBpZiAoIWdyYXBoIHx8IGdyYXBoLmdldCgnZGVzdHJveWVkJykpIHJldHVybjtcbiAgICAgIHZhciBlZGdlVG9CZVVwZGF0ZU1hcCA9IF90aGlzLmVkZ2VUb0JlVXBkYXRlTWFwO1xuICAgICAgaWYgKCFlZGdlVG9CZVVwZGF0ZU1hcCB8fCAhKChfYSA9IE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHJldHVybjtcbiAgICAgIE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChlaWQpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlVG9CZVVwZGF0ZU1hcFtlaWRdLmVkZ2U7XG4gICAgICAgIGlmICghZWRnZSB8fCBlZGdlLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBlZGdlLnJlZnJlc2goZWRnZVRvQmVVcGRhdGVNYXBbZWlkXS51cGRhdGVUeXBlKTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZWRnZVRvQmVVcGRhdGVNYXAgPSB7fTtcbiAgICB9LCAxNiwge1xuICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICBsZWFkaW5nOiB0cnVlXG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOWinuWKoCBJdGVtIOWunuS+i1xuICAgKlxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlrp7kvovnsbvlnovvvIxub2RlIOaIliBlZGdlXG4gICAqIEBwYXJhbSB7KE5vZGVDb25maWcgJiBFZGdlQ29uZmlnKX0gbW9kZWwg5pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm5zIHsoSXRlbSl9XG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVsKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgdlR5cGUgPSB0eXBlID09PSBWRURHRSA/IEVER0UgOiB0eXBlO1xuICAgIHZhciBwYXJlbnQgPSBncmFwaC5nZXQoXCJcIi5jb25jYXQodlR5cGUsIFwiR3JvdXBcIikpIHx8IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgdXBwZXJUeXBlID0gdXBwZXJGaXJzdCh2VHlwZSk7XG4gICAgdmFyIGl0ZW0gPSBudWxsOyAvLyDojrflj5YgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuXG4gICAgdmFyIHN0eWxlcyA9IGdyYXBoLmdldCh2VHlwZSArIHVwcGVyRmlyc3QoU1RBVEVfU1VGRklYKSkgfHwge307XG4gICAgdmFyIGRlZmF1bHRNb2RlbCA9IGdyYXBoLmdldChDRkdfUFJFRklYICsgdXBwZXJUeXBlKTtcblxuICAgIGlmIChtb2RlbFtTVEFURV9TVUZGSVhdKSB7XG4gICAgICAvLyDorr7nva4gdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgc3R5bGVzID0gbW9kZWxbU1RBVEVfU1VGRklYXTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdE1vZGVsKSB7XG4gICAgICAvLyDlvojlpJrluIPlsYDkvJrnm7TmjqXkv67mlLnljp/mlbDmja7mqKHlnovvvIzmiYDku6XkuI3og73nlKggbWVyZ2Ug55qE5b2i5byP77yM6YCQ5Liq5YaZ5YWl5Y6fIG1vZGVsIOS4rVxuICAgICAgZWFjaChkZWZhdWx0TW9kZWwsIGZ1bmN0aW9uICh2YWwsIGNmZykge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IGRlZXBNaXgoe30sIHZhbCwgbW9kZWxbY2ZnXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IG1vZGVsW2NmZ10gfHwgY2xvbmUoZGVmYXVsdE1vZGVsW2NmZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtb2RlbFtjZmddIHx8IGRlZmF1bHRNb2RlbFtjZmddO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGVyID0gZ3JhcGguZ2V0KHZUeXBlICsgTUFQUEVSX1NVRkZJWCk7XG5cbiAgICBpZiAobWFwcGVyKSB7XG4gICAgICB2YXIgbWFwcGVkTW9kZWxfMSA9IG1hcHBlcihtb2RlbCk7XG5cbiAgICAgIGlmIChtYXBwZWRNb2RlbF8xW1NUQVRFX1NVRkZJWF0pIHtcbiAgICAgICAgLy8g6K6+572uIHRoaXMuZ2V0KCdzdHlsZXMnKSDkuK3nmoTlgLxcbiAgICAgICAgc3R5bGVzID0gbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgICBkZWxldGUgbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgfSAvLyDlpoLmnpzphY3nva7kuoYgZGVmYXVsdEVkZ2Ug5oiWIGRlZmF1bHROb2Rl77yM5YiZ5bCG6buY6K6k6YWN572u55qE5pWw5o2u5Lmf5ZCI5bm26L+b5Y67XG5cblxuICAgICAgZWFjaChtYXBwZWRNb2RlbF8xLCBmdW5jdGlvbiAodmFsLCBjZmcpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSkge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBkZWVwTWl4KHt9LCBtb2RlbFtjZmddLCB2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtYXBwZWRNb2RlbF8xW2NmZ10gfHwgbW9kZWxbY2ZnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlYWRkaXRlbScsIHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBtb2RlbDogbW9kZWxcbiAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBFREdFIHx8IHR5cGUgPT09IFZFREdFKSB7XG4gICAgICB2YXIgc291cmNlID0gdm9pZCAwO1xuICAgICAgdmFyIHRhcmdldCA9IHZvaWQgMDtcbiAgICAgIHNvdXJjZSA9IG1vZGVsLnNvdXJjZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuXG4gICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcblxuICAgICAgaWYgKHNvdXJjZSAmJiBpc1N0cmluZyhzb3VyY2UpKSB7XG4gICAgICAgIHNvdXJjZSA9IGdyYXBoLmZpbmRCeUlkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXQgPSBncmFwaC5maW5kQnlJZCh0YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlRoZSBzb3VyY2Ugb3IgdGFyZ2V0IG5vZGUgb2YgZWRnZSBcIi5jb25jYXQobW9kZWwuaWQsIFwiIGRvZXMgbm90IGV4aXN0IVwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZS5nZXRUeXBlICYmIHNvdXJjZS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgbW9kZWwuaXNDb21ib0VkZ2UgPSB0cnVlOyAvLyBncmFwaC51cGRhdGVDb21ibyhzb3VyY2UgYXMgSUNvbWJvKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5nZXRUeXBlICYmIHRhcmdldC5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgbW9kZWwuaXNDb21ib0VkZ2UgPSB0cnVlOyAvLyBncmFwaC51cGRhdGVDb21ibyh0YXJnZXQgYXMgSUNvbWJvKTtcbiAgICAgIH1cblxuICAgICAgaXRlbSA9IG5ldyBFZGdlKHtcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICBsaW5rQ2VudGVyOiBncmFwaC5nZXQoJ2xpbmtDZW50ZXInKSxcbiAgICAgICAgZ3JvdXA6IHBhcmVudC5hZGRHcm91cCgpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE5PREUpIHtcbiAgICAgIGl0ZW0gPSBuZXcgTm9kZSh7XG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgICAgIGdyb3VwOiBwYXJlbnQuYWRkR3JvdXAoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBDT01CTykge1xuICAgICAgdmFyIGNoaWxkcmVuID0gbW9kZWwuY2hpbGRyZW47XG4gICAgICB2YXIgY29tYm9CQm94ID0gZ2V0Q29tYm9CQm94KGNoaWxkcmVuLCBncmFwaCk7XG4gICAgICBpZiAoIWlzTmFOKGNvbWJvQkJveC54KSkgbW9kZWwueCA9IGNvbWJvQkJveC54O2Vsc2UgaWYgKGlzTmFOKG1vZGVsLngpKSBtb2RlbC54ID0gTWF0aC5yYW5kb20oKSAqIDEwMDtcbiAgICAgIGlmICghaXNOYU4oY29tYm9CQm94LnkpKSBtb2RlbC55ID0gY29tYm9CQm94Lnk7ZWxzZSBpZiAoaXNOYU4obW9kZWwueSkpIG1vZGVsLnkgPSBNYXRoLnJhbmRvbSgpICogMTAwO1xuICAgICAgdmFyIGNvbWJvR3JvdXAgPSBwYXJlbnQuYWRkR3JvdXAoKTtcbiAgICAgIGNvbWJvR3JvdXAuc2V0WkluZGV4KG1vZGVsLmRlcHRoKTtcbiAgICAgIGl0ZW0gPSBuZXcgQ29tYm8oe1xuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICBiYm94OiBtb2RlbC5jb2xsYXBzZWQgPyBnZXRDb21ib0JCb3goW10sIGdyYXBoKSA6IGNvbWJvQkJveCxcbiAgICAgICAgZ3JvdXA6IGNvbWJvR3JvdXBcbiAgICAgIH0pO1xuICAgICAgdmFyIGNvbWJvTW9kZWxfMSA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIChjaGlsZHJlbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGdyYXBoLmZpbmRCeUlkKGNoaWxkLmlkKTtcbiAgICAgICAgaXRlbS5hZGRDaGlsZChjaGlsZEl0ZW0pO1xuICAgICAgICBjaGlsZC5kZXB0aCA9IGNvbWJvTW9kZWxfMS5kZXB0aCArIDI7XG4gICAgICB9KTsgLy8gY29sbGFwc2UgdGhlIGNvbWJvIGlmIHRoZSBjb2xsYXBzZWQgaXMgdHJ1ZSBpbiB0aGUgbW9kZWxcblxuICAgICAgaWYgKG1vZGVsLmNvbGxhcHNlZCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICAgICAgICBncmFwaC5jb2xsYXBzZUNvbWJvKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGdyYXBoLmdldChcIlwiLmNvbmNhdCh0eXBlLCBcInNcIikpLnB1c2goaXRlbSk7XG4gICAgICBncmFwaC5nZXQoJ2l0ZW1NYXAnKVtpdGVtLmdldCgnaWQnKV0gPSBpdGVtO1xuICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJhZGRpdGVtJywge1xuICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05paw6IqC54K55oiW6L65XG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJRCDmiJYg5a6e5L6LXG4gICAqIEBwYXJhbSB7KEVkZ2VDb25maWcgfCBQYXJ0aWFsPE5vZGVDb25maWc+KX0gY2ZnIOaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOabtOaWsOeahCBpdGVtIOeahOexu+Wei1xuXG5cbiAgICB2YXIgdHlwZSA9ICcnO1xuICAgIGlmIChpdGVtLmdldFR5cGUpIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcbiAgICB2YXIgbWFwcGVyID0gZ3JhcGguZ2V0KHR5cGUgKyBNQVBQRVJfU1VGRklYKTtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIHVwZGF0ZVR5cGUgPSBpdGVtLmdldFVwZGF0ZVR5cGUoY2ZnKTtcblxuICAgIGlmIChtYXBwZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBkZWVwTWl4KHt9LCBtb2RlbCwgY2ZnKTtcbiAgICAgIHZhciBtYXBwZWRNb2RlbCA9IG1hcHBlcihyZXN1bHQpOyAvLyDlsIYgdXBkYXRlIOaXtuWAmeeUqOaIt+S8oOWFpeeahOWPguaVsOS4jm1hcHBlck1vZGVs5YGaZGVlcE1peO+8jOS7peS+v+WkjeeUqOS5i+WJjeiuvue9rueahOWPguaVsOWAvFxuXG4gICAgICB2YXIgbmV3TW9kZWwgPSBkZWVwTWl4KHt9LCBtb2RlbCwgbWFwcGVkTW9kZWwsIGNmZyk7XG5cbiAgICAgIGlmIChtYXBwZWRNb2RlbFtTVEFURV9TVUZGSVhdKSB7XG4gICAgICAgIGl0ZW0uc2V0KCdzdHlsZXMnLCBuZXdNb2RlbFtTVEFURV9TVUZGSVhdKTtcbiAgICAgICAgZGVsZXRlIG5ld01vZGVsW1NUQVRFX1NVRkZJWF07XG4gICAgICB9XG5cbiAgICAgIGVhY2gobmV3TW9kZWwsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgICBjZmdba2V5XSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtZXJnZSB1cGRhdGXkvKDov5vmnaXnmoTlr7nosaHlj4LmlbDvvIxtb2RlbOS4reayoeacieeahOaVsOaNruS4jeWBmuWkhOeQhu+8jOWvueixoeWSjOWtl+espuS4suWAvOS5n+S4jeWBmuWkhOeQhu+8jOebtOaOpeabv+aNouWOn+adpeeahFxuICAgICAgZWFjaChjZmcsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgICBpZiAobW9kZWxba2V5XSkge1xuICAgICAgICAgIGlmIChpc09iamVjdCh2YWwpICYmICFpc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgIGNmZ1trZXldID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG1vZGVsW2tleV0pLCBjZmdba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IC8vIGVtaXQgYmVmb3JldXBkYXRlaXRlbSDkuovku7ZcblxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JldXBkYXRlaXRlbScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBjZmc6IGNmZ1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGUgPT09IEVER0UpIHtcbiAgICAgIC8vIOiLpeaYr+i+ueimgeabtOaWsHNvdXJjZSB8fCB0YXJnZXQsIOS4uuS6huS4jeW9seWTjeekuuS+i+WGhemDqG1vZGVs77yM5bm25LiU6YeN5paw6K6h566Xc3RhcnRQb2ludOWSjGVuZFBvaW5077yM5omL5Yqo6K6+572uXG4gICAgICBpZiAoY2ZnLnNvdXJjZSkge1xuICAgICAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZTtcblxuICAgICAgICBpZiAoaXNTdHJpbmcoc291cmNlKSkge1xuICAgICAgICAgIHNvdXJjZSA9IGdyYXBoLmZpbmRCeUlkKHNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnNldFNvdXJjZShzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZnLnRhcmdldCkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gY2ZnLnRhcmdldDtcblxuICAgICAgICBpZiAoaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgICAgIHRhcmdldCA9IGdyYXBoLmZpbmRCeUlkKHRhcmdldCk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnNldFRhcmdldCh0YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnVwZGF0ZShjZmcpO1xuICAgIH0gLy8gaXRlbS51cGRhdGUoY2ZnKTtcblxuXG4gICAgaWYgKHR5cGUgPT09IE5PREUgfHwgdHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgIGl0ZW0udXBkYXRlKGNmZywgdXBkYXRlVHlwZSk7XG4gICAgICB2YXIgZWRnZXNfMSA9IGl0ZW0uZ2V0RWRnZXMoKTtcbiAgICAgIHZhciByZWZyZXNoRWRnZSA9ICh1cGRhdGVUeXBlID09PSBudWxsIHx8IHVwZGF0ZVR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVwZGF0ZVR5cGUuaW5jbHVkZXMoJ2Jib3gnKSkgfHwgdXBkYXRlVHlwZSA9PT0gJ21vdmUnO1xuXG4gICAgICBpZiAodHlwZSA9PT0gTk9ERSkge1xuICAgICAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnKSB7XG4gICAgICAgICAgZWFjaChlZGdlc18xLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgX3RoaXMuZWRnZVRvQmVVcGRhdGVNYXBbZWRnZS5nZXRJRCgpXSA9IHtcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgdXBkYXRlVHlwZTogdXBkYXRlVHlwZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgX3RoaXMudGhyb3R0bGVSZWZyZXNoKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVmcmVzaEVkZ2UpIHtcbiAgICAgICAgICBlYWNoKGVkZ2VzXzEsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICBlZGdlLnJlZnJlc2godXBkYXRlVHlwZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVmcmVzaEVkZ2UgJiYgdHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgICAgdmFyIHNoYXBlRmFjdG9yeSA9IGl0ZW0uZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICAgICAgdmFyIHNoYXBlVHlwZSA9IG1vZGVsLnR5cGUgfHwgJ2NpcmNsZSc7XG4gICAgICAgIHZhciBjb21ib0FuaW1hdGUgPSBtb2RlbC5hbmltYXRlID09PSB1bmRlZmluZWQgfHwgY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IChfYiA9IChfYSA9IHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFuaW1hdGUgOiBtb2RlbC5hbmltYXRlIHx8IGNmZy5hbmltYXRlO1xuXG4gICAgICAgIGlmIChjb21ib0FuaW1hdGUpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgaWYgKCFrZXlTaGFwZSB8fCBrZXlTaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICAgIGVhY2goZWRnZXNfMSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgaWYgKGVkZ2UgJiYgIWVkZ2UuZGVzdHJveWVkKSBlZGdlLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDIwMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWFjaChlZGdlc18xLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgZWRnZS5yZWZyZXNoKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdhZnRlcnVwZGF0ZWl0ZW0nLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgY2ZnOiBjZmdcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBjb21ibyDnmoTlrZDlhYPntKDmm7TmlrAgY29tYm8g55qE5L2N572u5Y+K5aSn5bCPXG4gICAqXG4gICAqIEBwYXJhbSB7SUNvbWJvfSBjb21ibyBJRCDmiJYg5a6e5L6LXG4gICAqIEByZXR1cm5zXG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb21ibyA9IGZ1bmN0aW9uIChjb21ibywgY2hpbGRyZW4pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvIHx8IGNvbWJvLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG4gICAgdmFyIGNvbWJvQkJveCA9IGdldENvbWJvQkJveChjaGlsZHJlbiwgZ3JhcGgsIGNvbWJvKTtcbiAgICB2YXIgY29tYm9YID0gY29tYm9CQm94LngsXG4gICAgICAgIGNvbWJvWSA9IGNvbWJvQkJveC55O1xuICAgIGNvbWJvLnNldCgnYmJveCcsIGNvbWJvQkJveCk7XG4gICAgY29tYm8udXBkYXRlKHtcbiAgICAgIHg6IGNvbWJvWCB8fCBtb2RlbC54LFxuICAgICAgeTogY29tYm9ZIHx8IG1vZGVsLnlcbiAgICB9KTtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gY29tYm8uZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICB2YXIgc2hhcGVUeXBlID0gbW9kZWwudHlwZSB8fCAnY2lyY2xlJztcbiAgICB2YXIgY29tYm9BbmltYXRlID0gbW9kZWwuYW5pbWF0ZSA9PT0gdW5kZWZpbmVkID8gKF9iID0gKF9hID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYW5pbWF0ZSA6IG1vZGVsLmFuaW1hdGU7XG5cbiAgICBpZiAoY29tYm9BbmltYXRlKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFjb21ibyB8fCBjb21iby5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgdmFyIGtleVNoYXBlID0gY29tYm8uZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgaWYgKCFrZXlTaGFwZSB8fCBrZXlTaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgY29tYm8uZ2V0U2hhcGVDZmcobW9kZWwpOyAvLyDmm7TmlrAgY29tYm8g57yT5a2Y55qEIHNpemVcblxuICAgICAgICBfdGhpcy51cGRhdGVDb21ib0VkZ2VzKGNvbWJvKTtcbiAgICAgIH0sIDIwMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9FZGdlcyhjb21ibyk7XG4gICAgfVxuICB9O1xuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb21ib0VkZ2VzID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGNvbWJFZGdlcyA9IGNvbWJvLmdldEVkZ2VzKCkgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBjb21iRWRnZXNbaV07XG5cbiAgICAgIGlmIChlZGdlICYmICFlZGdlLmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgZWRnZVNGID0gZWRnZS5nZXQoJ3NoYXBlRmFjdG9yeScpO1xuICAgICAgICB2YXIgZWRnZUNmZyA9IGVkZ2UuZ2V0U2hhcGVDZmcoZWRnZS5nZXRNb2RlbCgpKTtcbiAgICAgICAgdmFyIGVkZ2VHcm91cCA9IGVkZ2UuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgIGVkZ2VHcm91cC5jbGVhcigpO1xuICAgICAgICB2YXIga2V5U2hhcGUgPSBlZGdlU0YuZHJhdyhlZGdlQ2ZnLnR5cGUsIGVkZ2VDZmcsIGVkZ2VHcm91cCk7XG4gICAgICAgIGVkZ2Uuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgICAga2V5U2hhcGUuc2V0KCdpc0tleVNoYXBlJywgdHJ1ZSk7XG4gICAgICAgIGtleVNoYXBlLnNldCgnZHJhZ2dhYmxlJywgdHJ1ZSk7XG4gICAgICAgIGVkZ2Uuc2V0T3JpZ2luU3R5bGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmlLbotbcgY29tYm/vvIzpmpDol4/nm7jlhbPlhYPntKBcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY29sbGFwc2VDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBjb21iby5nZXRDaGlsZHJlbigpO1xuICAgIGNoaWxkcmVuLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGdyYXBoLmhpZGVJdGVtKG5vZGUpO1xuICAgIH0pO1xuICAgIGNoaWxkcmVuLmNvbWJvcy5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBncmFwaC5oaWRlSXRlbShjKTtcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWxleW8gCBjb21ib++8jOebuOWFs+WFg+e0oOWHuueOsFxuICAgKiDoi6XlrZAgY29tYm8g5Y6f5YWI5piv5pS26LW354q25oCB77yM5YiZ5L+d5oyB5a6D55qE5pS26LW354q25oCBXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmV4cGFuZENvbWJvID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IGNvbWJvLmdldENoaWxkcmVuKCk7XG4gICAgY2hpbGRyZW4ubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgZ3JhcGguc2hvd0l0ZW0obm9kZSk7XG4gICAgfSk7XG4gICAgY2hpbGRyZW4uY29tYm9zLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgIGlmIChjLmdldE1vZGVsKCkuY29sbGFwc2VkKSB7XG4gICAgICAgIGMuc2hvdygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGguc2hvd0l0ZW0oYyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprnmoToioLngrnmiJbovrlcbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIGl0ZW0gSUQg5oiW5a6e5L6LXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbU1vZGVsID0gY2xvbmUoaXRlbS5nZXRNb2RlbCgpKTtcbiAgICBncmFwaC5lbWl0KCdiZWZvcmVyZW1vdmVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbU1vZGVsXG4gICAgfSk7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIGl0ZW1zID0gZ3JhcGguZ2V0KFwiXCIuY29uY2F0KHR5cGUsIFwic1wiKSk7XG4gICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmICh0eXBlID09PSBFREdFKSB7XG4gICAgICB2YXIgdml0ZW1zID0gZ3JhcGguZ2V0KFwidlwiLmNvbmNhdCh0eXBlLCBcInNcIikpO1xuICAgICAgdmFyIHZpbmRleCA9IHZpdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgaWYgKHZpbmRleCA+IC0xKSB2aXRlbXMuc3BsaWNlKHZpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1JZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuICAgIHZhciBpdGVtTWFwID0gZ3JhcGguZ2V0KCdpdGVtTWFwJyk7XG4gICAgZGVsZXRlIGl0ZW1NYXBbaXRlbUlkXTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IGdyYXBoLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBpZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgaWYgKHR5cGUgPT09IE5PREUpIHtcbiAgICAgIHZhciBjb21ib0lkID0gaXRlbS5nZXRNb2RlbCgpLmNvbWJvSWQ7XG5cbiAgICAgIGlmIChjb21ib1RyZWVzICYmIGNvbWJvSWQpIHtcbiAgICAgICAgdmFyIGJyb3RoZXJzXzEgPSBjb21ib1RyZWVzO1xuICAgICAgICB2YXIgZm91bmRfMSA9IGZhbHNlOyAvLyB0aGUgZmxhZyB0byB0ZXJtaW5hdGUgdGhlIGZvckVhY2ggY2lyY3VsYXRpb25cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBub2RlIGZyb20gdGhlIGNoaWxkcmVuIGFycmF5IG9mIGl0cyBwYXJlbnQgZnJvbXQgaGUgdHJlZVxuXG4gICAgICAgIGNvbWJvVHJlZXMuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgICBpZiAoZm91bmRfMSkgcmV0dXJuO1xuICAgICAgICAgIHRyYXZlcnNlVHJlZShjdHJlZSwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgICBpZiAoY29tYm8uaWQgPT09IGlkICYmIGJyb3RoZXJzXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGJpZHggPSBicm90aGVyc18xLmluZGV4T2YoY29tYm8pO1xuICAgICAgICAgICAgICBicm90aGVyc18xLnNwbGljZShiaWR4LCAxKTtcbiAgICAgICAgICAgICAgZm91bmRfMSA9IHRydWU7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicm90aGVyc18xID0gY29tYm8uY2hpbGRyZW47XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIOiLpeenu+mZpOeahOaYr+iKgueCue+8jOmcgOimgeWwhuS4juS5i+ebuOi/nueahOi+ueS4gOWQjOWIoOmZpFxuXG5cbiAgICAgIHZhciBlZGdlcyA9IGl0ZW0uZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IGVkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0oZWRnZXNbaV0sIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbWJvSWQpIGdyYXBoLnVwZGF0ZUNvbWJvKGNvbWJvSWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgIHZhciBwYXJlbnRJZCA9IGl0ZW0uZ2V0TW9kZWwoKS5wYXJlbnRJZDtcbiAgICAgIHZhciBjb21ib0luVHJlZV8xOyAvLyBmaW5kIHRoZSBzdWJ0cmVlIHJvb3RlZCBhdCB0aGUgaXRlbSB0byBiZSByZW1vdmVkXG5cbiAgICAgIHZhciBmb3VuZF8yID0gZmFsc2U7IC8vIHRoZSBmbGFnIHRvIHRlcm1pbmF0ZSB0aGUgZm9yRWFjaCBjaXJjdWxhdGlvblxuXG4gICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kXzIpIHJldHVybjtcbiAgICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICBpZiAoY29tYm8uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICBjb21ib0luVHJlZV8xID0gY29tYm87XG4gICAgICAgICAgICBmb3VuZF8yID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgY29tYm9JblRyZWVfMS5yZW1vdmVkID0gdHJ1ZTtcblxuICAgICAgaWYgKGNvbWJvSW5UcmVlXzEgJiYgY29tYm9JblRyZWVfMS5jaGlsZHJlbikge1xuICAgICAgICBjb21ib0luVHJlZV8xLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShjaGlsZC5pZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyDoi6Xnp7vpmaTnmoTmmK8gY29tYm/vvIzpnIDopoHlsIbkuI7kuYvnm7jov57nmoTovrnkuIDlkIzliKDpmaRcblxuXG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSBlZGdlcy5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0oZWRnZXNbaV0sIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudElkKSBncmFwaC51cGRhdGVDb21ibyhwYXJlbnRJZCk7XG4gICAgfVxuXG4gICAgaXRlbS5kZXN0cm95KCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJyZW1vdmVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbU1vZGVsLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIGl0ZW0g54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUg54q25oCB5ZCN56ewXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUg5piv5ZCm5ZCv55So54q25oCB5oiW54q25oCB5YC8XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuc2V0SXRlbVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCB2YWx1ZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHN0YXRlTmFtZSA9IHN0YXRlO1xuXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgc3RhdGVOYW1lID0gXCJcIi5jb25jYXQoc3RhdGUsIFwiOlwiKS5jb25jYXQodmFsdWUpO1xuICAgIH0gLy8g5bey57uP5a2Y5Zyo6KaB6K6+572u55qEIHN0YXRl77yM5oiW5LiN5a2Y5ZyoIHN0YXRlIOeahOagt+W8j+S4uiB1bmRlZmluZWRcblxuXG4gICAgaWYgKGl0ZW0uaGFzU3RhdGUoc3RhdGVOYW1lKSA9PT0gdmFsdWUgJiYgdmFsdWUgfHwgLy8g5b2T6K+l54q25oCB5bey57uP5a2Y5Zyo5LiU546w5Zyo6ZyA6KaB6K6+572u5Li6IHRydWUg5pe277yM5LiN6ZyA6KaB57un57ut44CC5b2T6K+l54q25oCB5LiN5a2Y5Zyo77yM5LiU6K6+572u5Li6IGZhbHNlIOaXtu+8jOmcgOimgee7p+e7rVxuICAgIGlzU3RyaW5nKHZhbHVlKSAmJiBpdGVtLmhhc1N0YXRlKHN0YXRlTmFtZSkpIHtcbiAgICAgIC8vIOW9k+ivpeeKtuaAgSB2YWx1ZSDmmK/lrZfnrKbkuLLvvIzkuJTlt7Lnu4/lrZjlnKjor6XnirbmgIHvvIzkuI3pnIDopoHnu6fnu61cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtc3RhdGVjaGFuZ2UnLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgc3RhdGU6IHN0YXRlTmFtZSxcbiAgICAgIGVuYWJsZWQ6IHZhbHVlXG4gICAgfSk7XG4gICAgaXRlbS5zZXRTdGF0ZShzdGF0ZSwgdmFsdWUpO1xuICAgIGdyYXBoLmF1dG9QYWludCgpO1xuICAgIGdyYXBoLmVtaXQoJ2FmdGVyaXRlbXN0YXRlY2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHN0YXRlOiBzdGF0ZU5hbWUsXG4gICAgICBlbmFibGVkOiB2YWx1ZVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5bCG5oyH5a6a54q25oCB55qE5LyY5YWI57qn5o+Q5Y2H5Li65pyA6auY5LyY5YWI57qnXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0gc3RhdGUg54q25oCB5ZCN56ewXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnByaW9yaXR5U3RhdGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBjdXJyZW50SXRlbSA9IGl0ZW07XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGN1cnJlbnRJdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfSAvLyDlhYjlj5bmtojlt7LmnInnmoQgc3RhdGVcblxuXG4gICAgdGhpcy5zZXRJdGVtU3RhdGUoY3VycmVudEl0ZW0sIHN0YXRlLCBmYWxzZSk7IC8vIOWGjeiuvue9rnN0YXRl77yM5YiZ5q2k5pe26K+l5LyY5YWI57qn5Li65pyA6auYXG5cbiAgICB0aGlzLnNldEl0ZW1TdGF0ZShjdXJyZW50SXRlbSwgc3RhdGUsIHRydWUpO1xuICB9O1xuICAvKipcbiAgICog5riF6Zmk5omA5pyJ5oyH5a6a55qE54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzdGF0ZXMg54q25oCB5ZCN56ew6ZuG5ZCIXG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5jbGVhckl0ZW1TdGF0ZXMgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGVzKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IGdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWl0ZW1zdGF0ZXNjbGVhcicsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBzdGF0ZXM6IHN0YXRlc1xuICAgIH0pO1xuICAgIGl0ZW0uY2xlYXJTdGF0ZXMoc3RhdGVzKTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW1zdGF0ZXNjbGVhcicsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBzdGF0ZXM6IHN0YXRlc1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5Yi35paw5oyH5a6a55qEIEl0ZW1cbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0gSUQg5oiWIOWunuS+i1xuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUucmVmcmVzaEl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtcmVmcmVzaCcsIHtcbiAgICAgIGl0ZW06IGl0ZW1cbiAgICB9KTsgLy8g6LCD55SoIEl0ZW0g55qEIHJlZnJlc2gg5pa55rOV77yM5a6e546w5Yi35paw5Yqf6IO9XG5cbiAgICBpdGVtLnJlZnJlc2goKTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW1yZWZyZXNoJywge1xuICAgICAgaXRlbTogaXRlbVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uIGdyYXBoIOS4iueUqCBjb21ib3Mg5pWw5o2u55Sf5oiQ55qEIGNvbWJvVHJlZSDmnaXlop7liqDmiYDmnIkgY29tYm9zXG4gICAqXG4gICAqIEBwYXJhbSB7Q29tYm9UcmVlW119IGNvbWJvVHJlZXMgZ3JhcGgg5LiK55SoIGNvbWJvcyDmlbDmja7nlJ/miJDnmoQgY29tYm9UcmVlXG4gICAqIEBwYXJhbSB7Q29tYm9Db25maWdbXX0gY29tYm9Nb2RlbHMgY29tYm9zIOaVsOaNrlxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuYWRkQ29tYm9zID0gZnVuY3Rpb24gKGNvbWJvVHJlZXMsIGNvbWJvTW9kZWxzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHZhciBjb21ib01vZGVsO1xuICAgICAgICBjb21ib01vZGVscy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIGlmIChtb2RlbC5pZCA9PT0gY2hpbGQuaWQpIHtcbiAgICAgICAgICAgIG1vZGVsLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW47XG4gICAgICAgICAgICBtb2RlbC5kZXB0aCA9IGNoaWxkLmRlcHRoO1xuICAgICAgICAgICAgY29tYm9Nb2RlbCA9IG1vZGVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGNvbWJvTW9kZWwpIHtcbiAgICAgICAgICBfdGhpcy5hZGRJdGVtKCdjb21ibycsIGNvbWJvTW9kZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgY29tYm9Hcm91cCA9IGdyYXBoLmdldCgnY29tYm9Hcm91cCcpO1xuICAgIGlmIChjb21ib0dyb3VwKSBjb21ib0dyb3VwLnNvcnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaUueWPmEl0ZW3nmoTmmL7npLrnirbmgIFcbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0gSUQg5oiWIOWunuS+i1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUg5piv5ZCm5pi+56S6XG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5jaGFuZ2VJdGVtVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChpdGVtLCB2aXNpYmxlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW0gdG8gYmUgc2hvd24gb3IgaGlkZGVuIGRvZXMgbm90IGV4aXN0IScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWl0ZW12aXNpYmlsaXR5Y2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHZpc2libGU6IHZpc2libGVcbiAgICB9KTtcbiAgICBpdGVtLmNoYW5nZVZpc2liaWxpdHkodmlzaWJsZSk7XG5cbiAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSBOT0RFKSB7XG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG4gICAgICBlYWNoKGVkZ2VzLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAvLyDoi6XpmpDol4/oioLngrnvvIzliJnlsIbkuI7kuYvlhbPogZTnmoTovrnkuZ/pmpDol49cbiAgICAgICAgLy8g6Iul5pi+56S66IqC54K577yM5YiZ5bCG5LiO5LmL5YWz6IGU55qE6L655Lmf5pi+56S677yM5L2G5piv6ZyA6KaB5Yik5pat6L655Lik56uv55qE6IqC54K56YO95piv5Y+v6KeB55qEXG4gICAgICAgIGlmICh2aXNpYmxlICYmICEoZWRnZS5nZXQoJ3NvdXJjZScpLmlzVmlzaWJsZSgpICYmIGVkZ2UuZ2V0KCd0YXJnZXQnKS5pc1Zpc2libGUoKSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5jaGFuZ2VJdGVtVmlzaWJpbGl0eShlZGdlLCB2aXNpYmxlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSBDT01CTykge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSBncmFwaC5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICAgIHZhciBpZF8xID0gaXRlbS5nZXQoJ2lkJyk7XG4gICAgICB2YXIgY2hpbGRyZW5fMSA9IFtdO1xuICAgICAgdmFyIGZvdW5kXzMgPSBmYWxzZTsgLy8gZmxhZyB0aGUgdGVybWluYXRlIHRoZSBmb3JFYWNoXG5cbiAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoZm91bmRfMykgcmV0dXJuO1xuICAgICAgICBpZiAoIWN0cmVlLmNoaWxkcmVuIHx8IGN0cmVlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIGlmIChjb21iby5pZCA9PT0gaWRfMSkge1xuICAgICAgICAgICAgY2hpbGRyZW5fMSA9IGNvbWJvLmNoaWxkcmVuO1xuICAgICAgICAgICAgZm91bmRfMyA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNoaWxkcmVuXzEgJiYgKCF2aXNpYmxlIHx8IHZpc2libGUgJiYgIWl0ZW0uZ2V0TW9kZWwoKS5jb2xsYXBzZWQpKSB7XG4gICAgICAgIGNoaWxkcmVuXzEuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICB2YXIgY2hpbGRJdGVtID0gZ3JhcGguZmluZEJ5SWQoY2hpbGQuaWQpO1xuXG4gICAgICAgICAgX3RoaXMuY2hhbmdlSXRlbVZpc2liaWxpdHkoY2hpbGRJdGVtLCB2aXNpYmxlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlZGdlcyA9IGl0ZW0uZ2V0RWRnZXMoKTtcbiAgICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIC8vIOiLpemakOiXjyBjb21ib++8jOWImeWwhuS4jiBjb21ibyDmnKzouqvlhbPogZTnmoTovrnkuZ/pmpDol49cbiAgICAgICAgLy8g6Iul5pi+56S6IGNvbWJv77yM5YiZ5bCG5LiOIGNvbWJvIOacrOi6q+WFs+iBlOeahOi+ueS5n+aYvuekuu+8jOS9huaYr+mcgOimgeWIpOaWrei+ueS4pOerr+eahOiKgueCuemDveaYr+WPr+ingeeahFxuICAgICAgICBpZiAodmlzaWJsZSAmJiAhKGVkZ2UuZ2V0KCdzb3VyY2UnKS5pc1Zpc2libGUoKSAmJiBlZGdlLmdldCgndGFyZ2V0JykuaXNWaXNpYmxlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuY2hhbmdlSXRlbVZpc2liaWxpdHkoZWRnZSwgdmlzaWJsZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW12aXNpYmlsaXR5Y2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHZpc2libGU6IHZpc2libGVcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIEl0ZW1Db250cm9sbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBJdGVtQ29udHJvbGxlcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/item.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/layout.js":
/*!******************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/layout.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n\n\n\n\nvar LayoutController =\n/** @class */\nfunction () {\n function LayoutController(graph) {\n this.graph = graph;\n this.layoutCfg = graph.get('layout') || {};\n this.layoutType = this.getLayoutType();\n this.layoutMethods = [];\n this.initLayout();\n } // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.initLayout = function () {// no data before rendering\n };\n\n LayoutController.prototype.getLayoutType = function () {\n return this.getLayoutCfgType(this.layoutCfg);\n };\n\n LayoutController.prototype.getLayoutCfgType = function (layoutCfg) {\n var type = layoutCfg.type; // type should be top priority\n\n if (type) {\n return type;\n }\n\n var pipes = layoutCfg.pipes;\n\n if (Array.isArray(pipes)) {\n return pipes.map(function (pipe) {\n return (pipe === null || pipe === void 0 ? void 0 : pipe.type) || '';\n });\n }\n\n return null;\n };\n\n LayoutController.prototype.isLayoutTypeSame = function (cfg) {\n var current = this.getLayoutCfgType(cfg); // already has pipes\n\n if (Array.isArray(this.layoutType)) {\n return this.layoutType.every(function (type, index) {\n return type === current[index];\n });\n }\n\n return (cfg === null || cfg === void 0 ? void 0 : cfg.type) === this.layoutType;\n }; // 绘制\n\n\n LayoutController.prototype.refreshLayout = function () {\n var graph = this.graph;\n if (!graph) return;\n\n if (graph.get('animate')) {\n graph.positionsAnimate();\n } else {\n graph.refreshPositions();\n }\n }; // 更换布局\n\n\n LayoutController.prototype.changeLayout = function (cfg) {\n this.layoutCfg = cfg;\n this.destoryLayoutMethods();\n this.layout();\n }; // 更换数据\n\n\n LayoutController.prototype.changeData = function () {\n this.destoryLayoutMethods();\n this.layout();\n };\n\n LayoutController.prototype.destoryLayoutMethods = function () {\n var layoutMethods = this.layoutMethods;\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod) {\n layoutMethod.destroy();\n });\n this.layoutMethods = [];\n }; // 销毁布局,不能使用 this.destroy,因为 controller 还需要被使用,只是把布局算法销毁\n\n\n LayoutController.prototype.destroyLayout = function () {\n var graph = this.graph;\n this.destoryLayoutMethods();\n graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n }; // 从 this.graph 获取数据\n\n\n LayoutController.prototype.setDataFromGraph = function () {\n var nodes = [];\n var hiddenNodes = [];\n var edges = [];\n var hiddenEdges = [];\n var comboEdges = [];\n var combos = [];\n var hiddenCombos = [];\n var nodeItems = this.graph.getNodes();\n var edgeItems = this.graph.getEdges();\n var comboItems = this.graph.getCombos();\n var nodeLength = nodeItems.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var nodeItem = nodeItems[i];\n if (!nodeItem || nodeItem.destroyed) continue;\n var model = nodeItem.getModel();\n\n if (!nodeItem.isVisible()) {\n hiddenNodes.push(model);\n continue;\n }\n\n nodes.push(model);\n }\n\n var edgeLength = edgeItems.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edgeItem = edgeItems[i];\n if (!edgeItem || edgeItem.destroyed) continue;\n var model = edgeItem.getModel();\n\n if (!edgeItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n if (!model.isComboEdge) edges.push(model);else comboEdges.push(model);\n }\n\n var comboLength = comboItems.length;\n\n for (var i = 0; i < comboLength; i++) {\n var comboItem = comboItems[i];\n if (comboItem.destroyed) continue;\n var model = comboItem.getModel();\n\n if (!comboItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n combos.push(model);\n }\n\n return {\n nodes: nodes,\n hiddenNodes: hiddenNodes,\n edges: edges,\n hiddenEdges: hiddenEdges,\n combos: combos,\n hiddenCombos: hiddenCombos,\n comboEdges: comboEdges\n };\n };\n\n LayoutController.prototype.reLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n var graph = _this.graph;\n var layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n\n layoutMethod.init(_this.data);\n\n if (layoutType === 'force') {\n layoutMethod.ticking = false;\n layoutMethod.forceSimulation.stop();\n }\n\n graph.emit('beforesublayout', {\n type: layoutType\n });\n layoutMethod.execute();\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n });\n }; // 重新布局\n\n\n LayoutController.prototype.relayout = function (reloadData) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods,\n layoutCfg = _a.layoutCfg;\n\n if (reloadData) {\n this.data = this.setDataFromGraph();\n var nodes = this.data.nodes;\n\n if (!nodes) {\n return false;\n }\n\n this.initPositions(layoutCfg.center, nodes);\n }\n\n graph.emit('beforelayout');\n var start = Promise.resolve();\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg[index];\n start = start.then(function () {\n return _this.reLayoutMethod(layoutMethod, currentCfg);\n });\n });\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('relayout failed', error);\n });\n }; // 筛选参与布局的nodes和edges\n\n\n LayoutController.prototype.filterLayoutData = function (data, cfg) {\n var nodes = data.nodes,\n edges = data.edges,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(data, [\"nodes\", \"edges\"]);\n\n if (!nodes) {\n return data;\n }\n\n var nodesFilter;\n var edegsFilter;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) {\n nodesFilter = cfg.nodesFilter;\n } else {\n nodesFilter = function nodesFilter() {\n return true;\n };\n }\n\n var fNodes = nodes.filter(nodesFilter);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) {\n edegsFilter = cfg.edgesFilter;\n } else {\n var nodesMap_1 = fNodes.reduce(function (acc, cur) {\n acc[cur.id] = true;\n return acc;\n }, {});\n\n edegsFilter = function edegsFilter(edge) {\n return nodesMap_1[edge.source] && nodesMap_1[edge.target];\n };\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n nodes: fNodes,\n edges: edges.filter(edegsFilter)\n }, rest);\n };\n\n LayoutController.prototype.getLayoutBBox = function (nodes) {\n var graph = this.graph;\n var graphGroupNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(graph.getNodes(), function (n) {\n return n.getModel().layoutOrder;\n });\n var layoutNodes = Object.values(graphGroupNodes).map(function (value) {\n var bbox = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"calculationItemsBBox\"])(value);\n bbox.size = [bbox.width, bbox.height];\n return bbox;\n });\n var groupNodes = Object.values(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(nodes, 'layoutOrder'));\n return {\n groupNodes: groupNodes,\n layoutNodes: layoutNodes\n };\n }; // 控制布局动画\n // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.layoutAnimate = function () {}; // 将当前节点的平均中心移动到原点\n\n\n LayoutController.prototype.moveToZero = function () {\n var graph = this.graph;\n var data = graph.get('data');\n var nodes = data.nodes;\n\n if (nodes[0].x === undefined || nodes[0].x === null || Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(nodes[0].x)) {\n return;\n }\n\n var meanCenter = [0, 0];\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n meanCenter[0] += node.x;\n meanCenter[1] += node.y;\n }\n\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x -= meanCenter[0];\n node.y -= meanCenter[1];\n }\n }; // 初始化节点到 center 附近\n\n\n LayoutController.prototype.initPositions = function (center, nodes) {\n var graph = this.graph;\n\n if (!nodes) {\n return false;\n }\n\n var nodeLength = nodes ? nodes.length : 0;\n if (!nodeLength) return;\n var width = graph.get('width') * 0.85;\n var height = graph.get('height') * 0.85;\n var horiNum = Math.ceil(Math.sqrt(nodeLength) * (width / height));\n var vertiNum = Math.ceil(nodeLength / horiNum);\n var horiGap = width / (horiNum - 1);\n var vertiGap = height / (vertiNum - 1);\n if (!isFinite(horiGap) || !horiGap) horiGap = 0;\n if (!isFinite(vertiGap) || !horiGap) vertiGap = 0;\n var beginX = center[0] - width / 2;\n var beginY = center[1] - height / 2;\n var allHavePos = true;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.x)) {\n allHavePos = false;\n node.x = i % horiNum * horiGap + beginX;\n }\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.y)) {\n allHavePos = false;\n node.y = Math.floor(i / horiNum) * vertiGap + beginY;\n }\n }\n\n return allHavePos;\n };\n\n LayoutController.prototype.destroy = function () {\n this.graph = null;\n this.destoryLayoutMethods();\n this.destroyed = true;\n };\n\n return LayoutController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LayoutController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2xheW91dC5qcz9hZTU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1E7QUFDYTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsdURBQXVEO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdEO0FBQ2hEOztBQUVBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEZBQTRGOztBQUU1RjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0RBQU07O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsNkRBQVU7QUFDbEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw2REFBVTtBQUNsQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQUk7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMERBQU87QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxpQkFBaUIsdUVBQW9CO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUNBQW1DLDBEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQSw0REFBNEQ7OztBQUc1RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyREFBMkQsd0RBQUs7QUFDaEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQSxVQUFVLHdEQUFLO0FBQ2Y7QUFDQTtBQUNBOztBQUVBLFVBQVUsd0RBQUs7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLCtFQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgZ3JvdXBCeSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgaXNOYU4sIGNhbGN1bGF0aW9uSXRlbXNCQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9iYXNlJztcblxudmFyIExheW91dENvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYXlvdXRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gZ3JhcGguZ2V0KCdsYXlvdXQnKSB8fCB7fTtcbiAgICB0aGlzLmxheW91dFR5cGUgPSB0aGlzLmdldExheW91dFR5cGUoKTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdExheW91dCA9IGZ1bmN0aW9uICgpIHsvLyBubyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5nZXRMYXlvdXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldExheW91dENmZ1R5cGUodGhpcy5sYXlvdXRDZmcpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dENmZ1R5cGUgPSBmdW5jdGlvbiAobGF5b3V0Q2ZnKSB7XG4gICAgdmFyIHR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gdHlwZSBzaG91bGQgYmUgdG9wIHByaW9yaXR5XG5cbiAgICBpZiAodHlwZSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgdmFyIHBpcGVzID0gbGF5b3V0Q2ZnLnBpcGVzO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGlwZXMpKSB7XG4gICAgICByZXR1cm4gcGlwZXMubWFwKGZ1bmN0aW9uIChwaXBlKSB7XG4gICAgICAgIHJldHVybiAocGlwZSA9PT0gbnVsbCB8fCBwaXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwaXBlLnR5cGUpIHx8ICcnO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaXNMYXlvdXRUeXBlU2FtZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0TGF5b3V0Q2ZnVHlwZShjZmcpOyAvLyBhbHJlYWR5IGhhcyBwaXBlc1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5sYXlvdXRUeXBlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VHlwZS5ldmVyeShmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09IGN1cnJlbnRbaW5kZXhdO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcudHlwZSkgPT09IHRoaXMubGF5b3V0VHlwZTtcbiAgfTsgLy8g57uY5Yi2XG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWZyZXNoTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgaWYgKCFncmFwaCkgcmV0dXJuO1xuXG4gICAgaWYgKGdyYXBoLmdldCgnYW5pbWF0ZScpKSB7XG4gICAgICBncmFwaC5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYXBoLnJlZnJlc2hQb3NpdGlvbnMoKTtcbiAgICB9XG4gIH07IC8vIOabtOaNouW4g+WxgFxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuY2hhbmdlTGF5b3V0ID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gY2ZnO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmxheW91dCgpO1xuICB9OyAvLyDmm7TmjaLmlbDmja5cblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kZXN0b3J5TGF5b3V0TWV0aG9kcygpO1xuICAgIHRoaXMubGF5b3V0KCk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdG9yeUxheW91dE1ldGhvZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxheW91dE1ldGhvZHMgPSB0aGlzLmxheW91dE1ldGhvZHM7XG4gICAgbGF5b3V0TWV0aG9kcyA9PT0gbnVsbCB8fCBsYXlvdXRNZXRob2RzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRNZXRob2RzLmZvckVhY2goZnVuY3Rpb24gKGxheW91dE1ldGhvZCkge1xuICAgICAgbGF5b3V0TWV0aG9kLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgfTsgLy8g6ZSA5q+B5biD5bGA77yM5LiN6IO95L2/55SoIHRoaXMuZGVzdHJvee+8jOWboOS4uiBjb250cm9sbGVyIOi/mOmcgOimgeiiq+S9v+eUqO+8jOWPquaYr+aKiuW4g+WxgOeul+azlemUgOavgVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveUxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICBncmFwaC5zZXQoJ2xheW91dCcsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sYXlvdXRDZmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXlvdXRUeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGF5b3V0TWV0aG9kcyA9IHVuZGVmaW5lZDtcbiAgfTsgLy8g5LuOIHRoaXMuZ3JhcGgg6I635Y+W5pWw5o2uXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5zZXREYXRhRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Ob2RlcyA9IFtdO1xuICAgIHZhciBlZGdlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5FZGdlcyA9IFtdO1xuICAgIHZhciBjb21ib0VkZ2VzID0gW107XG4gICAgdmFyIGNvbWJvcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Db21ib3MgPSBbXTtcbiAgICB2YXIgbm9kZUl0ZW1zID0gdGhpcy5ncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBlZGdlSXRlbXMgPSB0aGlzLmdyYXBoLmdldEVkZ2VzKCk7XG4gICAgdmFyIGNvbWJvSXRlbXMgPSB0aGlzLmdyYXBoLmdldENvbWJvcygpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZUl0ZW1zLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZUl0ZW0gPSBub2RlSXRlbXNbaV07XG4gICAgICBpZiAoIW5vZGVJdGVtIHx8IG5vZGVJdGVtLmRlc3Ryb3llZCkgY29udGludWU7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlSXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAoIW5vZGVJdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlSXRlbXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlSXRlbSA9IGVkZ2VJdGVtc1tpXTtcbiAgICAgIGlmICghZWRnZUl0ZW0gfHwgZWRnZUl0ZW0uZGVzdHJveWVkKSBjb250aW51ZTtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2VJdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghZWRnZUl0ZW0uaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgaGlkZGVuRWRnZXMucHVzaChtb2RlbCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW1vZGVsLmlzQ29tYm9FZGdlKSBlZGdlcy5wdXNoKG1vZGVsKTtlbHNlIGNvbWJvRWRnZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9JdGVtcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJvTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21ib0l0ZW0gPSBjb21ib0l0ZW1zW2ldO1xuICAgICAgaWYgKGNvbWJvSXRlbS5kZXN0cm95ZWQpIGNvbnRpbnVlO1xuICAgICAgdmFyIG1vZGVsID0gY29tYm9JdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghY29tYm9JdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbkVkZ2VzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29tYm9zLnB1c2gobW9kZWwpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBub2Rlczogbm9kZXMsXG4gICAgICBoaWRkZW5Ob2RlczogaGlkZGVuTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMsXG4gICAgICBoaWRkZW5FZGdlczogaGlkZGVuRWRnZXMsXG4gICAgICBjb21ib3M6IGNvbWJvcyxcbiAgICAgIGhpZGRlbkNvbWJvczogaGlkZGVuQ29tYm9zLFxuICAgICAgY29tYm9FZGdlczogY29tYm9FZGdlc1xuICAgIH07XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUucmVMYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAobGF5b3V0TWV0aG9kLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHZhciBncmFwaCA9IF90aGlzLmdyYXBoO1xuICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcgPT09IG51bGwgfHwgbGF5b3V0Q2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRDZmcudHlwZTsgLy8g5q+P5Liq5biD5bGA5pa55rOV6YO96ZyA6KaB5rOo5YaMXG5cbiAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgdHlwZTogbGF5b3V0VHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgfTtcblxuICAgICAgbGF5b3V0TWV0aG9kLmluaXQoX3RoaXMuZGF0YSk7XG5cbiAgICAgIGlmIChsYXlvdXRUeXBlID09PSAnZm9yY2UnKSB7XG4gICAgICAgIGxheW91dE1ldGhvZC50aWNraW5nID0gZmFsc2U7XG4gICAgICAgIGxheW91dE1ldGhvZC5mb3JjZVNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5lbWl0KCdiZWZvcmVzdWJsYXlvdXQnLCB7XG4gICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0TWV0aG9kLmV4ZWN1dGUoKTtcbiAgICAgIGlmIChsYXlvdXRNZXRob2QuaXNDdXN0b21MYXlvdXQgJiYgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKSBsYXlvdXRDZmcub25MYXlvdXRFbmQoKTtcbiAgICB9KTtcbiAgfTsgLy8g6YeN5paw5biD5bGAXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWxheW91dCA9IGZ1bmN0aW9uIChyZWxvYWREYXRhKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGxheW91dE1ldGhvZHMgPSBfYS5sYXlvdXRNZXRob2RzLFxuICAgICAgICBsYXlvdXRDZmcgPSBfYS5sYXlvdXRDZmc7XG5cbiAgICBpZiAocmVsb2FkRGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZXREYXRhRnJvbUdyYXBoKCk7XG4gICAgICB2YXIgbm9kZXMgPSB0aGlzLmRhdGEubm9kZXM7XG5cbiAgICAgIGlmICghbm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluaXRQb3NpdGlvbnMobGF5b3V0Q2ZnLmNlbnRlciwgbm9kZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHZhciBzdGFydCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGxheW91dE1ldGhvZHMgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0TWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChsYXlvdXRNZXRob2QsIGluZGV4KSB7XG4gICAgICB2YXIgY3VycmVudENmZyA9IGxheW91dENmZ1tpbmRleF07XG4gICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMucmVMYXlvdXRNZXRob2QobGF5b3V0TWV0aG9kLCBjdXJyZW50Q2ZnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vbkFsbExheW91dEVuZCkgbGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ3JlbGF5b3V0IGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfTsgLy8g562b6YCJ5Y+C5LiO5biD5bGA55qEbm9kZXPlkoxlZGdlc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZmlsdGVyTGF5b3V0RGF0YSA9IGZ1bmN0aW9uIChkYXRhLCBjZmcpIHtcbiAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IGRhdGEuZWRnZXMsXG4gICAgICAgIHJlc3QgPSBfX3Jlc3QoZGF0YSwgW1wibm9kZXNcIiwgXCJlZGdlc1wiXSk7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZXNGaWx0ZXI7XG4gICAgdmFyIGVkZWdzRmlsdGVyO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLm5vZGVzRmlsdGVyKSkge1xuICAgICAgbm9kZXNGaWx0ZXIgPSBjZmcubm9kZXNGaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzRmlsdGVyID0gZnVuY3Rpb24gbm9kZXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZk5vZGVzID0gbm9kZXMuZmlsdGVyKG5vZGVzRmlsdGVyKTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5lZGdlc0ZpbHRlcikpIHtcbiAgICAgIGVkZWdzRmlsdGVyID0gY2ZnLmVkZ2VzRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZXNNYXBfMSA9IGZOb2Rlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgICAgIGFjY1tjdXIuaWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgZWRlZ3NGaWx0ZXIgPSBmdW5jdGlvbiBlZGVnc0ZpbHRlcihlZGdlKSB7XG4gICAgICAgIHJldHVybiBub2Rlc01hcF8xW2VkZ2Uuc291cmNlXSAmJiBub2Rlc01hcF8xW2VkZ2UudGFyZ2V0XTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fYXNzaWduKHtcbiAgICAgIG5vZGVzOiBmTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMuZmlsdGVyKGVkZWdzRmlsdGVyKVxuICAgIH0sIHJlc3QpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dEJCb3ggPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBncmFwaEdyb3VwTm9kZXMgPSBncm91cEJ5KGdyYXBoLmdldE5vZGVzKCksIGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbi5nZXRNb2RlbCgpLmxheW91dE9yZGVyO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXROb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JhcGhHcm91cE5vZGVzKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgYmJveCA9IGNhbGN1bGF0aW9uSXRlbXNCQm94KHZhbHVlKTtcbiAgICAgIGJib3guc2l6ZSA9IFtiYm94LndpZHRoLCBiYm94LmhlaWdodF07XG4gICAgICByZXR1cm4gYmJveDtcbiAgICB9KTtcbiAgICB2YXIgZ3JvdXBOb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBCeShub2RlcywgJ2xheW91dE9yZGVyJykpO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cE5vZGVzOiBncm91cE5vZGVzLFxuICAgICAgbGF5b3V0Tm9kZXM6IGxheW91dE5vZGVzXG4gICAgfTtcbiAgfTsgLy8g5o6n5Yi25biD5bGA5Yqo55S7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5sYXlvdXRBbmltYXRlID0gZnVuY3Rpb24gKCkge307IC8vIOWwhuW9k+WJjeiKgueCueeahOW5s+Wdh+S4reW/g+enu+WKqOWIsOWOn+eCuVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUubW92ZVRvWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBkYXRhID0gZ3JhcGguZ2V0KCdkYXRhJyk7XG4gICAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcblxuICAgIGlmIChub2Rlc1swXS54ID09PSB1bmRlZmluZWQgfHwgbm9kZXNbMF0ueCA9PT0gbnVsbCB8fCBpc05hTihub2Rlc1swXS54KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBtZWFuQ2VudGVyID0gWzAsIDBdO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBtZWFuQ2VudGVyWzBdICs9IG5vZGUueDtcbiAgICAgIG1lYW5DZW50ZXJbMV0gKz0gbm9kZS55O1xuICAgIH1cblxuICAgIG1lYW5DZW50ZXJbMF0gLz0gbm9kZXMubGVuZ3RoO1xuICAgIG1lYW5DZW50ZXJbMV0gLz0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBub2RlLnggLT0gbWVhbkNlbnRlclswXTtcbiAgICAgIG5vZGUueSAtPSBtZWFuQ2VudGVyWzFdO1xuICAgIH1cbiAgfTsgLy8g5Yid5aeL5YyW6IqC54K55YiwIGNlbnRlciDpmYTov5FcblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmluaXRQb3NpdGlvbnMgPSBmdW5jdGlvbiAoY2VudGVyLCBub2Rlcykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2RlcyA/IG5vZGVzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFub2RlTGVuZ3RoKSByZXR1cm47XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpICogMC44NTtcbiAgICB2YXIgaGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKSAqIDAuODU7XG4gICAgdmFyIGhvcmlOdW0gPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KG5vZGVMZW5ndGgpICogKHdpZHRoIC8gaGVpZ2h0KSk7XG4gICAgdmFyIHZlcnRpTnVtID0gTWF0aC5jZWlsKG5vZGVMZW5ndGggLyBob3JpTnVtKTtcbiAgICB2YXIgaG9yaUdhcCA9IHdpZHRoIC8gKGhvcmlOdW0gLSAxKTtcbiAgICB2YXIgdmVydGlHYXAgPSBoZWlnaHQgLyAodmVydGlOdW0gLSAxKTtcbiAgICBpZiAoIWlzRmluaXRlKGhvcmlHYXApIHx8ICFob3JpR2FwKSBob3JpR2FwID0gMDtcbiAgICBpZiAoIWlzRmluaXRlKHZlcnRpR2FwKSB8fCAhaG9yaUdhcCkgdmVydGlHYXAgPSAwO1xuICAgIHZhciBiZWdpblggPSBjZW50ZXJbMF0gLSB3aWR0aCAvIDI7XG4gICAgdmFyIGJlZ2luWSA9IGNlbnRlclsxXSAtIGhlaWdodCAvIDI7XG4gICAgdmFyIGFsbEhhdmVQb3MgPSB0cnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG5cbiAgICAgIGlmIChpc05hTigrbm9kZS54KSkge1xuICAgICAgICBhbGxIYXZlUG9zID0gZmFsc2U7XG4gICAgICAgIG5vZGUueCA9IGkgJSBob3JpTnVtICogaG9yaUdhcCArIGJlZ2luWDtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmFOKCtub2RlLnkpKSB7XG4gICAgICAgIGFsbEhhdmVQb3MgPSBmYWxzZTtcbiAgICAgICAgbm9kZS55ID0gTWF0aC5mbG9vcihpIC8gaG9yaU51bSkgKiB2ZXJ0aUdhcCArIGJlZ2luWTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsSGF2ZVBvcztcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIExheW91dENvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/layout.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/mode.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/mode.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../behavior/behavior */ \"./node_modules/@antv/g6-core/es/behavior/behavior.js\");\n\n\n\nvar ModeController =\n/** @class */\nfunction () {\n function ModeController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.modes = graph.get('modes') || {\n default: []\n };\n this.formatModes();\n this.mode = graph.get('defaultMode') || 'default';\n this.currentBehaves = [];\n this.setMode(this.mode);\n }\n\n ModeController.prototype.formatModes = function () {\n var modes = this.modes;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(mode, function (behavior, i) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n mode[i] = {\n type: behavior\n };\n }\n });\n });\n };\n\n ModeController.prototype.setBehaviors = function (mode) {\n var graph = this.graph;\n var behaviors = this.modes[mode];\n var behaves = [];\n var behave;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors || [], function (behavior) {\n var BehaviorInstance = _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getBehavior(behavior.type || behavior);\n\n if (!BehaviorInstance) {\n return;\n }\n\n behave = new BehaviorInstance(behavior);\n\n if (behave) {\n behave.bind(graph);\n behaves.push(behave);\n }\n });\n this.currentBehaves = behaves;\n };\n\n ModeController.mergeBehaviors = function (modeBehaviors, behaviors) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior) {\n if (modeBehaviors.indexOf(behavior) < 0) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n modeBehaviors.push(behavior);\n }\n });\n return modeBehaviors;\n };\n\n ModeController.filterBehaviors = function (modeBehaviors, behaviors) {\n var result = [];\n modeBehaviors.forEach(function (behavior) {\n var type = '';\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n type = behavior;\n } else {\n // eslint-disable-next-line prefer-destructuring\n type = behavior.type;\n }\n\n if (behaviors.indexOf(type) < 0) {\n result.push(behavior);\n }\n });\n return result;\n };\n\n ModeController.prototype.setMode = function (mode) {\n var _a = this,\n modes = _a.modes,\n graph = _a.graph;\n\n var current = mode;\n var behaviors = modes[current];\n\n if (!behaviors) {\n return;\n }\n\n graph.emit('beforemodechange', {\n mode: mode\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(this.currentBehaves, function (behave) {\n if (behave.delegate) behave.delegate.remove();\n behave.unbind(graph);\n });\n this.setBehaviors(current);\n graph.emit('aftermodechange', {\n mode: mode\n });\n this.mode = mode;\n };\n\n ModeController.prototype.getMode = function () {\n return this.mode;\n };\n /**\n * 动态增加或删除 Behavior\n *\n * @param {ModeType[]} behaviors\n * @param {(ModeType[] | ModeType)} modes\n * @param {boolean} isAdd\n * @returns {Mode}\n * @memberof Mode\n */\n\n\n ModeController.prototype.manipulateBehaviors = function (behaviors, modes, isAdd) {\n var _this = this;\n\n var behaves;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(behaviors)) {\n behaves = [behaviors];\n } else {\n behaves = behaviors;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(modes)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n if (!_this.modes[mode]) {\n if (isAdd) {\n _this.modes[mode] = behaves;\n }\n } else if (isAdd) {\n _this.modes[mode] = ModeController.mergeBehaviors(_this.modes[mode] || [], behaves);\n } else {\n _this.modes[mode] = ModeController.filterBehaviors(_this.modes[mode] || [], behaves);\n }\n });\n return this;\n }\n\n var currentMode = modes;\n\n if (!modes) {\n currentMode = this.mode; // isString(this.mode) ? this.mode : this.mode.type\n }\n\n if (!this.modes[currentMode]) {\n if (isAdd) {\n this.modes[currentMode] = behaves;\n }\n }\n\n if (isAdd) {\n this.modes[currentMode] = ModeController.mergeBehaviors(this.modes[currentMode] || [], behaves);\n } else {\n this.modes[currentMode] = ModeController.filterBehaviors(this.modes[currentMode] || [], behaves);\n }\n\n this.formatModes();\n this.setMode(this.mode);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n ModeController.prototype.updateBehavior = function (behavior, newCfg, mode) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n var behaviorSet = [];\n\n if (!mode || mode === this.mode || mode === 'default') {\n behaviorSet = this.currentBehaves;\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_1 = behaviorSet.length;\n\n for (var i = 0; i < length_1; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type) {\n behave.updateCfg(newCfg);\n return this;\n }\n\n if (i === length_1 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n } else {\n behaviorSet = this.modes[mode];\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_2 = behaviorSet.length;\n\n for (var i = 0; i < length_2; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type || behave === behavior.type) {\n if (behave === behavior.type) behave = {\n type: behave\n };\n Object.assign(behave, newCfg);\n behaviorSet[i] = behave;\n return this;\n }\n\n if (i === length_2 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n }\n\n return this;\n };\n\n ModeController.prototype.destroy = function () {\n this.graph = null;\n this.modes = null;\n this.currentBehaves = null;\n this.destroyed = true;\n };\n\n return ModeController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ModeController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanM/MTFlYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDTjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLDZCQUE2QiwwREFBUTs7QUFFckM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsV0FBVztBQUN4QixhQUFhLHdCQUF3QjtBQUNyQyxhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUywwREFBTztBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLFFBQVEsMERBQU87QUFDZixNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsK0JBQStCO0FBQzVDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLGNBQWM7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxxQkFBcUIsY0FBYztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJlaGF2aW9yIGZyb20gJy4uLy4uL2JlaGF2aW9yL2JlaGF2aW9yJztcblxudmFyIE1vZGVDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTW9kZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm1vZGVzID0gZ3JhcGguZ2V0KCdtb2RlcycpIHx8IHtcbiAgICAgIGRlZmF1bHQ6IFtdXG4gICAgfTtcbiAgICB0aGlzLmZvcm1hdE1vZGVzKCk7XG4gICAgdGhpcy5tb2RlID0gZ3JhcGguZ2V0KCdkZWZhdWx0TW9kZScpIHx8ICdkZWZhdWx0JztcbiAgICB0aGlzLmN1cnJlbnRCZWhhdmVzID0gW107XG4gICAgdGhpcy5zZXRNb2RlKHRoaXMubW9kZSk7XG4gIH1cblxuICBNb2RlQ29udHJvbGxlci5wcm90b3R5cGUuZm9ybWF0TW9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGVzID0gdGhpcy5tb2RlcztcbiAgICBlYWNoKG1vZGVzLCBmdW5jdGlvbiAobW9kZSkge1xuICAgICAgZWFjaChtb2RlLCBmdW5jdGlvbiAoYmVoYXZpb3IsIGkpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICAgIG1vZGVbaV0gPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5zZXRCZWhhdmlvcnMgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGJlaGF2aW9ycyA9IHRoaXMubW9kZXNbbW9kZV07XG4gICAgdmFyIGJlaGF2ZXMgPSBbXTtcbiAgICB2YXIgYmVoYXZlO1xuICAgIGVhY2goYmVoYXZpb3JzIHx8IFtdLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIHZhciBCZWhhdmlvckluc3RhbmNlID0gQmVoYXZpb3IuZ2V0QmVoYXZpb3IoYmVoYXZpb3IudHlwZSB8fCBiZWhhdmlvcik7XG5cbiAgICAgIGlmICghQmVoYXZpb3JJbnN0YW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGJlaGF2ZSA9IG5ldyBCZWhhdmlvckluc3RhbmNlKGJlaGF2aW9yKTtcblxuICAgICAgaWYgKGJlaGF2ZSkge1xuICAgICAgICBiZWhhdmUuYmluZChncmFwaCk7XG4gICAgICAgIGJlaGF2ZXMucHVzaChiZWhhdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBiZWhhdmVzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzID0gZnVuY3Rpb24gKG1vZGVCZWhhdmlvcnMsIGJlaGF2aW9ycykge1xuICAgIGVhY2goYmVoYXZpb3JzLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIGlmIChtb2RlQmVoYXZpb3JzLmluZGV4T2YoYmVoYXZpb3IpIDwgMCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICAgICAgYmVoYXZpb3IgPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBtb2RlQmVoYXZpb3JzLnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtb2RlQmVoYXZpb3JzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyA9IGZ1bmN0aW9uIChtb2RlQmVoYXZpb3JzLCBiZWhhdmlvcnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgbW9kZUJlaGF2aW9ycy5mb3JFYWNoKGZ1bmN0aW9uIChiZWhhdmlvcikge1xuICAgICAgdmFyIHR5cGUgPSAnJztcblxuICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICB0eXBlID0gYmVoYXZpb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdHlwZSA9IGJlaGF2aW9yLnR5cGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZWhhdmlvcnMuaW5kZXhPZih0eXBlKSA8IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vZGUgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIG1vZGVzID0gX2EubW9kZXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICB2YXIgY3VycmVudCA9IG1vZGU7XG4gICAgdmFyIGJlaGF2aW9ycyA9IG1vZGVzW2N1cnJlbnRdO1xuXG4gICAgaWYgKCFiZWhhdmlvcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIGVhY2godGhpcy5jdXJyZW50QmVoYXZlcywgZnVuY3Rpb24gKGJlaGF2ZSkge1xuICAgICAgaWYgKGJlaGF2ZS5kZWxlZ2F0ZSkgYmVoYXZlLmRlbGVnYXRlLnJlbW92ZSgpO1xuICAgICAgYmVoYXZlLnVuYmluZChncmFwaCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRCZWhhdmlvcnMoY3VycmVudCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLmdldE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWKqOaAgeWinuWKoOaIluWIoOmZpCBCZWhhdmlvclxuICAgKlxuICAgKiBAcGFyYW0ge01vZGVUeXBlW119IGJlaGF2aW9yc1xuICAgKiBAcGFyYW0geyhNb2RlVHlwZVtdIHwgTW9kZVR5cGUpfSBtb2Rlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWRkXG4gICAqIEByZXR1cm5zIHtNb2RlfVxuICAgKiBAbWVtYmVyb2YgTW9kZVxuICAgKi9cblxuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5tYW5pcHVsYXRlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMsIGlzQWRkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBiZWhhdmVzO1xuXG4gICAgaWYgKCFpc0FycmF5KGJlaGF2aW9ycykpIHtcbiAgICAgIGJlaGF2ZXMgPSBbYmVoYXZpb3JzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZlcyA9IGJlaGF2aW9ycztcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheShtb2RlcykpIHtcbiAgICAgIGVhY2gobW9kZXMsIGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgICAgIGlmICghX3RoaXMubW9kZXNbbW9kZV0pIHtcbiAgICAgICAgICBpZiAoaXNBZGQpIHtcbiAgICAgICAgICAgIF90aGlzLm1vZGVzW21vZGVdID0gYmVoYXZlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBZGQpIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzKF90aGlzLm1vZGVzW21vZGVdIHx8IFtdLCBiZWhhdmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyhfdGhpcy5tb2Rlc1ttb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRNb2RlID0gbW9kZXM7XG5cbiAgICBpZiAoIW1vZGVzKSB7XG4gICAgICBjdXJyZW50TW9kZSA9IHRoaXMubW9kZTsgLy8gaXNTdHJpbmcodGhpcy5tb2RlKSA/IHRoaXMubW9kZSA6IHRoaXMubW9kZS50eXBlXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSkge1xuICAgICAgaWYgKGlzQWRkKSB7XG4gICAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gYmVoYXZlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNBZGQpIHtcbiAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gTW9kZUNvbnRyb2xsZXIubWVyZ2VCZWhhdmlvcnModGhpcy5tb2Rlc1tjdXJyZW50TW9kZV0gfHwgW10sIGJlaGF2ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyh0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXRNb2RlcygpO1xuICAgIHRoaXMuc2V0TW9kZSh0aGlzLm1vZGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5pu05paw6KGM5Li65Y+C5pWwXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgTW9kZU9wdGlvbiB8IE1vZGVUeXBlfSBiZWhhdmlvciDpnIDopoHmm7TmlrDnmoTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gbW9kZXMg5oyH5a6a55qE5qih5byP5Lit55qE6KGM5Li677yM5LiN5oyH5a6a5YiZ5Li6IGRlZmF1bHRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICBiZWhhdmlvciA9IHtcbiAgICAgICAgdHlwZTogYmVoYXZpb3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGJlaGF2aW9yU2V0ID0gW107XG5cbiAgICBpZiAoIW1vZGUgfHwgbW9kZSA9PT0gdGhpcy5tb2RlIHx8IG1vZGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLmN1cnJlbnRCZWhhdmVzO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMSA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMTsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUpIHtcbiAgICAgICAgICBiZWhhdmUudXBkYXRlQ2ZnKG5ld0NmZyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA9PT0gbGVuZ3RoXzEgLSAxKSBjb25zb2xlLndhcm4oJ1VwZGF0ZSBiZWhhdmlvciBmYWlsZWQhIFRoZXJlIGlzIG5vIHN1Y2ggYmVoYXZpb3IgaW4gdGhlIG1vZGUnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLm1vZGVzW21vZGVdO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMiA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMjsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUgfHwgYmVoYXZlID09PSBiZWhhdmlvci50eXBlKSB7XG4gICAgICAgICAgaWYgKGJlaGF2ZSA9PT0gYmVoYXZpb3IudHlwZSkgYmVoYXZlID0ge1xuICAgICAgICAgICAgdHlwZTogYmVoYXZlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGJlaGF2ZSwgbmV3Q2ZnKTtcbiAgICAgICAgICBiZWhhdmlvclNldFtpXSA9IGJlaGF2ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID09PSBsZW5ndGhfMiAtIDEpIGNvbnNvbGUud2FybignVXBkYXRlIGJlaGF2aW9yIGZhaWxlZCEgVGhlcmUgaXMgbm8gc3VjaCBiZWhhdmlvciBpbiB0aGUgbW9kZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMubW9kZXMgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4gTW9kZUNvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/mode.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/state.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/state.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar timer = null;\n\nvar StateController =\n/** @class */\nfunction () {\n function StateController(graph) {\n this.graph = graph;\n /**\n * this.cachedStates = {\n * enabled: {\n * hover: [Node]\n * },\n * disabled: {}\n * }\n */\n\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n this.destroyed = false;\n }\n /**\n * 检查 cache 的可用性\n *\n * @private\n * @param {Item} item\n * @param {string} state\n * @param {object} cache\n * @returns\n * @memberof State\n */\n\n\n StateController.checkCache = function (item, state, cache) {\n if (!cache[state]) {\n return;\n }\n\n var index = cache[state].indexOf(item);\n\n if (index >= 0) {\n cache[state].splice(index, 1);\n }\n };\n /**\n * 缓存 state\n *\n * @private\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {object} states\n * @memberof State\n */\n\n\n StateController.cacheState = function (item, state, states) {\n if (!states[state]) {\n states[state] = [];\n }\n\n states[state].push(item);\n };\n /**\n * 更新 Item 的状态\n *\n * @param {Item} item Item实例\n * @param {string} state 状态名称\n * @param {boolean} enabled 状态是否可用\n * @memberof State\n */\n\n\n StateController.prototype.updateState = function (item, state, enabled) {\n var _this = this;\n\n var checkCache = StateController.checkCache,\n cacheState = StateController.cacheState;\n\n if (item.destroyed) {\n return;\n }\n\n var cachedStates = this.cachedStates;\n var enabledStates = cachedStates.enabled;\n var disabledStates = cachedStates.disabled;\n\n if (enabled) {\n checkCache(item, state, disabledStates);\n cacheState(item, state, enabledStates);\n } else {\n checkCache(item, state, enabledStates);\n cacheState(item, state, disabledStates);\n }\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(function () {\n timer = null;\n\n _this.updateGraphStates();\n }, 16);\n };\n /**\n * 批量更新 states,兼容 updateState,支持更新一个 state\n *\n * @param {Item} item\n * @param {(string | string[])} states\n * @param {boolean} enabled\n * @memberof State\n */\n\n\n StateController.prototype.updateStates = function (item, states, enabled) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(states)) {\n this.updateState(item, states, enabled);\n } else {\n states.forEach(function (state) {\n _this.updateState(item, state, enabled);\n });\n }\n };\n /**\n * 更新 states\n *\n * @memberof State\n */\n\n\n StateController.prototype.updateGraphStates = function () {\n var states = this.graph.get('states');\n var cachedStates = this.cachedStates;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.disabled, function (val, key) {\n if (states[key]) {\n states[key] = states[key].filter(function (item) {\n return val.indexOf(item) < 0 && !val.destroyed;\n });\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.enabled, function (val, key) {\n if (!states[key]) {\n states[key] = val;\n } else {\n var map_1 = {};\n states[key].forEach(function (item) {\n if (!item.destroyed) {\n map_1[item.get('id')] = true;\n }\n });\n val.forEach(function (item) {\n if (!item.destroyed) {\n var id = item.get('id');\n\n if (!map_1[id]) {\n map_1[id] = true;\n states[key].push(item);\n }\n }\n });\n }\n });\n this.graph.emit('graphstatechange', {\n states: states\n });\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n };\n\n StateController.prototype.destroy = function () {\n this.graph = null;\n this.cachedStates = null;\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = null;\n this.destroyed = true;\n };\n\n return StateController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (StateController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzPzc3N2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLG9CQUFvQjtBQUNqQyxhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsOEVBQWUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0aW1lciA9IG51bGw7XG5cbnZhciBTdGF0ZUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdGF0ZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgLyoqXG4gICAgICogdGhpcy5jYWNoZWRTdGF0ZXMgPSB7XG4gICAgICogICAgZW5hYmxlZDoge1xuICAgICAqICAgICAgICBob3ZlcjogW05vZGVdXG4gICAgICogICAgfSxcbiAgICAgKiAgICAgZGlzYWJsZWQ6IHt9XG4gICAgICogIH1cbiAgICAgKi9cblxuICAgIHRoaXMuY2FjaGVkU3RhdGVzID0ge1xuICAgICAgZW5hYmxlZDoge30sXG4gICAgICBkaXNhYmxlZDoge31cbiAgICB9O1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOajgOafpSBjYWNoZSDnmoTlj6/nlKjmgKdcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY2FjaGVcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIFN0YXRlXG4gICAqL1xuXG5cbiAgU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUsIGNhY2hlKSB7XG4gICAgaWYgKCFjYWNoZVtzdGF0ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBjYWNoZVtzdGF0ZV0uaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjYWNoZVtzdGF0ZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDnvJPlrZggc3RhdGVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0g5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlc1xuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSwgc3RhdGVzKSB7XG4gICAgaWYgKCFzdGF0ZXNbc3RhdGVdKSB7XG4gICAgICBzdGF0ZXNbc3RhdGVdID0gW107XG4gICAgfVxuXG4gICAgc3RhdGVzW3N0YXRlXS5wdXNoKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIEl0ZW0g55qE54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVt5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIOeKtuaAgeaYr+WQpuWPr+eUqFxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCBlbmFibGVkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjaGVja0NhY2hlID0gU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUsXG4gICAgICAgIGNhY2hlU3RhdGUgPSBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZTtcblxuICAgIGlmIChpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYWNoZWRTdGF0ZXMgPSB0aGlzLmNhY2hlZFN0YXRlcztcbiAgICB2YXIgZW5hYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5lbmFibGVkO1xuICAgIHZhciBkaXNhYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5kaXNhYmxlZDtcblxuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBjaGVja0NhY2hlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBlbmFibGVkU3RhdGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tDYWNoZShpdGVtLCBzdGF0ZSwgZW5hYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aW1lciA9IG51bGw7XG5cbiAgICAgIF90aGlzLnVwZGF0ZUdyYXBoU3RhdGVzKCk7XG4gICAgfSwgMTYpO1xuICB9O1xuICAvKipcbiAgICog5om56YeP5pu05pawIHN0YXRlc++8jOWFvOWuuSB1cGRhdGVTdGF0Ze+8jOaUr+aMgeabtOaWsOS4gOS4qiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW1cbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBzdGF0ZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkXG4gICAqIEBtZW1iZXJvZiBTdGF0ZVxuICAgKi9cblxuXG4gIFN0YXRlQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcywgZW5hYmxlZCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoc3RhdGVzKSkge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShpdGVtLCBzdGF0ZXMsIGVuYWJsZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgX3RoaXMudXBkYXRlU3RhdGUoaXRlbSwgc3RhdGUsIGVuYWJsZWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05pawIHN0YXRlc1xuICAgKlxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUdyYXBoU3RhdGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdyYXBoLmdldCgnc3RhdGVzJyk7XG4gICAgdmFyIGNhY2hlZFN0YXRlcyA9IHRoaXMuY2FjaGVkU3RhdGVzO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmRpc2FibGVkLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgIGlmIChzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHN0YXRlc1trZXldLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiB2YWwuaW5kZXhPZihpdGVtKSA8IDAgJiYgIXZhbC5kZXN0cm95ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmVuYWJsZWQsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgaWYgKCFzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtYXBfMSA9IHt9O1xuICAgICAgICBzdGF0ZXNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKCFpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgbWFwXzFbaXRlbS5nZXQoJ2lkJyldID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmICghaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgICAgICAgICBpZiAoIW1hcF8xW2lkXSkge1xuICAgICAgICAgICAgICBtYXBfMVtpZF0gPSB0cnVlO1xuICAgICAgICAgICAgICBzdGF0ZXNba2V5XS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCdncmFwaHN0YXRlY2hhbmdlJywge1xuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFN0YXRlcyA9IHtcbiAgICAgIGVuYWJsZWQ6IHt9LFxuICAgICAgZGlzYWJsZWQ6IHt9XG4gICAgfTtcbiAgfTtcblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gICAgdGhpcy5jYWNoZWRTdGF0ZXMgPSBudWxsO1xuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFN0YXRlQ29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/state.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/controller/view.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/controller/view.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n\n\n\n\n\nvar ViewController =\n/** @class */\nfunction () {\n function ViewController(graph) {\n this.destroyed = false;\n this.graph = graph;\n this.destroyed = false;\n } // get view center coordinate\n\n\n ViewController.prototype.getViewCenter = function () {\n var padding = this.getFormatPadding();\n var graph = this.graph;\n var width = this.graph.get('width');\n var height = graph.get('height');\n return {\n x: (width - padding[1] - padding[3]) / 2 + padding[3],\n y: (height - padding[0] - padding[2]) / 2 + padding[0]\n };\n };\n\n ViewController.prototype.fitCenter = function () {\n var graph = this.graph;\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n }; // fit view graph\n\n\n ViewController.prototype.fitView = function () {\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var w = (width - padding[1] - padding[3]) / bbox.width;\n var h = (height - padding[0] - padding[2]) / bbox.height;\n var ratio = w;\n\n if (w > h) {\n ratio = h;\n }\n\n if (!graph.zoom(ratio, viewCenter)) {\n console.warn('zoom failed, ratio out of range, ratio: %f', ratio);\n }\n }; // fit view graph by rule\n\n\n ViewController.prototype.fitViewByRules = function (rules) {\n var _a = rules.onlyOutOfViewPort,\n onlyOutOfViewPort = _a === void 0 ? false : _a,\n _b = rules.direction,\n direction = _b === void 0 ? 'both' : _b,\n _c = rules.ratioRule,\n ratioRule = _c === void 0 ? 'min' : _c;\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var wRatio = (width - padding[1] - padding[3]) / bbox.width;\n var hRatio = (height - padding[0] - padding[2]) / bbox.height;\n var ratio;\n\n if (direction === 'x') {\n ratio = wRatio;\n } else if (direction === 'y') {\n ratio = hRatio;\n } else {\n // ratioRule\n ratio = ratioRule === 'max' ? Math.max(wRatio, hRatio) : Math.min(wRatio, hRatio);\n } // 如果设置了仅对超出视口宽高的场景进行fitview,则没超出的场景zoom取1\n\n\n if (onlyOutOfViewPort) {\n ratio = ratio < 1 ? ratio : 1;\n }\n\n var initZoomRatio = graph.getZoom();\n var endZoom = initZoomRatio * ratio;\n var minZoom = graph.get('minZoom'); // 如果zoom小于最小zoom, 则以最小zoom为准\n\n if (endZoom < minZoom) {\n endZoom = minZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph minzoom has been used instead');\n }\n\n graph.zoomTo(endZoom, viewCenter);\n };\n\n ViewController.prototype.getFormatPadding = function () {\n var padding = this.graph.get('fitViewPadding');\n return Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(padding);\n };\n\n ViewController.prototype.focusPoint = function (point, animate, animateCfg) {\n var _this = this;\n\n var viewCenter = this.getViewCenter();\n var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y);\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (animate) {\n var dx_1 = (modelCenter.x - point.x) * viewportMatrix[0];\n var dy_1 = (modelCenter.y - point.y) * viewportMatrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0; // 动画每次平移一点,直到目标位置\n\n this.graph.get('canvas').animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n\n _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1);\n\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, animateCfg));\n } else {\n this.graph.translate((modelCenter.x - point.x) * viewportMatrix[0], (modelCenter.y - point.y) * viewportMatrix[4]);\n }\n };\n /**\n * 将 Canvas 坐标转成视口坐标\n * @param canvasX canvas x 坐标\n * @param canvasY canvas y 坐标\n */\n\n\n ViewController.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var point = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"invertMatrix\"])({\n x: canvasX,\n y: canvasY\n }, viewportMatrix);\n return point;\n };\n /**\n * 将页面坐标转成视口坐标\n * @param clientX 页面 x 坐标\n * @param clientY 页面 y 坐标\n */\n\n\n ViewController.prototype.getPointByClient = function (clientX, clientY) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = canvas.getPointByClient(clientX, clientY);\n return this.getPointByCanvas(canvasPoint.x, canvasPoint.y);\n };\n /**\n * 将视口坐标转成页面坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getClientByPoint = function (x, y) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = this.getCanvasByPoint(x, y);\n var point = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y);\n return {\n x: point.x,\n y: point.y\n };\n };\n /**\n * 将视口坐标转成 Canvas 坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getCanvasByPoint = function (x, y) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])({\n x: x,\n y: y\n }, viewportMatrix);\n };\n /**\n * 将元素移动到画布中心\n * @param item Item 实例或 id\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n ViewController.prototype.focus = function (item, animate, animateCfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = this.graph.findById(item);\n }\n\n if (item) {\n var x = 0,\n y = 0;\n\n if (item.getType && item.getType() === 'edge') {\n var sourceMatrix = item.getSource().get('group').getMatrix();\n var targetMatrix = item.getTarget().get('group').getMatrix();\n\n if (sourceMatrix && targetMatrix) {\n x = (sourceMatrix[6] + targetMatrix[6]) / 2;\n y = (sourceMatrix[7] + targetMatrix[7]) / 2;\n } else if (sourceMatrix || targetMatrix) {\n x = sourceMatrix ? sourceMatrix[6] : targetMatrix[6];\n y = sourceMatrix ? sourceMatrix[7] : targetMatrix[7];\n }\n } else {\n var group = item.get('group');\n var matrix = group.getMatrix();\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n x = matrix[6];\n y = matrix[7];\n } // 用实际位置而不是model中的x,y,防止由于拖拽等的交互导致model的x,y并不是当前的x,y\n\n\n this.focusPoint({\n x: x,\n y: y\n }, animate, animateCfg);\n }\n };\n /**\n * 改变 canvas 画布的宽度和高度\n * @param width canvas 宽度\n * @param height canvas 高度\n */\n\n\n ViewController.prototype.changeSize = function (width, height) {\n var graph = this.graph;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(width) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(height)) {\n throw Error('invalid canvas width & height, please make sure width & height type is number');\n }\n\n graph.set({\n width: width,\n height: height\n });\n var canvas = graph.get('canvas');\n canvas.changeSize(width, height); // change the size of grid plugin if it exists on graph\n\n var plugins = graph.get('plugins');\n plugins.forEach(function (plugin) {\n if (plugin.get('gridContainer')) {\n // 网格定位信息初始化\n plugin.positionInit();\n }\n });\n };\n\n ViewController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = false;\n };\n\n return ViewController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ViewController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3ZpZXcuanM/NjUzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2U7QUFDQTtBQUNZOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGdFQUFhO0FBQ3hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRSxzREFBUSxHQUFHO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsK0RBQVk7QUFDNUI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFdBQVcsOERBQVc7QUFDdEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsU0FBUywyREFBUSxZQUFZLDJEQUFRO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDZFQUFjIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci92aWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZm9ybWF0UGFkZGluZyB9IGZyb20gJy4uLy4uL3V0aWwvYmFzZSc7XG5pbXBvcnQgeyBhcHBseU1hdHJpeCwgaW52ZXJ0TWF0cml4IH0gZnJvbSAnLi4vLi4vdXRpbC9tYXRoJztcblxudmFyIFZpZXdDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmlld0NvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuZ3JhcGggPSBncmFwaDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9IC8vIGdldCB2aWV3IGNlbnRlciBjb29yZGluYXRlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Vmlld0NlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFkZGluZyA9IHRoaXMuZ2V0Rm9ybWF0UGFkZGluZygpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHdpZHRoID0gdGhpcy5ncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIDIgKyBwYWRkaW5nWzNdLFxuICAgICAgeTogKGhlaWdodCAtIHBhZGRpbmdbMF0gLSBwYWRkaW5nWzJdKSAvIDIgKyBwYWRkaW5nWzBdXG4gICAgfTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Q2VudGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gIH07IC8vIGZpdCB2aWV3IGdyYXBoXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0VmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5nZXRGb3JtYXRQYWRkaW5nKCk7XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBncm91cCA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpO1xuICAgIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIGlmIChiYm94LndpZHRoID09PSAwIHx8IGJib3guaGVpZ2h0ID09PSAwKSByZXR1cm47XG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgZ3JvdXBDZW50ZXIgPSB7XG4gICAgICB4OiBiYm94LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IGJib3gueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgZ3JhcGgudHJhbnNsYXRlKHZpZXdDZW50ZXIueCAtIGdyb3VwQ2VudGVyLngsIHZpZXdDZW50ZXIueSAtIGdyb3VwQ2VudGVyLnkpO1xuICAgIHZhciB3ID0gKHdpZHRoIC0gcGFkZGluZ1sxXSAtIHBhZGRpbmdbM10pIC8gYmJveC53aWR0aDtcbiAgICB2YXIgaCA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW8gPSB3O1xuXG4gICAgaWYgKHcgPiBoKSB7XG4gICAgICByYXRpbyA9IGg7XG4gICAgfVxuXG4gICAgaWYgKCFncmFwaC56b29tKHJhdGlvLCB2aWV3Q2VudGVyKSkge1xuICAgICAgY29uc29sZS53YXJuKCd6b29tIGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbyk7XG4gICAgfVxuICB9OyAvLyBmaXQgdmlldyBncmFwaCBieSBydWxlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Vmlld0J5UnVsZXMgPSBmdW5jdGlvbiAocnVsZXMpIHtcbiAgICB2YXIgX2EgPSBydWxlcy5vbmx5T3V0T2ZWaWV3UG9ydCxcbiAgICAgICAgb25seU91dE9mVmlld1BvcnQgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSxcbiAgICAgICAgX2IgPSBydWxlcy5kaXJlY3Rpb24sXG4gICAgICAgIGRpcmVjdGlvbiA9IF9iID09PSB2b2lkIDAgPyAnYm90aCcgOiBfYixcbiAgICAgICAgX2MgPSBydWxlcy5yYXRpb1J1bGUsXG4gICAgICAgIHJhdGlvUnVsZSA9IF9jID09PSB2b2lkIDAgPyAnbWluJyA6IF9jO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHBhZGRpbmcgPSB0aGlzLmdldEZvcm1hdFBhZGRpbmcoKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gICAgdmFyIHdSYXRpbyA9ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIGJib3gud2lkdGg7XG4gICAgdmFyIGhSYXRpbyA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW87XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAneCcpIHtcbiAgICAgIHJhdGlvID0gd1JhdGlvO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAneScpIHtcbiAgICAgIHJhdGlvID0gaFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByYXRpb1J1bGVcbiAgICAgIHJhdGlvID0gcmF0aW9SdWxlID09PSAnbWF4JyA/IE1hdGgubWF4KHdSYXRpbywgaFJhdGlvKSA6IE1hdGgubWluKHdSYXRpbywgaFJhdGlvKTtcbiAgICB9IC8vIOWmguaenOiuvue9ruS6huS7heWvuei2heWHuuinhuWPo+WuvemrmOeahOWcuuaZr+i/m+ihjGZpdHZpZXfvvIzliJnmsqHotoXlh7rnmoTlnLrmma96b29t5Y+WMVxuXG5cbiAgICBpZiAob25seU91dE9mVmlld1BvcnQpIHtcbiAgICAgIHJhdGlvID0gcmF0aW8gPCAxID8gcmF0aW8gOiAxO1xuICAgIH1cblxuICAgIHZhciBpbml0Wm9vbVJhdGlvID0gZ3JhcGguZ2V0Wm9vbSgpO1xuICAgIHZhciBlbmRab29tID0gaW5pdFpvb21SYXRpbyAqIHJhdGlvO1xuICAgIHZhciBtaW5ab29tID0gZ3JhcGguZ2V0KCdtaW5ab29tJyk7IC8vIOWmguaenHpvb23lsI/kuo7mnIDlsI96b29tLCDliJnku6XmnIDlsI96b29t5Li65YeGXG5cbiAgICBpZiAoZW5kWm9vbSA8IG1pblpvb20pIHtcbiAgICAgIGVuZFpvb20gPSBtaW5ab29tO1xuICAgICAgY29uc29sZS53YXJuKCdmaXR2aWV3IGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbywgJ2dyYXBoIG1pbnpvb20gaGFzIGJlZW4gdXNlZCBpbnN0ZWFkJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguem9vbVRvKGVuZFpvb20sIHZpZXdDZW50ZXIpO1xuICB9O1xuXG4gIFZpZXdDb250cm9sbGVyLnByb3RvdHlwZS5nZXRGb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5ncmFwaC5nZXQoJ2ZpdFZpZXdQYWRkaW5nJyk7XG4gICAgcmV0dXJuIGZvcm1hdFBhZGRpbmcocGFkZGluZyk7XG4gIH07XG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmZvY3VzUG9pbnQgPSBmdW5jdGlvbiAocG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgbW9kZWxDZW50ZXIgPSB0aGlzLmdldFBvaW50QnlDYW52YXModmlld0NlbnRlci54LCB2aWV3Q2VudGVyLnkpO1xuICAgIHZhciB2aWV3cG9ydE1hdHJpeCA9IHRoaXMuZ3JhcGguZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuICAgIGlmICghdmlld3BvcnRNYXRyaXgpIHZpZXdwb3J0TWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIHZhciBkeF8xID0gKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdO1xuICAgICAgdmFyIGR5XzEgPSAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF07XG4gICAgICB2YXIgbGFzdFhfMSA9IDA7XG4gICAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgICB2YXIgbmV3WF8xID0gMDtcbiAgICAgIHZhciBuZXdZXzEgPSAwOyAvLyDliqjnlLvmr4/mrKHlubPnp7vkuIDngrnvvIznm7TliLDnm67moIfkvY3nva5cblxuICAgICAgdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmFuaW1hdGUoZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgICAgbmV3WV8xID0gZHlfMSAqIHJhdGlvO1xuXG4gICAgICAgIF90aGlzLmdyYXBoLnRyYW5zbGF0ZShuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xKTtcblxuICAgICAgICBsYXN0WF8xID0gbmV3WF8xO1xuICAgICAgICBsYXN0WV8xID0gbmV3WV8xO1xuICAgICAgfSwgX19hc3NpZ24oe30sIGFuaW1hdGVDZmcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmFwaC50cmFuc2xhdGUoKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdLCAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWwhiBDYW52YXMg5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjYW52YXNYIGNhbnZhcyB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2FudmFzWSBjYW52YXMgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnQgPSBpbnZlcnRNYXRyaXgoe1xuICAgICAgeDogY2FudmFzWCxcbiAgICAgIHk6IGNhbnZhc1lcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gICAgcmV0dXJuIHBvaW50O1xuICB9O1xuICAvKipcbiAgICog5bCG6aG16Z2i5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjbGllbnRYIOmhtemdoiB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2xpZW50WSDpobXpnaIgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNsaWVudCA9IGZ1bmN0aW9uIChjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChjbGllbnRYLCBjbGllbnRZKTtcbiAgICByZXR1cm4gdGhpcy5nZXRQb2ludEJ5Q2FudmFzKGNhbnZhc1BvaW50LngsIGNhbnZhc1BvaW50LnkpO1xuICB9O1xuICAvKipcbiAgICog5bCG6KeG5Y+j5Z2Q5qCH6L2s5oiQ6aG16Z2i5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2xpZW50QnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSB0aGlzLmdldENhbnZhc0J5UG9pbnQoeCwgeSk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldENsaWVudEJ5UG9pbnQoY2FudmFzUG9pbnQueCwgY2FudmFzUG9pbnQueSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuinhuWPo+WdkOagh+i9rOaIkCBDYW52YXMg5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2FudmFzQnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlNYXRyaXgoe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDnlLvluIPkuK3lv4NcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSDlrp7kvovmiJYgaWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhbmltYXRlIOaYr+WQpuW4puacieWKqOeUu+WcsOenu+WKqFxuICAgKiBAcGFyYW0ge0dyYXBoQW5pbWF0ZUNvbmZpZ30gYW5pbWF0ZUNmZyDoi6XluKbmnInliqjnlLvvvIzliqjnlLvnmoTphY3nva7poblcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoaXRlbSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZykge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB4ID0gMCxcbiAgICAgICAgICB5ID0gMDtcblxuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHZhciBzb3VyY2VNYXRyaXggPSBpdGVtLmdldFNvdXJjZSgpLmdldCgnZ3JvdXAnKS5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIHRhcmdldE1hdHJpeCA9IGl0ZW0uZ2V0VGFyZ2V0KCkuZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuXG4gICAgICAgIGlmIChzb3VyY2VNYXRyaXggJiYgdGFyZ2V0TWF0cml4KSB7XG4gICAgICAgICAgeCA9IChzb3VyY2VNYXRyaXhbNl0gKyB0YXJnZXRNYXRyaXhbNl0pIC8gMjtcbiAgICAgICAgICB5ID0gKHNvdXJjZU1hdHJpeFs3XSArIHRhcmdldE1hdHJpeFs3XSkgLyAyO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hdHJpeCB8fCB0YXJnZXRNYXRyaXgpIHtcbiAgICAgICAgICB4ID0gc291cmNlTWF0cml4ID8gc291cmNlTWF0cml4WzZdIDogdGFyZ2V0TWF0cml4WzZdO1xuICAgICAgICAgIHkgPSBzb3VyY2VNYXRyaXggPyBzb3VyY2VNYXRyaXhbN10gOiB0YXJnZXRNYXRyaXhbN107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICAgICAgICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG4gICAgICAgIGlmICghbWF0cml4KSBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgIHggPSBtYXRyaXhbNl07XG4gICAgICAgIHkgPSBtYXRyaXhbN107XG4gICAgICB9IC8vIOeUqOWunumZheS9jee9ruiAjOS4jeaYr21vZGVs5Lit55qEeCx5LOmYsuatoueUseS6juaLluaLveetieeahOS6pOS6kuWvvOiHtG1vZGVs55qEeCx55bm25LiN5piv5b2T5YmN55qEeCx5XG5cblxuICAgICAgdGhpcy5mb2N1c1BvaW50KHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pS55Y+YIGNhbnZhcyDnlLvluIPnmoTlrr3luqblkozpq5jluqZcbiAgICogQHBhcmFtIHdpZHRoIGNhbnZhcyDlrr3luqZcbiAgICogQHBhcmFtIGhlaWdodCBjYW52YXMg6auY5bqmXG4gICAqL1xuXG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgY2FudmFzIHdpZHRoICYgaGVpZ2h0LCBwbGVhc2UgbWFrZSBzdXJlIHdpZHRoICYgaGVpZ2h0IHR5cGUgaXMgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguc2V0KHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7IC8vIGNoYW5nZSB0aGUgc2l6ZSBvZiBncmlkIHBsdWdpbiBpZiBpdCBleGlzdHMgb24gZ3JhcGhcblxuICAgIHZhciBwbHVnaW5zID0gZ3JhcGguZ2V0KCdwbHVnaW5zJyk7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW4uZ2V0KCdncmlkQ29udGFpbmVyJykpIHtcbiAgICAgICAgLy8g572R5qC85a6a5L2N5L+h5oGv5Yid5aeL5YyWXG4gICAgICAgIHBsdWdpbi5wb3NpdGlvbkluaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9O1xuXG4gIHJldHVybiBWaWV3Q29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld0NvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/view.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/graph/graph.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g6-core/es/graph/graph.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/algorithm */ \"./node_modules/@antv/algorithm/es/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_validation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/validation */ \"./node_modules/@antv/g6-core/es/util/validation.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller */ \"./node_modules/@antv/g6-core/es/graph/controller/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../item/hull */ \"./node_modules/@antv/g6-core/es/item/hull.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar NODE = 'node';\n\nvar AbstractGraph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGraph, _super);\n\n function AbstractGraph(cfg) {\n var _this = _super.call(this) || this;\n\n _this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(_this.getDefaultCfg(), cfg);\n\n _this.init();\n\n _this.animating = false;\n _this.destroyed = false; // 启用 stack 后,实例化 undoStack 和 redoStack\n\n if (_this.cfg.enabledStack) {\n // 实例化 undo 和 redo 栈\n _this.undoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n _this.redoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n }\n\n return _this;\n }\n\n AbstractGraph.prototype.init = function () {\n this.initCanvas(); // instance controller\n\n var viewController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ViewController\"](this);\n var modeController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ModeController\"](this);\n var itemController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ItemController\"](this);\n var stateController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"StateController\"](this);\n this.set({\n viewController: viewController,\n modeController: modeController,\n itemController: itemController,\n stateController: stateController\n }); // 初始化布局机制\n\n this.initLayoutController(); // 初始化事件机制\n\n this.initEventController();\n this.initGroups();\n /** 初始化插件 */\n\n this.initPlugins();\n }; // 初始化所有 Group\n\n\n AbstractGraph.prototype.initGroups = function () {\n var canvas = this.get('canvas');\n if (!canvas) return;\n var el = canvas.get('el');\n var _a = (el || {}).id,\n id = _a === void 0 ? 'g6' : _a;\n var group = canvas.addGroup({\n id: \"\".concat(id, \"-root\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].rootContainerClassName\n });\n\n if (this.get('groupByTypes')) {\n var edgeGroup = group.addGroup({\n id: \"\".concat(id, \"-edge\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].edgeContainerClassName\n });\n var nodeGroup = group.addGroup({\n id: \"\".concat(id, \"-node\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].nodeContainerClassName\n });\n var comboGroup = group.addGroup({\n id: \"\".concat(id, \"-combo\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].comboContainerClassName\n }); // 用于存储自定义的群组\n\n comboGroup.toBack();\n this.set({\n nodeGroup: nodeGroup,\n edgeGroup: edgeGroup,\n comboGroup: comboGroup\n });\n }\n\n var delegateGroup = group.addGroup({\n id: \"\".concat(id, \"-delegate\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].delegateContainerClassName\n });\n this.set({\n delegateGroup: delegateGroup\n });\n this.set('group', group);\n }; // eslint-disable-next-line class-methods-use-this\n\n\n AbstractGraph.prototype.getDefaultCfg = function () {\n return {\n /**\n * Container could be dom object or dom id\n */\n container: undefined,\n\n /**\n * Canvas width\n * unit pixel if undefined force fit width\n */\n width: undefined,\n\n /**\n * Canvas height\n * unit pixel if undefined force fit height\n */\n height: undefined,\n\n /**\n * renderer canvas or svg\n * @type {string}\n */\n renderer: 'canvas',\n\n /**\n * control graph behaviors\n */\n modes: {},\n\n /**\n * 注册插件\n */\n plugins: [],\n\n /**\n * source data\n */\n data: {},\n\n /**\n * Fit view padding (client scale)\n */\n fitViewPadding: 10,\n\n /**\n * Minimum scale size\n */\n minZoom: 0.2,\n\n /**\n * Maxmum scale size\n */\n maxZoom: 10,\n\n /**\n * capture events\n */\n event: true,\n\n /**\n * group node & edges into different graphic groups\n */\n groupByTypes: true,\n\n /**\n * determine if it's a directed graph\n */\n directed: false,\n\n /**\n * when data or shape changed, should canvas draw automatically\n */\n autoPaint: true,\n\n /**\n * store all the node instances\n */\n nodes: [],\n\n /**\n * store all the edge instances\n */\n edges: [],\n\n /**\n * store all the combo instances\n */\n combos: [],\n\n /**\n * store all the edge instances which are virtual edges related to collapsed combo\n */\n vedges: [],\n\n /**\n * all the instances indexed by id\n */\n itemMap: {},\n\n /**\n * 边直接连接到节点的中心,不再考虑锚点\n */\n linkCenter: false,\n\n /**\n * 默认的节点配置,data 上定义的配置会覆盖这些配置。例如:\n * defaultNode: {\n * type: 'rect',\n * size: [60, 40],\n * style: {\n * //... 样式配置项\n * }\n * }\n * 若数据项为 { id: 'node', x: 100, y: 100 }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'rect', size: [60, 40] }\n * 若数据项为 { id: 'node', x: 100, y: 100, type: 'circle' }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'circle', size: [60, 40] }\n */\n defaultNode: {},\n\n /**\n * 默认边配置,data 上定义的配置会覆盖这些配置。用法同 defaultNode\n */\n defaultEdge: {},\n\n /**\n * 节点默认样式,也可以添加状态样式\n * 例如:\n * const graph = new G6.Graph({\n * nodeStateStyles: {\n * selected: { fill: '#ccc', stroke: '#666' },\n * active: { lineWidth: 2 }\n * },\n * ...\n * });\n *\n */\n nodeStateStyles: {},\n\n /**\n * 边默认样式,用法同nodeStateStyle\n */\n edgeStateStyles: {},\n\n /**\n * graph 状态\n */\n states: {},\n\n /**\n * 是否启用全局动画\n */\n animate: false,\n\n /**\n * 动画设置,仅在 animate 为 true 时有效\n */\n animateCfg: {\n /**\n * 帧回调函数,用于自定义节点运动路径,为空时线性运动\n */\n onFrame: undefined,\n\n /**\n * 动画时长(ms)\n */\n duration: 500,\n\n /**\n * 指定动画动效\n */\n easing: 'easeLinear'\n },\n callback: undefined,\n // 默认不启用 undo & redo 功能\n enabledStack: false,\n // 只有当 enabledStack 为 true 时才起作用\n maxStep: 10,\n // 存储图上的 tooltip dom,方便销毁\n tooltips: []\n };\n };\n /**\n * 将值设置到 this.cfg 变量上面\n * @param key 键 或 对象值\n * @param val 值\n */\n\n\n AbstractGraph.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(key)) {\n this.cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this.cfg), key);\n } else {\n this.cfg[key] = val;\n }\n\n return this;\n };\n /**\n * 获取 this.cfg 中的值\n * @param key 键\n */\n\n\n AbstractGraph.prototype.get = function (key) {\n var _a;\n\n return (_a = this.cfg) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 获取 graph 的根图形分组\n * @return 根 group\n */\n\n\n AbstractGraph.prototype.getGroup = function () {\n return this.get('group');\n };\n /**\n * 获取 graph 的 DOM 容器\n * @return DOM 容器\n */\n\n\n AbstractGraph.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 获取 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.getMinZoom = function () {\n return this.get('minZoom');\n };\n /**\n * 设置 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.setMinZoom = function (ratio) {\n return this.set('minZoom', ratio);\n };\n /**\n * 获取 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.getMaxZoom = function () {\n return this.get('maxZoom');\n };\n /**\n * 设置 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.setMaxZoom = function (ratio) {\n return this.set('maxZoom', ratio);\n };\n /**\n * 获取 graph 的宽度\n * @return width\n */\n\n\n AbstractGraph.prototype.getWidth = function () {\n return this.get('width');\n };\n /**\n * 获取 graph 的高度\n * @return width\n */\n\n\n AbstractGraph.prototype.getHeight = function () {\n return this.get('height');\n };\n /**\n * 清理元素多个状态\n * @param {string|Item} item 元素id或元素实例\n * @param {string[]} states 状态\n */\n\n\n AbstractGraph.prototype.clearItemStates = function (item, states) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n\n if (!states) {\n states = item.get('states');\n }\n\n itemController.clearItemStates(item, states);\n var stateController = this.get('stateController');\n stateController.updateStates(item, states, false);\n };\n /**\n * 设置各个节点样式,以及在各种状态下节点 keyShape 的样式。\n * 若是自定义节点切在各种状态下\n * graph.node(node => {\n * return {\n * type: 'rect',\n * label: node.id,\n * style: { fill: '#666' },\n * stateStyles: {\n * selected: { fill: 'blue' },\n * custom: { fill: 'green' }\n * }\n * }\n * });\n * @param {function} nodeFn 指定每个节点样式\n */\n\n\n AbstractGraph.prototype.node = function (nodeFn) {\n if (typeof nodeFn === 'function') {\n this.set('nodeMapper', nodeFn);\n }\n };\n /**\n * 设置各个边样式\n * @param {function} edgeFn 指定每个边的样式,用法同 node\n */\n\n\n AbstractGraph.prototype.edge = function (edgeFn) {\n if (typeof edgeFn === 'function') {\n this.set('edgeMapper', edgeFn);\n }\n };\n /**\n * 设置各个 combo 的配置\n * @param comboFn\n */\n\n\n AbstractGraph.prototype.combo = function (comboFn) {\n if (typeof comboFn === 'function') {\n this.set('comboMapper', comboFn);\n }\n };\n /**\n * 根据 ID 查询图元素实例\n * @param id 图元素 ID\n */\n\n\n AbstractGraph.prototype.findById = function (id) {\n return this.get('itemMap')[id];\n };\n /**\n * 根据对应规则查找单个元素\n * @param {ITEM_TYPE} type 元素类型(node | edge | group)\n * @param {(item: T, index: number) => T} fn 指定规则\n * @return {T} 元素实例\n */\n\n\n AbstractGraph.prototype.find = function (type, fn) {\n var result;\n var items = this.get(\"\".concat(type, \"s\")); // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(items, function (item, i) {\n if (fn(item, i)) {\n result = item;\n return result;\n }\n });\n return result;\n };\n /**\n * 查找所有满足规则的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} fn 指定规则\n * @return {array} 元素实例\n */\n\n\n AbstractGraph.prototype.findAll = function (type, fn) {\n var result = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get(\"\".concat(type, \"s\")), function (item, i) {\n if (fn(item, i)) {\n result.push(item);\n }\n });\n return result;\n };\n /**\n * 查找所有处于指定状态的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} state 状态\n * @return {object} 元素实例\n */\n\n\n AbstractGraph.prototype.findAllByState = function (type, state) {\n return this.findAll(type, function (item) {\n return item.hasState(state);\n });\n };\n\n AbstractGraph.prototype.getAnimateCfgWithCallback = function (_a) {\n var animateCfg = _a.animateCfg,\n callback = _a.callback;\n var animateConfig;\n\n if (!animateCfg) {\n animateConfig = {\n duration: 500,\n callback: callback\n };\n } else {\n animateConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(animateCfg);\n\n if (animateCfg.callback) {\n var animateCfgCallback_1 = animateCfg.callback;\n\n animateConfig.callback = function () {\n callback();\n animateCfgCallback_1();\n };\n } else {\n animateConfig.callback = callback;\n }\n }\n\n return animateConfig;\n };\n /**\n * 平移画布\n * @param dx 水平方向位移\n * @param dy 垂直方向位移\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.translate = function (dx, dy, animate, animateCfg) {\n var _this = this;\n\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (animate) {\n var animateConfig = this.getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n return _this.emit('viewportchange', {\n action: 'translate',\n matrix: group.getMatrix()\n });\n }\n });\n Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"move\"])(group, {\n x: group.getCanvasBBox().x + dx,\n y: group.getCanvasBBox().y + dy\n }, animate, animateConfig || {\n duration: 500,\n easing: 'easeCubic'\n });\n } else {\n matrix = transform(matrix, [['t', dx, dy]]);\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'translate',\n matrix: matrix\n });\n this.autoPaint();\n }\n };\n /**\n * 平移画布到某点\n * @param {number} x 水平坐标\n * @param {number} y 垂直坐标\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.moveTo = function (x, y, animate, animateCfg) {\n var group = this.get('group');\n Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"move\"])(group, {\n x: x,\n y: y\n }, animate, animateCfg || {\n duration: 500,\n easing: 'easeCubic'\n });\n this.emit('viewportchange', {\n action: 'move',\n matrix: group.getMatrix()\n });\n };\n /**\n * 调整视口适应视图\n * @param {object} padding 四周围边距\n * @param {FitViewRules} rules fitView的规则\n */\n\n\n AbstractGraph.prototype.fitView = function (padding, rules) {\n if (padding) {\n this.set('fitViewPadding', padding);\n }\n\n var viewController = this.get('viewController');\n\n if (rules) {\n viewController.fitViewByRules(rules);\n } else {\n viewController.fitView();\n }\n\n this.autoPaint();\n };\n /**\n * 调整视口适应视图,不缩放,仅将图 bbox 中心对齐到画布中心\n */\n\n\n AbstractGraph.prototype.fitCenter = function () {\n var viewController = this.get('viewController');\n viewController.fitCenter();\n this.autoPaint();\n };\n /**\n * 新增行为\n * @param {string | ModeOption | ModeType[]} behaviors 添加的行为\n * @param {string | string[]} modes 添加到对应的模式\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.addBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, true);\n return this;\n };\n /**\n * 移除行为\n * @param {string | ModeOption | ModeType[]} behaviors 移除的行为\n * @param {string | string[]} modes 从指定的模式中移除\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.removeBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, false);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.updateBehavior = function (behavior, newCfg, mode) {\n var modeController = this.get('modeController');\n modeController.updateBehavior(behavior, newCfg, mode);\n return this;\n };\n /**\n * 伸缩窗口\n * @param ratio 伸缩比例\n * @param center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoom = function (ratio, center, animate, animateCfg) {\n var _this = this;\n\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n var minZoom = this.get('minZoom');\n var maxZoom = this.get('maxZoom');\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (center) {\n matrix = transform(matrix, [['t', -center.x, -center.y], ['s', ratio, ratio], ['t', center.x, center.y]]);\n } else {\n matrix = transform(matrix, [['s', ratio, ratio]]);\n }\n\n if (minZoom && matrix[0] < minZoom || maxZoom && matrix[0] > maxZoom) {\n return false;\n } // matrix = [2, 0, 0, 0, 2, 0, -125, -125, 1];\n\n\n if (animate) {\n // Clone the original matrix to perform the animation\n var aniMatrix_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!aniMatrix_1) {\n aniMatrix_1 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var initialRatio_1 = aniMatrix_1[0];\n var targetRatio_1 = initialRatio_1 * ratio;\n var animateConfig = this.getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n return _this.emit('viewportchange', {\n action: 'zoom',\n matrix: group.getMatrix()\n });\n }\n });\n group.animate(function (ratio) {\n if (ratio === 1) {\n // Reuse the first transformation\n aniMatrix_1 = matrix;\n } else {\n var scale = Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"lerp\"])(initialRatio_1, targetRatio_1, ratio) / aniMatrix_1[0];\n\n if (center) {\n aniMatrix_1 = transform(aniMatrix_1, [['t', -center.x, -center.y], ['s', scale, scale], ['t', center.x, center.y]]);\n } else {\n aniMatrix_1 = transform(aniMatrix_1, [['s', scale, scale]]);\n }\n }\n\n return {\n matrix: aniMatrix_1\n };\n }, animateConfig);\n } else {\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'zoom',\n matrix: matrix\n });\n this.autoPaint();\n }\n\n return true;\n };\n /**\n * 伸缩视口到一固定比例\n * @param {number} toRatio 伸缩比例\n * @param {Point} center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoomTo = function (toRatio, center, animate, animateCfg) {\n var ratio = toRatio / this.getZoom();\n return this.zoom(ratio, center, animate, animateCfg);\n };\n /**\n * 将元素移动到视口中心\n * @param {Item} item 指定元素\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.focusItem = function (item, animate, animateCfg) {\n var viewController = this.get('viewController');\n var isAnimate = false;\n if (animate) isAnimate = true;else if (animate === undefined) isAnimate = this.get('animate');\n var curAniamteCfg = {};\n if (animateCfg) curAniamteCfg = animateCfg;else if (animateCfg === undefined) curAniamteCfg = this.get('animateCfg');\n viewController.focus(item, isAnimate, curAniamteCfg);\n this.autoPaint();\n };\n /**\n * 自动重绘\n * @internal 仅供内部更新机制调用,外部根据需求调用 render 或 paint 接口\n */\n\n\n AbstractGraph.prototype.autoPaint = function () {\n if (this.get('autoPaint')) {\n this.paint();\n }\n };\n /**\n * 仅画布重新绘制\n */\n\n\n AbstractGraph.prototype.paint = function () {\n this.emit('beforepaint');\n this.get('canvas').draw();\n this.emit('afterpaint');\n };\n /**\n * 将屏幕坐标转换为视口坐标\n * @param {number} clientX 屏幕x坐标\n * @param {number} clientY 屏幕y坐标\n * @return {Point} 视口坐标\n */\n\n\n AbstractGraph.prototype.getPointByClient = function (clientX, clientY) {\n var viewController = this.get('viewController');\n return viewController.getPointByClient(clientX, clientY);\n };\n /**\n * 将绘制坐标转换为屏幕坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {Point} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getClientByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getClientByPoint(x, y);\n };\n /**\n * 将画布坐标转换为绘制坐标\n * @param {number} canvasX 画布 x 坐标\n * @param {number} canvasY 画布 y 坐标\n * @return {object} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewController = this.get('viewController');\n return viewController.getPointByCanvas(canvasX, canvasY);\n };\n /**\n * 将绘制坐标转换为画布坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {object} 画布坐标\n */\n\n\n AbstractGraph.prototype.getCanvasByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getCanvasByPoint(x, y);\n };\n /**\n * 获取图内容的中心绘制坐标\n * @return {object} 中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getGraphCenterPoint = function () {\n var bbox = this.get('group').getCanvasBBox();\n return {\n x: (bbox.minX + bbox.maxX) / 2,\n y: (bbox.minY + bbox.maxY) / 2\n };\n };\n /**\n * 获取视口中心绘制坐标\n * @return {object} 视口中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getViewPortCenterPoint = function () {\n return this.getPointByCanvas(this.get('width') / 2, this.get('height') / 2);\n };\n /**\n * 显示元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.showItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, true);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.nodes = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.edges = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.combos = [{\n id: id,\n visible: true\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 隐藏元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.hideItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, false);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.nodes = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.edges = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.combos = [{\n id: id,\n visible: false\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 刷新元素\n * @param {string|object} item 元素id或元素实例\n */\n\n\n AbstractGraph.prototype.refreshItem = function (item) {\n var itemController = this.get('itemController');\n itemController.refreshItem(item);\n };\n /**\n * 设置是否在更新/刷新后自动重绘\n * @param {boolean} auto 自动重绘\n */\n\n\n AbstractGraph.prototype.setAutoPaint = function (auto) {\n var self = this;\n self.set('autoPaint', auto);\n var canvas = self.get('canvas');\n canvas.set('autoDraw', auto);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.remove = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.removeItem(item, stack);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.removeItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var nodeItem = item;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) nodeItem = this.findById(item);\n\n if (!nodeItem && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n console.warn('The item to be removed does not exist!');\n } else if (nodeItem) {\n var type = '';\n if (nodeItem.getType) type = nodeItem.getType(); // 将删除的元素入栈\n\n if (stack && this.get('enabledStack')) {\n var deletedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, nodeItem.getModel()), {\n itemType: type\n });\n\n var before = {};\n\n switch (type) {\n case 'node':\n {\n before.nodes = [deletedModel];\n before.edges = [];\n var edges = nodeItem.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n before.edges.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, edges[i].getModel()), {\n itemType: 'edge'\n }));\n }\n\n break;\n }\n\n case 'edge':\n before.edges = [deletedModel];\n break;\n\n case 'combo':\n before.combos = [deletedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('delete', {\n before: before,\n after: {}\n });\n }\n\n if (type === 'node') {\n var model = nodeItem.getModel(); // 如果删除的是节点,且该节点存在于某个 Combo 中,则需要先将 node 从 combo 中移除,否则删除节点后,操作 combo 会出错\n\n if (model.comboId) {\n this.updateComboTree(nodeItem, undefined, false);\n }\n }\n\n var itemController = this.get('itemController');\n itemController.removeItem(nodeItem);\n\n if (type === 'combo') {\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'));\n this.set('comboTrees', newComboTrees);\n }\n }\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @param {boolean} sortCombo 本次操作是否需要更新 combo 层级顺序,内部参数,用户在外部使用 addItem 时始终时需要更新\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.addItem = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n var currentComboSorted = this.get('comboSorted');\n this.set('comboSorted', currentComboSorted && !sortCombo);\n var itemController = this.get('itemController'); // 添加节点、边或combo之前,先验证数据是否符合规范\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"singleDataValidation\"])(type, model)) {\n return false;\n }\n\n if (model.id && this.findById(model.id)) {\n console.warn(\"This item exists already. Be sure the id %c\".concat(model.id, \"%c is unique.\"), 'font-size: 20px; color: red;', '');\n return;\n }\n\n var item;\n var comboTrees = this.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n\n if (type === 'combo') {\n var itemMap_1 = this.get('itemMap');\n var foundParent_1 = false;\n comboTrees.forEach(function (ctree) {\n if (foundParent_1) return; // terminate the forEach after the tree containing the item is done\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n // find the parent\n if (model.parentId === child.id) {\n foundParent_1 = true;\n\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: child.depth + 2\n }, model);\n\n if (child.children) child.children.push(newCombo);else child.children = [newCombo];\n model.depth = newCombo.depth;\n item = itemController.addItem(type, model);\n }\n\n var childItem = itemMap_1[child.id]; // after the parent is found, update all the ancestors\n\n if (foundParent_1 && childItem && childItem.getType && childItem.getType() === 'combo') {\n itemController.updateCombo(childItem, child.children);\n }\n\n return true;\n });\n }); // if the parent is not found, add it to the root\n\n if (!foundParent_1) {\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: 0\n }, model);\n\n model.depth = newCombo.depth;\n comboTrees.push(newCombo);\n item = itemController.addItem(type, model);\n }\n\n this.set('comboTrees', comboTrees);\n } else if (type === 'node' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(model.comboId) && comboTrees) {\n var parentCombo = this.findById(model.comboId);\n\n if (parentCombo && parentCombo.getType && parentCombo.getType() !== 'combo') {\n console.warn(\"'\".concat(model.comboId, \"' is not a id of a combo in the graph, the node will be added without combo.\"));\n }\n\n item = itemController.addItem(type, model);\n var itemMap_2 = this.get('itemMap');\n var foundParent_2 = false,\n foundNode_1 = false;\n (comboTrees || []).forEach(function (ctree) {\n if (foundNode_1 || foundParent_2) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === model.id) {\n // if the item exists in the tree already, terminate\n foundNode_1 = true;\n return false;\n }\n\n if (model.comboId === child.id && !foundNode_1) {\n // found the parent, add the item to the children of its parent in the tree\n foundParent_2 = true;\n var cloneNode = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(model);\n cloneNode.itemType = 'node';\n if (child.children) child.children.push(cloneNode);else child.children = [cloneNode];\n cloneNode.depth = child.depth + 1;\n } // update the size of all the ancestors\n\n\n if (foundParent_2 && itemMap_2[child.id].getType && itemMap_2[child.id].getType() === 'combo') {\n itemController.updateCombo(itemMap_2[child.id], child.children);\n }\n\n return true;\n });\n });\n } else {\n item = itemController.addItem(type, model);\n }\n\n if (type === 'node' && model.comboId || type === 'combo' && model.parentId) {\n // add the combo to the parent's children array\n var parentCombo = this.findById(model.comboId || model.parentId);\n if (parentCombo && parentCombo.getType && parentCombo.getType() === 'combo') parentCombo.addChild(item);\n }\n\n var combos = this.get('combos');\n\n if (combos && combos.length > 0) {\n this.sortCombos();\n }\n\n this.autoPaint();\n\n if (stack && this.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, item.getModel()), {\n itemType: type\n });\n\n var after = {};\n\n switch (type) {\n case 'node':\n after.nodes = [addedModel];\n break;\n\n case 'edge':\n after.edges = [addedModel];\n break;\n\n case 'combo':\n after.combos = [addedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n return item;\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.add = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n return this.addItem(type, model, stack, sortCombo);\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n */\n\n\n AbstractGraph.prototype.updateItem = function (item, cfg, stack) {\n var _this = this;\n\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var currentItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n currentItem = this.findById(item);\n } else {\n currentItem = item;\n }\n\n var UnupdateModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(currentItem.getModel());\n var type = '';\n if (currentItem.getType) type = currentItem.getType();\n\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], currentItem.getStates(), true);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, false);\n });\n }\n\n itemController.updateItem(currentItem, cfg);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, true);\n });\n }\n\n if (stack && this.get('enabledStack')) {\n var before = {\n nodes: [],\n edges: [],\n combos: []\n };\n var after = {\n nodes: [],\n edges: [],\n combos: []\n };\n\n var afterModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: UnupdateModel.id\n }, cfg);\n\n switch (type) {\n case 'node':\n before.nodes.push(UnupdateModel);\n after.nodes.push(afterModel);\n break;\n\n case 'edge':\n before.edges.push(UnupdateModel);\n after.edges.push(afterModel);\n break;\n\n case 'combo':\n before.combos.push(UnupdateModel);\n after.combos.push(afterModel);\n break;\n\n default:\n break;\n }\n\n if (type === 'node') {\n before.nodes.push(UnupdateModel);\n }\n\n this.pushStack('update', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.update = function (item, cfg, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.updateItem(item, cfg, stack);\n };\n /**\n * 设置元素状态\n * @param {Item} item 元素id或元素实例\n * @param {string} state 状态名称\n * @param {string | boolean} value 是否启用状态 或 状态值\n */\n\n\n AbstractGraph.prototype.setItemState = function (item, state, value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n itemController.setItemState(item, state, value);\n var stateController = this.get('stateController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(value)) {\n stateController.updateState(item, \"\".concat(state, \":\").concat(value), true);\n } else {\n stateController.updateState(item, state, value);\n }\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n AbstractGraph.prototype.priorityState = function (item, state) {\n var itemController = this.get('itemController');\n itemController.priorityState(item, state);\n };\n /**\n * 设置视图初始化数据\n * @param {GraphData} data 初始化数据\n */\n\n\n AbstractGraph.prototype.data = function (data) {\n Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data);\n this.set('data', data);\n };\n /**\n * 根据data接口的数据渲染视图\n */\n\n\n AbstractGraph.prototype.render = function () {\n var self = this;\n this.set('comboSorted', false);\n var data = this.get('data');\n\n if (this.get('enabledStack')) {\n // render 之前清空 redo 和 undo 栈\n this.clearStack();\n }\n\n if (!data) {\n throw new Error('data must be defined first');\n }\n\n var _a = data.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = data.edges,\n edges = _b === void 0 ? [] : _b,\n _c = data.combos,\n combos = _c === void 0 ? [] : _c;\n this.clear(true);\n this.emit('beforerender');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n self.add('node', node, false, false);\n }); // process the data to tree structure\n\n if (combos && combos.length !== 0) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combos, nodes);\n this.set('comboTrees', comboTrees); // add combos\n\n self.addCombos(combos);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n self.add('edge', edge, false, false);\n });\n var animate = self.get('animate');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', false);\n } // layout\n\n\n var layoutController = self.get('layoutController');\n\n if (layoutController) {\n layoutController.layout(success);\n if (this.destroyed) return;\n } else {\n if (self.get('fitView')) {\n self.fitView();\n }\n\n if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.emit('afterrender');\n self.set('animate', animate);\n } // 将在 onLayoutEnd 中被调用\n\n\n function success() {\n // fitView 与 fitCenter 共存时,fitView 优先,fitCenter 不再执行\n if (self.get('fitView')) {\n self.fitView();\n } else if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.autoPaint();\n self.emit('afterrender');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', animate);\n }\n }\n\n if (!this.get('groupByTypes')) {\n if (combos && combos.length !== 0) {\n this.sortCombos();\n } else {\n // 为提升性能,选择数量少的进行操作\n if (data.nodes && data.edges && data.nodes.length < data.edges.length) {\n var nodesArr = this.getNodes(); // 遍历节点实例,将所有节点提前。\n\n nodesArr.forEach(function (node) {\n node.toFront();\n });\n } else {\n var edgesArr = this.getEdges(); // 遍历节点实例,将所有节点提前。\n\n edgesArr.forEach(function (edge) {\n edge.toBack();\n });\n }\n }\n }\n\n if (this.get('enabledStack')) {\n this.pushStack('render');\n }\n };\n /**\n * 接收数据进行渲染\n * @Param {Object} data 初始化数据\n */\n\n\n AbstractGraph.prototype.read = function (data) {\n this.data(data);\n this.render();\n }; // 比较item\n\n\n AbstractGraph.prototype.diffItems = function (type, items, models) {\n var self = this;\n var item;\n var itemMap = this.get('itemMap');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(models, function (model) {\n item = itemMap[model.id];\n\n if (item) {\n if (self.get('animate') && type === NODE) {\n var containerMatrix = item.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n item.set('originAttrs', {\n x: containerMatrix[6],\n y: containerMatrix[7]\n });\n }\n\n self.updateItem(item, model, false);\n } else {\n item = self.addItem(type, model, false);\n }\n\n if (item) items[\"\".concat(type, \"s\")].push(item);\n });\n };\n /**\n * 更改源数据,根据新数据重新渲染视图\n * @param {GraphData | TreeGraphData} data 源数据\n * @param {boolean} 是否入栈,默认为true\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeData = function (data, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data)) {\n return this;\n }\n\n if (stack && this.get('enabledStack')) {\n this.pushStack('changedata', {\n before: self.save(),\n after: data\n });\n }\n\n this.set('comboSorted', false); // 删除 hulls\n\n this.removeHulls(); // 更改数据源后,取消所有状态\n\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n var canvas = this.get('canvas');\n var localRefresh = canvas.get('localRefresh');\n canvas.set('localRefresh', false);\n\n if (!self.get('data')) {\n self.data(data);\n self.render();\n }\n\n var itemMap = this.get('itemMap');\n var items = {\n nodes: [],\n edges: []\n };\n var combosData = data.combos;\n\n if (combosData) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combosData, data.nodes);\n this.set('comboTrees', comboTrees);\n } else {\n this.set('comboTrees', []);\n }\n\n this.diffItems('node', items, data.nodes);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n itemMap[id].getModel().depth = 0;\n if (item.getType && item.getType() === 'edge') return;\n\n if (item.getType && item.getType() === 'combo') {\n delete itemMap[id];\n item.destroy();\n } else if (items.nodes.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n }); // clear the destroyed combos here to avoid removing sub nodes before removing the parent combo\n\n var comboItems = this.getCombos();\n var combosLength = comboItems.length;\n\n for (var i = combosLength - 1; i >= 0; i--) {\n if (comboItems[i].destroyed) {\n comboItems.splice(i, 1);\n }\n } // process the data to tree structure\n\n\n if (combosData) {\n // add combos\n self.addCombos(combosData);\n\n if (!this.get('groupByTypes')) {\n this.sortCombos();\n }\n }\n\n this.diffItems('edge', items, data.edges);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n if (item.getType && (item.getType() === 'node' || item.getType() === 'combo')) return;\n\n if (items.edges.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n });\n this.set({\n nodes: items.nodes,\n edges: items.edges\n });\n var layoutController = this.get('layoutController');\n\n if (layoutController) {\n layoutController.changeData();\n\n if (self.get('animate') && !layoutController.getLayoutType()) {\n // 如果没有指定布局\n self.positionsAnimate();\n } else {\n self.autoPaint();\n }\n }\n\n setTimeout(function () {\n canvas.set('localRefresh', localRefresh);\n }, 16);\n return this;\n };\n /**\n * 私有方法,在 render 和 changeData 的时候批量添加数据中所有平铺的 combos\n * @param {ComboConfig[]} combos 平铺的 combos 数据\n */\n\n\n AbstractGraph.prototype.addCombos = function (combos) {\n var self = this;\n var comboTrees = self.get('comboTrees');\n var itemController = this.get('itemController');\n itemController.addCombos(comboTrees, combos);\n };\n /**\n * 根据已经存在的节点或 combo 创建新的 combo\n * @param combo combo ID 或 Combo 配置\n * @param children 添加到 Combo 中的元素,包括节点和 combo\n */\n\n\n AbstractGraph.prototype.createCombo = function (combo, children) {\n var _this = this;\n\n this.set('comboSorted', false); // step 1: 创建新的 Combo\n\n var comboId = '';\n var comboConfig;\n if (!combo) return;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboId = combo;\n comboConfig = {\n id: combo\n };\n } else {\n comboId = combo.id;\n\n if (!comboId) {\n console.warn('Create combo failed. Please assign a unique string id for the adding combo.');\n return;\n }\n\n comboConfig = combo;\n } // step2: 更新 children,根据类型添加 comboId 或 parentId\n\n\n var trees = children.map(function (elementId) {\n var item = _this.findById(elementId);\n\n var model = item.getModel();\n var type = '';\n if (item.getType) type = item.getType();\n var cItem = {\n id: item.getID(),\n itemType: type\n };\n\n if (type === 'combo') {\n cItem.parentId = comboId;\n model.parentId = comboId;\n } else if (type === 'node') {\n cItem.comboId = comboId;\n model.comboId = comboId;\n }\n\n return cItem;\n });\n comboConfig.children = trees; // step 3: 添加 Combo,addItem 时会将子将元素添加到 Combo 中\n\n this.addItem('combo', comboConfig, false);\n this.set('comboSorted', false); // step4: 更新 comboTrees 结构\n\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === comboId) {\n child.itemType = 'combo';\n child.children = trees;\n return false;\n }\n\n return true;\n });\n });\n\n if (comboTrees) {\n this.sortCombos();\n }\n };\n /**\n * 解散 combo\n * @param {String | INode | ICombo} combo 需要被解散的 Combo item 或 id\n */\n\n\n AbstractGraph.prototype.uncombo = function (combo) {\n var _this = this;\n\n var _a;\n\n var self = this;\n var comboItem = combo;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item is not a combo!');\n return;\n }\n\n var parentId = comboItem.getModel().parentId;\n var comboTrees = self.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n var itemMap = this.get('itemMap');\n var comboId = comboItem.get('id');\n var treeToBeUncombo;\n var brothers = [];\n var comboItems = this.get('combos');\n var parentItem = this.findById(parentId);\n comboTrees.forEach(function (ctree) {\n if (treeToBeUncombo) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (subtree) {\n var _a; // find the combo to be uncomboed, delete the combo from map and cache\n\n\n if (subtree.id === comboId) {\n treeToBeUncombo = subtree; // delete the related edges\n\n var edges = comboItem.getEdges();\n edges.forEach(function (edge) {\n _this.removeItem(edge, false);\n });\n var index = comboItems.indexOf(comboItem);\n comboItems.splice(index, 1);\n delete itemMap[comboId];\n comboItem.destroy();\n\n _this.emit('afterremoveitem', {\n item: comboItem,\n type: 'combo'\n });\n } // find the parent to remove the combo from the combo's brothers array and add the combo's children to the combo's brothers array in the tree\n\n\n if (parentId && treeToBeUncombo && subtree.id === parentId) {\n parentItem.removeCombo(comboItem);\n brothers = subtree.children; // the combo's brothers\n // remove the combo from its brothers array\n\n var index = brothers.indexOf(treeToBeUncombo);\n\n if (index !== -1) {\n brothers.splice(index, 1);\n } // append the combo's children to the combo's brothers array\n\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n var item = _this.findById(child.id);\n\n var childModel = item.getModel();\n\n if (item.getType && item.getType() === 'combo') {\n child.parentId = parentId;\n delete child.comboId;\n childModel.parentId = parentId; // update the parentId of the model\n\n delete childModel.comboId;\n } else if (item.getType && item.getType() === 'node') {\n child.comboId = parentId;\n childModel.comboId = parentId; // update the parentId of the model\n }\n\n parentItem.addChild(item);\n brothers.push(child);\n });\n return false;\n }\n\n return true;\n });\n }); // if the parentId is not found, remove the combo from the roots\n\n if (!parentId && treeToBeUncombo) {\n var index = comboTrees.indexOf(treeToBeUncombo);\n comboTrees.splice(index, 1); // modify the parentId of the children\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child.parentId = undefined;\n\n var childModel = _this.findById(child.id).getModel();\n\n delete childModel.parentId; // update the parentId of the model\n\n delete childModel.comboId; // update the comboId of the model\n\n if (child.itemType !== 'node') comboTrees.push(child);\n });\n }\n };\n /**\n * 根据节点的 bbox 更新所有 combos 的绘制,包括 combos 的位置和范围\n */\n\n\n AbstractGraph.prototype.updateCombos = function () {\n var _this = this;\n\n var self = this;\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true);\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, false);\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, true);\n });\n }\n\n return true;\n });\n });\n self.sortCombos();\n };\n /**\n * 根据节点的 bbox 更新 combo 及其祖先 combos 的绘制,包括 combos 的位置和范围\n * @param {String | ICombo} combo 需要被更新的 Combo 或 id,若指定,则该 Combo 及所有祖先 Combod 都会被更新\n */\n\n\n AbstractGraph.prototype.updateCombo = function (combo) {\n var _this = this;\n\n var self = this;\n var comboItem = combo;\n var comboId;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item to be updated is not a combo!');\n return;\n }\n\n comboId = comboItem.get('id');\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (comboId === child.id && childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true); // || !item.getStateStyle(stateName)\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, false);\n }\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, true);\n }\n });\n if (comboId) comboId = child.parentId;\n }\n\n return true;\n });\n });\n };\n /**\n * 更新树结构,例如移动子树等\n * @param {String | INode | ICombo} item 需要被更新的 Combo 或 节点 id\n * @param {string | undefined} parentId 新的父 combo id,undefined 代表没有父 combo\n */\n\n\n AbstractGraph.prototype.updateComboTree = function (item, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n this.set('comboSorted', false);\n var uItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n uItem = self.findById(item);\n } else {\n uItem = item;\n }\n\n var model = uItem.getModel();\n var oldParentId = model.comboId || model.parentId;\n var type = '';\n if (uItem.getType) type = uItem.getType(); // 若 item 是 Combo,且 parentId 是其子孙 combo 的 id,则警告并终止\n\n if (parentId && type === 'combo') {\n var comboTrees = this.get('comboTrees');\n var valid_1 = true;\n var itemSubTree_1;\n (comboTrees || []).forEach(function (ctree) {\n if (itemSubTree_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n if (itemSubTree_1) return; // 找到从 item 开始的子树\n\n if (subTree.id === uItem.getID()) {\n itemSubTree_1 = subTree;\n }\n\n return true;\n });\n }); // 在以 item 为根的子树中寻找与 parentId 相同的后继元素\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(itemSubTree_1, function (subTree) {\n if (subTree.id === parentId) {\n valid_1 = false;\n return false;\n }\n\n return true;\n }); // parentId 是 item 的一个后继元素,不能进行更新\n\n if (!valid_1) {\n console.warn('Failed to update the combo tree! The parentId points to a descendant of the combo!');\n return;\n }\n }\n\n if (stack && this.get('enabledStack')) {\n var beforeData = {},\n afterData = {};\n\n if (type === 'combo') {\n beforeData.combos = [{\n id: model.id,\n parentId: model.parentId\n }];\n afterData.combos = [{\n id: model.id,\n parentId: parentId\n }];\n } else if (type === 'node') {\n beforeData.nodes = [{\n id: model.id,\n parentId: model.comboId\n }];\n afterData.nodes = [{\n id: model.id,\n parentId: parentId\n }];\n }\n\n this.pushStack('updateComboTree', {\n before: beforeData,\n after: afterData\n });\n } // 当 combo 存在 parentId 或 comboId 时,才将其移除\n\n\n if (model.parentId || model.comboId) {\n var combo = this.findById(model.parentId || model.comboId);\n\n if (combo) {\n combo.removeChild(uItem);\n }\n }\n\n if (type === 'combo') {\n model.parentId = parentId;\n } else if (type === 'node') {\n model.comboId = parentId;\n } // 只有当移入到指定 combo 时才添加\n\n\n if (parentId) {\n var parentCombo = this.findById(parentId);\n\n if (parentCombo) {\n // 将元素添加到 parentCombo 中\n parentCombo.addChild(uItem);\n }\n } // 如果原先有父亲 combo,则从原父 combo 的子元素数组中删除\n\n\n if (oldParentId) {\n var parentCombo = this.findById(oldParentId);\n\n if (parentCombo) {\n // 将元素从 parentCombo 中移除\n parentCombo.removeChild(uItem);\n }\n }\n\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'), model.id, parentId);\n this.set('comboTrees', newComboTrees);\n this.updateCombos();\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n\n\n AbstractGraph.prototype.save = function () {\n var nodes = [];\n var edges = [];\n var combos = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('nodes'), function (node) {\n nodes.push(node.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('edges'), function (edge) {\n edges.push(edge.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('combos'), function (combo) {\n combos.push(combo.getModel());\n });\n return {\n nodes: nodes,\n edges: edges,\n combos: combos\n };\n };\n /**\n * 改变画布大小\n * @param {number} width 画布宽度\n * @param {number} height 画布高度\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeSize = function (width, height) {\n var viewController = this.get('viewController');\n viewController.changeSize(width, height);\n return this;\n };\n /**\n * 当源数据在外部发生变更时,根据新数据刷新视图。但是不刷新节点位置\n */\n\n\n AbstractGraph.prototype.refresh = function () {\n var self = this;\n self.emit('beforegraphrefresh');\n\n if (self.get('animate')) {\n self.positionsAnimate();\n } else {\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('edges');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n edge.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n }\n\n self.emit('aftergraphrefresh');\n self.autoPaint();\n };\n /**\n * 获取当前图中所有节点的item实例\n * @return {INode} item数组\n */\n\n\n AbstractGraph.prototype.getNodes = function () {\n return this.get('nodes');\n };\n /**\n * 获取当前图中所有边的item实例\n * @return {IEdge} item数组\n */\n\n\n AbstractGraph.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取图中所有的 combo 实例\n */\n\n\n AbstractGraph.prototype.getCombos = function () {\n return this.get('combos');\n };\n /**\n * 获取指定 Combo 中所有的节点\n * @param comboId combo ID\n */\n\n\n AbstractGraph.prototype.getComboChildren = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo does not exist!');\n return;\n }\n\n return combo.getChildren();\n };\n /**\n * 根据 graph 上的 animateCfg 进行视图中节点位置动画接口\n */\n\n\n AbstractGraph.prototype.positionsAnimate = function () {\n var self = this;\n self.emit('beforeanimate');\n var animateCfg = self.get('animateCfg');\n var onFrame = animateCfg.onFrame;\n var nodes = self.getNodes();\n var toNodes = nodes.map(function (node) {\n var model = node.getModel();\n return {\n id: model.id,\n x: model.x,\n y: model.y\n };\n });\n\n if (self.isAnimating()) {\n self.stopAnimate();\n }\n\n var canvas = self.get('canvas');\n canvas.animate(function (ratio) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(toNodes, function (data) {\n var node = self.findById(data.id);\n\n if (!node || node.destroyed) {\n return;\n }\n\n var originAttrs = node.get('originAttrs');\n var model = node.get('model');\n\n if (!originAttrs) {\n var containerMatrix = node.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n originAttrs = {\n x: containerMatrix[6],\n y: containerMatrix[7]\n };\n node.set('originAttrs', originAttrs);\n }\n\n if (onFrame) {\n var attrs = onFrame(node, ratio, data, originAttrs);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = originAttrs.x + (data.x - originAttrs.x) * ratio;\n model.y = originAttrs.y + (data.y - originAttrs.y) * ratio;\n }\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.easing,\n callback: function callback() {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.set('originAttrs', null);\n });\n\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n\n self.emit('afteranimate');\n self.animating = false;\n }\n });\n };\n /**\n * 当节点位置在外部发生改变时,刷新所有节点位置,重计算边\n */\n\n\n AbstractGraph.prototype.refreshPositions = function () {\n var self = this;\n self.emit('beforegraphrefreshposition');\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('vedges');\n var combos = self.get('combos');\n var model;\n var updatedNodes = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n model = node.getModel();\n var originAttrs = node.get('originAttrs');\n\n if (originAttrs && model.x === originAttrs.x && model.y === originAttrs.y) {\n return;\n }\n\n var changed = node.updatePosition({\n x: model.x,\n y: model.y\n });\n updatedNodes[model.id] = changed;\n if (model.comboId) updatedNodes[model.comboId] = updatedNodes[model.comboId] || changed;\n });\n\n if (combos && combos.length !== 0) {\n self.updateCombos();\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n var sourceModel = edge.getSource().getModel();\n var target = edge.getTarget(); // 避免 target 是纯对象的情况下调用 getModel 方法\n // 拖动生成边的时候 target 会是纯对象\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(target)) {\n var targetModel = target.getModel();\n\n if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge.getModel().isComboEdge) {\n edge.refresh();\n }\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n self.emit('aftergraphrefreshposition');\n self.autoPaint();\n };\n\n AbstractGraph.prototype.stopAnimate = function () {\n this.get('canvas').stopAnimate();\n };\n\n AbstractGraph.prototype.isAnimating = function () {\n return this.animating;\n };\n /**\n * 获取当前视口伸缩比例\n * @return {number} 比例\n */\n\n\n AbstractGraph.prototype.getZoom = function () {\n var matrix = this.get('group').getMatrix();\n return matrix ? matrix[0] : 1;\n };\n /**\n * 获取当前的行为模式\n * @return {string} 当前行为模式\n */\n\n\n AbstractGraph.prototype.getCurrentMode = function () {\n var modeController = this.get('modeController');\n return modeController.getMode();\n };\n /**\n * 切换行为模式\n * @param {string} mode 指定模式\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.setMode = function (mode) {\n var modeController = this.get('modeController');\n modeController.setMode(mode);\n return this;\n };\n /**\n * 清除画布元素\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.clear = function (avoidEmit) {\n var _a;\n\n if (avoidEmit === void 0) {\n avoidEmit = false;\n }\n\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.clear();\n this.initGroups(); // 清空画布时同时清除数据\n\n this.set({\n itemMap: {},\n nodes: [],\n edges: [],\n groups: [],\n combos: [],\n comboTrees: []\n });\n if (!avoidEmit) this.emit('afterrender');\n return this;\n };\n /**\n * 更换布局配置项\n * @param {object} cfg 新布局配置项\n * @param {'center' | 'begin'} align 对齐方式,可选中心(center)对齐到对齐点,或左上角(begin)对齐到对齐点\n * @param {IPoint} alignPoint 画布上的对齐点,为 Canvas 坐标系(Canvas DOM)\n * 若 cfg 含有 type 字段或为 String 类型,且与现有布局方法不同,则更换布局\n * 若 cfg 不包括 type ,则保持原有布局方法,仅更新布局配置项\n */\n\n\n AbstractGraph.prototype.updateLayout = function (cfg, align, alignPoint) {\n var _this = this;\n\n var layoutController = this.get('layoutController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(cfg)) {\n cfg = {\n type: cfg\n };\n } // align the graph after layout\n\n\n if (align) {\n var toPoint_1 = alignPoint;\n\n if (!toPoint_1) {\n if (align === 'begin') toPoint_1 = {\n x: 0,\n y: 0\n };else toPoint_1 = {\n x: this.getWidth() / 2,\n y: this.getHeight() / 2\n };\n } // translate to point coordinate system\n\n\n toPoint_1 = this.getPointByCanvas(toPoint_1.x, toPoint_1.y);\n var forceTypes = ['force', 'gForce', 'fruchterman']; // if it is force layout, only center takes effect, and assign center force\n\n if (forceTypes.includes(cfg.type) || !cfg.type && forceTypes.includes(layoutController === null || layoutController === void 0 ? void 0 : layoutController.layoutType)) {\n cfg.center = [toPoint_1.x, toPoint_1.y];\n } else {\n this.once('afterlayout', function (e) {\n var matrix = _this.getGroup().getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n toPoint_1.x = toPoint_1.x * matrix[0] + matrix[6];\n toPoint_1.y = toPoint_1.y * matrix[0] + matrix[7];\n\n var _a = _this.getGroup().getCanvasBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n\n var bboxPoint = {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2\n };\n\n if (align === 'begin') {\n bboxPoint.x = minX;\n bboxPoint.y = minY;\n }\n\n _this.translate(toPoint_1.x - bboxPoint.x, toPoint_1.y - bboxPoint.y);\n });\n }\n }\n\n var oriLayoutCfg = this.get('layout');\n var layoutCfg = {};\n Object.assign(layoutCfg, oriLayoutCfg, cfg);\n this.set('layout', layoutCfg);\n\n if (layoutController.isLayoutTypeSame(layoutCfg) && layoutCfg.gpuEnabled === oriLayoutCfg.gpuEnabled) {\n // no type or same type, or switch the gpu and cpu, update layout\n layoutController.updateLayoutCfg(layoutCfg);\n } else {\n // has different type, change layout\n layoutController.changeLayout(layoutCfg);\n }\n };\n /**\n * 销毁布局,changeData 时不会再使用原来的布局方法对新数据进行布局\n */\n\n\n AbstractGraph.prototype.destroyLayout = function () {\n var layoutController = this.get('layoutController');\n layoutController.destroyLayout();\n };\n /**\n * 重新以当前示例中配置的属性进行一次布局\n */\n\n\n AbstractGraph.prototype.layout = function () {\n var layoutController = this.get('layoutController');\n var layoutCfg = this.get('layout');\n if (!layoutCfg || !layoutController) return;\n\n if (layoutCfg.workerEnabled) {\n // 如果使用web worker布局\n layoutController.layout();\n return;\n }\n\n if (layoutController.layoutMethod) {\n layoutController.relayout(true);\n } else {\n layoutController.layout();\n }\n };\n /**\n * 收起指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.collapseCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo) {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.collapseCombo(combo);\n comboModel.collapsed = true; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false; // if the combo is found\n\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n // if the combo is found, concat the descendant nodes and combos\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = [];\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || source.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel();\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.parentId || targetModel.comboId);\n if (!target || !targetModel.parentId && !targetModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n targetModel = target.getModel();\n }\n\n var targetId = targetModel.id;\n\n if (edgeWeightMap[\"\".concat(comboModel.id, \"-\").concat(targetId)]) {\n edgeWeightMap[\"\".concat(comboModel.id, \"-\").concat(targetId)] += edgeModel.size || 1;\n return;\n } // the source is in the combo, the target is not\n\n\n var vedge = _this.addItem('vedge', {\n source: comboModel.id,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[\"\".concat(comboModel.id, \"-\").concat(targetId)] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || target.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel();\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.parentId || sourceModel.comboId);\n if (!source || !sourceModel.parentId && !sourceModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n sourceModel = source.getModel();\n }\n\n var sourceId = sourceModel.id;\n\n if (edgeWeightMap[\"\".concat(sourceId, \"-\").concat(comboModel.id)]) {\n edgeWeightMap[\"\".concat(sourceId, \"-\").concat(comboModel.id)] += edgeModel.size || 1;\n return;\n } // the target is in the combo, the source is not\n\n\n var vedge = _this.addItem('vedge', {\n target: comboModel.id,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[\"\".concat(sourceId, \"-\").concat(comboModel.id)] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n }\n }); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n addedVEdges.forEach(function (vedge) {\n var vedgeModel = vedge.getModel();\n\n _this.updateItem(vedge, {\n size: edgeWeightMap[\"\".concat(vedgeModel.source, \"-\").concat(vedgeModel.target)]\n }, false);\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'collapse',\n item: combo\n });\n };\n /**\n * 展开指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.expandCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.expandCombo(combo);\n comboModel.collapsed = false; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false;\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = {};\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n var sourceId = source.get('id');\n var targetId = target.get('id');\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || sourceId === comboModel.id) {\n // the source is in the combo, the target is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (sourceModel.comboId === comboModel.id || sourceModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n\n if (targetId) {\n var vedgeId = \"\".concat(sourceId, \"-\").concat(targetId); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n source: sourceId,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || targetId === comboModel.id) {\n // the target is in the combo, the source is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (targetModel.comboId === comboModel.id || targetModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n\n if (sourceId) {\n var vedgeId = \"\".concat(sourceId, \"-\").concat(targetId); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n target: targetId,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if ((cnodes.includes(source) || ccombos.includes(source)) && (cnodes.includes(target) || ccombos.includes(target))) {\n // both source and target are in the combo, if the target and source are both visible, show the edge\n if (source.isVisible() && target.isVisible()) {\n edge.show();\n }\n }\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n };\n\n AbstractGraph.prototype.collapseExpandCombo = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') return;\n var comboModel = combo.getModel(); // if one ancestor combo of the combo is collapsed, it should not be collapsed or expanded\n\n var parentItem = this.findById(comboModel.parentId);\n\n while (parentItem) {\n var parentModel = parentItem.getModel();\n\n if (parentModel.collapsed) {\n console.warn(\"Fail to expand the combo since it's ancestor combo is collapsed.\");\n parentItem = undefined;\n return;\n }\n\n parentItem = this.findById(parentModel.parentId);\n }\n\n var collapsed = comboModel.collapsed; // 该群组已经处于收起状态,需要展开\n\n if (collapsed) {\n this.expandCombo(combo);\n } else {\n this.collapseCombo(combo);\n }\n\n this.updateCombo(combo);\n };\n /**\n * 根据 comboTree 结构整理 Combo 相关的图形绘制层级,包括 Combo 本身、节点、边\n * @param {GraphData} data 数据\n */\n\n\n AbstractGraph.prototype.sortCombos = function () {\n var _this = this;\n\n var comboSorted = this.get('comboSorted');\n if (comboSorted) return;\n this.set('comboSorted', true);\n var depthMap = [];\n var dataDepthMap = {};\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (cTree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(cTree, function (child) {\n if (depthMap[child.depth]) depthMap[child.depth].push(child.id);else depthMap[child.depth] = [child.id];\n dataDepthMap[child.id] = child.depth;\n return true;\n });\n });\n var edges = this.getEdges().concat(this.get('vedges'));\n (edges || []).forEach(function (edgeItem) {\n var edge = edgeItem.getModel();\n var sourceDepth = dataDepthMap[edge.source] || 0;\n var targetDepth = dataDepthMap[edge.target] || 0;\n var depth = Math.max(sourceDepth, targetDepth);\n if (depthMap[depth]) depthMap[depth].push(edge.id);else depthMap[depth] = [edge.id];\n });\n depthMap.forEach(function (array) {\n if (!array || !array.length) return;\n\n for (var i = array.length - 1; i >= 0; i--) {\n var item = _this.findById(array[i]);\n\n if (item) item.toFront();\n }\n });\n };\n /**\n * 获取节点所有的邻居节点\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @returns {INode[]}\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNeighbors = function (node, type) {\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n return item.getNeighbors(type);\n };\n /**\n * 获取 node 的度数\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @param {('in' | 'out' | 'total' | 'all' | undefined)} 度数类型,in 入度,out 出度,total 总度数,all 返回三种类型度数的对象\n * @returns {Number | Object} 该节点的度数\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNodeDegree = function (node, type, refresh) {\n if (type === void 0) {\n type = undefined;\n }\n\n if (refresh === void 0) {\n refresh = false;\n }\n\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n var degrees = this.get('degrees');\n\n if (!degrees || refresh) {\n degrees = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getDegree\"])(this.save());\n this.set('degrees', degrees);\n }\n\n var nodeDegrees = degrees[item.getID()];\n var res = 0; // 如果是通过 addItem 后面新增加的节点,此时它的所有度数都为 0\n\n if (!nodeDegrees) {\n return 0;\n }\n\n switch (type) {\n case 'in':\n res = nodeDegrees.inDegree;\n break;\n\n case 'out':\n res = nodeDegrees.outDegree;\n break;\n\n case 'all':\n res = nodeDegrees;\n break;\n\n default:\n res = nodeDegrees.degree;\n break;\n }\n\n return res;\n };\n\n AbstractGraph.prototype.getUndoStack = function () {\n return this.undoStack;\n };\n\n AbstractGraph.prototype.getRedoStack = function () {\n return this.redoStack;\n };\n /**\n * 获取 undo 和 redo 栈的数据\n */\n\n\n AbstractGraph.prototype.getStackData = function () {\n if (!this.get('enabledStack')) {\n return null;\n }\n\n return {\n undoStack: this.undoStack.toArray(),\n redoStack: this.redoStack.toArray()\n };\n };\n /**\n * 清空 undo stack & redo stack\n */\n\n\n AbstractGraph.prototype.clearStack = function () {\n if (this.get('enabledStack')) {\n this.undoStack.clear();\n this.redoStack.clear();\n }\n };\n /**\n * 将操作类型和操作数据入栈\n * @param action 操作类型\n * @param data 入栈的数据\n * @param stackType 栈的类型\n */\n\n\n AbstractGraph.prototype.pushStack = function (action, data, stackType) {\n if (action === void 0) {\n action = 'update';\n }\n\n if (stackType === void 0) {\n stackType = 'undo';\n }\n\n if (!this.get('enabledStack')) {\n console.warn('请先启用 undo & redo 功能,在实例化 Graph 时候配置 enabledStack: true !');\n return;\n }\n\n var stackData = data ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(data) : {\n before: {},\n after: Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(this.save())\n };\n\n if (stackType === 'redo') {\n this.redoStack.push({\n action: action,\n data: stackData\n });\n } else {\n this.undoStack.push({\n action: action,\n data: stackData\n });\n }\n\n this.emit('stackchange', {\n undoStack: this.undoStack,\n redoStack: this.redoStack\n });\n };\n /**\n * 获取邻接矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 邻接矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getAdjMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n return currentAdjMatrix;\n };\n /**\n * 获取最短路径矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 最短路径矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getShortestPathMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n var currentShourtestPathMatrix = this.get('shortestPathMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n if (!currentShourtestPathMatrix || !cache) {\n currentShourtestPathMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"floydWarshall\"])(this.save(), directed);\n this.set('shortestPathMatrix', currentShourtestPathMatrix);\n }\n\n return currentShourtestPathMatrix;\n };\n /**\n * 重新定义监听函数,复写参数类型\n */\n\n\n AbstractGraph.prototype.on = function (eventName, callback, once) {\n return _super.prototype.on.call(this, eventName, callback, once);\n };\n /**\n * 销毁画布\n */\n\n\n AbstractGraph.prototype.destroy = function () {\n var _a, _b, _c, _d, _e;\n\n this.clear(); // 清空栈数据\n\n this.clearStack();\n (_a = this.get('itemController')) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = this.get('modeController')) === null || _b === void 0 ? void 0 : _b.destroy();\n (_c = this.get('viewController')) === null || _c === void 0 ? void 0 : _c.destroy();\n (_d = this.get('stateController')) === null || _d === void 0 ? void 0 : _d.destroy();\n (_e = this.get('canvas')) === null || _e === void 0 ? void 0 : _e.destroy();\n this.cfg = null;\n this.destroyed = true;\n this.redoStack = null;\n this.undoStack = null;\n };\n /**\n * 创建凸包或凹包轮廓\n * @param cfg HullCfg 轮廓配置项\n */\n\n\n AbstractGraph.prototype.createHull = function (cfg) {\n if (!cfg.members || cfg.members.length < 1) {\n console.warn('Create hull failed! The members is empty.');\n return;\n }\n\n var parent = this.get('hullGroup');\n var hullMap = this.get('hullMap');\n\n if (!hullMap) {\n hullMap = {};\n this.set('hullMap', hullMap);\n }\n\n if (!parent || parent.get('destroyed')) {\n parent = this.get('group').addGroup({\n id: 'hullGroup'\n });\n parent.toBack();\n this.set('hullGroup', parent);\n }\n\n if (hullMap[cfg.id]) {\n console.warn('Existed hull id.');\n return hullMap[cfg.id];\n }\n\n var group = parent.addGroup({\n id: \"\".concat(cfg.id, \"-container\")\n });\n var hull = new _item_hull__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), {\n group: group\n }));\n var hullId = hull.id;\n hullMap[hullId] = hull;\n return hull;\n };\n /**\n * 获取当前 graph 中存在的包裹轮廓\n * @return {[key: string]: Hull} Hull 的 map,hullId 对应的 hull 实例\n */\n\n\n AbstractGraph.prototype.getHulls = function () {\n return this.get('hullMap');\n };\n /**\n * 根据 hullId 获取对应的 hull\n * @return Hull\n */\n\n\n AbstractGraph.prototype.getHullById = function (hullId) {\n return this.get('hullMap')[hullId];\n };\n\n AbstractGraph.prototype.removeHull = function (hull) {\n var _a;\n\n var hullInstance;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(hull)) {\n hullInstance = this.getHullById(hull);\n } else {\n hullInstance = hull;\n }\n\n (_a = this.get('hullMap')) === null || _a === void 0 ? true : delete _a[hullInstance.id];\n hullInstance.destroy();\n };\n\n AbstractGraph.prototype.removeHulls = function () {\n var hulls = this.getHulls();\n if (!hulls || !Object.keys(hulls).length) return;\n Object.keys(hulls).forEach(function (key) {\n var hull = hulls[key];\n hull.destroy();\n });\n this.set('hullMap', {});\n };\n\n return AbstractGraph;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGraph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9ncmFwaC5qcz84NmY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRDtBQUNaO0FBQ1A7QUFDbUM7QUFDMEI7QUFDM0Q7QUFDZ0M7QUFDM0M7QUFDZ0U7QUFDSztBQUNwRTtBQUNoQyxnQkFBZ0IscURBQUc7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBLGdCQUFnQiwwREFBTzs7QUFFdkI7O0FBRUE7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSw0QkFBNEIscURBQUs7QUFDakMsNEJBQTRCLHFEQUFLO0FBQ2pDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCLDZCQUE2QiwwREFBYztBQUMzQyw2QkFBNkIsMERBQWM7QUFDM0MsNkJBQTZCLDBEQUFjO0FBQzNDLDhCQUE4QiwyREFBZTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIscUJBQXFCO0FBQ3JCLGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQkFBK0I7QUFDdEQscUJBQXFCO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsZ0VBQWE7QUFDckIsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQyxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLE1BQU07QUFDTixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDhCQUE4QjtBQUMzQyxjQUFjLEVBQUU7QUFDaEI7OztBQUdBO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxzQkFBc0Isd0RBQUs7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQix3REFBSzs7QUFFdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsbUJBQW1CO0FBQ2hDOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSxrQkFBa0I7QUFDL0IsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUNBQWlDO0FBQzlDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLCtCQUErQjtBQUM1QyxhQUFhLGtCQUFrQjtBQUMvQixjQUFjLE1BQU07QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQyxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esd0JBQXdCLHdEQUFLOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxzQkFBc0IsdURBQUk7O0FBRTFCO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsbUJBQW1CO0FBQ2hDLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSwyREFBUTs7QUFFaEIscUJBQXFCLDJEQUFRO0FBQzdCO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBLDJCQUEyQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDL0M7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0Q0FBNEMsUUFBUTtBQUNwRCxrQ0FBa0Msc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3REO0FBQ0EsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFFQUFlO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLFlBQVk7QUFDekIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixjQUFjLEtBQUs7QUFDbkI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0RBQW9EOztBQUVwRCxTQUFTLDZFQUFvQjtBQUM3QjtBQUNBOztBQUVBO0FBQ0EscUhBQXFILFlBQVk7QUFDakk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLFFBQVEsb0VBQWM7QUFDdEI7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixzREFBUTtBQUNuQztBQUNBO0FBQ0EsYUFBYTs7QUFFYiw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBOztBQUVBLDhDQUE4Qzs7QUFFOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTs7QUFFVDtBQUNBLHVCQUF1QixzREFBUTtBQUMvQjtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssNkJBQTZCLDJEQUFRO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlEOztBQUVqRCxRQUFRLG9FQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHdEQUFLO0FBQ2pDO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCLGFBQWEsWUFBWTtBQUN6QixhQUFhLFFBQVE7QUFDckIsY0FBYyxLQUFLO0FBQ25COzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxpQ0FBaUM7QUFDOUM7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3Qix3REFBSztBQUM3QjtBQUNBOztBQUVBLGlCQUFpQiwyREFBYTs7QUFFOUI7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLE9BQU87QUFDcEIsYUFBYSxpQkFBaUI7QUFDOUI7OztBQUdBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCOzs7QUFHQTtBQUNBLElBQUksdUVBQWM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSx1QkFBdUIsd0VBQWtCO0FBQ3pDLHlDQUF5Qzs7QUFFekM7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMEJBQTBCO0FBQ3ZDLGFBQWEsUUFBUTtBQUNyQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFNBQVMsdUVBQWM7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQ0FBbUM7O0FBRW5DLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsd0VBQWtCO0FBQ3pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUEsa0NBQWtDLFFBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSx1REFBSTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLGlDQUFpQzs7QUFFakM7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQSxNQUFNLG9FQUFjO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdCQUF3QjtBQUNyQzs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsTUFBTSxvRUFBYztBQUNwQixlQUFlOzs7QUFHZjtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSxhQUFhO0FBQ2I7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBOztBQUVBOztBQUVBLG1DQUFtQzs7QUFFbkMsa0NBQWtDOztBQUVsQztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLG9FQUFjO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCLDJEQUFhOztBQUVwQyxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXLEVBQUU7O0FBRWIsZ0VBQWdFOztBQUVoRSxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnQkFBZ0I7QUFDN0I7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QiwyREFBYSxrQ0FBa0M7OztBQUd0RSxVQUFVLHVEQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFOztBQUViLGdFQUFnRTs7QUFFaEUsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdCQUF3QjtBQUNyQyxhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsa0VBQVk7QUFDcEIsb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFOztBQUVULE1BQU0sa0VBQVk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLHFFQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1AsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxvQ0FBb0M7QUFDcEM7O0FBRUEsV0FBVyxnRUFBYTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsbUJBQW1CO0FBQ2hDLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQywyREFBMkQ7O0FBRTNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLE1BQU0sa0VBQVk7QUFDbEI7QUFDQSxxRUFBcUU7O0FBRXJFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtFQUErRTs7QUFFL0U7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtFQUErRTs7QUFFL0U7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnQkFBZ0I7QUFDN0I7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsTUFBTSxrRUFBWTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esa0VBQWtFO0FBQ2xFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNENBQTRDOztBQUU1QztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtFQUFrRTtBQUNsRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtFQUFZO0FBQ2xCLHdFQUF3RTtBQUN4RTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQsS0FBSztBQUNMO0FBQ0E7O0FBRUEsb0NBQW9DLFFBQVE7QUFDNUM7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUJBQWlCO0FBQzlCLGVBQWU7QUFDZjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUIsYUFBYSw2Q0FBNkM7QUFDMUQsZUFBZSxnQkFBZ0I7QUFDL0I7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdCQUFnQixpRUFBUztBQUN6QjtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQix3REFBSztBQUNoQyxnQkFBZ0I7QUFDaEIsYUFBYSx3REFBSztBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsb0VBQWlCO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixvRUFBaUI7QUFDMUM7QUFDQTs7QUFFQTtBQUNBLG1DQUFtQyxxRUFBYTtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQkFBbUIsbURBQUksT0FBTyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvQkFBb0I7QUFDbEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQVk7O0FBRUMsNEVBQWEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnQGFudHYvZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBjbG9uZSwgZGVlcE1peCwgZWFjaCwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldERlZ3JlZSwgZ2V0QWRqTWF0cml4IGFzIGdldEFkamFjZW50TWF0cml4LCBTdGFjaywgZmxveWRXYXJzaGFsbCB9IGZyb20gJ0BhbnR2L2FsZ29yaXRobSc7XG5pbXBvcnQgeyBsZXJwLCBtb3ZlIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IGRhdGFWYWxpZGF0aW9uLCBzaW5nbGVEYXRhVmFsaWRhdGlvbiB9IGZyb20gJy4uL3V0aWwvdmFsaWRhdGlvbic7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgeyBJdGVtQ29udHJvbGxlciwgTW9kZUNvbnRyb2xsZXIsIFN0YXRlQ29udHJvbGxlciwgVmlld0NvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xuaW1wb3J0IHsgcGxhaW5Db21ib3NUb1RyZWVzLCB0cmF2ZXJzZVRyZWUsIHJlY29uc3RydWN0VHJlZSwgdHJhdmVyc2VUcmVlVXAgfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IEh1bGwgZnJvbSAnLi4vaXRlbS9odWxsJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIE5PREUgPSAnbm9kZSc7XG5cbnZhciBBYnN0cmFjdEdyYXBoID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKEFic3RyYWN0R3JhcGgsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gQWJzdHJhY3RHcmFwaChjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuY2ZnID0gZGVlcE1peChfdGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG5cbiAgICBfdGhpcy5pbml0KCk7XG5cbiAgICBfdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsgLy8g5ZCv55SoIHN0YWNrIOWQju+8jOWunuS+i+WMliB1bmRvU3RhY2sg5ZKMIHJlZG9TdGFja1xuXG4gICAgaWYgKF90aGlzLmNmZy5lbmFibGVkU3RhY2spIHtcbiAgICAgIC8vIOWunuS+i+WMliB1bmRvIOWSjCByZWRvIOagiFxuICAgICAgX3RoaXMudW5kb1N0YWNrID0gbmV3IFN0YWNrKF90aGlzLmNmZy5tYXhTdGVwKTtcbiAgICAgIF90aGlzLnJlZG9TdGFjayA9IG5ldyBTdGFjayhfdGhpcy5jZmcubWF4U3RlcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmluaXRDYW52YXMoKTsgLy8gaW5zdGFuY2UgY29udHJvbGxlclxuXG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gbmV3IFZpZXdDb250cm9sbGVyKHRoaXMpO1xuICAgIHZhciBtb2RlQ29udHJvbGxlciA9IG5ldyBNb2RlQ29udHJvbGxlcih0aGlzKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSBuZXcgSXRlbUNvbnRyb2xsZXIodGhpcyk7XG4gICAgdmFyIHN0YXRlQ29udHJvbGxlciA9IG5ldyBTdGF0ZUNvbnRyb2xsZXIodGhpcyk7XG4gICAgdGhpcy5zZXQoe1xuICAgICAgdmlld0NvbnRyb2xsZXI6IHZpZXdDb250cm9sbGVyLFxuICAgICAgbW9kZUNvbnRyb2xsZXI6IG1vZGVDb250cm9sbGVyLFxuICAgICAgaXRlbUNvbnRyb2xsZXI6IGl0ZW1Db250cm9sbGVyLFxuICAgICAgc3RhdGVDb250cm9sbGVyOiBzdGF0ZUNvbnRyb2xsZXJcbiAgICB9KTsgLy8g5Yid5aeL5YyW5biD5bGA5py65Yi2XG5cbiAgICB0aGlzLmluaXRMYXlvdXRDb250cm9sbGVyKCk7IC8vIOWIneWni+WMluS6i+S7tuacuuWItlxuXG4gICAgdGhpcy5pbml0RXZlbnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5pbml0R3JvdXBzKCk7XG4gICAgLyoqIOWIneWni+WMluaPkuS7tiAqL1xuXG4gICAgdGhpcy5pbml0UGx1Z2lucygpO1xuICB9OyAvLyDliJ3lp4vljJbmiYDmnIkgR3JvdXBcblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmluaXRHcm91cHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICBpZiAoIWNhbnZhcykgcmV0dXJuO1xuICAgIHZhciBlbCA9IGNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgdmFyIF9hID0gKGVsIHx8IHt9KS5pZCxcbiAgICAgICAgaWQgPSBfYSA9PT0gdm9pZCAwID8gJ2c2JyA6IF9hO1xuICAgIHZhciBncm91cCA9IGNhbnZhcy5hZGRHcm91cCh7XG4gICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLXJvb3RcIiksXG4gICAgICBjbGFzc05hbWU6IEdsb2JhbC5yb290Q29udGFpbmVyQ2xhc3NOYW1lXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5nZXQoJ2dyb3VwQnlUeXBlcycpKSB7XG4gICAgICB2YXIgZWRnZUdyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLWVkZ2VcIiksXG4gICAgICAgIGNsYXNzTmFtZTogR2xvYmFsLmVkZ2VDb250YWluZXJDbGFzc05hbWVcbiAgICAgIH0pO1xuICAgICAgdmFyIG5vZGVHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KGlkLCBcIi1ub2RlXCIpLFxuICAgICAgICBjbGFzc05hbWU6IEdsb2JhbC5ub2RlQ29udGFpbmVyQ2xhc3NOYW1lXG4gICAgICB9KTtcbiAgICAgIHZhciBjb21ib0dyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLWNvbWJvXCIpLFxuICAgICAgICBjbGFzc05hbWU6IEdsb2JhbC5jb21ib0NvbnRhaW5lckNsYXNzTmFtZVxuICAgICAgfSk7IC8vIOeUqOS6juWtmOWCqOiHquWumuS5ieeahOe+pOe7hFxuXG4gICAgICBjb21ib0dyb3VwLnRvQmFjaygpO1xuICAgICAgdGhpcy5zZXQoe1xuICAgICAgICBub2RlR3JvdXA6IG5vZGVHcm91cCxcbiAgICAgICAgZWRnZUdyb3VwOiBlZGdlR3JvdXAsXG4gICAgICAgIGNvbWJvR3JvdXA6IGNvbWJvR3JvdXBcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBkZWxlZ2F0ZUdyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgaWQ6IFwiXCIuY29uY2F0KGlkLCBcIi1kZWxlZ2F0ZVwiKSxcbiAgICAgIGNsYXNzTmFtZTogR2xvYmFsLmRlbGVnYXRlQ29udGFpbmVyQ2xhc3NOYW1lXG4gICAgfSk7XG4gICAgdGhpcy5zZXQoe1xuICAgICAgZGVsZWdhdGVHcm91cDogZGVsZWdhdGVHcm91cFxuICAgIH0pO1xuICAgIHRoaXMuc2V0KCdncm91cCcsIGdyb3VwKTtcbiAgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICogQ29udGFpbmVyIGNvdWxkIGJlIGRvbSBvYmplY3Qgb3IgZG9tIGlkXG4gICAgICAgKi9cbiAgICAgIGNvbnRhaW5lcjogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIENhbnZhcyB3aWR0aFxuICAgICAgICogdW5pdCBwaXhlbCBpZiB1bmRlZmluZWQgZm9yY2UgZml0IHdpZHRoXG4gICAgICAgKi9cbiAgICAgIHdpZHRoOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogQ2FudmFzIGhlaWdodFxuICAgICAgICogdW5pdCBwaXhlbCBpZiB1bmRlZmluZWQgZm9yY2UgZml0IGhlaWdodFxuICAgICAgICovXG4gICAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcblxuICAgICAgLyoqXG4gICAgICAgKiByZW5kZXJlciBjYW52YXMgb3Igc3ZnXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICByZW5kZXJlcjogJ2NhbnZhcycsXG5cbiAgICAgIC8qKlxuICAgICAgICogY29udHJvbCBncmFwaCBiZWhhdmlvcnNcbiAgICAgICAqL1xuICAgICAgbW9kZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOazqOWGjOaPkuS7tlxuICAgICAgICovXG4gICAgICBwbHVnaW5zOiBbXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBzb3VyY2UgZGF0YVxuICAgICAgICovXG4gICAgICBkYXRhOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiBGaXQgdmlldyBwYWRkaW5nIChjbGllbnQgc2NhbGUpXG4gICAgICAgKi9cbiAgICAgIGZpdFZpZXdQYWRkaW5nOiAxMCxcblxuICAgICAgLyoqXG4gICAgICAgKiBNaW5pbXVtIHNjYWxlIHNpemVcbiAgICAgICAqL1xuICAgICAgbWluWm9vbTogMC4yLFxuXG4gICAgICAvKipcbiAgICAgICAqIE1heG11bSBzY2FsZSBzaXplXG4gICAgICAgKi9cbiAgICAgIG1heFpvb206IDEwLFxuXG4gICAgICAvKipcbiAgICAgICAqICBjYXB0dXJlIGV2ZW50c1xuICAgICAgICovXG4gICAgICBldmVudDogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBncm91cCBub2RlICYgZWRnZXMgaW50byBkaWZmZXJlbnQgZ3JhcGhpYyBncm91cHNcbiAgICAgICAqL1xuICAgICAgZ3JvdXBCeVR5cGVzOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIGRldGVybWluZSBpZiBpdCdzIGEgZGlyZWN0ZWQgZ3JhcGhcbiAgICAgICAqL1xuICAgICAgZGlyZWN0ZWQ6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHdoZW4gZGF0YSBvciBzaGFwZSBjaGFuZ2VkLCBzaG91bGQgY2FudmFzIGRyYXcgYXV0b21hdGljYWxseVxuICAgICAgICovXG4gICAgICBhdXRvUGFpbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBub2RlIGluc3RhbmNlc1xuICAgICAgICovXG4gICAgICBub2RlczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBlZGdlIGluc3RhbmNlc1xuICAgICAgICovXG4gICAgICBlZGdlczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBjb21ibyBpbnN0YW5jZXNcbiAgICAgICAqL1xuICAgICAgY29tYm9zOiBbXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBzdG9yZSBhbGwgdGhlIGVkZ2UgaW5zdGFuY2VzIHdoaWNoIGFyZSB2aXJ0dWFsIGVkZ2VzIHJlbGF0ZWQgdG8gY29sbGFwc2VkIGNvbWJvXG4gICAgICAgKi9cbiAgICAgIHZlZGdlczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogYWxsIHRoZSBpbnN0YW5jZXMgaW5kZXhlZCBieSBpZFxuICAgICAgICovXG4gICAgICBpdGVtTWFwOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDovrnnm7TmjqXov57mjqXliLDoioLngrnnmoTkuK3lv4PvvIzkuI3lho3ogIPomZHplJrngrlcbiAgICAgICAqL1xuICAgICAgbGlua0NlbnRlcjogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICog6buY6K6k55qE6IqC54K56YWN572u77yMZGF0YSDkuIrlrprkuYnnmoTphY3nva7kvJropobnm5bov5nkupvphY3nva7jgILkvovlpoLvvJpcbiAgICAgICAqIGRlZmF1bHROb2RlOiB7XG4gICAgICAgKiAgdHlwZTogJ3JlY3QnLFxuICAgICAgICogIHNpemU6IFs2MCwgNDBdLFxuICAgICAgICogIHN0eWxlOiB7XG4gICAgICAgKiAgICAvLy4uLiDmoLflvI/phY3nva7poblcbiAgICAgICAqICB9XG4gICAgICAgKiB9XG4gICAgICAgKiDoi6XmlbDmja7pobnkuLogeyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMCB9XG4gICAgICAgKiDlrp7pmYXliJvlu7rnmoToioLngrnmqKHlnovmmK8geyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMO+8jCB0eXBlOiAncmVjdCcsIHNpemU6IFs2MCwgNDBdIH1cbiAgICAgICAqIOiLpeaVsOaNrumhueS4uiB7IGlkOiAnbm9kZScsIHg6IDEwMCwgeTogMTAwLCB0eXBlOiAnY2lyY2xlJyB9XG4gICAgICAgKiDlrp7pmYXliJvlu7rnmoToioLngrnmqKHlnovmmK8geyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMO+8jCB0eXBlOiAnY2lyY2xlJywgc2l6ZTogWzYwLCA0MF0gfVxuICAgICAgICovXG4gICAgICBkZWZhdWx0Tm9kZToge30sXG5cbiAgICAgIC8qKlxuICAgICAgICog6buY6K6k6L656YWN572u77yMZGF0YSDkuIrlrprkuYnnmoTphY3nva7kvJropobnm5bov5nkupvphY3nva7jgILnlKjms5XlkIwgZGVmYXVsdE5vZGVcbiAgICAgICAqL1xuICAgICAgZGVmYXVsdEVkZ2U6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOiKgueCuem7mOiupOagt+W8j++8jOS5n+WPr+S7pea3u+WKoOeKtuaAgeagt+W8j1xuICAgICAgICog5L6L5aaC77yaXG4gICAgICAgKiBjb25zdCBncmFwaCA9IG5ldyBHNi5HcmFwaCh7XG4gICAgICAgKiAgbm9kZVN0YXRlU3R5bGVzOiB7XG4gICAgICAgKiAgICBzZWxlY3RlZDogeyBmaWxsOiAnI2NjYycsIHN0cm9rZTogJyM2NjYnIH0sXG4gICAgICAgKiAgICBhY3RpdmU6IHsgbGluZVdpZHRoOiAyIH1cbiAgICAgICAqICB9LFxuICAgICAgICogIC4uLlxuICAgICAgICogfSk7XG4gICAgICAgKlxuICAgICAgICovXG4gICAgICBub2RlU3RhdGVTdHlsZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOi+uem7mOiupOagt+W8j++8jOeUqOazleWQjG5vZGVTdGF0ZVN0eWxlXG4gICAgICAgKi9cbiAgICAgIGVkZ2VTdGF0ZVN0eWxlczoge30sXG5cbiAgICAgIC8qKlxuICAgICAgICogZ3JhcGgg54q25oCBXG4gICAgICAgKi9cbiAgICAgIHN0YXRlczoge30sXG5cbiAgICAgIC8qKlxuICAgICAgICog5piv5ZCm5ZCv55So5YWo5bGA5Yqo55S7XG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIOWKqOeUu+iuvue9rizku4XlnKggYW5pbWF0ZSDkuLogdHJ1ZSDml7bmnInmlYhcbiAgICAgICAqL1xuICAgICAgYW5pbWF0ZUNmZzoge1xuICAgICAgICAvKipcbiAgICAgICAgICog5bin5Zue6LCD5Ye95pWw77yM55So5LqO6Ieq5a6a5LmJ6IqC54K56L+Q5Yqo6Lev5b6E77yM5Li656m65pe257q/5oCn6L+Q5YqoXG4gICAgICAgICAqL1xuICAgICAgICBvbkZyYW1lOiB1bmRlZmluZWQsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWKqOeUu+aXtumVvyhtcylcbiAgICAgICAgICovXG4gICAgICAgIGR1cmF0aW9uOiA1MDAsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaMh+WumuWKqOeUu+WKqOaViFxuICAgICAgICAgKi9cbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0sXG4gICAgICBjYWxsYmFjazogdW5kZWZpbmVkLFxuICAgICAgLy8g6buY6K6k5LiN5ZCv55SoIHVuZG8gJiByZWRvIOWKn+iDvVxuICAgICAgZW5hYmxlZFN0YWNrOiBmYWxzZSxcbiAgICAgIC8vIOWPquacieW9kyBlbmFibGVkU3RhY2sg5Li6IHRydWUg5pe25omN6LW35L2c55SoXG4gICAgICBtYXhTdGVwOiAxMCxcbiAgICAgIC8vIOWtmOWCqOWbvuS4iueahCB0b29sdGlwIGRvbe+8jOaWueS+v+mUgOavgVxuICAgICAgdG9vbHRpcHM6IFtdXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWAvOiuvue9ruWIsCB0aGlzLmNmZyDlj5jph4/kuIrpnaJcbiAgICogQHBhcmFtIGtleSDplK4g5oiWIOWvueixoeWAvFxuICAgKiBAcGFyYW0gdmFsIOWAvFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGtleSkpIHtcbiAgICAgIHRoaXMuY2ZnID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuY2ZnKSwga2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jZmdba2V5XSA9IHZhbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliB0aGlzLmNmZyDkuK3nmoTlgLxcbiAgICogQHBhcmFtIGtleSDplK5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgcmV0dXJuIChfYSA9IHRoaXMuY2ZnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fba2V5XTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBncmFwaCDnmoTmoLnlm77lvaLliIbnu4RcbiAgICogQHJldHVybiDmoLkgZ3JvdXBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRHcm91cCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qEIERPTSDlrrnlmahcbiAgICogQHJldHVybiBET00g5a655ZmoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qE5pyA5bCP57yp5pS+5q+U5L6LXG4gICAqIEByZXR1cm4gbWluWm9vbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE1pblpvb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdtaW5ab29tJyk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva4gZ3JhcGgg55qE5pyA5bCP57yp5pS+5q+U5L6LXG4gICAqIEByZXR1cm4gbWluWm9vbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNldE1pblpvb20gPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICByZXR1cm4gdGhpcy5zZXQoJ21pblpvb20nLCByYXRpbyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qE5pyA5aSn57yp5pS+5q+U5L6LXG4gICAqIEBwYXJhbSBtYXhab29tXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0TWF4Wm9vbSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21heFpvb20nKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9riBncmFwaCDnmoTmnIDlpKfnvKnmlL7mr5TkvotcbiAgICogQHBhcmFtIG1heFpvb21cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRNYXhab29tID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KCdtYXhab29tJywgcmF0aW8pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOWuveW6plxuICAgKiBAcmV0dXJuIHdpZHRoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCd3aWR0aCcpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOmrmOW6plxuICAgKiBAcmV0dXJuIHdpZHRoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaGVpZ2h0Jyk7XG4gIH07XG4gIC8qKlxuICAgKiDmuIXnkIblhYPntKDlpJrkuKrnirbmgIFcbiAgICogQHBhcmFtIHtzdHJpbmd8SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzdGF0ZXMg54q25oCBXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2xlYXJJdGVtU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcykge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG5cbiAgICBpZiAoIXN0YXRlcykge1xuICAgICAgc3RhdGVzID0gaXRlbS5nZXQoJ3N0YXRlcycpO1xuICAgIH1cblxuICAgIGl0ZW1Db250cm9sbGVyLmNsZWFySXRlbVN0YXRlcyhpdGVtLCBzdGF0ZXMpO1xuICAgIHZhciBzdGF0ZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnc3RhdGVDb250cm9sbGVyJyk7XG4gICAgc3RhdGVDb250cm9sbGVyLnVwZGF0ZVN0YXRlcyhpdGVtLCBzdGF0ZXMsIGZhbHNlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWQhOS4quiKgueCueagt+W8j++8jOS7peWPiuWcqOWQhOenjeeKtuaAgeS4i+iKgueCuSBrZXlTaGFwZSDnmoTmoLflvI/jgIJcbiAgICog6Iul5piv6Ieq5a6a5LmJ6IqC54K55YiH5Zyo5ZCE56eN54q25oCB5LiLXG4gICAqIGdyYXBoLm5vZGUobm9kZSA9PiB7XG4gICAqICByZXR1cm4ge1xuICAgKiAgICB0eXBlOiAncmVjdCcsXG4gICAqICAgIGxhYmVsOiBub2RlLmlkLFxuICAgKiAgICBzdHlsZTogeyBmaWxsOiAnIzY2NicgfSxcbiAgICogICAgc3RhdGVTdHlsZXM6IHtcbiAgICogICAgICAgc2VsZWN0ZWQ6IHsgZmlsbDogJ2JsdWUnIH0sXG4gICAqICAgICAgIGN1c3RvbTogeyBmaWxsOiAnZ3JlZW4nIH1cbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBub2RlRm4g5oyH5a6a5q+P5Liq6IqC54K55qC35byPXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUubm9kZSA9IGZ1bmN0aW9uIChub2RlRm4pIHtcbiAgICBpZiAodHlwZW9mIG5vZGVGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5zZXQoJ25vZGVNYXBwZXInLCBub2RlRm4pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWQhOS4qui+ueagt+W8j1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlZGdlRm4g5oyH5a6a5q+P5Liq6L6555qE5qC35byPLOeUqOazleWQjCBub2RlXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZWRnZSA9IGZ1bmN0aW9uIChlZGdlRm4pIHtcbiAgICBpZiAodHlwZW9mIGVkZ2VGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5zZXQoJ2VkZ2VNYXBwZXInLCBlZGdlRm4pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWQhOS4qiBjb21ibyDnmoTphY3nva5cbiAgICogQHBhcmFtIGNvbWJvRm5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5jb21ibyA9IGZ1bmN0aW9uIChjb21ib0ZuKSB7XG4gICAgaWYgKHR5cGVvZiBjb21ib0ZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnNldCgnY29tYm9NYXBwZXInLCBjb21ib0ZuKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gSUQg5p+l6K+i5Zu+5YWD57Sg5a6e5L6LXG4gICAqIEBwYXJhbSBpZCDlm77lhYPntKAgSURcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maW5kQnlJZCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaXRlbU1hcCcpW2lkXTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNruWvueW6lOinhOWImeafpeaJvuWNleS4quWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UgfCBncm91cClcbiAgICogQHBhcmFtIHsoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gVH0gZm4g5oyH5a6a6KeE5YiZXG4gICAqIEByZXR1cm4ge1R9IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAodHlwZSwgZm4pIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIHZhciBpdGVtcyA9IHRoaXMuZ2V0KFwiXCIuY29uY2F0KHR5cGUsIFwic1wiKSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXG4gICAgZWFjaChpdGVtcywgZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICAgIGlmIChmbihpdGVtLCBpKSkge1xuICAgICAgICByZXN1bHQgPSBpdGVtO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7miYDmnInmu6HotrPop4TliJnnmoTlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUg5YWD57Sg57G75Z6LKG5vZGV8ZWRnZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZuIOaMh+WumuinhOWImVxuICAgKiBAcmV0dXJuIHthcnJheX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uICh0eXBlLCBmbikge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBlYWNoKHRoaXMuZ2V0KFwiXCIuY29uY2F0KHR5cGUsIFwic1wiKSksIGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICBpZiAoZm4oaXRlbSwgaSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgLyoqXG4gICAqIOafpeaJvuaJgOacieWkhOS6juaMh+WumueKtuaAgeeahOWFg+e0oFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSDlhYPntKDnsbvlnosobm9kZXxlZGdlKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUg54q25oCBXG4gICAqIEByZXR1cm4ge29iamVjdH0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZmluZEFsbEJ5U3RhdGUgPSBmdW5jdGlvbiAodHlwZSwgc3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWxsKHR5cGUsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5oYXNTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0QW5pbWF0ZUNmZ1dpdGhDYWxsYmFjayA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBhbmltYXRlQ2ZnID0gX2EuYW5pbWF0ZUNmZyxcbiAgICAgICAgY2FsbGJhY2sgPSBfYS5jYWxsYmFjaztcbiAgICB2YXIgYW5pbWF0ZUNvbmZpZztcblxuICAgIGlmICghYW5pbWF0ZUNmZykge1xuICAgICAgYW5pbWF0ZUNvbmZpZyA9IHtcbiAgICAgICAgZHVyYXRpb246IDUwMCxcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhbmltYXRlQ29uZmlnID0gY2xvbmUoYW5pbWF0ZUNmZyk7XG5cbiAgICAgIGlmIChhbmltYXRlQ2ZnLmNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBhbmltYXRlQ2ZnQ2FsbGJhY2tfMSA9IGFuaW1hdGVDZmcuY2FsbGJhY2s7XG5cbiAgICAgICAgYW5pbWF0ZUNvbmZpZy5jYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgIGFuaW1hdGVDZmdDYWxsYmFja18xKCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRlQ29uZmlnLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuaW1hdGVDb25maWc7XG4gIH07XG4gIC8qKlxuICAgKiDlubPnp7vnlLvluINcbiAgICogQHBhcmFtIGR4IOawtOW5s+aWueWQkeS9jeenu1xuICAgKiBAcGFyYW0gZHkg5Z6C55u05pa55ZCR5L2N56e7XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYW5pbWF0ZSDmmK/lkKbluKbmnInliqjnlLvlnLDnp7vliqhcbiAgICogQHBhcmFtIHtHcmFwaEFuaW1hdGVDb25maWd9IGFuaW1hdGVDZmcg6Iul5bim5pyJ5Yqo55S777yM5Yqo55S755qE6YWN572u6aG5XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKGR4LCBkeSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgbWF0cml4ID0gY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgdmFyIGFuaW1hdGVDb25maWcgPSB0aGlzLmdldEFuaW1hdGVDZmdXaXRoQ2FsbGJhY2soe1xuICAgICAgICBhbmltYXRlQ2ZnOiBhbmltYXRlQ2ZnLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoJ3ZpZXdwb3J0Y2hhbmdlJywge1xuICAgICAgICAgICAgYWN0aW9uOiAndHJhbnNsYXRlJyxcbiAgICAgICAgICAgIG1hdHJpeDogZ3JvdXAuZ2V0TWF0cml4KClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtb3ZlKGdyb3VwLCB7XG4gICAgICAgIHg6IGdyb3VwLmdldENhbnZhc0JCb3goKS54ICsgZHgsXG4gICAgICAgIHk6IGdyb3VwLmdldENhbnZhc0JCb3goKS55ICsgZHlcbiAgICAgIH0sIGFuaW1hdGUsIGFuaW1hdGVDb25maWcgfHwge1xuICAgICAgICBkdXJhdGlvbjogNTAwLFxuICAgICAgICBlYXNpbmc6ICdlYXNlQ3ViaWMnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sndCcsIGR4LCBkeV1dKTtcbiAgICAgIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICAgICAgdGhpcy5lbWl0KCd2aWV3cG9ydGNoYW5nZScsIHtcbiAgICAgICAgYWN0aW9uOiAndHJhbnNsYXRlJyxcbiAgICAgICAgbWF0cml4OiBtYXRyaXhcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlubPnp7vnlLvluIPliLDmn5DngrlcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg5rC05bmz5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOWeguebtOWdkOagh1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm1vdmVUbyA9IGZ1bmN0aW9uICh4LCB5LCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgbW92ZShncm91cCwge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCBhbmltYXRlLCBhbmltYXRlQ2ZnIHx8IHtcbiAgICAgIGR1cmF0aW9uOiA1MDAsXG4gICAgICBlYXNpbmc6ICdlYXNlQ3ViaWMnXG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KCd2aWV3cG9ydGNoYW5nZScsIHtcbiAgICAgIGFjdGlvbjogJ21vdmUnLFxuICAgICAgbWF0cml4OiBncm91cC5nZXRNYXRyaXgoKVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6LCD5pW06KeG5Y+j6YCC5bqU6KeG5Zu+XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYWRkaW5nIOWbm+WRqOWbtOi+uei3nVxuICAgKiBAcGFyYW0ge0ZpdFZpZXdSdWxlc30gcnVsZXMgZml0Vmlld+eahOinhOWImVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpdFZpZXcgPSBmdW5jdGlvbiAocGFkZGluZywgcnVsZXMpIHtcbiAgICBpZiAocGFkZGluZykge1xuICAgICAgdGhpcy5zZXQoJ2ZpdFZpZXdQYWRkaW5nJywgcGFkZGluZyk7XG4gICAgfVxuXG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG5cbiAgICBpZiAocnVsZXMpIHtcbiAgICAgIHZpZXdDb250cm9sbGVyLmZpdFZpZXdCeVJ1bGVzKHJ1bGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlld0NvbnRyb2xsZXIuZml0VmlldygpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDosIPmlbTop4blj6PpgILlupTop4blm77vvIzkuI3nvKnmlL7vvIzku4XlsIblm74gYmJveCDkuK3lv4Plr7npvZDliLDnlLvluIPkuK3lv4NcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maXRDZW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmlld0NvbnRyb2xsZXIuZml0Q2VudGVyKCk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZVtdfSBiZWhhdmlvcnMg5re75Yqg55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOa3u+WKoOWIsOWvueW6lOeahOaooeW8j1xuICAgKiBAcmV0dXJuIHtHcmFwaH0gR3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5hZGRCZWhhdmlvcnMgPSBmdW5jdGlvbiAoYmVoYXZpb3JzLCBtb2Rlcykge1xuICAgIHZhciBtb2RlQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpO1xuICAgIG1vZGVDb250cm9sbGVyLm1hbmlwdWxhdGVCZWhhdmlvcnMoYmVoYXZpb3JzLCBtb2RlcywgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNb2RlT3B0aW9uIHwgTW9kZVR5cGVbXX0gYmVoYXZpb3JzIOenu+mZpOeahOihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBtb2RlcyDku47mjIflrprnmoTmqKHlvI/kuK3np7vpmaRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVtb3ZlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci5tYW5pcHVsYXRlQmVoYXZpb3JzKGJlaGF2aW9ycywgbW9kZXMsIGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOihjOS4uuWPguaVsFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZX0gYmVoYXZpb3Ig6ZyA6KaB5pu05paw55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOaMh+WumueahOaooeW8j+S4reeahOihjOS4uu+8jOS4jeaMh+WumuWImeS4uiBkZWZhdWx0XG4gICAqIEByZXR1cm4ge0dyYXBofSBHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci51cGRhdGVCZWhhdmlvcihiZWhhdmlvciwgbmV3Q2ZnLCBtb2RlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOS8uOe8qeeql+WPo1xuICAgKiBAcGFyYW0gcmF0aW8g5Ly457yp5q+U5L6LXG4gICAqIEBwYXJhbSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tID0gZnVuY3Rpb24gKHJhdGlvLCBjZW50ZXIsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1hdHJpeCA9IGNsb25lKGdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgLWNlbnRlci54LCAtY2VudGVyLnldLCBbJ3MnLCByYXRpbywgcmF0aW9dLCBbJ3QnLCBjZW50ZXIueCwgY2VudGVyLnldXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3MnLCByYXRpbywgcmF0aW9dXSk7XG4gICAgfVxuXG4gICAgaWYgKG1pblpvb20gJiYgbWF0cml4WzBdIDwgbWluWm9vbSB8fCBtYXhab29tICYmIG1hdHJpeFswXSA+IG1heFpvb20pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIG1hdHJpeCA9IFsyLCAwLCAwLCAwLCAyLCAwLCAtMTI1LCAtMTI1LCAxXTtcblxuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIC8vIENsb25lIHRoZSBvcmlnaW5hbCBtYXRyaXggdG8gcGVyZm9ybSB0aGUgYW5pbWF0aW9uXG4gICAgICB2YXIgYW5pTWF0cml4XzEgPSBjbG9uZShncm91cC5nZXRNYXRyaXgoKSk7XG5cbiAgICAgIGlmICghYW5pTWF0cml4XzEpIHtcbiAgICAgICAgYW5pTWF0cml4XzEgPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbml0aWFsUmF0aW9fMSA9IGFuaU1hdHJpeF8xWzBdO1xuICAgICAgdmFyIHRhcmdldFJhdGlvXzEgPSBpbml0aWFsUmF0aW9fMSAqIHJhdGlvO1xuICAgICAgdmFyIGFuaW1hdGVDb25maWcgPSB0aGlzLmdldEFuaW1hdGVDZmdXaXRoQ2FsbGJhY2soe1xuICAgICAgICBhbmltYXRlQ2ZnOiBhbmltYXRlQ2ZnLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoJ3ZpZXdwb3J0Y2hhbmdlJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnem9vbScsXG4gICAgICAgICAgICBtYXRyaXg6IGdyb3VwLmdldE1hdHJpeCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgaWYgKHJhdGlvID09PSAxKSB7XG4gICAgICAgICAgLy8gUmV1c2UgdGhlIGZpcnN0IHRyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgYW5pTWF0cml4XzEgPSBtYXRyaXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNjYWxlID0gbGVycChpbml0aWFsUmF0aW9fMSwgdGFyZ2V0UmF0aW9fMSwgcmF0aW8pIC8gYW5pTWF0cml4XzFbMF07XG5cbiAgICAgICAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sndCcsIC1jZW50ZXIueCwgLWNlbnRlci55XSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgY2VudGVyLngsIGNlbnRlci55XV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sncycsIHNjYWxlLCBzY2FsZV1dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdHJpeDogYW5pTWF0cml4XzFcbiAgICAgICAgfTtcbiAgICAgIH0sIGFuaW1hdGVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgICAgIHRoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICAgIGFjdGlvbjogJ3pvb20nLFxuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1dG9QYWludCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5Ly457yp6KeG5Y+j5Yiw5LiA5Zu65a6a5q+U5L6LXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b1JhdGlvIOS8uOe8qeavlOS+i1xuICAgKiBAcGFyYW0ge1BvaW50fSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tVG8gPSBmdW5jdGlvbiAodG9SYXRpbywgY2VudGVyLCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIHJhdGlvID0gdG9SYXRpbyAvIHRoaXMuZ2V0Wm9vbSgpO1xuICAgIHJldHVybiB0aGlzLnpvb20ocmF0aW8sIGNlbnRlciwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDop4blj6PkuK3lv4NcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOaMh+WumuWFg+e0oFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZvY3VzSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmFyIGlzQW5pbWF0ZSA9IGZhbHNlO1xuICAgIGlmIChhbmltYXRlKSBpc0FuaW1hdGUgPSB0cnVlO2Vsc2UgaWYgKGFuaW1hdGUgPT09IHVuZGVmaW5lZCkgaXNBbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICB2YXIgY3VyQW5pYW10ZUNmZyA9IHt9O1xuICAgIGlmIChhbmltYXRlQ2ZnKSBjdXJBbmlhbXRlQ2ZnID0gYW5pbWF0ZUNmZztlbHNlIGlmIChhbmltYXRlQ2ZnID09PSB1bmRlZmluZWQpIGN1ckFuaWFtdGVDZmcgPSB0aGlzLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIHZpZXdDb250cm9sbGVyLmZvY3VzKGl0ZW0sIGlzQW5pbWF0ZSwgY3VyQW5pYW10ZUNmZyk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiHquWKqOmHjee7mFxuICAgKiBAaW50ZXJuYWwg5LuF5L6b5YaF6YOo5pu05paw5py65Yi26LCD55So77yM5aSW6YOo5qC55o2u6ZyA5rGC6LCD55SoIHJlbmRlciDmiJYgcGFpbnQg5o6l5Y+jXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYXV0b1BhaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmdldCgnYXV0b1BhaW50JykpIHtcbiAgICAgIHRoaXMucGFpbnQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDku4XnlLvluIPph43mlrDnu5jliLZcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wYWludCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmVtaXQoJ2JlZm9yZXBhaW50Jyk7XG4gICAgdGhpcy5nZXQoJ2NhbnZhcycpLmRyYXcoKTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVycGFpbnQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWxj+W5leWdkOagh+i9rOaNouS4uuinhuWPo+WdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2xpZW50WCDlsY/luZV45Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjbGllbnRZIOWxj+W5lXnlnZDmoIdcbiAgICogQHJldHVybiB7UG9pbnR9IOinhuWPo+WdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFBvaW50QnlDbGllbnQgPSBmdW5jdGlvbiAoY2xpZW50WCwgY2xpZW50WSkge1xuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IHRoaXMuZ2V0KCd2aWV3Q29udHJvbGxlcicpO1xuICAgIHJldHVybiB2aWV3Q29udHJvbGxlci5nZXRQb2ludEJ5Q2xpZW50KGNsaWVudFgsIGNsaWVudFkpO1xuICB9O1xuICAvKipcbiAgICog5bCG57uY5Yi25Z2Q5qCH6L2s5o2i5Li65bGP5bmV5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IOe7mOWItuWdkOaghyB4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOe7mOWItuWdkOaghyB5XG4gICAqIEByZXR1cm4ge1BvaW50fSDnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDbGllbnRCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2xpZW50QnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhueUu+W4g+WdkOagh+i9rOaNouS4uue7mOWItuWdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2FudmFzWCDnlLvluIMgeCDlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhbnZhc1kg55S75biDIHkg5Z2Q5qCHXG4gICAqIEByZXR1cm4ge29iamVjdH0g57uY5Yi25Z2Q5qCHXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgcmV0dXJuIHZpZXdDb250cm9sbGVyLmdldFBvaW50QnlDYW52YXMoY2FudmFzWCwgY2FudmFzWSk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbnu5jliLblnZDmoIfovazmjaLkuLrnlLvluIPlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg57uY5Yi25Z2Q5qCHIHhcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkg57uY5Yi25Z2Q5qCHIHlcbiAgICogQHJldHVybiB7b2JqZWN0fSDnlLvluIPlnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDYW52YXNCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2FudmFzQnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWbvuWGheWuueeahOS4reW/g+e7mOWItuWdkOagh1xuICAgKiBAcmV0dXJuIHtvYmplY3R9IOS4reW/g+e7mOWItuWdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEdyYXBoQ2VudGVyUG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnZ3JvdXAnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMixcbiAgICAgIHk6IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMlxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICogQHJldHVybiB7b2JqZWN0fSDop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRWaWV3UG9ydENlbnRlclBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldFBvaW50QnlDYW52YXModGhpcy5nZXQoJ3dpZHRoJykgLyAyLCB0aGlzLmdldCgnaGVpZ2h0JykgLyAyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYvuekuuWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zaG93SXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIHRydWUpO1xuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGlkID0gb2JqZWN0LmdldElEKCk7XG4gICAgICB2YXIgdHlwZSA9IG9iamVjdC5nZXRUeXBlKCk7XG4gICAgICB2YXIgYmVmb3JlID0ge307XG4gICAgICB2YXIgYWZ0ZXIgPSB7fTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29tYm8nOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3Zpc2libGUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOmakOiXj+WFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5oaWRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIGZhbHNlKTtcblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBpZCA9IG9iamVjdC5nZXRJRCgpO1xuICAgICAgdmFyIHR5cGUgPSBvYmplY3QuZ2V0VHlwZSgpO1xuICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuICAgICAgdmFyIGFmdGVyID0ge307XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYmVmb3JlLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd2aXNpYmxlJywge1xuICAgICAgICBiZWZvcmU6IGJlZm9yZSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDliLfmlrDlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVmcmVzaEl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLnJlZnJlc2hJdGVtKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5piv5ZCm5Zyo5pu05pawL+WIt+aWsOWQjuiHquWKqOmHjee7mFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG8g6Ieq5Yqo6YeN57uYXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0QXV0b1BhaW50ID0gZnVuY3Rpb24gKGF1dG8pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5zZXQoJ2F1dG9QYWludCcsIGF1dG8pO1xuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLnNldCgnYXV0b0RyYXcnLCBhdXRvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0sIHN0YWNrKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBub2RlSXRlbSA9IGl0ZW07XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBub2RlSXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG5cbiAgICBpZiAoIW5vZGVJdGVtICYmIGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtIHRvIGJlIHJlbW92ZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgfSBlbHNlIGlmIChub2RlSXRlbSkge1xuICAgICAgdmFyIHR5cGUgPSAnJztcbiAgICAgIGlmIChub2RlSXRlbS5nZXRUeXBlKSB0eXBlID0gbm9kZUl0ZW0uZ2V0VHlwZSgpOyAvLyDlsIbliKDpmaTnmoTlhYPntKDlhaXmoIhcblxuICAgICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgICB2YXIgZGVsZXRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGVJdGVtLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgaXRlbVR5cGU6IHR5cGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbZGVsZXRlZE1vZGVsXTtcbiAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzID0gW107XG4gICAgICAgICAgICAgIHZhciBlZGdlcyA9IG5vZGVJdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGVkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzLnB1c2goX19hc3NpZ24oX19hc3NpZ24oe30sIGVkZ2VzW2ldLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogJ2VkZ2UnXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICAgIGJlZm9yZS5lZGdlcyA9IFtkZWxldGVkTW9kZWxdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgICAgICBiZWZvcmUuY29tYm9zID0gW2RlbGV0ZWRNb2RlbF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHVzaFN0YWNrKCdkZWxldGUnLCB7XG4gICAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgICAgYWZ0ZXI6IHt9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGVJdGVtLmdldE1vZGVsKCk7IC8vIOWmguaenOWIoOmZpOeahOaYr+iKgueCue+8jOS4lOivpeiKgueCueWtmOWcqOS6juafkOS4qiBDb21ibyDkuK3vvIzliJnpnIDopoHlhYjlsIYgbm9kZSDku44gY29tYm8g5Lit56e76Zmk77yM5ZCm5YiZ5Yig6Zmk6IqC54K55ZCO77yM5pON5L2cIGNvbWJvIOS8muWHuumUmVxuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb21ib1RyZWUobm9kZUl0ZW0sIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgICAgaXRlbUNvbnRyb2xsZXIucmVtb3ZlSXRlbShub2RlSXRlbSk7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICAgIHZhciBuZXdDb21ib1RyZWVzID0gcmVjb25zdHJ1Y3RUcmVlKHRoaXMuZ2V0KCdjb21ib1RyZWVzJykpO1xuICAgICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIG5ld0NvbWJvVHJlZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UpXG4gICAqIEBwYXJhbSB7TW9kZWxDb25maWd9IG1vZGVsIOWFg+e0oOaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc29ydENvbWJvIOacrOasoeaTjeS9nOaYr+WQpumcgOimgeabtOaWsCBjb21ibyDlsYLnuqfpobrluo/vvIzlhoXpg6jlj4LmlbDvvIznlKjmiLflnKjlpJbpg6jkvb/nlKggYWRkSXRlbSDml7blp4vnu4jml7bpnIDopoHmm7TmlrBcbiAgICogQHJldHVybiB7SXRlbX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNvcnRDb21ibyA9PT0gdm9pZCAwKSB7XG4gICAgICBzb3J0Q29tYm8gPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Q29tYm9Tb3J0ZWQgPSB0aGlzLmdldCgnY29tYm9Tb3J0ZWQnKTtcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBjdXJyZW50Q29tYm9Tb3J0ZWQgJiYgIXNvcnRDb21ibyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7IC8vIOa3u+WKoOiKgueCueOAgei+ueaIlmNvbWJv5LmL5YmN77yM5YWI6aqM6K+B5pWw5o2u5piv5ZCm56ym5ZCI6KeE6IyDXG5cbiAgICBpZiAoIXNpbmdsZURhdGFWYWxpZGF0aW9uKHR5cGUsIG1vZGVsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChtb2RlbC5pZCAmJiB0aGlzLmZpbmRCeUlkKG1vZGVsLmlkKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiVGhpcyBpdGVtIGV4aXN0cyBhbHJlYWR5LiBCZSBzdXJlIHRoZSBpZCAlY1wiLmNvbmNhdChtb2RlbC5pZCwgXCIlYyBpcyB1bmlxdWUuXCIpLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgaWYgKCFjb21ib1RyZWVzKSBjb21ib1RyZWVzID0gW107XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgdmFyIGl0ZW1NYXBfMSA9IHRoaXMuZ2V0KCdpdGVtTWFwJyk7XG4gICAgICB2YXIgZm91bmRQYXJlbnRfMSA9IGZhbHNlO1xuICAgICAgY29tYm9UcmVlcy5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoZm91bmRQYXJlbnRfMSkgcmV0dXJuOyAvLyB0ZXJtaW5hdGUgdGhlIGZvckVhY2ggYWZ0ZXIgdGhlIHRyZWUgY29udGFpbmluZyB0aGUgaXRlbSBpcyBkb25lXG5cbiAgICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIC8vIGZpbmQgdGhlIHBhcmVudFxuICAgICAgICAgIGlmIChtb2RlbC5wYXJlbnRJZCA9PT0gY2hpbGQuaWQpIHtcbiAgICAgICAgICAgIGZvdW5kUGFyZW50XzEgPSB0cnVlO1xuXG4gICAgICAgICAgICB2YXIgbmV3Q29tYm8gPSBfX2Fzc2lnbih7XG4gICAgICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICAgICAgZGVwdGg6IGNoaWxkLmRlcHRoICsgMlxuICAgICAgICAgICAgfSwgbW9kZWwpO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIGNoaWxkLmNoaWxkcmVuLnB1c2gobmV3Q29tYm8pO2Vsc2UgY2hpbGQuY2hpbGRyZW4gPSBbbmV3Q29tYm9dO1xuICAgICAgICAgICAgbW9kZWwuZGVwdGggPSBuZXdDb21iby5kZXB0aDtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgY2hpbGRJdGVtID0gaXRlbU1hcF8xW2NoaWxkLmlkXTsgLy8gYWZ0ZXIgdGhlIHBhcmVudCBpcyBmb3VuZCwgdXBkYXRlIGFsbCB0aGUgYW5jZXN0b3JzXG5cbiAgICAgICAgICBpZiAoZm91bmRQYXJlbnRfMSAmJiBjaGlsZEl0ZW0gJiYgY2hpbGRJdGVtLmdldFR5cGUgJiYgY2hpbGRJdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oY2hpbGRJdGVtLCBjaGlsZC5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7IC8vIGlmIHRoZSBwYXJlbnQgaXMgbm90IGZvdW5kLCBhZGQgaXQgdG8gdGhlIHJvb3RcblxuICAgICAgaWYgKCFmb3VuZFBhcmVudF8xKSB7XG4gICAgICAgIHZhciBuZXdDb21ibyA9IF9fYXNzaWduKHtcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgZGVwdGg6IDBcbiAgICAgICAgfSwgbW9kZWwpO1xuXG4gICAgICAgIG1vZGVsLmRlcHRoID0gbmV3Q29tYm8uZGVwdGg7XG4gICAgICAgIGNvbWJvVHJlZXMucHVzaChuZXdDb21ibyk7XG4gICAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBjb21ib1RyZWVzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJyAmJiBpc1N0cmluZyhtb2RlbC5jb21ib0lkKSAmJiBjb21ib1RyZWVzKSB7XG4gICAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmZpbmRCeUlkKG1vZGVsLmNvbWJvSWQpO1xuXG4gICAgICBpZiAocGFyZW50Q29tYm8gJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSAmJiBwYXJlbnRDb21iby5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiJ1wiLmNvbmNhdChtb2RlbC5jb21ib0lkLCBcIicgaXMgbm90IGEgaWQgb2YgYSBjb21ibyBpbiB0aGUgZ3JhcGgsIHRoZSBub2RlIHdpbGwgYmUgYWRkZWQgd2l0aG91dCBjb21iby5cIikpO1xuICAgICAgfVxuXG4gICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgICB2YXIgaXRlbU1hcF8yID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICAgIHZhciBmb3VuZFBhcmVudF8yID0gZmFsc2UsXG4gICAgICAgICAgZm91bmROb2RlXzEgPSBmYWxzZTtcbiAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoZm91bmROb2RlXzEgfHwgZm91bmRQYXJlbnRfMikgcmV0dXJuOyAvLyB0ZXJtaW5hdGUgdGhlIGZvckVhY2hcblxuICAgICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgaWYgKGNoaWxkLmlkID09PSBtb2RlbC5pZCkge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGl0ZW0gZXhpc3RzIGluIHRoZSB0cmVlIGFscmVhZHksIHRlcm1pbmF0ZVxuICAgICAgICAgICAgZm91bmROb2RlXzEgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtb2RlbC5jb21ib0lkID09PSBjaGlsZC5pZCAmJiAhZm91bmROb2RlXzEpIHtcbiAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBwYXJlbnQsIGFkZCB0aGUgaXRlbSB0byB0aGUgY2hpbGRyZW4gb2YgaXRzIHBhcmVudCBpbiB0aGUgdHJlZVxuICAgICAgICAgICAgZm91bmRQYXJlbnRfMiA9IHRydWU7XG4gICAgICAgICAgICB2YXIgY2xvbmVOb2RlID0gY2xvbmUobW9kZWwpO1xuICAgICAgICAgICAgY2xvbmVOb2RlLml0ZW1UeXBlID0gJ25vZGUnO1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSBjaGlsZC5jaGlsZHJlbi5wdXNoKGNsb25lTm9kZSk7ZWxzZSBjaGlsZC5jaGlsZHJlbiA9IFtjbG9uZU5vZGVdO1xuICAgICAgICAgICAgY2xvbmVOb2RlLmRlcHRoID0gY2hpbGQuZGVwdGggKyAxO1xuICAgICAgICAgIH0gLy8gdXBkYXRlIHRoZSBzaXplIG9mIGFsbCB0aGUgYW5jZXN0b3JzXG5cblxuICAgICAgICAgIGlmIChmb3VuZFBhcmVudF8yICYmIGl0ZW1NYXBfMltjaGlsZC5pZF0uZ2V0VHlwZSAmJiBpdGVtTWFwXzJbY2hpbGQuaWRdLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oaXRlbU1hcF8yW2NoaWxkLmlkXSwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdub2RlJyAmJiBtb2RlbC5jb21ib0lkIHx8IHR5cGUgPT09ICdjb21ibycgJiYgbW9kZWwucGFyZW50SWQpIHtcbiAgICAgIC8vIGFkZCB0aGUgY29tYm8gdG8gdGhlIHBhcmVudCdzIGNoaWxkcmVuIGFycmF5XG4gICAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmZpbmRCeUlkKG1vZGVsLmNvbWJvSWQgfHwgbW9kZWwucGFyZW50SWQpO1xuICAgICAgaWYgKHBhcmVudENvbWJvICYmIHBhcmVudENvbWJvLmdldFR5cGUgJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSgpID09PSAnY29tYm8nKSBwYXJlbnRDb21iby5hZGRDaGlsZChpdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgY29tYm9zID0gdGhpcy5nZXQoJ2NvbWJvcycpO1xuXG4gICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zb3J0Q29tYm9zKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBhZGRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGl0ZW0uZ2V0TW9kZWwoKSksIHtcbiAgICAgICAgaXRlbVR5cGU6IHR5cGVcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgYWZ0ZXIgPSB7fTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW2FkZGVkTW9kZWxdO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VkZ2UnOlxuICAgICAgICAgIGFmdGVyLmVkZ2VzID0gW2FkZGVkTW9kZWxdO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBhZnRlci5jb21ib3MgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ2FkZCcsIHtcbiAgICAgICAgYmVmb3JlOiB7fSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UpXG4gICAqIEBwYXJhbSB7TW9kZWxDb25maWd9IG1vZGVsIOWFg+e0oOaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqIEByZXR1cm4ge0l0ZW19IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNvcnRDb21ibyA9PT0gdm9pZCAwKSB7XG4gICAgICBzb3J0Q29tYm8gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkZEl0ZW0odHlwZSwgbW9kZWwsIHN0YWNrLCBzb3J0Q29tYm8pO1xuICB9O1xuICAvKipcbiAgICog5pu05paw5YWD57SgXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge1BhcnRpYWw8Tm9kZUNvbmZpZz4gfCBFZGdlQ29uZmlnfSBjZmcg6ZyA6KaB5pu05paw55qE5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBjZmcsIHN0YWNrKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIGN1cnJlbnRJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjdXJyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgVW51cGRhdGVNb2RlbCA9IGNsb25lKGN1cnJlbnRJdGVtLmdldE1vZGVsKCkpO1xuICAgIHZhciB0eXBlID0gJyc7XG4gICAgaWYgKGN1cnJlbnRJdGVtLmdldFR5cGUpIHR5cGUgPSBjdXJyZW50SXRlbS5nZXRUeXBlKCk7XG5cbiAgICB2YXIgc3RhdGVzID0gX19zcHJlYWRBcnJheShbXSwgY3VycmVudEl0ZW0uZ2V0U3RhdGVzKCksIHRydWUpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnNldEl0ZW1TdGF0ZShjdXJyZW50SXRlbSwgc3RhdGUsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0ZW1Db250cm9sbGVyLnVwZGF0ZUl0ZW0oY3VycmVudEl0ZW0sIGNmZyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc2V0SXRlbVN0YXRlKGN1cnJlbnRJdGVtLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhY2sgJiYgdGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICB2YXIgYmVmb3JlID0ge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgY29tYm9zOiBbXVxuICAgICAgfTtcbiAgICAgIHZhciBhZnRlciA9IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW10sXG4gICAgICAgIGNvbWJvczogW11cbiAgICAgIH07XG5cbiAgICAgIHZhciBhZnRlck1vZGVsID0gX19hc3NpZ24oe1xuICAgICAgICBpZDogVW51cGRhdGVNb2RlbC5pZFxuICAgICAgfSwgY2ZnKTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGJlZm9yZS5ub2Rlcy5wdXNoKFVudXBkYXRlTW9kZWwpO1xuICAgICAgICAgIGFmdGVyLm5vZGVzLnB1c2goYWZ0ZXJNb2RlbCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYmVmb3JlLmVkZ2VzLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICAgICAgYWZ0ZXIuZWRnZXMucHVzaChhZnRlck1vZGVsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgICAgYmVmb3JlLmNvbWJvcy5wdXNoKFVudXBkYXRlTW9kZWwpO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcy5wdXNoKGFmdGVyTW9kZWwpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnbm9kZScpIHtcbiAgICAgICAgYmVmb3JlLm5vZGVzLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd1cGRhdGUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtQYXJ0aWFsPE5vZGVDb25maWc+IHwgRWRnZUNvbmZpZ30gY2ZnIOmcgOimgeabtOaWsOeahOaVsOaNrlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGl0ZW0sIGNmZywgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlSXRlbShpdGVtLCBjZmcsIHN0YWNrKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWFg+e0oOeKtuaAgVxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIOeKtuaAgeWQjeensFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGJvb2xlYW59IHZhbHVlIOaYr+WQpuWQr+eUqOeKtuaAgSDmiJYg54q25oCB5YC8XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0SXRlbVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIuc2V0SXRlbVN0YXRlKGl0ZW0sIHN0YXRlLCB2YWx1ZSk7XG4gICAgdmFyIHN0YXRlQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdzdGF0ZUNvbnRyb2xsZXInKTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlQ29udHJvbGxlci51cGRhdGVTdGF0ZShpdGVtLCBcIlwiLmNvbmNhdChzdGF0ZSwgXCI6XCIpLmNvbmNhdCh2YWx1ZSksIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZUNvbnRyb2xsZXIudXBkYXRlU3RhdGUoaXRlbSwgc3RhdGUsIHZhbHVlKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprnirbmgIHnmoTkvJjlhYjnuqfmj5DljYfkuLrmnIDpq5jkvJjlhYjnuqdcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqIEBwYXJhbSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wcmlvcml0eVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIucHJpb3JpdHlTdGF0ZShpdGVtLCBzdGF0ZSk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7op4blm77liJ3lp4vljJbmlbDmja5cbiAgICogQHBhcmFtIHtHcmFwaERhdGF9IGRhdGEg5Yid5aeL5YyW5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YVZhbGlkYXRpb24oZGF0YSk7XG4gICAgdGhpcy5zZXQoJ2RhdGEnLCBkYXRhKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrmRhdGHmjqXlj6PnmoTmlbDmja7muLLmn5Pop4blm75cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuc2V0KCdjb21ib1NvcnRlZCcsIGZhbHNlKTtcbiAgICB2YXIgZGF0YSA9IHRoaXMuZ2V0KCdkYXRhJyk7XG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICAvLyByZW5kZXIg5LmL5YmN5riF56m6IHJlZG8g5ZKMIHVuZG8g5qCIXG4gICAgICB0aGlzLmNsZWFyU3RhY2soKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBtdXN0IGJlIGRlZmluZWQgZmlyc3QnKTtcbiAgICB9XG5cbiAgICB2YXIgX2EgPSBkYXRhLm5vZGVzLFxuICAgICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgICBfYiA9IGRhdGEuZWRnZXMsXG4gICAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2IsXG4gICAgICAgIF9jID0gZGF0YS5jb21ib3MsXG4gICAgICAgIGNvbWJvcyA9IF9jID09PSB2b2lkIDAgPyBbXSA6IF9jO1xuICAgIHRoaXMuY2xlYXIodHJ1ZSk7XG4gICAgdGhpcy5lbWl0KCdiZWZvcmVyZW5kZXInKTtcbiAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgc2VsZi5hZGQoJ25vZGUnLCBub2RlLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0pOyAvLyBwcm9jZXNzIHRoZSBkYXRhIHRvIHRyZWUgc3RydWN0dXJlXG5cbiAgICBpZiAoY29tYm9zICYmIGNvbWJvcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBjb21ib1RyZWVzID0gcGxhaW5Db21ib3NUb1RyZWVzKGNvbWJvcywgbm9kZXMpO1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBjb21ib1RyZWVzKTsgLy8gYWRkIGNvbWJvc1xuXG4gICAgICBzZWxmLmFkZENvbWJvcyhjb21ib3MpO1xuICAgIH1cblxuICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBzZWxmLmFkZCgnZWRnZScsIGVkZ2UsIGZhbHNlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgdmFyIGFuaW1hdGUgPSBzZWxmLmdldCgnYW5pbWF0ZScpO1xuXG4gICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykgfHwgc2VsZi5nZXQoJ2ZpdENlbnRlcicpKSB7XG4gICAgICBzZWxmLnNldCgnYW5pbWF0ZScsIGZhbHNlKTtcbiAgICB9IC8vIGxheW91dFxuXG5cbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHNlbGYuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlcikge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5sYXlvdXQoc3VjY2Vzcyk7XG4gICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykpIHtcbiAgICAgICAgc2VsZi5maXRWaWV3KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgICAgc2VsZi5maXRDZW50ZXIoKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5lbWl0KCdhZnRlcnJlbmRlcicpO1xuICAgICAgc2VsZi5zZXQoJ2FuaW1hdGUnLCBhbmltYXRlKTtcbiAgICB9IC8vIOWwhuWcqCBvbkxheW91dEVuZCDkuK3ooqvosIPnlKhcblxuXG4gICAgZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIC8vIGZpdFZpZXcg5LiOIGZpdENlbnRlciDlhbHlrZjml7bvvIxmaXRWaWV3IOS8mOWFiO+8jGZpdENlbnRlciDkuI3lho3miafooYxcbiAgICAgIGlmIChzZWxmLmdldCgnZml0VmlldycpKSB7XG4gICAgICAgIHNlbGYuZml0VmlldygpO1xuICAgICAgfSBlbHNlIGlmIChzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgICAgc2VsZi5maXRDZW50ZXIoKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5hdXRvUGFpbnQoKTtcbiAgICAgIHNlbGYuZW1pdCgnYWZ0ZXJyZW5kZXInKTtcblxuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykgfHwgc2VsZi5nZXQoJ2ZpdENlbnRlcicpKSB7XG4gICAgICAgIHNlbGYuc2V0KCdhbmltYXRlJywgYW5pbWF0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdldCgnZ3JvdXBCeVR5cGVzJykpIHtcbiAgICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOS4uuaPkOWNh+aAp+iDve+8jOmAieaLqeaVsOmHj+WwkeeahOi/m+ihjOaTjeS9nFxuICAgICAgICBpZiAoZGF0YS5ub2RlcyAmJiBkYXRhLmVkZ2VzICYmIGRhdGEubm9kZXMubGVuZ3RoIDwgZGF0YS5lZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgICB2YXIgbm9kZXNBcnIgPSB0aGlzLmdldE5vZGVzKCk7IC8vIOmBjeWOhuiKgueCueWunuS+i++8jOWwhuaJgOacieiKgueCueaPkOWJjeOAglxuXG4gICAgICAgICAgbm9kZXNBcnIuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgbm9kZS50b0Zyb250KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGVkZ2VzQXJyID0gdGhpcy5nZXRFZGdlcygpOyAvLyDpgY3ljoboioLngrnlrp7kvovvvIzlsIbmiYDmnInoioLngrnmj5DliY3jgIJcblxuICAgICAgICAgIGVkZ2VzQXJyLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIGVkZ2UudG9CYWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICB0aGlzLnB1c2hTdGFjaygncmVuZGVyJyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5o6l5pS25pWw5o2u6L+b6KGM5riy5p+TXG4gICAqIEBQYXJhbSB7T2JqZWN0fSBkYXRhIOWIneWni+WMluaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuZGF0YShkYXRhKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9OyAvLyDmr5TovoNpdGVtXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5kaWZmSXRlbXMgPSBmdW5jdGlvbiAodHlwZSwgaXRlbXMsIG1vZGVscykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbTtcbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJyk7XG4gICAgZWFjaChtb2RlbHMsIGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgaXRlbSA9IGl0ZW1NYXBbbW9kZWwuaWRdO1xuXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBpZiAoc2VsZi5nZXQoJ2FuaW1hdGUnKSAmJiB0eXBlID09PSBOT0RFKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lck1hdHJpeCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCkuZ2V0TWF0cml4KCk7XG4gICAgICAgICAgaWYgKCFjb250YWluZXJNYXRyaXgpIGNvbnRhaW5lck1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICBpdGVtLnNldCgnb3JpZ2luQXR0cnMnLCB7XG4gICAgICAgICAgICB4OiBjb250YWluZXJNYXRyaXhbNl0sXG4gICAgICAgICAgICB5OiBjb250YWluZXJNYXRyaXhbN11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYudXBkYXRlSXRlbShpdGVtLCBtb2RlbCwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNlbGYuYWRkSXRlbSh0eXBlLCBtb2RlbCwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbSkgaXRlbXNbXCJcIi5jb25jYXQodHlwZSwgXCJzXCIpXS5wdXNoKGl0ZW0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pS55rqQ5pWw5o2u77yM5qC55o2u5paw5pWw5o2u6YeN5paw5riy5p+T6KeG5Zu+XG4gICAqIEBwYXJhbSB7R3JhcGhEYXRhIHwgVHJlZUdyYXBoRGF0YX0gZGF0YSDmupDmlbDmja5cbiAgICogQHBhcmFtIHtib29sZWFufSDmmK/lkKblhaXmoIjvvIzpu5jorqTkuLp0cnVlXG4gICAqIEByZXR1cm4ge29iamVjdH0gdGhpc1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoZGF0YSwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICghZGF0YVZhbGlkYXRpb24oZGF0YSkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrKCdjaGFuZ2VkYXRhJywge1xuICAgICAgICBiZWZvcmU6IHNlbGYuc2F2ZSgpLFxuICAgICAgICBhZnRlcjogZGF0YVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpOyAvLyDliKDpmaQgaHVsbHNcblxuICAgIHRoaXMucmVtb3ZlSHVsbHMoKTsgLy8g5pu05pS55pWw5o2u5rqQ5ZCO77yM5Y+W5raI5omA5pyJ54q25oCBXG5cbiAgICB0aGlzLmdldE5vZGVzKCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gc2VsZi5jbGVhckl0ZW1TdGF0ZXMobm9kZSk7XG4gICAgfSk7XG4gICAgdGhpcy5nZXRFZGdlcygpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIHNlbGYuY2xlYXJJdGVtU3RhdGVzKGVkZ2UpO1xuICAgIH0pO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIGxvY2FsUmVmcmVzaCA9IGNhbnZhcy5nZXQoJ2xvY2FsUmVmcmVzaCcpO1xuICAgIGNhbnZhcy5zZXQoJ2xvY2FsUmVmcmVzaCcsIGZhbHNlKTtcblxuICAgIGlmICghc2VsZi5nZXQoJ2RhdGEnKSkge1xuICAgICAgc2VsZi5kYXRhKGRhdGEpO1xuICAgICAgc2VsZi5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJyk7XG4gICAgdmFyIGl0ZW1zID0ge1xuICAgICAgbm9kZXM6IFtdLFxuICAgICAgZWRnZXM6IFtdXG4gICAgfTtcbiAgICB2YXIgY29tYm9zRGF0YSA9IGRhdGEuY29tYm9zO1xuXG4gICAgaWYgKGNvbWJvc0RhdGEpIHtcbiAgICAgIHZhciBjb21ib1RyZWVzID0gcGxhaW5Db21ib3NUb1RyZWVzKGNvbWJvc0RhdGEsIGRhdGEubm9kZXMpO1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBjb21ib1RyZWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBbXSk7XG4gICAgfVxuXG4gICAgdGhpcy5kaWZmSXRlbXMoJ25vZGUnLCBpdGVtcywgZGF0YS5ub2Rlcyk7XG4gICAgZWFjaChpdGVtTWFwLCBmdW5jdGlvbiAoaXRlbSwgaWQpIHtcbiAgICAgIGl0ZW1NYXBbaWRdLmdldE1vZGVsKCkuZGVwdGggPSAwO1xuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2VkZ2UnKSByZXR1cm47XG5cbiAgICAgIGlmIChpdGVtLmdldFR5cGUgJiYgaXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgZGVsZXRlIGl0ZW1NYXBbaWRdO1xuICAgICAgICBpdGVtLmRlc3Ryb3koKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbXMubm9kZXMuaW5kZXhPZihpdGVtKSA8IDApIHtcbiAgICAgICAgZGVsZXRlIGl0ZW1NYXBbaWRdO1xuICAgICAgICBzZWxmLnJlbW92ZShpdGVtLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIGNsZWFyIHRoZSBkZXN0cm95ZWQgY29tYm9zIGhlcmUgdG8gYXZvaWQgcmVtb3Zpbmcgc3ViIG5vZGVzIGJlZm9yZSByZW1vdmluZyB0aGUgcGFyZW50IGNvbWJvXG5cbiAgICB2YXIgY29tYm9JdGVtcyA9IHRoaXMuZ2V0Q29tYm9zKCk7XG4gICAgdmFyIGNvbWJvc0xlbmd0aCA9IGNvbWJvSXRlbXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IGNvbWJvc0xlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoY29tYm9JdGVtc1tpXS5kZXN0cm95ZWQpIHtcbiAgICAgICAgY29tYm9JdGVtcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfSAvLyBwcm9jZXNzIHRoZSBkYXRhIHRvIHRyZWUgc3RydWN0dXJlXG5cblxuICAgIGlmIChjb21ib3NEYXRhKSB7XG4gICAgICAvLyBhZGQgY29tYm9zXG4gICAgICBzZWxmLmFkZENvbWJvcyhjb21ib3NEYXRhKTtcblxuICAgICAgaWYgKCF0aGlzLmdldCgnZ3JvdXBCeVR5cGVzJykpIHtcbiAgICAgICAgdGhpcy5zb3J0Q29tYm9zKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kaWZmSXRlbXMoJ2VkZ2UnLCBpdGVtcywgZGF0YS5lZGdlcyk7XG4gICAgZWFjaChpdGVtTWFwLCBmdW5jdGlvbiAoaXRlbSwgaWQpIHtcbiAgICAgIGlmIChpdGVtLmdldFR5cGUgJiYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZScgfHwgaXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpKSByZXR1cm47XG5cbiAgICAgIGlmIChpdGVtcy5lZGdlcy5pbmRleE9mKGl0ZW0pIDwgMCkge1xuICAgICAgICBkZWxldGUgaXRlbU1hcFtpZF07XG4gICAgICAgIHNlbGYucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNldCh7XG4gICAgICBub2RlczogaXRlbXMubm9kZXMsXG4gICAgICBlZGdlczogaXRlbXMuZWRnZXNcbiAgICB9KTtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlcikge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5jaGFuZ2VEYXRhKCk7XG5cbiAgICAgIGlmIChzZWxmLmdldCgnYW5pbWF0ZScpICYmICFsYXlvdXRDb250cm9sbGVyLmdldExheW91dFR5cGUoKSkge1xuICAgICAgICAvLyDlpoLmnpzmsqHmnInmjIflrprluIPlsYBcbiAgICAgICAgc2VsZi5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLmF1dG9QYWludCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY2FudmFzLnNldCgnbG9jYWxSZWZyZXNoJywgbG9jYWxSZWZyZXNoKTtcbiAgICB9LCAxNik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDnp4HmnInmlrnms5XvvIzlnKggcmVuZGVyIOWSjCBjaGFuZ2VEYXRhIOeahOaXtuWAmeaJuemHj+a3u+WKoOaVsOaNruS4reaJgOacieW5s+mTuueahCBjb21ib3NcbiAgICogQHBhcmFtIHtDb21ib0NvbmZpZ1tdfSBjb21ib3Mg5bmz6ZO655qEIGNvbWJvcyDmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5hZGRDb21ib3MgPSBmdW5jdGlvbiAoY29tYm9zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib1RyZWVzID0gc2VsZi5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICBpdGVtQ29udHJvbGxlci5hZGRDb21ib3MoY29tYm9UcmVlcywgY29tYm9zKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNruW3sue7j+WtmOWcqOeahOiKgueCueaIliBjb21ibyDliJvlu7rmlrDnmoQgY29tYm9cbiAgICogQHBhcmFtIGNvbWJvIGNvbWJvIElEIOaIliBDb21ibyDphY3nva5cbiAgICogQHBhcmFtIGNoaWxkcmVuIOa3u+WKoOWIsCBDb21ibyDkuK3nmoTlhYPntKDvvIzljIXmi6zoioLngrnlkowgY29tYm9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5jcmVhdGVDb21ibyA9IGZ1bmN0aW9uIChjb21ibywgY2hpbGRyZW4pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpOyAvLyBzdGVwIDE6IOWIm+W7uuaWsOeahCBDb21ib1xuXG4gICAgdmFyIGNvbWJvSWQgPSAnJztcbiAgICB2YXIgY29tYm9Db25maWc7XG4gICAgaWYgKCFjb21ibykgcmV0dXJuO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm9JZCA9IGNvbWJvO1xuICAgICAgY29tYm9Db25maWcgPSB7XG4gICAgICAgIGlkOiBjb21ib1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYm9JZCA9IGNvbWJvLmlkO1xuXG4gICAgICBpZiAoIWNvbWJvSWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDcmVhdGUgY29tYm8gZmFpbGVkLiBQbGVhc2UgYXNzaWduIGEgdW5pcXVlIHN0cmluZyBpZCBmb3IgdGhlIGFkZGluZyBjb21iby4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb21ib0NvbmZpZyA9IGNvbWJvO1xuICAgIH0gLy8gc3RlcDI6IOabtOaWsCBjaGlsZHJlbu+8jOagueaNruexu+Wei+a3u+WKoCBjb21ib0lkIOaIliBwYXJlbnRJZFxuXG5cbiAgICB2YXIgdHJlZXMgPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChlbGVtZW50SWQpO1xuXG4gICAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgICB2YXIgdHlwZSA9ICcnO1xuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSkgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuICAgICAgdmFyIGNJdGVtID0ge1xuICAgICAgICBpZDogaXRlbS5nZXRJRCgpLFxuICAgICAgICBpdGVtVHlwZTogdHlwZVxuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgY0l0ZW0ucGFyZW50SWQgPSBjb21ib0lkO1xuICAgICAgICBtb2RlbC5wYXJlbnRJZCA9IGNvbWJvSWQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgICBjSXRlbS5jb21ib0lkID0gY29tYm9JZDtcbiAgICAgICAgbW9kZWwuY29tYm9JZCA9IGNvbWJvSWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjSXRlbTtcbiAgICB9KTtcbiAgICBjb21ib0NvbmZpZy5jaGlsZHJlbiA9IHRyZWVzOyAvLyBzdGVwIDM6IOa3u+WKoCBDb21ib++8jGFkZEl0ZW0g5pe25Lya5bCG5a2Q5bCG5YWD57Sg5re75Yqg5YiwIENvbWJvIOS4rVxuXG4gICAgdGhpcy5hZGRJdGVtKCdjb21ibycsIGNvbWJvQ29uZmlnLCBmYWxzZSk7XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpOyAvLyBzdGVwNDog5pu05pawIGNvbWJvVHJlZXMg57uT5p6EXG5cbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmIChjaGlsZC5pZCA9PT0gY29tYm9JZCkge1xuICAgICAgICAgIGNoaWxkLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IHRyZWVzO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoY29tYm9UcmVlcykge1xuICAgICAgdGhpcy5zb3J0Q29tYm9zKCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6Kej5pWjIGNvbWJvXG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgSU5vZGUgfCBJQ29tYm99IGNvbWJvIOmcgOimgeiiq+ino+aVo+eahCBDb21ibyBpdGVtIOaIliBpZFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVuY29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib0l0ZW0gPSBjb21ibztcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvSXRlbSA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm9JdGVtIHx8IGNvbWJvSXRlbS5nZXRUeXBlICYmIGNvbWJvSXRlbS5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW0gaXMgbm90IGEgY29tYm8hJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudElkID0gY29tYm9JdGVtLmdldE1vZGVsKCkucGFyZW50SWQ7XG4gICAgdmFyIGNvbWJvVHJlZXMgPSBzZWxmLmdldCgnY29tYm9UcmVlcycpO1xuICAgIGlmICghY29tYm9UcmVlcykgY29tYm9UcmVlcyA9IFtdO1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICB2YXIgY29tYm9JZCA9IGNvbWJvSXRlbS5nZXQoJ2lkJyk7XG4gICAgdmFyIHRyZWVUb0JlVW5jb21ibztcbiAgICB2YXIgYnJvdGhlcnMgPSBbXTtcbiAgICB2YXIgY29tYm9JdGVtcyA9IHRoaXMuZ2V0KCdjb21ib3MnKTtcbiAgICB2YXIgcGFyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQocGFyZW50SWQpO1xuICAgIGNvbWJvVHJlZXMuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIGlmICh0cmVlVG9CZVVuY29tYm8pIHJldHVybjsgLy8gdGVybWluYXRlIHRoZSBmb3JFYWNoXG5cbiAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoc3VidHJlZSkge1xuICAgICAgICB2YXIgX2E7IC8vIGZpbmQgdGhlIGNvbWJvIHRvIGJlIHVuY29tYm9lZCwgZGVsZXRlIHRoZSBjb21ibyBmcm9tIG1hcCBhbmQgY2FjaGVcblxuXG4gICAgICAgIGlmIChzdWJ0cmVlLmlkID09PSBjb21ib0lkKSB7XG4gICAgICAgICAgdHJlZVRvQmVVbmNvbWJvID0gc3VidHJlZTsgLy8gZGVsZXRlIHRoZSByZWxhdGVkIGVkZ2VzXG5cbiAgICAgICAgICB2YXIgZWRnZXMgPSBjb21ib0l0ZW0uZ2V0RWRnZXMoKTtcbiAgICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZW1vdmVJdGVtKGVkZ2UsIGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgaW5kZXggPSBjb21ib0l0ZW1zLmluZGV4T2YoY29tYm9JdGVtKTtcbiAgICAgICAgICBjb21ib0l0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgZGVsZXRlIGl0ZW1NYXBbY29tYm9JZF07XG4gICAgICAgICAgY29tYm9JdGVtLmRlc3Ryb3koKTtcblxuICAgICAgICAgIF90aGlzLmVtaXQoJ2FmdGVycmVtb3ZlaXRlbScsIHtcbiAgICAgICAgICAgIGl0ZW06IGNvbWJvSXRlbSxcbiAgICAgICAgICAgIHR5cGU6ICdjb21ibydcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSAvLyBmaW5kIHRoZSBwYXJlbnQgdG8gcmVtb3ZlIHRoZSBjb21ibyBmcm9tIHRoZSBjb21ibydzIGJyb3RoZXJzIGFycmF5IGFuZCBhZGQgdGhlIGNvbWJvJ3MgY2hpbGRyZW4gdG8gdGhlIGNvbWJvJ3MgYnJvdGhlcnMgYXJyYXkgaW4gdGhlIHRyZWVcblxuXG4gICAgICAgIGlmIChwYXJlbnRJZCAmJiB0cmVlVG9CZVVuY29tYm8gJiYgc3VidHJlZS5pZCA9PT0gcGFyZW50SWQpIHtcbiAgICAgICAgICBwYXJlbnRJdGVtLnJlbW92ZUNvbWJvKGNvbWJvSXRlbSk7XG4gICAgICAgICAgYnJvdGhlcnMgPSBzdWJ0cmVlLmNoaWxkcmVuOyAvLyB0aGUgY29tYm8ncyBicm90aGVyc1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgY29tYm8gZnJvbSBpdHMgYnJvdGhlcnMgYXJyYXlcblxuICAgICAgICAgIHZhciBpbmRleCA9IGJyb3RoZXJzLmluZGV4T2YodHJlZVRvQmVVbmNvbWJvKTtcblxuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGJyb3RoZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfSAvLyBhcHBlbmQgdGhlIGNvbWJvJ3MgY2hpbGRyZW4gdG8gdGhlIGNvbWJvJ3MgYnJvdGhlcnMgYXJyYXlcblxuXG4gICAgICAgICAgKF9hID0gdHJlZVRvQmVVbmNvbWJvLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZhciBpdGVtID0gX3RoaXMuZmluZEJ5SWQoY2hpbGQuaWQpO1xuXG4gICAgICAgICAgICB2YXIgY2hpbGRNb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcblxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgICBjaGlsZC5wYXJlbnRJZCA9IHBhcmVudElkO1xuICAgICAgICAgICAgICBkZWxldGUgY2hpbGQuY29tYm9JZDtcbiAgICAgICAgICAgICAgY2hpbGRNb2RlbC5wYXJlbnRJZCA9IHBhcmVudElkOyAvLyB1cGRhdGUgdGhlIHBhcmVudElkIG9mIHRoZSBtb2RlbFxuXG4gICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZE1vZGVsLmNvbWJvSWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ25vZGUnKSB7XG4gICAgICAgICAgICAgIGNoaWxkLmNvbWJvSWQgPSBwYXJlbnRJZDtcbiAgICAgICAgICAgICAgY2hpbGRNb2RlbC5jb21ib0lkID0gcGFyZW50SWQ7IC8vIHVwZGF0ZSB0aGUgcGFyZW50SWQgb2YgdGhlIG1vZGVsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmVudEl0ZW0uYWRkQ2hpbGQoaXRlbSk7XG4gICAgICAgICAgICBicm90aGVycy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBpZiB0aGUgcGFyZW50SWQgaXMgbm90IGZvdW5kLCByZW1vdmUgdGhlIGNvbWJvIGZyb20gdGhlIHJvb3RzXG5cbiAgICBpZiAoIXBhcmVudElkICYmIHRyZWVUb0JlVW5jb21ibykge1xuICAgICAgdmFyIGluZGV4ID0gY29tYm9UcmVlcy5pbmRleE9mKHRyZWVUb0JlVW5jb21ibyk7XG4gICAgICBjb21ib1RyZWVzLnNwbGljZShpbmRleCwgMSk7IC8vIG1vZGlmeSB0aGUgcGFyZW50SWQgb2YgdGhlIGNoaWxkcmVuXG5cbiAgICAgIChfYSA9IHRyZWVUb0JlVW5jb21iby5jaGlsZHJlbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudElkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHZhciBjaGlsZE1vZGVsID0gX3RoaXMuZmluZEJ5SWQoY2hpbGQuaWQpLmdldE1vZGVsKCk7XG5cbiAgICAgICAgZGVsZXRlIGNoaWxkTW9kZWwucGFyZW50SWQ7IC8vIHVwZGF0ZSB0aGUgcGFyZW50SWQgb2YgdGhlIG1vZGVsXG5cbiAgICAgICAgZGVsZXRlIGNoaWxkTW9kZWwuY29tYm9JZDsgLy8gdXBkYXRlIHRoZSBjb21ib0lkIG9mIHRoZSBtb2RlbFxuXG4gICAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSAhPT0gJ25vZGUnKSBjb21ib1RyZWVzLnB1c2goY2hpbGQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2u6IqC54K555qEIGJib3gg5pu05paw5omA5pyJIGNvbWJvcyDnmoTnu5jliLbvvIzljIXmi6wgY29tYm9zIOeahOS9jee9ruWSjOiMg+WbtFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbWJvcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSBzZWxmLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICB2YXIgaXRlbU1hcCA9IHNlbGYuZ2V0KCdpdGVtTWFwJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGlsZEl0ZW0gPSBpdGVtTWFwW2NoaWxkLmlkXTtcblxuICAgICAgICBpZiAoY2hpbGRJdGVtICYmIGNoaWxkSXRlbS5nZXRUeXBlICYmIGNoaWxkSXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAvLyDmm7TmlrDlhbfkvZPnmoQgQ29tYm8g5LmL5YmN5YWI5riF6Zmk5omA5pyJ55qE5bey5pyJ54q25oCB77yM5Lul5YWN5bCGIHN0YXRlIOS4reeahOagt+W8j+abtOaWsOS4uiBDb21ibyDnmoTmoLflvI9cbiAgICAgICAgICB2YXIgc3RhdGVzID0gX19zcHJlYWRBcnJheShbXSwgY2hpbGRJdGVtLmdldFN0YXRlcygpLCB0cnVlKTtcblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXRJdGVtU3RhdGUoY2hpbGRJdGVtLCBzdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIH0pOyAvLyDmm7TmlrDlhbfkvZPnmoQgQ29tYm9cblxuICAgICAgICAgIGl0ZW1Db250cm9sbGVyLnVwZGF0ZUNvbWJvKGNoaWxkSXRlbSwgY2hpbGQuY2hpbGRyZW4pOyAvLyDmm7TmlrAgQ29tYm8g5ZCO77yM6L+Y5Y6f5bey5pyJ55qE54q25oCBXG5cbiAgICAgICAgICBlYWNoKHN0YXRlcywgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0SXRlbVN0YXRlKGNoaWxkSXRlbSwgc3RhdGUsIHRydWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzZWxmLnNvcnRDb21ib3MoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNruiKgueCueeahCBiYm94IOabtOaWsCBjb21ibyDlj4rlhbbnpZblhYggY29tYm9zIOeahOe7mOWItu+8jOWMheaLrCBjb21ib3Mg55qE5L2N572u5ZKM6IyD5Zu0XG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgSUNvbWJvfSBjb21ibyDpnIDopoHooqvmm7TmlrDnmoQgQ29tYm8g5oiWIGlk77yM6Iul5oyH5a6a77yM5YiZ6K+lIENvbWJvIOWPiuaJgOacieelluWFiCBDb21ib2Qg6YO95Lya6KKr5pu05pawXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib0l0ZW0gPSBjb21ibztcbiAgICB2YXIgY29tYm9JZDtcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvSXRlbSA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm9JdGVtIHx8IGNvbWJvSXRlbS5nZXRUeXBlICYmIGNvbWJvSXRlbS5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW0gdG8gYmUgdXBkYXRlZCBpcyBub3QgYSBjb21ibyEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb21ib0lkID0gY29tYm9JdGVtLmdldCgnaWQnKTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gc2VsZi5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIGl0ZW1NYXAgPSBzZWxmLmdldCgnaXRlbU1hcCcpO1xuICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2hpbGRJdGVtID0gaXRlbU1hcFtjaGlsZC5pZF07XG5cbiAgICAgICAgaWYgKGNvbWJvSWQgPT09IGNoaWxkLmlkICYmIGNoaWxkSXRlbSAmJiBjaGlsZEl0ZW0uZ2V0VHlwZSAmJiBjaGlsZEl0ZW0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgLy8g5pu05paw5YW35L2T55qEIENvbWJvIOS5i+WJjeWFiOa4hemZpOaJgOacieeahOW3suacieeKtuaAge+8jOS7peWFjeWwhiBzdGF0ZSDkuK3nmoTmoLflvI/mm7TmlrDkuLogQ29tYm8g55qE5qC35byPXG4gICAgICAgICAgdmFyIHN0YXRlcyA9IF9fc3ByZWFkQXJyYXkoW10sIGNoaWxkSXRlbS5nZXRTdGF0ZXMoKSwgdHJ1ZSk7IC8vIHx8ICFpdGVtLmdldFN0YXRlU3R5bGUoc3RhdGVOYW1lKVxuXG5cbiAgICAgICAgICBlYWNoKHN0YXRlcywgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRJdGVtLmdldFN0YXRlU3R5bGUoc3RhdGUpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnNldEl0ZW1TdGF0ZShjaGlsZEl0ZW0sIHN0YXRlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7IC8vIOabtOaWsOWFt+S9k+eahCBDb21ib1xuXG4gICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oY2hpbGRJdGVtLCBjaGlsZC5jaGlsZHJlbik7IC8vIOabtOaWsCBDb21ibyDlkI7vvIzov5jljp/lt7LmnInnmoTnirbmgIFcblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZEl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgX3RoaXMuc2V0SXRlbVN0YXRlKGNoaWxkSXRlbSwgc3RhdGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChjb21ib0lkKSBjb21ib0lkID0gY2hpbGQucGFyZW50SWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pu05paw5qCR57uT5p6E77yM5L6L5aaC56e75Yqo5a2Q5qCR562JXG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgSU5vZGUgfCBJQ29tYm99IGl0ZW0g6ZyA6KaB6KKr5pu05paw55qEIENvbWJvIOaIliDoioLngrkgaWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHBhcmVudElkIOaWsOeahOeItiBjb21ibyBpZO+8jHVuZGVmaW5lZCDku6PooajmsqHmnInniLYgY29tYm9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVDb21ib1RyZWUgPSBmdW5jdGlvbiAoaXRlbSwgcGFyZW50SWQsIHN0YWNrKSB7XG4gICAgaWYgKHN0YWNrID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpO1xuICAgIHZhciB1SXRlbTtcblxuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgdUl0ZW0gPSBzZWxmLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1SXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgdmFyIG1vZGVsID0gdUl0ZW0uZ2V0TW9kZWwoKTtcbiAgICB2YXIgb2xkUGFyZW50SWQgPSBtb2RlbC5jb21ib0lkIHx8IG1vZGVsLnBhcmVudElkO1xuICAgIHZhciB0eXBlID0gJyc7XG4gICAgaWYgKHVJdGVtLmdldFR5cGUpIHR5cGUgPSB1SXRlbS5nZXRUeXBlKCk7IC8vIOiLpSBpdGVtIOaYryBDb21ib++8jOS4lCBwYXJlbnRJZCDmmK/lhbblrZDlrZkgY29tYm8g55qEIGlk77yM5YiZ6K2m5ZGK5bm257uI5q2iXG5cbiAgICBpZiAocGFyZW50SWQgJiYgdHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgICAgdmFyIHZhbGlkXzEgPSB0cnVlO1xuICAgICAgdmFyIGl0ZW1TdWJUcmVlXzE7XG4gICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGl0ZW1TdWJUcmVlXzEpIHJldHVybjtcbiAgICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICAgIGlmIChpdGVtU3ViVHJlZV8xKSByZXR1cm47IC8vIOaJvuWIsOS7jiBpdGVtIOW8gOWni+eahOWtkOagkVxuXG4gICAgICAgICAgaWYgKHN1YlRyZWUuaWQgPT09IHVJdGVtLmdldElEKCkpIHtcbiAgICAgICAgICAgIGl0ZW1TdWJUcmVlXzEgPSBzdWJUcmVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pOyAvLyDlnKjku6UgaXRlbSDkuLrmoLnnmoTlrZDmoJHkuK3lr7vmib7kuI4gcGFyZW50SWQg55u45ZCM55qE5ZCO57un5YWD57SgXG5cbiAgICAgIHRyYXZlcnNlVHJlZShpdGVtU3ViVHJlZV8xLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICBpZiAoc3ViVHJlZS5pZCA9PT0gcGFyZW50SWQpIHtcbiAgICAgICAgICB2YWxpZF8xID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTsgLy8gcGFyZW50SWQg5pivIGl0ZW0g55qE5LiA5Liq5ZCO57un5YWD57Sg77yM5LiN6IO96L+b6KGM5pu05pawXG5cbiAgICAgIGlmICghdmFsaWRfMSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byB1cGRhdGUgdGhlIGNvbWJvIHRyZWUhIFRoZSBwYXJlbnRJZCBwb2ludHMgdG8gYSBkZXNjZW5kYW50IG9mIHRoZSBjb21ibyEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBiZWZvcmVEYXRhID0ge30sXG4gICAgICAgICAgYWZ0ZXJEYXRhID0ge307XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICAgIGJlZm9yZURhdGEuY29tYm9zID0gW3tcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgcGFyZW50SWQ6IG1vZGVsLnBhcmVudElkXG4gICAgICAgIH1dO1xuICAgICAgICBhZnRlckRhdGEuY29tYm9zID0gW3tcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkXG4gICAgICAgIH1dO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbm9kZScpIHtcbiAgICAgICAgYmVmb3JlRGF0YS5ub2RlcyA9IFt7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIHBhcmVudElkOiBtb2RlbC5jb21ib0lkXG4gICAgICAgIH1dO1xuICAgICAgICBhZnRlckRhdGEubm9kZXMgPSBbe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWRcbiAgICAgICAgfV07XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd1cGRhdGVDb21ib1RyZWUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlRGF0YSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyRGF0YVxuICAgICAgfSk7XG4gICAgfSAvLyDlvZMgY29tYm8g5a2Y5ZyoIHBhcmVudElkIOaIliBjb21ib0lkIOaXtu+8jOaJjeWwhuWFtuenu+mZpFxuXG5cbiAgICBpZiAobW9kZWwucGFyZW50SWQgfHwgbW9kZWwuY29tYm9JZCkge1xuICAgICAgdmFyIGNvbWJvID0gdGhpcy5maW5kQnlJZChtb2RlbC5wYXJlbnRJZCB8fCBtb2RlbC5jb21ib0lkKTtcblxuICAgICAgaWYgKGNvbWJvKSB7XG4gICAgICAgIGNvbWJvLnJlbW92ZUNoaWxkKHVJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgbW9kZWwucGFyZW50SWQgPSBwYXJlbnRJZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgbW9kZWwuY29tYm9JZCA9IHBhcmVudElkO1xuICAgIH0gLy8g5Y+q5pyJ5b2T56e75YWl5Yiw5oyH5a6aIGNvbWJvIOaXtuaJjea3u+WKoFxuXG5cbiAgICBpZiAocGFyZW50SWQpIHtcbiAgICAgIHZhciBwYXJlbnRDb21ibyA9IHRoaXMuZmluZEJ5SWQocGFyZW50SWQpO1xuXG4gICAgICBpZiAocGFyZW50Q29tYm8pIHtcbiAgICAgICAgLy8g5bCG5YWD57Sg5re75Yqg5YiwIHBhcmVudENvbWJvIOS4rVxuICAgICAgICBwYXJlbnRDb21iby5hZGRDaGlsZCh1SXRlbSk7XG4gICAgICB9XG4gICAgfSAvLyDlpoLmnpzljp/lhYjmnInniLbkurIgY29tYm/vvIzliJnku47ljp/niLYgY29tYm8g55qE5a2Q5YWD57Sg5pWw57uE5Lit5Yig6ZmkXG5cblxuICAgIGlmIChvbGRQYXJlbnRJZCkge1xuICAgICAgdmFyIHBhcmVudENvbWJvID0gdGhpcy5maW5kQnlJZChvbGRQYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnRDb21ibykge1xuICAgICAgICAvLyDlsIblhYPntKDku44gcGFyZW50Q29tYm8g5Lit56e76ZmkXG4gICAgICAgIHBhcmVudENvbWJvLnJlbW92ZUNoaWxkKHVJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbmV3Q29tYm9UcmVlcyA9IHJlY29uc3RydWN0VHJlZSh0aGlzLmdldCgnY29tYm9UcmVlcycpLCBtb2RlbC5pZCwgcGFyZW50SWQpO1xuICAgIHRoaXMuc2V0KCdjb21ib1RyZWVzJywgbmV3Q29tYm9UcmVlcyk7XG4gICAgdGhpcy51cGRhdGVDb21ib3MoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWvvOWHuuWbvuaVsOaNrlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IGRhdGFcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBlZGdlcyA9IFtdO1xuICAgIHZhciBjb21ib3MgPSBbXTtcbiAgICBlYWNoKHRoaXMuZ2V0KCdub2RlcycpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgbm9kZXMucHVzaChub2RlLmdldE1vZGVsKCkpO1xuICAgIH0pO1xuICAgIGVhY2godGhpcy5nZXQoJ2VkZ2VzJyksIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBlZGdlcy5wdXNoKGVkZ2UuZ2V0TW9kZWwoKSk7XG4gICAgfSk7XG4gICAgZWFjaCh0aGlzLmdldCgnY29tYm9zJyksIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgY29tYm9zLnB1c2goY29tYm8uZ2V0TW9kZWwoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlcyxcbiAgICAgIGNvbWJvczogY29tYm9zXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOaUueWPmOeUu+W4g+Wkp+Wwj1xuICAgKiBAcGFyYW0gIHtudW1iZXJ9IHdpZHRoICDnlLvluIPlrr3luqZcbiAgICogQHBhcmFtICB7bnVtYmVyfSBoZWlnaHQg55S75biD6auY5bqmXG4gICAqIEByZXR1cm4ge29iamVjdH0gdGhpc1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IHRoaXMuZ2V0KCd2aWV3Q29udHJvbGxlcicpO1xuICAgIHZpZXdDb250cm9sbGVyLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlvZPmupDmlbDmja7lnKjlpJbpg6jlj5HnlJ/lj5jmm7Tml7bvvIzmoLnmja7mlrDmlbDmja7liLfmlrDop4blm77jgILkvYbmmK/kuI3liLfmlrDoioLngrnkvY3nva5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWdyYXBocmVmcmVzaCcpO1xuXG4gICAgaWYgKHNlbGYuZ2V0KCdhbmltYXRlJykpIHtcbiAgICAgIHNlbGYucG9zaXRpb25zQW5pbWF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZXMgPSBzZWxmLmdldCgnbm9kZXMnKTtcbiAgICAgIHZhciBlZGdlcyA9IHNlbGYuZ2V0KCdlZGdlcycpO1xuICAgICAgdmFyIHZlZGdlcyA9IHNlbGYuZ2V0KCdlZGdlcycpO1xuICAgICAgZWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2UucmVmcmVzaCgpO1xuICAgICAgfSk7XG4gICAgICBlYWNoKHZlZGdlcywgZnVuY3Rpb24gKHZlZGdlKSB7XG4gICAgICAgIHZlZGdlLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGYuZW1pdCgnYWZ0ZXJncmFwaHJlZnJlc2gnKTtcbiAgICBzZWxmLmF1dG9QYWludCgpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN5Zu+5Lit5omA5pyJ6IqC54K555qEaXRlbeWunuS+i1xuICAgKiBAcmV0dXJuIHtJTm9kZX0gaXRlbeaVsOe7hFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbm9kZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjeWbvuS4reaJgOaciei+ueeahGl0ZW3lrp7kvotcbiAgICogQHJldHVybiB7SUVkZ2V9IGl0ZW3mlbDnu4RcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blm77kuK3miYDmnInnmoQgY29tYm8g5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q29tYm9zID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29tYm9zJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bmjIflrpogQ29tYm8g5Lit5omA5pyJ55qE6IqC54K5XG4gICAqIEBwYXJhbSBjb21ib0lkIGNvbWJvIElEXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q29tYm9DaGlsZHJlbiA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ibyB8fCBjb21iby5nZXRUeXBlICYmIGNvbWJvLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykge1xuICAgICAgY29uc29sZS53YXJuKCdUaGUgY29tYm8gZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbWJvLmdldENoaWxkcmVuKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gZ3JhcGgg5LiK55qEIGFuaW1hdGVDZmcg6L+b6KGM6KeG5Zu+5Lit6IqC54K55L2N572u5Yqo55S75o6l5Y+jXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucG9zaXRpb25zQW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVhbmltYXRlJyk7XG4gICAgdmFyIGFuaW1hdGVDZmcgPSBzZWxmLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIHZhciBvbkZyYW1lID0gYW5pbWF0ZUNmZy5vbkZyYW1lO1xuICAgIHZhciBub2RlcyA9IHNlbGYuZ2V0Tm9kZXMoKTtcbiAgICB2YXIgdG9Ob2RlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGYuaXNBbmltYXRpbmcoKSkge1xuICAgICAgc2VsZi5zdG9wQW5pbWF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLmFuaW1hdGUoZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICBlYWNoKHRvTm9kZXMsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBub2RlID0gc2VsZi5maW5kQnlJZChkYXRhLmlkKTtcblxuICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb3JpZ2luQXR0cnMgPSBub2RlLmdldCgnb3JpZ2luQXR0cnMnKTtcbiAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXQoJ21vZGVsJyk7XG5cbiAgICAgICAgaWYgKCFvcmlnaW5BdHRycykge1xuICAgICAgICAgIHZhciBjb250YWluZXJNYXRyaXggPSBub2RlLmdldENvbnRhaW5lcigpLmdldE1hdHJpeCgpO1xuICAgICAgICAgIGlmICghY29udGFpbmVyTWF0cml4KSBjb250YWluZXJNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgICAgb3JpZ2luQXR0cnMgPSB7XG4gICAgICAgICAgICB4OiBjb250YWluZXJNYXRyaXhbNl0sXG4gICAgICAgICAgICB5OiBjb250YWluZXJNYXRyaXhbN11cbiAgICAgICAgICB9O1xuICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIG9yaWdpbkF0dHJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbkZyYW1lKSB7XG4gICAgICAgICAgdmFyIGF0dHJzID0gb25GcmFtZShub2RlLCByYXRpbywgZGF0YSwgb3JpZ2luQXR0cnMpO1xuICAgICAgICAgIG5vZGUuc2V0KCdtb2RlbCcsIE9iamVjdC5hc3NpZ24obW9kZWwsIGF0dHJzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9kZWwueCA9IG9yaWdpbkF0dHJzLnggKyAoZGF0YS54IC0gb3JpZ2luQXR0cnMueCkgKiByYXRpbztcbiAgICAgICAgICBtb2RlbC55ID0gb3JpZ2luQXR0cnMueSArIChkYXRhLnkgLSBvcmlnaW5BdHRycy55KSAqIHJhdGlvO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNlbGYucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgIH0sIHtcbiAgICAgIGR1cmF0aW9uOiBhbmltYXRlQ2ZnLmR1cmF0aW9uLFxuICAgICAgZWFzaW5nOiBhbmltYXRlQ2ZnLmVhc2luZyxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjaygpIHtcbiAgICAgICAgZWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICBub2RlLnNldCgnb3JpZ2luQXR0cnMnLCBudWxsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFuaW1hdGVDZmcuY2FsbGJhY2spIHtcbiAgICAgICAgICBhbmltYXRlQ2ZnLmNhbGxiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmVtaXQoJ2FmdGVyYW5pbWF0ZScpO1xuICAgICAgICBzZWxmLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5b2T6IqC54K55L2N572u5Zyo5aSW6YOo5Y+R55Sf5pS55Y+Y5pe277yM5Yi35paw5omA5pyJ6IqC54K55L2N572u77yM6YeN6K6h566X6L65XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVmcmVzaFBvc2l0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVncmFwaHJlZnJlc2hwb3NpdGlvbicpO1xuICAgIHZhciBub2RlcyA9IHNlbGYuZ2V0KCdub2RlcycpO1xuICAgIHZhciBlZGdlcyA9IHNlbGYuZ2V0KCdlZGdlcycpO1xuICAgIHZhciB2ZWRnZXMgPSBzZWxmLmdldCgndmVkZ2VzJyk7XG4gICAgdmFyIGNvbWJvcyA9IHNlbGYuZ2V0KCdjb21ib3MnKTtcbiAgICB2YXIgbW9kZWw7XG4gICAgdmFyIHVwZGF0ZWROb2RlcyA9IHt9O1xuICAgIGVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBvcmlnaW5BdHRycyA9IG5vZGUuZ2V0KCdvcmlnaW5BdHRycycpO1xuXG4gICAgICBpZiAob3JpZ2luQXR0cnMgJiYgbW9kZWwueCA9PT0gb3JpZ2luQXR0cnMueCAmJiBtb2RlbC55ID09PSBvcmlnaW5BdHRycy55KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNoYW5nZWQgPSBub2RlLnVwZGF0ZVBvc2l0aW9uKHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfSk7XG4gICAgICB1cGRhdGVkTm9kZXNbbW9kZWwuaWRdID0gY2hhbmdlZDtcbiAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB1cGRhdGVkTm9kZXNbbW9kZWwuY29tYm9JZF0gPSB1cGRhdGVkTm9kZXNbbW9kZWwuY29tYm9JZF0gfHwgY2hhbmdlZDtcbiAgICB9KTtcblxuICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgc2VsZi51cGRhdGVDb21ib3MoKTtcbiAgICB9XG5cbiAgICBlYWNoKGVkZ2VzLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNvdXJjZU1vZGVsID0gZWRnZS5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIHRhcmdldCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7IC8vIOmBv+WFjSB0YXJnZXQg5piv57qv5a+56LGh55qE5oOF5Ya15LiL6LCD55SoIGdldE1vZGVsIOaWueazlVxuICAgICAgLy8g5ouW5Yqo55Sf5oiQ6L6555qE5pe25YCZIHRhcmdldCDkvJrmmK/nuq/lr7nosaFcblxuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KHRhcmdldCkpIHtcbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKHVwZGF0ZWROb2Rlc1tzb3VyY2VNb2RlbC5pZF0gfHwgdXBkYXRlZE5vZGVzW3RhcmdldE1vZGVsLmlkXSB8fCBlZGdlLmdldE1vZGVsKCkuaXNDb21ib0VkZ2UpIHtcbiAgICAgICAgICBlZGdlLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2godmVkZ2VzLCBmdW5jdGlvbiAodmVkZ2UpIHtcbiAgICAgIHZlZGdlLnJlZnJlc2goKTtcbiAgICB9KTtcbiAgICBzZWxmLmVtaXQoJ2FmdGVyZ3JhcGhyZWZyZXNocG9zaXRpb24nKTtcbiAgICBzZWxmLmF1dG9QYWludCgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnN0b3BBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ2V0KCdjYW52YXMnKS5zdG9wQW5pbWF0ZSgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmlzQW5pbWF0aW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmFuaW1hdGluZztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjeinhuWPo+S8uOe8qeavlOS+i1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IOavlOS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFpvb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuICAgIHJldHVybiBtYXRyaXggPyBtYXRyaXhbMF0gOiAxO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN55qE6KGM5Li65qih5byPXG4gICAqIEByZXR1cm4ge3N0cmluZ30g5b2T5YmN6KGM5Li65qih5byPXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q3VycmVudE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ21vZGVDb250cm9sbGVyJyk7XG4gICAgcmV0dXJuIG1vZGVDb250cm9sbGVyLmdldE1vZGUoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIh+aNouihjOS4uuaooeW8j1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSDmjIflrprmqKHlvI9cbiAgICogQHJldHVybiB7b2JqZWN0fSB0aGlzXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0TW9kZSA9IGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgdmFyIG1vZGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ21vZGVDb250cm9sbGVyJyk7XG4gICAgbW9kZUNvbnRyb2xsZXIuc2V0TW9kZShtb2RlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOa4hemZpOeUu+W4g+WFg+e0oFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IHRoaXNcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIChhdm9pZEVtaXQpIHtcbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoYXZvaWRFbWl0ID09PSB2b2lkIDApIHtcbiAgICAgIGF2b2lkRW1pdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIChfYSA9IHRoaXMuZ2V0KCdjYW52YXMnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsZWFyKCk7XG4gICAgdGhpcy5pbml0R3JvdXBzKCk7IC8vIOa4heepuueUu+W4g+aXtuWQjOaXtua4hemZpOaVsOaNrlxuXG4gICAgdGhpcy5zZXQoe1xuICAgICAgaXRlbU1hcDoge30sXG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW10sXG4gICAgICBncm91cHM6IFtdLFxuICAgICAgY29tYm9zOiBbXSxcbiAgICAgIGNvbWJvVHJlZXM6IFtdXG4gICAgfSk7XG4gICAgaWYgKCFhdm9pZEVtaXQpIHRoaXMuZW1pdCgnYWZ0ZXJyZW5kZXInKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaNouW4g+WxgOmFjee9rumhuVxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOaWsOW4g+WxgOmFjee9rumhuVxuICAgKiBAcGFyYW0geydjZW50ZXInIHwgJ2JlZ2luJ30gYWxpZ24g5a+56b2Q5pa55byP77yM5Y+v6YCJ5Lit5b+D77yIY2VudGVy77yJ5a+56b2Q5Yiw5a+56b2Q54K577yM5oiW5bem5LiK6KeS77yIYmVnaW7vvInlr7npvZDliLDlr7npvZDngrlcbiAgICogQHBhcmFtIHtJUG9pbnR9IGFsaWduUG9pbnQg55S75biD5LiK55qE5a+56b2Q54K577yM5Li6IENhbnZhcyDlnZDmoIfns7vvvIhDYW52YXMgRE9N77yJXG4gICAqIOiLpSBjZmcg5ZCr5pyJIHR5cGUg5a2X5q615oiW5Li6IFN0cmluZyDnsbvlnovvvIzkuJTkuI7njrDmnInluIPlsYDmlrnms5XkuI3lkIzvvIzliJnmm7TmjaLluIPlsYBcbiAgICog6IulIGNmZyDkuI3ljIXmi6wgdHlwZSDvvIzliJnkv53mjIHljp/mnInluIPlsYDmlrnms5XvvIzku4Xmm7TmlrDluIPlsYDphY3nva7poblcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVMYXlvdXQgPSBmdW5jdGlvbiAoY2ZnLCBhbGlnbiwgYWxpZ25Qb2ludCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG5cbiAgICBpZiAoaXNTdHJpbmcoY2ZnKSkge1xuICAgICAgY2ZnID0ge1xuICAgICAgICB0eXBlOiBjZmdcbiAgICAgIH07XG4gICAgfSAvLyBhbGlnbiB0aGUgZ3JhcGggYWZ0ZXIgbGF5b3V0XG5cblxuICAgIGlmIChhbGlnbikge1xuICAgICAgdmFyIHRvUG9pbnRfMSA9IGFsaWduUG9pbnQ7XG5cbiAgICAgIGlmICghdG9Qb2ludF8xKSB7XG4gICAgICAgIGlmIChhbGlnbiA9PT0gJ2JlZ2luJykgdG9Qb2ludF8xID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9O2Vsc2UgdG9Qb2ludF8xID0ge1xuICAgICAgICAgIHg6IHRoaXMuZ2V0V2lkdGgoKSAvIDIsXG4gICAgICAgICAgeTogdGhpcy5nZXRIZWlnaHQoKSAvIDJcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gdHJhbnNsYXRlIHRvIHBvaW50IGNvb3JkaW5hdGUgc3lzdGVtXG5cblxuICAgICAgdG9Qb2ludF8xID0gdGhpcy5nZXRQb2ludEJ5Q2FudmFzKHRvUG9pbnRfMS54LCB0b1BvaW50XzEueSk7XG4gICAgICB2YXIgZm9yY2VUeXBlcyA9IFsnZm9yY2UnLCAnZ0ZvcmNlJywgJ2ZydWNodGVybWFuJ107IC8vIGlmIGl0IGlzIGZvcmNlIGxheW91dCwgb25seSBjZW50ZXIgdGFrZXMgZWZmZWN0LCBhbmQgYXNzaWduIGNlbnRlciBmb3JjZVxuXG4gICAgICBpZiAoZm9yY2VUeXBlcy5pbmNsdWRlcyhjZmcudHlwZSkgfHwgIWNmZy50eXBlICYmIGZvcmNlVHlwZXMuaW5jbHVkZXMobGF5b3V0Q29udHJvbGxlciA9PT0gbnVsbCB8fCBsYXlvdXRDb250cm9sbGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRDb250cm9sbGVyLmxheW91dFR5cGUpKSB7XG4gICAgICAgIGNmZy5jZW50ZXIgPSBbdG9Qb2ludF8xLngsIHRvUG9pbnRfMS55XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25jZSgnYWZ0ZXJsYXlvdXQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHZhciBtYXRyaXggPSBfdGhpcy5nZXRHcm91cCgpLmdldE1hdHJpeCgpIHx8IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICB0b1BvaW50XzEueCA9IHRvUG9pbnRfMS54ICogbWF0cml4WzBdICsgbWF0cml4WzZdO1xuICAgICAgICAgIHRvUG9pbnRfMS55ID0gdG9Qb2ludF8xLnkgKiBtYXRyaXhbMF0gKyBtYXRyaXhbN107XG5cbiAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5nZXRHcm91cCgpLmdldENhbnZhc0JCb3goKSxcbiAgICAgICAgICAgICAgbWluWCA9IF9hLm1pblgsXG4gICAgICAgICAgICAgIG1heFggPSBfYS5tYXhYLFxuICAgICAgICAgICAgICBtaW5ZID0gX2EubWluWSxcbiAgICAgICAgICAgICAgbWF4WSA9IF9hLm1heFk7XG5cbiAgICAgICAgICB2YXIgYmJveFBvaW50ID0ge1xuICAgICAgICAgICAgeDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgICAgICAgICB5OiAobWluWSArIG1heFkpIC8gMlxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoYWxpZ24gPT09ICdiZWdpbicpIHtcbiAgICAgICAgICAgIGJib3hQb2ludC54ID0gbWluWDtcbiAgICAgICAgICAgIGJib3hQb2ludC55ID0gbWluWTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfdGhpcy50cmFuc2xhdGUodG9Qb2ludF8xLnggLSBiYm94UG9pbnQueCwgdG9Qb2ludF8xLnkgLSBiYm94UG9pbnQueSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvcmlMYXlvdXRDZmcgPSB0aGlzLmdldCgnbGF5b3V0Jyk7XG4gICAgdmFyIGxheW91dENmZyA9IHt9O1xuICAgIE9iamVjdC5hc3NpZ24obGF5b3V0Q2ZnLCBvcmlMYXlvdXRDZmcsIGNmZyk7XG4gICAgdGhpcy5zZXQoJ2xheW91dCcsIGxheW91dENmZyk7XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlci5pc0xheW91dFR5cGVTYW1lKGxheW91dENmZykgJiYgbGF5b3V0Q2ZnLmdwdUVuYWJsZWQgPT09IG9yaUxheW91dENmZy5ncHVFbmFibGVkKSB7XG4gICAgICAvLyBubyB0eXBlIG9yIHNhbWUgdHlwZSwgb3Igc3dpdGNoIHRoZSBncHUgYW5kIGNwdSwgdXBkYXRlIGxheW91dFxuICAgICAgbGF5b3V0Q29udHJvbGxlci51cGRhdGVMYXlvdXRDZmcobGF5b3V0Q2ZnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIGRpZmZlcmVudCB0eXBlLCBjaGFuZ2UgbGF5b3V0XG4gICAgICBsYXlvdXRDb250cm9sbGVyLmNoYW5nZUxheW91dChsYXlvdXRDZmcpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOmUgOavgeW4g+WxgO+8jGNoYW5nZURhdGEg5pe25LiN5Lya5YaN5L2/55So5Y6f5p2l55qE5biD5bGA5pa55rOV5a+55paw5pWw5o2u6L+b6KGM5biD5bGAXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZGVzdHJveUxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG4gICAgbGF5b3V0Q29udHJvbGxlci5kZXN0cm95TGF5b3V0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDph43mlrDku6XlvZPliY3npLrkvovkuK3phY3nva7nmoTlsZ7mgKfov5vooYzkuIDmrKHluIPlsYBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxheW91dENvbnRyb2xsZXIgPSB0aGlzLmdldCgnbGF5b3V0Q29udHJvbGxlcicpO1xuICAgIHZhciBsYXlvdXRDZmcgPSB0aGlzLmdldCgnbGF5b3V0Jyk7XG4gICAgaWYgKCFsYXlvdXRDZmcgfHwgIWxheW91dENvbnRyb2xsZXIpIHJldHVybjtcblxuICAgIGlmIChsYXlvdXRDZmcud29ya2VyRW5hYmxlZCkge1xuICAgICAgLy8g5aaC5p6c5L2/55Sod2ViIHdvcmtlcuW4g+WxgFxuICAgICAgbGF5b3V0Q29udHJvbGxlci5sYXlvdXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlci5sYXlvdXRNZXRob2QpIHtcbiAgICAgIGxheW91dENvbnRyb2xsZXIucmVsYXlvdXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheW91dENvbnRyb2xsZXIubGF5b3V0KCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pS26LW35oyH5a6a55qEIGNvbWJvXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSUNvbWJvfSBjb21ibyBjb21ibyBJRCDmiJYgY29tYm8gaXRlbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNvbGxhcHNlQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSB0aGlzLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBjb21ibyB0byBiZSBjb2xsYXBzZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0KCdiZWZvcmVjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gICAgdmFyIGNvbWJvTW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLmNvbGxhcHNlQ29tYm8oY29tYm8pO1xuICAgIGNvbWJvTW9kZWwuY29sbGFwc2VkID0gdHJ1ZTsgLy8gYWRkIHZpcnR1YWwgZWRnZXNcblxuICAgIHZhciBlZGdlcyA9IHRoaXMuZ2V0RWRnZXMoKS5jb25jYXQodGhpcy5nZXQoJ3ZlZGdlcycpKTsgLy8gZmluZCBhbGwgdGhlIGRlc2NlbmRhbnQgbm9kZXMgYW5kIGNvbWJvc1xuXG4gICAgdmFyIGNub2RlcyA9IFtdO1xuICAgIHZhciBjY29tYm9zID0gW107XG4gICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgaWYgKGZvdW5kKSByZXR1cm47IC8vIGlmIHRoZSBjb21ibyBpcyBmb3VuZCwgdGVybWluYXRlIHRoZSBmb3JFYWNoXG5cbiAgICAgIHRyYXZlcnNlVHJlZShjdHJlZSwgZnVuY3Rpb24gKHN1YlRyZWUpIHtcbiAgICAgICAgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kIGFuZCBpdCBpcyB0cmF2ZXJzaW5nIHRoZSBvdGhlciBicmFuY2hlcywgdGVybWluYXRlXG4gICAgICAgIGlmIChmb3VuZCAmJiBzdWJUcmVlLmRlcHRoIDw9IGNvbWJvTW9kZWwuZGVwdGgpIHJldHVybiBmYWxzZTsgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kXG5cbiAgICAgICAgaWYgKGNvbWJvTW9kZWwuaWQgPT09IHN1YlRyZWUuaWQpIGZvdW5kID0gdHJ1ZTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQsIGNvbmNhdCB0aGUgZGVzY2VuZGFudCBub2RlcyBhbmQgY29tYm9zXG4gICAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChzdWJUcmVlLmlkKTtcblxuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgY25vZGVzID0gY25vZGVzLmNvbmNhdChpdGVtLmdldE5vZGVzKCkpO1xuICAgICAgICAgICAgY2NvbWJvcyA9IGNjb21ib3MuY29uY2F0KGl0ZW0uZ2V0Q29tYm9zKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VXZWlnaHRNYXAgPSB7fTtcbiAgICB2YXIgYWRkZWRWRWRnZXMgPSBbXTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoZWRnZS5pc1Zpc2libGUoKSAmJiAhZWRnZS5nZXRNb2RlbCgpLmlzVkVkZ2UpIHJldHVybjtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgdmFyIHRhcmdldCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG5cbiAgICAgIGlmICgoY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgfHwgY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpKSAmJiAhY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgJiYgIWNjb21ib3MuaW5jbHVkZXModGFyZ2V0KSB8fCBzb3VyY2UuZ2V0TW9kZWwoKS5pZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICB2YXIgZWRnZU1vZGVsID0gZWRnZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChlZGdlTW9kZWwuaXNWRWRnZSkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG5cbiAgICAgICAgd2hpbGUgKCF0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5maW5kQnlJZCh0YXJnZXRNb2RlbC5wYXJlbnRJZCB8fCB0YXJnZXRNb2RlbC5jb21ib0lkKTtcbiAgICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0TW9kZWwucGFyZW50SWQgJiYgIXRhcmdldE1vZGVsLmNvbWJvSWQpIHJldHVybjsgLy8gYWxsIHRoZSBhbmNlc3RvcnMgYXJlIGhpZGRlbiwgdGhlbiBpZ25vcmUgdGhlIGVkZ2VcblxuICAgICAgICAgIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0SWQgPSB0YXJnZXRNb2RlbC5pZDtcblxuICAgICAgICBpZiAoZWRnZVdlaWdodE1hcFtcIlwiLmNvbmNhdChjb21ib01vZGVsLmlkLCBcIi1cIikuY29uY2F0KHRhcmdldElkKV0pIHtcbiAgICAgICAgICBlZGdlV2VpZ2h0TWFwW1wiXCIuY29uY2F0KGNvbWJvTW9kZWwuaWQsIFwiLVwiKS5jb25jYXQodGFyZ2V0SWQpXSArPSBlZGdlTW9kZWwuc2l6ZSB8fCAxO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyB0aGUgc291cmNlIGlzIGluIHRoZSBjb21ibywgdGhlIHRhcmdldCBpcyBub3RcblxuXG4gICAgICAgIHZhciB2ZWRnZSA9IF90aGlzLmFkZEl0ZW0oJ3ZlZGdlJywge1xuICAgICAgICAgIHNvdXJjZTogY29tYm9Nb2RlbC5pZCxcbiAgICAgICAgICB0YXJnZXQ6IHRhcmdldElkLFxuICAgICAgICAgIGlzVkVkZ2U6IHRydWVcbiAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgIGVkZ2VXZWlnaHRNYXBbXCJcIi5jb25jYXQoY29tYm9Nb2RlbC5pZCwgXCItXCIpLmNvbmNhdCh0YXJnZXRJZCldID0gZWRnZU1vZGVsLnNpemUgfHwgMTtcbiAgICAgICAgYWRkZWRWRWRnZXMucHVzaCh2ZWRnZSk7XG4gICAgICB9IGVsc2UgaWYgKCFjbm9kZXMuaW5jbHVkZXMoc291cmNlKSAmJiAhY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpICYmIChjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSB8fCBjY29tYm9zLmluY2x1ZGVzKHRhcmdldCkpIHx8IHRhcmdldC5nZXRNb2RlbCgpLmlkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIHZhciBlZGdlTW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKGVkZ2VNb2RlbC5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcblxuICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHNvdXJjZSA9IF90aGlzLmZpbmRCeUlkKHNvdXJjZU1vZGVsLnBhcmVudElkIHx8IHNvdXJjZU1vZGVsLmNvbWJvSWQpO1xuICAgICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2VNb2RlbC5wYXJlbnRJZCAmJiAhc291cmNlTW9kZWwuY29tYm9JZCkgcmV0dXJuOyAvLyBhbGwgdGhlIGFuY2VzdG9ycyBhcmUgaGlkZGVuLCB0aGVuIGlnbm9yZSB0aGUgZWRnZVxuXG4gICAgICAgICAgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3VyY2VJZCA9IHNvdXJjZU1vZGVsLmlkO1xuXG4gICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW1wiXCIuY29uY2F0KHNvdXJjZUlkLCBcIi1cIikuY29uY2F0KGNvbWJvTW9kZWwuaWQpXSkge1xuICAgICAgICAgIGVkZ2VXZWlnaHRNYXBbXCJcIi5jb25jYXQoc291cmNlSWQsIFwiLVwiKS5jb25jYXQoY29tYm9Nb2RlbC5pZCldICs9IGVkZ2VNb2RlbC5zaXplIHx8IDE7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIHRoZSB0YXJnZXQgaXMgaW4gdGhlIGNvbWJvLCB0aGUgc291cmNlIGlzIG5vdFxuXG5cbiAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgdGFyZ2V0OiBjb21ib01vZGVsLmlkLFxuICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgaXNWRWRnZTogdHJ1ZVxuICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgZWRnZVdlaWdodE1hcFtcIlwiLmNvbmNhdChzb3VyY2VJZCwgXCItXCIpLmNvbmNhdChjb21ib01vZGVsLmlkKV0gPSBlZGdlTW9kZWwuc2l6ZSB8fCAxO1xuICAgICAgICBhZGRlZFZFZGdlcy5wdXNoKHZlZGdlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gdXBkYXRlIHRoZSB3aWR0aCBvZiB0aGUgdmlydHVhbCBlZGdlcywgd2hpY2ggaXMgdGhlIHN1bSBvZiBtZXJnZWQgYWN0dWFsIGVkZ2VzXG4gICAgLy8gYmUgYXR0ZW50aW9uIHRoYXQgdGhlIGFjdHVhbCBlZGdlcyB3aXRoIHNhbWUgZW5kcG9pbnRzIGJ1dCBkaWZmZXJlbnQgZGlyZWN0aW9ucyB3aWxsIGJlIHJlcHJlc2VudGVkIGJ5IHR3byBkaWZmZXJlbnQgdmlydHVhbCBlZGdlc1xuXG4gICAgYWRkZWRWRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAodmVkZ2UpIHtcbiAgICAgIHZhciB2ZWRnZU1vZGVsID0gdmVkZ2UuZ2V0TW9kZWwoKTtcblxuICAgICAgX3RoaXMudXBkYXRlSXRlbSh2ZWRnZSwge1xuICAgICAgICBzaXplOiBlZGdlV2VpZ2h0TWFwW1wiXCIuY29uY2F0KHZlZGdlTW9kZWwuc291cmNlLCBcIi1cIikuY29uY2F0KHZlZGdlTW9kZWwudGFyZ2V0KV1cbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVyY29sbGFwc2VleHBhbmRjb21ibycsIHtcbiAgICAgIGFjdGlvbjogJ2NvbGxhcHNlJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDlsZXlvIDmjIflrprnmoQgY29tYm9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJQ29tYm99IGNvbWJvIGNvbWJvIElEIOaIliBjb21ibyBpdGVtXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZXhwYW5kQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSB0aGlzLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvIHx8IGNvbWJvLmdldFR5cGUgJiYgY29tYm8uZ2V0VHlwZSgpICE9PSAnY29tYm8nKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBjb21ibyB0byBiZSBjb2xsYXBzZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0KCdiZWZvcmVjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gICAgdmFyIGNvbWJvTW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLmV4cGFuZENvbWJvKGNvbWJvKTtcbiAgICBjb21ib01vZGVsLmNvbGxhcHNlZCA9IGZhbHNlOyAvLyBhZGQgdmlydHVhbCBlZGdlc1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXRFZGdlcygpLmNvbmNhdCh0aGlzLmdldCgndmVkZ2VzJykpOyAvLyBmaW5kIGFsbCB0aGUgZGVzY2VuZGFudCBub2RlcyBhbmQgY29tYm9zXG5cbiAgICB2YXIgY25vZGVzID0gW107XG4gICAgdmFyIGNjb21ib3MgPSBbXTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICBpZiAoZm91bmQpIHJldHVybjsgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kLCB0ZXJtaW5hdGVcblxuICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQgYW5kIGl0IGlzIHRyYXZlcnNpbmcgdGhlIG90aGVyIGJyYW5jaGVzLCB0ZXJtaW5hdGVcbiAgICAgICAgaWYgKGZvdW5kICYmIHN1YlRyZWUuZGVwdGggPD0gY29tYm9Nb2RlbC5kZXB0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoY29tYm9Nb2RlbC5pZCA9PT0gc3ViVHJlZS5pZCkgZm91bmQgPSB0cnVlO1xuXG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIHZhciBpdGVtID0gX3RoaXMuZmluZEJ5SWQoc3ViVHJlZS5pZCk7XG5cbiAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmdldFR5cGUgJiYgaXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAgIGNub2RlcyA9IGNub2Rlcy5jb25jYXQoaXRlbS5nZXROb2RlcygpKTtcbiAgICAgICAgICAgIGNjb21ib3MgPSBjY29tYm9zLmNvbmNhdChpdGVtLmdldENvbWJvcygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHZhciBlZGdlV2VpZ2h0TWFwID0ge307XG4gICAgdmFyIGFkZGVkVkVkZ2VzID0ge307XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGVkZ2UuaXNWaXNpYmxlKCkgJiYgIWVkZ2UuZ2V0TW9kZWwoKS5pc1ZFZGdlKSByZXR1cm47XG4gICAgICB2YXIgc291cmNlID0gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIHZhciB0YXJnZXQgPSBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgdmFyIHNvdXJjZUlkID0gc291cmNlLmdldCgnaWQnKTtcbiAgICAgIHZhciB0YXJnZXRJZCA9IHRhcmdldC5nZXQoJ2lkJyk7XG5cbiAgICAgIGlmICgoY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgfHwgY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpKSAmJiAhY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgJiYgIWNjb21ib3MuaW5jbHVkZXModGFyZ2V0KSB8fCBzb3VyY2VJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAvLyB0aGUgc291cmNlIGlzIGluIHRoZSBjb21ibywgdGhlIHRhcmdldCBpcyBub3RcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2aXJ0dWFsIGVkZ2VzXG4gICAgICAgIGlmIChlZGdlLmdldE1vZGVsKCkuaXNWRWRnZSkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7IC8vIGZpbmQgdGhlIG5lYXJlc3QgdmlzaWJsZSBhbmNlc3RvclxuXG4gICAgICAgIHdoaWxlICghdGFyZ2V0LmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgdGFyZ2V0ID0gX3RoaXMuZmluZEJ5SWQodGFyZ2V0TW9kZWwuY29tYm9JZCB8fCB0YXJnZXRNb2RlbC5wYXJlbnRJZCk7XG5cbiAgICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0TW9kZWwucGFyZW50SWQgJiYgIXRhcmdldE1vZGVsLmNvbWJvSWQpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gaWYgYWxsIHRoZSBhbmNlc3RvcnMgb2YgdGhlIG9wcHNpdGUgYXJlIGFsbCBoaWRkZW4sIGlnbm9yZSB0aGUgZWRnZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRJZCA9IHRhcmdldE1vZGVsLmlkO1xuICAgICAgICB2YXIgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBzb3VyY2UgPSBfdGhpcy5maW5kQnlJZChzb3VyY2VNb2RlbC5jb21ib0lkIHx8IHNvdXJjZU1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2VNb2RlbC5wYXJlbnRJZCAmJiAhc291cmNlTW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNvdXJjZU1vZGVsLmNvbWJvSWQgPT09IGNvbWJvTW9kZWwuaWQgfHwgc291cmNlTW9kZWwucGFyZW50SWQgPT09IGNvbWJvTW9kZWwuaWQpIHtcbiAgICAgICAgICAgIGJyZWFrOyAvLyBpZiB0aGUgbmV4dCBhbmNlc3RvciBpcyB0aGUgY29tYm8sIGJyZWFrIHRoZSB3aGlsZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNvdXJjZU1vZGVsID0gc291cmNlLmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VJZCA9IHNvdXJjZU1vZGVsLmlkO1xuXG4gICAgICAgIGlmICh0YXJnZXRJZCkge1xuICAgICAgICAgIHZhciB2ZWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlSWQsIFwiLVwiKS5jb25jYXQodGFyZ2V0SWQpOyAvLyB1cGRhdGUgdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGVkZ2VzLCB3aGljaCBpcyB0aGUgc3VtIG9mIG1lcmdlZCBhY3R1YWwgZWRnZXNcbiAgICAgICAgICAvLyBiZSBhdHRlbnRpb24gdGhhdCB0aGUgYWN0dWFsIGVkZ2VzIHdpdGggc2FtZSBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCBkaXJlY3Rpb25zIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgdHdvIGRpZmZlcmVudCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICAgICAgICBpZiAoZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSkge1xuICAgICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSArPSBlZGdlLmdldE1vZGVsKCkuc2l6ZSB8fCAxO1xuXG4gICAgICAgICAgICBfdGhpcy51cGRhdGVJdGVtKGFkZGVkVkVkZ2VzW3ZlZGdlSWRdLCB7XG4gICAgICAgICAgICAgIHNpemU6IGVkZ2VXZWlnaHRNYXBbdmVkZ2VJZF1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2ZWRnZSA9IF90aGlzLmFkZEl0ZW0oJ3ZlZGdlJywge1xuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0SWQsXG4gICAgICAgICAgICBpc1ZFZGdlOiB0cnVlXG4gICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSA9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG4gICAgICAgICAgYWRkZWRWRWRnZXNbdmVkZ2VJZF0gPSB2ZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgJiYgIWNjb21ib3MuaW5jbHVkZXMoc291cmNlKSAmJiAoY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgfHwgY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpKSB8fCB0YXJnZXRJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAvLyB0aGUgdGFyZ2V0IGlzIGluIHRoZSBjb21ibywgdGhlIHNvdXJjZSBpcyBub3RcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2aXJ0dWFsIGVkZ2VzXG4gICAgICAgIGlmIChlZGdlLmdldE1vZGVsKCkuaXNWRWRnZSkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNvdXJjZU1vZGVsID0gc291cmNlLmdldE1vZGVsKCk7IC8vIGZpbmQgdGhlIG5lYXJlc3QgdmlzaWJsZSBhbmNlc3RvclxuXG4gICAgICAgIHdoaWxlICghc291cmNlLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgc291cmNlID0gX3RoaXMuZmluZEJ5SWQoc291cmNlTW9kZWwuY29tYm9JZCB8fCBzb3VyY2VNb2RlbC5wYXJlbnRJZCk7XG5cbiAgICAgICAgICBpZiAoIXNvdXJjZSB8fCAhc291cmNlTW9kZWwucGFyZW50SWQgJiYgIXNvdXJjZU1vZGVsLmNvbWJvSWQpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gaWYgYWxsIHRoZSBhbmNlc3RvcnMgb2YgdGhlIG9wcHNpdGUgYXJlIGFsbCBoaWRkZW4sIGlnbm9yZSB0aGUgZWRnZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNvdXJjZU1vZGVsID0gc291cmNlLmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VJZCA9IHNvdXJjZU1vZGVsLmlkO1xuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCF0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5maW5kQnlJZCh0YXJnZXRNb2RlbC5jb21ib0lkIHx8IHRhcmdldE1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXRNb2RlbC5wYXJlbnRJZCAmJiAhdGFyZ2V0TW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRhcmdldE1vZGVsLmNvbWJvSWQgPT09IGNvbWJvTW9kZWwuaWQgfHwgdGFyZ2V0TW9kZWwucGFyZW50SWQgPT09IGNvbWJvTW9kZWwuaWQpIHtcbiAgICAgICAgICAgIGJyZWFrOyAvLyBpZiB0aGUgbmV4dCBhbmNlc3RvciBpcyB0aGUgY29tYm8sIGJyZWFrIHRoZSB3aGlsZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRJZCA9IHRhcmdldE1vZGVsLmlkO1xuXG4gICAgICAgIGlmIChzb3VyY2VJZCkge1xuICAgICAgICAgIHZhciB2ZWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlSWQsIFwiLVwiKS5jb25jYXQodGFyZ2V0SWQpOyAvLyB1cGRhdGUgdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGVkZ2VzLCB3aGljaCBpcyB0aGUgc3VtIG9mIG1lcmdlZCBhY3R1YWwgZWRnZXNcbiAgICAgICAgICAvLyBiZSBhdHRlbnRpb24gdGhhdCB0aGUgYWN0dWFsIGVkZ2VzIHdpdGggc2FtZSBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCBkaXJlY3Rpb25zIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgdHdvIGRpZmZlcmVudCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICAgICAgICBpZiAoZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSkge1xuICAgICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSArPSBlZGdlLmdldE1vZGVsKCkuc2l6ZSB8fCAxO1xuXG4gICAgICAgICAgICBfdGhpcy51cGRhdGVJdGVtKGFkZGVkVkVkZ2VzW3ZlZGdlSWRdLCB7XG4gICAgICAgICAgICAgIHNpemU6IGVkZ2VXZWlnaHRNYXBbdmVkZ2VJZF1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2ZWRnZSA9IF90aGlzLmFkZEl0ZW0oJ3ZlZGdlJywge1xuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRJZCxcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgICBpc1ZFZGdlOiB0cnVlXG4gICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSA9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG4gICAgICAgICAgYWRkZWRWRWRnZXNbdmVkZ2VJZF0gPSB2ZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgoY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgfHwgY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpKSAmJiAoY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgfHwgY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpKSkge1xuICAgICAgICAvLyBib3RoIHNvdXJjZSBhbmQgdGFyZ2V0IGFyZSBpbiB0aGUgY29tYm8sIGlmIHRoZSB0YXJnZXQgYW5kIHNvdXJjZSBhcmUgYm90aCB2aXNpYmxlLCBzaG93IHRoZSBlZGdlXG4gICAgICAgIGlmIChzb3VyY2UuaXNWaXNpYmxlKCkgJiYgdGFyZ2V0LmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgZWRnZS5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVyY29sbGFwc2VleHBhbmRjb21ibycsIHtcbiAgICAgIGFjdGlvbjogJ2V4cGFuZCcsXG4gICAgICBpdGVtOiBjb21ib1xuICAgIH0pO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNvbGxhcHNlRXhwYW5kQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm8gfHwgY29tYm8uZ2V0VHlwZSAmJiBjb21iby5nZXRUeXBlKCkgIT09ICdjb21ibycpIHJldHVybjtcbiAgICB2YXIgY29tYm9Nb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7IC8vIGlmIG9uZSBhbmNlc3RvciBjb21ibyBvZiB0aGUgY29tYm8gaXMgY29sbGFwc2VkLCBpdCBzaG91bGQgbm90IGJlIGNvbGxhcHNlZCBvciBleHBhbmRlZFxuXG4gICAgdmFyIHBhcmVudEl0ZW0gPSB0aGlzLmZpbmRCeUlkKGNvbWJvTW9kZWwucGFyZW50SWQpO1xuXG4gICAgd2hpbGUgKHBhcmVudEl0ZW0pIHtcbiAgICAgIHZhciBwYXJlbnRNb2RlbCA9IHBhcmVudEl0ZW0uZ2V0TW9kZWwoKTtcblxuICAgICAgaWYgKHBhcmVudE1vZGVsLmNvbGxhcHNlZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJGYWlsIHRvIGV4cGFuZCB0aGUgY29tYm8gc2luY2UgaXQncyBhbmNlc3RvciBjb21ibyBpcyBjb2xsYXBzZWQuXCIpO1xuICAgICAgICBwYXJlbnRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHBhcmVudEl0ZW0gPSB0aGlzLmZpbmRCeUlkKHBhcmVudE1vZGVsLnBhcmVudElkKTtcbiAgICB9XG5cbiAgICB2YXIgY29sbGFwc2VkID0gY29tYm9Nb2RlbC5jb2xsYXBzZWQ7IC8vIOivpee+pOe7hOW3sue7j+WkhOS6juaUtui1t+eKtuaAge+8jOmcgOimgeWxleW8gFxuXG4gICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgdGhpcy5leHBhbmRDb21ibyhjb21ibyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sbGFwc2VDb21ibyhjb21ibyk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb21ibyhjb21ibyk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gY29tYm9UcmVlIOe7k+aehOaVtOeQhiBDb21ibyDnm7jlhbPnmoTlm77lvaLnu5jliLblsYLnuqfvvIzljIXmi6wgQ29tYm8g5pys6Lqr44CB6IqC54K544CB6L65XG4gICAqIEBwYXJhbSB7R3JhcGhEYXRhfSBkYXRhIOaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNvcnRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjb21ib1NvcnRlZCA9IHRoaXMuZ2V0KCdjb21ib1NvcnRlZCcpO1xuICAgIGlmIChjb21ib1NvcnRlZCkgcmV0dXJuO1xuICAgIHRoaXMuc2V0KCdjb21ib1NvcnRlZCcsIHRydWUpO1xuICAgIHZhciBkZXB0aE1hcCA9IFtdO1xuICAgIHZhciBkYXRhRGVwdGhNYXAgPSB7fTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGNUcmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWUoY1RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoZGVwdGhNYXBbY2hpbGQuZGVwdGhdKSBkZXB0aE1hcFtjaGlsZC5kZXB0aF0ucHVzaChjaGlsZC5pZCk7ZWxzZSBkZXB0aE1hcFtjaGlsZC5kZXB0aF0gPSBbY2hpbGQuaWRdO1xuICAgICAgICBkYXRhRGVwdGhNYXBbY2hpbGQuaWRdID0gY2hpbGQuZGVwdGg7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXRFZGdlcygpLmNvbmNhdCh0aGlzLmdldCgndmVkZ2VzJykpO1xuICAgIChlZGdlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZUl0ZW0pIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZUl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBzb3VyY2VEZXB0aCA9IGRhdGFEZXB0aE1hcFtlZGdlLnNvdXJjZV0gfHwgMDtcbiAgICAgIHZhciB0YXJnZXREZXB0aCA9IGRhdGFEZXB0aE1hcFtlZGdlLnRhcmdldF0gfHwgMDtcbiAgICAgIHZhciBkZXB0aCA9IE1hdGgubWF4KHNvdXJjZURlcHRoLCB0YXJnZXREZXB0aCk7XG4gICAgICBpZiAoZGVwdGhNYXBbZGVwdGhdKSBkZXB0aE1hcFtkZXB0aF0ucHVzaChlZGdlLmlkKTtlbHNlIGRlcHRoTWFwW2RlcHRoXSA9IFtlZGdlLmlkXTtcbiAgICB9KTtcbiAgICBkZXB0aE1hcC5mb3JFYWNoKGZ1bmN0aW9uIChhcnJheSkge1xuICAgICAgaWYgKCFhcnJheSB8fCAhYXJyYXkubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgIGZvciAodmFyIGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbmRCeUlkKGFycmF5W2ldKTtcblxuICAgICAgICBpZiAoaXRlbSkgaXRlbS50b0Zyb250KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5boioLngrnmiYDmnInnmoTpgrvlsYXoioLngrlcbiAgICpcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgSU5vZGUpfSBub2RlIOiKgueCuSBJRCDmiJblrp7kvotcbiAgICogQHJldHVybnMge0lOb2RlW119XG4gICAqIEBtZW1iZXJvZiBJQWJzdHJhY3RHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE5laWdoYm9ycyA9IGZ1bmN0aW9uIChub2RlLCB0eXBlKSB7XG4gICAgdmFyIGl0ZW0gPSBub2RlO1xuXG4gICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XG4gICAgICBpdGVtID0gdGhpcy5maW5kQnlJZChub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbS5nZXROZWlnaGJvcnModHlwZSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5Ygbm9kZSDnmoTluqbmlbBcbiAgICpcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgSU5vZGUpfSBub2RlIOiKgueCuSBJRCDmiJblrp7kvotcbiAgICogQHBhcmFtIHsoJ2luJyB8ICdvdXQnIHwgJ3RvdGFsJyB8ICdhbGwnIHwgdW5kZWZpbmVkKX0g5bqm5pWw57G75Z6L77yMaW4g5YWl5bqm77yMb3V0IOWHuuW6pu+8jHRvdGFsIOaAu+W6puaVsO+8jGFsbCDov5Tlm57kuInnp43nsbvlnovluqbmlbDnmoTlr7nosaFcbiAgICogQHJldHVybnMge051bWJlciB8IE9iamVjdH0g6K+l6IqC54K555qE5bqm5pWwXG4gICAqIEBtZW1iZXJvZiBJQWJzdHJhY3RHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE5vZGVEZWdyZWUgPSBmdW5jdGlvbiAobm9kZSwgdHlwZSwgcmVmcmVzaCkge1xuICAgIGlmICh0eXBlID09PSB2b2lkIDApIHtcbiAgICAgIHR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHJlZnJlc2ggPT09IHZvaWQgMCkge1xuICAgICAgcmVmcmVzaCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gbm9kZTtcblxuICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZmluZEJ5SWQobm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGRlZ3JlZXMgPSB0aGlzLmdldCgnZGVncmVlcycpO1xuXG4gICAgaWYgKCFkZWdyZWVzIHx8IHJlZnJlc2gpIHtcbiAgICAgIGRlZ3JlZXMgPSBnZXREZWdyZWUodGhpcy5zYXZlKCkpO1xuICAgICAgdGhpcy5zZXQoJ2RlZ3JlZXMnLCBkZWdyZWVzKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZURlZ3JlZXMgPSBkZWdyZWVzW2l0ZW0uZ2V0SUQoKV07XG4gICAgdmFyIHJlcyA9IDA7IC8vIOWmguaenOaYr+mAmui/hyBhZGRJdGVtIOWQjumdouaWsOWinuWKoOeahOiKgueCue+8jOatpOaXtuWug+eahOaJgOacieW6puaVsOmDveS4uiAwXG5cbiAgICBpZiAoIW5vZGVEZWdyZWVzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2luJzpcbiAgICAgICAgcmVzID0gbm9kZURlZ3JlZXMuaW5EZWdyZWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvdXQnOlxuICAgICAgICByZXMgPSBub2RlRGVncmVlcy5vdXREZWdyZWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhbGwnOlxuICAgICAgICByZXMgPSBub2RlRGVncmVlcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyA9IG5vZGVEZWdyZWVzLmRlZ3JlZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRVbmRvU3RhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudW5kb1N0YWNrO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFJlZG9TdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWRvU3RhY2s7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgdW5kbyDlkowgcmVkbyDmoIjnmoTmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRTdGFja0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1bmRvU3RhY2s6IHRoaXMudW5kb1N0YWNrLnRvQXJyYXkoKSxcbiAgICAgIHJlZG9TdGFjazogdGhpcy5yZWRvU3RhY2sudG9BcnJheSgpXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4heepuiB1bmRvIHN0YWNrICYgcmVkbyBzdGFja1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNsZWFyU3RhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdGhpcy51bmRvU3RhY2suY2xlYXIoKTtcbiAgICAgIHRoaXMucmVkb1N0YWNrLmNsZWFyKCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5bCG5pON5L2c57G75Z6L5ZKM5pON5L2c5pWw5o2u5YWl5qCIXG4gICAqIEBwYXJhbSBhY3Rpb24g5pON5L2c57G75Z6LXG4gICAqIEBwYXJhbSBkYXRhIOWFpeagiOeahOaVsOaNrlxuICAgKiBAcGFyYW0gc3RhY2tUeXBlIOagiOeahOexu+Wei1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnB1c2hTdGFjayA9IGZ1bmN0aW9uIChhY3Rpb24sIGRhdGEsIHN0YWNrVHlwZSkge1xuICAgIGlmIChhY3Rpb24gPT09IHZvaWQgMCkge1xuICAgICAgYWN0aW9uID0gJ3VwZGF0ZSc7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrVHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFja1R5cGUgPSAndW5kbyc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIGNvbnNvbGUud2Fybign6K+35YWI5ZCv55SoIHVuZG8gJiByZWRvIOWKn+iDve+8jOWcqOWunuS+i+WMliBHcmFwaCDml7blgJnphY3nva4gZW5hYmxlZFN0YWNrOiB0cnVlICEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2tEYXRhID0gZGF0YSA/IGNsb25lKGRhdGEpIDoge1xuICAgICAgYmVmb3JlOiB7fSxcbiAgICAgIGFmdGVyOiBjbG9uZSh0aGlzLnNhdmUoKSlcbiAgICB9O1xuXG4gICAgaWYgKHN0YWNrVHlwZSA9PT0gJ3JlZG8nKSB7XG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIGRhdGE6IHN0YWNrRGF0YVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5kb1N0YWNrLnB1c2goe1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgZGF0YTogc3RhY2tEYXRhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ3N0YWNrY2hhbmdlJywge1xuICAgICAgdW5kb1N0YWNrOiB0aGlzLnVuZG9TdGFjayxcbiAgICAgIHJlZG9TdGFjazogdGhpcy5yZWRvU3RhY2tcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlumCu+aOpeefqemYtVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlIOaYr+WQpuS9v+eUqOe8k+WtmOeahFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpcmVjdGVkIOaYr+WQpuaYr+acieWQkeWbvu+8jOm7mOiupOWPliBncmFwaC5kaXJlY3RlZFxuICAgKiBAcmV0dXJucyB7TWF0cml4fSDpgrvmjqXnn6npmLVcbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0QWRqTWF0cml4ID0gZnVuY3Rpb24gKGNhY2hlLCBkaXJlY3RlZCkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWNoZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB1bmRlZmluZWQpIGRpcmVjdGVkID0gdGhpcy5nZXQoJ2RpcmVjdGVkJyk7XG4gICAgdmFyIGN1cnJlbnRBZGpNYXRyaXggPSB0aGlzLmdldCgnYWRqTWF0cml4Jyk7XG5cbiAgICBpZiAoIWN1cnJlbnRBZGpNYXRyaXggfHwgIWNhY2hlKSB7XG4gICAgICBjdXJyZW50QWRqTWF0cml4ID0gZ2V0QWRqYWNlbnRNYXRyaXgodGhpcy5zYXZlKCksIGRpcmVjdGVkKTtcbiAgICAgIHRoaXMuc2V0KCdhZGpNYXRyaXgnLCBjdXJyZW50QWRqTWF0cml4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudEFkak1hdHJpeDtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluacgOefrei3r+W+hOefqemYtVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlIOaYr+WQpuS9v+eUqOe8k+WtmOeahFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpcmVjdGVkIOaYr+WQpuaYr+acieWQkeWbvu+8jOm7mOiupOWPliBncmFwaC5kaXJlY3RlZFxuICAgKiBAcmV0dXJucyB7TWF0cml4fSDmnIDnn63ot6/lvoTnn6npmLVcbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0U2hvcnRlc3RQYXRoTWF0cml4ID0gZnVuY3Rpb24gKGNhY2hlLCBkaXJlY3RlZCkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWNoZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB1bmRlZmluZWQpIGRpcmVjdGVkID0gdGhpcy5nZXQoJ2RpcmVjdGVkJyk7XG4gICAgdmFyIGN1cnJlbnRBZGpNYXRyaXggPSB0aGlzLmdldCgnYWRqTWF0cml4Jyk7XG4gICAgdmFyIGN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4ID0gdGhpcy5nZXQoJ3Nob3J0ZXN0UGF0aE1hdHJpeCcpO1xuXG4gICAgaWYgKCFjdXJyZW50QWRqTWF0cml4IHx8ICFjYWNoZSkge1xuICAgICAgY3VycmVudEFkak1hdHJpeCA9IGdldEFkamFjZW50TWF0cml4KHRoaXMuc2F2ZSgpLCBkaXJlY3RlZCk7XG4gICAgICB0aGlzLnNldCgnYWRqTWF0cml4JywgY3VycmVudEFkak1hdHJpeCk7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50U2hvdXJ0ZXN0UGF0aE1hdHJpeCB8fCAhY2FjaGUpIHtcbiAgICAgIGN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4ID0gZmxveWRXYXJzaGFsbCh0aGlzLnNhdmUoKSwgZGlyZWN0ZWQpO1xuICAgICAgdGhpcy5zZXQoJ3Nob3J0ZXN0UGF0aE1hdHJpeCcsIGN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXg7XG4gIH07XG4gIC8qKlxuICAgKiDph43mlrDlrprkuYnnm5HlkKzlh73mlbDvvIzlpI3lhpnlj4LmlbDnsbvlnotcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudE5hbWUsIGNhbGxiYWNrLCBvbmNlKSB7XG4gICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldmVudE5hbWUsIGNhbGxiYWNrLCBvbmNlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmUgOavgeeUu+W4g1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcblxuICAgIHRoaXMuY2xlYXIoKTsgLy8g5riF56m65qCI5pWw5o2uXG5cbiAgICB0aGlzLmNsZWFyU3RhY2soKTtcbiAgICAoX2EgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlc3Ryb3koKTtcbiAgICAoX2IgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlc3Ryb3koKTtcbiAgICAoX2MgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmRlc3Ryb3koKTtcbiAgICAoX2QgPSB0aGlzLmdldCgnc3RhdGVDb250cm9sbGVyJykpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5kZXN0cm95KCk7XG4gICAgKF9lID0gdGhpcy5nZXQoJ2NhbnZhcycpKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuZGVzdHJveSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5yZWRvU3RhY2sgPSBudWxsO1xuICAgIHRoaXMudW5kb1N0YWNrID0gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIm+W7uuWHuOWMheaIluWHueWMhei9ruW7k1xuICAgKiBAcGFyYW0gY2ZnIEh1bGxDZmcg6L2u5buT6YWN572u6aG5XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY3JlYXRlSHVsbCA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICBpZiAoIWNmZy5tZW1iZXJzIHx8IGNmZy5tZW1iZXJzLmxlbmd0aCA8IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ3JlYXRlIGh1bGwgZmFpbGVkISBUaGUgbWVtYmVycyBpcyBlbXB0eS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXQoJ2h1bGxHcm91cCcpO1xuICAgIHZhciBodWxsTWFwID0gdGhpcy5nZXQoJ2h1bGxNYXAnKTtcblxuICAgIGlmICghaHVsbE1hcCkge1xuICAgICAgaHVsbE1hcCA9IHt9O1xuICAgICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCBodWxsTWFwKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXQoJ2dyb3VwJykuYWRkR3JvdXAoe1xuICAgICAgICBpZDogJ2h1bGxHcm91cCdcbiAgICAgIH0pO1xuICAgICAgcGFyZW50LnRvQmFjaygpO1xuICAgICAgdGhpcy5zZXQoJ2h1bGxHcm91cCcsIHBhcmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGh1bGxNYXBbY2ZnLmlkXSkge1xuICAgICAgY29uc29sZS53YXJuKCdFeGlzdGVkIGh1bGwgaWQuJyk7XG4gICAgICByZXR1cm4gaHVsbE1hcFtjZmcuaWRdO1xuICAgIH1cblxuICAgIHZhciBncm91cCA9IHBhcmVudC5hZGRHcm91cCh7XG4gICAgICBpZDogXCJcIi5jb25jYXQoY2ZnLmlkLCBcIi1jb250YWluZXJcIilcbiAgICB9KTtcbiAgICB2YXIgaHVsbCA9IG5ldyBIdWxsKHRoaXMsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjZmcpLCB7XG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9KSk7XG4gICAgdmFyIGh1bGxJZCA9IGh1bGwuaWQ7XG4gICAgaHVsbE1hcFtodWxsSWRdID0gaHVsbDtcbiAgICByZXR1cm4gaHVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjSBncmFwaCDkuK3lrZjlnKjnmoTljIXoo7nova7lu5NcbiAgICogQHJldHVybiB7W2tleTogc3RyaW5nXTogSHVsbH0gSHVsbCDnmoQgbWFw77yMaHVsbElkIOWvueW6lOeahCBodWxsIOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaHVsbE1hcCcpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uIGh1bGxJZCDojrflj5blr7nlupTnmoQgaHVsbFxuICAgKiBAcmV0dXJuIEh1bGxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRIdWxsQnlJZCA9IGZ1bmN0aW9uIChodWxsSWQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2h1bGxNYXAnKVtodWxsSWRdO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGwgPSBmdW5jdGlvbiAoaHVsbCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBodWxsSW5zdGFuY2U7XG5cbiAgICBpZiAoaXNTdHJpbmcoaHVsbCkpIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IHRoaXMuZ2V0SHVsbEJ5SWQoaHVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IGh1bGw7XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2h1bGxNYXAnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHRydWUgOiBkZWxldGUgX2FbaHVsbEluc3RhbmNlLmlkXTtcbiAgICBodWxsSW5zdGFuY2UuZGVzdHJveSgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBodWxscyA9IHRoaXMuZ2V0SHVsbHMoKTtcbiAgICBpZiAoIWh1bGxzIHx8ICFPYmplY3Qua2V5cyhodWxscykubGVuZ3RoKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoaHVsbHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGh1bGwgPSBodWxsc1trZXldO1xuICAgICAgaHVsbC5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCB7fSk7XG4gIH07XG5cbiAgcmV0dXJuIEFic3RyYWN0R3JhcGg7XG59KEV2ZW50RW1pdHRlcik7XG5cbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0R3JhcGg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/graph.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/index.js":
/*!************************************************!*\
!*** ./node_modules/@antv/g6-core/es/index.js ***!
\************************************************/
/*! exports provided: G6GraphEvent, G6Event, Arrow, Shape, Node, Edge, Combo, Hull, Marker, registerNode, registerCombo, AbstractGraph, Util, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return registerNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return registerCombo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return registerEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return registerBehavior; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return BaseGlobal; });\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-core/es/behavior/index.js\");\n/* harmony import */ var _graph_graph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graph/graph */ \"./node_modules/@antv/g6-core/es/graph/graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g6-core/es/element/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"]; });\n\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g6-core/es/util/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graph/controller/layout */ \"./node_modules/@antv/g6-core/es/graph/controller/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./graph/controller/event */ \"./node_modules/@antv/g6-core/es/graph/controller/event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./item/node */ \"./node_modules/@antv/g6-core/es/item/node.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./item/edge */ \"./node_modules/@antv/g6-core/es/item/edge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./item/hull */ \"./node_modules/@antv/g6-core/es/item/hull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./item/combo */ \"./node_modules/@antv/g6-core/es/item/combo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/g6-core/es/types/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6Event\"]; });\n\n\n\n\n\n // 用于 PC 和 Mobile 端分别实现 layout 和 updateLayoutCfg 方法\n\n\n\n\n\n\n\nvar registerNode = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode;\nvar registerEdge = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge;\nvar registerCombo = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo;\nvar registerBehavior = _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior;\nvar BaseGlobal = _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version,\n AbstractGraph: _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n BaseGlobal: BaseGlobal,\n Util: _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Shape: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Node: _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Edge: _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n Combo: _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Hull: _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n registerNode: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode,\n registerEdge: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge,\n registerCombo: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo,\n registerBehavior: _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior,\n Arrow: _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"],\n Marker: _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"],\n AbstractLayout: _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n AbstractEvent: _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbmRleC5qcz8zODIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDUTtBQUNPO0FBQ25CO0FBQ0o7O0FBRTZCO0FBQ0Y7QUFDdEI7QUFDQTtBQUNBO0FBQ0U7QUFDakMsbUJBQW1CLGdEQUFLO0FBQ3hCLG1CQUFtQixnREFBSztBQUN4QixvQkFBb0IsZ0RBQUs7QUFDekIsdUJBQXVCLGlEQUFRO0FBQy9CLGlCQUFpQiwrQ0FBTTtBQUNDO0FBQzhKO0FBQ3ZLO0FBQ2YsV0FBVywrQ0FBTTtBQUNqQixpQkFBaUIsb0RBQWE7QUFDOUI7QUFDQSxRQUFRLDZDQUFJO0FBQ1osU0FBUyxnREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixRQUFRLGtEQUFJO0FBQ1osU0FBUyxvREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixnQkFBZ0IsZ0RBQUs7QUFDckIsZ0JBQWdCLGdEQUFLO0FBQ3JCLGlCQUFpQixnREFBSztBQUN0QixvQkFBb0IsaURBQVE7QUFDNUIsU0FBUyw4Q0FBSztBQUNkLFVBQVUsK0NBQU07QUFDaEIsa0JBQWtCLGdFQUFjO0FBQ2hDLGlCQUFpQiwrREFBYTtBQUM5QixDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVoYXZpb3IgZnJvbSAnLi9iZWhhdmlvcic7XG5pbXBvcnQgQWJzdHJhY3RHcmFwaCBmcm9tICcuL2dyYXBoL2dyYXBoJztcbmltcG9ydCBTaGFwZSwgeyBBcnJvdywgTWFya2VyIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi9nbG9iYWwnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJzsgLy8g55So5LqOIFBDIOWSjCBNb2JpbGUg56uv5YiG5Yir5a6e546wIGxheW91dCDlkowgdXBkYXRlTGF5b3V0Q2ZnIOaWueazlVxuXG5pbXBvcnQgQWJzdHJhY3RMYXlvdXQgZnJvbSAnLi9ncmFwaC9jb250cm9sbGVyL2xheW91dCc7XG5pbXBvcnQgQWJzdHJhY3RFdmVudCBmcm9tICcuL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQnO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9pdGVtL25vZGUnO1xuaW1wb3J0IEVkZ2UgZnJvbSAnLi9pdGVtL2VkZ2UnO1xuaW1wb3J0IEh1bGwgZnJvbSAnLi9pdGVtL2h1bGwnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4vaXRlbS9jb21ibyc7XG52YXIgcmVnaXN0ZXJOb2RlID0gU2hhcGUucmVnaXN0ZXJOb2RlO1xudmFyIHJlZ2lzdGVyRWRnZSA9IFNoYXBlLnJlZ2lzdGVyRWRnZTtcbnZhciByZWdpc3RlckNvbWJvID0gU2hhcGUucmVnaXN0ZXJDb21ibztcbnZhciByZWdpc3RlckJlaGF2aW9yID0gQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcjtcbnZhciBCYXNlR2xvYmFsID0gR2xvYmFsO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgeyBBcnJvdywgU2hhcGUsIE5vZGUsIEVkZ2UsIENvbWJvLCBIdWxsLCBNYXJrZXIsIHJlZ2lzdGVyTm9kZSwgcmVnaXN0ZXJDb21ibywgQWJzdHJhY3RHcmFwaCwgVXRpbCwgcmVnaXN0ZXJFZGdlLCByZWdpc3RlckJlaGF2aW9yLCBBYnN0cmFjdExheW91dCwgQWJzdHJhY3RFdmVudCwgQmFzZUdsb2JhbCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiBHbG9iYWwudmVyc2lvbixcbiAgQWJzdHJhY3RHcmFwaDogQWJzdHJhY3RHcmFwaCxcbiAgQmFzZUdsb2JhbDogQmFzZUdsb2JhbCxcbiAgVXRpbDogVXRpbCxcbiAgU2hhcGU6IFNoYXBlLFxuICBOb2RlOiBOb2RlLFxuICBFZGdlOiBFZGdlLFxuICBDb21ibzogQ29tYm8sXG4gIEh1bGw6IEh1bGwsXG4gIHJlZ2lzdGVyTm9kZTogU2hhcGUucmVnaXN0ZXJOb2RlLFxuICByZWdpc3RlckVkZ2U6IFNoYXBlLnJlZ2lzdGVyRWRnZSxcbiAgcmVnaXN0ZXJDb21ibzogU2hhcGUucmVnaXN0ZXJDb21ibyxcbiAgcmVnaXN0ZXJCZWhhdmlvcjogQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcixcbiAgQXJyb3c6IEFycm93LFxuICBNYXJrZXI6IE1hcmtlcixcbiAgQWJzdHJhY3RMYXlvdXQ6IEFic3RyYWN0TGF5b3V0LFxuICBBYnN0cmFjdEV2ZW50OiBBYnN0cmFjdEV2ZW50XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/interface/behavior.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/interface/behavior.js ***!
\*************************************************************/
/*! exports provided: G6GraphEvent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return G6GraphEvent; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n\n\n\nvar G6GraphEvent =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(G6GraphEvent, _super);\n\n function G6GraphEvent(type, event) {\n var _this = _super.call(this, type, event) || this;\n\n _this.item = event.item;\n _this.canvasX = event.canvasX;\n _this.canvasY = event.canvasY;\n _this.wheelDelta = event.wheelDelta;\n _this.detail = event.detail;\n return _this;\n }\n\n return G6GraphEvent;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"Event\"]);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvYmVoYXZpb3IuanM/MDEyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNpQjs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLGtEQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBFdmVudCBhcyBHcmFwaEV2ZW50IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcblxudmFyIEc2R3JhcGhFdmVudCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhHNkdyYXBoRXZlbnQsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRzZHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZSwgZXZlbnQpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5pdGVtID0gZXZlbnQuaXRlbTtcbiAgICBfdGhpcy5jYW52YXNYID0gZXZlbnQuY2FudmFzWDtcbiAgICBfdGhpcy5jYW52YXNZID0gZXZlbnQuY2FudmFzWTtcbiAgICBfdGhpcy53aGVlbERlbHRhID0gZXZlbnQud2hlZWxEZWx0YTtcbiAgICBfdGhpcy5kZXRhaWwgPSBldmVudC5kZXRhaWw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEc2R3JhcGhFdmVudDtcbn0oR3JhcGhFdmVudCk7XG5cbmV4cG9ydCB7IEc2R3JhcGhFdmVudCB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/behavior.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/interface/graph.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/interface/graph.js ***!
\**********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvZ3JhcGguanM/OWYxNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/graph.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/interface/index.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/interface/index.js ***!
\**********************************************************/
/*! exports provided: G6GraphEvent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph */ \"./node_modules/@antv/g6-core/es/interface/graph.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-core/es/interface/behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/interface/item.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/interface/shape.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanM/NGIwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUF3QjtBQUNHO0FBQ0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dyYXBoJztcbmV4cG9ydCAqIGZyb20gJy4vYmVoYXZpb3InO1xuZXhwb3J0ICogZnJvbSAnLi9pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcGUnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/interface/item.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/interface/item.js ***!
\*********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaXRlbS5qcz9kZTJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/item.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/interface/shape.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/interface/shape.js ***!
\**********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2Uvc2hhcGUuanM/ZTIyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/shape.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/item/combo.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/item/combo.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar CACHE_SIZE = 'sizeCache';\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\n\nvar Combo =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Combo, _super);\n\n function Combo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Combo.prototype.getDefaultCfg = function () {\n return {\n type: 'combo',\n nodes: [],\n edges: [],\n combos: []\n };\n };\n\n Combo.prototype.getShapeCfg = function (model) {\n var styles = this.get('styles');\n var bbox = this.get('bbox');\n\n if (styles && bbox) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n var size = {\n r: Math.hypot(bbox.height, bbox.width) / 2 || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0] / 2,\n width: bbox.width || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0],\n height: bbox.height || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[1]\n };\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style), size);\n var padding = model.padding || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.padding;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) {\n size.r += padding;\n size.width += padding * 2;\n size.height += padding * 2;\n } else {\n size.r += padding[0];\n size.width += padding[1] + padding[3] || padding[1] * 2;\n size.height += padding[0] + padding[2] || padding[0] * 2;\n }\n\n this.set(CACHE_SIZE, size);\n return newModel;\n }\n\n return model;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n Combo.prototype.calculateCanvasBBox = function () {\n if (this.destroyed) return;\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n var cacheSize = this.get(CACHE_SIZE);\n var cacheBBox = this.get(CACHE_BBOX) || {};\n var oriX = cacheBBox.x;\n var oriY = cacheBBox.x;\n\n if (cacheSize) {\n cacheSize.width = Math.max(cacheSize.width, bbox.width);\n cacheSize.height = Math.max(cacheSize.height, bbox.height);\n var type = keyShape.get('type');\n\n if (type === 'circle') {\n bbox.width = cacheSize.r * 2;\n bbox.height = cacheSize.r * 2;\n } else {\n bbox.width = cacheSize.width;\n bbox.height = cacheSize.height;\n }\n\n bbox.minX = bbox.centerX - bbox.width / 2;\n bbox.minY = bbox.centerY - bbox.height / 2;\n bbox.maxX = bbox.centerX + bbox.width / 2;\n bbox.maxY = bbox.centerY + bbox.height / 2;\n } else {\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n }\n\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n if (bbox.x !== oriX || bbox.y !== oriY) this.set(CACHE_ANCHOR_POINTS, null);\n return bbox;\n };\n /**\n * 获取 Combo 中所有的子元素,包括 Combo、Node 及 Edge\n */\n\n\n Combo.prototype.getChildren = function () {\n var self = this;\n return {\n nodes: self.getNodes(),\n combos: self.getCombos()\n };\n };\n /**\n * 获取 Combo 中所有子节点\n */\n\n\n Combo.prototype.getNodes = function () {\n var self = this;\n return self.get('nodes');\n };\n /**\n * 获取 Combo 中所有子 combo\n */\n\n\n Combo.prototype.getCombos = function () {\n var self = this;\n return self.get('combos');\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.addNode(item);\n break;\n\n case 'combo':\n self.addCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 向 Combo 中增加 combo\n * @param combo Combo 实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addCombo = function (combo) {\n var self = this;\n self.get('combos').push(combo);\n return true;\n };\n /**\n * 向 Combo 中添加节点\n * @param node 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addNode = function (node) {\n var self = this;\n self.get('nodes').push(node);\n return true;\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.removeNode(item);\n break;\n\n case 'combo':\n self.removeCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 从 Combo 中移除指定的 combo\n * @param combo Combo 实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeCombo = function (combo) {\n if (!combo) return;\n var combos = this.getCombos();\n var index = combos.indexOf(combo);\n\n if (index > -1) {\n combos.splice(index, 1);\n return true;\n }\n\n return false;\n };\n /**\n * 向 Combo 中移除指定的节点\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeNode = function (node) {\n if (!node) return;\n var nodes = this.getNodes();\n var index = nodes.indexOf(node);\n\n if (index > -1) {\n nodes.splice(index, 1);\n return true;\n }\n\n return false;\n };\n\n Combo.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n Combo.prototype.getBBox = function () {\n this.set(CACHE_CANVAS_BBOX, null);\n var bbox = this.calculateCanvasBBox();\n return bbox;\n };\n\n Combo.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_CANVAS_BBOX, null);\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n\n Combo.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n this.set(CACHE_SIZE, null);\n this.set('bbox', null);\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return Combo;\n}(_node__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Combo);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzPzBjYzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ2xCO0FBQ0s7QUFDVztBQUNKO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELCtDQUFNO0FBQzVELDZCQUE2QiwrQ0FBTTtBQUNuQywrQkFBK0IsK0NBQU07QUFDckM7QUFDQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEQscUNBQXFDLCtDQUFNOztBQUUzQyxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxlQUFlLDZEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBDQUNIRV9TSVpFID0gJ3NpemVDYWNoZSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG5cbnZhciBDb21ibyA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhDb21ibywgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDb21ibygpIHtcbiAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICBDb21iby5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2NvbWJvJyxcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIGNvbWJvczogW11cbiAgICB9O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRTaGFwZUNmZyA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnYmJveCcpO1xuXG4gICAgaWYgKHN0eWxlcyAmJiBiYm94KSB7XG4gICAgICAvLyBtZXJnZSBncmFwaOeahGl0ZW3moLflvI/kuI7mlbDmja7mqKHlnovkuK3nmoTmoLflvI9cbiAgICAgIHZhciBuZXdNb2RlbCA9IG1vZGVsO1xuICAgICAgdmFyIHNpemUgPSB7XG4gICAgICAgIHI6IE1hdGguaHlwb3QoYmJveC5oZWlnaHQsIGJib3gud2lkdGgpIC8gMiB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0gLyAyLFxuICAgICAgICB3aWR0aDogYmJveC53aWR0aCB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0sXG4gICAgICAgIGhlaWdodDogYmJveC5oZWlnaHQgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzFdXG4gICAgICB9O1xuICAgICAgbmV3TW9kZWwuc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwgbW9kZWwuc3R5bGUpLCBzaXplKTtcbiAgICAgIHZhciBwYWRkaW5nID0gbW9kZWwucGFkZGluZyB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnBhZGRpbmc7XG5cbiAgICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZztcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZyAqIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZ1swXTtcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nWzFdICsgcGFkZGluZ1szXSB8fCBwYWRkaW5nWzFdICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZ1swXSArIHBhZGRpbmdbMl0gfHwgcGFkZGluZ1swXSAqIDI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0KENBQ0hFX1NJWkUsIHNpemUpO1xuICAgICAgcmV0dXJuIG5ld01vZGVsO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuY2FsY3VsYXRlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC5jZW50ZXJYID0gKGJib3gubWluWCArIGJib3gubWF4WCkgLyAyO1xuICAgIGJib3guY2VudGVyWSA9IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMjtcbiAgICB2YXIgY2FjaGVTaXplID0gdGhpcy5nZXQoQ0FDSEVfU0laRSk7XG4gICAgdmFyIGNhY2hlQkJveCA9IHRoaXMuZ2V0KENBQ0hFX0JCT1gpIHx8IHt9O1xuICAgIHZhciBvcmlYID0gY2FjaGVCQm94Lng7XG4gICAgdmFyIG9yaVkgPSBjYWNoZUJCb3gueDtcblxuICAgIGlmIChjYWNoZVNpemUpIHtcbiAgICAgIGNhY2hlU2l6ZS53aWR0aCA9IE1hdGgubWF4KGNhY2hlU2l6ZS53aWR0aCwgYmJveC53aWR0aCk7XG4gICAgICBjYWNoZVNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoY2FjaGVTaXplLmhlaWdodCwgYmJveC5oZWlnaHQpO1xuICAgICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICAgIGJib3gud2lkdGggPSBjYWNoZVNpemUuciAqIDI7XG4gICAgICAgIGJib3guaGVpZ2h0ID0gY2FjaGVTaXplLnIgKiAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJveC53aWR0aCA9IGNhY2hlU2l6ZS53aWR0aDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBjYWNoZVNpemUuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBiYm94Lm1pblggPSBiYm94LmNlbnRlclggLSBiYm94LndpZHRoIC8gMjtcbiAgICAgIGJib3gubWluWSA9IGJib3guY2VudGVyWSAtIGJib3guaGVpZ2h0IC8gMjtcbiAgICAgIGJib3gubWF4WCA9IGJib3guY2VudGVyWCArIGJib3gud2lkdGggLyAyO1xuICAgICAgYmJveC5tYXhZID0gYmJveC5jZW50ZXJZICsgYmJveC5oZWlnaHQgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgICAgYmJveC5oZWlnaHQgPSBiYm94Lm1heFkgLSBiYm94Lm1pblk7XG4gICAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgfVxuXG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBpZiAoYmJveC54ICE9PSBvcmlYIHx8IGJib3gueSAhPT0gb3JpWSkgdGhpcy5zZXQoQ0FDSEVfQU5DSE9SX1BPSU5UUywgbnVsbCk7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g5Lit5omA5pyJ55qE5a2Q5YWD57Sg77yM5YyF5ousIENvbWJv44CBTm9kZSDlj4ogRWRnZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBzZWxmLmdldE5vZGVzKCksXG4gICAgICBjb21ib3M6IHNlbGYuZ2V0Q29tYm9zKClcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkOiKgueCuVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHNlbGYuZ2V0KCdub2RlcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkCBjb21ib1xuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBzZWxmLmdldCgnY29tYm9zJyk7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLmFkZE5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYuYWRkQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5ZCRIENvbWJvIOS4reWinuWKoCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5hZGRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmdldCgnY29tYm9zJykucHVzaChjb21ibyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5re75Yqg6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZ2V0KCdub2RlcycpLnB1c2gobm9kZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLnJlbW92ZU5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYucmVtb3ZlQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5LuOIENvbWJvIOS4reenu+mZpOaMh+WumueahCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDnp7vpmaTmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5yZW1vdmVDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmICghY29tYm8pIHJldHVybjtcbiAgICB2YXIgY29tYm9zID0gdGhpcy5nZXRDb21ib3MoKTtcbiAgICB2YXIgaW5kZXggPSBjb21ib3MuaW5kZXhPZihjb21ibyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29tYm9zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit56e76Zmk5oyH5a6a55qE6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICAgIHZhciBpbmRleCA9IG5vZGVzLmluZGV4T2Yobm9kZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgbm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBDb21iby5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGl0ZW0g55qE5YyF5Zu055uS77yM6L+Z5Liq5YyF5Zu055uS5piv55u45a+55LqOIGl0ZW0g6Ieq5bex77yM5LiN5Lya5bCGIG1hdHJpeCDorqHnrpflnKjlhoVcbiAgICogQHJldHVybiB7T2JqZWN0fSDljIXlkKsgeCx5LHdpZHRoLGhlaWdodCwgY2VudGVyWCwgY2VudGVyWVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgICB2YXIgYmJveCA9IHRoaXMuY2FsY3VsYXRlQ2FudmFzQkJveCgpO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpOyAvLyDmuIXnkIbnvJPlrZjnmoQgYmJveFxuXG4gICAgdGhpcy5zZXQoQ0FDSEVfQ0FOVkFTX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMsIG51bGwpO1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHZhciBhbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgICBncm91cC5zdG9wQW5pbWF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gICAgICB0aGlzLnNldChDQUNIRV9TSVpFLCBudWxsKTtcbiAgICAgIHRoaXMuc2V0KCdiYm94JywgbnVsbCk7XG4gICAgICBncm91cC5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX2NmZyA9IG51bGw7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBDb21ibztcbn0oTm9kZSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvbWJvOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/combo.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/item/edge.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/item/edge.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/item/item.js\");\n\n\n\nvar END_MAP = {\n source: 'start',\n target: 'end'\n};\nvar ITEM_NAME_SUFFIX = 'Node'; // 端点的后缀,如 sourceNode, targetNode\n\nvar POINT_NAME_SUFFIX = 'Point'; // 起点或者结束点的后缀,如 startPoint, endPoint\n\nvar ANCHOR_NAME_SUFFIX = 'Anchor';\n\nvar Edge =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Edge, _super);\n\n function Edge() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Edge.prototype.getDefaultCfg = function () {\n return {\n type: 'edge',\n sourceNode: null,\n targetNode: null,\n startPoint: null,\n endPoint: null,\n linkCenter: false\n };\n };\n\n Edge.prototype.setEnd = function (name, value) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var preItem = this.get(itemName);\n\n if (preItem && !preItem.destroyed) {\n // 如果之前存在节点,则移除掉边\n preItem.removeEdge(this);\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(value)) {\n // 如果设置成具体的点,则清理节点\n this.set(pointName, value);\n this.set(itemName, null);\n } else if (value) {\n value.addEdge(this);\n this.set(itemName, value);\n this.set(pointName, null);\n }\n };\n /**\n * 获取连接点的坐标\n * @param name source | target\n * @param model 边的数据模型\n * @param controlPoints 控制点\n */\n\n\n Edge.prototype.getLinkPoint = function (name, model, controlPoints) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var point = this.get(pointName);\n\n if (!point) {\n var item = this.get(itemName);\n var anchorName = name + ANCHOR_NAME_SUFFIX;\n var prePoint = this.getPrePoint(name, controlPoints);\n var anchorIndex = model[anchorName];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(anchorIndex)) {\n // 如果有锚点,则使用锚点索引获取连接点\n point = item.getLinkPointByAnchor(anchorIndex);\n } // 如果锚点没有对应的点或者没有锚点,则直接计算连接点\n\n\n point = point || item.getLinkPoint(prePoint);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(point.index)) {\n this.set(\"\".concat(name, \"AnchorIndex\"), point.index);\n }\n }\n\n return point;\n };\n /**\n * 获取同端点进行连接的点,计算交汇点\n * @param name\n * @param controlPoints\n */\n\n\n Edge.prototype.getPrePoint = function (name, controlPoints) {\n if (controlPoints && controlPoints.length) {\n var index = name === 'source' ? 0 : controlPoints.length - 1;\n return controlPoints[index];\n }\n\n var oppositeName = name === 'source' ? 'target' : 'source'; // 取另一个节点的位置\n\n return this.getEndPoint(oppositeName);\n };\n /**\n * 获取端点的位置\n * @param name\n */\n\n\n Edge.prototype.getEndPoint = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n return item.get('model');\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n /**\n * 通过端点的中心获取控制点\n * @param model\n */\n\n\n Edge.prototype.getControlPointsByCenter = function (model) {\n var sourcePoint = this.getEndPoint('source');\n var targetPoint = this.getEndPoint('target');\n var shapeFactory = this.get('shapeFactory');\n var type = model.type;\n return shapeFactory.getControlPoints(type, {\n startPoint: sourcePoint,\n endPoint: targetPoint\n });\n };\n\n Edge.prototype.getEndCenter = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n var bbox = item.getBBox();\n return {\n x: bbox.centerX,\n y: bbox.centerY\n };\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n\n Edge.prototype.init = function () {\n _super.prototype.init.call(this); // 初始化两个端点\n\n\n this.setSource(this.get('source'));\n this.setTarget(this.get('target'));\n };\n\n Edge.prototype.getShapeCfg = function (model, updateType) {\n var self = this;\n var linkCenter = self.get('linkCenter'); // 如果连接到中心,忽视锚点、忽视控制点\n\n var cfg = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('move')) ? model : _super.prototype.getShapeCfg.call(this, model);\n\n if (linkCenter) {\n cfg.startPoint = self.getEndCenter('source');\n cfg.endPoint = self.getEndCenter('target');\n } else {\n var controlPoints = cfg.controlPoints || self.getControlPointsByCenter(cfg);\n cfg.startPoint = self.getLinkPoint('source', model, controlPoints);\n cfg.endPoint = self.getLinkPoint('target', model, controlPoints);\n }\n\n cfg.sourceNode = self.get('sourceNode');\n cfg.targetNode = self.get('targetNode');\n return cfg;\n };\n /**\n * 获取边的数据模型\n */\n\n\n Edge.prototype.getModel = function () {\n var out = this.get('model');\n var sourceItem = this.get(\"source\".concat(ITEM_NAME_SUFFIX));\n var targetItem = this.get(\"target\".concat(ITEM_NAME_SUFFIX));\n\n if (sourceItem) {\n delete out[\"source\".concat(ITEM_NAME_SUFFIX)];\n } else {\n out.source = this.get(\"start\".concat(POINT_NAME_SUFFIX));\n }\n\n if (targetItem) {\n delete out[\"target\".concat(ITEM_NAME_SUFFIX)];\n } else {\n out.target = this.get(\"end\".concat(POINT_NAME_SUFFIX));\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.source) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.source)) {\n out.source = out.source.getID();\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.target) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.target)) {\n out.target = out.target.getID();\n }\n\n return out;\n };\n\n Edge.prototype.setSource = function (source) {\n this.setEnd('source', source);\n this.set('source', source);\n };\n\n Edge.prototype.setTarget = function (target) {\n this.setEnd('target', target);\n this.set('target', target);\n };\n\n Edge.prototype.getSource = function () {\n return this.get('source');\n };\n\n Edge.prototype.getTarget = function () {\n return this.get('target');\n };\n\n Edge.prototype.updatePosition = function () {\n return false;\n };\n /**\n * 边不需要重计算容器位置,直接重新计算 path 位置\n * @param {object} cfg 待更新数据\n */\n\n\n Edge.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model');\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n }\n\n Object.assign(model, cfg);\n this.updateShape(updateType);\n this.afterUpdate();\n this.clearCache();\n };\n\n Edge.prototype.destroy = function () {\n var sourceItem = this.get(\"source\".concat(ITEM_NAME_SUFFIX));\n var targetItem = this.get(\"target\".concat(ITEM_NAME_SUFFIX));\n\n if (sourceItem && !sourceItem.destroyed) {\n sourceItem.removeEdge(this);\n }\n\n if (targetItem && !targetItem.destroyed) {\n targetItem.removeEdge(this);\n }\n\n _super.prototype.destroy.call(this);\n };\n\n return Edge;\n}(_item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Edge);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2VkZ2UuanM/MzAwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUMrQjtBQUN2QztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUIsZ0NBQWdDOztBQUVoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGdFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRDs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOzs7QUFHckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxTQUFTLDJEQUFRLGlCQUFpQixnRUFBYTtBQUMvQztBQUNBOztBQUVBLFNBQVMsMkRBQVEsaUJBQWlCLGdFQUFhO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzREFBRztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaXRlbS9lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNQbGFpbk9iamVjdCwgaXNOaWwsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEl0ZW0gZnJvbSAnLi9pdGVtJztcbnZhciBFTkRfTUFQID0ge1xuICBzb3VyY2U6ICdzdGFydCcsXG4gIHRhcmdldDogJ2VuZCdcbn07XG52YXIgSVRFTV9OQU1FX1NVRkZJWCA9ICdOb2RlJzsgLy8g56uv54K555qE5ZCO57yA77yM5aaCIHNvdXJjZU5vZGUsIHRhcmdldE5vZGVcblxudmFyIFBPSU5UX05BTUVfU1VGRklYID0gJ1BvaW50JzsgLy8g6LW354K55oiW6ICF57uT5p2f54K555qE5ZCO57yA77yM5aaCIHN0YXJ0UG9pbnQsIGVuZFBvaW50XG5cbnZhciBBTkNIT1JfTkFNRV9TVUZGSVggPSAnQW5jaG9yJztcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRWRnZSwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBFZGdlKCkge1xuICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIEVkZ2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlZGdlJyxcbiAgICAgIHNvdXJjZU5vZGU6IG51bGwsXG4gICAgICB0YXJnZXROb2RlOiBudWxsLFxuICAgICAgc3RhcnRQb2ludDogbnVsbCxcbiAgICAgIGVuZFBvaW50OiBudWxsLFxuICAgICAgbGlua0NlbnRlcjogZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldEVuZCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHByZUl0ZW0gPSB0aGlzLmdldChpdGVtTmFtZSk7XG5cbiAgICBpZiAocHJlSXRlbSAmJiAhcHJlSXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIOWmguaenOS5i+WJjeWtmOWcqOiKgueCue+8jOWImeenu+mZpOaOiei+uVxuICAgICAgcHJlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgLy8g5aaC5p6c6K6+572u5oiQ5YW35L2T55qE54K577yM5YiZ5riF55CG6IqC54K5XG4gICAgICB0aGlzLnNldChwb2ludE5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KGl0ZW1OYW1lLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZS5hZGRFZGdlKHRoaXMpO1xuICAgICAgdGhpcy5zZXQoaXRlbU5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KHBvaW50TmFtZSwgbnVsbCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6I635Y+W6L+e5o6l54K555qE5Z2Q5qCHXG4gICAqIEBwYXJhbSBuYW1lIHNvdXJjZSB8IHRhcmdldFxuICAgKiBAcGFyYW0gbW9kZWwg6L6555qE5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSBjb250cm9sUG9pbnRzIOaOp+WItueCuVxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldExpbmtQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBtb2RlbCwgY29udHJvbFBvaW50cykge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50ID0gdGhpcy5nZXQocG9pbnROYW1lKTtcblxuICAgIGlmICghcG9pbnQpIHtcbiAgICAgIHZhciBpdGVtID0gdGhpcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgdmFyIGFuY2hvck5hbWUgPSBuYW1lICsgQU5DSE9SX05BTUVfU1VGRklYO1xuICAgICAgdmFyIHByZVBvaW50ID0gdGhpcy5nZXRQcmVQb2ludChuYW1lLCBjb250cm9sUG9pbnRzKTtcbiAgICAgIHZhciBhbmNob3JJbmRleCA9IG1vZGVsW2FuY2hvck5hbWVdO1xuXG4gICAgICBpZiAoIWlzTmlsKGFuY2hvckluZGV4KSkge1xuICAgICAgICAvLyDlpoLmnpzmnInplJrngrnvvIzliJnkvb/nlKjplJrngrnntKLlvJXojrflj5bov57mjqXngrlcbiAgICAgICAgcG9pbnQgPSBpdGVtLmdldExpbmtQb2ludEJ5QW5jaG9yKGFuY2hvckluZGV4KTtcbiAgICAgIH0gLy8g5aaC5p6c6ZSa54K55rKh5pyJ5a+55bqU55qE54K55oiW6ICF5rKh5pyJ6ZSa54K577yM5YiZ55u05o6l6K6h566X6L+e5o6l54K5XG5cblxuICAgICAgcG9pbnQgPSBwb2ludCB8fCBpdGVtLmdldExpbmtQb2ludChwcmVQb2ludCk7XG5cbiAgICAgIGlmICghaXNOaWwocG9pbnQuaW5kZXgpKSB7XG4gICAgICAgIHRoaXMuc2V0KFwiXCIuY29uY2F0KG5hbWUsIFwiQW5jaG9ySW5kZXhcIiksIHBvaW50LmluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnQ7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blkIznq6/ngrnov5vooYzov57mjqXnmoTngrnvvIzorqHnrpfkuqTmsYfngrlcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIGNvbnRyb2xQb2ludHNcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRQcmVQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBjb250cm9sUG9pbnRzKSB7XG4gICAgaWYgKGNvbnRyb2xQb2ludHMgJiYgY29udHJvbFBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciBpbmRleCA9IG5hbWUgPT09ICdzb3VyY2UnID8gMCA6IGNvbnRyb2xQb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgIHJldHVybiBjb250cm9sUG9pbnRzW2luZGV4XTtcbiAgICB9XG5cbiAgICB2YXIgb3Bwb3NpdGVOYW1lID0gbmFtZSA9PT0gJ3NvdXJjZScgPyAndGFyZ2V0JyA6ICdzb3VyY2UnOyAvLyDlj5blj6bkuIDkuKroioLngrnnmoTkvY3nva5cblxuICAgIHJldHVybiB0aGlzLmdldEVuZFBvaW50KG9wcG9zaXRlTmFtZSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bnq6/ngrnnmoTkvY3nva5cbiAgICogQHBhcmFtIG5hbWVcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRFbmRQb2ludCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCdtb2RlbCcpO1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuICAvKipcbiAgICog6YCa6L+H56uv54K555qE5Lit5b+D6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldENvbnRyb2xQb2ludHNCeUNlbnRlciA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzb3VyY2VQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3NvdXJjZScpO1xuICAgIHZhciB0YXJnZXRQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3RhcmdldCcpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHR5cGUgPSBtb2RlbC50eXBlO1xuICAgIHJldHVybiBzaGFwZUZhY3RvcnkuZ2V0Q29udHJvbFBvaW50cyh0eXBlLCB7XG4gICAgICBzdGFydFBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgIGVuZFBvaW50OiB0YXJnZXRQb2ludFxuICAgIH0pO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmdldEVuZENlbnRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJib3guY2VudGVyWCxcbiAgICAgICAgeTogYmJveC5jZW50ZXJZXG4gICAgICB9O1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgX3N1cGVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyk7IC8vIOWIneWni+WMluS4pOS4querr+eCuVxuXG5cbiAgICB0aGlzLnNldFNvdXJjZSh0aGlzLmdldCgnc291cmNlJykpO1xuICAgIHRoaXMuc2V0VGFyZ2V0KHRoaXMuZ2V0KCd0YXJnZXQnKSk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U2hhcGVDZmcgPSBmdW5jdGlvbiAobW9kZWwsIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxpbmtDZW50ZXIgPSBzZWxmLmdldCgnbGlua0NlbnRlcicpOyAvLyDlpoLmnpzov57mjqXliLDkuK3lv4PvvIzlv73op4bplJrngrnjgIHlv73op4bmjqfliLbngrlcblxuICAgIHZhciBjZmcgPSAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdtb3ZlJykpID8gbW9kZWwgOiBfc3VwZXIucHJvdG90eXBlLmdldFNoYXBlQ2ZnLmNhbGwodGhpcywgbW9kZWwpO1xuXG4gICAgaWYgKGxpbmtDZW50ZXIpIHtcbiAgICAgIGNmZy5zdGFydFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3NvdXJjZScpO1xuICAgICAgY2ZnLmVuZFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3RhcmdldCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udHJvbFBvaW50cyA9IGNmZy5jb250cm9sUG9pbnRzIHx8IHNlbGYuZ2V0Q29udHJvbFBvaW50c0J5Q2VudGVyKGNmZyk7XG4gICAgICBjZmcuc3RhcnRQb2ludCA9IHNlbGYuZ2V0TGlua1BvaW50KCdzb3VyY2UnLCBtb2RlbCwgY29udHJvbFBvaW50cyk7XG4gICAgICBjZmcuZW5kUG9pbnQgPSBzZWxmLmdldExpbmtQb2ludCgndGFyZ2V0JywgbW9kZWwsIGNvbnRyb2xQb2ludHMpO1xuICAgIH1cblxuICAgIGNmZy5zb3VyY2VOb2RlID0gc2VsZi5nZXQoJ3NvdXJjZU5vZGUnKTtcbiAgICBjZmcudGFyZ2V0Tm9kZSA9IHNlbGYuZ2V0KCd0YXJnZXROb2RlJyk7XG4gICAgcmV0dXJuIGNmZztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlui+ueeahOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldE1vZGVsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvdXQgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcblxuICAgIGlmIChzb3VyY2VJdGVtKSB7XG4gICAgICBkZWxldGUgb3V0W1wic291cmNlXCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0LnNvdXJjZSA9IHRoaXMuZ2V0KFwic3RhcnRcIi5jb25jYXQoUE9JTlRfTkFNRV9TVUZGSVgpKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0SXRlbSkge1xuICAgICAgZGVsZXRlIG91dFtcInRhcmdldFwiLmNvbmNhdChJVEVNX05BTUVfU1VGRklYKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC50YXJnZXQgPSB0aGlzLmdldChcImVuZFwiLmNvbmNhdChQT0lOVF9OQU1FX1NVRkZJWCkpO1xuICAgIH1cblxuICAgIGlmICghaXNTdHJpbmcob3V0LnNvdXJjZSkgJiYgIWlzUGxhaW5PYmplY3Qob3V0LnNvdXJjZSkpIHtcbiAgICAgIG91dC5zb3VyY2UgPSBvdXQuc291cmNlLmdldElEKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1N0cmluZyhvdXQudGFyZ2V0KSAmJiAhaXNQbGFpbk9iamVjdChvdXQudGFyZ2V0KSkge1xuICAgICAgb3V0LnRhcmdldCA9IG91dC50YXJnZXQuZ2V0SUQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldFNvdXJjZSA9IGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICB0aGlzLnNldEVuZCgnc291cmNlJywgc291cmNlKTtcbiAgICB0aGlzLnNldCgnc291cmNlJywgc291cmNlKTtcbiAgfTtcblxuICBFZGdlLnByb3RvdHlwZS5zZXRUYXJnZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdGhpcy5zZXRFbmQoJ3RhcmdldCcsIHRhcmdldCk7XG4gICAgdGhpcy5zZXQoJ3RhcmdldCcsIHRhcmdldCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U291cmNlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnc291cmNlJyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgndGFyZ2V0Jyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuICAvKipcbiAgICog6L655LiN6ZyA6KaB6YeN6K6h566X5a655Zmo5L2N572u77yM55u05o6l6YeN5paw6K6h566XIHBhdGgg5L2N572uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmcg5b6F5pu05paw5pWw5o2uXG4gICAqL1xuXG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZywgdXBkYXRlVHlwZSkge1xuICAgIGlmICh1cGRhdGVUeXBlID09PSB2b2lkIDApIHtcbiAgICAgIHVwZGF0ZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIG9yaVZpc2libGUgPSBtb2RlbC52aXNpYmxlO1xuICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgaWYgKG9yaVZpc2libGUgIT09IGNmZ1Zpc2libGUgJiYgY2ZnVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLmNoYW5nZVZpc2liaWxpdHkoY2ZnVmlzaWJsZSk7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChjZmcuc3RhdGVTdHlsZXMpIHtcbiAgICAgIC8vIOabtOaWsCBpdGVtIOaXtuabtOaWsCB0aGlzLmdldCgnc3R5bGVzJykg5Lit55qE5YC8XG4gICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICBtaXgoc3R5bGVzLCBzdGF0ZVN0eWxlcyk7XG4gICAgICBkZWxldGUgY2ZnLnN0YXRlU3R5bGVzO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24obW9kZWwsIGNmZyk7XG4gICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcblxuICAgIGlmIChzb3VyY2VJdGVtICYmICFzb3VyY2VJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgc291cmNlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRJdGVtICYmICF0YXJnZXRJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgdGFyZ2V0SXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBFZGdlO1xufShJdGVtKTtcblxuZXhwb3J0IGRlZmF1bHQgRWRnZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/edge.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/item/hull.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/item/hull.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/hull/convexHull */ \"./node_modules/@antv/g6-core/es/element/hull/convexHull.js\");\n/* harmony import */ var _element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/hull/bubbleset */ \"./node_modules/@antv/g6-core/es/element/hull/bubbleset.js\");\n\n\n\n\n\n\n\n/**\n * 用于包裹内部的成员的轮廓。\n * convex hull(凸包):http://geomalgorithms.com/a10-_hull-1.html#Monotone%20Chain\n * bubble: 使用 bubbleset算法,refer: http://vialab.science.uoit.ca/wp-content/papercite-data/pdf/col2009c.pdf\n * 通过配置 padding 可以调节包裹轮廓对节点的松紧程度\n */\n\nvar Hull =\n/** @class */\nfunction () {\n function Hull(graph, cfg) {\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.getDefaultCfg(), cfg);\n this.graph = graph;\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n }\n\n Hull.prototype.getDefaultCfg = function () {\n return {\n id: 'g6-hull',\n type: 'round-convex',\n members: [],\n nonMembers: [],\n style: {\n fill: 'lightblue',\n stroke: 'blue',\n opacity: 0.2\n },\n padding: 10\n };\n };\n\n Hull.prototype.setPadding = function () {\n var nodeSize = this.members.length && this.members[0].getKeyShape().getCanvasBBox().width / 2;\n this.padding = this.cfg.padding > 0 ? this.cfg.padding + nodeSize : 10 + nodeSize;\n this.cfg.bubbleCfg = {\n nodeR0: this.padding - nodeSize,\n nodeR1: this.padding - nodeSize,\n morphBuffer: this.padding - nodeSize\n };\n };\n\n Hull.prototype.setType = function () {\n this.type = this.cfg.type;\n\n if (this.members.length < 3) {\n this.type = 'round-convex';\n }\n\n if (this.type !== 'round-convex' && this.type !== 'smooth-convex' && this.type !== 'bubble') {\n console.warn('The hull type should be either round-convex, smooth-convex or bubble, round-convex is used by default.');\n this.type = 'round-convex';\n }\n };\n\n Hull.prototype.calcPath = function (members, nonMembers) {\n var contour, path, hull;\n\n switch (this.type) {\n case 'round-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n break;\n\n case 'smooth-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n\n if (contour.length === 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n } else if (contour.length > 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"paddedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(hull);\n }\n\n break;\n\n case 'bubble':\n contour = Object(_element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__[\"genBubbleSet\"])(members, nonMembers, this.cfg.bubbleCfg);\n path = contour.length >= 2 && Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(contour);\n break;\n\n default:\n }\n\n return path;\n };\n\n Hull.prototype.render = function () {\n this.group.addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: this.path\n }, this.cfg.style),\n id: this.id,\n name: this.cfg.id,\n capture: false\n });\n this.group.toBack();\n };\n /**\n * 增加hull的成员,同时如果该成员原先在nonMembers中,则从nonMembers中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.members.push(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 增加hull需要排除的节点,同时如果该成员原先在members中,则从members中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.nonMembers.push(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 移除hull中的成员\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n /**\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n\n Hull.prototype.updateData = function (members, nonMembers) {\n var _this = this;\n\n this.group.findById(this.id).remove();\n if (members) this.members = members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n if (nonMembers) this.nonMembers = nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n\n Hull.prototype.updateStyle = function (cfg) {\n var path = this.group.findById(this.id);\n path.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg));\n };\n /**\n * 更新 hull\n * @param cfg hull 配置项\n */\n\n\n Hull.prototype.updateCfg = function (cfg) {\n var _this = this;\n\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.cfg, cfg);\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n\n if (cfg.members) {\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n }\n\n if (cfg.nonMembers) {\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n } // TODO padding 设置太大,会影响到 contain 结果\n\n\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n /**\n * 判断是否在hull内部\n * @param item\n */\n\n\n Hull.prototype.contain = function (item) {\n var _this = this;\n\n var nodeItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n nodeItem = this.graph.findById(item);\n } else {\n nodeItem = item;\n }\n\n var shapePoints;\n var shape = nodeItem.getKeyShape();\n\n if (nodeItem.get('type') === 'path') {\n shapePoints = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n shapePoints = shapePoints.map(function (canvasPoint) {\n var point = _this.graph.getPointByCanvas(canvasPoint[0], canvasPoint[1]);\n\n return [point.x, point.y];\n });\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"isPolygonsIntersect\"])(shapePoints, Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(this.path));\n };\n\n Hull.prototype.destroy = function () {\n this.group.remove();\n this.cfg = null;\n };\n\n return Hull;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Hull);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2h1bGwuanM/YTU3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2M7QUFDRztBQUNvQztBQUNuQztBQUNRO0FBQ0Y7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwREFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFhO0FBQy9CLGVBQWUsOERBQVc7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsZUFBZSx1RUFBZTtBQUM5Qjs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBYTs7QUFFL0I7QUFDQSxpQkFBaUIsOERBQVc7QUFDNUI7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLHVFQUFlO0FBQ2hDLFNBQVM7QUFDVCxpQkFBaUIsNkRBQVU7QUFDM0I7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLGtFQUFlO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0Esa0JBQWtCLDRFQUFZO0FBQzlCLHNDQUFzQyxrRUFBZTtBQUNyRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHNEQUFRLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxlQUFlLDBEQUFPO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsMkRBQVE7QUFDdkIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxlQUFlLDJEQUFRO0FBQ3ZCLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsK0RBQVk7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLFdBQVcsc0VBQW1CLGNBQWMsK0RBQVk7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaXRlbS9odWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBwYXJzZVBhdGhTdHJpbmcgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgcGF0aFRvUG9pbnRzLCBnZXRDbG9zZWRTcGxpbmUsIHJvdW5kZWRIdWxsLCBwYWRkZWRIdWxsIH0gZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCB7IGlzUG9seWdvbnNJbnRlcnNlY3QgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHsgZ2VuQ29udmV4SHVsbCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9jb252ZXhIdWxsJztcbmltcG9ydCB7IGdlbkJ1YmJsZVNldCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9idWJibGVzZXQnO1xuLyoqXG4gKiDnlKjkuo7ljIXoo7nlhoXpg6jnmoTmiJDlkZjnmoTova7lu5PjgIJcbiAqIGNvbnZleCBodWxsKOWHuOWMhSnvvJpodHRwOi8vZ2VvbWFsZ29yaXRobXMuY29tL2ExMC1faHVsbC0xLmh0bWwjTW9ub3RvbmUlMjBDaGFpblxuICogYnViYmxlOiDkvb/nlKggYnViYmxlc2V0566X5rOV77yMcmVmZXI6IGh0dHA6Ly92aWFsYWIuc2NpZW5jZS51b2l0LmNhL3dwLWNvbnRlbnQvcGFwZXJjaXRlLWRhdGEvcGRmL2NvbDIwMDljLnBkZlxuICog6YCa6L+H6YWN572uIHBhZGRpbmcg5Y+v5Lul6LCD6IqC5YyF6KO56L2u5buT5a+56IqC54K555qE5p2+57Sn56iL5bqmXG4gKi9cblxudmFyIEh1bGwgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBIdWxsKGdyYXBoLCBjZmcpIHtcbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuaWQgPSB0aGlzLmNmZy5pZDtcbiAgICB0aGlzLmdyb3VwID0gdGhpcy5jZmcuZ3JvdXA7XG4gICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpc1N0cmluZyhpdGVtKSA/IGdyYXBoLmZpbmRCeUlkKGl0ZW0pIDogaXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0UGFkZGluZygpO1xuICAgIHRoaXMuc2V0VHlwZSgpO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBIdWxsLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogJ2c2LWh1bGwnLFxuICAgICAgdHlwZTogJ3JvdW5kLWNvbnZleCcsXG4gICAgICBtZW1iZXJzOiBbXSxcbiAgICAgIG5vbk1lbWJlcnM6IFtdLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogJ2xpZ2h0Ymx1ZScsXG4gICAgICAgIHN0cm9rZTogJ2JsdWUnLFxuICAgICAgICBvcGFjaXR5OiAwLjJcbiAgICAgIH0sXG4gICAgICBwYWRkaW5nOiAxMFxuICAgIH07XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuc2V0UGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZVNpemUgPSB0aGlzLm1lbWJlcnMubGVuZ3RoICYmIHRoaXMubWVtYmVyc1swXS5nZXRLZXlTaGFwZSgpLmdldENhbnZhc0JCb3goKS53aWR0aCAvIDI7XG4gICAgdGhpcy5wYWRkaW5nID0gdGhpcy5jZmcucGFkZGluZyA+IDAgPyB0aGlzLmNmZy5wYWRkaW5nICsgbm9kZVNpemUgOiAxMCArIG5vZGVTaXplO1xuICAgIHRoaXMuY2ZnLmJ1YmJsZUNmZyA9IHtcbiAgICAgIG5vZGVSMDogdGhpcy5wYWRkaW5nIC0gbm9kZVNpemUsXG4gICAgICBub2RlUjE6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplLFxuICAgICAgbW9ycGhCdWZmZXI6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplXG4gICAgfTtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5zZXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMuY2ZnLnR5cGU7XG5cbiAgICBpZiAodGhpcy5tZW1iZXJzLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRoaXMudHlwZSA9ICdyb3VuZC1jb252ZXgnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdyb3VuZC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ3Ntb290aC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ2J1YmJsZScpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGh1bGwgdHlwZSBzaG91bGQgYmUgZWl0aGVyIHJvdW5kLWNvbnZleCwgc21vb3RoLWNvbnZleCBvciBidWJibGUsIHJvdW5kLWNvbnZleCBpcyB1c2VkIGJ5IGRlZmF1bHQuJyk7XG4gICAgICB0aGlzLnR5cGUgPSAncm91bmQtY29udmV4JztcbiAgICB9XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuY2FsY1BhdGggPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBjb250b3VyLCBwYXRoLCBodWxsO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3JvdW5kLWNvbnZleCc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5Db252ZXhIdWxsKG1lbWJlcnMpO1xuICAgICAgICBodWxsID0gcm91bmRlZEh1bGwoY29udG91ci5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgfSksIHRoaXMucGFkZGluZyk7XG4gICAgICAgIHBhdGggPSBwYXJzZVBhdGhTdHJpbmcoaHVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzbW9vdGgtY29udmV4JzpcbiAgICAgICAgY29udG91ciA9IGdlbkNvbnZleEh1bGwobWVtYmVycyk7XG5cbiAgICAgICAgaWYgKGNvbnRvdXIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaHVsbCA9IHJvdW5kZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gcGFyc2VQYXRoU3RyaW5nKGh1bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRvdXIubGVuZ3RoID4gMikge1xuICAgICAgICAgIGh1bGwgPSBwYWRkZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gZ2V0Q2xvc2VkU3BsaW5lKGh1bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2J1YmJsZSc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgdGhpcy5jZmcuYnViYmxlQ2ZnKTtcbiAgICAgICAgcGF0aCA9IGNvbnRvdXIubGVuZ3RoID49IDIgJiYgZ2V0Q2xvc2VkU3BsaW5lKGNvbnRvdXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgfSwgdGhpcy5jZmcuc3R5bGUpLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBuYW1lOiB0aGlzLmNmZy5pZCxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5ncm91cC50b0JhY2soKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWinuWKoGh1bGznmoTmiJDlkZjvvIzlkIzml7blpoLmnpzor6XmiJDlkZjljp/lhYjlnKhub25NZW1iZXJz5Lit77yM5YiZ5LuObm9uTWVtYmVyc+S4reWOu+aOiVxuICAgKiBAcGFyYW0gaXRlbSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOa3u+WKoOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUuYWRkTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHRoaXMubWVtYmVycy5wdXNoKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubm9uTWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubm9uTWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGF0YSh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlop7liqBodWxs6ZyA6KaB5o6S6Zmk55qE6IqC54K577yM5ZCM5pe25aaC5p6c6K+l5oiQ5ZGY5Y6f5YWI5ZyobWVtYmVyc+S4re+8jOWImeS7jm1lbWJlcnPkuK3ljrvmjolcbiAgICogQHBhcmFtIGl0ZW0g6IqC54K55a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIEh1bGwucHJvdG90eXBlLmFkZE5vbk1lbWJlciA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBpdGVtID0gdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB0aGlzLm5vbk1lbWJlcnMucHVzaChpdGVtKTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLm1lbWJlcnMuaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm1lbWJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog56e76ZmkaHVsbOS4reeahOaIkOWRmFxuICAgKiBAcGFyYW0gbm9kZSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOenu+mZpOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUucmVtb3ZlTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGRhdGVEYXRhKHRoaXMubWVtYmVycywgdGhpcy5ub25NZW1iZXJzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5yZW1vdmVOb25NZW1iZXIgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5ub25NZW1iZXJzLmluZGV4T2YoaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5ub25NZW1iZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIEh1bGwucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpLnJlbW92ZSgpO1xuICAgIGlmIChtZW1iZXJzKSB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIGlmIChub25NZW1iZXJzKSB0aGlzLm5vbk1lbWJlcnMgPSBub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlU3R5bGUgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpO1xuICAgIHBhdGguYXR0cihfX2Fzc2lnbih7fSwgY2ZnKSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgaHVsbFxuICAgKiBAcGFyYW0gY2ZnIGh1bGwg6YWN572u6aG5XG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlQ2ZnID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5jZmcsIGNmZyk7XG4gICAgdGhpcy5pZCA9IHRoaXMuY2ZnLmlkO1xuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmNmZy5ncm91cDtcblxuICAgIGlmIChjZmcubWVtYmVycykge1xuICAgICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNmZy5ub25NZW1iZXJzKSB7XG4gICAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoaXRlbSkgPyBfdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKSA6IGl0ZW07XG4gICAgICB9KTtcbiAgICB9IC8vIFRPRE8gcGFkZGluZyDorr7nva7lpKrlpKfvvIzkvJrlvbHlk43liLAgY29udGFpbiDnu5PmnpxcblxuXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XG4gICAgdGhpcy5zZXRUeXBlKCk7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5jYWxjUGF0aCh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreaYr+WQpuWcqGh1bGzlhoXpg6hcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5jb250YWluID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBub2RlSXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgc2hhcGVQb2ludHM7XG4gICAgdmFyIHNoYXBlID0gbm9kZUl0ZW0uZ2V0S2V5U2hhcGUoKTtcblxuICAgIGlmIChub2RlSXRlbS5nZXQoJ3R5cGUnKSA9PT0gJ3BhdGgnKSB7XG4gICAgICBzaGFwZVBvaW50cyA9IHBhdGhUb1BvaW50cyhzaGFwZS5hdHRyKCdwYXRoJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2hhcGVCQm94ID0gc2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgc2hhcGVQb2ludHMgPSBbW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWluWV0sIFtzaGFwZUJCb3gubWF4WCwgc2hhcGVCQm94Lm1pblldLCBbc2hhcGVCQm94Lm1heFgsIHNoYXBlQkJveC5tYXhZXSwgW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWF4WV1dO1xuICAgIH1cblxuICAgIHNoYXBlUG9pbnRzID0gc2hhcGVQb2ludHMubWFwKGZ1bmN0aW9uIChjYW52YXNQb2ludCkge1xuICAgICAgdmFyIHBvaW50ID0gX3RoaXMuZ3JhcGguZ2V0UG9pbnRCeUNhbnZhcyhjYW52YXNQb2ludFswXSwgY2FudmFzUG9pbnRbMV0pO1xuXG4gICAgICByZXR1cm4gW3BvaW50LngsIHBvaW50LnldO1xuICAgIH0pO1xuICAgIHJldHVybiBpc1BvbHlnb25zSW50ZXJzZWN0KHNoYXBlUG9pbnRzLCBwYXRoVG9Qb2ludHModGhpcy5wYXRoKSk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyb3VwLnJlbW92ZSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgfTtcblxuICByZXR1cm4gSHVsbDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgSHVsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/hull.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/item/item.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/item/item.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _element_shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar ARROWS = ['startArrow', 'endArrow'];\n\nvar ItemBase =\n/** @class */\nfunction () {\n function ItemBase(cfg) {\n this._cfg = {};\n this.destroyed = false;\n var defaultCfg = {\n /**\n * id\n * @type {string}\n */\n id: undefined,\n\n /**\n * 类型\n * @type {string}\n */\n type: 'item',\n\n /**\n * data model\n * @type {object}\n */\n model: {},\n\n /**\n * g group\n * @type {G.Group}\n */\n group: undefined,\n\n /**\n * is open animate\n * @type {boolean}\n */\n animate: false,\n\n /**\n * visible - not group visible\n * @type {boolean}\n */\n visible: true,\n\n /**\n * locked - lock node\n * @type {boolean}\n */\n locked: false,\n\n /**\n * capture event\n * @type {boolean}\n */\n event: true,\n\n /**\n * key shape to calculate item's bbox\n * @type object\n */\n keyShape: undefined,\n\n /**\n * item's states, such as selected or active\n * @type Array\n */\n states: []\n };\n this._cfg = Object.assign(defaultCfg, this.getDefaultCfg(), cfg);\n var model = this.get('model');\n var id = model.id;\n var itemType = this.get('type');\n\n if (!id) {\n id = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])(itemType);\n this.get('model').id = id;\n }\n\n this.set('id', id);\n var group = cfg.group;\n\n if (group) {\n group.set('item', this);\n group.set('id', id);\n }\n\n this.init();\n this.draw();\n var shapeType = model.shape || model.type || (itemType === 'edge' ? 'line' : 'circle');\n var shapeFactory = this.get('shapeFactory');\n\n if (shapeFactory && shapeFactory[shapeType]) {\n var options = shapeFactory[shapeType].options; // merge the stateStyles from item and shape\n\n if (options && options.stateStyles) {\n var styles = this.get('styles') || model.stateStyles;\n styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, options.stateStyles, styles);\n this.set('styles', styles);\n }\n }\n }\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateCanvasBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.drawInner = function () {\n var self = this;\n var shapeFactory = self.get('shapeFactory');\n var group = self.get('group');\n var model = self.get('model');\n group.clear();\n var visible = model.visible;\n if (visible !== undefined && !visible) self.changeVisibility(visible);\n\n if (!shapeFactory) {\n return;\n }\n\n self.updatePosition(model);\n var cfg = self.getShapeCfg(model); // 可能会附加额外信息\n\n var shapeType = cfg.type;\n var keyShape = shapeFactory.draw(shapeType, cfg, group);\n\n if (keyShape) {\n self.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n }\n\n this.setOriginStyle(); // 防止由于用户外部修改 model 中的 shape 导致 shape 不更新\n\n this.set('currentShape', shapeType);\n this.restoreStates(shapeFactory, shapeType);\n };\n /**\n * 设置图元素原始样式\n * @param keyShape 图元素 keyShape\n * @param group Group 容器\n */\n\n\n ItemBase.prototype.setOriginStyle = function () {\n var group = this.get('group');\n var children = group.get('children');\n var keyShape = this.getKeyShape();\n var self = this;\n var keyShapeName = keyShape.get('name');\n\n if (!this.get('originStyle')) {\n // 第一次 set originStyle,直接拿首次渲染所有图形的 attrs\n var originStyles = {};\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var shapeType = child.get('type');\n var name_1 = child.get('name');\n\n if (name_1 && name_1 !== keyShapeName) {\n originStyles[name_1] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1); // The text's position and matrix is not allowed to be affected by states\n\n if (shapeType === 'text' && originStyles[name_1]) {\n delete originStyles[name_1].x;\n delete originStyles[name_1].y;\n delete originStyles[name_1].matrix;\n }\n } else {\n var keyShapeStyle = self.getShapeStyleByName(); // 可优化,需要去除 child.attr 中其他 shape 名的对象\n\n delete keyShapeStyle.path;\n delete keyShapeStyle.matrix;\n\n if (!keyShapeName) {\n Object.assign(originStyles, keyShapeStyle);\n } else {\n // 若 keyShape 有 name 且 !name,这个图形不是 keyShape,给这个图形一个 name\n if (!name_1) {\n var shapeName = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])('shape');\n child.set('name', shapeName);\n group['shapeMap'][shapeName] = child;\n originStyles[shapeName] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1);\n } else {\n originStyles[keyShapeName] = keyShapeStyle;\n }\n }\n }\n }\n\n self.set('originStyle', originStyles);\n } else {\n // 第二次 set originStyles,需要找到不是 stateStyles 的样式,更新到 originStyles 中\n // 上一次设置的 originStyle,是初始的 shape attrs\n var styles_1 = this.get('originStyle'); // let styles: ShapeStyle = {};\n\n if (keyShapeName && !styles_1[keyShapeName]) styles_1[keyShapeName] = {}; // 获取当前状态样式\n\n var currentStatesStyle_1 = this.getCurrentStatesStyle();\n\n var _loop_1 = function _loop_1(i) {\n var child = children[i];\n var name_2 = child.get('name');\n var shapeAttrs = child.attr();\n\n if (name_2 && name_2 !== keyShapeName) {\n // 有 name 的非 keyShape 图形\n var shapeStateStyle_1 = currentStatesStyle_1[name_2];\n if (!styles_1[name_2]) styles_1[name_2] = {};\n\n if (shapeStateStyle_1) {\n Object.keys(shapeAttrs).forEach(function (key) {\n var value = shapeAttrs[key];\n if (value !== shapeStateStyle_1[key]) styles_1[name_2][key] = value;\n });\n } else {\n styles_1[name_2] = child.get('type') !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(shapeAttrs) : self.getShapeStyleByName(name_2);\n }\n } else {\n var shapeAttrs_1 = child.attr();\n var keyShapeStateStyles_1 = {};\n Object.keys(currentStatesStyle_1).forEach(function (styleKey) {\n var subStyle = currentStatesStyle_1[styleKey];\n\n if (styleKey === keyShapeName || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(subStyle)) {\n keyShapeStateStyles_1[styleKey] = subStyle;\n }\n });\n Object.keys(shapeAttrs_1).forEach(function (key) {\n var value = shapeAttrs_1[key]; // 如果是对象且不是 arrow,则是其他 shape 的样式\n // if (isPlainObject(value) && ARROWS.indexOf(name) === -1) return;\n\n if (keyShapeStateStyles_1[key] !== value) {\n if (keyShapeName) styles_1[keyShapeName][key] = value;else styles_1[key] = value;\n }\n });\n }\n }; // 遍历当前所有图形的 attrs,找到不是 stateStyles 的样式更新到 originStyles 中\n\n\n for (var i = 0; i < children.length; i++) {\n _loop_1(i);\n }\n\n delete styles_1.path;\n delete styles_1.matrix;\n delete styles_1.x;\n delete styles_1.y;\n\n if (styles_1[keyShapeName]) {\n delete styles_1[keyShapeName].x;\n delete styles_1[keyShapeName].y;\n delete styles_1[keyShapeName].matrix;\n delete styles_1[keyShapeName].path;\n }\n\n self.set('originStyle', styles_1);\n }\n };\n /**\n * restore shape states\n * @param shapeFactory\n * @param shapeType\n */\n\n\n ItemBase.prototype.restoreStates = function (shapeFactory, shapeType) {\n var self = this;\n var states = self.get('states');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(states, function (state) {\n shapeFactory.setState(shapeType, state, true, self);\n });\n };\n\n ItemBase.prototype.init = function () {\n var shapeFactory = _element_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getFactory(this.get('type'));\n this.set('shapeFactory', shapeFactory);\n };\n /**\n * 获取属性\n * @internal 仅内部类使用\n * @param {String} key 属性名\n * @return {object | string | number} 属性值\n */\n\n\n ItemBase.prototype.get = function (key) {\n return this._cfg[key];\n };\n /**\n * 设置属性\n * @internal 仅内部类使用\n * @param {String|Object} key 属性名,也可以是对象\n * @param {object | string | number} val 属性值\n */\n\n\n ItemBase.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(key)) {\n this._cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this._cfg), key);\n } else {\n this._cfg[key] = val;\n }\n };\n\n ItemBase.prototype.getDefaultCfg = function () {\n return {};\n };\n /**\n * 更新/刷新等操作后,清除 cache\n */\n\n\n ItemBase.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null);\n this.set(CACHE_CANVAS_BBOX, null);\n };\n /**\n * 渲染前的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.beforeDraw = function () {};\n /**\n * 渲染后的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.afterDraw = function () {};\n /**\n * 更新后做一些工作\n */\n\n\n ItemBase.prototype.afterUpdate = function () {};\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.draw = function () {\n this.beforeDraw();\n this.drawInner();\n this.afterDraw();\n };\n\n ItemBase.prototype.getShapeStyleByName = function (name) {\n var group = this.get('group');\n var currentShape;\n\n if (name) {\n currentShape = group['shapeMap'][name]; // group.find((element) => element.get('name') === name) as IShapeBase;\n } else {\n currentShape = this.getKeyShape();\n }\n\n if (currentShape) {\n var styles_2 = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(currentShape.attr(), function (val, key) {\n // 修改 img 通过 updateItem 实现\n if (key !== 'img' || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(val)) {\n styles_2[key] = val;\n }\n });\n return styles_2;\n }\n\n return {};\n };\n\n ItemBase.prototype.getShapeCfg = function (model, updateType) {\n var styles = this.get('styles');\n\n if (styles) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style);\n return newModel;\n }\n\n return model;\n };\n /**\n * 获取指定状态的样式,去除了全局样式\n * @param state 状态名称\n */\n\n\n ItemBase.prototype.getStateStyle = function (state) {\n var styles = this.get('styles');\n var stateStyle = styles && styles[state];\n return stateStyle;\n };\n /**\n * get keyshape style\n */\n\n\n ItemBase.prototype.getOriginStyle = function () {\n return this.get('originStyle');\n };\n\n ItemBase.prototype.getCurrentStatesStyle = function () {\n var self = this;\n var styles = {};\n var states = self.getStates();\n\n if (!states || !states.length) {\n return this.get('originStyle');\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(self.getStates(), function (state) {\n styles = Object.assign(styles, self.getStateStyle(state));\n });\n return styles;\n };\n /**\n * 更改元素状态, visible 不属于这个范畴\n * @internal 仅提供内部类 graph 使用\n * @param {String} state 状态名\n * @param {Boolean} value 节点状态值\n */\n\n\n ItemBase.prototype.setState = function (state, value) {\n var states = this.get('states');\n var shapeFactory = this.get('shapeFactory');\n var stateName = state;\n var filterStateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = \"\".concat(state, \":\").concat(value);\n filterStateName = \"\".concat(state, \":\");\n }\n\n var newStates = states;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isBoolean\"])(value)) {\n var index = states.indexOf(filterStateName);\n\n if (value) {\n if (index > -1) {\n return;\n }\n\n states.push(stateName);\n } else if (index > -1) {\n states.splice(index, 1);\n }\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n // 过滤掉 states 中 filterStateName 相关的状态\n var filterStates = states.filter(function (name) {\n return name.includes(filterStateName);\n });\n\n if (filterStates.length > 0) {\n this.clearStates(filterStates);\n }\n\n newStates = newStates.filter(function (name) {\n return !name.includes(filterStateName);\n });\n newStates.push(stateName);\n this.set('states', newStates);\n }\n\n if (shapeFactory) {\n var model = this.get('model');\n var type = model.type; // 调用 shape/shape.ts 中的 setState\n\n shapeFactory.setState(type, state, value, this);\n }\n };\n /**\n * 清除指定的状态,如果参数为空,则不做任务处理\n * @param states 状态名称\n */\n\n\n ItemBase.prototype.clearStates = function (states) {\n var self = this;\n var originStates = self.getStates();\n var shapeFactory = self.get('shapeFactory');\n var model = self.get('model');\n var shape = model.type;\n\n if (!states) {\n states = originStates;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(states)) {\n states = [states];\n }\n\n var newStates = originStates.filter(function (state) {\n return states.indexOf(state) === -1;\n });\n self.set('states', newStates);\n states.forEach(function (state) {\n shapeFactory.setState(shape, state, false, self);\n });\n };\n /**\n * 节点的图形容器\n * @return {G.Group} 图形容器\n */\n\n\n ItemBase.prototype.getContainer = function () {\n return this.get('group');\n };\n /**\n * 节点的关键形状,用于计算节点大小,连线截距等\n * @return {IShapeBase} 关键形状\n */\n\n\n ItemBase.prototype.getKeyShape = function () {\n return this.get('keyShape');\n };\n /**\n * 节点数据模型\n * @return {Object} 数据模型\n */\n\n\n ItemBase.prototype.getModel = function () {\n return this.get('model');\n };\n /**\n * 节点类型\n * @return {string} 节点的类型\n */\n\n\n ItemBase.prototype.getType = function () {\n return this.get('type');\n };\n /**\n * 获取 Item 的ID\n */\n\n\n ItemBase.prototype.getID = function () {\n return this.get('id');\n };\n /**\n * 是否是 Item 对象,悬空边情况下进行判定\n */\n\n\n ItemBase.prototype.isItem = function () {\n return true;\n };\n /**\n * 获取当前元素的所有状态\n * @return {Array} 元素的所有状态\n */\n\n\n ItemBase.prototype.getStates = function () {\n return this.get('states');\n };\n /**\n * 当前元素是否处于某状态\n * @param {String} state 状态名\n * @return {Boolean} 是否处于某状态\n */\n\n\n ItemBase.prototype.hasState = function (state) {\n var states = this.getStates();\n return states.indexOf(state) >= 0;\n };\n /**\n * 刷新一般用于处理几种情况\n * 1. item model 在外部被改变\n * 2. 边的节点位置发生改变,需要重新计算边\n *\n * 因为数据从外部被修改无法判断一些属性是否被修改,直接走位置和 shape 的更新\n */\n\n\n ItemBase.prototype.refresh = function (updateType) {\n var model = this.get('model'); // 更新元素位置\n\n this.updatePosition(model); // 更新元素内容,样式\n\n this.updateShape(updateType); // 做一些更新之后的操作\n\n this.afterUpdate(); // 清除缓存\n\n this.clearCache();\n };\n\n ItemBase.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 将更新应用到 model 上,刷新属性\n * @internal 仅提供给 Graph 使用,外部直接调用 graph.update 接口\n * @param {Object} cfg 配置项,可以是增量信息\n */\n\n\n ItemBase.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model'); // 仅仅移动位置时,既不更新,也不重绘\n\n if (updateType === 'move') {\n this.updatePosition(cfg);\n } else {\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var originPosition = {\n x: model.x,\n y: model.y\n };\n cfg.x = isNaN(+cfg.x) ? model.x : +cfg.x;\n cfg.y = isNaN(+cfg.y) ? model.y : +cfg.y;\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n } // 直接将更新合到原数据模型上,可以保证用户在外部修改源数据然后刷新时的样式符合期待。\n\n\n Object.assign(model, cfg); // 如果 x,y 有变化,先重置位置\n\n if (originPosition.x !== cfg.x || originPosition.y !== cfg.y) {\n this.updatePosition(cfg);\n }\n\n this.updateShape(updateType);\n }\n\n this.afterUpdate();\n this.clearCache();\n };\n /**\n * 更新元素内容,样式\n */\n\n\n ItemBase.prototype.updateShape = function (updateType) {\n var shapeFactory = this.get('shapeFactory');\n var model = this.get('model');\n var shape = model.type; // 判定是否允许更新\n // 1. 注册的节点允许更新\n // 2. 更新后的 shape 等于原先的 shape\n\n if (shapeFactory.shouldUpdate(shape) && shape === this.get('currentShape')) {\n var updateCfg = this.getShapeCfg(model, updateType);\n shapeFactory.baseUpdate(shape, updateCfg, this, updateType); // 更新完以后重新设置原始样式\n\n if (updateType !== 'move') this.setOriginStyle();\n } else {\n // 如果不满足上面两种状态,重新绘制\n this.draw();\n } // 更新后重置节点状态\n\n\n this.restoreStates(shapeFactory, shape);\n };\n /**\n * 更新位置,避免整体重绘\n * @param {object} cfg 待更新数据\n */\n\n\n ItemBase.prototype.updatePosition = function (cfg) {\n var model = this.get('model');\n var x = isNaN(+cfg.x) ? +model.x : +cfg.x;\n var y = isNaN(+cfg.y) ? +model.y : +cfg.y;\n var group = this.get('group');\n\n if (isNaN(x) || isNaN(y)) {\n return false;\n }\n\n model.x = x;\n model.y = y;\n var matrix = group.getMatrix();\n if (matrix && matrix[6] === x && matrix[7] === y) return false;\n group.resetMatrix(); // G 4.0 element 中移除了矩阵相关方法,详见https://www.yuque.com/antv/blog/kxzk9g#4rMMV\n\n Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"translate\"])(group, {\n x: x,\n y: y\n });\n this.clearCache(); // 位置更新后需要清除缓存\n\n return true;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_BBOX);\n\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set(CACHE_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 获取 item 相对于画布的包围盒,会将从顶层到当前元素的 matrix 都计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getCanvasBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_CANVAS_BBOX);\n\n if (!bbox) {\n bbox = this.calculateCanvasBBox();\n this.set(CACHE_CANVAS_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 将元素放到最前面\n */\n\n\n ItemBase.prototype.toFront = function () {\n var group = this.get('group');\n group.toFront();\n };\n /**\n * 将元素放到最后面\n */\n\n\n ItemBase.prototype.toBack = function () {\n var group = this.get('group');\n group.toBack();\n };\n /**\n * 显示元素\n */\n\n\n ItemBase.prototype.show = function () {\n this.changeVisibility(true);\n };\n /**\n * 隐藏元素\n */\n\n\n ItemBase.prototype.hide = function () {\n this.changeVisibility(false);\n };\n /**\n * 更改是否显示\n * @param {Boolean} visible 是否显示\n */\n\n\n ItemBase.prototype.changeVisibility = function (visible) {\n var group = this.get('group');\n\n if (visible) {\n group.show();\n } else {\n group.hide();\n }\n\n this.set('visible', visible);\n };\n /**\n * 元素是否可见\n * @return {Boolean} 返回该元素是否可见\n */\n\n\n ItemBase.prototype.isVisible = function () {\n return this.get('visible');\n };\n /**\n * 是否拾取及出发该元素的交互事件\n * @param {Boolean} enable 标识位\n */\n\n\n ItemBase.prototype.enableCapture = function (enable) {\n var group = this.get('group');\n\n if (group) {\n group.set('capture', enable);\n }\n };\n\n ItemBase.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return ItemBase;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemBase);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2l0ZW0uanM/NDI1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUMwRDtBQUN0RDtBQUNLO0FBQ0Q7QUFDRDtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsMkRBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0RBQW9EOztBQUVwRDtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFPLEdBQUc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLGVBQWUsNkRBQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsZUFBZSw2REFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCx3REFBSyxrREFBa0Q7O0FBRWhIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseURBQXlEOztBQUV6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLDhCQUE4QiwyREFBUTtBQUN0QztBQUNBO0FBQ0EsZ0VBQWdFLHdEQUFLO0FBQ3JFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDLCtFQUErRTs7QUFFL0U7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLCtEQUErRCx3REFBSztBQUNwRTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEMsZ0VBQWE7QUFDM0Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBLFdBQVc7QUFDWDtBQUNBLFFBQVE7OztBQUdSLHFCQUFxQixxQkFBcUI7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyx5QkFBeUI7QUFDdkM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQixhQUFhLHlCQUF5QjtBQUN0Qzs7O0FBR0E7QUFDQSxRQUFRLGdFQUFhO0FBQ3JCLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw0REFBUztBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSyxVQUFVLDJEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxrQ0FBa0M7O0FBRWxDLCtCQUErQjs7QUFFL0IsaUNBQWlDOztBQUVqQyx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzREFBRztBQUNYO0FBQ0EsT0FBTzs7O0FBR1AsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrRUFBa0U7O0FBRWxFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLElBQUksNERBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaXRlbS9pdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nLCBpc0Jvb2xlYW4sIG1peCwgZGVlcE1peCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9lbGVtZW50L3NoYXBlJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnLi4vdXRpbC9iYXNlJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBBUlJPV1MgPSBbJ3N0YXJ0QXJyb3cnLCAnZW5kQXJyb3cnXTtcblxudmFyIEl0ZW1CYXNlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSXRlbUJhc2UoY2ZnKSB7XG4gICAgdGhpcy5fY2ZnID0ge307XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgZGVmYXVsdENmZyA9IHtcbiAgICAgIC8qKlxuICAgICAgICogaWRcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgIGlkOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICog57G75Z6LXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICB0eXBlOiAnaXRlbScsXG5cbiAgICAgIC8qKlxuICAgICAgICogZGF0YSBtb2RlbFxuICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgbW9kZWw6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIGcgZ3JvdXBcbiAgICAgICAqIEB0eXBlIHtHLkdyb3VwfVxuICAgICAgICovXG4gICAgICBncm91cDogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIGlzIG9wZW4gYW5pbWF0ZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHZpc2libGUgLSBub3QgZ3JvdXAgdmlzaWJsZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIHZpc2libGU6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogbG9ja2VkIC0gbG9jayBub2RlXG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgbG9ja2VkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBjYXB0dXJlIGV2ZW50XG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICoga2V5IHNoYXBlIHRvIGNhbGN1bGF0ZSBpdGVtJ3MgYmJveFxuICAgICAgICogQHR5cGUgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIGtleVNoYXBlOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogaXRlbSdzIHN0YXRlcywgc3VjaCBhcyBzZWxlY3RlZCBvciBhY3RpdmVcbiAgICAgICAqIEB0eXBlIEFycmF5XG4gICAgICAgKi9cbiAgICAgIHN0YXRlczogW11cbiAgICB9O1xuICAgIHRoaXMuX2NmZyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdENmZywgdGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIGlkID0gbW9kZWwuaWQ7XG4gICAgdmFyIGl0ZW1UeXBlID0gdGhpcy5nZXQoJ3R5cGUnKTtcblxuICAgIGlmICghaWQpIHtcbiAgICAgIGlkID0gdW5pcXVlSWQoaXRlbVR5cGUpO1xuICAgICAgdGhpcy5nZXQoJ21vZGVsJykuaWQgPSBpZDtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnaWQnLCBpZCk7XG4gICAgdmFyIGdyb3VwID0gY2ZnLmdyb3VwO1xuXG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBncm91cC5zZXQoJ2l0ZW0nLCB0aGlzKTtcbiAgICAgIGdyb3VwLnNldCgnaWQnLCBpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5kcmF3KCk7XG4gICAgdmFyIHNoYXBlVHlwZSA9IG1vZGVsLnNoYXBlIHx8IG1vZGVsLnR5cGUgfHwgKGl0ZW1UeXBlID09PSAnZWRnZScgPyAnbGluZScgOiAnY2lyY2xlJyk7XG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcblxuICAgIGlmIChzaGFwZUZhY3RvcnkgJiYgc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pIHtcbiAgICAgIHZhciBvcHRpb25zID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0ub3B0aW9uczsgLy8gbWVyZ2UgdGhlIHN0YXRlU3R5bGVzIGZyb20gaXRlbSBhbmQgc2hhcGVcblxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZVN0eWxlcykge1xuICAgICAgICB2YXIgc3R5bGVzID0gdGhpcy5nZXQoJ3N0eWxlcycpIHx8IG1vZGVsLnN0YXRlU3R5bGVzO1xuICAgICAgICBzdHlsZXMgPSBkZWVwTWl4KHt9LCBvcHRpb25zLnN0YXRlU3R5bGVzLCBzdHlsZXMpO1xuICAgICAgICB0aGlzLnNldCgnc3R5bGVzJywgc3R5bGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2FsY3VsYXRlQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgIGJib3guaGVpZ2h0ID0gYmJveC5tYXhZIC0gYmJveC5taW5ZO1xuICAgIGJib3guY2VudGVyWCA9IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMjtcbiAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4ga2V5c2hhcGUg6K6h566X5YyF5Zu055uSXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNhbGN1bGF0ZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7IC8vIOWboOS4uiBncm91cCDlj6/og73kvJrnp7vliqjvvIzmiYDku6Xlv4XpobvpgJrov4fniLblhYPntKDorqHnrpfmiY3og73orqHnrpflh7rmraPnoa7nmoTljIXlm7Tnm5JcblxuICAgIHZhciBiYm94ID0gZ2V0QkJveChrZXlTaGFwZSwgZ3JvdXApO1xuICAgIGJib3gueCA9IGJib3gubWluWDtcbiAgICBiYm94LnkgPSBiYm94Lm1pblk7XG4gICAgYmJveC53aWR0aCA9IGJib3gubWF4WCAtIGJib3gubWluWDtcbiAgICBiYm94LmhlaWdodCA9IGJib3gubWF4WSAtIGJib3gubWluWTtcbiAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgYmJveC5jZW50ZXJZID0gKGJib3gubWluWSArIGJib3gubWF4WSkgLyAyO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuICAvKipcbiAgICogZHJhdyBzaGFwZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5kcmF3SW5uZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIGdyb3VwID0gc2VsZi5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgZ3JvdXAuY2xlYXIoKTtcbiAgICB2YXIgdmlzaWJsZSA9IG1vZGVsLnZpc2libGU7XG4gICAgaWYgKHZpc2libGUgIT09IHVuZGVmaW5lZCAmJiAhdmlzaWJsZSkgc2VsZi5jaGFuZ2VWaXNpYmlsaXR5KHZpc2libGUpO1xuXG4gICAgaWYgKCFzaGFwZUZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTtcbiAgICB2YXIgY2ZnID0gc2VsZi5nZXRTaGFwZUNmZyhtb2RlbCk7IC8vIOWPr+iDveS8mumZhOWKoOmineWkluS/oeaBr1xuXG4gICAgdmFyIHNoYXBlVHlwZSA9IGNmZy50eXBlO1xuICAgIHZhciBrZXlTaGFwZSA9IHNoYXBlRmFjdG9yeS5kcmF3KHNoYXBlVHlwZSwgY2ZnLCBncm91cCk7XG5cbiAgICBpZiAoa2V5U2hhcGUpIHtcbiAgICAgIHNlbGYuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgIGtleVNoYXBlLnNldCgnaXNLZXlTaGFwZScsIHRydWUpO1xuICAgICAga2V5U2hhcGUuc2V0KCdkcmFnZ2FibGUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldE9yaWdpblN0eWxlKCk7IC8vIOmYsuatoueUseS6jueUqOaIt+WklumDqOS/ruaUuSBtb2RlbCDkuK3nmoQgc2hhcGUg5a+86Ie0IHNoYXBlIOS4jeabtOaWsFxuXG4gICAgdGhpcy5zZXQoJ2N1cnJlbnRTaGFwZScsIHNoYXBlVHlwZSk7XG4gICAgdGhpcy5yZXN0b3JlU3RhdGVzKHNoYXBlRmFjdG9yeSwgc2hhcGVUeXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWbvuWFg+e0oOWOn+Wni+agt+W8j1xuICAgKiBAcGFyYW0ga2V5U2hhcGUg5Zu+5YWD57SgIGtleVNoYXBlXG4gICAqIEBwYXJhbSBncm91cCBHcm91cCDlrrnlmahcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2V0T3JpZ2luU3R5bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIGNoaWxkcmVuID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuICAgIHZhciBrZXlTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGtleVNoYXBlTmFtZSA9IGtleVNoYXBlLmdldCgnbmFtZScpO1xuXG4gICAgaWYgKCF0aGlzLmdldCgnb3JpZ2luU3R5bGUnKSkge1xuICAgICAgLy8g56ys5LiA5qyhIHNldCBvcmlnaW5TdHlsZe+8jOebtOaOpeaLv+mmluasoea4suafk+aJgOacieWbvuW9oueahCBhdHRyc1xuICAgICAgdmFyIG9yaWdpblN0eWxlcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgc2hhcGVUeXBlID0gY2hpbGQuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciBuYW1lXzEgPSBjaGlsZC5nZXQoJ25hbWUnKTtcblxuICAgICAgICBpZiAobmFtZV8xICYmIG5hbWVfMSAhPT0ga2V5U2hhcGVOYW1lKSB7XG4gICAgICAgICAgb3JpZ2luU3R5bGVzW25hbWVfMV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7IC8vIFRoZSB0ZXh0J3MgcG9zaXRpb24gYW5kIG1hdHJpeCBpcyBub3QgYWxsb3dlZCB0byBiZSBhZmZlY3RlZCBieSBzdGF0ZXNcblxuICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0JyAmJiBvcmlnaW5TdHlsZXNbbmFtZV8xXSkge1xuICAgICAgICAgICAgZGVsZXRlIG9yaWdpblN0eWxlc1tuYW1lXzFdLng7XG4gICAgICAgICAgICBkZWxldGUgb3JpZ2luU3R5bGVzW25hbWVfMV0ueTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5TdHlsZXNbbmFtZV8xXS5tYXRyaXg7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0eWxlID0gc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKCk7IC8vIOWPr+S8mOWMlu+8jOmcgOimgeWOu+mZpCBjaGlsZC5hdHRyIOS4reWFtuS7liBzaGFwZSDlkI3nmoTlr7nosaFcblxuICAgICAgICAgIGRlbGV0ZSBrZXlTaGFwZVN0eWxlLnBhdGg7XG4gICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGUubWF0cml4O1xuXG4gICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JpZ2luU3R5bGVzLCBrZXlTaGFwZVN0eWxlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g6IulIGtleVNoYXBlIOaciSBuYW1lIOS4lCAhbmFtZe+8jOi/meS4quWbvuW9ouS4jeaYryBrZXlTaGFwZe+8jOe7mei/meS4quWbvuW9ouS4gOS4qiBuYW1lXG4gICAgICAgICAgICBpZiAoIW5hbWVfMSkge1xuICAgICAgICAgICAgICB2YXIgc2hhcGVOYW1lID0gdW5pcXVlSWQoJ3NoYXBlJyk7XG4gICAgICAgICAgICAgIGNoaWxkLnNldCgnbmFtZScsIHNoYXBlTmFtZSk7XG4gICAgICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3NoYXBlTmFtZV0gPSBjaGlsZDtcbiAgICAgICAgICAgICAgb3JpZ2luU3R5bGVzW3NoYXBlTmFtZV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvcmlnaW5TdHlsZXNba2V5U2hhcGVOYW1lXSA9IGtleVNoYXBlU3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIG9yaWdpblN0eWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOesrOS6jOasoSBzZXQgb3JpZ2luU3R5bGVz77yM6ZyA6KaB5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j++8jOabtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG4gICAgICAvLyDkuIrkuIDmrKHorr7nva7nmoQgb3JpZ2luU3R5bGXvvIzmmK/liJ3lp4vnmoQgc2hhcGUgYXR0cnNcbiAgICAgIHZhciBzdHlsZXNfMSA9IHRoaXMuZ2V0KCdvcmlnaW5TdHlsZScpOyAvLyBsZXQgc3R5bGVzOiBTaGFwZVN0eWxlID0ge307XG5cbiAgICAgIGlmIChrZXlTaGFwZU5hbWUgJiYgIXN0eWxlc18xW2tleVNoYXBlTmFtZV0pIHN0eWxlc18xW2tleVNoYXBlTmFtZV0gPSB7fTsgLy8g6I635Y+W5b2T5YmN54q25oCB5qC35byPXG5cbiAgICAgIHZhciBjdXJyZW50U3RhdGVzU3R5bGVfMSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlc1N0eWxlKCk7XG5cbiAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgbmFtZV8yID0gY2hpbGQuZ2V0KCduYW1lJyk7XG4gICAgICAgIHZhciBzaGFwZUF0dHJzID0gY2hpbGQuYXR0cigpO1xuXG4gICAgICAgIGlmIChuYW1lXzIgJiYgbmFtZV8yICE9PSBrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAvLyDmnIkgbmFtZSDnmoTpnZ4ga2V5U2hhcGUg5Zu+5b2iXG4gICAgICAgICAgdmFyIHNoYXBlU3RhdGVTdHlsZV8xID0gY3VycmVudFN0YXRlc1N0eWxlXzFbbmFtZV8yXTtcbiAgICAgICAgICBpZiAoIXN0eWxlc18xW25hbWVfMl0pIHN0eWxlc18xW25hbWVfMl0gPSB7fTtcblxuICAgICAgICAgIGlmIChzaGFwZVN0YXRlU3R5bGVfMSkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2hhcGVBdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHNoYXBlQXR0cnNba2V5XTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBzaGFwZVN0YXRlU3R5bGVfMVtrZXldKSBzdHlsZXNfMVtuYW1lXzJdW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZXNfMVtuYW1lXzJdID0gY2hpbGQuZ2V0KCd0eXBlJykgIT09ICdpbWFnZScgPyBjbG9uZShzaGFwZUF0dHJzKSA6IHNlbGYuZ2V0U2hhcGVTdHlsZUJ5TmFtZShuYW1lXzIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc2hhcGVBdHRyc18xID0gY2hpbGQuYXR0cigpO1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0YXRlU3R5bGVzXzEgPSB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50U3RhdGVzU3R5bGVfMSkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGVLZXkpIHtcbiAgICAgICAgICAgIHZhciBzdWJTdHlsZSA9IGN1cnJlbnRTdGF0ZXNTdHlsZV8xW3N0eWxlS2V5XTtcblxuICAgICAgICAgICAgaWYgKHN0eWxlS2V5ID09PSBrZXlTaGFwZU5hbWUgfHwgIWlzUGxhaW5PYmplY3Qoc3ViU3R5bGUpKSB7XG4gICAgICAgICAgICAgIGtleVNoYXBlU3RhdGVTdHlsZXNfMVtzdHlsZUtleV0gPSBzdWJTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzaGFwZUF0dHJzXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gc2hhcGVBdHRyc18xW2tleV07IC8vIOWmguaenOaYr+WvueixoeS4lOS4jeaYryBhcnJvd++8jOWImeaYr+WFtuS7liBzaGFwZSDnmoTmoLflvI9cbiAgICAgICAgICAgIC8vIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSAmJiBBUlJPV1MuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGtleVNoYXBlU3RhdGVTdHlsZXNfMVtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoa2V5U2hhcGVOYW1lKSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdW2tleV0gPSB2YWx1ZTtlbHNlIHN0eWxlc18xW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTsgLy8g6YGN5Y6G5b2T5YmN5omA5pyJ5Zu+5b2i55qEIGF0dHJz77yM5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j+abtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgc3R5bGVzXzEucGF0aDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS5tYXRyaXg7XG4gICAgICBkZWxldGUgc3R5bGVzXzEueDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS55O1xuXG4gICAgICBpZiAoc3R5bGVzXzFba2V5U2hhcGVOYW1lXSkge1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS54O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS55O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS5tYXRyaXg7XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdLnBhdGg7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIHN0eWxlc18xKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiByZXN0b3JlIHNoYXBlIHN0YXRlc1xuICAgKiBAcGFyYW0gc2hhcGVGYWN0b3J5XG4gICAqIEBwYXJhbSBzaGFwZVR5cGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUucmVzdG9yZVN0YXRlcyA9IGZ1bmN0aW9uIChzaGFwZUZhY3RvcnksIHNoYXBlVHlwZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc3RhdGVzID0gc2VsZi5nZXQoJ3N0YXRlcycpO1xuICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIHNoYXBlRmFjdG9yeS5zZXRTdGF0ZShzaGFwZVR5cGUsIHN0YXRlLCB0cnVlLCBzZWxmKTtcbiAgICB9KTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuZ2V0RmFjdG9yeSh0aGlzLmdldCgndHlwZScpKTtcbiAgICB0aGlzLnNldCgnc2hhcGVGYWN0b3J5Jywgc2hhcGVGYWN0b3J5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5YaF6YOo57G75L2/55SoXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5IOWxnuaAp+WQjVxuICAgKiBAcmV0dXJuIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXJ9IOWxnuaAp+WAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NmZ1trZXldO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5bGe5oCnXG4gICAqIEBpbnRlcm5hbCDku4XlhoXpg6jnsbvkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBrZXkg5bGe5oCn5ZCN77yM5Lmf5Y+v5Lul5piv5a+56LGhXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyfSB2YWwg5bGe5oCn5YC8XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGtleSkpIHtcbiAgICAgIHRoaXMuX2NmZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLl9jZmcpLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jZmdba2V5XSA9IHZhbDtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuICAvKipcbiAgICog5pu05pawL+WIt+aWsOetieaTjeS9nOWQju+8jOa4hemZpCBjYWNoZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4suafk+WJjeeahOmAu+i+ke+8jOaPkOS+m+e7meWtkOexu+WkjeWGmVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5iZWZvcmVEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmuLLmn5PlkI7nmoTpgLvovpHvvIzmj5Dkvpvnu5nlrZDnsbvlpI3lhplcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmm7TmlrDlkI7lgZrkuIDkupvlt6XkvZxcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJVcGRhdGUgPSBmdW5jdGlvbiAoKSB7fTtcbiAgLyoqXG4gICAqIGRyYXcgc2hhcGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmJlZm9yZURyYXcoKTtcbiAgICB0aGlzLmRyYXdJbm5lcigpO1xuICAgIHRoaXMuYWZ0ZXJEcmF3KCk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlU3R5bGVCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIHZhciBjdXJyZW50U2hhcGU7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgY3VycmVudFNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV07IC8vIGdyb3VwLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IG5hbWUpIGFzIElTaGFwZUJhc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFNoYXBlKSB7XG4gICAgICB2YXIgc3R5bGVzXzIgPSB7fTtcbiAgICAgIGVhY2goY3VycmVudFNoYXBlLmF0dHIoKSwgZnVuY3Rpb24gKHZhbCwga2V5KSB7XG4gICAgICAgIC8vIOS/ruaUuSBpbWcg6YCa6L+HIHVwZGF0ZUl0ZW0g5a6e546wXG4gICAgICAgIGlmIChrZXkgIT09ICdpbWcnIHx8IGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgICAgICBzdHlsZXNfMltrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdHlsZXNfMjtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlQ2ZnID0gZnVuY3Rpb24gKG1vZGVsLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIC8vIG1lcmdlIGdyYXBo55qEaXRlbeagt+W8j+S4juaVsOaNruaooeWei+S4reeahOagt+W8j1xuICAgICAgdmFyIG5ld01vZGVsID0gbW9kZWw7XG4gICAgICBuZXdNb2RlbC5zdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCBtb2RlbC5zdHlsZSk7XG4gICAgICByZXR1cm4gbmV3TW9kZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5oyH5a6a54q25oCB55qE5qC35byP77yM5Y676Zmk5LqG5YWo5bGA5qC35byPXG4gICAqIEBwYXJhbSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0U3RhdGVTdHlsZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIHN0YXRlU3R5bGUgPSBzdHlsZXMgJiYgc3R5bGVzW3N0YXRlXTtcbiAgICByZXR1cm4gc3RhdGVTdHlsZTtcbiAgfTtcbiAgLyoqXG4gICAqIGdldCBrZXlzaGFwZSBzdHlsZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRPcmlnaW5TdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ29yaWdpblN0eWxlJyk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEN1cnJlbnRTdGF0ZXNTdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHN0eWxlcyA9IHt9O1xuICAgIHZhciBzdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuXG4gICAgaWYgKCFzdGF0ZXMgfHwgIXN0YXRlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnb3JpZ2luU3R5bGUnKTtcbiAgICB9XG5cbiAgICBlYWNoKHNlbGYuZ2V0U3RhdGVzKCksIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgc3R5bGVzID0gT2JqZWN0LmFzc2lnbihzdHlsZXMsIHNlbGYuZ2V0U3RhdGVTdHlsZShzdGF0ZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnlhYPntKDnirbmgIHvvIwgdmlzaWJsZSDkuI3lsZ7kuo7ov5nkuKrojIPnlbRcbiAgICogQGludGVybmFsIOS7heaPkOS+m+WGhemDqOexuyBncmFwaCDkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0YXRlIOeKtuaAgeWQjVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHZhbHVlIOiKgueCueeKtuaAgeWAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGVzID0gdGhpcy5nZXQoJ3N0YXRlcycpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHN0YXRlTmFtZSA9IHN0YXRlO1xuICAgIHZhciBmaWx0ZXJTdGF0ZU5hbWUgPSBzdGF0ZTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlTmFtZSA9IFwiXCIuY29uY2F0KHN0YXRlLCBcIjpcIikuY29uY2F0KHZhbHVlKTtcbiAgICAgIGZpbHRlclN0YXRlTmFtZSA9IFwiXCIuY29uY2F0KHN0YXRlLCBcIjpcIik7XG4gICAgfVxuXG4gICAgdmFyIG5ld1N0YXRlcyA9IHN0YXRlcztcblxuICAgIGlmIChpc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB2YXIgaW5kZXggPSBzdGF0ZXMuaW5kZXhPZihmaWx0ZXJTdGF0ZU5hbWUpO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZXMucHVzaChzdGF0ZU5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHN0YXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAvLyDov4fmu6Tmjokgc3RhdGVzIOS4rSBmaWx0ZXJTdGF0ZU5hbWUg55u45YWz55qE54q25oCBXG4gICAgICB2YXIgZmlsdGVyU3RhdGVzID0gc3RhdGVzLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhmaWx0ZXJTdGF0ZU5hbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaWx0ZXJTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsZWFyU3RhdGVzKGZpbHRlclN0YXRlcyk7XG4gICAgICB9XG5cbiAgICAgIG5ld1N0YXRlcyA9IG5ld1N0YXRlcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICFuYW1lLmluY2x1ZGVzKGZpbHRlclN0YXRlTmFtZSk7XG4gICAgICB9KTtcbiAgICAgIG5ld1N0YXRlcy5wdXNoKHN0YXRlTmFtZSk7XG4gICAgICB0aGlzLnNldCgnc3RhdGVzJywgbmV3U3RhdGVzKTtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGVGYWN0b3J5KSB7XG4gICAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICAgIHZhciB0eXBlID0gbW9kZWwudHlwZTsgLy8g6LCD55SoIHNoYXBlL3NoYXBlLnRzIOS4reeahCBzZXRTdGF0ZVxuXG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUodHlwZSwgc3RhdGUsIHZhbHVlLCB0aGlzKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmuIXpmaTmjIflrprnmoTnirbmgIHvvIzlpoLmnpzlj4LmlbDkuLrnqbrvvIzliJnkuI3lgZrku7vliqHlpITnkIZcbiAgICogQHBhcmFtIHN0YXRlcyDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2xlYXJTdGF0ZXMgPSBmdW5jdGlvbiAoc3RhdGVzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvcmlnaW5TdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTtcblxuICAgIGlmICghc3RhdGVzKSB7XG4gICAgICBzdGF0ZXMgPSBvcmlnaW5TdGF0ZXM7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHN0YXRlcykpIHtcbiAgICAgIHN0YXRlcyA9IFtzdGF0ZXNdO1xuICAgIH1cblxuICAgIHZhciBuZXdTdGF0ZXMgPSBvcmlnaW5TdGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgcmV0dXJuIHN0YXRlcy5pbmRleE9mKHN0YXRlKSA9PT0gLTE7XG4gICAgfSk7XG4gICAgc2VsZi5zZXQoJ3N0YXRlcycsIG5ld1N0YXRlcyk7XG4gICAgc3RhdGVzLmZvckVhY2goZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUoc2hhcGUsIHN0YXRlLCBmYWxzZSwgc2VsZik7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlm77lvaLlrrnlmahcbiAgICogQHJldHVybiB7Ry5Hcm91cH0g5Zu+5b2i5a655ZmoXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlhbPplK7lvaLnirbvvIznlKjkuo7orqHnrpfoioLngrnlpKflsI/vvIzov57nur/miKrot53nrYlcbiAgICogQHJldHVybiB7SVNoYXBlQmFzZX0g5YWz6ZSu5b2i54q2XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEtleVNoYXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRNb2RlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21vZGVsJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnsbvlnotcbiAgICogQHJldHVybiB7c3RyaW5nfSDoioLngrnnmoTnsbvlnotcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3R5cGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBJdGVtIOeahElEXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldElEID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaWQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaYryBJdGVtIOWvueixoe+8jOaCrOepuui+ueaDheWGteS4i+i/m+ihjOWIpOWumlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5pc0l0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3lhYPntKDnmoTmiYDmnInnirbmgIFcbiAgICogQHJldHVybiB7QXJyYXl9IOWFg+e0oOeahOaJgOacieeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRTdGF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzdGF0ZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOW9k+WJjeWFg+e0oOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RhdGUg54q25oCB5ZCNXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5oYXNTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdldFN0YXRlcygpO1xuICAgIHJldHVybiBzdGF0ZXMuaW5kZXhPZihzdGF0ZSkgPj0gMDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIt+aWsOS4gOiIrOeUqOS6juWkhOeQhuWHoOenjeaDheWGtVxuICAgKiAxLiBpdGVtIG1vZGVsIOWcqOWklumDqOiiq+aUueWPmFxuICAgKiAyLiDovrnnmoToioLngrnkvY3nva7lj5HnlJ/mlLnlj5jvvIzpnIDopoHph43mlrDorqHnrpfovrlcbiAgICpcbiAgICog5Zug5Li65pWw5o2u5LuO5aSW6YOo6KKr5L+u5pS55peg5rOV5Yik5pat5LiA5Lqb5bGe5oCn5piv5ZCm6KKr5L+u5pS577yM55u05o6l6LWw5L2N572u5ZKMIHNoYXBlIOeahOabtOaWsFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5pu05paw5YWD57Sg5L2N572uXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTsgLy8g5pu05paw5YWD57Sg5YaF5a6577yM5qC35byPXG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKHVwZGF0ZVR5cGUpOyAvLyDlgZrkuIDkupvmm7TmlrDkuYvlkI7nmoTmk43kvZxcblxuICAgIHRoaXMuYWZ0ZXJVcGRhdGUoKTsgLy8g5riF6Zmk57yT5a2YXG5cbiAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog5bCG5pu05paw5bqU55So5YiwIG1vZGVsIOS4iu+8jOWIt+aWsOWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5o+Q5L6b57uZIEdyYXBoIOS9v+eUqO+8jOWklumDqOebtOaOpeiwg+eUqCBncmFwaC51cGRhdGUg5o6l5Y+jXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAgICAgIOmFjee9rumhue+8jOWPr+S7peaYr+WinumHj+S/oeaBr1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoY2ZnLCB1cGRhdGVUeXBlKSB7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09IHZvaWQgMCkge1xuICAgICAgdXBkYXRlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5LuF5LuF56e75Yqo5L2N572u5pe277yM5pei5LiN5pu05paw77yM5Lmf5LiN6YeN57uYXG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGNmZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvcmlWaXNpYmxlID0gbW9kZWwudmlzaWJsZTtcbiAgICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgICBpZiAob3JpVmlzaWJsZSAhPT0gY2ZnVmlzaWJsZSAmJiBjZmdWaXNpYmxlICE9PSB1bmRlZmluZWQpIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShjZmdWaXNpYmxlKTtcbiAgICAgIHZhciBvcmlnaW5Qb3NpdGlvbiA9IHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfTtcbiAgICAgIGNmZy54ID0gaXNOYU4oK2NmZy54KSA/IG1vZGVsLnggOiArY2ZnLng7XG4gICAgICBjZmcueSA9IGlzTmFOKCtjZmcueSkgPyBtb2RlbC55IDogK2NmZy55O1xuICAgICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgICAgaWYgKGNmZy5zdGF0ZVN0eWxlcykge1xuICAgICAgICAvLyDmm7TmlrAgaXRlbSDml7bmm7TmlrAgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICAgIG1peChzdHlsZXMsIHN0YXRlU3R5bGVzKTtcbiAgICAgICAgZGVsZXRlIGNmZy5zdGF0ZVN0eWxlcztcbiAgICAgIH0gLy8g55u05o6l5bCG5pu05paw5ZCI5Yiw5Y6f5pWw5o2u5qih5Z6L5LiK77yM5Y+v5Lul5L+d6K+B55So5oi35Zyo5aSW6YOo5L+u5pS55rqQ5pWw5o2u54S25ZCO5Yi35paw5pe255qE5qC35byP56ym5ZCI5pyf5b6F44CCXG5cblxuICAgICAgT2JqZWN0LmFzc2lnbihtb2RlbCwgY2ZnKTsgLy8g5aaC5p6cIHgseSDmnInlj5jljJbvvIzlhYjph43nva7kvY3nva5cblxuICAgICAgaWYgKG9yaWdpblBvc2l0aW9uLnggIT09IGNmZy54IHx8IG9yaWdpblBvc2l0aW9uLnkgIT09IGNmZy55KSB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oY2ZnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDlhYPntKDlhoXlrrnvvIzmoLflvI9cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUudXBkYXRlU2hhcGUgPSBmdW5jdGlvbiAodXBkYXRlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTsgLy8g5Yik5a6a5piv5ZCm5YWB6K645pu05pawXG4gICAgLy8gMS4g5rOo5YaM55qE6IqC54K55YWB6K645pu05pawXG4gICAgLy8gMi4g5pu05paw5ZCO55qEIHNoYXBlIOetieS6juWOn+WFiOeahCBzaGFwZVxuXG4gICAgaWYgKHNoYXBlRmFjdG9yeS5zaG91bGRVcGRhdGUoc2hhcGUpICYmIHNoYXBlID09PSB0aGlzLmdldCgnY3VycmVudFNoYXBlJykpIHtcbiAgICAgIHZhciB1cGRhdGVDZmcgPSB0aGlzLmdldFNoYXBlQ2ZnKG1vZGVsLCB1cGRhdGVUeXBlKTtcbiAgICAgIHNoYXBlRmFjdG9yeS5iYXNlVXBkYXRlKHNoYXBlLCB1cGRhdGVDZmcsIHRoaXMsIHVwZGF0ZVR5cGUpOyAvLyDmm7TmlrDlrozku6XlkI7ph43mlrDorr7nva7ljp/lp4vmoLflvI9cblxuICAgICAgaWYgKHVwZGF0ZVR5cGUgIT09ICdtb3ZlJykgdGhpcy5zZXRPcmlnaW5TdHlsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzkuI3mu6HotrPkuIrpnaLkuKTnp43nirbmgIHvvIzph43mlrDnu5jliLZcbiAgICAgIHRoaXMuZHJhdygpO1xuICAgIH0gLy8g5pu05paw5ZCO6YeN572u6IqC54K554q25oCBXG5cblxuICAgIHRoaXMucmVzdG9yZVN0YXRlcyhzaGFwZUZhY3RvcnksIHNoYXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOS9jee9ru+8jOmBv+WFjeaVtOS9k+mHjee7mFxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOW+heabtOaWsOaVsOaNrlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGVQb3NpdGlvbiA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgeCA9IGlzTmFOKCtjZmcueCkgPyArbW9kZWwueCA6ICtjZmcueDtcbiAgICB2YXIgeSA9IGlzTmFOKCtjZmcueSkgPyArbW9kZWwueSA6ICtjZmcueTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChpc05hTih4KSB8fCBpc05hTih5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG1vZGVsLnggPSB4O1xuICAgIG1vZGVsLnkgPSB5O1xuICAgIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcbiAgICBpZiAobWF0cml4ICYmIG1hdHJpeFs2XSA9PT0geCAmJiBtYXRyaXhbN10gPT09IHkpIHJldHVybiBmYWxzZTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpOyAvLyBHIDQuMCBlbGVtZW50IOS4reenu+mZpOS6huefqemYteebuOWFs+aWueazle+8jOivpuingWh0dHBzOi8vd3d3Lnl1cXVlLmNvbS9hbnR2L2Jsb2cva3h6azlnIzRyTU1WXG5cbiAgICB0cmFuc2xhdGUoZ3JvdXAsIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7IC8vIOS9jee9ruabtOaWsOWQjumcgOimgea4hemZpOe8k+WtmFxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnmoTljIXlm7Tnm5LvvIzov5nkuKrljIXlm7Tnm5LmmK/nm7jlr7nkuo4gaXRlbSDoh6rlt7HvvIzkuI3kvJrlsIYgbWF0cml4IOiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9CQk9YKTtcblxuICAgIGlmICghYmJveCkge1xuICAgICAgYmJveCA9IHRoaXMuY2FsY3VsYXRlQkJveCgpO1xuICAgICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgYmJveCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5LvvIzkvJrlsIbku47pobblsYLliLDlvZPliY3lhYPntKDnmoQgbWF0cml4IOmDveiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9DQU5WQVNfQkJPWCk7XG5cbiAgICBpZiAoIWJib3gpIHtcbiAgICAgIGJib3ggPSB0aGlzLmNhbGN1bGF0ZUNhbnZhc0JCb3goKTtcbiAgICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBiYm94KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmJveDtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWJjemdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0Zyb250ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnRvRnJvbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWQjumdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0JhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgZ3JvdXAudG9CYWNrKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmmL7npLrlhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH07XG4gIC8qKlxuICAgKiDpmpDol4/lhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9O1xuICAvKipcbiAgICog5pu05pS55piv5ZCm5pi+56S6XG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHZpc2libGUg5piv5ZCm5pi+56S6XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNoYW5nZVZpc2liaWxpdHkgPSBmdW5jdGlvbiAodmlzaWJsZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGdyb3VwLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXAuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgdmlzaWJsZSk7XG4gIH07XG4gIC8qKlxuICAgKiDlhYPntKDmmK/lkKblj6/op4FcbiAgICogQHJldHVybiB7Qm9vbGVhbn0g6L+U5Zue6K+l5YWD57Sg5piv5ZCm5Y+v6KeBXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmlzVmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3Zpc2libGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaLvuWPluWPiuWHuuWPkeivpeWFg+e0oOeahOS6pOS6kuS6i+S7tlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZSDmoIfor4bkvY1cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZW5hYmxlQ2FwdHVyZSA9IGZ1bmN0aW9uIChlbmFibGUpIHtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChncm91cCkge1xuICAgICAgZ3JvdXAuc2V0KCdjYXB0dXJlJywgZW5hYmxlKTtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgdmFyIGFuaW1hdGUgPSB0aGlzLmdldCgnYW5pbWF0ZScpO1xuICAgICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG5cbiAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgIGdyb3VwLnN0b3BBbmltYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddID0ge307XG4gICAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICAgIGdyb3VwLnJlbW92ZSgpO1xuICAgICAgdGhpcy5fY2ZnID0gbnVsbDtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEl0ZW1CYXNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBJdGVtQmFzZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/item.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/item/node.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/item/node.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/item/item.js\");\n\n\n\n\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\nvar CACHE_BBOX = 'bboxCache';\n\nvar Node =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Node, _super);\n\n function Node() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Node.prototype.getNearestPoint = function (points, curPoint) {\n var index = 0;\n var nearestPoint = points[0];\n var minDistance = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(points[0], curPoint);\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var dis = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(point, curPoint);\n\n if (dis < minDistance) {\n nearestPoint = point;\n minDistance = dis;\n index = i;\n }\n }\n\n nearestPoint.anchorIndex = index;\n return nearestPoint;\n };\n\n Node.prototype.getDefaultCfg = function () {\n return {\n type: 'node',\n edges: []\n };\n };\n /**\n * 获取从节点关联的所有边\n */\n\n\n Node.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取所有的入边\n */\n\n\n Node.prototype.getInEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('target') === self;\n });\n };\n /**\n * 获取所有的出边\n */\n\n\n Node.prototype.getOutEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('source') === self;\n });\n };\n /**\n * 获取节点的邻居节点\n *\n * @returns {INode[]}\n * @memberof Node\n */\n\n\n Node.prototype.getNeighbors = function (type) {\n var _this = this;\n\n var edges = this.get('edges');\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.getSource() === _this;\n };\n\n return edges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.getTarget();\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.getTarget() === _this;\n };\n\n return edges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.getSource();\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.getSource() === _this ? edge.getTarget() : edge.getSource();\n };\n\n return edges.map(neighhborsConverter);\n };\n /**\n * 根据锚点的索引获取连接点\n * @param {Number} index 索引\n */\n\n\n Node.prototype.getLinkPointByAnchor = function (index) {\n var anchorPoints = this.getAnchorPoints();\n return anchorPoints[index];\n };\n /**\n * 获取连接点\n * @param point\n */\n\n\n Node.prototype.getLinkPoint = function (point) {\n var keyShape = this.get('keyShape');\n var type = keyShape.get('type');\n var itemType = this.get('type');\n var centerX;\n var centerY;\n var bbox = this.getBBox();\n\n if (itemType === 'combo') {\n centerX = bbox.centerX || (bbox.maxX + bbox.minX) / 2;\n centerY = bbox.centerY || (bbox.maxY + bbox.minY) / 2;\n } else {\n centerX = bbox.centerX;\n centerY = bbox.centerY;\n }\n\n var anchorPoints = this.getAnchorPoints();\n var intersectPoint;\n\n switch (type) {\n case 'circle':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getCircleIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n r: bbox.width / 2\n }, point);\n break;\n\n case 'ellipse':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getEllipseIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n rx: bbox.width / 2,\n ry: bbox.height / 2\n }, point);\n break;\n\n default:\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getRectIntersectByPoint\"])(bbox, point);\n }\n\n var linkPoint = intersectPoint; // 如果存在锚点,则使用交点计算最近的锚点\n\n if (anchorPoints.length) {\n if (!linkPoint) {\n // 如果计算不出交点\n linkPoint = point;\n }\n\n linkPoint = this.getNearestPoint(anchorPoints, linkPoint);\n }\n\n if (!linkPoint) {\n // 如果最终依然没法找到锚点和连接点,直接返回中心点\n linkPoint = {\n x: centerX,\n y: centerY\n };\n }\n\n return linkPoint;\n };\n /**\n * 获取锚点的定义\n * @return {array} anchorPoints\n */\n\n\n Node.prototype.getAnchorPoints = function () {\n var anchorPoints = this.get(CACHE_ANCHOR_POINTS);\n\n if (!anchorPoints) {\n anchorPoints = [];\n var shapeFactory = this.get('shapeFactory');\n var bbox_1 = this.getBBox();\n var model = this.get('model');\n var shapeCfg = this.getShapeCfg(model);\n var type = model.type;\n var points = shapeFactory.getAnchorPoints(type, shapeCfg) || [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (pointArr, index) {\n var point = {\n x: bbox_1.minX + pointArr[0] * bbox_1.width,\n y: bbox_1.minY + pointArr[1] * bbox_1.height,\n anchorIndex: index\n };\n anchorPoints.push(point);\n });\n this.set(CACHE_ANCHOR_POINTS, anchorPoints);\n }\n\n return anchorPoints;\n };\n /**\n * add edge\n * @param edge Edge instance\n */\n\n\n Node.prototype.addEdge = function (edge) {\n this.get('edges').push(edge);\n };\n /**\n * 锁定节点\n */\n\n\n Node.prototype.lock = function () {\n this.set('locked', true);\n };\n /**\n * 解锁锁定的节点\n */\n\n\n Node.prototype.unlock = function () {\n this.set('locked', false);\n };\n\n Node.prototype.hasLocked = function () {\n return this.get('locked');\n };\n /**\n * 移除边\n * @param {Edge} edge 边\n */\n\n\n Node.prototype.removeEdge = function (edge) {\n var edges = this.getEdges();\n var index = edges.indexOf(edge);\n if (index > -1) edges.splice(index, 1);\n };\n\n Node.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n /**\n * 判断更新的种类,move 表示仅移动,bbox 表示大小有变化,style 表示仅与大小无关的参数变化\n * @param cfg 节点数据模型\n */\n\n\n Node.prototype.getUpdateType = function (cfg) {\n var _a, _b, _c, _d, _e;\n\n if (!cfg) return undefined;\n var existX = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.x);\n var existY = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.y);\n var keys = Object.keys(cfg); // 仅有一个字段,包含 x 或者 包含 y\n // 两个字段,同时有 x,同时有 y\n\n if (keys.length === 1 && (existX || existY) || keys.length === 2 && existX && existY) return 'move';\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size || (cfg === null || cfg === void 0 ? void 0 : cfg.style) && (((_a = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _a === void 0 ? void 0 : _a.r) || ((_b = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _b === void 0 ? void 0 : _b.width) || ((_c = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _d === void 0 ? void 0 : _d.rx) || ((_e = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _e === void 0 ? void 0 : _e.ry))) return 'bbox|label';\n var updateLabel = keys.includes('label') || keys.includes('labelCfg');\n return updateLabel ? 'style|label' : 'style';\n };\n\n return Node;\n}(_item__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Node);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL25vZGUuanM/ZjU0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2lCO0FBQ3FFO0FBQzlGO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDJEQUFROztBQUU5QixtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0EsZ0JBQWdCLDJEQUFROztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsNEVBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLHlCQUF5Qiw2RUFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSx5QkFBeUIsMEVBQXVCO0FBQ2hEOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix3REFBSztBQUN2QixrQkFBa0Isd0RBQUs7QUFDdkIsZ0NBQWdDO0FBQ2hDOztBQUVBO0FBQ0EsUUFBUSwyREFBUSxXQUFXLDJEQUFRO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxtRUFBSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2l0ZW0vbm9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNOaWwsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBkaXN0YW5jZSwgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCwgZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQsIGdldFJlY3RJbnRlcnNlY3RCeVBvaW50IH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCBJdGVtIGZyb20gJy4vaXRlbSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG52YXIgQ0FDSEVfQkJPWCA9ICdiYm94Q2FjaGUnO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhOb2RlLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVhcmVzdFBvaW50ID0gZnVuY3Rpb24gKHBvaW50cywgY3VyUG9pbnQpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBuZWFyZXN0UG9pbnQgPSBwb2ludHNbMF07XG4gICAgdmFyIG1pbkRpc3RhbmNlID0gZGlzdGFuY2UocG9pbnRzWzBdLCBjdXJQb2ludCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgdmFyIGRpcyA9IGRpc3RhbmNlKHBvaW50LCBjdXJQb2ludCk7XG5cbiAgICAgIGlmIChkaXMgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICBuZWFyZXN0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXM7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZWFyZXN0UG9pbnQuYW5jaG9ySW5kZXggPSBpbmRleDtcbiAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bku47oioLngrnlhbPogZTnmoTmiYDmnInovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInnmoTlhaXovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRJbkVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJykuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXQoJ3RhcmdldCcpID09PSBzZWxmO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5omA5pyJ55qE5Ye66L65XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0T3V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiB0aGlzLmdldCgnZWRnZXMnKS5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmdldCgnc291cmNlJykgPT09IHNlbGY7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTpgrvlsYXoioLngrlcbiAgICpcbiAgICogQHJldHVybnMge0lOb2RlW119XG4gICAqIEBtZW1iZXJvZiBOb2RlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXQoJ2VkZ2VzJyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzEgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzEoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXM7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMSkubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICAvLyDlvZPliY3oioLngrnkuLogdGFyZ2V077yM5a6D5omA5oyH5ZCR55qE5rqQ6IqC54K5XG4gICAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UuZ2V0VGFyZ2V0KCkgPT09IF90aGlzO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIH0pO1xuICAgIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcihlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXMgPyBlZGdlLmdldFRhcmdldCgpIDogZWRnZS5nZXRTb3VyY2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrumUmueCueeahOe0ouW8leiOt+WPlui/nuaOpeeCuVxuICAgKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IOe0ouW8lVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmdldExpbmtQb2ludEJ5QW5jaG9yID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0QW5jaG9yUG9pbnRzKCk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50c1tpbmRleF07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bov57mjqXngrlcbiAgICogQHBhcmFtIHBvaW50XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TGlua1BvaW50ID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcbiAgICB2YXIgaXRlbVR5cGUgPSB0aGlzLmdldCgndHlwZScpO1xuICAgIHZhciBjZW50ZXJYO1xuICAgIHZhciBjZW50ZXJZO1xuICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG5cbiAgICBpZiAoaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclggfHwgKGJib3gubWF4WCArIGJib3gubWluWCkgLyAyO1xuICAgICAgY2VudGVyWSA9IGJib3guY2VudGVyWSB8fCAoYmJveC5tYXhZICsgYmJveC5taW5ZKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclg7XG4gICAgICBjZW50ZXJZID0gYmJveC5jZW50ZXJZO1xuICAgIH1cblxuICAgIHZhciBhbmNob3JQb2ludHMgPSB0aGlzLmdldEFuY2hvclBvaW50cygpO1xuICAgIHZhciBpbnRlcnNlY3RQb2ludDtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgaW50ZXJzZWN0UG9pbnQgPSBnZXRDaXJjbGVJbnRlcnNlY3RCeVBvaW50KHtcbiAgICAgICAgICB4OiBjZW50ZXJYLFxuICAgICAgICAgIHk6IGNlbnRlclksXG4gICAgICAgICAgcjogYmJveC53aWR0aCAvIDJcbiAgICAgICAgfSwgcG9pbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZWxsaXBzZSc6XG4gICAgICAgIGludGVyc2VjdFBvaW50ID0gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoe1xuICAgICAgICAgIHg6IGNlbnRlclgsXG4gICAgICAgICAgeTogY2VudGVyWSxcbiAgICAgICAgICByeDogYmJveC53aWR0aCAvIDIsXG4gICAgICAgICAgcnk6IGJib3guaGVpZ2h0IC8gMlxuICAgICAgICB9LCBwb2ludCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpbnRlcnNlY3RQb2ludCA9IGdldFJlY3RJbnRlcnNlY3RCeVBvaW50KGJib3gsIHBvaW50KTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50ID0gaW50ZXJzZWN0UG9pbnQ7IC8vIOWmguaenOWtmOWcqOmUmueCue+8jOWImeS9v+eUqOS6pOeCueiuoeeul+acgOi/keeahOmUmueCuVxuXG4gICAgaWYgKGFuY2hvclBvaW50cy5sZW5ndGgpIHtcbiAgICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAgIC8vIOWmguaenOiuoeeul+S4jeWHuuS6pOeCuVxuICAgICAgICBsaW5rUG9pbnQgPSBwb2ludDtcbiAgICAgIH1cblxuICAgICAgbGlua1BvaW50ID0gdGhpcy5nZXROZWFyZXN0UG9pbnQoYW5jaG9yUG9pbnRzLCBsaW5rUG9pbnQpO1xuICAgIH1cblxuICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAvLyDlpoLmnpzmnIDnu4jkvp3nhLbmsqHms5Xmib7liLDplJrngrnlkozov57mjqXngrnvvIznm7TmjqXov5Tlm57kuK3lv4PngrlcbiAgICAgIGxpbmtQb2ludCA9IHtcbiAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgeTogY2VudGVyWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlua1BvaW50O1xuICB9O1xuICAvKipcbiAgICog6I635Y+W6ZSa54K555qE5a6a5LmJXG4gICAqIEByZXR1cm4ge2FycmF5fSBhbmNob3JQb2ludHNcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRBbmNob3JQb2ludHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMpO1xuXG4gICAgaWYgKCFhbmNob3JQb2ludHMpIHtcbiAgICAgIGFuY2hvclBvaW50cyA9IFtdO1xuICAgICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICAgIHZhciBiYm94XzEgPSB0aGlzLmdldEJCb3goKTtcbiAgICAgIHZhciBtb2RlbCA9IHRoaXMuZ2V0KCdtb2RlbCcpO1xuICAgICAgdmFyIHNoYXBlQ2ZnID0gdGhpcy5nZXRTaGFwZUNmZyhtb2RlbCk7XG4gICAgICB2YXIgdHlwZSA9IG1vZGVsLnR5cGU7XG4gICAgICB2YXIgcG9pbnRzID0gc2hhcGVGYWN0b3J5LmdldEFuY2hvclBvaW50cyh0eXBlLCBzaGFwZUNmZykgfHwgW107XG4gICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHBvaW50QXJyLCBpbmRleCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgICAgeDogYmJveF8xLm1pblggKyBwb2ludEFyclswXSAqIGJib3hfMS53aWR0aCxcbiAgICAgICAgICB5OiBiYm94XzEubWluWSArIHBvaW50QXJyWzFdICogYmJveF8xLmhlaWdodCxcbiAgICAgICAgICBhbmNob3JJbmRleDogaW5kZXhcbiAgICAgICAgfTtcbiAgICAgICAgYW5jaG9yUG9pbnRzLnB1c2gocG9pbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBhbmNob3JQb2ludHMpO1xuICAgIH1cblxuICAgIHJldHVybiBhbmNob3JQb2ludHM7XG4gIH07XG4gIC8qKlxuICAgKiBhZGQgZWRnZVxuICAgKiBAcGFyYW0gZWRnZSBFZGdlIGluc3RhbmNlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuYWRkRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdGhpcy5nZXQoJ2VkZ2VzJykucHVzaChlZGdlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmUgeWumuiKgueCuVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmxvY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ2xvY2tlZCcsIHRydWUpO1xuICB9O1xuICAvKipcbiAgICog6Kej6ZSB6ZSB5a6a55qE6IqC54K5XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUudW5sb2NrID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdsb2NrZWQnLCBmYWxzZSk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuaGFzTG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbG9ja2VkJyk7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTovrlcbiAgICogQHBhcmFtIHtFZGdlfSBlZGdlIOi+uVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUVkZ2UgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuZ2V0RWRnZXMoKTtcbiAgICB2YXIgaW5kZXggPSBlZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmIChpbmRleCA+IC0xKSBlZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmNsZWFyQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgbnVsbCk7IC8vIOa4heeQhue8k+WtmOeahCBiYm94XG5cbiAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreabtOaWsOeahOenjeexu++8jG1vdmUg6KGo56S65LuF56e75Yqo77yMYmJveCDooajnpLrlpKflsI/mnInlj5jljJbvvIxzdHlsZSDooajnpLrku4XkuI7lpKflsI/ml6DlhbPnmoTlj4LmlbDlj5jljJZcbiAgICogQHBhcmFtIGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRVcGRhdGVUeXBlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG5cbiAgICBpZiAoIWNmZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB2YXIgZXhpc3RYID0gIWlzTmlsKGNmZy54KTtcbiAgICB2YXIgZXhpc3RZID0gIWlzTmlsKGNmZy55KTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNmZyk7IC8vIOS7heacieS4gOS4quWtl+aute+8jOWMheWQqyB4IOaIluiAhSDljIXlkKsgeVxuICAgIC8vIOS4pOS4quWtl+aute+8jOWQjOaXtuaciSB477yM5ZCM5pe25pyJIHlcblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSAmJiAoZXhpc3RYIHx8IGV4aXN0WSkgfHwga2V5cy5sZW5ndGggPT09IDIgJiYgZXhpc3RYICYmIGV4aXN0WSkgcmV0dXJuICdtb3ZlJztcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLngpIHx8IGlzTnVtYmVyKGNmZy55KSB8fCBjZmcudHlwZSB8fCBjZmcuYW5jaG9yUG9pbnRzIHx8IGNmZy5zaXplIHx8IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpICYmICgoKF9hID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucikgfHwgKChfYiA9IGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5zdHlsZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLndpZHRoKSB8fCAoKF9jID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuaGVpZ2h0KSB8fCAoKF9kID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucngpIHx8ICgoX2UgPSBjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5yeSkpKSByZXR1cm4gJ2Jib3h8bGFiZWwnO1xuICAgIHZhciB1cGRhdGVMYWJlbCA9IGtleXMuaW5jbHVkZXMoJ2xhYmVsJykgfHwga2V5cy5pbmNsdWRlcygnbGFiZWxDZmcnKTtcbiAgICByZXR1cm4gdXBkYXRlTGFiZWwgPyAnc3R5bGV8bGFiZWwnIDogJ3N0eWxlJztcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oSXRlbSk7XG5cbmV4cG9ydCBkZWZhdWx0IE5vZGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/node.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/types/index.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g6-core/es/types/index.js ***!
\******************************************************/
/*! exports provided: G6GraphEvent, G6Event */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return G6Event; });\n/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interface */ \"./node_modules/@antv/g6-core/es/interface/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _interface__WEBPACK_IMPORTED_MODULE_0__[\"G6GraphEvent\"]; });\n\n // Behavior type file\n\nvar G6Event;\n\n(function (G6Event) {\n // common events\n G6Event[\"CLICK\"] = \"click\";\n G6Event[\"DBLCLICK\"] = \"dblclick\";\n G6Event[\"MOUSEDOWN\"] = \"mousedown\";\n G6Event[\"MOUDEUP\"] = \"mouseup\";\n G6Event[\"CONTEXTMENU\"] = \"contextmenu\";\n G6Event[\"MOUSEENTER\"] = \"mouseenter\";\n G6Event[\"MOUSEOUT\"] = \"mouseout\";\n G6Event[\"MOUSEOVER\"] = \"mouseover\";\n G6Event[\"MOUSEMOVE\"] = \"mousemove\";\n G6Event[\"MOUSELEAVE\"] = \"mouseleave\";\n G6Event[\"DRAGSTART\"] = \"dragstart\";\n G6Event[\"DRAGEND\"] = \"dragend\";\n G6Event[\"DRAG\"] = \"drag\";\n G6Event[\"DRAGENTER\"] = \"dragenter\";\n G6Event[\"DRAGLEAVE\"] = \"dragleave\";\n G6Event[\"DRAGOVER\"] = \"dragover\";\n G6Event[\"DRAGOUT\"] = \"dragout\";\n G6Event[\"DDROP\"] = \"drop\";\n G6Event[\"KEYUP\"] = \"keyup\";\n G6Event[\"KEYDOWN\"] = \"keydown\";\n G6Event[\"WHEEL\"] = \"wheel\";\n G6Event[\"FOCUS\"] = \"focus\";\n G6Event[\"BLUR\"] = \"blur\"; // touch events\n\n G6Event[\"TOUCHSTART\"] = \"touchstart\";\n G6Event[\"TOUCHMOVE\"] = \"touchmove\";\n G6Event[\"TOUCHEND\"] = \"touchend\";\n G6Event[\"CANVAS_TOUCHSTART\"] = \"canvas:touchstart\";\n G6Event[\"CANVAS_TOUCHMOVE\"] = \"canvas:touchmove\";\n G6Event[\"CANVAS_TOUCHEND\"] = \"canvas:touchend\";\n G6Event[\"NODE_TOUCHSTART\"] = \"node:touchstart\";\n G6Event[\"NODE_TOUCHMOVE\"] = \"node:touchmove\";\n G6Event[\"NODE_TOUCHEND\"] = \"node:touchend\";\n G6Event[\"COMBO_TOUCHSTART\"] = \"combo:touchstart\";\n G6Event[\"COMBO_TOUCHMOVE\"] = \"combo:touchmove\";\n G6Event[\"COMBO_TOUCHEND\"] = \"combo:touchend\";\n G6Event[\"EDGE_TOUCHSTART\"] = \"edge:touchstart\";\n G6Event[\"EDGE_TOUCHMOVE\"] = \"edge:touchmove\";\n G6Event[\"EDGE_TOUCHEND\"] = \"edge:touchend\"; // node events\n\n G6Event[\"NODE_CONTEXTMENU\"] = \"node:contextmenu\";\n G6Event[\"NODE_CLICK\"] = \"node:click\";\n G6Event[\"NODE_DBLCLICK\"] = \"node:dblclick\";\n G6Event[\"NODE_MOUSEDOWN\"] = \"node:mousedown\";\n G6Event[\"NODE_MOUSEUP\"] = \"node:mouseup\";\n G6Event[\"NODE_MOUSEENTER\"] = \"node:mouseenter\";\n G6Event[\"NODE_MOUSELEAVE\"] = \"node:mouseleave\";\n G6Event[\"NODE_MOUSEMOVE\"] = \"node:mousemove\";\n G6Event[\"NODE_MOUSEOUT\"] = \"node:mouseout\";\n G6Event[\"NODE_MOUSEOVER\"] = \"node:mouseover\";\n G6Event[\"NODE_DROP\"] = \"node:drop\";\n G6Event[\"NODE_DRAGOVER\"] = \"node:dragover\";\n G6Event[\"NODE_DRAGENTER\"] = \"node:dragenter\";\n G6Event[\"NODE_DRAGLEAVE\"] = \"node:dragleave\";\n G6Event[\"NODE_DRAGSTART\"] = \"node:dragstart\";\n G6Event[\"NODE_DRAG\"] = \"node:drag\";\n G6Event[\"NODE_DRAGEND\"] = \"node:dragend\";\n G6Event[\"NODE_TAP\"] = \"node:tap\";\n G6Event[\"NODE_PANSTART\"] = \"node:panstart\";\n G6Event[\"NODE_PANMOVE\"] = \"node:panmove\";\n G6Event[\"NODE_PANEND\"] = \"node:panend\"; // combo, extends from nodes\n\n G6Event[\"COMBO_CONTEXTMENU\"] = \"combo:contextmenu\";\n G6Event[\"COMBO_CLICK\"] = \"combo:click\";\n G6Event[\"COMBO_DBLCLICK\"] = \"combo:dblclick\";\n G6Event[\"COMBO_MOUSEDOWN\"] = \"combo:mousedown\";\n G6Event[\"COMBO_MOUSEUP\"] = \"combo:mouseup\";\n G6Event[\"COMBO_MOUSEENTER\"] = \"combo:mouseenter\";\n G6Event[\"COMBO_MOUSELEAVE\"] = \"combo:mouseleave\";\n G6Event[\"COMBO_MOUSEMOVE\"] = \"combo:mousemove\";\n G6Event[\"COMBO_MOUSEOUT\"] = \"combo:mouseout\";\n G6Event[\"COMBO_MOUSEOVER\"] = \"combo:mouseover\";\n G6Event[\"COMBO_DROP\"] = \"combo:drop\";\n G6Event[\"COMBO_DRAGOVER\"] = \"combo:dragover\";\n G6Event[\"COMBO_DRAGENTER\"] = \"combo:dragenter\";\n G6Event[\"COMBO_DRAGLEAVE\"] = \"combo:dragleave\";\n G6Event[\"COMBO_DRAGSTART\"] = \"combo:dragstart\";\n G6Event[\"COMBO_DRAG\"] = \"combo:drag\";\n G6Event[\"COMBO_DRAGEND\"] = \"combo:dragend\";\n G6Event[\"COMBO_TAP\"] = \"combo:tap\";\n G6Event[\"COMBO_PANSTART\"] = \"combo:panstart\";\n G6Event[\"COMBO_PANMOVE\"] = \"combo:panmove\";\n G6Event[\"COMBO_PANEND\"] = \"combo:panend\"; // edge events\n\n G6Event[\"EDGE_CONTEXTMENU\"] = \"edge:contextmenu\";\n G6Event[\"EDGE_CLICK\"] = \"edge:click\";\n G6Event[\"EDGE_DBLCLICK\"] = \"edge:dblclick\";\n G6Event[\"EDGE_MOUSEDOWN\"] = \"edge:mousedown\";\n G6Event[\"EDGE_MOUSEUP\"] = \"edge:mouseup\";\n G6Event[\"EDGE_MOUSEENTER\"] = \"edge:mouseenter\";\n G6Event[\"EDGE_MOUSELEAVE\"] = \"edge:mouseleave\";\n G6Event[\"EDGE_MOUSEMOVE\"] = \"edge:mousemove\";\n G6Event[\"EDGE_MOUSEOUT\"] = \"edge:mouseout\";\n G6Event[\"EDGE_MOUSEOVER\"] = \"edge:mouseover\";\n G6Event[\"EDGE_DROP\"] = \"edge:drop\";\n G6Event[\"EDGE_DRAGOVER\"] = \"edge:dragover\";\n G6Event[\"EDGE_DRAGENTER\"] = \"edge:dragenter\";\n G6Event[\"EDGE_DRAGLEAVE\"] = \"edge:dragleave\"; // canvas events\n\n G6Event[\"CANVAS_CONTEXTMENU\"] = \"canvas:contextmenu\";\n G6Event[\"CANVAS_CLICK\"] = \"canvas:click\";\n G6Event[\"CANVAS_DBLCLICK\"] = \"canvas:dblclick\";\n G6Event[\"CANVAS_MOUSEDOWN\"] = \"canvas:mousedown\";\n G6Event[\"CANVAS_MOUSEUP\"] = \"canvas:mouseup\";\n G6Event[\"CANVAS_MOUSEENTER\"] = \"canvas:mouseenter\";\n G6Event[\"CANVAS_MOUSELEAVE\"] = \"canvas:mouseleave\";\n G6Event[\"CANVAS_MOUSEMOVE\"] = \"canvas:mousemove\";\n G6Event[\"CANVAS_MOUSEOUT\"] = \"canvas:mouseout\";\n G6Event[\"CANVAS_MOUSEOVER\"] = \"canvas:mouseover\";\n G6Event[\"CANVAS_DROP\"] = \"canvas:drop\";\n G6Event[\"CANVAS_DRAGENTER\"] = \"canvas:dragenter\";\n G6Event[\"CANVAS_DRAGLEAVE\"] = \"canvas:dragleave\";\n G6Event[\"CANVAS_DRAGSTART\"] = \"canvas:dragstart\";\n G6Event[\"CANVAS_DRAG\"] = \"canvas:drag\";\n G6Event[\"CANVAS_DRAGEND\"] = \"canvas:dragend\";\n G6Event[\"CANVAS_TAP\"] = \"canvas:tap\";\n G6Event[\"CANVAS_PANSTART\"] = \"canvas:panstart\";\n G6Event[\"CANVAS_PANMOVE\"] = \"canvas:panmove\";\n G6Event[\"CANVAS_PANEND\"] = \"canvas:panend\"; // timing events\n\n G6Event[\"BEFORERENDER\"] = \"beforerender\";\n G6Event[\"AFTERRENDER\"] = \"afterrender\";\n G6Event[\"BEFOREADDITEM\"] = \"beforeadditem\";\n G6Event[\"AFTERADDITEM\"] = \"afteradditem\";\n G6Event[\"BEFOREREMOVEITEM\"] = \"beforeremoveitem\";\n G6Event[\"AFTERREMOVEITEM\"] = \"afterremoveitem\";\n G6Event[\"BEFOREUPDATEITEM\"] = \"beforeupdateitem\";\n G6Event[\"AFTERUPDATEITEM\"] = \"afterupdateitem\";\n G6Event[\"BEFOREITEMVISIBILITYCHANGE\"] = \"beforeitemvisibilitychange\";\n G6Event[\"AFTERITEMVISIBILITYCHANGE\"] = \"afteritemvisibilitychange\";\n G6Event[\"BEFOREITEMSTATECHANGE\"] = \"beforeitemstatechange\";\n G6Event[\"AFTERITEMSTATECHANGE\"] = \"afteritemstatechange\";\n G6Event[\"BEFOREITEMREFRESH\"] = \"beforeitemrefresh\";\n G6Event[\"AFTERITEMREFRESH\"] = \"afteritemrefresh\";\n G6Event[\"BEFOREITEMSTATESCLEAR\"] = \"beforeitemstatesclear\";\n G6Event[\"AFTERITEMSTATESCLEAR\"] = \"afteritemstatesclear\";\n G6Event[\"BEFOREMODECHANGE\"] = \"beforemodechange\";\n G6Event[\"AFTERMODECHANGE\"] = \"aftermodechange\";\n G6Event[\"BEFORELAYOUT\"] = \"beforelayout\";\n G6Event[\"AFTERLAYOUT\"] = \"afterlayout\";\n G6Event[\"BEFORECREATEEDGE\"] = \"beforecreateedge\";\n G6Event[\"AFTERCREATEEDGE\"] = \"aftercreateedge\";\n G6Event[\"BEFOREGRAPHREFRESHPOSITION\"] = \"beforegraphrefreshposition\";\n G6Event[\"AFTERGRAPHREFRESHPOSITION\"] = \"aftergraphrefreshposition\";\n G6Event[\"BEFOREGRAPHREFRESH\"] = \"beforegraphrefresh\";\n G6Event[\"AFTERGRAPHREFRESH\"] = \"aftergraphrefresh\";\n G6Event[\"BEFOREANIMATE\"] = \"beforeanimate\";\n G6Event[\"AFTERANIMATE\"] = \"afteranimate\";\n G6Event[\"BEFOREPAINT\"] = \"beforepaint\";\n G6Event[\"AFTERPAINT\"] = \"afterpaint\";\n G6Event[\"BEFORECOLLAPSEEXPANDCOMBO\"] = \"beforecollapseexpandcombo\";\n G6Event[\"AFTERCOLLAPSEEXPANDCOMBO\"] = \"aftercollapseexpandcombo\";\n G6Event[\"GRAPHSTATECHANGE\"] = \"graphstatechange\";\n G6Event[\"AFTERACTIVATERELATIONS\"] = \"afteractivaterelations\";\n G6Event[\"NODESELECTCHANGE\"] = \"nodeselectchange\";\n G6Event[\"TOOLTIPCHANGE\"] = \"tooltipchange\";\n G6Event[\"WHEELZOOM\"] = \"wheelzoom\";\n G6Event[\"VIEWPORTCHANGE\"] = \"viewportchange\";\n G6Event[\"DRAGNODEEND\"] = \"dragnodeend\";\n G6Event[\"STACKCHANGE\"] = \"stackchange\"; // Mobile event support\n\n G6Event[\"TAP\"] = \"tap\";\n G6Event[\"PINCHSTART\"] = \"pinchstart\";\n G6Event[\"PINCHMOVE\"] = \"pinchmove\";\n G6Event[\"PANSTART\"] = \"panstart\";\n G6Event[\"PANMOVE\"] = \"panmove\";\n G6Event[\"PANEND\"] = \"panend\";\n})(G6Event || (G6Event = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy90eXBlcy9pbmRleC5qcz8xZGU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkI7O0FBRXRCOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsMEJBQTBCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvdHlwZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuLi9pbnRlcmZhY2UnOyAvLyBCZWhhdmlvciB0eXBlIGZpbGVcblxuZXhwb3J0IHZhciBHNkV2ZW50O1xuXG4oZnVuY3Rpb24gKEc2RXZlbnQpIHtcbiAgLy8gY29tbW9uIGV2ZW50c1xuICBHNkV2ZW50W1wiQ0xJQ0tcIl0gPSBcImNsaWNrXCI7XG4gIEc2RXZlbnRbXCJEQkxDTElDS1wiXSA9IFwiZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk1PVVNFRE9XTlwiXSA9IFwibW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJNT1VERVVQXCJdID0gXCJtb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT05URVhUTUVOVVwiXSA9IFwiY29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk1PVVNFRU5URVJcIl0gPSBcIm1vdXNlZW50ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFT1VUXCJdID0gXCJtb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiTU9VU0VPVkVSXCJdID0gXCJtb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFTU9WRVwiXSA9IFwibW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJNT1VTRUxFQVZFXCJdID0gXCJtb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHU1RBUlRcIl0gPSBcImRyYWdzdGFydFwiO1xuICBHNkV2ZW50W1wiRFJBR0VORFwiXSA9IFwiZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiRFJBR1wiXSA9IFwiZHJhZ1wiO1xuICBHNkV2ZW50W1wiRFJBR0VOVEVSXCJdID0gXCJkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdMRUFWRVwiXSA9IFwiZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHT1ZFUlwiXSA9IFwiZHJhZ292ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdPVVRcIl0gPSBcImRyYWdvdXRcIjtcbiAgRzZFdmVudFtcIkREUk9QXCJdID0gXCJkcm9wXCI7XG4gIEc2RXZlbnRbXCJLRVlVUFwiXSA9IFwia2V5dXBcIjtcbiAgRzZFdmVudFtcIktFWURPV05cIl0gPSBcImtleWRvd25cIjtcbiAgRzZFdmVudFtcIldIRUVMXCJdID0gXCJ3aGVlbFwiO1xuICBHNkV2ZW50W1wiRk9DVVNcIl0gPSBcImZvY3VzXCI7XG4gIEc2RXZlbnRbXCJCTFVSXCJdID0gXCJibHVyXCI7IC8vIHRvdWNoIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJUT1VDSFNUQVJUXCJdID0gXCJ0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJUT1VDSE1PVkVcIl0gPSBcInRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiVE9VQ0hFTkRcIl0gPSBcInRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfVE9VQ0hTVEFSVFwiXSA9IFwiY2FudmFzOnRvdWNoc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSE1PVkVcIl0gPSBcImNhbnZhczp0b3VjaG1vdmVcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSEVORFwiXSA9IFwiY2FudmFzOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIU1RBUlRcIl0gPSBcIm5vZGU6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9UT1VDSE1PVkVcIl0gPSBcIm5vZGU6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIRU5EXCJdID0gXCJub2RlOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSFNUQVJUXCJdID0gXCJjb21ibzp0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSE1PVkVcIl0gPSBcImNvbWJvOnRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fVE9VQ0hFTkRcIl0gPSBcImNvbWJvOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIU1RBUlRcIl0gPSBcImVkZ2U6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiRURHRV9UT1VDSE1PVkVcIl0gPSBcImVkZ2U6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIRU5EXCJdID0gXCJlZGdlOnRvdWNoZW5kXCI7IC8vIG5vZGUgZXZlbnRzXG5cbiAgRzZFdmVudFtcIk5PREVfQ09OVEVYVE1FTlVcIl0gPSBcIm5vZGU6Y29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk5PREVfQ0xJQ0tcIl0gPSBcIm5vZGU6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfREJMQ0xJQ0tcIl0gPSBcIm5vZGU6ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VET1dOXCJdID0gXCJub2RlOm1vdXNlZG93blwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRVVQXCJdID0gXCJub2RlOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VFTlRFUlwiXSA9IFwibm9kZTptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFTEVBVkVcIl0gPSBcIm5vZGU6bW91c2VsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRU1PVkVcIl0gPSBcIm5vZGU6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1VUXCJdID0gXCJub2RlOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1ZFUlwiXSA9IFwibm9kZTptb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJPUFwiXSA9IFwibm9kZTpkcm9wXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdPVkVSXCJdID0gXCJub2RlOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdFTlRFUlwiXSA9IFwibm9kZTpkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJBR0xFQVZFXCJdID0gXCJub2RlOmRyYWdsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHU1RBUlRcIl0gPSBcIm5vZGU6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdcIl0gPSBcIm5vZGU6ZHJhZ1wiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHRU5EXCJdID0gXCJub2RlOmRyYWdlbmRcIjtcbiAgRzZFdmVudFtcIk5PREVfVEFQXCJdID0gXCJub2RlOnRhcFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5TVEFSVFwiXSA9IFwibm9kZTpwYW5zdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5NT1ZFXCJdID0gXCJub2RlOnBhbm1vdmVcIjtcbiAgRzZFdmVudFtcIk5PREVfUEFORU5EXCJdID0gXCJub2RlOnBhbmVuZFwiOyAvLyBjb21ibywgZXh0ZW5kcyBmcm9tIG5vZGVzXG5cbiAgRzZFdmVudFtcIkNPTUJPX0NPTlRFWFRNRU5VXCJdID0gXCJjb21ibzpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fQ0xJQ0tcIl0gPSBcImNvbWJvOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EQkxDTElDS1wiXSA9IFwiY29tYm86ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIkNPTUJPX01PVVNFRE9XTlwiXSA9IFwiY29tYm86bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRVVQXCJdID0gXCJjb21ibzptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUVOVEVSXCJdID0gXCJjb21ibzptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUxFQVZFXCJdID0gXCJjb21ibzptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU1PVkVcIl0gPSBcImNvbWJvOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fTU9VU0VPVVRcIl0gPSBcImNvbWJvOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU9WRVJcIl0gPSBcImNvbWJvOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJPUFwiXSA9IFwiY29tYm86ZHJvcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR09WRVJcIl0gPSBcImNvbWJvOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5URVJcIl0gPSBcImNvbWJvOmRyYWdlbnRlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR0xFQVZFXCJdID0gXCJjb21ibzpkcmFnbGVhdmVcIjtcbiAgRzZFdmVudFtcIkNPTUJPX0RSQUdTVEFSVFwiXSA9IFwiY29tYm86ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHXCJdID0gXCJjb21ibzpkcmFnXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5EXCJdID0gXCJjb21ibzpkcmFnZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UQVBcIl0gPSBcImNvbWJvOnRhcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fUEFOU1RBUlRcIl0gPSBcImNvbWJvOnBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5NT1ZFXCJdID0gXCJjb21ibzpwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5FTkRcIl0gPSBcImNvbWJvOnBhbmVuZFwiOyAvLyBlZGdlIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJFREdFX0NPTlRFWFRNRU5VXCJdID0gXCJlZGdlOmNvbnRleHRtZW51XCI7XG4gIEc2RXZlbnRbXCJFREdFX0NMSUNLXCJdID0gXCJlZGdlOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RCTENMSUNLXCJdID0gXCJlZGdlOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRE9XTlwiXSA9IFwiZWRnZTptb3VzZWRvd25cIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VVUFwiXSA9IFwiZWRnZTptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRU5URVJcIl0gPSBcImVkZ2U6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRUxFQVZFXCJdID0gXCJlZGdlOm1vdXNlbGVhdmVcIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VNT1ZFXCJdID0gXCJlZGdlOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9VVFwiXSA9IFwiZWRnZTptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9WRVJcIl0gPSBcImVkZ2U6bW91c2VvdmVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RST1BcIl0gPSBcImVkZ2U6ZHJvcFwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHT1ZFUlwiXSA9IFwiZWRnZTpkcmFnb3ZlclwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHRU5URVJcIl0gPSBcImVkZ2U6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RSQUdMRUFWRVwiXSA9IFwiZWRnZTpkcmFnbGVhdmVcIjsgLy8gY2FudmFzIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJDQU5WQVNfQ09OVEVYVE1FTlVcIl0gPSBcImNhbnZhczpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0NMSUNLXCJdID0gXCJjYW52YXM6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EQkxDTElDS1wiXSA9IFwiY2FudmFzOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VET1dOXCJdID0gXCJjYW52YXM6bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VVUFwiXSA9IFwiY2FudmFzOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19NT1VTRUVOVEVSXCJdID0gXCJjYW52YXM6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFTEVBVkVcIl0gPSBcImNhbnZhczptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VNT1ZFXCJdID0gXCJjYW52YXM6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VPVVRcIl0gPSBcImNhbnZhczptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFT1ZFUlwiXSA9IFwiY2FudmFzOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0RST1BcIl0gPSBcImNhbnZhczpkcm9wXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0VOVEVSXCJdID0gXCJjYW52YXM6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0xFQVZFXCJdID0gXCJjYW52YXM6ZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1NUQVJUXCJdID0gXCJjYW52YXM6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1wiXSA9IFwiY2FudmFzOmRyYWdcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EUkFHRU5EXCJdID0gXCJjYW52YXM6ZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1RBUFwiXSA9IFwiY2FudmFzOnRhcFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTlNUQVJUXCJdID0gXCJjYW52YXM6cGFuc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19QQU5NT1ZFXCJdID0gXCJjYW52YXM6cGFubW92ZVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTkVORFwiXSA9IFwiY2FudmFzOnBhbmVuZFwiOyAvLyB0aW1pbmcgZXZlbnRzXG5cbiAgRzZFdmVudFtcIkJFRk9SRVJFTkRFUlwiXSA9IFwiYmVmb3JlcmVuZGVyXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTkRFUlwiXSA9IFwiYWZ0ZXJyZW5kZXJcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUFERElURU1cIl0gPSBcImJlZm9yZWFkZGl0ZW1cIjtcbiAgRzZFdmVudFtcIkFGVEVSQURESVRFTVwiXSA9IFwiYWZ0ZXJhZGRpdGVtXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVSRU1PVkVJVEVNXCJdID0gXCJiZWZvcmVyZW1vdmVpdGVtXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTU9WRUlURU1cIl0gPSBcImFmdGVycmVtb3ZlaXRlbVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFVVBEQVRFSVRFTVwiXSA9IFwiYmVmb3JldXBkYXRlaXRlbVwiO1xuICBHNkV2ZW50W1wiQUZURVJVUERBVEVJVEVNXCJdID0gXCJhZnRlcnVwZGF0ZWl0ZW1cIjtcbiAgRzZFdmVudFtcIkJFRk9SRUlURU1WSVNJQklMSVRZQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNVklTSUJJTElUWUNIQU5HRVwiXSA9IFwiYWZ0ZXJpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJhZnRlcml0ZW1zdGF0ZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVJFRlJFU0hcIl0gPSBcImJlZm9yZWl0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJBRlRFUklURU1SRUZSRVNIXCJdID0gXCJhZnRlcml0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImJlZm9yZWl0ZW1zdGF0ZXNjbGVhclwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImFmdGVyaXRlbXN0YXRlc2NsZWFyXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVNT0RFQ0hBTkdFXCJdID0gXCJiZWZvcmVtb2RlY2hhbmdlXCI7XG4gIEc2RXZlbnRbXCJBRlRFUk1PREVDSEFOR0VcIl0gPSBcImFmdGVybW9kZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFTEFZT1VUXCJdID0gXCJiZWZvcmVsYXlvdXRcIjtcbiAgRzZFdmVudFtcIkFGVEVSTEFZT1VUXCJdID0gXCJhZnRlcmxheW91dFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ1JFQVRFRURHRVwiXSA9IFwiYmVmb3JlY3JlYXRlZWRnZVwiO1xuICBHNkV2ZW50W1wiQUZURVJDUkVBVEVFREdFXCJdID0gXCJhZnRlcmNyZWF0ZWVkZ2VcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUdSQVBIUkVGUkVTSFBPU0lUSU9OXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQUZURVJHUkFQSFJFRlJFU0hQT1NJVElPTlwiXSA9IFwiYWZ0ZXJncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQkVGT1JFR1JBUEhSRUZSRVNIXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hcIjtcbiAgRzZFdmVudFtcIkFGVEVSR1JBUEhSRUZSRVNIXCJdID0gXCJhZnRlcmdyYXBocmVmcmVzaFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQU5JTUFURVwiXSA9IFwiYmVmb3JlYW5pbWF0ZVwiO1xuICBHNkV2ZW50W1wiQUZURVJBTklNQVRFXCJdID0gXCJhZnRlcmFuaW1hdGVcIjtcbiAgRzZFdmVudFtcIkJFRk9SRVBBSU5UXCJdID0gXCJiZWZvcmVwYWludFwiO1xuICBHNkV2ZW50W1wiQUZURVJQQUlOVFwiXSA9IFwiYWZ0ZXJwYWludFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ09MTEFQU0VFWFBBTkRDT01CT1wiXSA9IFwiYmVmb3JlY29sbGFwc2VleHBhbmRjb21ib1wiO1xuICBHNkV2ZW50W1wiQUZURVJDT0xMQVBTRUVYUEFORENPTUJPXCJdID0gXCJhZnRlcmNvbGxhcHNlZXhwYW5kY29tYm9cIjtcbiAgRzZFdmVudFtcIkdSQVBIU1RBVEVDSEFOR0VcIl0gPSBcImdyYXBoc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSQUNUSVZBVEVSRUxBVElPTlNcIl0gPSBcImFmdGVyYWN0aXZhdGVyZWxhdGlvbnNcIjtcbiAgRzZFdmVudFtcIk5PREVTRUxFQ1RDSEFOR0VcIl0gPSBcIm5vZGVzZWxlY3RjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIlRPT0xUSVBDSEFOR0VcIl0gPSBcInRvb2x0aXBjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIldIRUVMWk9PTVwiXSA9IFwid2hlZWx6b29tXCI7XG4gIEc2RXZlbnRbXCJWSUVXUE9SVENIQU5HRVwiXSA9IFwidmlld3BvcnRjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkRSQUdOT0RFRU5EXCJdID0gXCJkcmFnbm9kZWVuZFwiO1xuICBHNkV2ZW50W1wiU1RBQ0tDSEFOR0VcIl0gPSBcInN0YWNrY2hhbmdlXCI7IC8vIE1vYmlsZSBldmVudCBzdXBwb3J0XG5cbiAgRzZFdmVudFtcIlRBUFwiXSA9IFwidGFwXCI7XG4gIEc2RXZlbnRbXCJQSU5DSFNUQVJUXCJdID0gXCJwaW5jaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQSU5DSE1PVkVcIl0gPSBcInBpbmNobW92ZVwiO1xuICBHNkV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcInBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQQU5NT1ZFXCJdID0gXCJwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJQQU5FTkRcIl0gPSBcInBhbmVuZFwiO1xufSkoRzZFdmVudCB8fCAoRzZFdmVudCA9IHt9KSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/types/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/base.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/base.js ***!
\****************************************************/
/*! exports provided: uniqueId, formatPadding, cloneEvent, isViewportChanged, isNaN, calculationItemsBBox, processParallelEdges */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPadding\", function() { return formatPadding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneEvent\", function() { return cloneEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isViewportChanged\", function() { return isViewportChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculationItemsBBox\", function() { return calculationItemsBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processParallelEdges\", function() { return processParallelEdges; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _interface_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../interface/behavior */ \"./node_modules/@antv/g6-core/es/interface/behavior.js\");\n\n\nvar uniqueId = function uniqueId(type) {\n return \"\".concat(type, \"-\").concat(Math.random()).concat(Date.now());\n};\n/**\n * turn padding into [top, right, bottom, right]\n * @param {Number|Array} padding input padding\n * @return {array} output\n */\n\nvar formatPadding = function formatPadding(padding) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(padding)) {\n switch (padding.length) {\n case 4:\n return padding;\n\n case 3:\n padding.push(padding[1]);\n return padding;\n\n case 2:\n return padding.concat(padding);\n\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n\n default:\n return [0, 0, 0, 0];\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(padding)) {\n return [padding, padding, padding, padding];\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(padding)) {\n var intPadding = parseInt(padding, 10);\n return [intPadding, intPadding, intPadding, intPadding];\n }\n\n return [0, 0, 0, 0];\n};\n/**\n * clone event\n * @param e\n */\n\nvar cloneEvent = function cloneEvent(e) {\n var event = new _interface_behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"](e.type, e);\n event.clientX = e.clientX;\n event.clientY = e.clientY;\n event.x = e.x;\n event.y = e.y;\n event.target = e.target;\n event.currentTarget = e.currentTarget;\n event.bubbles = true;\n event.item = e.item;\n return event;\n};\n/**\n * 判断 viewport 是否改变,通过和单位矩阵对比\n * @param matrix Viewport 的 Matrix\n */\n\nvar isViewportChanged = function isViewportChanged(matrix) {\n // matrix 为 null, 则说明没有变化\n if (!matrix) {\n return false;\n }\n\n var MATRIX_LEN = 9;\n var ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n for (var i = 0; i < MATRIX_LEN; i++) {\n if (matrix[i] !== ORIGIN_MATRIX[i]) {\n return true;\n }\n }\n\n return false;\n};\nvar isNaN = function isNaN(input) {\n return Number.isNaN(Number(input));\n};\n/**\n * 计算一组 Item 的 BBox\n * @param items 选中的一组Item,可以是 node 或 combo\n */\n\nvar calculationItemsBBox = function calculationItemsBBox(items) {\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < items.length; i++) {\n var element = items[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny,\n maxX: maxx,\n maxY: maxy\n };\n};\n/**\n * 若 edges 中存在两端点相同的边,使用 quadratic 边并自动计算 curveOffset 使它们不相互重叠\n * 文档: https://g6.antv.vision/en/docs/api/Util\n * @param edges 边数据集合\n * @param offsetDiff 相邻两边的 offset 之差\n * @param multiEdgeType\n * @param singleEdgeType\n * @param loopEdgeType\n */\n\nvar processParallelEdges = function processParallelEdges(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) {\n if (offsetDiff === void 0) {\n offsetDiff = 15;\n }\n\n if (multiEdgeType === void 0) {\n multiEdgeType = 'quadratic';\n }\n\n if (singleEdgeType === void 0) {\n singleEdgeType = undefined;\n }\n\n if (loopEdgeType === void 0) {\n loopEdgeType = undefined;\n }\n\n var len = edges.length;\n var cod = offsetDiff * 2;\n var loopPosition = ['top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left'];\n var edgeMap = {};\n var tags = [];\n var reverses = {};\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n var source = edge.source,\n target = edge.target;\n var sourceTarget = \"\".concat(source, \"-\").concat(target);\n if (tags[i]) continue;\n\n if (!edgeMap[sourceTarget]) {\n edgeMap[sourceTarget] = [];\n }\n\n tags[i] = true;\n edgeMap[sourceTarget].push(edge);\n\n for (var j = 0; j < len; j++) {\n if (i === j) continue;\n var sedge = edges[j];\n var src = sedge.source;\n var dst = sedge.target; // 两个节点之间共同的边\n // 第一条的source = 第二条的target\n // 第一条的target = 第二条的source\n\n if (!tags[j]) {\n if (source === dst && target === src) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n reverses[\"\".concat(src, \"|\").concat(dst, \"|\").concat(edgeMap[sourceTarget].length - 1)] = true;\n } else if (source === src && target === dst) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n }\n }\n }\n }\n\n for (var key in edgeMap) {\n var arcEdges = edgeMap[key];\n var length_1 = arcEdges.length;\n\n for (var k = 0; k < length_1; k++) {\n var current = arcEdges[k];\n\n if (current.source === current.target) {\n if (loopEdgeType) current.type = loopEdgeType; // 超过8条自环边,则需要重新处理\n\n current.loopCfg = {\n position: loopPosition[k % 8],\n dist: Math.floor(k / 8) * 20 + 50\n };\n continue;\n }\n\n if (length_1 === 1 && singleEdgeType && current.source !== current.target) {\n current.type = singleEdgeType;\n continue;\n }\n\n current.type = multiEdgeType;\n var sign = (k % 2 === 0 ? 1 : -1) * (reverses[\"\".concat(current.source, \"|\").concat(current.target, \"|\").concat(k)] ? -1 : 1);\n\n if (length_1 % 2 === 1) {\n current.curveOffset = sign * Math.ceil(k / 2) * cod;\n } else {\n current.curveOffset = sign * (Math.floor(k / 2) * cod + offsetDiff);\n }\n }\n }\n\n return edges;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanM/NjYxOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5RDtBQUNKO0FBQzlDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1AsTUFBTSwwREFBTztBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sMkRBQVE7QUFDZDtBQUNBLEdBQUcsVUFBVSwyREFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1Asa0JBQWtCLGdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QixpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixjQUFjO0FBQ2pDOztBQUVBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgaXNOdW1iZXIsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IEc2R3JhcGhFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZS9iZWhhdmlvcic7XG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQodHlwZSkge1xuICByZXR1cm4gXCJcIi5jb25jYXQodHlwZSwgXCItXCIpLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5jb25jYXQoRGF0ZS5ub3coKSk7XG59O1xuLyoqXG4gKiB0dXJuIHBhZGRpbmcgaW50byBbdG9wLCByaWdodCwgYm90dG9tLCByaWdodF1cbiAqIEBwYXJhbSAge051bWJlcnxBcnJheX0gcGFkZGluZyBpbnB1dCBwYWRkaW5nXG4gKiBAcmV0dXJuIHthcnJheX0gb3V0cHV0XG4gKi9cblxuZXhwb3J0IHZhciBmb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gZm9ybWF0UGFkZGluZyhwYWRkaW5nKSB7XG4gIGlmIChpc0FycmF5KHBhZGRpbmcpKSB7XG4gICAgc3dpdGNoIChwYWRkaW5nLmxlbmd0aCkge1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gcGFkZGluZztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICBwYWRkaW5nLnB1c2gocGFkZGluZ1sxXSk7XG4gICAgICAgIHJldHVybiBwYWRkaW5nO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYWRkaW5nLmNvbmNhdChwYWRkaW5nKTtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gW3BhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF1dO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgIHJldHVybiBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICB2YXIgaW50UGFkZGluZyA9IHBhcnNlSW50KHBhZGRpbmcsIDEwKTtcbiAgICByZXR1cm4gW2ludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmddO1xuICB9XG5cbiAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbn07XG4vKipcbiAqIGNsb25lIGV2ZW50XG4gKiBAcGFyYW0gZVxuICovXG5cbmV4cG9ydCB2YXIgY2xvbmVFdmVudCA9IGZ1bmN0aW9uIGNsb25lRXZlbnQoZSkge1xuICB2YXIgZXZlbnQgPSBuZXcgRzZHcmFwaEV2ZW50KGUudHlwZSwgZSk7XG4gIGV2ZW50LmNsaWVudFggPSBlLmNsaWVudFg7XG4gIGV2ZW50LmNsaWVudFkgPSBlLmNsaWVudFk7XG4gIGV2ZW50LnggPSBlLng7XG4gIGV2ZW50LnkgPSBlLnk7XG4gIGV2ZW50LnRhcmdldCA9IGUudGFyZ2V0O1xuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICBldmVudC5idWJibGVzID0gdHJ1ZTtcbiAgZXZlbnQuaXRlbSA9IGUuaXRlbTtcbiAgcmV0dXJuIGV2ZW50O1xufTtcbi8qKlxuICog5Yik5patIHZpZXdwb3J0IOaYr+WQpuaUueWPmO+8jOmAmui/h+WSjOWNleS9jeefqemYteWvueavlFxuICogQHBhcmFtIG1hdHJpeCBWaWV3cG9ydCDnmoQgTWF0cml4XG4gKi9cblxuZXhwb3J0IHZhciBpc1ZpZXdwb3J0Q2hhbmdlZCA9IGZ1bmN0aW9uIGlzVmlld3BvcnRDaGFuZ2VkKG1hdHJpeCkge1xuICAvLyBtYXRyaXgg5Li6IG51bGzvvIwg5YiZ6K+05piO5rKh5pyJ5Y+Y5YyWXG4gIGlmICghbWF0cml4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE1BVFJJWF9MRU4gPSA5O1xuICB2YXIgT1JJR0lOX01BVFJJWCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IE1BVFJJWF9MRU47IGkrKykge1xuICAgIGlmIChtYXRyaXhbaV0gIT09IE9SSUdJTl9NQVRSSVhbaV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIGlzTmFOID0gZnVuY3Rpb24gaXNOYU4oaW5wdXQpIHtcbiAgcmV0dXJuIE51bWJlci5pc05hTihOdW1iZXIoaW5wdXQpKTtcbn07XG4vKipcbiAqIOiuoeeul+S4gOe7hCBJdGVtIOeahCBCQm94XG4gKiBAcGFyYW0gaXRlbXMg6YCJ5Lit55qE5LiA57uESXRlbe+8jOWPr+S7peaYryBub2RlIOaIliBjb21ib1xuICovXG5cbmV4cG9ydCB2YXIgY2FsY3VsYXRpb25JdGVtc0JCb3ggPSBmdW5jdGlvbiBjYWxjdWxhdGlvbkl0ZW1zQkJveChpdGVtcykge1xuICB2YXIgbWlueCA9IEluZmluaXR5O1xuICB2YXIgbWF4eCA9IC1JbmZpbml0eTtcbiAgdmFyIG1pbnkgPSBJbmZpbml0eTtcbiAgdmFyIG1heHkgPSAtSW5maW5pdHk7IC8vIOiOt+WPluW3suiKgueCueeahOaJgOacieacgOWkp+acgOWwj3ggeeWAvFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW1zW2ldO1xuICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIG1pblggPSBiYm94Lm1pblgsXG4gICAgICAgIG1pblkgPSBiYm94Lm1pblksXG4gICAgICAgIG1heFggPSBiYm94Lm1heFgsXG4gICAgICAgIG1heFkgPSBiYm94Lm1heFk7XG5cbiAgICBpZiAobWluWCA8IG1pbngpIHtcbiAgICAgIG1pbnggPSBtaW5YO1xuICAgIH1cblxuICAgIGlmIChtaW5ZIDwgbWlueSkge1xuICAgICAgbWlueSA9IG1pblk7XG4gICAgfVxuXG4gICAgaWYgKG1heFggPiBtYXh4KSB7XG4gICAgICBtYXh4ID0gbWF4WDtcbiAgICB9XG5cbiAgICBpZiAobWF4WSA+IG1heHkpIHtcbiAgICAgIG1heHkgPSBtYXhZO1xuICAgIH1cbiAgfVxuXG4gIHZhciB4ID0gTWF0aC5mbG9vcihtaW54KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKG1pbnkpO1xuICB2YXIgd2lkdGggPSBNYXRoLmNlaWwobWF4eCkgLSBNYXRoLmZsb29yKG1pbngpO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5jZWlsKG1heHkpIC0gTWF0aC5mbG9vcihtaW55KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIG1pblg6IG1pbngsXG4gICAgbWluWTogbWlueSxcbiAgICBtYXhYOiBtYXh4LFxuICAgIG1heFk6IG1heHlcbiAgfTtcbn07XG4vKipcbiAqIOiLpSBlZGdlcyDkuK3lrZjlnKjkuKTnq6/ngrnnm7jlkIznmoTovrnvvIzkvb/nlKggcXVhZHJhdGljIOi+ueW5tuiHquWKqOiuoeeulyBjdXJ2ZU9mZnNldCDkvb/lroPku6zkuI3nm7jkupLph43lj6BcbiAqIOaWh+ahozogaHR0cHM6Ly9nNi5hbnR2LnZpc2lvbi9lbi9kb2NzL2FwaS9VdGlsXG4gKiBAcGFyYW0gZWRnZXMg6L655pWw5o2u6ZuG5ZCIXG4gKiBAcGFyYW0gb2Zmc2V0RGlmZiDnm7jpgrvkuKTovrnnmoQgb2Zmc2V0IOS5i+W3rlxuICogQHBhcmFtIG11bHRpRWRnZVR5cGVcbiAqIEBwYXJhbSBzaW5nbGVFZGdlVHlwZVxuICogQHBhcmFtIGxvb3BFZGdlVHlwZVxuICovXG5cbmV4cG9ydCB2YXIgcHJvY2Vzc1BhcmFsbGVsRWRnZXMgPSBmdW5jdGlvbiBwcm9jZXNzUGFyYWxsZWxFZGdlcyhlZGdlcywgb2Zmc2V0RGlmZiwgbXVsdGlFZGdlVHlwZSwgc2luZ2xlRWRnZVR5cGUsIGxvb3BFZGdlVHlwZSkge1xuICBpZiAob2Zmc2V0RGlmZiA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0RGlmZiA9IDE1O1xuICB9XG5cbiAgaWYgKG11bHRpRWRnZVR5cGUgPT09IHZvaWQgMCkge1xuICAgIG11bHRpRWRnZVR5cGUgPSAncXVhZHJhdGljJztcbiAgfVxuXG4gIGlmIChzaW5nbGVFZGdlVHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgc2luZ2xlRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAobG9vcEVkZ2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBsb29wRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgbGVuID0gZWRnZXMubGVuZ3RoO1xuICB2YXIgY29kID0gb2Zmc2V0RGlmZiAqIDI7XG4gIHZhciBsb29wUG9zaXRpb24gPSBbJ3RvcCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbScsICdib3R0b20tbGVmdCcsICdsZWZ0JywgJ3RvcC1sZWZ0J107XG4gIHZhciBlZGdlTWFwID0ge307XG4gIHZhciB0YWdzID0gW107XG4gIHZhciByZXZlcnNlcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHNvdXJjZVRhcmdldCA9IFwiXCIuY29uY2F0KHNvdXJjZSwgXCItXCIpLmNvbmNhdCh0YXJnZXQpO1xuICAgIGlmICh0YWdzW2ldKSBjb250aW51ZTtcblxuICAgIGlmICghZWRnZU1hcFtzb3VyY2VUYXJnZXRdKSB7XG4gICAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0gPSBbXTtcbiAgICB9XG5cbiAgICB0YWdzW2ldID0gdHJ1ZTtcbiAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0ucHVzaChlZGdlKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBzZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgdmFyIHNyYyA9IHNlZGdlLnNvdXJjZTtcbiAgICAgIHZhciBkc3QgPSBzZWRnZS50YXJnZXQ7IC8vIOS4pOS4quiKgueCueS5i+mXtOWFseWQjOeahOi+uVxuICAgICAgLy8g56ys5LiA5p2h55qEc291cmNlID0g56ys5LqM5p2h55qEdGFyZ2V0XG4gICAgICAvLyDnrKzkuIDmnaHnmoR0YXJnZXQgPSDnrKzkuozmnaHnmoRzb3VyY2VcblxuICAgICAgaWYgKCF0YWdzW2pdKSB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IGRzdCAmJiB0YXJnZXQgPT09IHNyYykge1xuICAgICAgICAgIGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5wdXNoKHNlZGdlKTtcbiAgICAgICAgICB0YWdzW2pdID0gdHJ1ZTtcbiAgICAgICAgICByZXZlcnNlc1tcIlwiLmNvbmNhdChzcmMsIFwifFwiKS5jb25jYXQoZHN0LCBcInxcIikuY29uY2F0KGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5sZW5ndGggLSAxKV0gPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSA9PT0gc3JjICYmIHRhcmdldCA9PT0gZHN0KSB7XG4gICAgICAgICAgZWRnZU1hcFtzb3VyY2VUYXJnZXRdLnB1c2goc2VkZ2UpO1xuICAgICAgICAgIHRhZ3Nbal0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIGVkZ2VNYXApIHtcbiAgICB2YXIgYXJjRWRnZXMgPSBlZGdlTWFwW2tleV07XG4gICAgdmFyIGxlbmd0aF8xID0gYXJjRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGhfMTsgaysrKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGFyY0VkZ2VzW2tdO1xuXG4gICAgICBpZiAoY3VycmVudC5zb3VyY2UgPT09IGN1cnJlbnQudGFyZ2V0KSB7XG4gICAgICAgIGlmIChsb29wRWRnZVR5cGUpIGN1cnJlbnQudHlwZSA9IGxvb3BFZGdlVHlwZTsgLy8g6LaF6L+HOOadoeiHqueOr+i+ue+8jOWImemcgOimgemHjeaWsOWkhOeQhlxuXG4gICAgICAgIGN1cnJlbnQubG9vcENmZyA9IHtcbiAgICAgICAgICBwb3NpdGlvbjogbG9vcFBvc2l0aW9uW2sgJSA4XSxcbiAgICAgICAgICBkaXN0OiBNYXRoLmZsb29yKGsgLyA4KSAqIDIwICsgNTBcbiAgICAgICAgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChsZW5ndGhfMSA9PT0gMSAmJiBzaW5nbGVFZGdlVHlwZSAmJiBjdXJyZW50LnNvdXJjZSAhPT0gY3VycmVudC50YXJnZXQpIHtcbiAgICAgICAgY3VycmVudC50eXBlID0gc2luZ2xlRWRnZVR5cGU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50LnR5cGUgPSBtdWx0aUVkZ2VUeXBlO1xuICAgICAgdmFyIHNpZ24gPSAoayAlIDIgPT09IDAgPyAxIDogLTEpICogKHJldmVyc2VzW1wiXCIuY29uY2F0KGN1cnJlbnQuc291cmNlLCBcInxcIikuY29uY2F0KGN1cnJlbnQudGFyZ2V0LCBcInxcIikuY29uY2F0KGspXSA/IC0xIDogMSk7XG5cbiAgICAgIGlmIChsZW5ndGhfMSAlIDIgPT09IDEpIHtcbiAgICAgICAgY3VycmVudC5jdXJ2ZU9mZnNldCA9IHNpZ24gKiBNYXRoLmNlaWwoayAvIDIpICogY29kO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudC5jdXJ2ZU9mZnNldCA9IHNpZ24gKiAoTWF0aC5mbG9vcihrIC8gMikgKiBjb2QgKyBvZmZzZXREaWZmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWRnZXM7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/base.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/color.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/color.js ***!
\*****************************************************/
/*! exports provided: defaultSubjectColors */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultSubjectColors\", function() { return defaultSubjectColors; });\nvar defaultSubjectColors = ['#5F95FF', '#61DDAA', '#65789B', '#F6BD16', '#7262FD', '#78D3F8', '#9661BC', '#F6903D', '#008685', '#F08BB4'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2NvbG9yLmpzPzc1ODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvdXRpbC9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZGVmYXVsdFN1YmplY3RDb2xvcnMgPSBbJyM1Rjk1RkYnLCAnIzYxRERBQScsICcjNjU3ODlCJywgJyNGNkJEMTYnLCAnIzcyNjJGRCcsICcjNzhEM0Y4JywgJyM5NjYxQkMnLCAnI0Y2OTAzRCcsICcjMDA4Njg1JywgJyNGMDhCQjQnXTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/color.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/graphic.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/graphic.js ***!
\*******************************************************/
/*! exports provided: getBBox, getLoopCfgs, getLabelPosition, traverseTree, traverseTreeUp, getLetterWidth, getTextSize, plainCombosToTrees, reconstructTree, getComboBBox, shouldRefreshEdge, cloneBesidesImg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLoopCfgs\", function() { return getLoopCfgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLabelPosition\", function() { return getLabelPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTree\", function() { return traverseTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return traverseTreeUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLetterWidth\", function() { return getLetterWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextSize\", function() { return getTextSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"plainCombosToTrees\", function() { return plainCombosToTrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructTree\", function() { return reconstructTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getComboBBox\", function() { return getComboBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shouldRefreshEdge\", function() { return shouldRefreshEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneBesidesImg\", function() { return cloneBesidesImg; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./letterAspectRatio */ \"./node_modules/@antv/g6-core/es/util/letterAspectRatio.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n\n\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos; // 一共支持8个方向的自环,每个环占的角度是45度,在计算时再二分,为22.5度\n\nvar SELF_LINK_SIN = sin(PI / 8);\nvar SELF_LINK_COS = cos(PI / 8);\nvar getBBox = function getBBox(element, group) {\n var bbox = element.getBBox();\n var leftTop = {\n x: bbox.minX,\n y: bbox.minY\n };\n var rightBottom = {\n x: bbox.maxX,\n y: bbox.maxY\n }; // 根据父元素变换矩阵\n\n if (group) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n leftTop = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(leftTop, matrix);\n rightBottom = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(rightBottom, matrix);\n }\n\n var lx = leftTop.x,\n ly = leftTop.y;\n var rx = rightBottom.x,\n ry = rightBottom.y;\n return {\n x: lx,\n y: ly,\n minX: lx,\n minY: ly,\n maxX: rx,\n maxY: ry,\n width: rx - lx,\n height: ry - ly\n };\n};\n/**\n * get loop edge config\n * @param cfg edge config\n */\n\nvar getLoopCfgs = function getLoopCfgs(cfg) {\n var item = cfg.sourceNode || cfg.targetNode;\n var container = item.get('group');\n var containerMatrix = container.getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var keyShape = item.getKeyShape();\n var bbox = keyShape.getBBox();\n var loopCfg = cfg.loopCfg || {}; // 距离keyShape边的最高距离\n\n var dist = loopCfg.dist || Math.max(bbox.width, bbox.height) * 2; // 自环边与keyShape的相对位置关系\n\n var position = loopCfg.position || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultLoopPosition; // 中心取group上真实位置\n\n var center = [containerMatrix[6], containerMatrix[7]];\n var startPoint = [cfg.startPoint.x, cfg.startPoint.y];\n var endPoint = [cfg.endPoint.x, cfg.endPoint.y];\n var rstart = bbox.height / 2;\n var rend = bbox.height / 2;\n var sinDeltaStart = rstart * SELF_LINK_SIN;\n var cosDeltaStart = rstart * SELF_LINK_COS;\n var sinDeltaEnd = rend * SELF_LINK_SIN;\n var cosDeltaEnd = rend * SELF_LINK_COS; // 如果定义了锚点的,直接用锚点坐标,否则,根据自环的 cfg 计算\n\n if (startPoint[0] === endPoint[0] && startPoint[1] === endPoint[1]) {\n switch (position) {\n case 'top':\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n case 'top-right':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'right':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'bottom-right':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom':\n rstart = bbox.height / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom-left':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'left':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'top-left':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n default:\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n } // 如果逆时针画,交换起点和终点\n\n\n if (loopCfg.clockwise === false) {\n var swap = [startPoint[0], startPoint[1]];\n startPoint = [endPoint[0], endPoint[1]];\n endPoint = [swap[0], swap[1]];\n }\n }\n\n var startVec = [startPoint[0] - center[0], startPoint[1] - center[1]];\n var scaleRateStart = (rstart + dist) / rstart;\n var scaleRateEnd = (rend + dist) / rend;\n\n if (loopCfg.clockwise === false) {\n scaleRateStart = (rend + dist) / rend;\n scaleRateEnd = (rstart + dist) / rstart;\n }\n\n var startExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], startVec, scaleRateStart);\n var controlPoint1 = [center[0] + startExtendVec[0], center[1] + startExtendVec[1]];\n var endVec = [endPoint[0] - center[0], endPoint[1] - center[1]];\n var endExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], endVec, scaleRateEnd);\n var controlPoint2 = [center[0] + endExtendVec[0], center[1] + endExtendVec[1]];\n cfg.startPoint = {\n x: startPoint[0],\n y: startPoint[1]\n };\n cfg.endPoint = {\n x: endPoint[0],\n y: endPoint[1]\n };\n cfg.controlPoints = [{\n x: controlPoint1[0],\n y: controlPoint1[1]\n }, {\n x: controlPoint2[0],\n y: controlPoint2[1]\n }];\n return cfg;\n};\n/**\n * 根据 label 所在线条的位置百分比,计算 label 坐标\n * @param {object} pathShape G 的 path 实例,一般是 Edge 实例的 keyShape\n * @param {number} percent 范围 0 - 1 的线条百分比\n * @param {number} refX x 轴正方向为基准的 label 偏移\n * @param {number} refY y 轴正方向为基准的 label 偏移\n * @param {boolean} rotate 是否根据线条斜率旋转文本\n * @return {object} 文本的 x, y, 文本的旋转角度\n */\n\nvar getLabelPosition = function getLabelPosition(pathShape, percent, refX, refY, rotate) {\n var TAN_OFFSET = 0.0001;\n var vector = [];\n var point = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent);\n\n if (!point) {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n } // 头尾最可能,放在最前面,使用 g path 上封装的方法\n\n\n if (percent < TAN_OFFSET) {\n vector = pathShape.getStartTangent().reverse();\n } else if (percent > 1 - TAN_OFFSET) {\n vector = pathShape.getEndTangent();\n } else {\n // 否则取指定位置的点,与少量偏移的点,做微分向量\n var offsetPoint = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent + TAN_OFFSET);\n vector.push([point.x, point.y]);\n vector.push([offsetPoint.x, offsetPoint.y]);\n }\n\n var rad = Math.atan2(vector[1][1] - vector[0][1], vector[1][0] - vector[0][0]);\n\n if (rad < 0) {\n rad += PI * 2;\n }\n\n if (refX) {\n point.x += cos(rad) * refX;\n point.y += sin(rad) * refX;\n }\n\n if (refY) {\n // 默认方向是 x 轴正方向,法线是 求出角度 - 90°\n var normal = rad - PI / 2; // 若法线角度在 y 轴负方向,切到正方向,保证 refY 相对于 y 轴正方向\n\n if (rad > 1 / 2 * PI && rad < 3 * 1 / 2 * PI) {\n normal -= PI;\n }\n\n point.x += cos(normal) * refY;\n point.y += sin(normal) * refY;\n }\n\n var result = {\n x: point.x,\n y: point.y,\n angle: rad\n };\n\n if (rotate) {\n if (rad > 0.5 * PI && rad < 1.5 * PI) {\n rad -= PI;\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n rotate: rad\n }, result);\n }\n\n return result;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverse = function traverse(data, fn) {\n if (fn(data) === false) {\n return false;\n }\n\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverse(data.children[i], fn)) return false;\n }\n }\n\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseUp = function traverseUp(data, fn) {\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn)) return;\n }\n }\n\n if (fn(data) === false) {\n return false;\n }\n\n return true;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseTree = function traverseTree(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverse(data, fn);\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverseTreeUp = function traverseTreeUp(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverseUp(data, fn);\n};\n/**\n *\n * @param letter the letter\n * @param fontSize\n * @return the letter's width\n */\n\nvar getLetterWidth = function getLetterWidth(letter, fontSize) {\n return fontSize * (_letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__[\"default\"][letter] || 1);\n};\n/**\n *\n * @param text the text\n * @param fontSize\n * @return the text's size\n */\n\nvar getTextSize = function getTextSize(text, fontSize) {\n var width = 0;\n var pattern = new RegExp(\"[\\u4E00-\\u9FA5]+\");\n text.split('').forEach(function (letter) {\n if (pattern.test(letter)) {\n // 中文字符\n width += fontSize;\n } else {\n width += getLetterWidth(letter, fontSize);\n }\n });\n return [width, fontSize];\n};\n/**\n * construct the trees from combos data\n * @param array the combos array\n * @param nodes the nodes array\n * @return the tree\n */\n\nvar plainCombosToTrees = function plainCombosToTrees(array, nodes) {\n var result = [];\n var addedMap = {};\n var modelMap = {};\n array.forEach(function (d) {\n modelMap[d.id] = d;\n });\n array.forEach(function (d, i) {\n var cd = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(d);\n cd.itemType = 'combo';\n cd.children = undefined;\n\n if (cd.parentId === cd.id) {\n console.warn(\"The parentId for combo \".concat(cd.id, \" can not be the same as the combo's id\"));\n delete cd.parentId;\n } else if (cd.parentId && !modelMap[cd.parentId]) {\n console.warn(\"The parent combo for combo \".concat(cd.id, \" does not exist!\"));\n delete cd.parentId;\n }\n\n var mappedObj = addedMap[cd.id];\n\n if (mappedObj) {\n cd.children = mappedObj.children;\n addedMap[cd.id] = cd;\n mappedObj = cd;\n\n if (!mappedObj.parentId) {\n result.push(mappedObj);\n return;\n }\n\n var mappedParent = addedMap[mappedObj.parentId];\n\n if (mappedParent) {\n if (mappedParent.children) mappedParent.children.push(cd);else mappedParent.children = [cd];\n } else {\n var parent_1 = {\n id: mappedObj.parentId,\n children: [mappedObj]\n };\n addedMap[mappedObj.parentId] = parent_1;\n addedMap[cd.id] = cd;\n }\n\n return;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(d.parentId)) {\n var parent_2 = addedMap[d.parentId];\n\n if (parent_2) {\n if (parent_2.children) parent_2.children.push(cd);else parent_2.children = [cd];\n addedMap[cd.id] = cd;\n } else {\n var pa = {\n id: d.parentId,\n children: [cd]\n };\n addedMap[pa.id] = pa;\n addedMap[cd.id] = cd;\n }\n } else {\n result.push(cd);\n addedMap[cd.id] = cd;\n }\n }); // proccess the nodes\n\n var nodeMap = {};\n (nodes || []).forEach(function (node) {\n nodeMap[node.id] = node;\n var combo = addedMap[node.comboId];\n\n if (combo) {\n var cnode = {\n id: node.id,\n comboId: node.comboId\n };\n if (combo.children) combo.children.push(cnode);else combo.children = [cnode];\n cnode.itemType = 'node';\n addedMap[node.id] = cnode;\n }\n }); // assign the depth for each element\n\n var maxDepth = 0;\n result.forEach(function (tree) {\n tree.depth = maxDepth + 10;\n traverse(tree, function (child) {\n var parent;\n var itemType = addedMap[child.id].itemType;\n\n if (itemType === 'node') {\n parent = addedMap[child.comboId];\n } else {\n parent = addedMap[child.parentId];\n }\n\n if (parent) {\n if (itemType === 'node') child.depth = maxDepth + 1;else child.depth = maxDepth + 10;\n } else {\n child.depth = maxDepth + 10;\n }\n\n if (maxDepth < child.depth) maxDepth = child.depth;\n var oriNodeModel = nodeMap[child.id];\n\n if (oriNodeModel) {\n oriNodeModel.depth = child.depth;\n }\n\n return true;\n });\n });\n return result;\n};\nvar reconstructTree = function reconstructTree(trees, subtreeId, newParentId) {\n var brothers = trees;\n var subtree;\n var comboChildsMap = {\n root: {\n children: trees\n }\n };\n var foundSubTree = false;\n var oldParentId = 'root';\n (trees || []).forEach(function (tree) {\n if (foundSubTree) return;\n\n if (tree.id === subtreeId) {\n subtree = tree;\n\n if (tree.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return;\n }\n\n traverseTree(tree, function (child) {\n comboChildsMap[child.id] = {\n children: child.children\n }; // store the old parent id to delete the subtree from the old parent's children in next recursion\n\n brothers = comboChildsMap[child.parentId || child.comboId || 'root'].children;\n\n if (child && (child.removed || subtreeId === child.id) && brothers) {\n oldParentId = child.parentId || child.comboId || 'root';\n subtree = child; // re-assign the parentId or comboId for the moved subtree\n\n if (child.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return false;\n }\n\n return true;\n });\n });\n brothers = comboChildsMap[oldParentId].children;\n var index = brothers ? brothers.indexOf(subtree) : -1;\n if (index > -1) brothers.splice(index, 1); // 如果遍历完整棵树还没有找到,说明之前就不在树中\n\n if (!foundSubTree) {\n subtree = {\n id: subtreeId,\n itemType: 'node',\n comboId: newParentId\n };\n comboChildsMap[subtreeId] = {\n children: undefined\n };\n } // append to new parent\n\n\n if (subtreeId) {\n var found_1 = false; // newParentId is undefined means the subtree will have no parent\n\n if (newParentId) {\n var newParentDepth_1 = 0;\n (trees || []).forEach(function (tree) {\n if (found_1) return; // terminate\n\n traverseTree(tree, function (child) {\n // append subtree to the new parent ans assign the depth to the subtree\n if (newParentId === child.id) {\n found_1 = true;\n if (child.children) child.children.push(subtree);else child.children = [subtree];\n newParentDepth_1 = child.depth;\n if (subtree.itemType === 'node') subtree.depth = newParentDepth_1 + 2;else subtree.depth = newParentDepth_1 + 1;\n return false; // terminate\n }\n\n return true;\n });\n });\n } else if ((!newParentId || !found_1) && subtree.itemType !== 'node') {\n // if the newParentId is undefined or it is not found in the tree, add the subTree to the root\n trees.push(subtree);\n } // update the depth of the subtree and its children from the subtree\n\n\n var currentDepth_1 = subtree.depth;\n traverseTree(subtree, function (child) {\n if (child.itemType === 'node') currentDepth_1 += 2;else currentDepth_1 += 1;\n child.depth = currentDepth_1;\n return true;\n });\n }\n\n return trees;\n};\nvar getComboBBox = function getComboBBox(children, graph, combo) {\n var comboBBox = {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity,\n x: undefined,\n y: undefined,\n width: undefined,\n height: undefined,\n centerX: undefined,\n centerY: undefined\n };\n\n if (!children || children.length === 0) {\n var comboModel = combo === null || combo === void 0 ? void 0 : combo.getModel();\n\n var _a = comboModel || {},\n x = _a.x,\n y = _a.y;\n\n return {\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n x: x,\n y: y,\n width: undefined,\n height: undefined\n };\n }\n\n children.forEach(function (child) {\n var childItem = graph.findById(child.id);\n if (!childItem || !childItem.isVisible()) return; // ignore hidden children\n\n childItem.set('bboxCanvasCache', undefined);\n var childBBox = childItem.getCanvasBBox();\n if (childBBox.x && comboBBox.minX > childBBox.minX) comboBBox.minX = childBBox.minX;\n if (childBBox.y && comboBBox.minY > childBBox.minY) comboBBox.minY = childBBox.minY;\n if (childBBox.x && comboBBox.maxX < childBBox.maxX) comboBBox.maxX = childBBox.maxX;\n if (childBBox.y && comboBBox.maxY < childBBox.maxY) comboBBox.maxY = childBBox.maxY;\n });\n comboBBox.x = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.y = (comboBBox.minY + comboBBox.maxY) / 2;\n comboBBox.width = comboBBox.maxX - comboBBox.minX;\n comboBBox.height = comboBBox.maxY - comboBBox.minY;\n comboBBox.centerX = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.centerY = (comboBBox.minY + comboBBox.maxY) / 2;\n Object.keys(comboBBox).forEach(function (key) {\n if (comboBBox[key] === Infinity || comboBBox[key] === -Infinity) {\n comboBBox[key] = undefined;\n }\n });\n return comboBBox;\n};\nvar shouldRefreshEdge = function shouldRefreshEdge(cfg) {\n var refreshEdge = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size;\n if (cfg.style) refreshEdge = refreshEdge || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.r) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.width) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.height) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.rx) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.ry);\n return refreshEdge;\n};\nvar cloneBesidesImg = function cloneBesidesImg(obj) {\n var clonedObj = {};\n Object.keys(obj).forEach(function (key1) {\n var obj2 = obj[key1];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isObject\"])(obj2) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isArray\"])(obj2)) {\n var clonedObj2_1 = {};\n Object.keys(obj2).forEach(function (key2) {\n var v = obj2[key2];\n if (key2 === 'img' && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(v)) return;\n clonedObj2_1[key2] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(v);\n });\n clonedObj[key1] = clonedObj2_1;\n } else {\n clonedObj[key1] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(obj2);\n }\n });\n return clonedObj;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2dyYXBoaWMuanM/Mjk3NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNRO0FBQ1Y7QUFDTTtBQUNlO0FBQ3NCO0FBQzFFO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMseURBQVc7QUFDekIsa0JBQWtCLHlEQUFXO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxtRUFBbUU7O0FBRW5FLHFDQUFxQywrQ0FBTSxxQkFBcUI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBSTtBQUMzQjtBQUNBO0FBQ0EscUJBQXFCLHNEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsUUFBUTtBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsMENBQTBDLFFBQVE7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AscUJBQXFCLDBEQUFpQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsYUFBYSx3REFBSztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrRUFBa0U7QUFDbEUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBLGtGQUFrRjtBQUNsRix5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDZCQUE2QjtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQLG9CQUFvQiwyREFBUSxXQUFXLDJEQUFRO0FBQy9DLDhDQUE4QywyREFBUSxpQkFBaUIsMkRBQVEscUJBQXFCLDJEQUFRLHNCQUFzQiwyREFBUSxrQkFBa0IsMkRBQVE7QUFDcEs7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVEsV0FBVywwREFBTztBQUNsQztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQVE7QUFDdkMsNkJBQTZCLHdEQUFLO0FBQ2xDLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCx3QkFBd0Isd0RBQUs7QUFDN0I7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL3V0aWwvZ3JhcGhpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgYXBwbHlNYXRyaXggfSBmcm9tICcuL21hdGgnO1xuaW1wb3J0IGxldHRlckFzcGVjdFJhdGlvIGZyb20gJy4vbGV0dGVyQXNwZWN0UmF0aW8nO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGNsb25lLCBpc051bWJlciwgaXNPYmplY3QsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBQSSA9IE1hdGguUEksXG4gICAgc2luID0gTWF0aC5zaW4sXG4gICAgY29zID0gTWF0aC5jb3M7IC8vIOS4gOWFseaUr+aMgTjkuKrmlrnlkJHnmoToh6rnjq/vvIzmr4/kuKrnjq/ljaDnmoTop5LluqbmmK80NeW6pu+8jOWcqOiuoeeul+aXtuWGjeS6jOWIhu+8jOS4ujIyLjXluqZcblxudmFyIFNFTEZfTElOS19TSU4gPSBzaW4oUEkgLyA4KTtcbnZhciBTRUxGX0xJTktfQ09TID0gY29zKFBJIC8gOCk7XG5leHBvcnQgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KGVsZW1lbnQsIGdyb3VwKSB7XG4gIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gIHZhciBsZWZ0VG9wID0ge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfTtcbiAgdmFyIHJpZ2h0Qm90dG9tID0ge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfTsgLy8g5qC55o2u54i25YWD57Sg5Y+Y5o2i55+p6Zi1XG5cbiAgaWYgKGdyb3VwKSB7XG4gICAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBsZWZ0VG9wID0gYXBwbHlNYXRyaXgobGVmdFRvcCwgbWF0cml4KTtcbiAgICByaWdodEJvdHRvbSA9IGFwcGx5TWF0cml4KHJpZ2h0Qm90dG9tLCBtYXRyaXgpO1xuICB9XG5cbiAgdmFyIGx4ID0gbGVmdFRvcC54LFxuICAgICAgbHkgPSBsZWZ0VG9wLnk7XG4gIHZhciByeCA9IHJpZ2h0Qm90dG9tLngsXG4gICAgICByeSA9IHJpZ2h0Qm90dG9tLnk7XG4gIHJldHVybiB7XG4gICAgeDogbHgsXG4gICAgeTogbHksXG4gICAgbWluWDogbHgsXG4gICAgbWluWTogbHksXG4gICAgbWF4WDogcngsXG4gICAgbWF4WTogcnksXG4gICAgd2lkdGg6IHJ4IC0gbHgsXG4gICAgaGVpZ2h0OiByeSAtIGx5XG4gIH07XG59O1xuLyoqXG4gKiBnZXQgbG9vcCBlZGdlIGNvbmZpZ1xuICogQHBhcmFtIGNmZyBlZGdlIGNvbmZpZ1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0TG9vcENmZ3MgPSBmdW5jdGlvbiBnZXRMb29wQ2ZncyhjZmcpIHtcbiAgdmFyIGl0ZW0gPSBjZmcuc291cmNlTm9kZSB8fCBjZmcudGFyZ2V0Tm9kZTtcbiAgdmFyIGNvbnRhaW5lciA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICB2YXIgY29udGFpbmVyTWF0cml4ID0gY29udGFpbmVyLmdldE1hdHJpeCgpO1xuICBpZiAoIWNvbnRhaW5lck1hdHJpeCkgY29udGFpbmVyTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG4gIHZhciBiYm94ID0ga2V5U2hhcGUuZ2V0QkJveCgpO1xuICB2YXIgbG9vcENmZyA9IGNmZy5sb29wQ2ZnIHx8IHt9OyAvLyDot53nprtrZXlTaGFwZei+ueeahOacgOmrmOi3neemu1xuXG4gIHZhciBkaXN0ID0gbG9vcENmZy5kaXN0IHx8IE1hdGgubWF4KGJib3gud2lkdGgsIGJib3guaGVpZ2h0KSAqIDI7IC8vIOiHqueOr+i+ueS4jmtleVNoYXBl55qE55u45a+55L2N572u5YWz57O7XG5cbiAgdmFyIHBvc2l0aW9uID0gbG9vcENmZy5wb3NpdGlvbiB8fCBHbG9iYWwuZGVmYXVsdExvb3BQb3NpdGlvbjsgLy8g5Lit5b+D5Y+WZ3JvdXDkuIrnnJ/lrp7kvY3nva5cblxuICB2YXIgY2VudGVyID0gW2NvbnRhaW5lck1hdHJpeFs2XSwgY29udGFpbmVyTWF0cml4WzddXTtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBbY2ZnLnN0YXJ0UG9pbnQueCwgY2ZnLnN0YXJ0UG9pbnQueV07XG4gIHZhciBlbmRQb2ludCA9IFtjZmcuZW5kUG9pbnQueCwgY2ZnLmVuZFBvaW50LnldO1xuICB2YXIgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICB2YXIgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgdmFyIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19DT1M7XG4gIHZhciBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUzsgLy8g5aaC5p6c5a6a5LmJ5LqG6ZSa54K555qE77yM55u05o6l55So6ZSa54K55Z2Q5qCH77yM5ZCm5YiZ77yM5qC55o2u6Ieq546v55qEIGNmZyDorqHnrpdcblxuICBpZiAoc3RhcnRQb2ludFswXSA9PT0gZW5kUG9pbnRbMF0gJiYgc3RhcnRQb2ludFsxXSA9PT0gZW5kUG9pbnRbMV0pIHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSAtIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YUVuZCwgY2VudGVyWzFdIC0gY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIGNvc0RlbHRhU3RhcnQsIGNlbnRlclsxXSAtIHNpbkRlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSArIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJzdGFydCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YUVuZCwgY2VudGVyWzFdICsgY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICByc3RhcnQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICB9IC8vIOWmguaenOmAhuaXtumSiOeUu++8jOS6pOaNoui1t+eCueWSjOe7iOeCuVxuXG5cbiAgICBpZiAobG9vcENmZy5jbG9ja3dpc2UgPT09IGZhbHNlKSB7XG4gICAgICB2YXIgc3dhcCA9IFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXTtcbiAgICAgIHN0YXJ0UG9pbnQgPSBbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXTtcbiAgICAgIGVuZFBvaW50ID0gW3N3YXBbMF0sIHN3YXBbMV1dO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGFydFZlYyA9IFtzdGFydFBvaW50WzBdIC0gY2VudGVyWzBdLCBzdGFydFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIHNjYWxlUmF0ZVN0YXJ0ID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB2YXIgc2NhbGVSYXRlRW5kID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG5cbiAgaWYgKGxvb3BDZmcuY2xvY2t3aXNlID09PSBmYWxzZSkge1xuICAgIHNjYWxlUmF0ZVN0YXJ0ID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG4gICAgc2NhbGVSYXRlRW5kID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB9XG5cbiAgdmFyIHN0YXJ0RXh0ZW5kVmVjID0gdmVjMi5zY2FsZShbMCwgMF0sIHN0YXJ0VmVjLCBzY2FsZVJhdGVTdGFydCk7XG4gIHZhciBjb250cm9sUG9pbnQxID0gW2NlbnRlclswXSArIHN0YXJ0RXh0ZW5kVmVjWzBdLCBjZW50ZXJbMV0gKyBzdGFydEV4dGVuZFZlY1sxXV07XG4gIHZhciBlbmRWZWMgPSBbZW5kUG9pbnRbMF0gLSBjZW50ZXJbMF0sIGVuZFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIGVuZEV4dGVuZFZlYyA9IHZlYzIuc2NhbGUoWzAsIDBdLCBlbmRWZWMsIHNjYWxlUmF0ZUVuZCk7XG4gIHZhciBjb250cm9sUG9pbnQyID0gW2NlbnRlclswXSArIGVuZEV4dGVuZFZlY1swXSwgY2VudGVyWzFdICsgZW5kRXh0ZW5kVmVjWzFdXTtcbiAgY2ZnLnN0YXJ0UG9pbnQgPSB7XG4gICAgeDogc3RhcnRQb2ludFswXSxcbiAgICB5OiBzdGFydFBvaW50WzFdXG4gIH07XG4gIGNmZy5lbmRQb2ludCA9IHtcbiAgICB4OiBlbmRQb2ludFswXSxcbiAgICB5OiBlbmRQb2ludFsxXVxuICB9O1xuICBjZmcuY29udHJvbFBvaW50cyA9IFt7XG4gICAgeDogY29udHJvbFBvaW50MVswXSxcbiAgICB5OiBjb250cm9sUG9pbnQxWzFdXG4gIH0sIHtcbiAgICB4OiBjb250cm9sUG9pbnQyWzBdLFxuICAgIHk6IGNvbnRyb2xQb2ludDJbMV1cbiAgfV07XG4gIHJldHVybiBjZmc7XG59O1xuLyoqXG4gKiDmoLnmja4gbGFiZWwg5omA5Zyo57q/5p2h55qE5L2N572u55m+5YiG5q+U77yM6K6h566XIGxhYmVsIOWdkOagh1xuICogQHBhcmFtIHtvYmplY3R9ICBwYXRoU2hhcGUgIEcg55qEIHBhdGgg5a6e5L6L77yM5LiA6Iis5pivIEVkZ2Ug5a6e5L6L55qEIGtleVNoYXBlXG4gKiBAcGFyYW0ge251bWJlcn0gIHBlcmNlbnQgICAg6IyD5Zu0IDAgLSAxIOeahOe6v+adoeeZvuWIhuavlFxuICogQHBhcmFtIHtudW1iZXJ9ICByZWZYICAgICB4IOi9tOato+aWueWQkeS4uuWfuuWHhueahCBsYWJlbCDlgY/np7tcbiAqIEBwYXJhbSB7bnVtYmVyfSAgcmVmWSAgICAgeSDovbTmraPmlrnlkJHkuLrln7rlh4bnmoQgbGFiZWwg5YGP56e7XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJvdGF0ZSAgICAg5piv5ZCm5qC55o2u57q/5p2h5pac546H5peL6L2s5paH5pysXG4gKiBAcmV0dXJuIHtvYmplY3R9IOaWh+acrOeahCB4LCB5LCDmlofmnKznmoTml4vovazop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIGdldExhYmVsUG9zaXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFBvc2l0aW9uKHBhdGhTaGFwZSwgcGVyY2VudCwgcmVmWCwgcmVmWSwgcm90YXRlKSB7XG4gIHZhciBUQU5fT0ZGU0VUID0gMC4wMDAxO1xuICB2YXIgdmVjdG9yID0gW107XG4gIHZhciBwb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50KTtcblxuICBpZiAoIXBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgYW5nbGU6IDBcbiAgICB9O1xuICB9IC8vIOWktOWwvuacgOWPr+iDve+8jOaUvuWcqOacgOWJjemdou+8jOS9v+eUqCBnIHBhdGgg5LiK5bCB6KOF55qE5pa55rOVXG5cblxuICBpZiAocGVyY2VudCA8IFRBTl9PRkZTRVQpIHtcbiAgICB2ZWN0b3IgPSBwYXRoU2hhcGUuZ2V0U3RhcnRUYW5nZW50KCkucmV2ZXJzZSgpO1xuICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxIC0gVEFOX09GRlNFVCkge1xuICAgIHZlY3RvciA9IHBhdGhTaGFwZS5nZXRFbmRUYW5nZW50KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8g5ZCm5YiZ5Y+W5oyH5a6a5L2N572u55qE54K5LOS4juWwkemHj+WBj+enu+eahOeCue+8jOWBmuW+ruWIhuWQkemHj1xuICAgIHZhciBvZmZzZXRQb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50ICsgVEFOX09GRlNFVCk7XG4gICAgdmVjdG9yLnB1c2goW3BvaW50LngsIHBvaW50LnldKTtcbiAgICB2ZWN0b3IucHVzaChbb2Zmc2V0UG9pbnQueCwgb2Zmc2V0UG9pbnQueV0pO1xuICB9XG5cbiAgdmFyIHJhZCA9IE1hdGguYXRhbjIodmVjdG9yWzFdWzFdIC0gdmVjdG9yWzBdWzFdLCB2ZWN0b3JbMV1bMF0gLSB2ZWN0b3JbMF1bMF0pO1xuXG4gIGlmIChyYWQgPCAwKSB7XG4gICAgcmFkICs9IFBJICogMjtcbiAgfVxuXG4gIGlmIChyZWZYKSB7XG4gICAgcG9pbnQueCArPSBjb3MocmFkKSAqIHJlZlg7XG4gICAgcG9pbnQueSArPSBzaW4ocmFkKSAqIHJlZlg7XG4gIH1cblxuICBpZiAocmVmWSkge1xuICAgIC8vIOm7mOiupOaWueWQkeaYryB4IOi9tOato+aWueWQke+8jOazlee6v+aYryDmsYLlh7rop5LluqYgLSA5MMKwXG4gICAgdmFyIG5vcm1hbCA9IHJhZCAtIFBJIC8gMjsgLy8g6Iul5rOV57q/6KeS5bqm5ZyoIHkg6L206LSf5pa55ZCR77yM5YiH5Yiw5q2j5pa55ZCR77yM5L+d6K+BIHJlZlkg55u45a+55LqOIHkg6L205q2j5pa55ZCRXG5cbiAgICBpZiAocmFkID4gMSAvIDIgKiBQSSAmJiByYWQgPCAzICogMSAvIDIgKiBQSSkge1xuICAgICAgbm9ybWFsIC09IFBJO1xuICAgIH1cblxuICAgIHBvaW50LnggKz0gY29zKG5vcm1hbCkgKiByZWZZO1xuICAgIHBvaW50LnkgKz0gc2luKG5vcm1hbCkgKiByZWZZO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHtcbiAgICB4OiBwb2ludC54LFxuICAgIHk6IHBvaW50LnksXG4gICAgYW5nbGU6IHJhZFxuICB9O1xuXG4gIGlmIChyb3RhdGUpIHtcbiAgICBpZiAocmFkID4gMC41ICogUEkgJiYgcmFkIDwgMS41ICogUEkpIHtcbiAgICAgIHJhZCAtPSBQSTtcbiAgICB9XG5cbiAgICByZXR1cm4gX19hc3NpZ24oe1xuICAgICAgcm90YXRlOiByYWRcbiAgICB9LCByZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG52YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShkYXRhLCBmbikge1xuICBpZiAoZm4oZGF0YSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5jaGlsZHJlbikge1xuICAgIGZvciAodmFyIGkgPSBkYXRhLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoIXRyYXZlcnNlKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogZGVwdGggZmlyc3QgdHJhdmVyc2UsIGZyb20gbGVhdmVzIHRvIHJvb3QsIGNoaWxkcmVuIGluIGludmVyc2Ugb3JkZXJcbiAqICBpZiB0aGUgZm4gcmV0dXJucyBmYWxzZSwgdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICovXG5cblxudmFyIHRyYXZlcnNlVXAgPSBmdW5jdGlvbiB0cmF2ZXJzZVVwKGRhdGEsIGZuKSB7XG4gIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHtcbiAgICBmb3IgKHZhciBpID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCF0cmF2ZXJzZVVwKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgdHJhdmVyc2VUcmVlID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlKGRhdGEsIGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmF2ZXJzZShkYXRhLCBmbik7XG59O1xuLyoqXG4gKiBkZXB0aCBmaXJzdCB0cmF2ZXJzZSwgZnJvbSBsZWF2ZXMgdG8gcm9vdCwgY2hpbGRyZW4gaW4gaW52ZXJzZSBvcmRlclxuICogaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5leHBvcnQgdmFyIHRyYXZlcnNlVHJlZVVwID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlVXAoZGF0YSwgZm4pIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyYXZlcnNlVXAoZGF0YSwgZm4pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBsZXR0ZXIgdGhlIGxldHRlclxuICogQHBhcmFtIGZvbnRTaXplXG4gKiBAcmV0dXJuIHRoZSBsZXR0ZXIncyB3aWR0aFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0TGV0dGVyV2lkdGggPSBmdW5jdGlvbiBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKSB7XG4gIHJldHVybiBmb250U2l6ZSAqIChsZXR0ZXJBc3BlY3RSYXRpb1tsZXR0ZXJdIHx8IDEpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0XG4gKiBAcGFyYW0gZm9udFNpemVcbiAqIEByZXR1cm4gdGhlIHRleHQncyBzaXplXG4gKi9cblxuZXhwb3J0IHZhciBnZXRUZXh0U2l6ZSA9IGZ1bmN0aW9uIGdldFRleHRTaXplKHRleHQsIGZvbnRTaXplKSB7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcIltcXHU0RTAwLVxcdTlGQTVdK1wiKTtcbiAgdGV4dC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG4gICAgaWYgKHBhdHRlcm4udGVzdChsZXR0ZXIpKSB7XG4gICAgICAvLyDkuK3mloflrZfnrKZcbiAgICAgIHdpZHRoICs9IGZvbnRTaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCArPSBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3dpZHRoLCBmb250U2l6ZV07XG59O1xuLyoqXG4gKiBjb25zdHJ1Y3QgdGhlIHRyZWVzIGZyb20gY29tYm9zIGRhdGFcbiAqIEBwYXJhbSBhcnJheSB0aGUgY29tYm9zIGFycmF5XG4gKiBAcGFyYW0gbm9kZXMgdGhlIG5vZGVzIGFycmF5XG4gKiBAcmV0dXJuIHRoZSB0cmVlXG4gKi9cblxuZXhwb3J0IHZhciBwbGFpbkNvbWJvc1RvVHJlZXMgPSBmdW5jdGlvbiBwbGFpbkNvbWJvc1RvVHJlZXMoYXJyYXksIG5vZGVzKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGFkZGVkTWFwID0ge307XG4gIHZhciBtb2RlbE1hcCA9IHt9O1xuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgbW9kZWxNYXBbZC5pZF0gPSBkO1xuICB9KTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgIHZhciBjZCA9IGNsb25lKGQpO1xuICAgIGNkLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICBjZC5jaGlsZHJlbiA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChjZC5wYXJlbnRJZCA9PT0gY2QuaWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlRoZSBwYXJlbnRJZCBmb3IgY29tYm8gXCIuY29uY2F0KGNkLmlkLCBcIiBjYW4gbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBjb21ibydzIGlkXCIpKTtcbiAgICAgIGRlbGV0ZSBjZC5wYXJlbnRJZDtcbiAgICB9IGVsc2UgaWYgKGNkLnBhcmVudElkICYmICFtb2RlbE1hcFtjZC5wYXJlbnRJZF0pIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlRoZSBwYXJlbnQgY29tYm8gZm9yIGNvbWJvIFwiLmNvbmNhdChjZC5pZCwgXCIgZG9lcyBub3QgZXhpc3QhXCIpKTtcbiAgICAgIGRlbGV0ZSBjZC5wYXJlbnRJZDtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGVkT2JqID0gYWRkZWRNYXBbY2QuaWRdO1xuXG4gICAgaWYgKG1hcHBlZE9iaikge1xuICAgICAgY2QuY2hpbGRyZW4gPSBtYXBwZWRPYmouY2hpbGRyZW47XG4gICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIG1hcHBlZE9iaiA9IGNkO1xuXG4gICAgICBpZiAoIW1hcHBlZE9iai5wYXJlbnRJZCkge1xuICAgICAgICByZXN1bHQucHVzaChtYXBwZWRPYmopO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBtYXBwZWRQYXJlbnQgPSBhZGRlZE1hcFttYXBwZWRPYmoucGFyZW50SWRdO1xuXG4gICAgICBpZiAobWFwcGVkUGFyZW50KSB7XG4gICAgICAgIGlmIChtYXBwZWRQYXJlbnQuY2hpbGRyZW4pIG1hcHBlZFBhcmVudC5jaGlsZHJlbi5wdXNoKGNkKTtlbHNlIG1hcHBlZFBhcmVudC5jaGlsZHJlbiA9IFtjZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50XzEgPSB7XG4gICAgICAgICAgaWQ6IG1hcHBlZE9iai5wYXJlbnRJZCxcbiAgICAgICAgICBjaGlsZHJlbjogW21hcHBlZE9ial1cbiAgICAgICAgfTtcbiAgICAgICAgYWRkZWRNYXBbbWFwcGVkT2JqLnBhcmVudElkXSA9IHBhcmVudF8xO1xuICAgICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyhkLnBhcmVudElkKSkge1xuICAgICAgdmFyIHBhcmVudF8yID0gYWRkZWRNYXBbZC5wYXJlbnRJZF07XG5cbiAgICAgIGlmIChwYXJlbnRfMikge1xuICAgICAgICBpZiAocGFyZW50XzIuY2hpbGRyZW4pIHBhcmVudF8yLmNoaWxkcmVuLnB1c2goY2QpO2Vsc2UgcGFyZW50XzIuY2hpbGRyZW4gPSBbY2RdO1xuICAgICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwYSA9IHtcbiAgICAgICAgICBpZDogZC5wYXJlbnRJZCxcbiAgICAgICAgICBjaGlsZHJlbjogW2NkXVxuICAgICAgICB9O1xuICAgICAgICBhZGRlZE1hcFtwYS5pZF0gPSBwYTtcbiAgICAgICAgYWRkZWRNYXBbY2QuaWRdID0gY2Q7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGNkKTtcbiAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgIH1cbiAgfSk7IC8vIHByb2NjZXNzIHRoZSBub2Rlc1xuXG4gIHZhciBub2RlTWFwID0ge307XG4gIChub2RlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgIHZhciBjb21ibyA9IGFkZGVkTWFwW25vZGUuY29tYm9JZF07XG5cbiAgICBpZiAoY29tYm8pIHtcbiAgICAgIHZhciBjbm9kZSA9IHtcbiAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgIGNvbWJvSWQ6IG5vZGUuY29tYm9JZFxuICAgICAgfTtcbiAgICAgIGlmIChjb21iby5jaGlsZHJlbikgY29tYm8uY2hpbGRyZW4ucHVzaChjbm9kZSk7ZWxzZSBjb21iby5jaGlsZHJlbiA9IFtjbm9kZV07XG4gICAgICBjbm9kZS5pdGVtVHlwZSA9ICdub2RlJztcbiAgICAgIGFkZGVkTWFwW25vZGUuaWRdID0gY25vZGU7XG4gICAgfVxuICB9KTsgLy8gYXNzaWduIHRoZSBkZXB0aCBmb3IgZWFjaCBlbGVtZW50XG5cbiAgdmFyIG1heERlcHRoID0gMDtcbiAgcmVzdWx0LmZvckVhY2goZnVuY3Rpb24gKHRyZWUpIHtcbiAgICB0cmVlLmRlcHRoID0gbWF4RGVwdGggKyAxMDtcbiAgICB0cmF2ZXJzZSh0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHZhciBwYXJlbnQ7XG4gICAgICB2YXIgaXRlbVR5cGUgPSBhZGRlZE1hcFtjaGlsZC5pZF0uaXRlbVR5cGU7XG5cbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIHBhcmVudCA9IGFkZGVkTWFwW2NoaWxkLmNvbWJvSWRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50ID0gYWRkZWRNYXBbY2hpbGQucGFyZW50SWRdO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGlmIChpdGVtVHlwZSA9PT0gJ25vZGUnKSBjaGlsZC5kZXB0aCA9IG1heERlcHRoICsgMTtlbHNlIGNoaWxkLmRlcHRoID0gbWF4RGVwdGggKyAxMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkLmRlcHRoID0gbWF4RGVwdGggKyAxMDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heERlcHRoIDwgY2hpbGQuZGVwdGgpIG1heERlcHRoID0gY2hpbGQuZGVwdGg7XG4gICAgICB2YXIgb3JpTm9kZU1vZGVsID0gbm9kZU1hcFtjaGlsZC5pZF07XG5cbiAgICAgIGlmIChvcmlOb2RlTW9kZWwpIHtcbiAgICAgICAgb3JpTm9kZU1vZGVsLmRlcHRoID0gY2hpbGQuZGVwdGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgdmFyIHJlY29uc3RydWN0VHJlZSA9IGZ1bmN0aW9uIHJlY29uc3RydWN0VHJlZSh0cmVlcywgc3VidHJlZUlkLCBuZXdQYXJlbnRJZCkge1xuICB2YXIgYnJvdGhlcnMgPSB0cmVlcztcbiAgdmFyIHN1YnRyZWU7XG4gIHZhciBjb21ib0NoaWxkc01hcCA9IHtcbiAgICByb290OiB7XG4gICAgICBjaGlsZHJlbjogdHJlZXNcbiAgICB9XG4gIH07XG4gIHZhciBmb3VuZFN1YlRyZWUgPSBmYWxzZTtcbiAgdmFyIG9sZFBhcmVudElkID0gJ3Jvb3QnO1xuICAodHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKHRyZWUpIHtcbiAgICBpZiAoZm91bmRTdWJUcmVlKSByZXR1cm47XG5cbiAgICBpZiAodHJlZS5pZCA9PT0gc3VidHJlZUlkKSB7XG4gICAgICBzdWJ0cmVlID0gdHJlZTtcblxuICAgICAgaWYgKHRyZWUuaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgc3VidHJlZS5wYXJlbnRJZCA9IG5ld1BhcmVudElkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VidHJlZS5jb21ib0lkID0gbmV3UGFyZW50SWQ7XG4gICAgICB9XG5cbiAgICAgIGZvdW5kU3ViVHJlZSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJhdmVyc2VUcmVlKHRyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgY29tYm9DaGlsZHNNYXBbY2hpbGQuaWRdID0ge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGQuY2hpbGRyZW5cbiAgICAgIH07IC8vIHN0b3JlIHRoZSBvbGQgcGFyZW50IGlkIHRvIGRlbGV0ZSB0aGUgc3VidHJlZSBmcm9tIHRoZSBvbGQgcGFyZW50J3MgY2hpbGRyZW4gaW4gbmV4dCByZWN1cnNpb25cblxuICAgICAgYnJvdGhlcnMgPSBjb21ib0NoaWxkc01hcFtjaGlsZC5wYXJlbnRJZCB8fCBjaGlsZC5jb21ib0lkIHx8ICdyb290J10uY2hpbGRyZW47XG5cbiAgICAgIGlmIChjaGlsZCAmJiAoY2hpbGQucmVtb3ZlZCB8fCBzdWJ0cmVlSWQgPT09IGNoaWxkLmlkKSAmJiBicm90aGVycykge1xuICAgICAgICBvbGRQYXJlbnRJZCA9IGNoaWxkLnBhcmVudElkIHx8IGNoaWxkLmNvbWJvSWQgfHwgJ3Jvb3QnO1xuICAgICAgICBzdWJ0cmVlID0gY2hpbGQ7IC8vIHJlLWFzc2lnbiB0aGUgcGFyZW50SWQgb3IgY29tYm9JZCBmb3IgdGhlIG1vdmVkIHN1YnRyZWVcblxuICAgICAgICBpZiAoY2hpbGQuaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgICBzdWJ0cmVlLnBhcmVudElkID0gbmV3UGFyZW50SWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3VidHJlZS5jb21ib0lkID0gbmV3UGFyZW50SWQ7XG4gICAgICAgIH1cblxuICAgICAgICBmb3VuZFN1YlRyZWUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9KTtcbiAgYnJvdGhlcnMgPSBjb21ib0NoaWxkc01hcFtvbGRQYXJlbnRJZF0uY2hpbGRyZW47XG4gIHZhciBpbmRleCA9IGJyb3RoZXJzID8gYnJvdGhlcnMuaW5kZXhPZihzdWJ0cmVlKSA6IC0xO1xuICBpZiAoaW5kZXggPiAtMSkgYnJvdGhlcnMuc3BsaWNlKGluZGV4LCAxKTsgLy8g5aaC5p6c6YGN5Y6G5a6M5pW05qO15qCR6L+Y5rKh5pyJ5om+5Yiw77yM6K+05piO5LmL5YmN5bCx5LiN5Zyo5qCR5LitXG5cbiAgaWYgKCFmb3VuZFN1YlRyZWUpIHtcbiAgICBzdWJ0cmVlID0ge1xuICAgICAgaWQ6IHN1YnRyZWVJZCxcbiAgICAgIGl0ZW1UeXBlOiAnbm9kZScsXG4gICAgICBjb21ib0lkOiBuZXdQYXJlbnRJZFxuICAgIH07XG4gICAgY29tYm9DaGlsZHNNYXBbc3VidHJlZUlkXSA9IHtcbiAgICAgIGNoaWxkcmVuOiB1bmRlZmluZWRcbiAgICB9O1xuICB9IC8vIGFwcGVuZCB0byBuZXcgcGFyZW50XG5cblxuICBpZiAoc3VidHJlZUlkKSB7XG4gICAgdmFyIGZvdW5kXzEgPSBmYWxzZTsgLy8gbmV3UGFyZW50SWQgaXMgdW5kZWZpbmVkIG1lYW5zIHRoZSBzdWJ0cmVlIHdpbGwgaGF2ZSBubyBwYXJlbnRcblxuICAgIGlmIChuZXdQYXJlbnRJZCkge1xuICAgICAgdmFyIG5ld1BhcmVudERlcHRoXzEgPSAwO1xuICAgICAgKHRyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uICh0cmVlKSB7XG4gICAgICAgIGlmIChmb3VuZF8xKSByZXR1cm47IC8vIHRlcm1pbmF0ZVxuXG4gICAgICAgIHRyYXZlcnNlVHJlZSh0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAvLyBhcHBlbmQgc3VidHJlZSB0byB0aGUgbmV3IHBhcmVudCBhbnMgYXNzaWduIHRoZSBkZXB0aCB0byB0aGUgc3VidHJlZVxuICAgICAgICAgIGlmIChuZXdQYXJlbnRJZCA9PT0gY2hpbGQuaWQpIHtcbiAgICAgICAgICAgIGZvdW5kXzEgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSBjaGlsZC5jaGlsZHJlbi5wdXNoKHN1YnRyZWUpO2Vsc2UgY2hpbGQuY2hpbGRyZW4gPSBbc3VidHJlZV07XG4gICAgICAgICAgICBuZXdQYXJlbnREZXB0aF8xID0gY2hpbGQuZGVwdGg7XG4gICAgICAgICAgICBpZiAoc3VidHJlZS5pdGVtVHlwZSA9PT0gJ25vZGUnKSBzdWJ0cmVlLmRlcHRoID0gbmV3UGFyZW50RGVwdGhfMSArIDI7ZWxzZSBzdWJ0cmVlLmRlcHRoID0gbmV3UGFyZW50RGVwdGhfMSArIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoKCFuZXdQYXJlbnRJZCB8fCAhZm91bmRfMSkgJiYgc3VidHJlZS5pdGVtVHlwZSAhPT0gJ25vZGUnKSB7XG4gICAgICAvLyBpZiB0aGUgbmV3UGFyZW50SWQgaXMgdW5kZWZpbmVkIG9yIGl0IGlzIG5vdCBmb3VuZCBpbiB0aGUgdHJlZSwgYWRkIHRoZSBzdWJUcmVlIHRvIHRoZSByb290XG4gICAgICB0cmVlcy5wdXNoKHN1YnRyZWUpO1xuICAgIH0gLy8gdXBkYXRlIHRoZSBkZXB0aCBvZiB0aGUgc3VidHJlZSBhbmQgaXRzIGNoaWxkcmVuIGZyb20gdGhlIHN1YnRyZWVcblxuXG4gICAgdmFyIGN1cnJlbnREZXB0aF8xID0gc3VidHJlZS5kZXB0aDtcbiAgICB0cmF2ZXJzZVRyZWUoc3VidHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuaXRlbVR5cGUgPT09ICdub2RlJykgY3VycmVudERlcHRoXzEgKz0gMjtlbHNlIGN1cnJlbnREZXB0aF8xICs9IDE7XG4gICAgICBjaGlsZC5kZXB0aCA9IGN1cnJlbnREZXB0aF8xO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdHJlZXM7XG59O1xuZXhwb3J0IHZhciBnZXRDb21ib0JCb3ggPSBmdW5jdGlvbiBnZXRDb21ib0JCb3goY2hpbGRyZW4sIGdyYXBoLCBjb21ibykge1xuICB2YXIgY29tYm9CQm94ID0ge1xuICAgIG1pblg6IEluZmluaXR5LFxuICAgIG1pblk6IEluZmluaXR5LFxuICAgIG1heFg6IC1JbmZpbml0eSxcbiAgICBtYXhZOiAtSW5maW5pdHksXG4gICAgeDogdW5kZWZpbmVkLFxuICAgIHk6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIGNlbnRlclg6IHVuZGVmaW5lZCxcbiAgICBjZW50ZXJZOiB1bmRlZmluZWRcbiAgfTtcblxuICBpZiAoIWNoaWxkcmVuIHx8IGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIHZhciBjb21ib01vZGVsID0gY29tYm8gPT09IG51bGwgfHwgY29tYm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbWJvLmdldE1vZGVsKCk7XG5cbiAgICB2YXIgX2EgPSBjb21ib01vZGVsIHx8IHt9LFxuICAgICAgICB4ID0gX2EueCxcbiAgICAgICAgeSA9IF9hLnk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWluWDogeCxcbiAgICAgIG1pblk6IHksXG4gICAgICBtYXhYOiB4LFxuICAgICAgbWF4WTogeSxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5LFxuICAgICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGhlaWdodDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIGNoaWxkSXRlbSA9IGdyYXBoLmZpbmRCeUlkKGNoaWxkLmlkKTtcbiAgICBpZiAoIWNoaWxkSXRlbSB8fCAhY2hpbGRJdGVtLmlzVmlzaWJsZSgpKSByZXR1cm47IC8vIGlnbm9yZSBoaWRkZW4gY2hpbGRyZW5cblxuICAgIGNoaWxkSXRlbS5zZXQoJ2Jib3hDYW52YXNDYWNoZScsIHVuZGVmaW5lZCk7XG4gICAgdmFyIGNoaWxkQkJveCA9IGNoaWxkSXRlbS5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGNoaWxkQkJveC54ICYmIGNvbWJvQkJveC5taW5YID4gY2hpbGRCQm94Lm1pblgpIGNvbWJvQkJveC5taW5YID0gY2hpbGRCQm94Lm1pblg7XG4gICAgaWYgKGNoaWxkQkJveC55ICYmIGNvbWJvQkJveC5taW5ZID4gY2hpbGRCQm94Lm1pblkpIGNvbWJvQkJveC5taW5ZID0gY2hpbGRCQm94Lm1pblk7XG4gICAgaWYgKGNoaWxkQkJveC54ICYmIGNvbWJvQkJveC5tYXhYIDwgY2hpbGRCQm94Lm1heFgpIGNvbWJvQkJveC5tYXhYID0gY2hpbGRCQm94Lm1heFg7XG4gICAgaWYgKGNoaWxkQkJveC55ICYmIGNvbWJvQkJveC5tYXhZIDwgY2hpbGRCQm94Lm1heFkpIGNvbWJvQkJveC5tYXhZID0gY2hpbGRCQm94Lm1heFk7XG4gIH0pO1xuICBjb21ib0JCb3gueCA9IChjb21ib0JCb3gubWluWCArIGNvbWJvQkJveC5tYXhYKSAvIDI7XG4gIGNvbWJvQkJveC55ID0gKGNvbWJvQkJveC5taW5ZICsgY29tYm9CQm94Lm1heFkpIC8gMjtcbiAgY29tYm9CQm94LndpZHRoID0gY29tYm9CQm94Lm1heFggLSBjb21ib0JCb3gubWluWDtcbiAgY29tYm9CQm94LmhlaWdodCA9IGNvbWJvQkJveC5tYXhZIC0gY29tYm9CQm94Lm1pblk7XG4gIGNvbWJvQkJveC5jZW50ZXJYID0gKGNvbWJvQkJveC5taW5YICsgY29tYm9CQm94Lm1heFgpIC8gMjtcbiAgY29tYm9CQm94LmNlbnRlclkgPSAoY29tYm9CQm94Lm1pblkgKyBjb21ib0JCb3gubWF4WSkgLyAyO1xuICBPYmplY3Qua2V5cyhjb21ib0JCb3gpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChjb21ib0JCb3hba2V5XSA9PT0gSW5maW5pdHkgfHwgY29tYm9CQm94W2tleV0gPT09IC1JbmZpbml0eSkge1xuICAgICAgY29tYm9CQm94W2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvbWJvQkJveDtcbn07XG5leHBvcnQgdmFyIHNob3VsZFJlZnJlc2hFZGdlID0gZnVuY3Rpb24gc2hvdWxkUmVmcmVzaEVkZ2UoY2ZnKSB7XG4gIHZhciByZWZyZXNoRWRnZSA9IGlzTnVtYmVyKGNmZy54KSB8fCBpc051bWJlcihjZmcueSkgfHwgY2ZnLnR5cGUgfHwgY2ZnLmFuY2hvclBvaW50cyB8fCBjZmcuc2l6ZTtcbiAgaWYgKGNmZy5zdHlsZSkgcmVmcmVzaEVkZ2UgPSByZWZyZXNoRWRnZSB8fCBpc051bWJlcihjZmcuc3R5bGUucikgfHwgaXNOdW1iZXIoY2ZnLnN0eWxlLndpZHRoKSB8fCBpc051bWJlcihjZmcuc3R5bGUuaGVpZ2h0KSB8fCBpc051bWJlcihjZmcuc3R5bGUucngpIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5yeSk7XG4gIHJldHVybiByZWZyZXNoRWRnZTtcbn07XG5leHBvcnQgdmFyIGNsb25lQmVzaWRlc0ltZyA9IGZ1bmN0aW9uIGNsb25lQmVzaWRlc0ltZyhvYmopIHtcbiAgdmFyIGNsb25lZE9iaiA9IHt9O1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleTEpIHtcbiAgICB2YXIgb2JqMiA9IG9ialtrZXkxXTtcblxuICAgIGlmIChpc09iamVjdChvYmoyKSAmJiAhaXNBcnJheShvYmoyKSkge1xuICAgICAgdmFyIGNsb25lZE9iajJfMSA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMob2JqMikuZm9yRWFjaChmdW5jdGlvbiAoa2V5Mikge1xuICAgICAgICB2YXIgdiA9IG9iajJba2V5Ml07XG4gICAgICAgIGlmIChrZXkyID09PSAnaW1nJyAmJiAhaXNTdHJpbmcodikpIHJldHVybjtcbiAgICAgICAgY2xvbmVkT2JqMl8xW2tleTJdID0gY2xvbmUodik7XG4gICAgICB9KTtcbiAgICAgIGNsb25lZE9ialtrZXkxXSA9IGNsb25lZE9iajJfMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xvbmVkT2JqW2tleTFdID0gY2xvbmUob2JqMik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsb25lZE9iajtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/graphic.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/index.js":
/*!*****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/index.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./color */ \"./node_modules/@antv/g6-core/es/util/color.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"ext\"].transform;\n\nvar Util = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _base__WEBPACK_IMPORTED_MODULE_4__), _graphic__WEBPACK_IMPORTED_MODULE_2__), _path__WEBPACK_IMPORTED_MODULE_3__), _math__WEBPACK_IMPORTED_MODULE_1__), _color__WEBPACK_IMPORTED_MODULE_5__), {\n transform: transform,\n mat3: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"]\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Util);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzPzQ5MmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ007QUFDTjtBQUNBO0FBQ0U7QUFDUztBQUM5QyxnQkFBZ0IscURBQUc7O0FBRW5CLFdBQVcsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxrQ0FBUSxHQUFHLHFDQUFXLEdBQUcsa0NBQVEsR0FBRyxrQ0FBUSxHQUFHLG1DQUFTO0FBQzdIO0FBQ0EsUUFBUSxzREFBSTtBQUNaLENBQUM7O0FBRWMsbUVBQUkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIE1hdGhVdGlsIGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgKiBhcyBHcmFwaGljVXRpbCBmcm9tICcuL2dyYXBoaWMnO1xuaW1wb3J0ICogYXMgUGF0aFV0aWwgZnJvbSAnLi9wYXRoJztcbmltcG9ydCAqIGFzIEJhc2VVdGlsIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBDb2xvclV0aWwgZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgeyBleHQsIG1hdDMgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcblxudmFyIFV0aWwgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgQmFzZVV0aWwpLCBHcmFwaGljVXRpbCksIFBhdGhVdGlsKSwgTWF0aFV0aWwpLCBDb2xvclV0aWwpLCB7XG4gIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICBtYXQzOiBtYXQzXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgVXRpbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/letterAspectRatio.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/letterAspectRatio.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ' ': 0.3329986572265625,\n a: 0.5589996337890625,\n A: 0.6569992065429687,\n b: 0.58599853515625,\n B: 0.6769989013671875,\n c: 0.5469985961914062,\n C: 0.7279998779296875,\n d: 0.58599853515625,\n D: 0.705999755859375,\n e: 0.554998779296875,\n E: 0.63699951171875,\n f: 0.37299957275390627,\n F: 0.5769989013671875,\n g: 0.5909988403320312,\n G: 0.7479995727539063,\n h: 0.555999755859375,\n H: 0.7199996948242188,\n i: 0.255999755859375,\n I: 0.23699951171875,\n j: 0.26699981689453123,\n J: 0.5169998168945312,\n k: 0.5289993286132812,\n K: 0.6899993896484375,\n l: 0.23499908447265624,\n L: 0.5879989624023437,\n m: 0.854998779296875,\n M: 0.8819992065429687,\n n: 0.5589996337890625,\n N: 0.7189987182617188,\n o: 0.58599853515625,\n O: 0.7669998168945312,\n p: 0.58599853515625,\n P: 0.6419998168945312,\n q: 0.58599853515625,\n Q: 0.7669998168945312,\n r: 0.3649993896484375,\n R: 0.6759994506835938,\n s: 0.504998779296875,\n S: 0.6319992065429687,\n t: 0.354998779296875,\n T: 0.6189987182617187,\n u: 0.5599990844726562,\n U: 0.7139999389648437,\n v: 0.48199920654296874,\n V: 0.6389999389648438,\n w: 0.754998779296875,\n W: 0.929998779296875,\n x: 0.5089996337890625,\n X: 0.63699951171875,\n y: 0.4959991455078125,\n Y: 0.66199951171875,\n z: 0.48699951171875,\n Z: 0.6239990234375,\n '0': 0.6,\n '1': 0.40099945068359377,\n '2': 0.6,\n '3': 0.6,\n '4': 0.6,\n '5': 0.6,\n '6': 0.6,\n '7': 0.5469985961914062,\n '8': 0.6,\n '9': 0.6,\n '[': 0.3329986572265625,\n ']': 0.3329986572265625,\n ',': 0.26399993896484375,\n '.': 0.26399993896484375,\n ';': 0.26399993896484375,\n ':': 0.26399993896484375,\n '{': 0.3329986572265625,\n '}': 0.3329986572265625,\n '\\\\': 0.5,\n '|': 0.19499969482421875,\n '=': 0.604998779296875,\n '+': 0.604998779296875,\n '-': 0.604998779296875,\n _: 0.5,\n '`': 0.3329986572265625,\n ' ~': 0.8329986572265625,\n '!': 0.3329986572265625,\n '@': 0.8579986572265625,\n '#': 0.6,\n $: 0.6,\n '%': 0.9699996948242188,\n '^': 0.517999267578125,\n '&': 0.7259994506835937,\n '*': 0.505999755859375,\n '(': 0.3329986572265625,\n ')': 0.3329986572265625,\n '<': 0.604998779296875,\n '>': 0.604998779296875,\n '/': 0.5,\n '?': 0.53699951171875\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzPzkxNWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAnICc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgYTogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBBOiAwLjY1Njk5OTIwNjU0Mjk2ODcsXG4gIGI6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEI6IDAuNjc2OTk4OTAxMzY3MTg3NSxcbiAgYzogMC41NDY5OTg1OTYxOTE0MDYyLFxuICBDOiAwLjcyNzk5OTg3NzkyOTY4NzUsXG4gIGQ6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEQ6IDAuNzA1OTk5NzU1ODU5Mzc1LFxuICBlOiAwLjU1NDk5ODc3OTI5Njg3NSxcbiAgRTogMC42MzY5OTk1MTE3MTg3NSxcbiAgZjogMC4zNzI5OTk1NzI3NTM5MDYyNyxcbiAgRjogMC41NzY5OTg5MDEzNjcxODc1LFxuICBnOiAwLjU5MDk5ODg0MDMzMjAzMTIsXG4gIEc6IDAuNzQ3OTk5NTcyNzUzOTA2MyxcbiAgaDogMC41NTU5OTk3NTU4NTkzNzUsXG4gIEg6IDAuNzE5OTk5Njk0ODI0MjE4OCxcbiAgaTogMC4yNTU5OTk3NTU4NTkzNzUsXG4gIEk6IDAuMjM2OTk5NTExNzE4NzUsXG4gIGo6IDAuMjY2OTk5ODE2ODk0NTMxMjMsXG4gIEo6IDAuNTE2OTk5ODE2ODk0NTMxMixcbiAgazogMC41Mjg5OTkzMjg2MTMyODEyLFxuICBLOiAwLjY4OTk5OTM4OTY0ODQzNzUsXG4gIGw6IDAuMjM0OTk5MDg0NDcyNjU2MjQsXG4gIEw6IDAuNTg3OTk4OTYyNDAyMzQzNyxcbiAgbTogMC44NTQ5OTg3NzkyOTY4NzUsXG4gIE06IDAuODgxOTk5MjA2NTQyOTY4NyxcbiAgbjogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBOOiAwLjcxODk5ODcxODI2MTcxODgsXG4gIG86IDAuNTg1OTk4NTM1MTU2MjUsXG4gIE86IDAuNzY2OTk5ODE2ODk0NTMxMixcbiAgcDogMC41ODU5OTg1MzUxNTYyNSxcbiAgUDogMC42NDE5OTk4MTY4OTQ1MzEyLFxuICBxOiAwLjU4NTk5ODUzNTE1NjI1LFxuICBROiAwLjc2Njk5OTgxNjg5NDUzMTIsXG4gIHI6IDAuMzY0OTk5Mzg5NjQ4NDM3NSxcbiAgUjogMC42NzU5OTk0NTA2ODM1OTM4LFxuICBzOiAwLjUwNDk5ODc3OTI5Njg3NSxcbiAgUzogMC42MzE5OTkyMDY1NDI5Njg3LFxuICB0OiAwLjM1NDk5ODc3OTI5Njg3NSxcbiAgVDogMC42MTg5OTg3MTgyNjE3MTg3LFxuICB1OiAwLjU1OTk5OTA4NDQ3MjY1NjIsXG4gIFU6IDAuNzEzOTk5OTM4OTY0ODQzNyxcbiAgdjogMC40ODE5OTkyMDY1NDI5Njg3NCxcbiAgVjogMC42Mzg5OTk5Mzg5NjQ4NDM4LFxuICB3OiAwLjc1NDk5ODc3OTI5Njg3NSxcbiAgVzogMC45Mjk5OTg3NzkyOTY4NzUsXG4gIHg6IDAuNTA4OTk5NjMzNzg5MDYyNSxcbiAgWDogMC42MzY5OTk1MTE3MTg3NSxcbiAgeTogMC40OTU5OTkxNDU1MDc4MTI1LFxuICBZOiAwLjY2MTk5OTUxMTcxODc1LFxuICB6OiAwLjQ4Njk5OTUxMTcxODc1LFxuICBaOiAwLjYyMzk5OTAyMzQzNzUsXG4gICcwJzogMC42LFxuICAnMSc6IDAuNDAwOTk5NDUwNjgzNTkzNzcsXG4gICcyJzogMC42LFxuICAnMyc6IDAuNixcbiAgJzQnOiAwLjYsXG4gICc1JzogMC42LFxuICAnNic6IDAuNixcbiAgJzcnOiAwLjU0Njk5ODU5NjE5MTQwNjIsXG4gICc4JzogMC42LFxuICAnOSc6IDAuNixcbiAgJ1snOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICddJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnLCc6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICcuJzogMC4yNjM5OTk5Mzg5NjQ4NDM3NSxcbiAgJzsnOiAwLjI2Mzk5OTkzODk2NDg0Mzc1LFxuICAnOic6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICd7JzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnfSc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ1xcXFwnOiAwLjUsXG4gICd8JzogMC4xOTQ5OTk2OTQ4MjQyMTg3NSxcbiAgJz0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJysnOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJy0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgXzogMC41LFxuICAnYCc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJyB+JzogMC44MzI5OTg2NTcyMjY1NjI1LFxuICAnISc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ0AnOiAwLjg1Nzk5ODY1NzIyNjU2MjUsXG4gICcjJzogMC42LFxuICAkOiAwLjYsXG4gICclJzogMC45Njk5OTk2OTQ4MjQyMTg4LFxuICAnXic6IDAuNTE3OTk5MjY3NTc4MTI1LFxuICAnJic6IDAuNzI1OTk5NDUwNjgzNTkzNyxcbiAgJyonOiAwLjUwNTk5OTc1NTg1OTM3NSxcbiAgJygnOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICcpJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnPCc6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnPic6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnLyc6IDAuNSxcbiAgJz8nOiAwLjUzNjk5OTUxMTcxODc1XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/letterAspectRatio.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/math.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/math.js ***!
\****************************************************/
/*! exports provided: compare, getLineIntersect, getRectIntersectByPoint, getCircleIntersectByPoint, getEllipseIntersectByPoint, applyMatrix, invertMatrix, getCircleCenterByPoints, distance, scaleMatrix, floydWarshall, getAdjMatrix, translate, move, scale, rotate, getDegree, isPointInPolygon, intersectBBox, isPolygonsIntersect, Line, getBBoxBoundLine, itemIntersectByLine, fractionToLine, getPointsCenter, squareDist, pointLineSquareDist, isPointsOverlap, pointRectSquareDist, pointLineDistance, lerp */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineIntersect\", function() { return getLineIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectIntersectByPoint\", function() { return getRectIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleIntersectByPoint\", function() { return getCircleIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEllipseIntersectByPoint\", function() { return getEllipseIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyMatrix\", function() { return applyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invertMatrix\", function() { return invertMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleCenterByPoints\", function() { return getCircleCenterByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return scaleMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return floydWarshall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return getAdjMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"move\", function() { return move; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return getDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointInPolygon\", function() { return isPointInPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBBox\", function() { return intersectBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPolygonsIntersect\", function() { return isPolygonsIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxBoundLine\", function() { return getBBoxBoundLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"itemIntersectByLine\", function() { return itemIntersectByLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fractionToLine\", function() { return fractionToLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsCenter\", function() { return getPointsCenter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squareDist\", function() { return squareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineSquareDist\", function() { return pointLineSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointsOverlap\", function() { return isPointsOverlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointRectSquareDist\", function() { return pointRectSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineDistance\", function() { return pointLineDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\n/**\n * 对比对象,用于对象数组排序\n * @param {string} attributeName 排序依据的字段名称\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar compare = function compare(attributeName) {\n return function (m, n) {\n return m[attributeName] - n[attributeName];\n };\n};\n/**\n * 是否在区间内\n * @param {number} value 值\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\n/**\n * 获取两条线段的交点\n * @param {Point} p0 第一条线段起点\n * @param {Point} p1 第一条线段终点\n * @param {Point} p2 第二条线段起点\n * @param {Point} p3 第二条线段终点\n * @return {Point} 交点\n */\n\n\nvar getLineIntersect = function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.0001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var invertKross = 1 / kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) * invertKross;\n var t = (E.x * D0.y - E.y * D0.x) * invertKross;\n if (!isBetween(s, 0, 1) || !isBetween(t, 0, 1)) return null;\n return {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n\n return null;\n};\n/**\n * point and rectangular intersection point\n * @param {IRect} rect rect\n * @param {Point} point point\n * @return {PointPoint} rst;\n */\n\nvar getRectIntersectByPoint = function getRectIntersectByPoint(rect, point) {\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n var cx = x + width / 2;\n var cy = y + height / 2;\n var points = [];\n var center = {\n x: cx,\n y: cy\n };\n points.push({\n x: x,\n y: y\n });\n points.push({\n x: x + width,\n y: y\n });\n points.push({\n x: x + width,\n y: y + height\n });\n points.push({\n x: x,\n y: y + height\n });\n points.push({\n x: x,\n y: y\n });\n var rst = null;\n\n for (var i = 1; i < points.length; i++) {\n rst = getLineIntersect(points[i - 1], points[i], center, point);\n\n if (rst) {\n break;\n }\n }\n\n return rst;\n};\n/**\n * get point and circle inIntersect\n * @param {ICircle} circle 圆点,x,y,r\n * @param {Point} point 点 x,y\n * @return {Point} applied point\n */\n\nvar getCircleIntersectByPoint = function getCircleIntersectByPoint(circle, point) {\n var cx = circle.x,\n cy = circle.y,\n r = circle.r;\n var x = point.x,\n y = point.y;\n var dx = x - cx;\n var dy = y - cy;\n\n if (dx * dx + dy * dy < r * r) {\n return null;\n }\n\n var angle = Math.atan(dy / dx);\n return {\n x: cx + Math.abs(r * Math.cos(angle)) * Math.sign(dx),\n y: cy + Math.abs(r * Math.sin(angle)) * Math.sign(dy)\n };\n};\n/**\n * get point and ellipse inIntersect\n * @param {Object} ellipse 椭圆 x,y,rx,ry\n * @param {Object} point 点 x,y\n * @return {object} applied point\n */\n\nvar getEllipseIntersectByPoint = function getEllipseIntersectByPoint(ellipse, point) {\n var a = ellipse.rx;\n var b = ellipse.ry;\n var cx = ellipse.x;\n var cy = ellipse.y;\n var dx = point.x - cx;\n var dy = point.y - cy; // 直接通过 x,y 求夹角,求出来的范围是 -PI, PI\n\n var angle = Math.atan2(dy / b, dx / a);\n\n if (angle < 0) {\n angle += 2 * Math.PI; // 转换到 0,2PI\n }\n\n return {\n x: cx + a * Math.cos(angle),\n y: cy + b * Math.sin(angle)\n };\n};\n/**\n * coordinate matrix transformation\n * @param {number} point coordinate\n * @param {Matrix} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {Point} transformed point\n */\n\nvar applyMatrix = function applyMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n var vector = [point.x, point.y, tag];\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, matrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n * coordinate matrix invert transformation\n * @param {number} point coordinate\n * @param {number} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {object} transformed point\n */\n\nvar invertMatrix = function invertMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var inversedMatrix = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].invert([1, 0, 0, 0, 1, 0, 0, 0, 1], matrix);\n\n if (!inversedMatrix) {\n inversedMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var vector = [point.x, point.y, tag];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, inversedMatrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n *\n * @param p1 First coordinate\n * @param p2 second coordinate\n * @param p3 three coordinate\n */\n\nvar getCircleCenterByPoints = function getCircleCenterByPoints(p1, p2, p3) {\n var a = p1.x - p2.x;\n var b = p1.y - p2.y;\n var c = p1.x - p3.x;\n var d = p1.y - p3.y;\n var e = (p1.x * p1.x - p2.x * p2.x - p2.y * p2.y + p1.y * p1.y) / 2;\n var f = (p1.x * p1.x - p3.x * p3.x - p3.y * p3.y + p1.y * p1.y) / 2;\n var denominator = b * c - a * d;\n return {\n x: -(d * e - b * f) / denominator,\n y: -(a * f - c * e) / denominator\n };\n};\n/**\n * get distance by two points\n * @param p1 first point\n * @param p2 second point\n */\n\nvar distance = function distance(p1, p2) {\n var vx = p1.x - p2.x;\n var vy = p1.y - p2.y;\n return Math.sqrt(vx * vx + vy * vy);\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\n\nvar scaleMatrix = function scaleMatrix(matrix, ratio) {\n var result = [];\n matrix.forEach(function (row) {\n var newRow = [];\n row.forEach(function (v) {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * Floyd Warshall algorithm for shortest path distances matrix\n * @param {array} adjMatrix adjacency matrix\n * @return {array} distances shortest path distances matrix\n */\n\nvar floydWarshall = function floydWarshall(adjMatrix) {\n // initialize\n var dist = [];\n var size = adjMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n/**\n * get adjacency matrix\n * @param data graph data\n * @param directed whether it's a directed graph\n */\n\nvar getAdjMatrix = function getAdjMatrix(data, directed) {\n var nodes = data.nodes,\n edges = data.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (e) {\n var source = e.source,\n target = e.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n/**\n * 平移group\n * @param group Group 实例\n * @param vec 移动向量\n */\n\nvar translate = function translate(group, vec) {\n group.translate(vec.x, vec.y);\n};\n/**\n * 移动到指定坐标点\n * @param group Group 实例\n * @param point 移动到的坐标点\n */\n\nvar move = function move(group, point, animate, animateCfg) {\n if (animateCfg === void 0) {\n animateCfg = {\n duration: 500\n };\n }\n\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var bbox = group.getCanvasBBox();\n var vx = point.x - bbox.minX;\n var vy = point.y - bbox.minY;\n\n if (animate) {\n var dx_1 = vx * matrix[0];\n var dy_1 = vy * matrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0;\n group.animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n matrix = transform(matrix, [['t', newX_1 - lastX_1, newY_1 - lastY_1]]);\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n return {\n matrix: matrix\n };\n }, animateCfg);\n } else {\n var movedMatrix = transform(matrix, [['t', vx, vy]]);\n group.setMatrix(movedMatrix);\n }\n};\n/**\n * 缩放 group\n * @param group Group 实例\n * @param point 在x 和 y 方向上的缩放比例\n */\n\nvar scale = function scale(group, ratio) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var scaleXY = ratio;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio)) {\n scaleXY = [ratio, ratio];\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio) && ratio.length === 1) {\n scaleXY = [ratio[0], ratio[0]];\n }\n\n matrix = transform(matrix, [['s', scaleXY[0], scaleXY[1]]]);\n group.setMatrix(matrix);\n};\n/**\n *\n * @param group Group 实例\n * @param ratio 选择角度\n */\n\nvar rotate = function rotate(group, angle) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n matrix = transform(matrix, [['r', angle]]);\n group.setMatrix(matrix);\n};\nvar getDegree = function getDegree(n, nodeIdxMap, edges) {\n var degrees = [];\n\n for (var i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n\n edges.forEach(function (e) {\n if (e.source) {\n degrees[nodeIdxMap[e.source]] += 1;\n }\n\n if (e.target) {\n degrees[nodeIdxMap[e.target]] += 1;\n }\n });\n return degrees;\n}; // 判断点Q是否在p1和p2的线段上\n\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n\n return false;\n}\n/**\n * 判断点P在多边形内-射线法. Borrow from https://github.com/antvis/util/blob/master/packages/path-util/src/point-in-polygon.ts\n * @param points\n * @param x\n * @param y\n */\n\n\nvar isPointInPolygon = function isPointInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length; // 判断两个double在eps精度下的大小关系\n\n var tolerance = 1e-6;\n\n function dcmp(xValue) {\n if (Math.abs(xValue) < tolerance) {\n return 0;\n }\n\n return xValue < 0 ? -1 : 1;\n }\n\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n } // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n\n return isHit;\n}; // 判断两个BBox是否相交\n\nvar intersectBBox = function intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n};\n\nvar lineIntersectPolygon = function lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n/**\n * 判断两个polygon是否相交。\n * borrow from @antv/path-util\n * @param points1 polygon1的顶点数组\n * @param points2 polygon2的顶点数组\n */\n\n\nvar isPolygonsIntersect = function isPolygonsIntersect(points1, points2) {\n var getBBox = function getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n };\n\n var parseToLines = function parseToLines(points) {\n var lines = [];\n var count = points.length;\n\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n\n return lines;\n }; // 空数组,或者一个点返回 false\n\n\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2); // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n\n var isIn = false; // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n\nvar Line =\n/** @class */\nfunction () {\n function Line(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n\n Line.prototype.getBBox = function () {\n var minX = Math.min(this.x1, this.x2);\n var minY = Math.min(this.y1, this.y2);\n var maxX = Math.max(this.x1, this.x2);\n var maxY = Math.max(this.y1, this.y2);\n var res = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return res;\n };\n\n return Line;\n}();\n\n\nvar getBBoxBoundLine = function getBBoxBoundLine(bbox, direction) {\n var bounds = {\n top: [bbox.minX, bbox.minY, bbox.maxX, bbox.minY],\n left: [bbox.minX, bbox.minY, bbox.minX, bbox.maxY],\n bottom: [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY],\n right: [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY]\n };\n return bounds[direction];\n};\n/**\n * 计算两条线段相交时,相交点对第一条线段上的分割比例\n */\n\nvar fractionAlongLineA = function fractionAlongLineA(la, lb) {\n var uaT = (lb.x2 - lb.x1) * (la.y1 - lb.y1) - (lb.y2 - lb.y1) * (la.x1 - lb.x1);\n var ubT = (la.x2 - la.x1) * (la.y1 - lb.y1) - (la.y2 - la.y1) * (la.x1 - lb.x1);\n var uB = (lb.y2 - lb.y1) * (la.x2 - la.x1) - (lb.x2 - lb.x1) * (la.y2 - la.y1);\n\n if (uB) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return ua;\n }\n }\n\n return Number.POSITIVE_INFINITY;\n};\n\nvar itemIntersectByLine = function itemIntersectByLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var countIntersections = 0;\n var intersections = [];\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n intersections[i] = getLineIntersect({\n x: line.x1,\n y: line.y1\n }, {\n x: line.x2,\n y: line.y2\n }, {\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n\n if (intersections[i]) {\n countIntersections += 1;\n }\n }\n\n return [intersections, countIntersections];\n};\nvar fractionToLine = function fractionToLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var minDistance = Number.POSITIVE_INFINITY;\n var countIntersections = 0;\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n var testDistance = fractionAlongLineA(line, new Line(x1, y1, x2, y2));\n testDistance = Math.abs(testDistance - 0.5);\n\n if (testDistance >= 0 && testDistance <= 1) {\n countIntersections += 1;\n minDistance = testDistance < minDistance ? testDistance : minDistance;\n }\n }\n\n if (countIntersections === 0) return -1;\n return minDistance;\n};\nvar getPointsCenter = function getPointsCenter(points) {\n var centerX = 0;\n var centerY = 0;\n\n if (points.length > 0) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n centerX += point.x;\n centerY += point.y;\n }\n\n centerX /= points.length;\n centerY /= points.length;\n }\n\n return {\n x: centerX,\n y: centerY\n };\n};\nvar squareDist = function squareDist(a, b) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n};\nvar pointLineSquareDist = function pointLineSquareDist(point, line) {\n var x1 = line.x1;\n var y1 = line.y1;\n var x2 = line.x2 - x1;\n var y2 = line.y2 - y1;\n var px = point.x - x1;\n var py = point.y - y1;\n var dotprod = px * x2 + py * y2;\n var projlenSq;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n px = x2 - px;\n py = y2 - py;\n dotprod = px * x2 + py * y2;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);\n }\n }\n\n var lenSq = px * px + py * py - projlenSq;\n\n if (lenSq < 0) {\n lenSq = 0;\n }\n\n return lenSq;\n};\nvar isPointsOverlap = function isPointsOverlap(p1, p2, e) {\n if (e === void 0) {\n e = 1e-3;\n }\n\n return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) < Math.pow(e, 2);\n};\n/**\n * 点到矩形的距离的平方:矩形内部点视作距离为0,外部的点若投影落在矩形边上则为点到矩形边的最近的垂直距离,否则为点到矩形顶点的距离,\n * @param point IPoint\n * @param rect IRect\n */\n\nvar pointRectSquareDist = function pointRectSquareDist(point, rect) {\n var isLeft = point.x < rect.x;\n var isRight = point.x > rect.x + rect.width;\n var isTop = point.y > rect.y + rect.height;\n var isBottom = point.y < rect.y;\n var isPointOutside = isLeft || isRight || isTop || isBottom;\n\n if (!isPointOutside) {\n return 0;\n }\n\n if (isTop && !isLeft && !isRight) {\n return Math.pow(rect.y + rect.height - point.y, 2);\n }\n\n if (isBottom && !isLeft && !isRight) {\n return Math.pow(point.y - rect.y, 2);\n }\n\n if (isLeft && !isTop && !isBottom) {\n return Math.pow(rect.x - point.x, 2);\n }\n\n if (isRight && !isTop && !isBottom) {\n return Math.pow(rect.x + rect.width - point.x, 2);\n }\n\n var dx = Math.min(Math.abs(rect.x - point.x), Math.abs(rect.x + rect.width - point.x));\n var dy = Math.min(Math.abs(rect.y - point.y), Math.abs(rect.y + rect.height - point.y));\n return dx * dx + dy * dy;\n};\n/**\n * point to line distance\n * @param {array} line 线的四个顶点 [x1, y1, x2, y2]\n * @param {object} point 坐标点 {x, y}\n * @return {Number|NaN} distance\n */\n\nvar pointLineDistance = function pointLineDistance(line, point) {\n var x1 = line[0],\n y1 = line[1],\n x2 = line[2],\n y2 = line[3];\n var x = point.x,\n y = point.y;\n var d = [x2 - x1, y2 - y1];\n\n if (_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].exactEquals(d, [0, 0])) {\n return NaN;\n }\n\n var u = [-d[1], d[0]]; // @ts-ignore\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(u, u);\n var a = [x - x1, y - y1]; // @ts-ignore\n\n return Math.abs(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].dot(a, u));\n};\n/**\n * Linearly interpolate between start and end, where alpha is the percent distance along the line.\n * alpha = 0 will be start, and alpha = 1 will be end.\n * @param {Number} start\n * @param {Number} end\n * @param {Number} alpha interpolation factor, typically in the closed interval [0, 1]\n * @returns\n */\n\nvar lerp = function lerp(start, end, alpha) {\n return start + (end - start) * alpha;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanM/YWRjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRDtBQUNmO0FBQzNDLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksTUFBTTtBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qjs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxzREFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQUk7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUUsc0RBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPLDBEQUFPO0FBQ2Q7QUFDQTs7QUFFQSxNQUFNLDBEQUFPO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQSx3QkFBd0I7O0FBRXhCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7O0FBRW5CLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFZTtBQUNUO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsc0JBQXNCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLFlBQVksT0FBTyxZQUFZO0FBQy9CLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sc0RBQUk7QUFDVjtBQUNBOztBQUVBLHdCQUF3Qjs7QUFFeEIsRUFBRSxzREFBSTtBQUNOLDJCQUEyQjs7QUFFM0Isa0JBQWtCLHNEQUFJO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXQzLCB2ZWMzLCBleHQsIHZlYzIgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBpc0FycmF5LCBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbi8qKlxuICog5a+55q+U5a+56LGh77yM55So5LqO5a+56LGh5pWw57uE5o6S5bqPXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgICAgICBhdHRyaWJ1dGVOYW1lICDmjpLluo/kvp3mja7nmoTlrZfmrrXlkI3np7BcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1pbiAgICDmnIDlsI/lgLxcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1heCAgICDmnIDlpKflgLxcbiAqIEByZXR1cm4gIHtib29sZWFufSAgICAgIGJvb2wgICDluIPlsJRcbiAqL1xuXG5leHBvcnQgdmFyIGNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChtLCBuKSB7XG4gICAgcmV0dXJuIG1bYXR0cmlidXRlTmFtZV0gLSBuW2F0dHJpYnV0ZU5hbWVdO1xuICB9O1xufTtcbi8qKlxuICog5piv5ZCm5Zyo5Yy66Ze05YaFXG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICB2YWx1ZSAg5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtaW4gICAg5pyA5bCP5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtYXggICAg5pyA5aSn5YC8XG4gKiBAcmV0dXJuICB7Ym9vbGVhbn0gICAgICBib29sICAg5biD5bCUXG4gKi9cblxudmFyIGlzQmV0d2VlbiA9IGZ1bmN0aW9uIGlzQmV0d2Vlbih2YWx1ZSwgbWluLCBtYXgpIHtcbiAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuLyoqXG4gKiDojrflj5bkuKTmnaHnur/mrrXnmoTkuqTngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDAg56ys5LiA5p2h57q/5q616LW354K5XG4gKiBAcGFyYW0gIHtQb2ludH0gIHAxIOesrOS4gOadoee6v+autee7iOeCuVxuICogQHBhcmFtICB7UG9pbnR9ICBwMiDnrKzkuozmnaHnur/mrrXotbfngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDMg56ys5LqM5p2h57q/5q6157uI54K5XG4gKiBAcmV0dXJuIHtQb2ludH0gIOS6pOeCuVxuICovXG5cblxuZXhwb3J0IHZhciBnZXRMaW5lSW50ZXJzZWN0ID0gZnVuY3Rpb24gZ2V0TGluZUludGVyc2VjdChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdG9sZXJhbmNlID0gMC4wMDAxO1xuICB2YXIgRSA9IHtcbiAgICB4OiBwMi54IC0gcDAueCxcbiAgICB5OiBwMi55IC0gcDAueVxuICB9O1xuICB2YXIgRDAgPSB7XG4gICAgeDogcDEueCAtIHAwLngsXG4gICAgeTogcDEueSAtIHAwLnlcbiAgfTtcbiAgdmFyIEQxID0ge1xuICAgIHg6IHAzLnggLSBwMi54LFxuICAgIHk6IHAzLnkgLSBwMi55XG4gIH07XG4gIHZhciBrcm9zcyA9IEQwLnggKiBEMS55IC0gRDAueSAqIEQxLng7XG4gIHZhciBzcXJLcm9zcyA9IGtyb3NzICoga3Jvc3M7XG4gIHZhciBpbnZlcnRLcm9zcyA9IDEgLyBrcm9zcztcbiAgdmFyIHNxckxlbjAgPSBEMC54ICogRDAueCArIEQwLnkgKiBEMC55O1xuICB2YXIgc3FyTGVuMSA9IEQxLnggKiBEMS54ICsgRDEueSAqIEQxLnk7XG5cbiAgaWYgKHNxcktyb3NzID4gdG9sZXJhbmNlICogc3FyTGVuMCAqIHNxckxlbjEpIHtcbiAgICB2YXIgcyA9IChFLnggKiBEMS55IC0gRS55ICogRDEueCkgKiBpbnZlcnRLcm9zcztcbiAgICB2YXIgdCA9IChFLnggKiBEMC55IC0gRS55ICogRDAueCkgKiBpbnZlcnRLcm9zcztcbiAgICBpZiAoIWlzQmV0d2VlbihzLCAwLCAxKSB8fCAhaXNCZXR3ZWVuKHQsIDAsIDEpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcDAueCArIHMgKiBEMC54LFxuICAgICAgeTogcDAueSArIHMgKiBEMC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbi8qKlxuICogcG9pbnQgYW5kIHJlY3Rhbmd1bGFyIGludGVyc2VjdGlvbiBwb2ludFxuICogQHBhcmFtICB7SVJlY3R9IHJlY3QgIHJlY3RcbiAqIEBwYXJhbSAge1BvaW50fSBwb2ludCBwb2ludFxuICogQHJldHVybiB7UG9pbnRQb2ludH0gcnN0O1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0UmVjdEludGVyc2VjdEJ5UG9pbnQgPSBmdW5jdGlvbiBnZXRSZWN0SW50ZXJzZWN0QnlQb2ludChyZWN0LCBwb2ludCkge1xuICB2YXIgeCA9IHJlY3QueCxcbiAgICAgIHkgPSByZWN0LnksXG4gICAgICB3aWR0aCA9IHJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgdmFyIGN4ID0geCArIHdpZHRoIC8gMjtcbiAgdmFyIGN5ID0geSArIGhlaWdodCAvIDI7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBjeCxcbiAgICB5OiBjeVxuICB9O1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pO1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCArIHdpZHRoLFxuICAgIHk6IHlcbiAgfSk7XG4gIHBvaW50cy5wdXNoKHtcbiAgICB4OiB4ICsgd2lkdGgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KTtcbiAgdmFyIHJzdCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICByc3QgPSBnZXRMaW5lSW50ZXJzZWN0KHBvaW50c1tpIC0gMV0sIHBvaW50c1tpXSwgY2VudGVyLCBwb2ludCk7XG5cbiAgICBpZiAocnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcbi8qKlxuICogZ2V0IHBvaW50IGFuZCBjaXJjbGUgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7SUNpcmNsZX0gY2lyY2xlIOWchueCue+8jHgseSxyXG4gKiBAcGFyYW0ge1BvaW50fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtQb2ludH0gYXBwbGllZCBwb2ludFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCA9IGZ1bmN0aW9uIGdldENpcmNsZUludGVyc2VjdEJ5UG9pbnQoY2lyY2xlLCBwb2ludCkge1xuICB2YXIgY3ggPSBjaXJjbGUueCxcbiAgICAgIGN5ID0gY2lyY2xlLnksXG4gICAgICByID0gY2lyY2xlLnI7XG4gIHZhciB4ID0gcG9pbnQueCxcbiAgICAgIHkgPSBwb2ludC55O1xuICB2YXIgZHggPSB4IC0gY3g7XG4gIHZhciBkeSA9IHkgLSBjeTtcblxuICBpZiAoZHggKiBkeCArIGR5ICogZHkgPCByICogcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuICByZXR1cm4ge1xuICAgIHg6IGN4ICsgTWF0aC5hYnMociAqIE1hdGguY29zKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHgpLFxuICAgIHk6IGN5ICsgTWF0aC5hYnMociAqIE1hdGguc2luKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHkpXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgcG9pbnQgYW5kIGVsbGlwc2UgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGxpcHNlIOakreWchiB4LHkscngscnlcbiAqIEBwYXJhbSB7T2JqZWN0fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtvYmplY3R9IGFwcGxpZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGdldEVsbGlwc2VJbnRlcnNlY3RCeVBvaW50ID0gZnVuY3Rpb24gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoZWxsaXBzZSwgcG9pbnQpIHtcbiAgdmFyIGEgPSBlbGxpcHNlLnJ4O1xuICB2YXIgYiA9IGVsbGlwc2Uucnk7XG4gIHZhciBjeCA9IGVsbGlwc2UueDtcbiAgdmFyIGN5ID0gZWxsaXBzZS55O1xuICB2YXIgZHggPSBwb2ludC54IC0gY3g7XG4gIHZhciBkeSA9IHBvaW50LnkgLSBjeTsgLy8g55u05o6l6YCa6L+HIHgseSDmsYLlpLnop5LvvIzmsYLlh7rmnaXnmoTojIPlm7TmmK8gLVBJLCBQSVxuXG4gIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoZHkgLyBiLCBkeCAvIGEpO1xuXG4gIGlmIChhbmdsZSA8IDApIHtcbiAgICBhbmdsZSArPSAyICogTWF0aC5QSTsgLy8g6L2s5o2i5YiwIDDvvIwyUElcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogY3ggKyBhICogTWF0aC5jb3MoYW5nbGUpLFxuICAgIHk6IGN5ICsgYiAqIE1hdGguc2luKGFuZ2xlKVxuICB9O1xufTtcbi8qKlxuICogY29vcmRpbmF0ZSBtYXRyaXggdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtNYXRyaXh9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtQb2ludH0gdHJhbnNmb3JtZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGFwcGx5TWF0cml4ID0gZnVuY3Rpb24gYXBwbHlNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICB2YXIgdmVjdG9yID0gW3BvaW50LngsIHBvaW50LnksIHRhZ107XG5cbiAgaWYgKCFtYXRyaXggfHwgaXNOYU4obWF0cml4WzBdKSkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZlYzMudHJhbnNmb3JtTWF0Myh2ZWN0b3IsIHZlY3RvciwgbWF0cml4KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB2ZWN0b3JbMF0sXG4gICAgeTogdmVjdG9yWzFdXG4gIH07XG59O1xuLyoqXG4gKiBjb29yZGluYXRlIG1hdHJpeCBpbnZlcnQgdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtvYmplY3R9IHRyYW5zZm9ybWVkIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBpbnZlcnRNYXRyaXggPSBmdW5jdGlvbiBpbnZlcnRNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICBpZiAoIW1hdHJpeCB8fCBpc05hTihtYXRyaXhbMF0pKSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgdmFyIGludmVyc2VkTWF0cml4ID0gbWF0My5pbnZlcnQoWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdLCBtYXRyaXgpO1xuXG4gIGlmICghaW52ZXJzZWRNYXRyaXgpIHtcbiAgICBpbnZlcnNlZE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciB2ZWN0b3IgPSBbcG9pbnQueCwgcG9pbnQueSwgdGFnXTtcbiAgdmVjMy50cmFuc2Zvcm1NYXQzKHZlY3RvciwgdmVjdG9yLCBpbnZlcnNlZE1hdHJpeCk7XG4gIHJldHVybiB7XG4gICAgeDogdmVjdG9yWzBdLFxuICAgIHk6IHZlY3RvclsxXVxuICB9O1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBwMSBGaXJzdCBjb29yZGluYXRlXG4gKiBAcGFyYW0gcDIgc2Vjb25kIGNvb3JkaW5hdGVcbiAqIEBwYXJhbSBwMyB0aHJlZSBjb29yZGluYXRlXG4gKi9cblxuZXhwb3J0IHZhciBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyA9IGZ1bmN0aW9uIGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHAxLCBwMiwgcDMpIHtcbiAgdmFyIGEgPSBwMS54IC0gcDIueDtcbiAgdmFyIGIgPSBwMS55IC0gcDIueTtcbiAgdmFyIGMgPSBwMS54IC0gcDMueDtcbiAgdmFyIGQgPSBwMS55IC0gcDMueTtcbiAgdmFyIGUgPSAocDEueCAqIHAxLnggLSBwMi54ICogcDIueCAtIHAyLnkgKiBwMi55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGYgPSAocDEueCAqIHAxLnggLSBwMy54ICogcDMueCAtIHAzLnkgKiBwMy55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGRlbm9taW5hdG9yID0gYiAqIGMgLSBhICogZDtcbiAgcmV0dXJuIHtcbiAgICB4OiAtKGQgKiBlIC0gYiAqIGYpIC8gZGVub21pbmF0b3IsXG4gICAgeTogLShhICogZiAtIGMgKiBlKSAvIGRlbm9taW5hdG9yXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgZGlzdGFuY2UgYnkgdHdvIHBvaW50c1xuICogQHBhcmFtIHAxIGZpcnN0IHBvaW50XG4gKiBAcGFyYW0gcDIgc2Vjb25kIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICB2YXIgdnggPSBwMS54IC0gcDIueDtcbiAgdmFyIHZ5ID0gcDEueSAtIHAyLnk7XG4gIHJldHVybiBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xufTtcbi8qKlxuICogc2NhbGUgbWF0cml4XG4gKiBAcGFyYW0gbWF0cml4IFsgW10sIFtdLCBbXSBdXG4gKiBAcGFyYW0gcmF0aW9cbiAqL1xuXG5leHBvcnQgdmFyIHNjYWxlTWF0cml4ID0gZnVuY3Rpb24gc2NhbGVNYXRyaXgobWF0cml4LCByYXRpbykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICB2YXIgbmV3Um93ID0gW107XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHYgKiByYXRpbyk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobmV3Um93KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBGbG95ZCBXYXJzaGFsbCBhbGdvcml0aG0gZm9yIHNob3J0ZXN0IHBhdGggZGlzdGFuY2VzIG1hdHJpeFxuICogQHBhcmFtICB7YXJyYXl9IGFkak1hdHJpeCAgIGFkamFjZW5jeSBtYXRyaXhcbiAqIEByZXR1cm4ge2FycmF5fSBkaXN0YW5jZXMgICBzaG9ydGVzdCBwYXRoIGRpc3RhbmNlcyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgdmFyIGZsb3lkV2Fyc2hhbGwgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGFkak1hdHJpeCkge1xuICAvLyBpbml0aWFsaXplXG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqTWF0cml4Lmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgIGRpc3RbaV0gPSBbXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICBkaXN0W2ldW2pdID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWRqTWF0cml4W2ldW2pdID09PSAwIHx8ICFhZGpNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkak1hdHJpeFtpXVtqXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gZmxveWRcblxuXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgc2l6ZTsgayArPSAxKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgIGlmIChkaXN0W2ldW2pdID4gZGlzdFtpXVtrXSArIGRpc3Rba11bal0pIHtcbiAgICAgICAgICBkaXN0W2ldW2pdID0gZGlzdFtpXVtrXSArIGRpc3Rba11bal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzdDtcbn07XG4vKipcbiAqIGdldCBhZGphY2VuY3kgbWF0cml4XG4gKiBAcGFyYW0gZGF0YSBncmFwaCBkYXRhXG4gKiBAcGFyYW0gZGlyZWN0ZWQgd2hldGhlciBpdCdzIGEgZGlyZWN0ZWQgZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGdldEFkak1hdHJpeCA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeChkYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBkYXRhLmVkZ2VzO1xuICB2YXIgbWF0cml4ID0gW107IC8vIG1hcCBub2RlIHdpdGggaW5kZXggaW4gZGF0YS5ub2Rlc1xuXG4gIHZhciBub2RlTWFwID0ge307XG5cbiAgaWYgKCFub2Rlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBub2RlcyBkYXRhIScpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGUuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuLyoqXG4gKiDlubPnp7tncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHZlYyDnp7vliqjlkJHph49cbiAqL1xuXG5leHBvcnQgdmFyIHRyYW5zbGF0ZSA9IGZ1bmN0aW9uIHRyYW5zbGF0ZShncm91cCwgdmVjKSB7XG4gIGdyb3VwLnRyYW5zbGF0ZSh2ZWMueCwgdmVjLnkpO1xufTtcbi8qKlxuICog56e75Yqo5Yiw5oyH5a6a5Z2Q5qCH54K5XG4gKiBAcGFyYW0gZ3JvdXAgR3JvdXAg5a6e5L6LXG4gKiBAcGFyYW0gcG9pbnQg56e75Yqo5Yiw55qE5Z2Q5qCH54K5XG4gKi9cblxuZXhwb3J0IHZhciBtb3ZlID0gZnVuY3Rpb24gbW92ZShncm91cCwgcG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgaWYgKGFuaW1hdGVDZmcgPT09IHZvaWQgMCkge1xuICAgIGFuaW1hdGVDZmcgPSB7XG4gICAgICBkdXJhdGlvbjogNTAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcblxuICBpZiAoIW1hdHJpeCkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICB2YXIgdnggPSBwb2ludC54IC0gYmJveC5taW5YO1xuICB2YXIgdnkgPSBwb2ludC55IC0gYmJveC5taW5ZO1xuXG4gIGlmIChhbmltYXRlKSB7XG4gICAgdmFyIGR4XzEgPSB2eCAqIG1hdHJpeFswXTtcbiAgICB2YXIgZHlfMSA9IHZ5ICogbWF0cml4WzRdO1xuICAgIHZhciBsYXN0WF8xID0gMDtcbiAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgdmFyIG5ld1hfMSA9IDA7XG4gICAgdmFyIG5ld1lfMSA9IDA7XG4gICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgIG5ld1lfMSA9IGR5XzEgKiByYXRpbztcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCBuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xXV0pO1xuICAgICAgbGFzdFhfMSA9IG5ld1hfMTtcbiAgICAgIGxhc3RZXzEgPSBuZXdZXzE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfTtcbiAgICB9LCBhbmltYXRlQ2ZnKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW92ZWRNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgdngsIHZ5XV0pO1xuICAgIGdyb3VwLnNldE1hdHJpeChtb3ZlZE1hdHJpeCk7XG4gIH1cbn07XG4vKipcbiAqIOe8qeaUviBncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHBvaW50IOWcqHgg5ZKMIHkg5pa55ZCR5LiK55qE57yp5pS+5q+U5L6LXG4gKi9cblxuZXhwb3J0IHZhciBzY2FsZSA9IGZ1bmN0aW9uIHNjYWxlKGdyb3VwLCByYXRpbykge1xuICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG5cbiAgaWYgKCFtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gIH1cblxuICB2YXIgc2NhbGVYWSA9IHJhdGlvO1xuXG4gIGlmICghaXNBcnJheShyYXRpbykpIHtcbiAgICBzY2FsZVhZID0gW3JhdGlvLCByYXRpb107XG4gIH1cblxuICBpZiAoaXNBcnJheShyYXRpbykgJiYgcmF0aW8ubGVuZ3RoID09PSAxKSB7XG4gICAgc2NhbGVYWSA9IFtyYXRpb1swXSwgcmF0aW9bMF1dO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncycsIHNjYWxlWFlbMF0sIHNjYWxlWFlbMV1dXSk7XG4gIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBncm91cCBHcm91cCDlrp7kvotcbiAqIEBwYXJhbSByYXRpbyDpgInmi6nop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZShncm91cCwgYW5nbGUpIHtcbiAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gIGlmICghbWF0cml4KSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncicsIGFuZ2xlXV0pO1xuICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbn07XG5leHBvcnQgdmFyIGdldERlZ3JlZSA9IGZ1bmN0aW9uIGdldERlZ3JlZShuLCBub2RlSWR4TWFwLCBlZGdlcykge1xuICB2YXIgZGVncmVlcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZGVncmVlc1tpXSA9IDA7XG4gIH1cblxuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUuc291cmNlKSB7XG4gICAgICBkZWdyZWVzW25vZGVJZHhNYXBbZS5zb3VyY2VdXSArPSAxO1xuICAgIH1cblxuICAgIGlmIChlLnRhcmdldCkge1xuICAgICAgZGVncmVlc1tub2RlSWR4TWFwW2UudGFyZ2V0XV0gKz0gMTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07IC8vIOWIpOaWreeCuVHmmK/lkKblnKhwMeWSjHAy55qE57q/5q615LiKXG5cbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgaWYgKChxWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pID09PSAocDJbMF0gLSBwMVswXSkgKiAocVsxXSAtIHAxWzFdKSAmJiBNYXRoLm1pbihwMVswXSwgcDJbMF0pIDw9IHFbMF0gJiYgcVswXSA8PSBNYXRoLm1heChwMVswXSwgcDJbMF0pICYmIE1hdGgubWluKHAxWzFdLCBwMlsxXSkgPD0gcVsxXSAmJiBxWzFdIDw9IE1hdGgubWF4KHAxWzFdLCBwMlsxXSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICog5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5UuIEJvcnJvdyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvdXRpbC9ibG9iL21hc3Rlci9wYWNrYWdlcy9wYXRoLXV0aWwvc3JjL3BvaW50LWluLXBvbHlnb24udHNcbiAqIEBwYXJhbSBwb2ludHNcbiAqIEBwYXJhbSB4XG4gKiBAcGFyYW0geVxuICovXG5cblxuZXhwb3J0IHZhciBpc1BvaW50SW5Qb2x5Z29uID0gZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludHMsIHgsIHkpIHtcbiAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gIHZhciBuID0gcG9pbnRzLmxlbmd0aDsgLy8g5Yik5pat5Lik5LiqZG91Ymxl5ZyoZXBz57K+5bqm5LiL55qE5aSn5bCP5YWz57O7XG5cbiAgdmFyIHRvbGVyYW5jZSA9IDFlLTY7XG5cbiAgZnVuY3Rpb24gZGNtcCh4VmFsdWUpIHtcbiAgICBpZiAoTWF0aC5hYnMoeFZhbHVlKSA8IHRvbGVyYW5jZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHhWYWx1ZSA8IDAgPyAtMSA6IDE7XG4gIH1cblxuICBpZiAobiA8PSAyKSB7XG4gICAgLy8gc3ZnIOS4reeCueWwj+S6jiAzIOS4quaXtu+8jOS4jeaYvuekuu+8jOS5n+aXoOazleiiq+aLvuWPllxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIHAxID0gcG9pbnRzW2ldO1xuICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG5cbiAgICBpZiAob25TZWdtZW50KHAxLCBwMiwgW3gsIHldKSkge1xuICAgICAgLy8g54K55Zyo5aSa6L655b2i5LiA5p2h6L655LiKXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgLy8g5ZCO5LiA5Liq5Yik5pat6KKr5rWL54K5IOWcqCDlsITnur/kuI7ovrnkuqTngrkg55qE5bem6L65XG5cblxuICAgIGlmIChkY21wKHAxWzFdIC0geSkgPiAwICE9PSBkY21wKHAyWzFdIC0geSkgPiAwICYmIGRjbXAoeCAtICh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pIC8gKHAxWzFdIC0gcDJbMV0pIC0gcDFbMF0pIDwgMCkge1xuICAgICAgaXNIaXQgPSAhaXNIaXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzSGl0O1xufTsgLy8g5Yik5pat5Lik5LiqQkJveOaYr+WQpuebuOS6pFxuXG5leHBvcnQgdmFyIGludGVyc2VjdEJCb3ggPSBmdW5jdGlvbiBpbnRlcnNlY3RCQm94KGJveDEsIGJveDIpIHtcbiAgcmV0dXJuICEoYm94Mi5taW5YID4gYm94MS5tYXhYIHx8IGJveDIubWF4WCA8IGJveDEubWluWCB8fCBib3gyLm1pblkgPiBib3gxLm1heFkgfHwgYm94Mi5tYXhZIDwgYm94MS5taW5ZKTtcbn07XG5cbnZhciBsaW5lSW50ZXJzZWN0UG9seWdvbiA9IGZ1bmN0aW9uIGxpbmVJbnRlcnNlY3RQb2x5Z29uKGxpbmVzLCBsaW5lKSB7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzLCBmdW5jdGlvbiAobCkge1xuICAgIGlmIChnZXRMaW5lSW50ZXJzZWN0KGwuZnJvbSwgbC50bywgbGluZS5mcm9tLCBsaW5lLnRvKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG4vKipcbiAqIOWIpOaWreS4pOS4qnBvbHlnb27mmK/lkKbnm7jkuqTjgIJcbiAqIGJvcnJvdyBmcm9tIEBhbnR2L3BhdGgtdXRpbFxuICogQHBhcmFtIHBvaW50czEgcG9seWdvbjHnmoTpobbngrnmlbDnu4RcbiAqIEBwYXJhbSBwb2ludHMyIHBvbHlnb24y55qE6aG254K55pWw57uEXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzUG9seWdvbnNJbnRlcnNlY3QgPSBmdW5jdGlvbiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvaW50czEsIHBvaW50czIpIHtcbiAgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KHBvaW50cykge1xuICAgIHZhciB4QXJyID0gcG9pbnRzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIHBbMF07XG4gICAgfSk7XG4gICAgdmFyIHlBcnIgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gcFsxXTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWluWDogTWF0aC5taW4uYXBwbHkobnVsbCwgeEFyciksXG4gICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShudWxsLCB4QXJyKSxcbiAgICAgIG1pblk6IE1hdGgubWluLmFwcGx5KG51bGwsIHlBcnIpLFxuICAgICAgbWF4WTogTWF0aC5tYXguYXBwbHkobnVsbCwgeUFycilcbiAgICB9O1xuICB9O1xuXG4gIHZhciBwYXJzZVRvTGluZXMgPSBmdW5jdGlvbiBwYXJzZVRvTGluZXMocG9pbnRzKSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgdmFyIGNvdW50ID0gcG9pbnRzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgIHZhciBuZXh0ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgeDogcG9pbnRbMF0sXG4gICAgICAgICAgeTogcG9pbnRbMV1cbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB4OiBuZXh0WzBdLFxuICAgICAgICAgIHk6IG5leHRbMV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBmaXJzdCA9IHBvaW50c1swXTtcbiAgICAgIHZhciBsYXN0ID0gcG9pbnRzW2NvdW50IC0gMV07XG4gICAgICBsaW5lcy5wdXNoKHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHg6IGxhc3RbMF0sXG4gICAgICAgICAgeTogbGFzdFsxXVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHg6IGZpcnN0WzBdLFxuICAgICAgICAgIHk6IGZpcnN0WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfTsgLy8g56m65pWw57uE77yM5oiW6ICF5LiA5Liq54K56L+U5ZueIGZhbHNlXG5cblxuICBpZiAocG9pbnRzMS5sZW5ndGggPCAyIHx8IHBvaW50czIubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBiYm94MSA9IGdldEJCb3gocG9pbnRzMSk7XG4gIHZhciBiYm94MiA9IGdldEJCb3gocG9pbnRzMik7IC8vIOWIpOWumuWMheWbtOebkuaYr+WQpuebuOS6pO+8jOavlOWIpOWumueCueaYr+WQpuWcqOWkmui+ueW9ouWGheimgeW/q+eahOWkmu+8jOWPr+S7peetm+mAieaOieWkp+WkmuaVsOaDheWGtVxuXG4gIGlmICghaW50ZXJzZWN0QkJveChiYm94MSwgYmJveDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGlzSW4gPSBmYWxzZTsgLy8g5Yik5a6a54K55piv5ZCm5Zyo5aSa6L655b2i5YaF6YOo77yM5LiA5pem5pyJ5LiA5Liq54K55Zyo5Y+m5LiA5Liq5aSa6L655b2i5YaF77yM5YiZ6L+U5ZueXG5cbiAgZWFjaChwb2ludHMyLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAoaXNQb2ludEluUG9seWdvbihwb2ludHMxLCBwb2ludFswXSwgcG9pbnRbMV0pKSB7XG4gICAgICBpc0luID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChpc0luKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBlYWNoKHBvaW50czEsIGZ1bmN0aW9uIChwb2ludCkge1xuICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKHBvaW50czIsIHBvaW50WzBdLCBwb2ludFsxXSkpIHtcbiAgICAgIGlzSW4gPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzSW4pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBsaW5lczEgPSBwYXJzZVRvTGluZXMocG9pbnRzMSk7XG4gIHZhciBsaW5lczIgPSBwYXJzZVRvTGluZXMocG9pbnRzMik7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzMiwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICBpZiAobGluZUludGVyc2VjdFBvbHlnb24obGluZXMxLCBsaW5lKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG5cbnZhciBMaW5lID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHRoaXMueDEgPSB4MTtcbiAgICB0aGlzLnkxID0geTE7XG4gICAgdGhpcy54MiA9IHgyO1xuICAgIHRoaXMueTIgPSB5MjtcbiAgfVxuXG4gIExpbmUucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHRoaXMueTEsIHRoaXMueTIpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgodGhpcy54MSwgdGhpcy54Mik7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWluWCxcbiAgICAgIHk6IG1pblksXG4gICAgICBtaW5YOiBtaW5YLFxuICAgICAgbWluWTogbWluWSxcbiAgICAgIG1heFg6IG1heFgsXG4gICAgICBtYXhZOiBtYXhZLFxuICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICByZXR1cm4gTGluZTtcbn0oKTtcblxuZXhwb3J0IHsgTGluZSB9O1xuZXhwb3J0IHZhciBnZXRCQm94Qm91bmRMaW5lID0gZnVuY3Rpb24gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb24pIHtcbiAgdmFyIGJvdW5kcyA9IHtcbiAgICB0b3A6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1pblldLFxuICAgIGxlZnQ6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5taW5YLCBiYm94Lm1heFldLFxuICAgIGJvdHRvbTogW2Jib3gubWluWCwgYmJveC5tYXhZLCBiYm94Lm1heFgsIGJib3gubWF4WV0sXG4gICAgcmlnaHQ6IFtiYm94Lm1heFgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1heFldXG4gIH07XG4gIHJldHVybiBib3VuZHNbZGlyZWN0aW9uXTtcbn07XG4vKipcbiAqIOiuoeeul+S4pOadoee6v+auteebuOS6pOaXtu+8jOebuOS6pOeCueWvueesrOS4gOadoee6v+auteS4iueahOWIhuWJsuavlOS+i1xuICovXG5cbnZhciBmcmFjdGlvbkFsb25nTGluZUEgPSBmdW5jdGlvbiBmcmFjdGlvbkFsb25nTGluZUEobGEsIGxiKSB7XG4gIHZhciB1YVQgPSAobGIueDIgLSBsYi54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGIueTIgLSBsYi55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1YlQgPSAobGEueDIgLSBsYS54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGEueTIgLSBsYS55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1QiA9IChsYi55MiAtIGxiLnkxKSAqIChsYS54MiAtIGxhLngxKSAtIChsYi54MiAtIGxiLngxKSAqIChsYS55MiAtIGxhLnkxKTtcblxuICBpZiAodUIpIHtcbiAgICB2YXIgdWEgPSB1YVQgLyB1QjtcbiAgICB2YXIgdWIgPSB1YlQgLyB1QjtcblxuICAgIGlmICh1YSA+PSAwICYmIHVhIDw9IDEgJiYgdWIgPj0gMCAmJiB1YiA8PSAxKSB7XG4gICAgICByZXR1cm4gdWE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbn07XG5cbmV4cG9ydCB2YXIgaXRlbUludGVyc2VjdEJ5TGluZSA9IGZ1bmN0aW9uIGl0ZW1JbnRlcnNlY3RCeUxpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBjb3VudEludGVyc2VjdGlvbnMgPSAwO1xuICB2YXIgaW50ZXJzZWN0aW9ucyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIF9hID0gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb25zW2ldKSxcbiAgICAgICAgeDEgPSBfYVswXSxcbiAgICAgICAgeTEgPSBfYVsxXSxcbiAgICAgICAgeDIgPSBfYVsyXSxcbiAgICAgICAgeTIgPSBfYVszXTtcblxuICAgIGludGVyc2VjdGlvbnNbaV0gPSBnZXRMaW5lSW50ZXJzZWN0KHtcbiAgICAgIHg6IGxpbmUueDEsXG4gICAgICB5OiBsaW5lLnkxXG4gICAgfSwge1xuICAgICAgeDogbGluZS54MixcbiAgICAgIHk6IGxpbmUueTJcbiAgICB9LCB7XG4gICAgICB4OiB4MSxcbiAgICAgIHk6IHkxXG4gICAgfSwge1xuICAgICAgeDogeDIsXG4gICAgICB5OiB5MlxuICAgIH0pO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbnNbaV0pIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbaW50ZXJzZWN0aW9ucywgY291bnRJbnRlcnNlY3Rpb25zXTtcbn07XG5leHBvcnQgdmFyIGZyYWN0aW9uVG9MaW5lID0gZnVuY3Rpb24gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBtaW5EaXN0YW5jZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIGNvdW50SW50ZXJzZWN0aW9ucyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgX2EgPSBnZXRCQm94Qm91bmRMaW5lKGJib3gsIGRpcmVjdGlvbnNbaV0pLFxuICAgICAgICB4MSA9IF9hWzBdLFxuICAgICAgICB5MSA9IF9hWzFdLFxuICAgICAgICB4MiA9IF9hWzJdLFxuICAgICAgICB5MiA9IF9hWzNdO1xuXG4gICAgdmFyIHRlc3REaXN0YW5jZSA9IGZyYWN0aW9uQWxvbmdMaW5lQShsaW5lLCBuZXcgTGluZSh4MSwgeTEsIHgyLCB5MikpO1xuICAgIHRlc3REaXN0YW5jZSA9IE1hdGguYWJzKHRlc3REaXN0YW5jZSAtIDAuNSk7XG5cbiAgICBpZiAodGVzdERpc3RhbmNlID49IDAgJiYgdGVzdERpc3RhbmNlIDw9IDEpIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgICAgbWluRGlzdGFuY2UgPSB0ZXN0RGlzdGFuY2UgPCBtaW5EaXN0YW5jZSA/IHRlc3REaXN0YW5jZSA6IG1pbkRpc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDApIHJldHVybiAtMTtcbiAgcmV0dXJuIG1pbkRpc3RhbmNlO1xufTtcbmV4cG9ydCB2YXIgZ2V0UG9pbnRzQ2VudGVyID0gZnVuY3Rpb24gZ2V0UG9pbnRzQ2VudGVyKHBvaW50cykge1xuICB2YXIgY2VudGVyWCA9IDA7XG4gIHZhciBjZW50ZXJZID0gMDtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIHBvaW50c18xID0gcG9pbnRzOyBfaSA8IHBvaW50c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgICAgY2VudGVyWCArPSBwb2ludC54O1xuICAgICAgY2VudGVyWSArPSBwb2ludC55O1xuICAgIH1cblxuICAgIGNlbnRlclggLz0gcG9pbnRzLmxlbmd0aDtcbiAgICBjZW50ZXJZIC89IHBvaW50cy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGNlbnRlclgsXG4gICAgeTogY2VudGVyWVxuICB9O1xufTtcbmV4cG9ydCB2YXIgc3F1YXJlRGlzdCA9IGZ1bmN0aW9uIHNxdWFyZURpc3QoYSwgYikge1xuICByZXR1cm4gTWF0aC5wb3coYS54IC0gYi54LCAyKSArIE1hdGgucG93KGEueSAtIGIueSwgMik7XG59O1xuZXhwb3J0IHZhciBwb2ludExpbmVTcXVhcmVEaXN0ID0gZnVuY3Rpb24gcG9pbnRMaW5lU3F1YXJlRGlzdChwb2ludCwgbGluZSkge1xuICB2YXIgeDEgPSBsaW5lLngxO1xuICB2YXIgeTEgPSBsaW5lLnkxO1xuICB2YXIgeDIgPSBsaW5lLngyIC0geDE7XG4gIHZhciB5MiA9IGxpbmUueTIgLSB5MTtcbiAgdmFyIHB4ID0gcG9pbnQueCAtIHgxO1xuICB2YXIgcHkgPSBwb2ludC55IC0geTE7XG4gIHZhciBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG4gIHZhciBwcm9qbGVuU3E7XG5cbiAgaWYgKGRvdHByb2QgPD0gMCkge1xuICAgIHByb2psZW5TcSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgcHggPSB4MiAtIHB4O1xuICAgIHB5ID0geTIgLSBweTtcbiAgICBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG5cbiAgICBpZiAoZG90cHJvZCA8PSAwKSB7XG4gICAgICBwcm9qbGVuU3EgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9qbGVuU3EgPSBkb3Rwcm9kICogZG90cHJvZCAvICh4MiAqIHgyICsgeTIgKiB5Mik7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxlblNxID0gcHggKiBweCArIHB5ICogcHkgLSBwcm9qbGVuU3E7XG5cbiAgaWYgKGxlblNxIDwgMCkge1xuICAgIGxlblNxID0gMDtcbiAgfVxuXG4gIHJldHVybiBsZW5TcTtcbn07XG5leHBvcnQgdmFyIGlzUG9pbnRzT3ZlcmxhcCA9IGZ1bmN0aW9uIGlzUG9pbnRzT3ZlcmxhcChwMSwgcDIsIGUpIHtcbiAgaWYgKGUgPT09IHZvaWQgMCkge1xuICAgIGUgPSAxZS0zO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSA8IE1hdGgucG93KGUsIDIpO1xufTtcbi8qKlxuICog54K55Yiw55+p5b2i55qE6Led56a755qE5bmz5pa577ya55+p5b2i5YaF6YOo54K56KeG5L2c6Led56a75Li6MO+8jOWklumDqOeahOeCueiLpeaKleW9seiQveWcqOefqeW9oui+ueS4iuWImeS4uueCueWIsOefqeW9oui+ueeahOacgOi/keeahOWeguebtOi3neemu++8jOWQpuWImeS4uueCueWIsOefqeW9oumhtueCueeahOi3neemu++8jFxuICogQHBhcmFtIHBvaW50IElQb2ludFxuICogQHBhcmFtIHJlY3QgSVJlY3RcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50UmVjdFNxdWFyZURpc3QgPSBmdW5jdGlvbiBwb2ludFJlY3RTcXVhcmVEaXN0KHBvaW50LCByZWN0KSB7XG4gIHZhciBpc0xlZnQgPSBwb2ludC54IDwgcmVjdC54O1xuICB2YXIgaXNSaWdodCA9IHBvaW50LnggPiByZWN0LnggKyByZWN0LndpZHRoO1xuICB2YXIgaXNUb3AgPSBwb2ludC55ID4gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG4gIHZhciBpc0JvdHRvbSA9IHBvaW50LnkgPCByZWN0Lnk7XG4gIHZhciBpc1BvaW50T3V0c2lkZSA9IGlzTGVmdCB8fCBpc1JpZ2h0IHx8IGlzVG9wIHx8IGlzQm90dG9tO1xuXG4gIGlmICghaXNQb2ludE91dHNpZGUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChpc1RvcCAmJiAhaXNMZWZ0ICYmICFpc1JpZ2h0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gcG9pbnQueSwgMik7XG4gIH1cblxuICBpZiAoaXNCb3R0b20gJiYgIWlzTGVmdCAmJiAhaXNSaWdodCkge1xuICAgIHJldHVybiBNYXRoLnBvdyhwb2ludC55IC0gcmVjdC55LCAyKTtcbiAgfVxuXG4gIGlmIChpc0xlZnQgJiYgIWlzVG9wICYmICFpc0JvdHRvbSkge1xuICAgIHJldHVybiBNYXRoLnBvdyhyZWN0LnggLSBwb2ludC54LCAyKTtcbiAgfVxuXG4gIGlmIChpc1JpZ2h0ICYmICFpc1RvcCAmJiAhaXNCb3R0b20pIHtcbiAgICByZXR1cm4gTWF0aC5wb3cocmVjdC54ICsgcmVjdC53aWR0aCAtIHBvaW50LngsIDIpO1xuICB9XG5cbiAgdmFyIGR4ID0gTWF0aC5taW4oTWF0aC5hYnMocmVjdC54IC0gcG9pbnQueCksIE1hdGguYWJzKHJlY3QueCArIHJlY3Qud2lkdGggLSBwb2ludC54KSk7XG4gIHZhciBkeSA9IE1hdGgubWluKE1hdGguYWJzKHJlY3QueSAtIHBvaW50LnkpLCBNYXRoLmFicyhyZWN0LnkgKyByZWN0LmhlaWdodCAtIHBvaW50LnkpKTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbi8qKlxuICogcG9pbnQgdG8gbGluZSBkaXN0YW5jZVxuICogQHBhcmFtICB7YXJyYXl9IGxpbmUg57q/55qE5Zub5Liq6aG254K5IFt4MSwgeTEsIHgyLCB5Ml1cbiAqIEBwYXJhbSAge29iamVjdH0gcG9pbnQg5Z2Q5qCH54K5IHt4LCB5fVxuICogQHJldHVybiB7TnVtYmVyfE5hTn0gZGlzdGFuY2VcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50TGluZURpc3RhbmNlID0gZnVuY3Rpb24gcG9pbnRMaW5lRGlzdGFuY2UobGluZSwgcG9pbnQpIHtcbiAgdmFyIHgxID0gbGluZVswXSxcbiAgICAgIHkxID0gbGluZVsxXSxcbiAgICAgIHgyID0gbGluZVsyXSxcbiAgICAgIHkyID0gbGluZVszXTtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdO1xuXG4gIGlmICh2ZWMyLmV4YWN0RXF1YWxzKGQsIFswLCAwXSkpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgdmFyIHUgPSBbLWRbMV0sIGRbMF1dOyAvLyBAdHMtaWdub3JlXG5cbiAgdmVjMi5ub3JtYWxpemUodSwgdSk7XG4gIHZhciBhID0gW3ggLSB4MSwgeSAtIHkxXTsgLy8gQHRzLWlnbm9yZVxuXG4gIHJldHVybiBNYXRoLmFicyh2ZWMyLmRvdChhLCB1KSk7XG59O1xuLyoqXG4gKiBMaW5lYXJseSBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQsIHdoZXJlIGFscGhhIGlzIHRoZSBwZXJjZW50IGRpc3RhbmNlIGFsb25nIHRoZSBsaW5lLlxuICogYWxwaGEgPSAwIHdpbGwgYmUgc3RhcnQsIGFuZCBhbHBoYSA9IDEgd2lsbCBiZSBlbmQuXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhcnRcbiAqIEBwYXJhbSB7TnVtYmVyfSBlbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbHBoYSBpbnRlcnBvbGF0aW9uIGZhY3RvciwgdHlwaWNhbGx5IGluIHRoZSBjbG9zZWQgaW50ZXJ2YWwgWzAsIDFdXG4gKiBAcmV0dXJuc1xuICovXG5cbmV4cG9ydCB2YXIgbGVycCA9IGZ1bmN0aW9uIGxlcnAoc3RhcnQsIGVuZCwgYWxwaGEpIHtcbiAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGFscGhhO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/math.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/path.js":
/*!****************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/path.js ***!
\****************************************************/
/*! exports provided: getSpline, getControlPoint, pointsToPolygon, pathToPoints, getClosedSpline, roundedHull, paddedHull */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSpline\", function() { return getSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getControlPoint\", function() { return getControlPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointsToPolygon\", function() { return pointsToPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToPoints\", function() { return pathToPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClosedSpline\", function() { return getClosedSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"roundedHull\", function() { return roundedHull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"paddedHull\", function() { return paddedHull; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n\n\n/**\n * 替换字符串中的字段\n * @param {String} str 模版字符串\n * @param {Object} o json data\n */\n\nvar substitute = function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n var res = o[name];\n if (res === 0) res = '0';\n return res || '';\n });\n};\n/**\n * 给定坐标获取三次贝塞尔曲线的 M 及 C 值\n * @param points coordinate set\n */\n\n\nvar getSpline = function getSpline(points) {\n var data = [];\n\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \".concat(points.length));\n }\n\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var x = point.x,\n y = point.y;\n data.push(x);\n data.push(y);\n }\n\n var spliePath = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"catmullRom2Bezier\"])(data);\n spliePath.unshift(['M', points[0].x, points[0].y]);\n return spliePath;\n};\n/**\n * 根据起始点、相对位置、偏移量计算控制点\n * @param {IPoint} startPoint 起始点,包含 x,y\n * @param {IPoint} endPoint 结束点, 包含 x,y\n * @param {Number} percent 相对位置,范围 0-1\n * @param {Number} offset 偏移量\n * @return {IPoint} 控制点,包含 x,y\n */\n\nvar getControlPoint = function getControlPoint(startPoint, endPoint, percent, offset) {\n if (percent === void 0) {\n percent = 0;\n }\n\n if (offset === void 0) {\n offset = 0;\n }\n\n var point = {\n x: (1 - percent) * startPoint.x + percent * endPoint.x,\n y: (1 - percent) * startPoint.y + percent * endPoint.y\n };\n var tangent = [0, 0];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(tangent, [endPoint.x - startPoint.x, endPoint.y - startPoint.y]);\n\n if (!tangent || !tangent[0] && !tangent[1]) {\n tangent = [0, 0];\n }\n\n var perpendicular = [-tangent[1] * offset, tangent[0] * offset]; // 垂直向量\n\n point.x += perpendicular[0];\n point.y += perpendicular[1];\n return point;\n};\n/**\n * 点集转化为Path多边形\n * @param {Array} points 点集\n * @param {Boolen} z 是否封闭\n * @return {Array} Path\n */\n\nvar pointsToPolygon = function pointsToPolygon(points, z) {\n var length = points.length;\n\n if (!length) {\n return '';\n }\n\n var path = '';\n var str = '';\n\n for (var i = 0; i < length; i++) {\n var item = points[i];\n\n if (i === 0) {\n str = 'M{x} {y}';\n } else {\n str = 'L{x} {y}';\n }\n\n path += substitute(str, item);\n }\n\n if (z) {\n path += 'Z';\n }\n\n return path;\n};\nvar pathToPoints = function pathToPoints(path) {\n var points = [];\n path.forEach(function (seg) {\n var command = seg[0];\n\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n};\n/**\n * 生成平滑的闭合曲线\n * @param points\n */\n\nvar getClosedSpline = function getClosedSpline(points) {\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \".concat(points.length));\n }\n\n var first = points[0];\n var second = points[1];\n var last = points[points.length - 1];\n var lastSecond = points[points.length - 2];\n points.unshift(last);\n points.unshift(lastSecond);\n points.push(first);\n points.push(second);\n var closedPath = [];\n\n for (var i = 1; i < points.length - 2; i += 1) {\n var x0 = points[i - 1].x;\n var y0 = points[i - 1].y;\n var x1 = points[i].x;\n var y1 = points[i].y;\n var x2 = points[i + 1].x;\n var y2 = points[i + 1].y;\n var x3 = i !== points.length - 2 ? points[i + 2].x : x2;\n var y3 = i !== points.length - 2 ? points[i + 2].y : y2;\n var cp1x = x1 + (x2 - x0) / 6;\n var cp1y = y1 + (y2 - y0) / 6;\n var cp2x = x2 - (x3 - x1) / 6;\n var cp2y = y2 - (y3 - y1) / 6;\n closedPath.push(['C', cp1x, cp1y, cp2x, cp2y, x2, y2]);\n }\n\n closedPath.unshift(['M', last.x, last.y]);\n return closedPath;\n};\n\nvar vecScaleTo = function vecScaleTo(v, length) {\n // Vector with direction of v with specified length\n return _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), length);\n};\n\nvar unitNormal = function unitNormal(p0, p1) {\n // Returns the unit normal to the line segment from p0 to p1.\n var n = [p0[1] - p1[1], p1[0] - p0[0]];\n var nLength = Math.sqrt(n[0] * n[0] + n[1] * n[1]);\n\n if (nLength === 0) {\n throw new Error('p0 should not be equal to p1');\n }\n\n return [n[0] / nLength, n[1] / nLength];\n};\n\nvar vecFrom = function vecFrom(p0, p1) {\n // Vector from p0 to p1\n return [p1[0] - p0[0], p1[1] - p0[1]];\n};\n/**\n * 传入的节点作为多边形顶点,生成有圆角的多边形\n * @param polyPoints 多边形顶点\n * @param padding 在原多边形基础上增加最终轮廓和原多边形的空白间隔\n */\n\n\nfunction roundedHull(polyPoints, padding) {\n // The rounded hull path around a single point\n var roundedHull1 = function roundedHull1(points) {\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \".concat(p1, \" A \").concat(padding, \",\").concat(padding, \",0,0,0,\").concat(p2, \" A \").concat(padding, \",\").concat(padding, \",0,0,0,\").concat(p1);\n }; // The rounded hull path around two points\n\n\n var roundedHull2 = function roundedHull2(points) {\n var offsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(points[0], points[1]), padding);\n var invOffsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], offsetVector, -1);\n var p0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], offsetVector);\n var p1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], offsetVector);\n var p2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], invOffsetVector);\n var p3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], invOffsetVector);\n return \"M \".concat(p0, \" L \").concat(p1, \" A \").concat([padding, padding, '0,0,0', p2].join(','), \" L \").concat(p3, \" A \").concat([padding, padding, '0,0,0', p0].join(','));\n }; // 特殊情况处理:节点数小于等于2\n\n\n if (!polyPoints || polyPoints.length < 1) return '';\n if (polyPoints.length === 1) return roundedHull1(polyPoints);\n if (polyPoints.length === 2) return roundedHull2(polyPoints);\n var segments = new Array(polyPoints.length); // Calculate each offset (outwards) segment of the convex hull.\n\n for (var segmentIndex = 0; segmentIndex < segments.length; ++segmentIndex) {\n var p0 = segmentIndex === 0 ? polyPoints[polyPoints.length - 1] : polyPoints[segmentIndex - 1];\n var p1 = polyPoints[segmentIndex]; // Compute the offset vector for the line segment, with length = padding.\n\n var offset = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(p0, p1), padding);\n segments[segmentIndex] = [_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p0, offset), _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p1, offset)];\n }\n\n var arcData = \"A \".concat([padding, padding, '0,0,0,'].join(','));\n segments = segments.map(function (segment, index) {\n var pathFragment = '';\n\n if (index === 0) {\n pathFragment = \"M \".concat(segments[segments.length - 1][1], \" \");\n }\n\n pathFragment += \"\".concat(arcData + segment[0], \" L \").concat(segment[1]);\n return pathFragment;\n });\n return segments.join(' ');\n}\n/**\n * 传入的节点作为多边形顶点,生成平滑的闭合多边形\n * @param polyPoints\n * @param padding\n */\n\nfunction paddedHull(polyPoints, padding) {\n var pointCount = polyPoints.length;\n\n var smoothHull1 = function smoothHull1(points) {\n // Returns the path for a circular hull around a single point.\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \".concat(p1, \" A \").concat([padding, padding, '0,0,0', p2].join(','), \" A \").concat([padding, padding, '0,0,0', p1].join(','));\n }; // Returns the path for a rounded hull around two points.\n\n\n var smoothHull2 = function smoothHull2(points) {\n var v = vecFrom(points[0], points[1]);\n var extensionVec = vecScaleTo(v, padding);\n var extension0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, -1));\n var extension1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], extensionVec);\n var tangentHalfLength = 1.2 * padding;\n var controlDelta = vecScaleTo(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), tangentHalfLength);\n var invControlDelta = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], controlDelta, -1);\n var control0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, invControlDelta);\n var control1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension1, invControlDelta);\n var control3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, controlDelta); // return [\n // ['M', extension0[0], extension0[1]],\n // ['C', control0, control1, extension1],\n // ['S', control3, extension0],\n // 'Z',\n // ];\n\n return \"M \".concat(extension0, \" C \").concat([control0, control1, extension1].join(','), \" S \").concat([control3, extension0].join(','), \" Z\");\n }; // Handle special cases\n\n\n if (!polyPoints || pointCount < 1) return '';\n if (pointCount === 1) return smoothHull1(polyPoints);\n if (pointCount === 2) return smoothHull2(polyPoints);\n var hullPoints = polyPoints.map(function (point, index) {\n var pNext = polyPoints[(index + 1) % pointCount];\n return {\n p: point,\n v: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], vecFrom(point, pNext))\n };\n }); // Compute the expanded hull points, and the nearest prior control point for each.\n\n for (var i = 0; i < hullPoints.length; ++i) {\n var priorIndex = i > 0 ? i - 1 : pointCount - 1;\n var extensionVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[priorIndex].v, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], hullPoints[i].v, -1)));\n hullPoints[i].p = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[i].p, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, padding));\n }\n\n return hullPoints.map(function (obj) {\n var point = obj.p;\n return {\n x: point[0],\n y: point[1]\n };\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanM/YWU2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNXO0FBQ3BEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixLQUFLLEtBQUs7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsc0JBQXNCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IseUVBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxzREFBSTs7QUFFTjtBQUNBO0FBQ0E7O0FBRUEsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBO0FBQ0EsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQixLQUFLO0FBQ0wsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxzREFBSSxlQUFlLHNEQUFJO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQSx1QkFBdUIsc0RBQUk7QUFDM0IsMEJBQTBCLHNEQUFJO0FBQzlCLGFBQWEsc0RBQUk7QUFDakIsYUFBYSxzREFBSTtBQUNqQixhQUFhLHNEQUFJO0FBQ2pCLGFBQWEsc0RBQUk7QUFDakI7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDLDRCQUE0QixnQ0FBZ0M7QUFDNUQ7QUFDQSxzQ0FBc0M7O0FBRXRDLGlCQUFpQixzREFBSTtBQUNyQiw4QkFBOEIsc0RBQUksMEJBQTBCLHNEQUFJO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUksd0JBQXdCLHNEQUFJO0FBQ3JELHFCQUFxQixzREFBSTtBQUN6QjtBQUNBLGtDQUFrQyxzREFBSTtBQUN0QywwQkFBMEIsc0RBQUk7QUFDOUIsbUJBQW1CLHNEQUFJO0FBQ3ZCLG1CQUFtQixzREFBSTtBQUN2QixtQkFBbUIsc0RBQUksdUNBQXVDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0RBQUk7QUFDYjtBQUNBLEdBQUcsRUFBRTs7QUFFTCxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0EsdUJBQXVCLHNEQUFJLG1CQUFtQixzREFBSSx1Q0FBdUMsc0RBQUk7QUFDN0Ysc0JBQXNCLHNEQUFJLDhCQUE4QixzREFBSTtBQUM1RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2F0bXVsbFJvbTJCZXppZXIgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuLyoqXG4gKiDmm7/mjaLlrZfnrKbkuLLkuK3nmoTlrZfmrrVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIg5qih54mI5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gbyBqc29uIGRhdGFcbiAqL1xuXG52YXIgc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoc3RyLCBvKSB7XG4gIGlmICghc3RyIHx8ICFvKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXD9cXHsoW157fV0rKVxcfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG5hbWUpIHtcbiAgICBpZiAobWF0Y2guY2hhckF0KDApID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBtYXRjaC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gb1tuYW1lXTtcbiAgICBpZiAocmVzID09PSAwKSByZXMgPSAnMCc7XG4gICAgcmV0dXJuIHJlcyB8fCAnJztcbiAgfSk7XG59O1xuLyoqXG4gKiDnu5nlrprlnZDmoIfojrflj5bkuInmrKHotJ3loZ7lsJTmm7Lnur/nmoQgTSDlj4ogQyDlgLxcbiAqIEBwYXJhbSBwb2ludHMgY29vcmRpbmF0ZSBzZXRcbiAqL1xuXG5cbmV4cG9ydCB2YXIgZ2V0U3BsaW5lID0gZnVuY3Rpb24gZ2V0U3BsaW5lKHBvaW50cykge1xuICB2YXIgZGF0YSA9IFtdO1xuXG4gIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInBvaW50IGxlbmd0aCBtdXN0IGxhcmduIHRoYW4gMiwgbm93IGl0J3MgXCIuY29uY2F0KHBvaW50cy5sZW5ndGgpKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgcG9pbnRzXzEgPSBwb2ludHM7IF9pIDwgcG9pbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgIHZhciB4ID0gcG9pbnQueCxcbiAgICAgICAgeSA9IHBvaW50Lnk7XG4gICAgZGF0YS5wdXNoKHgpO1xuICAgIGRhdGEucHVzaCh5KTtcbiAgfVxuXG4gIHZhciBzcGxpZVBhdGggPSBjYXRtdWxsUm9tMkJlemllcihkYXRhKTtcbiAgc3BsaWVQYXRoLnVuc2hpZnQoWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gIHJldHVybiBzcGxpZVBhdGg7XG59O1xuLyoqXG4gKiDmoLnmja7otbflp4vngrnjgIHnm7jlr7nkvY3nva7jgIHlgY/np7vph4/orqHnrpfmjqfliLbngrlcbiAqIEBwYXJhbSAge0lQb2ludH0gc3RhcnRQb2ludCDotbflp4vngrnvvIzljIXlkKsgeCx5XG4gKiBAcGFyYW0gIHtJUG9pbnR9IGVuZFBvaW50ICDnu5PmnZ/ngrksIOWMheWQqyB4LHlcbiAqIEBwYXJhbSAge051bWJlcn0gcGVyY2VudCAgIOebuOWvueS9jee9rizojIPlm7QgMC0xXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IG9mZnNldCAgICDlgY/np7vph49cbiAqIEByZXR1cm4ge0lQb2ludH0g5o6n5Yi254K577yM5YyF5ZCrIHgseVxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q29udHJvbFBvaW50ID0gZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBwZXJjZW50LCBvZmZzZXQpIHtcbiAgaWYgKHBlcmNlbnQgPT09IHZvaWQgMCkge1xuICAgIHBlcmNlbnQgPSAwO1xuICB9XG5cbiAgaWYgKG9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0ID0gMDtcbiAgfVxuXG4gIHZhciBwb2ludCA9IHtcbiAgICB4OiAoMSAtIHBlcmNlbnQpICogc3RhcnRQb2ludC54ICsgcGVyY2VudCAqIGVuZFBvaW50LngsXG4gICAgeTogKDEgLSBwZXJjZW50KSAqIHN0YXJ0UG9pbnQueSArIHBlcmNlbnQgKiBlbmRQb2ludC55XG4gIH07XG4gIHZhciB0YW5nZW50ID0gWzAsIDBdO1xuICB2ZWMyLm5vcm1hbGl6ZSh0YW5nZW50LCBbZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueCwgZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueV0pO1xuXG4gIGlmICghdGFuZ2VudCB8fCAhdGFuZ2VudFswXSAmJiAhdGFuZ2VudFsxXSkge1xuICAgIHRhbmdlbnQgPSBbMCwgMF07XG4gIH1cblxuICB2YXIgcGVycGVuZGljdWxhciA9IFstdGFuZ2VudFsxXSAqIG9mZnNldCwgdGFuZ2VudFswXSAqIG9mZnNldF07IC8vIOWeguebtOWQkemHj1xuXG4gIHBvaW50LnggKz0gcGVycGVuZGljdWxhclswXTtcbiAgcG9pbnQueSArPSBwZXJwZW5kaWN1bGFyWzFdO1xuICByZXR1cm4gcG9pbnQ7XG59O1xuLyoqXG4gKiDngrnpm4bovazljJbkuLpQYXRo5aSa6L655b2iXG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludHMg54K56ZuGXG4gKiBAcGFyYW0ge0Jvb2xlbn0geiDmmK/lkKblsIHpl61cbiAqIEByZXR1cm4ge0FycmF5fSBQYXRoXG4gKi9cblxuZXhwb3J0IHZhciBwb2ludHNUb1BvbHlnb24gPSBmdW5jdGlvbiBwb2ludHNUb1BvbHlnb24ocG9pbnRzLCB6KSB7XG4gIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHBhdGggPSAnJztcbiAgdmFyIHN0ciA9ICcnO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHBvaW50c1tpXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzdHIgPSAnTXt4fSB7eX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSAnTHt4fSB7eX0nO1xuICAgIH1cblxuICAgIHBhdGggKz0gc3Vic3RpdHV0ZShzdHIsIGl0ZW0pO1xuICB9XG5cbiAgaWYgKHopIHtcbiAgICBwYXRoICs9ICdaJztcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbmV4cG9ydCB2YXIgcGF0aFRvUG9pbnRzID0gZnVuY3Rpb24gcGF0aFRvUG9pbnRzKHBhdGgpIHtcbiAgdmFyIHBvaW50cyA9IFtdO1xuICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgIHZhciBjb21tYW5kID0gc2VnWzBdO1xuXG4gICAgaWYgKGNvbW1hbmQgIT09ICdBJykge1xuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzZWcubGVuZ3RoOyBpID0gaSArIDIpIHtcbiAgICAgICAgcG9pbnRzLnB1c2goW3NlZ1tpXSwgc2VnW2kgKyAxXV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGVuZ3RoXzEgPSBzZWcubGVuZ3RoO1xuICAgICAgcG9pbnRzLnB1c2goW3NlZ1tsZW5ndGhfMSAtIDJdLCBzZWdbbGVuZ3RoXzEgLSAxXV0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwb2ludHM7XG59O1xuLyoqXG4gKiDnlJ/miJDlubPmu5HnmoTpl63lkIjmm7Lnur9cbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5leHBvcnQgdmFyIGdldENsb3NlZFNwbGluZSA9IGZ1bmN0aW9uIGdldENsb3NlZFNwbGluZShwb2ludHMpIHtcbiAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwicG9pbnQgbGVuZ3RoIG11c3QgbGFyZ24gdGhhbiAyLCBub3cgaXQncyBcIi5jb25jYXQocG9pbnRzLmxlbmd0aCkpO1xuICB9XG5cbiAgdmFyIGZpcnN0ID0gcG9pbnRzWzBdO1xuICB2YXIgc2Vjb25kID0gcG9pbnRzWzFdO1xuICB2YXIgbGFzdCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG4gIHZhciBsYXN0U2Vjb25kID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAyXTtcbiAgcG9pbnRzLnVuc2hpZnQobGFzdCk7XG4gIHBvaW50cy51bnNoaWZ0KGxhc3RTZWNvbmQpO1xuICBwb2ludHMucHVzaChmaXJzdCk7XG4gIHBvaW50cy5wdXNoKHNlY29uZCk7XG4gIHZhciBjbG9zZWRQYXRoID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoIC0gMjsgaSArPSAxKSB7XG4gICAgdmFyIHgwID0gcG9pbnRzW2kgLSAxXS54O1xuICAgIHZhciB5MCA9IHBvaW50c1tpIC0gMV0ueTtcbiAgICB2YXIgeDEgPSBwb2ludHNbaV0ueDtcbiAgICB2YXIgeTEgPSBwb2ludHNbaV0ueTtcbiAgICB2YXIgeDIgPSBwb2ludHNbaSArIDFdLng7XG4gICAgdmFyIHkyID0gcG9pbnRzW2kgKyAxXS55O1xuICAgIHZhciB4MyA9IGkgIT09IHBvaW50cy5sZW5ndGggLSAyID8gcG9pbnRzW2kgKyAyXS54IDogeDI7XG4gICAgdmFyIHkzID0gaSAhPT0gcG9pbnRzLmxlbmd0aCAtIDIgPyBwb2ludHNbaSArIDJdLnkgOiB5MjtcbiAgICB2YXIgY3AxeCA9IHgxICsgKHgyIC0geDApIC8gNjtcbiAgICB2YXIgY3AxeSA9IHkxICsgKHkyIC0geTApIC8gNjtcbiAgICB2YXIgY3AyeCA9IHgyIC0gKHgzIC0geDEpIC8gNjtcbiAgICB2YXIgY3AyeSA9IHkyIC0gKHkzIC0geTEpIC8gNjtcbiAgICBjbG9zZWRQYXRoLnB1c2goWydDJywgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeDIsIHkyXSk7XG4gIH1cblxuICBjbG9zZWRQYXRoLnVuc2hpZnQoWydNJywgbGFzdC54LCBsYXN0LnldKTtcbiAgcmV0dXJuIGNsb3NlZFBhdGg7XG59O1xuXG52YXIgdmVjU2NhbGVUbyA9IGZ1bmN0aW9uIHZlY1NjYWxlVG8odiwgbGVuZ3RoKSB7XG4gIC8vIFZlY3RvciB3aXRoIGRpcmVjdGlvbiBvZiB2IHdpdGggc3BlY2lmaWVkIGxlbmd0aFxuICByZXR1cm4gdmVjMi5zY2FsZShbMCwgMF0sIHZlYzIubm9ybWFsaXplKFswLCAwXSwgdiksIGxlbmd0aCk7XG59O1xuXG52YXIgdW5pdE5vcm1hbCA9IGZ1bmN0aW9uIHVuaXROb3JtYWwocDAsIHAxKSB7XG4gIC8vIFJldHVybnMgdGhlIHVuaXQgbm9ybWFsIHRvIHRoZSBsaW5lIHNlZ21lbnQgZnJvbSBwMCB0byBwMS5cbiAgdmFyIG4gPSBbcDBbMV0gLSBwMVsxXSwgcDFbMF0gLSBwMFswXV07XG4gIHZhciBuTGVuZ3RoID0gTWF0aC5zcXJ0KG5bMF0gKiBuWzBdICsgblsxXSAqIG5bMV0pO1xuXG4gIGlmIChuTGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwMCBzaG91bGQgbm90IGJlIGVxdWFsIHRvIHAxJyk7XG4gIH1cblxuICByZXR1cm4gW25bMF0gLyBuTGVuZ3RoLCBuWzFdIC8gbkxlbmd0aF07XG59O1xuXG52YXIgdmVjRnJvbSA9IGZ1bmN0aW9uIHZlY0Zyb20ocDAsIHAxKSB7XG4gIC8vIFZlY3RvciBmcm9tIHAwIHRvIHAxXG4gIHJldHVybiBbcDFbMF0gLSBwMFswXSwgcDFbMV0gLSBwMFsxXV07XG59O1xuLyoqXG4gKiDkvKDlhaXnmoToioLngrnkvZzkuLrlpJrovrnlvaLpobbngrnvvIznlJ/miJDmnInlnIbop5LnmoTlpJrovrnlvaJcbiAqIEBwYXJhbSBwb2x5UG9pbnRzIOWkmui+ueW9oumhtueCuVxuICogQHBhcmFtIHBhZGRpbmcg5Zyo5Y6f5aSa6L655b2i5Z+656GA5LiK5aKe5Yqg5pyA57uI6L2u5buT5ZKM5Y6f5aSa6L655b2i55qE56m655m96Ze06ZqUXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRlZEh1bGwocG9seVBvaW50cywgcGFkZGluZykge1xuICAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIGEgc2luZ2xlIHBvaW50XG4gIHZhciByb3VuZGVkSHVsbDEgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDEocG9pbnRzKSB7XG4gICAgdmFyIHAxID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdIC0gcGFkZGluZ107XG4gICAgdmFyIHAyID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdICsgcGFkZGluZ107XG4gICAgcmV0dXJuIFwiTSBcIi5jb25jYXQocDEsIFwiIEEgXCIpLmNvbmNhdChwYWRkaW5nLCBcIixcIikuY29uY2F0KHBhZGRpbmcsIFwiLDAsMCwwLFwiKS5jb25jYXQocDIsIFwiIEEgXCIpLmNvbmNhdChwYWRkaW5nLCBcIixcIikuY29uY2F0KHBhZGRpbmcsIFwiLDAsMCwwLFwiKS5jb25jYXQocDEpO1xuICB9OyAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIHR3byBwb2ludHNcblxuXG4gIHZhciByb3VuZGVkSHVsbDIgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDIocG9pbnRzKSB7XG4gICAgdmFyIG9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCB1bml0Tm9ybWFsKHBvaW50c1swXSwgcG9pbnRzWzFdKSwgcGFkZGluZyk7XG4gICAgdmFyIGludk9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCBvZmZzZXRWZWN0b3IsIC0xKTtcbiAgICB2YXIgcDAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDEgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDIgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDMgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICByZXR1cm4gXCJNIFwiLmNvbmNhdChwMCwgXCIgTCBcIikuY29uY2F0KHAxLCBcIiBBIFwiKS5jb25jYXQoW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAyXS5qb2luKCcsJyksIFwiIEwgXCIpLmNvbmNhdChwMywgXCIgQSBcIikuY29uY2F0KFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAnLCBwMF0uam9pbignLCcpKTtcbiAgfTsgLy8g54m55q6K5oOF5Ya15aSE55CG77ya6IqC54K55pWw5bCP5LqO562J5LqOMlxuXG5cbiAgaWYgKCFwb2x5UG9pbnRzIHx8IHBvbHlQb2ludHMubGVuZ3RoIDwgMSkgcmV0dXJuICcnO1xuICBpZiAocG9seVBvaW50cy5sZW5ndGggPT09IDEpIHJldHVybiByb3VuZGVkSHVsbDEocG9seVBvaW50cyk7XG4gIGlmIChwb2x5UG9pbnRzLmxlbmd0aCA9PT0gMikgcmV0dXJuIHJvdW5kZWRIdWxsMihwb2x5UG9pbnRzKTtcbiAgdmFyIHNlZ21lbnRzID0gbmV3IEFycmF5KHBvbHlQb2ludHMubGVuZ3RoKTsgLy8gQ2FsY3VsYXRlIGVhY2ggb2Zmc2V0IChvdXR3YXJkcykgc2VnbWVudCBvZiB0aGUgY29udmV4IGh1bGwuXG5cbiAgZm9yICh2YXIgc2VnbWVudEluZGV4ID0gMDsgc2VnbWVudEluZGV4IDwgc2VnbWVudHMubGVuZ3RoOyArK3NlZ21lbnRJbmRleCkge1xuICAgIHZhciBwMCA9IHNlZ21lbnRJbmRleCA9PT0gMCA/IHBvbHlQb2ludHNbcG9seVBvaW50cy5sZW5ndGggLSAxXSA6IHBvbHlQb2ludHNbc2VnbWVudEluZGV4IC0gMV07XG4gICAgdmFyIHAxID0gcG9seVBvaW50c1tzZWdtZW50SW5kZXhdOyAvLyBDb21wdXRlIHRoZSBvZmZzZXQgdmVjdG9yIGZvciB0aGUgbGluZSBzZWdtZW50LCB3aXRoIGxlbmd0aCA9IHBhZGRpbmcuXG5cbiAgICB2YXIgb2Zmc2V0ID0gdmVjMi5zY2FsZShbMCwgMF0sIHVuaXROb3JtYWwocDAsIHAxKSwgcGFkZGluZyk7XG4gICAgc2VnbWVudHNbc2VnbWVudEluZGV4XSA9IFt2ZWMyLmFkZChbMCwgMF0sIHAwLCBvZmZzZXQpLCB2ZWMyLmFkZChbMCwgMF0sIHAxLCBvZmZzZXQpXTtcbiAgfVxuXG4gIHZhciBhcmNEYXRhID0gXCJBIFwiLmNvbmNhdChbcGFkZGluZywgcGFkZGluZywgJzAsMCwwLCddLmpvaW4oJywnKSk7XG4gIHNlZ21lbnRzID0gc2VnbWVudHMubWFwKGZ1bmN0aW9uIChzZWdtZW50LCBpbmRleCkge1xuICAgIHZhciBwYXRoRnJhZ21lbnQgPSAnJztcblxuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcGF0aEZyYWdtZW50ID0gXCJNIFwiLmNvbmNhdChzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXVsxXSwgXCIgXCIpO1xuICAgIH1cblxuICAgIHBhdGhGcmFnbWVudCArPSBcIlwiLmNvbmNhdChhcmNEYXRhICsgc2VnbWVudFswXSwgXCIgTCBcIikuY29uY2F0KHNlZ21lbnRbMV0pO1xuICAgIHJldHVybiBwYXRoRnJhZ21lbnQ7XG4gIH0pO1xuICByZXR1cm4gc2VnbWVudHMuam9pbignICcpO1xufVxuLyoqXG4gKiDkvKDlhaXnmoToioLngrnkvZzkuLrlpJrovrnlvaLpobbngrnvvIznlJ/miJDlubPmu5HnmoTpl63lkIjlpJrovrnlvaJcbiAqIEBwYXJhbSBwb2x5UG9pbnRzXG4gKiBAcGFyYW0gcGFkZGluZ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYWRkZWRIdWxsKHBvbHlQb2ludHMsIHBhZGRpbmcpIHtcbiAgdmFyIHBvaW50Q291bnQgPSBwb2x5UG9pbnRzLmxlbmd0aDtcblxuICB2YXIgc21vb3RoSHVsbDEgPSBmdW5jdGlvbiBzbW9vdGhIdWxsMShwb2ludHMpIHtcbiAgICAvLyBSZXR1cm5zIHRoZSBwYXRoIGZvciBhIGNpcmN1bGFyIGh1bGwgYXJvdW5kIGEgc2luZ2xlIHBvaW50LlxuICAgIHZhciBwMSA9IFtwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXSAtIHBhZGRpbmddO1xuICAgIHZhciBwMiA9IFtwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXSArIHBhZGRpbmddO1xuICAgIHJldHVybiBcIk0gXCIuY29uY2F0KHAxLCBcIiBBIFwiKS5jb25jYXQoW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAyXS5qb2luKCcsJyksIFwiIEEgXCIpLmNvbmNhdChbcGFkZGluZywgcGFkZGluZywgJzAsMCwwJywgcDFdLmpvaW4oJywnKSk7XG4gIH07IC8vIFJldHVybnMgdGhlIHBhdGggZm9yIGEgcm91bmRlZCBodWxsIGFyb3VuZCB0d28gcG9pbnRzLlxuXG5cbiAgdmFyIHNtb290aEh1bGwyID0gZnVuY3Rpb24gc21vb3RoSHVsbDIocG9pbnRzKSB7XG4gICAgdmFyIHYgPSB2ZWNGcm9tKHBvaW50c1swXSwgcG9pbnRzWzFdKTtcbiAgICB2YXIgZXh0ZW5zaW9uVmVjID0gdmVjU2NhbGVUbyh2LCBwYWRkaW5nKTtcbiAgICB2YXIgZXh0ZW5zaW9uMCA9IHZlYzIuYWRkKFswLCAwXSwgcG9pbnRzWzBdLCB2ZWMyLnNjYWxlKFswLCAwXSwgZXh0ZW5zaW9uVmVjLCAtMSkpO1xuICAgIHZhciBleHRlbnNpb24xID0gdmVjMi5hZGQoWzAsIDBdLCBwb2ludHNbMV0sIGV4dGVuc2lvblZlYyk7XG4gICAgdmFyIHRhbmdlbnRIYWxmTGVuZ3RoID0gMS4yICogcGFkZGluZztcbiAgICB2YXIgY29udHJvbERlbHRhID0gdmVjU2NhbGVUbyh2ZWMyLm5vcm1hbGl6ZShbMCwgMF0sIHYpLCB0YW5nZW50SGFsZkxlbmd0aCk7XG4gICAgdmFyIGludkNvbnRyb2xEZWx0YSA9IHZlYzIuc2NhbGUoWzAsIDBdLCBjb250cm9sRGVsdGEsIC0xKTtcbiAgICB2YXIgY29udHJvbDAgPSB2ZWMyLmFkZChbMCwgMF0sIGV4dGVuc2lvbjAsIGludkNvbnRyb2xEZWx0YSk7XG4gICAgdmFyIGNvbnRyb2wxID0gdmVjMi5hZGQoWzAsIDBdLCBleHRlbnNpb24xLCBpbnZDb250cm9sRGVsdGEpO1xuICAgIHZhciBjb250cm9sMyA9IHZlYzIuYWRkKFswLCAwXSwgZXh0ZW5zaW9uMCwgY29udHJvbERlbHRhKTsgLy8gcmV0dXJuIFtcbiAgICAvLyAgIFsnTScsIGV4dGVuc2lvbjBbMF0sIGV4dGVuc2lvbjBbMV1dLFxuICAgIC8vICAgWydDJywgY29udHJvbDAsIGNvbnRyb2wxLCBleHRlbnNpb24xXSxcbiAgICAvLyAgIFsnUycsIGNvbnRyb2wzLCBleHRlbnNpb24wXSxcbiAgICAvLyAgICdaJyxcbiAgICAvLyBdO1xuXG4gICAgcmV0dXJuIFwiTSBcIi5jb25jYXQoZXh0ZW5zaW9uMCwgXCIgQyBcIikuY29uY2F0KFtjb250cm9sMCwgY29udHJvbDEsIGV4dGVuc2lvbjFdLmpvaW4oJywnKSwgXCIgUyBcIikuY29uY2F0KFtjb250cm9sMywgZXh0ZW5zaW9uMF0uam9pbignLCcpLCBcIiBaXCIpO1xuICB9OyAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuXG5cbiAgaWYgKCFwb2x5UG9pbnRzIHx8IHBvaW50Q291bnQgPCAxKSByZXR1cm4gJyc7XG4gIGlmIChwb2ludENvdW50ID09PSAxKSByZXR1cm4gc21vb3RoSHVsbDEocG9seVBvaW50cyk7XG4gIGlmIChwb2ludENvdW50ID09PSAyKSByZXR1cm4gc21vb3RoSHVsbDIocG9seVBvaW50cyk7XG4gIHZhciBodWxsUG9pbnRzID0gcG9seVBvaW50cy5tYXAoZnVuY3Rpb24gKHBvaW50LCBpbmRleCkge1xuICAgIHZhciBwTmV4dCA9IHBvbHlQb2ludHNbKGluZGV4ICsgMSkgJSBwb2ludENvdW50XTtcbiAgICByZXR1cm4ge1xuICAgICAgcDogcG9pbnQsXG4gICAgICB2OiB2ZWMyLm5vcm1hbGl6ZShbMCwgMF0sIHZlY0Zyb20ocG9pbnQsIHBOZXh0KSlcbiAgICB9O1xuICB9KTsgLy8gQ29tcHV0ZSB0aGUgZXhwYW5kZWQgaHVsbCBwb2ludHMsIGFuZCB0aGUgbmVhcmVzdCBwcmlvciBjb250cm9sIHBvaW50IGZvciBlYWNoLlxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaHVsbFBvaW50cy5sZW5ndGg7ICsraSkge1xuICAgIHZhciBwcmlvckluZGV4ID0gaSA+IDAgPyBpIC0gMSA6IHBvaW50Q291bnQgLSAxO1xuICAgIHZhciBleHRlbnNpb25WZWMgPSB2ZWMyLm5vcm1hbGl6ZShbMCwgMF0sIHZlYzIuYWRkKFswLCAwXSwgaHVsbFBvaW50c1twcmlvckluZGV4XS52LCB2ZWMyLnNjYWxlKFswLCAwXSwgaHVsbFBvaW50c1tpXS52LCAtMSkpKTtcbiAgICBodWxsUG9pbnRzW2ldLnAgPSB2ZWMyLmFkZChbMCwgMF0sIGh1bGxQb2ludHNbaV0ucCwgdmVjMi5zY2FsZShbMCwgMF0sIGV4dGVuc2lvblZlYywgcGFkZGluZykpO1xuICB9XG5cbiAgcmV0dXJuIGh1bGxQb2ludHMubWFwKGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgcG9pbnQgPSBvYmoucDtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcG9pbnRbMF0sXG4gICAgICB5OiBwb2ludFsxXVxuICAgIH07XG4gIH0pO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/path.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-core/es/util/validation.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g6-core/es/util/validation.js ***!
\**********************************************************/
/*! exports provided: dataValidation, singleDataValidation */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataValidation\", function() { return dataValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"singleDataValidation\", function() { return singleDataValidation; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n\n\n\n/**\n * 验证关系图或树图数据的合法性,必须符合以下规则才会渲染图:\n * 1. 必须传入数据\n * 2. 节点的 ID 必须为字符串,暂不支持数字类型,如果支持数字类型,会出现类似 123 与 '123' 是否相等的问题\n * 3. 边的 source 和 target 值必须在节点 ID 中存在\n * @param data 关系图或树图数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar dataValidation = function dataValidation(data) {\n var _a; // 1. 必须传入数据\n\n\n if (!data) {\n console.error('G6 Error Tips: the data must be defined');\n return false;\n } // 2. 节点的 ID 必须为字符串或数字类型\n\n\n var nodes = data.nodes,\n edges = data.edges,\n _b = data.combos,\n combos = _b === void 0 ? [] : _b;\n\n if (!nodes && !edges) {\n var validated_1 = true; // 不存在 nodes 和 edges,则说明是 TreeGraphData,按 TreeGraphData 规则验证\n\n Object(_graphic__WEBPACK_IMPORTED_MODULE_2__[\"traverseTree\"])(data, function (param) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(param.id)) {\n validated_1 = false;\n return false;\n }\n\n return true;\n });\n return validated_1;\n }\n\n var nonNode = (nodes || []).find(function (node) {\n return !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(node.id);\n });\n\n if (nonNode) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or %c\".concat(nonNode.id, \"%c is not a string.\"), 'font-size: 20px; color: red;', '');\n return false;\n } // 3. 边的 source 和 target 必须存在于节点 或 Combo中\n\n\n var nodeIds = (nodes || []).map(function (node) {\n return node.id;\n });\n var comboIds = (_a = combos) === null || _a === void 0 ? void 0 : _a.map(function (combo) {\n return combo.id;\n });\n\n var ids = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], nodeIds, true), comboIds, true);\n\n var nonEdges = (edges || []).find(function (edge) {\n return !ids.includes(edge.source) || !ids.includes(edge.target);\n });\n\n if (nonEdges) {\n console.warn(\"G6 Warning Tips: The source %c\".concat(nonEdges.source, \"%c or the target %c\").concat(nonEdges.target, \"%c of the edge do not exist in the nodes or combos.\"), 'font-size: 20px; color: red;', '', 'font-size: 20px; color: red;', '');\n return false;\n }\n\n return true;\n};\n/**\n * 验证添加节点、边或从combo时的数据\n * @param type 节点、边或从combo\n * @param data 添加的单条数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar singleDataValidation = function singleDataValidation(type, data) {\n if (type === 'node' || type === 'combo') {\n // 必须有 id 字段,且id必须为字符串类型\n if (data.id && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(data.id)) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or the 'id' %c\".concat(data.id, \"%c is not a string.\"), 'font-size: 20px; color: red;', '');\n return false;\n }\n } else if (type === 'edge') {\n // 必须有 source 和 target 字段\n if (!data.source || !data.target) {\n console.warn(\"G6 Warning Tips: missing 'source' or 'target' for the edge.\");\n return false;\n }\n }\n\n return true;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanM/ZGY2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDQTtBQUNHO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0IsSUFBSSw2REFBWTtBQUNoQixXQUFXLDJEQUFRO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQixHQUFHOztBQUVIO0FBQ0EsNkhBQTZILFlBQVk7QUFDekk7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVILFlBQVksMkRBQWEsQ0FBQywyREFBYTs7QUFFdkM7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxrTUFBa00sWUFBWSx3QkFBd0IsWUFBWTtBQUNsUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFRO0FBQzVCLHFJQUFxSSxZQUFZO0FBQ2pKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlIH0gZnJvbSAnLi9ncmFwaGljJztcbi8qKlxuICog6aqM6K+B5YWz57O75Zu+5oiW5qCR5Zu+5pWw5o2u55qE5ZCI5rOV5oCn77yM5b+F6aG756ym5ZCI5Lul5LiL6KeE5YiZ5omN5Lya5riy5p+T5Zu+77yaXG4gKiAxLiDlv4XpobvkvKDlhaXmlbDmja5cbiAqIDIuIOiKgueCueeahCBJRCDlv4XpobvkuLrlrZfnrKbkuLLvvIzmmoLkuI3mlK/mjIHmlbDlrZfnsbvlnovvvIzlpoLmnpzmlK/mjIHmlbDlrZfnsbvlnovvvIzkvJrlh7rnjrDnsbvkvLwgMTIzIOS4jiAnMTIzJyDmmK/lkKbnm7jnrYnnmoTpl67pophcbiAqIDMuIOi+ueeahCBzb3VyY2Ug5ZKMIHRhcmdldCDlgLzlv4XpobvlnKjoioLngrkgSUQg5Lit5a2Y5ZyoXG4gKiBAcGFyYW0gZGF0YSDlhbPns7vlm77miJbmoJHlm77mlbDmja5cbiAqIEByZXR1cm4gYm9vbGVhbiDlhajpg6jpqozor4HpgJrov4fov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICovXG5cbmV4cG9ydCB2YXIgZGF0YVZhbGlkYXRpb24gPSBmdW5jdGlvbiBkYXRhVmFsaWRhdGlvbihkYXRhKSB7XG4gIHZhciBfYTsgLy8gMS4g5b+F6aG75Lyg5YWl5pWw5o2uXG5cblxuICBpZiAoIWRhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKCdHNiBFcnJvciBUaXBzOiB0aGUgZGF0YSBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gMi4g6IqC54K555qEIElEIOW/hemhu+S4uuWtl+espuS4suaIluaVsOWtl+exu+Wei1xuXG5cbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcyxcbiAgICAgIGVkZ2VzID0gZGF0YS5lZGdlcyxcbiAgICAgIF9iID0gZGF0YS5jb21ib3MsXG4gICAgICBjb21ib3MgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAoIW5vZGVzICYmICFlZGdlcykge1xuICAgIHZhciB2YWxpZGF0ZWRfMSA9IHRydWU7IC8vIOS4jeWtmOWcqCBub2RlcyDlkowgZWRnZXPvvIzliJnor7TmmI7mmK8gVHJlZUdyYXBoRGF0Ye+8jOaMiSBUcmVlR3JhcGhEYXRhIOinhOWImemqjOivgVxuXG4gICAgdHJhdmVyc2VUcmVlKGRhdGEsIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgaWYgKCFpc1N0cmluZyhwYXJhbS5pZCkpIHtcbiAgICAgICAgdmFsaWRhdGVkXzEgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmFsaWRhdGVkXzE7XG4gIH1cblxuICB2YXIgbm9uTm9kZSA9IChub2RlcyB8fCBbXSkuZmluZChmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAhaXNTdHJpbmcobm9kZS5pZCk7XG4gIH0pO1xuXG4gIGlmIChub25Ob2RlKSB7XG4gICAgY29uc29sZS53YXJuKFwiRzYgV2FybmluZyBUaXBzOiBtaXNzaW5nICdpZCcgcHJvcGVydHksIG9yICVjXCIuY29uY2F0KG5vbk5vZGUuaWQsIFwiJWMgaXMgbm90IGEgc3RyaW5nLlwiKSwgJ2ZvbnQtc2l6ZTogMjBweDsgY29sb3I6IHJlZDsnLCAnJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIDMuIOi+ueeahCBzb3VyY2Ug5ZKMIHRhcmdldCDlv4XpobvlrZjlnKjkuo7oioLngrkg5oiWIENvbWJv5LitXG5cblxuICB2YXIgbm9kZUlkcyA9IChub2RlcyB8fCBbXSkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuaWQ7XG4gIH0pO1xuICB2YXIgY29tYm9JZHMgPSAoX2EgPSBjb21ib3MpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgcmV0dXJuIGNvbWJvLmlkO1xuICB9KTtcblxuICB2YXIgaWRzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBub2RlSWRzLCB0cnVlKSwgY29tYm9JZHMsIHRydWUpO1xuXG4gIHZhciBub25FZGdlcyA9IChlZGdlcyB8fCBbXSkuZmluZChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAhaWRzLmluY2x1ZGVzKGVkZ2Uuc291cmNlKSB8fCAhaWRzLmluY2x1ZGVzKGVkZ2UudGFyZ2V0KTtcbiAgfSk7XG5cbiAgaWYgKG5vbkVkZ2VzKSB7XG4gICAgY29uc29sZS53YXJuKFwiRzYgV2FybmluZyBUaXBzOiBUaGUgc291cmNlICVjXCIuY29uY2F0KG5vbkVkZ2VzLnNvdXJjZSwgXCIlYyBvciB0aGUgdGFyZ2V0ICVjXCIpLmNvbmNhdChub25FZGdlcy50YXJnZXQsIFwiJWMgb2YgdGhlIGVkZ2UgZG8gbm90IGV4aXN0IGluIHRoZSBub2RlcyBvciBjb21ib3MuXCIpLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIOmqjOivgea3u+WKoOiKgueCueOAgei+ueaIluS7jmNvbWJv5pe255qE5pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDoioLngrnjgIHovrnmiJbku45jb21ib1xuICogQHBhcmFtIGRhdGEg5re75Yqg55qE5Y2V5p2h5pWw5o2uXG4gKiBAcmV0dXJuIGJvb2xlYW4g5YWo6YOo6aqM6K+B6YCa6L+H6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAqL1xuXG5leHBvcnQgdmFyIHNpbmdsZURhdGFWYWxpZGF0aW9uID0gZnVuY3Rpb24gc2luZ2xlRGF0YVZhbGlkYXRpb24odHlwZSwgZGF0YSkge1xuICBpZiAodHlwZSA9PT0gJ25vZGUnIHx8IHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAvLyDlv4XpobvmnIkgaWQg5a2X5q6177yM5LiUaWTlv4XpobvkuLrlrZfnrKbkuLLnsbvlnotcbiAgICBpZiAoZGF0YS5pZCAmJiAhaXNTdHJpbmcoZGF0YS5pZCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogbWlzc2luZyAnaWQnIHByb3BlcnR5LCBvciB0aGUgJ2lkJyAlY1wiLmNvbmNhdChkYXRhLmlkLCBcIiVjIGlzIG5vdCBhIHN0cmluZy5cIiksICdmb250LXNpemU6IDIwcHg7IGNvbG9yOiByZWQ7JywgJycpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnZWRnZScpIHtcbiAgICAvLyDlv4XpobvmnIkgc291cmNlIOWSjCB0YXJnZXQg5a2X5q61XG4gICAgaWYgKCFkYXRhLnNvdXJjZSB8fCAhZGF0YS50YXJnZXQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogbWlzc2luZyAnc291cmNlJyBvciAndGFyZ2V0JyBmb3IgdGhlIGVkZ2UuXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/validation.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/edges/index.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/edges/index.js ***!
\*********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g6-element/es/edges/polyline.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcz9lNTNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9wb2x5bGluZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/edges/polyline-util.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-element/es/edges/polyline-util.js ***!
\*****************************************************************/
/*! exports provided: getBBoxFromPoint, getBBoxFromPoints, isBBoxesOverlapping, filterConnectPoints, simplifyPolyline, getSimplePolyline, getExpandedBBox, isHorizontalPort, getExpandedBBoxPoint, mergeBBox, getPointsFromBBox, isPointOutsideBBox, getBBoxXCrossPoints, getBBoxYCrossPoints, getBBoxCrossPointsByPoint, distance, _costByPoints, heuristicCostEstimate, reconstructPath, removeFrom, isSegmentsIntersected, isSegmentCrossingBBox, getNeighborPoints, pathFinder, isBending, getBorderRadiusPoints, getPathWithBorderRadiusByPolyline, getPolylinePoints */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoint\", function() { return getBBoxFromPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoints\", function() { return getBBoxFromPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBBoxesOverlapping\", function() { return isBBoxesOverlapping; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterConnectPoints\", function() { return filterConnectPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"simplifyPolyline\", function() { return simplifyPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSimplePolyline\", function() { return getSimplePolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBox\", function() { return getExpandedBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHorizontalPort\", function() { return isHorizontalPort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBoxPoint\", function() { return getExpandedBBoxPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsFromBBox\", function() { return getPointsFromBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointOutsideBBox\", function() { return isPointOutsideBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxXCrossPoints\", function() { return getBBoxXCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxYCrossPoints\", function() { return getBBoxYCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxCrossPointsByPoint\", function() { return getBBoxCrossPointsByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_costByPoints\", function() { return _costByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"heuristicCostEstimate\", function() { return heuristicCostEstimate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructPath\", function() { return reconstructPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFrom\", function() { return removeFrom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentsIntersected\", function() { return isSegmentsIntersected; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentCrossingBBox\", function() { return isSegmentCrossingBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighborPoints\", function() { return getNeighborPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBending\", function() { return isBending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBorderRadiusPoints\", function() { return getBorderRadiusPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPathWithBorderRadiusByPolyline\", function() { return getPathWithBorderRadiusByPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPolylinePoints\", function() { return getPolylinePoints; });\nvar getBBoxFromPoint = function getBBoxFromPoint(point) {\n var x = point.x,\n y = point.y;\n return {\n x: x,\n y: y,\n centerX: x,\n centerY: y,\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n height: 0,\n width: 0\n };\n};\nvar getBBoxFromPoints = function getBBoxFromPoints(points) {\n if (points === void 0) {\n points = [];\n }\n\n var xs = [];\n var ys = [];\n points.forEach(function (p) {\n xs.push(p.x);\n ys.push(p.y);\n });\n var minX = Math.min.apply(Math, xs);\n var maxX = Math.max.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxY = Math.max.apply(Math, ys);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n maxX: maxX,\n maxY: maxY,\n minX: minX,\n minY: minY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar isBBoxesOverlapping = function isBBoxesOverlapping(b1, b2) {\n return Math.abs(b1.centerX - b2.centerX) * 2 < b1.width + b2.width && Math.abs(b1.centerY - b2.centerY) * 2 < b1.height + b2.height;\n};\nvar filterConnectPoints = function filterConnectPoints(points) {\n // pre-process: remove duplicated points\n var result = [];\n var pointsMap = {};\n var pointsLength = points.length;\n\n for (var i = pointsLength - 1; i >= 0; i--) {\n var p = points[i];\n p.id = \"\".concat(p.x, \"|||\").concat(p.y);\n pointsMap[p.id] = p;\n result.push(p);\n }\n\n return result;\n};\nvar simplifyPolyline = function simplifyPolyline(points) {\n return filterConnectPoints(points);\n};\nvar getSimplePolyline = function getSimplePolyline(sPoint, tPoint) {\n return [sPoint, {\n x: sPoint.x,\n y: tPoint.y\n }, tPoint];\n};\nvar getExpandedBBox = function getExpandedBBox(bbox, offset) {\n if (bbox.width || bbox.height) {\n return {\n centerX: bbox.centerX,\n centerY: bbox.centerY,\n minX: bbox.minX - offset,\n minY: bbox.minY - offset,\n maxX: bbox.maxX + offset,\n maxY: bbox.maxY + offset,\n height: bbox.height + 2 * offset,\n width: bbox.width + 2 * offset\n };\n } // when it is a point\n\n\n return bbox;\n};\nvar isHorizontalPort = function isHorizontalPort(port, bbox) {\n var dx = Math.abs(port.x - bbox.centerX);\n var dy = Math.abs(port.y - bbox.centerY);\n if (dx === 0 && dy === 0) return 0;\n return dx / bbox.width > dy / bbox.height;\n};\nvar getExpandedBBoxPoint = function getExpandedBBoxPoint(bbox, // 将原来节点 bbox 扩展了 offset 后的 bbox,且被 gridSize 格式化\npoint, // 被 gridSize 格式化后的位置(anchorPoint)\nanotherPoint) {\n var isHorizontal = isHorizontalPort(point, bbox);\n\n if (isHorizontal === 0) {\n // 说明锚点是节点中心,linkCenter: true。需要根据两个节点的相对关系决定方向\n var x = bbox.centerX;\n var y = bbox.centerY;\n\n if (anotherPoint.y < point.y) {\n // 另一端在左上/右上方时,总是从上方走\n y = bbox.minY;\n } else if (anotherPoint.x > point.x) {\n // 另一端在右下方,往右边走\n x = bbox.maxX;\n } else if (anotherPoint.x < point.x) {\n // 另一端在左下方,往左边走\n x = bbox.minX;\n } else if (anotherPoint.x === point.x) {\n // 另一段在正下方,往下走\n y = bbox.maxY;\n }\n\n return {\n x: x,\n y: y\n };\n }\n\n if (isHorizontal) {\n return {\n x: point.x > bbox.centerX ? bbox.maxX : bbox.minX,\n y: point.y\n };\n }\n\n return {\n x: point.x,\n y: point.y > bbox.centerY ? bbox.maxY : bbox.minY\n };\n};\n/**\n *\n * @param b1\n * @param b2\n */\n\nvar mergeBBox = function mergeBBox(b1, b2) {\n var minX = Math.min(b1.minX, b2.minX);\n var minY = Math.min(b1.minY, b2.minY);\n var maxX = Math.max(b1.maxX, b2.maxX);\n var maxY = Math.max(b1.maxY, b2.maxY);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar getPointsFromBBox = function getPointsFromBBox(bbox) {\n // anticlockwise\n // const { minX, minY, maxX, maxY } = bbox;\n return [{\n x: bbox.minX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.maxY\n }, {\n x: bbox.minX,\n y: bbox.maxY\n }];\n};\nvar isPointOutsideBBox = function isPointOutsideBBox(point, bbox) {\n var x = point.x,\n y = point.y;\n return x < bbox.minX || x > bbox.maxX || y < bbox.minY || y > bbox.maxY;\n};\nvar getBBoxXCrossPoints = function getBBoxXCrossPoints(bbox, x) {\n if (x < bbox.minX || x > bbox.maxX) {\n return [];\n }\n\n return [{\n x: x,\n y: bbox.minY\n }, {\n x: x,\n y: bbox.maxY\n }];\n};\nvar getBBoxYCrossPoints = function getBBoxYCrossPoints(bbox, y) {\n if (y < bbox.minY || y > bbox.maxY) {\n return [];\n }\n\n return [{\n x: bbox.minX,\n y: y\n }, {\n x: bbox.maxX,\n y: y\n }];\n};\nvar getBBoxCrossPointsByPoint = function getBBoxCrossPointsByPoint(bbox, point) {\n return getBBoxXCrossPoints(bbox, point.x).concat(getBBoxYCrossPoints(bbox, point.y));\n};\n/**\n * 曼哈顿距离\n */\n\nvar distance = function distance(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n/**\n * 如果 points 中的一个节点 x 与 p 相等,则消耗 -2。y 同\n * 即优先选择和 points 在同一水平线 / 垂直线上的点\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\nvar _costByPoints = function _costByPoints(p, points) {\n var offset = -2;\n var result = 0;\n points.forEach(function (point) {\n if (point) {\n if (p.x === point.x) {\n result += offset;\n }\n\n if (p.y === point.y) {\n result += offset;\n }\n }\n });\n return result;\n};\n/**\n * ps 经过 p 到 pt 的距离,减去其他路过节点造成的消耗\n */\n\nvar heuristicCostEstimate = function heuristicCostEstimate(p, ps, pt, source, target) {\n return distance(p, ps) + distance(p, pt) + _costByPoints(p, [ps, pt, source, target]);\n};\nvar reconstructPath = function reconstructPath(pathPoints, pointById, cameFrom, currentId, iterator) {\n if (iterator === void 0) {\n iterator = 0;\n }\n\n pathPoints.unshift(pointById[currentId]);\n\n if (cameFrom[currentId] && cameFrom[currentId] !== currentId && iterator <= 100) {\n reconstructPath(pathPoints, pointById, cameFrom, cameFrom[currentId], iterator + 1);\n }\n};\n/**\n * 从 arr 中删去 item\n */\n\nvar removeFrom = function removeFrom(arr, item) {\n var index = arr.indexOf(item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n};\nvar isSegmentsIntersected = function isSegmentsIntersected(p0, p1, p2, p3) {\n var v1x = p2.x - p0.x;\n var v1y = p2.y - p0.y;\n var v2x = p3.x - p0.x;\n var v2y = p3.y - p0.y;\n var v3x = p2.x - p1.x;\n var v3y = p2.y - p1.y;\n var v4x = p3.x - p1.x;\n var v4y = p3.y - p1.y;\n var pd1 = v1x * v2y - v1y * v2x;\n var pd2 = v3x * v4y - v3y * v4x;\n var pd3 = v1x * v3y - v1y * v3x;\n var pd4 = v2x * v4y - v2y * v4x;\n return pd1 * pd2 <= 0 && pd3 * pd4 <= 0;\n};\nvar isSegmentCrossingBBox = function isSegmentCrossingBBox(p1, p2, bbox) {\n if (bbox.width || bbox.height) {\n var _a = getPointsFromBBox(bbox),\n pa = _a[0],\n pb = _a[1],\n pc = _a[2],\n pd = _a[3];\n\n return isSegmentsIntersected(p1, p2, pa, pb) || isSegmentsIntersected(p1, p2, pa, pd) || isSegmentsIntersected(p1, p2, pb, pc) || isSegmentsIntersected(p1, p2, pc, pd);\n }\n\n return false;\n};\n/**\n * 在 points 中找到满足 x 或 y 和 point 的 x 或 y 相等,且与 point 连线不经过 bbox1 与 bbox2 的点\n */\n\nvar getNeighborPoints = function getNeighborPoints(points, point, bbox1, bbox2) {\n var neighbors = [];\n points.forEach(function (p) {\n if (p === point) return;\n\n if (p.x === point.x || p.y === point.y) {\n if (isSegmentCrossingBBox(p, point, bbox1) || isSegmentCrossingBBox(p, point, bbox2)) return;\n neighbors.push(p);\n }\n });\n return filterConnectPoints(neighbors);\n};\nvar pathFinder = function pathFinder(points, start, goal, sBBox, tBBox, os, ot) {\n // A-Star Algorithm\n var closedSet = [];\n var openSet = [start];\n var cameFrom = {};\n var gScore = {}; // all default values are Infinity\n\n var fScore = {}; // all default values are Infinity\n\n gScore[start.id] = 0;\n fScore[start.id] = heuristicCostEstimate(start, goal, start);\n var pointById = {};\n points.forEach(function (p) {\n pointById[p.id] = p;\n });\n var current, lowestFScore;\n\n while (openSet.length) {\n current = undefined;\n lowestFScore = Infinity; // 找到 openSet 中 fScore 最小的点\n\n openSet.forEach(function (p) {\n if (fScore[p.id] <= lowestFScore) {\n lowestFScore = fScore[p.id];\n current = p;\n }\n }); // 若 openSet 中 fScore 最小的点就是终点\n\n if (current === goal) {\n // ending condition\n var pathPoints = [];\n reconstructPath(pathPoints, pointById, cameFrom, goal.id);\n return pathPoints;\n }\n\n removeFrom(openSet, current);\n closedSet.push(current);\n getNeighborPoints(points, current, sBBox, tBBox).forEach(function (neighbor) {\n if (closedSet.indexOf(neighbor) !== -1) {\n return;\n }\n\n if (openSet.indexOf(neighbor) === -1) {\n openSet.push(neighbor);\n }\n\n var tentativeGScore = fScore[current.id] + distance(current, neighbor); // + distance(neighbor, goal);\n\n if (gScore[neighbor.id] && tentativeGScore >= gScore[neighbor.id]) {\n return;\n }\n\n cameFrom[neighbor.id] = current.id;\n gScore[neighbor.id] = tentativeGScore;\n fScore[neighbor.id] = gScore[neighbor.id] + heuristicCostEstimate(neighbor, goal, start, os, ot);\n });\n } // throw new Error('Cannot find path');\n\n\n return [start, goal];\n};\nvar isBending = function isBending(p0, p1, p2) {\n return !(p0.x === p1.x && p1.x === p2.x || p0.y === p1.y && p1.y === p2.y);\n};\nvar getBorderRadiusPoints = function getBorderRadiusPoints(p0, p1, p2, r) {\n var d0 = distance(p0, p1);\n var d1 = distance(p2, p1);\n\n if (d0 < r) {\n r = d0;\n }\n\n if (d1 < r) {\n r = d1;\n }\n\n var ps = {\n x: p1.x - r / d0 * (p1.x - p0.x),\n y: p1.y - r / d0 * (p1.y - p0.y)\n };\n var pt = {\n x: p1.x - r / d1 * (p1.x - p2.x),\n y: p1.y - r / d1 * (p1.y - p2.y)\n };\n return [ps, pt];\n};\nvar getPathWithBorderRadiusByPolyline = function getPathWithBorderRadiusByPolyline(points, borderRadius) {\n var pathSegments = [];\n var startPoint = points[0];\n pathSegments.push(\"M\".concat(startPoint.x, \" \").concat(startPoint.y));\n points.forEach(function (p, i) {\n var p1 = points[i + 1];\n var p2 = points[i + 2];\n\n if (p1 && p2) {\n if (isBending(p, p1, p2)) {\n var _a = getBorderRadiusPoints(p, p1, p2, borderRadius),\n ps = _a[0],\n pt = _a[1];\n\n pathSegments.push(\"L\".concat(ps.x, \" \").concat(ps.y));\n pathSegments.push(\"Q\".concat(p1.x, \" \").concat(p1.y, \" \").concat(pt.x, \" \").concat(pt.y));\n pathSegments.push(\"L\".concat(pt.x, \" \").concat(pt.y));\n } else {\n pathSegments.push(\"L\".concat(p1.x, \" \").concat(p1.y));\n }\n } else if (p1) {\n pathSegments.push(\"L\".concat(p1.x, \" \").concat(p1.y));\n }\n });\n return pathSegments.join('');\n};\nvar getPolylinePoints = function getPolylinePoints(start, end, sNode, tNode, offset) {\n var sBBox, tBBox;\n\n if (!sNode || !sNode.getType()) {\n sBBox = getBBoxFromPoint(start);\n } else if (sNode.getType() === 'combo') {\n var sNodeKeyShape = sNode.getKeyShape();\n sBBox = sNodeKeyShape.getCanvasBBox() || getBBoxFromPoint(start);\n sBBox.centerX = (sBBox.minX + sBBox.maxX) / 2;\n sBBox.centerY = (sBBox.minY + sBBox.maxY) / 2;\n } else {\n sBBox = sNode.getBBox();\n }\n\n if (!tNode || !tNode.getType()) {\n tBBox = getBBoxFromPoint(end);\n } else if (tNode.getType() === 'combo') {\n var tKeyShapeBBox = tNode.getKeyShape().getBBox();\n\n if (tKeyShapeBBox) {\n var _a = tNode.getModel(),\n tx = _a.x,\n ty = _a.y;\n\n tBBox = {\n x: tx,\n y: ty,\n width: tKeyShapeBBox.width,\n height: tKeyShapeBBox.height,\n minX: tKeyShapeBBox.minX + tx,\n maxX: tKeyShapeBBox.maxX + tx,\n minY: tKeyShapeBBox.minY + ty,\n maxY: tKeyShapeBBox.maxY + ty\n };\n tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2;\n tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2;\n } else {\n tBBox = getBBoxFromPoint(end);\n }\n } else {\n tBBox = tNode && tNode.getBBox();\n } // if (isBBoxesOverlapping(sBBox, tBBox)) {\n // // source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n\n var sxBBox = getExpandedBBox(sBBox, offset);\n var txBBox = getExpandedBBox(tBBox, offset); // if (isBBoxesOverlapping(sxBBox, txBBox)) {\n // // the expanded bounding boxes of source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n var sPoint = getExpandedBBoxPoint(sxBBox, start, end);\n var tPoint = getExpandedBBoxPoint(txBBox, end, start);\n var lineBBox = getBBoxFromPoints([sPoint, tPoint]);\n var sMixBBox = mergeBBox(sxBBox, lineBBox);\n var tMixBBox = mergeBBox(txBBox, lineBBox);\n var connectPoints = [];\n connectPoints = connectPoints.concat(getPointsFromBBox(sMixBBox)).concat(getPointsFromBBox(tMixBBox));\n var centerPoint = {\n x: (start.x + end.x) / 2,\n y: (start.y + end.y) / 2\n };\n [lineBBox, sMixBBox, tMixBBox].forEach(function (bbox) {\n connectPoints = connectPoints.concat(getBBoxCrossPointsByPoint(bbox, centerPoint).filter(function (p) {\n return isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox);\n }));\n });\n [{\n x: sPoint.x,\n y: tPoint.y\n }, {\n x: tPoint.x,\n y: sPoint.y\n }].forEach(function (p) {\n // impossible!!\n if (isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox) // &&\n // isPointInsideBBox(p, sMixBBox) && isPointInsideBBox(p, tMixBBox)\n ) {\n connectPoints.push(p);\n }\n });\n connectPoints.unshift(sPoint);\n connectPoints.push(tPoint); // filter out dulplicated points in connectPoints\n\n connectPoints = filterConnectPoints(connectPoints); // , sxBBox, txBBox, outerBBox\n\n var pathPoints = pathFinder(connectPoints, sPoint, tPoint, sBBox, tBBox, start, end);\n pathPoints.unshift(start);\n pathPoints.push(end);\n return simplifyPolyline(pathPoints);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzPzIxMzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQyxRQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLFlBQVkseUJBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZFQUE2RTs7QUFFN0U7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsNkJBQTZCOztBQUU3QixxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50ID0gZnVuY3Rpb24gZ2V0QkJveEZyb21Qb2ludChwb2ludCkge1xuICB2YXIgeCA9IHBvaW50LngsXG4gICAgICB5ID0gcG9pbnQueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgY2VudGVyWDogeCxcbiAgICBjZW50ZXJZOiB5LFxuICAgIG1pblg6IHgsXG4gICAgbWluWTogeSxcbiAgICBtYXhYOiB4LFxuICAgIG1heFk6IHksXG4gICAgaGVpZ2h0OiAwLFxuICAgIHdpZHRoOiAwXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hGcm9tUG9pbnRzKHBvaW50cykge1xuICBpZiAocG9pbnRzID09PSB2b2lkIDApIHtcbiAgICBwb2ludHMgPSBbXTtcbiAgfVxuXG4gIHZhciB4cyA9IFtdO1xuICB2YXIgeXMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICB4cy5wdXNoKHAueCk7XG4gICAgeXMucHVzaChwLnkpO1xuICB9KTtcbiAgdmFyIG1pblggPSBNYXRoLm1pbi5hcHBseShNYXRoLCB4cyk7XG4gIHZhciBtYXhYID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgeHMpO1xuICB2YXIgbWluWSA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHlzKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heC5hcHBseShNYXRoLCB5cyk7XG4gIHJldHVybiB7XG4gICAgY2VudGVyWDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgY2VudGVyWTogKG1pblkgKyBtYXhZKSAvIDIsXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIG1pblg6IG1pblgsXG4gICAgbWluWTogbWluWSxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWFxuICB9O1xufTtcbmV4cG9ydCB2YXIgaXNCQm94ZXNPdmVybGFwcGluZyA9IGZ1bmN0aW9uIGlzQkJveGVzT3ZlcmxhcHBpbmcoYjEsIGIyKSB7XG4gIHJldHVybiBNYXRoLmFicyhiMS5jZW50ZXJYIC0gYjIuY2VudGVyWCkgKiAyIDwgYjEud2lkdGggKyBiMi53aWR0aCAmJiBNYXRoLmFicyhiMS5jZW50ZXJZIC0gYjIuY2VudGVyWSkgKiAyIDwgYjEuaGVpZ2h0ICsgYjIuaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZmlsdGVyQ29ubmVjdFBvaW50cyA9IGZ1bmN0aW9uIGZpbHRlckNvbm5lY3RQb2ludHMocG9pbnRzKSB7XG4gIC8vIHByZS1wcm9jZXNzOiByZW1vdmUgZHVwbGljYXRlZCBwb2ludHNcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgcG9pbnRzTWFwID0ge307XG4gIHZhciBwb2ludHNMZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHNMZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHAuaWQgPSBcIlwiLmNvbmNhdChwLngsIFwifHx8XCIpLmNvbmNhdChwLnkpO1xuICAgIHBvaW50c01hcFtwLmlkXSA9IHA7XG4gICAgcmVzdWx0LnB1c2gocCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgc2ltcGxpZnlQb2x5bGluZSA9IGZ1bmN0aW9uIHNpbXBsaWZ5UG9seWxpbmUocG9pbnRzKSB7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKHBvaW50cyk7XG59O1xuZXhwb3J0IHZhciBnZXRTaW1wbGVQb2x5bGluZSA9IGZ1bmN0aW9uIGdldFNpbXBsZVBvbHlsaW5lKHNQb2ludCwgdFBvaW50KSB7XG4gIHJldHVybiBbc1BvaW50LCB7XG4gICAgeDogc1BvaW50LngsXG4gICAgeTogdFBvaW50LnlcbiAgfSwgdFBvaW50XTtcbn07XG5leHBvcnQgdmFyIGdldEV4cGFuZGVkQkJveCA9IGZ1bmN0aW9uIGdldEV4cGFuZGVkQkJveChiYm94LCBvZmZzZXQpIHtcbiAgaWYgKGJib3gud2lkdGggfHwgYmJveC5oZWlnaHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2VudGVyWDogYmJveC5jZW50ZXJYLFxuICAgICAgY2VudGVyWTogYmJveC5jZW50ZXJZLFxuICAgICAgbWluWDogYmJveC5taW5YIC0gb2Zmc2V0LFxuICAgICAgbWluWTogYmJveC5taW5ZIC0gb2Zmc2V0LFxuICAgICAgbWF4WDogYmJveC5tYXhYICsgb2Zmc2V0LFxuICAgICAgbWF4WTogYmJveC5tYXhZICsgb2Zmc2V0LFxuICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodCArIDIgKiBvZmZzZXQsXG4gICAgICB3aWR0aDogYmJveC53aWR0aCArIDIgKiBvZmZzZXRcbiAgICB9O1xuICB9IC8vIHdoZW4gaXQgaXMgYSBwb2ludFxuXG5cbiAgcmV0dXJuIGJib3g7XG59O1xuZXhwb3J0IHZhciBpc0hvcml6b250YWxQb3J0ID0gZnVuY3Rpb24gaXNIb3Jpem9udGFsUG9ydChwb3J0LCBiYm94KSB7XG4gIHZhciBkeCA9IE1hdGguYWJzKHBvcnQueCAtIGJib3guY2VudGVyWCk7XG4gIHZhciBkeSA9IE1hdGguYWJzKHBvcnQueSAtIGJib3guY2VudGVyWSk7XG4gIGlmIChkeCA9PT0gMCAmJiBkeSA9PT0gMCkgcmV0dXJuIDA7XG4gIHJldHVybiBkeCAvIGJib3gud2lkdGggPiBkeSAvIGJib3guaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZ2V0RXhwYW5kZWRCQm94UG9pbnQgPSBmdW5jdGlvbiBnZXRFeHBhbmRlZEJCb3hQb2ludChiYm94LCAvLyDlsIbljp/mnaXoioLngrkgYmJveCDmianlsZXkuoYgb2Zmc2V0IOWQjueahCBiYm9477yM5LiU6KKrIGdyaWRTaXplIOagvOW8j+WMllxucG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxuYW5vdGhlclBvaW50KSB7XG4gIHZhciBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxQb3J0KHBvaW50LCBiYm94KTtcblxuICBpZiAoaXNIb3Jpem9udGFsID09PSAwKSB7XG4gICAgLy8g6K+05piO6ZSa54K55piv6IqC54K55Lit5b+D77yMbGlua0NlbnRlcjogdHJ1ZeOAgumcgOimgeagueaNruS4pOS4quiKgueCueeahOebuOWvueWFs+ezu+WGs+WumuaWueWQkVxuICAgIHZhciB4ID0gYmJveC5jZW50ZXJYO1xuICAgIHZhciB5ID0gYmJveC5jZW50ZXJZO1xuXG4gICAgaWYgKGFub3RoZXJQb2ludC55IDwgcG9pbnQueSkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5bem5LiKL+WPs+S4iuaWueaXtu+8jOaAu+aYr+S7juS4iuaWuei1sFxuICAgICAgeSA9IGJib3gubWluWTtcbiAgICB9IGVsc2UgaWYgKGFub3RoZXJQb2ludC54ID4gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5Y+z5LiL5pa577yM5b6A5Y+z6L656LWwXG4gICAgICB4ID0gYmJveC5tYXhYO1xuICAgIH0gZWxzZSBpZiAoYW5vdGhlclBvaW50LnggPCBwb2ludC54KSB7XG4gICAgICAvLyDlj6bkuIDnq6/lnKjlt6bkuIvmlrnvvIzlvoDlt6bovrnotbBcbiAgICAgIHggPSBiYm94Lm1pblg7XG4gICAgfSBlbHNlIGlmIChhbm90aGVyUG9pbnQueCA9PT0gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA5q615Zyo5q2j5LiL5pa577yM5b6A5LiL6LWwXG4gICAgICB5ID0gYmJveC5tYXhZO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG4gIH1cblxuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LnggPiBiYm94LmNlbnRlclggPyBiYm94Lm1heFggOiBiYm94Lm1pblgsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcG9pbnQueCxcbiAgICB5OiBwb2ludC55ID4gYmJveC5jZW50ZXJZID8gYmJveC5tYXhZIDogYmJveC5taW5ZXG4gIH07XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGIxXG4gKiBAcGFyYW0gYjJcbiAqL1xuXG5leHBvcnQgdmFyIG1lcmdlQkJveCA9IGZ1bmN0aW9uIG1lcmdlQkJveChiMSwgYjIpIHtcbiAgdmFyIG1pblggPSBNYXRoLm1pbihiMS5taW5YLCBiMi5taW5YKTtcbiAgdmFyIG1pblkgPSBNYXRoLm1pbihiMS5taW5ZLCBiMi5taW5ZKTtcbiAgdmFyIG1heFggPSBNYXRoLm1heChiMS5tYXhYLCBiMi5tYXhYKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heChiMS5tYXhZLCBiMi5tYXhZKTtcbiAgcmV0dXJuIHtcbiAgICBjZW50ZXJYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBjZW50ZXJZOiAobWluWSArIG1heFkpIC8gMixcbiAgICBtaW5YOiBtaW5YLFxuICAgIG1pblk6IG1pblksXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRQb2ludHNGcm9tQkJveCA9IGZ1bmN0aW9uIGdldFBvaW50c0Zyb21CQm94KGJib3gpIHtcbiAgLy8gYW50aWNsb2Nrd2lzZVxuICAvLyBjb25zdCB7IG1pblgsIG1pblksIG1heFgsIG1heFkgfSA9IGJib3g7XG4gIHJldHVybiBbe1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfSwge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfV07XG59O1xuZXhwb3J0IHZhciBpc1BvaW50T3V0c2lkZUJCb3ggPSBmdW5jdGlvbiBpc1BvaW50T3V0c2lkZUJCb3gocG9pbnQsIGJib3gpIHtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHJldHVybiB4IDwgYmJveC5taW5YIHx8IHggPiBiYm94Lm1heFggfHwgeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFhDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgeCkge1xuICBpZiAoeCA8IGJib3gubWluWCB8fCB4ID4gYmJveC5tYXhYKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogeCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IHgsXG4gICAgeTogYmJveC5tYXhZXG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFlDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgeSkge1xuICBpZiAoeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogYmJveC5taW5YLFxuICAgIHk6IHlcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiB5XG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveENyb3NzUG9pbnRzQnlQb2ludCA9IGZ1bmN0aW9uIGdldEJCb3hDcm9zc1BvaW50c0J5UG9pbnQoYmJveCwgcG9pbnQpIHtcbiAgcmV0dXJuIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueCkuY29uY2F0KGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueSkpO1xufTtcbi8qKlxuICog5pu85ZOI6aG/6Led56a7XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5hYnMocDEueCAtIHAyLngpICsgTWF0aC5hYnMocDEueSAtIHAyLnkpO1xufTtcbi8qKlxuICog5aaC5p6cIHBvaW50cyDkuK3nmoTkuIDkuKroioLngrkgeCDkuI4gcCDnm7jnrYnvvIzliJnmtojogJcgLTLjgIJ5IOWQjFxuICog5Y2z5LyY5YWI6YCJ5oup5ZKMIHBvaW50cyDlnKjlkIzkuIDmsLTlubPnur8gLyDlnoLnm7Tnur/kuIrnmoTngrlcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuXG5leHBvcnQgdmFyIF9jb3N0QnlQb2ludHMgPSBmdW5jdGlvbiBfY29zdEJ5UG9pbnRzKHAsIHBvaW50cykge1xuICB2YXIgb2Zmc2V0ID0gLTI7XG4gIHZhciByZXN1bHQgPSAwO1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAocG9pbnQpIHtcbiAgICAgIGlmIChwLnggPT09IHBvaW50LngpIHtcbiAgICAgICAgcmVzdWx0ICs9IG9mZnNldDtcbiAgICAgIH1cblxuICAgICAgaWYgKHAueSA9PT0gcG9pbnQueSkge1xuICAgICAgICByZXN1bHQgKz0gb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBwcyDnu4/ov4cgcCDliLAgcHQg55qE6Led56a777yM5YeP5Y675YW25LuW6Lev6L+H6IqC54K56YCg5oiQ55qE5raI6ICXXG4gKi9cblxuZXhwb3J0IHZhciBoZXVyaXN0aWNDb3N0RXN0aW1hdGUgPSBmdW5jdGlvbiBoZXVyaXN0aWNDb3N0RXN0aW1hdGUocCwgcHMsIHB0LCBzb3VyY2UsIHRhcmdldCkge1xuICByZXR1cm4gZGlzdGFuY2UocCwgcHMpICsgZGlzdGFuY2UocCwgcHQpICsgX2Nvc3RCeVBvaW50cyhwLCBbcHMsIHB0LCBzb3VyY2UsIHRhcmdldF0pO1xufTtcbmV4cG9ydCB2YXIgcmVjb25zdHJ1Y3RQYXRoID0gZnVuY3Rpb24gcmVjb25zdHJ1Y3RQYXRoKHBhdGhQb2ludHMsIHBvaW50QnlJZCwgY2FtZUZyb20sIGN1cnJlbnRJZCwgaXRlcmF0b3IpIHtcbiAgaWYgKGl0ZXJhdG9yID09PSB2b2lkIDApIHtcbiAgICBpdGVyYXRvciA9IDA7XG4gIH1cblxuICBwYXRoUG9pbnRzLnVuc2hpZnQocG9pbnRCeUlkW2N1cnJlbnRJZF0pO1xuXG4gIGlmIChjYW1lRnJvbVtjdXJyZW50SWRdICYmIGNhbWVGcm9tW2N1cnJlbnRJZF0gIT09IGN1cnJlbnRJZCAmJiBpdGVyYXRvciA8PSAxMDApIHtcbiAgICByZWNvbnN0cnVjdFBhdGgocGF0aFBvaW50cywgcG9pbnRCeUlkLCBjYW1lRnJvbSwgY2FtZUZyb21bY3VycmVudElkXSwgaXRlcmF0b3IgKyAxKTtcbiAgfVxufTtcbi8qKlxuICog5LuOIGFyciDkuK3liKDljrsgaXRlbVxuICovXG5cbmV4cG9ydCB2YXIgcmVtb3ZlRnJvbSA9IGZ1bmN0aW9uIHJlbW92ZUZyb20oYXJyLCBpdGVtKSB7XG4gIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGlzU2VnbWVudHNJbnRlcnNlY3RlZCA9IGZ1bmN0aW9uIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdjF4ID0gcDIueCAtIHAwLng7XG4gIHZhciB2MXkgPSBwMi55IC0gcDAueTtcbiAgdmFyIHYyeCA9IHAzLnggLSBwMC54O1xuICB2YXIgdjJ5ID0gcDMueSAtIHAwLnk7XG4gIHZhciB2M3ggPSBwMi54IC0gcDEueDtcbiAgdmFyIHYzeSA9IHAyLnkgLSBwMS55O1xuICB2YXIgdjR4ID0gcDMueCAtIHAxLng7XG4gIHZhciB2NHkgPSBwMy55IC0gcDEueTtcbiAgdmFyIHBkMSA9IHYxeCAqIHYyeSAtIHYxeSAqIHYyeDtcbiAgdmFyIHBkMiA9IHYzeCAqIHY0eSAtIHYzeSAqIHY0eDtcbiAgdmFyIHBkMyA9IHYxeCAqIHYzeSAtIHYxeSAqIHYzeDtcbiAgdmFyIHBkNCA9IHYyeCAqIHY0eSAtIHYyeSAqIHY0eDtcbiAgcmV0dXJuIHBkMSAqIHBkMiA8PSAwICYmIHBkMyAqIHBkNCA8PSAwO1xufTtcbmV4cG9ydCB2YXIgaXNTZWdtZW50Q3Jvc3NpbmdCQm94ID0gZnVuY3Rpb24gaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAxLCBwMiwgYmJveCkge1xuICBpZiAoYmJveC53aWR0aCB8fCBiYm94LmhlaWdodCkge1xuICAgIHZhciBfYSA9IGdldFBvaW50c0Zyb21CQm94KGJib3gpLFxuICAgICAgICBwYSA9IF9hWzBdLFxuICAgICAgICBwYiA9IF9hWzFdLFxuICAgICAgICBwYyA9IF9hWzJdLFxuICAgICAgICBwZCA9IF9hWzNdO1xuXG4gICAgcmV0dXJuIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBhLCBwYikgfHwgaXNTZWdtZW50c0ludGVyc2VjdGVkKHAxLCBwMiwgcGEsIHBkKSB8fCBpc1NlZ21lbnRzSW50ZXJzZWN0ZWQocDEsIHAyLCBwYiwgcGMpIHx8IGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBjLCBwZCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDlnKggcG9pbnRzIOS4reaJvuWIsOa7oei2syB4IOaIliB5IOWSjCBwb2ludCDnmoQgeCDmiJYgeSDnm7jnrYnvvIzkuJTkuI4gcG9pbnQg6L+e57q/5LiN57uP6L+HIGJib3gxIOS4jiBiYm94MiDnmoTngrlcbiAqL1xuXG5leHBvcnQgdmFyIGdldE5laWdoYm9yUG9pbnRzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBwb2ludCwgYmJveDEsIGJib3gyKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICBpZiAocCA9PT0gcG9pbnQpIHJldHVybjtcblxuICAgIGlmIChwLnggPT09IHBvaW50LnggfHwgcC55ID09PSBwb2ludC55KSB7XG4gICAgICBpZiAoaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MSkgfHwgaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MikpIHJldHVybjtcbiAgICAgIG5laWdoYm9ycy5wdXNoKHApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKG5laWdoYm9ycyk7XG59O1xuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihwb2ludHMsIHN0YXJ0LCBnb2FsLCBzQkJveCwgdEJCb3gsIG9zLCBvdCkge1xuICAvLyBBLVN0YXIgQWxnb3JpdGhtXG4gIHZhciBjbG9zZWRTZXQgPSBbXTtcbiAgdmFyIG9wZW5TZXQgPSBbc3RhcnRdO1xuICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgdmFyIGdTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgZ1Njb3JlW3N0YXJ0LmlkXSA9IDA7XG4gIGZTY29yZVtzdGFydC5pZF0gPSBoZXVyaXN0aWNDb3N0RXN0aW1hdGUoc3RhcnQsIGdvYWwsIHN0YXJ0KTtcbiAgdmFyIHBvaW50QnlJZCA9IHt9O1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgIHBvaW50QnlJZFtwLmlkXSA9IHA7XG4gIH0pO1xuICB2YXIgY3VycmVudCwgbG93ZXN0RlNjb3JlO1xuXG4gIHdoaWxlIChvcGVuU2V0Lmxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgbG93ZXN0RlNjb3JlID0gSW5maW5pdHk7IC8vIOaJvuWIsCBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K5XG5cbiAgICBvcGVuU2V0LmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgIGlmIChmU2NvcmVbcC5pZF0gPD0gbG93ZXN0RlNjb3JlKSB7XG4gICAgICAgIGxvd2VzdEZTY29yZSA9IGZTY29yZVtwLmlkXTtcbiAgICAgICAgY3VycmVudCA9IHA7XG4gICAgICB9XG4gICAgfSk7IC8vIOiLpSBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K55bCx5piv57uI54K5XG5cbiAgICBpZiAoY3VycmVudCA9PT0gZ29hbCkge1xuICAgICAgLy8gZW5kaW5nIGNvbmRpdGlvblxuICAgICAgdmFyIHBhdGhQb2ludHMgPSBbXTtcbiAgICAgIHJlY29uc3RydWN0UGF0aChwYXRoUG9pbnRzLCBwb2ludEJ5SWQsIGNhbWVGcm9tLCBnb2FsLmlkKTtcbiAgICAgIHJldHVybiBwYXRoUG9pbnRzO1xuICAgIH1cblxuICAgIHJlbW92ZUZyb20ob3BlblNldCwgY3VycmVudCk7XG4gICAgY2xvc2VkU2V0LnB1c2goY3VycmVudCk7XG4gICAgZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBjdXJyZW50LCBzQkJveCwgdEJCb3gpLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yKSB7XG4gICAgICBpZiAoY2xvc2VkU2V0LmluZGV4T2YobmVpZ2hib3IpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuU2V0LmluZGV4T2YobmVpZ2hib3IpID09PSAtMSkge1xuICAgICAgICBvcGVuU2V0LnB1c2gobmVpZ2hib3IpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGVudGF0aXZlR1Njb3JlID0gZlNjb3JlW2N1cnJlbnQuaWRdICsgZGlzdGFuY2UoY3VycmVudCwgbmVpZ2hib3IpOyAvLyArIGRpc3RhbmNlKG5laWdoYm9yLCBnb2FsKTtcblxuICAgICAgaWYgKGdTY29yZVtuZWlnaGJvci5pZF0gJiYgdGVudGF0aXZlR1Njb3JlID49IGdTY29yZVtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYW1lRnJvbVtuZWlnaGJvci5pZF0gPSBjdXJyZW50LmlkO1xuICAgICAgZ1Njb3JlW25laWdoYm9yLmlkXSA9IHRlbnRhdGl2ZUdTY29yZTtcbiAgICAgIGZTY29yZVtuZWlnaGJvci5pZF0gPSBnU2NvcmVbbmVpZ2hib3IuaWRdICsgaGV1cmlzdGljQ29zdEVzdGltYXRlKG5laWdoYm9yLCBnb2FsLCBzdGFydCwgb3MsIG90KTtcbiAgICB9KTtcbiAgfSAvLyB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIHBhdGgnKTtcblxuXG4gIHJldHVybiBbc3RhcnQsIGdvYWxdO1xufTtcbmV4cG9ydCB2YXIgaXNCZW5kaW5nID0gZnVuY3Rpb24gaXNCZW5kaW5nKHAwLCBwMSwgcDIpIHtcbiAgcmV0dXJuICEocDAueCA9PT0gcDEueCAmJiBwMS54ID09PSBwMi54IHx8IHAwLnkgPT09IHAxLnkgJiYgcDEueSA9PT0gcDIueSk7XG59O1xuZXhwb3J0IHZhciBnZXRCb3JkZXJSYWRpdXNQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3JkZXJSYWRpdXNQb2ludHMocDAsIHAxLCBwMiwgcikge1xuICB2YXIgZDAgPSBkaXN0YW5jZShwMCwgcDEpO1xuICB2YXIgZDEgPSBkaXN0YW5jZShwMiwgcDEpO1xuXG4gIGlmIChkMCA8IHIpIHtcbiAgICByID0gZDA7XG4gIH1cblxuICBpZiAoZDEgPCByKSB7XG4gICAgciA9IGQxO1xuICB9XG5cbiAgdmFyIHBzID0ge1xuICAgIHg6IHAxLnggLSByIC8gZDAgKiAocDEueCAtIHAwLngpLFxuICAgIHk6IHAxLnkgLSByIC8gZDAgKiAocDEueSAtIHAwLnkpXG4gIH07XG4gIHZhciBwdCA9IHtcbiAgICB4OiBwMS54IC0gciAvIGQxICogKHAxLnggLSBwMi54KSxcbiAgICB5OiBwMS55IC0gciAvIGQxICogKHAxLnkgLSBwMi55KVxuICB9O1xuICByZXR1cm4gW3BzLCBwdF07XG59O1xuZXhwb3J0IHZhciBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUgPSBmdW5jdGlvbiBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9pbnRzLCBib3JkZXJSYWRpdXMpIHtcbiAgdmFyIHBhdGhTZWdtZW50cyA9IFtdO1xuICB2YXIgc3RhcnRQb2ludCA9IHBvaW50c1swXTtcbiAgcGF0aFNlZ21lbnRzLnB1c2goXCJNXCIuY29uY2F0KHN0YXJ0UG9pbnQueCwgXCIgXCIpLmNvbmNhdChzdGFydFBvaW50LnkpKTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHAsIGkpIHtcbiAgICB2YXIgcDEgPSBwb2ludHNbaSArIDFdO1xuICAgIHZhciBwMiA9IHBvaW50c1tpICsgMl07XG5cbiAgICBpZiAocDEgJiYgcDIpIHtcbiAgICAgIGlmIChpc0JlbmRpbmcocCwgcDEsIHAyKSkge1xuICAgICAgICB2YXIgX2EgPSBnZXRCb3JkZXJSYWRpdXNQb2ludHMocCwgcDEsIHAyLCBib3JkZXJSYWRpdXMpLFxuICAgICAgICAgICAgcHMgPSBfYVswXSxcbiAgICAgICAgICAgIHB0ID0gX2FbMV07XG5cbiAgICAgICAgcGF0aFNlZ21lbnRzLnB1c2goXCJMXCIuY29uY2F0KHBzLngsIFwiIFwiKS5jb25jYXQocHMueSkpO1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIlFcIi5jb25jYXQocDEueCwgXCIgXCIpLmNvbmNhdChwMS55LCBcIiBcIikuY29uY2F0KHB0LngsIFwiIFwiKS5jb25jYXQocHQueSkpO1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIkxcIi5jb25jYXQocHQueCwgXCIgXCIpLmNvbmNhdChwdC55KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIkxcIi5jb25jYXQocDEueCwgXCIgXCIpLmNvbmNhdChwMS55KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwMSkge1xuICAgICAgcGF0aFNlZ21lbnRzLnB1c2goXCJMXCIuY29uY2F0KHAxLngsIFwiIFwiKS5jb25jYXQocDEueSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwYXRoU2VnbWVudHMuam9pbignJyk7XG59O1xuZXhwb3J0IHZhciBnZXRQb2x5bGluZVBvaW50cyA9IGZ1bmN0aW9uIGdldFBvbHlsaW5lUG9pbnRzKHN0YXJ0LCBlbmQsIHNOb2RlLCB0Tm9kZSwgb2Zmc2V0KSB7XG4gIHZhciBzQkJveCwgdEJCb3g7XG5cbiAgaWYgKCFzTm9kZSB8fCAhc05vZGUuZ2V0VHlwZSgpKSB7XG4gICAgc0JCb3ggPSBnZXRCQm94RnJvbVBvaW50KHN0YXJ0KTtcbiAgfSBlbHNlIGlmIChzTm9kZS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICB2YXIgc05vZGVLZXlTaGFwZSA9IHNOb2RlLmdldEtleVNoYXBlKCk7XG4gICAgc0JCb3ggPSBzTm9kZUtleVNoYXBlLmdldENhbnZhc0JCb3goKSB8fCBnZXRCQm94RnJvbVBvaW50KHN0YXJ0KTtcbiAgICBzQkJveC5jZW50ZXJYID0gKHNCQm94Lm1pblggKyBzQkJveC5tYXhYKSAvIDI7XG4gICAgc0JCb3guY2VudGVyWSA9IChzQkJveC5taW5ZICsgc0JCb3gubWF4WSkgLyAyO1xuICB9IGVsc2Uge1xuICAgIHNCQm94ID0gc05vZGUuZ2V0QkJveCgpO1xuICB9XG5cbiAgaWYgKCF0Tm9kZSB8fCAhdE5vZGUuZ2V0VHlwZSgpKSB7XG4gICAgdEJCb3ggPSBnZXRCQm94RnJvbVBvaW50KGVuZCk7XG4gIH0gZWxzZSBpZiAodE5vZGUuZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgdmFyIHRLZXlTaGFwZUJCb3ggPSB0Tm9kZS5nZXRLZXlTaGFwZSgpLmdldEJCb3goKTtcblxuICAgIGlmICh0S2V5U2hhcGVCQm94KSB7XG4gICAgICB2YXIgX2EgPSB0Tm9kZS5nZXRNb2RlbCgpLFxuICAgICAgICAgIHR4ID0gX2EueCxcbiAgICAgICAgICB0eSA9IF9hLnk7XG5cbiAgICAgIHRCQm94ID0ge1xuICAgICAgICB4OiB0eCxcbiAgICAgICAgeTogdHksXG4gICAgICAgIHdpZHRoOiB0S2V5U2hhcGVCQm94LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRLZXlTaGFwZUJCb3guaGVpZ2h0LFxuICAgICAgICBtaW5YOiB0S2V5U2hhcGVCQm94Lm1pblggKyB0eCxcbiAgICAgICAgbWF4WDogdEtleVNoYXBlQkJveC5tYXhYICsgdHgsXG4gICAgICAgIG1pblk6IHRLZXlTaGFwZUJCb3gubWluWSArIHR5LFxuICAgICAgICBtYXhZOiB0S2V5U2hhcGVCQm94Lm1heFkgKyB0eVxuICAgICAgfTtcbiAgICAgIHRCQm94LmNlbnRlclggPSAodEJCb3gubWluWCArIHRCQm94Lm1heFgpIC8gMjtcbiAgICAgIHRCQm94LmNlbnRlclkgPSAodEJCb3gubWluWSArIHRCQm94Lm1heFkpIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdEJCb3ggPSBnZXRCQm94RnJvbVBvaW50KGVuZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRCQm94ID0gdE5vZGUgJiYgdE5vZGUuZ2V0QkJveCgpO1xuICB9IC8vIGlmIChpc0JCb3hlc092ZXJsYXBwaW5nKHNCQm94LCB0QkJveCkpIHtcbiAgLy8gICAvLyBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhcmUgb3ZlcmxhcHBpbmdcbiAgLy8gICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRTaW1wbGVQb2x5bGluZShzdGFydCwgZW5kKSk7XG4gIC8vIH1cblxuXG4gIHZhciBzeEJCb3ggPSBnZXRFeHBhbmRlZEJCb3goc0JCb3gsIG9mZnNldCk7XG4gIHZhciB0eEJCb3ggPSBnZXRFeHBhbmRlZEJCb3godEJCb3gsIG9mZnNldCk7IC8vIGlmIChpc0JCb3hlc092ZXJsYXBwaW5nKHN4QkJveCwgdHhCQm94KSkge1xuICAvLyAgIC8vIHRoZSBleHBhbmRlZCBib3VuZGluZyBib3hlcyBvZiBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhcmUgb3ZlcmxhcHBpbmdcbiAgLy8gICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRTaW1wbGVQb2x5bGluZShzdGFydCwgZW5kKSk7XG4gIC8vIH1cblxuICB2YXIgc1BvaW50ID0gZ2V0RXhwYW5kZWRCQm94UG9pbnQoc3hCQm94LCBzdGFydCwgZW5kKTtcbiAgdmFyIHRQb2ludCA9IGdldEV4cGFuZGVkQkJveFBvaW50KHR4QkJveCwgZW5kLCBzdGFydCk7XG4gIHZhciBsaW5lQkJveCA9IGdldEJCb3hGcm9tUG9pbnRzKFtzUG9pbnQsIHRQb2ludF0pO1xuICB2YXIgc01peEJCb3ggPSBtZXJnZUJCb3goc3hCQm94LCBsaW5lQkJveCk7XG4gIHZhciB0TWl4QkJveCA9IG1lcmdlQkJveCh0eEJCb3gsIGxpbmVCQm94KTtcbiAgdmFyIGNvbm5lY3RQb2ludHMgPSBbXTtcbiAgY29ubmVjdFBvaW50cyA9IGNvbm5lY3RQb2ludHMuY29uY2F0KGdldFBvaW50c0Zyb21CQm94KHNNaXhCQm94KSkuY29uY2F0KGdldFBvaW50c0Zyb21CQm94KHRNaXhCQm94KSk7XG4gIHZhciBjZW50ZXJQb2ludCA9IHtcbiAgICB4OiAoc3RhcnQueCArIGVuZC54KSAvIDIsXG4gICAgeTogKHN0YXJ0LnkgKyBlbmQueSkgLyAyXG4gIH07XG4gIFtsaW5lQkJveCwgc01peEJCb3gsIHRNaXhCQm94XS5mb3JFYWNoKGZ1bmN0aW9uIChiYm94KSB7XG4gICAgY29ubmVjdFBvaW50cyA9IGNvbm5lY3RQb2ludHMuY29uY2F0KGdldEJCb3hDcm9zc1BvaW50c0J5UG9pbnQoYmJveCwgY2VudGVyUG9pbnQpLmZpbHRlcihmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIGlzUG9pbnRPdXRzaWRlQkJveChwLCBzeEJCb3gpICYmIGlzUG9pbnRPdXRzaWRlQkJveChwLCB0eEJCb3gpO1xuICAgIH0pKTtcbiAgfSk7XG4gIFt7XG4gICAgeDogc1BvaW50LngsXG4gICAgeTogdFBvaW50LnlcbiAgfSwge1xuICAgIHg6IHRQb2ludC54LFxuICAgIHk6IHNQb2ludC55XG4gIH1dLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAvLyBpbXBvc3NpYmxlISFcbiAgICBpZiAoaXNQb2ludE91dHNpZGVCQm94KHAsIHN4QkJveCkgJiYgaXNQb2ludE91dHNpZGVCQm94KHAsIHR4QkJveCkgLy8gJiZcbiAgICAvLyBpc1BvaW50SW5zaWRlQkJveChwLCBzTWl4QkJveCkgJiYgaXNQb2ludEluc2lkZUJCb3gocCwgdE1peEJCb3gpXG4gICAgKSB7XG4gICAgICBjb25uZWN0UG9pbnRzLnB1c2gocCk7XG4gICAgfVxuICB9KTtcbiAgY29ubmVjdFBvaW50cy51bnNoaWZ0KHNQb2ludCk7XG4gIGNvbm5lY3RQb2ludHMucHVzaCh0UG9pbnQpOyAvLyBmaWx0ZXIgb3V0IGR1bHBsaWNhdGVkIHBvaW50cyBpbiBjb25uZWN0UG9pbnRzXG5cbiAgY29ubmVjdFBvaW50cyA9IGZpbHRlckNvbm5lY3RQb2ludHMoY29ubmVjdFBvaW50cyk7IC8vICwgc3hCQm94LCB0eEJCb3gsIG91dGVyQkJveFxuXG4gIHZhciBwYXRoUG9pbnRzID0gcGF0aEZpbmRlcihjb25uZWN0UG9pbnRzLCBzUG9pbnQsIHRQb2ludCwgc0JCb3gsIHRCQm94LCBzdGFydCwgZW5kKTtcbiAgcGF0aFBvaW50cy51bnNoaWZ0KHN0YXJ0KTtcbiAgcGF0aFBvaW50cy5wdXNoKGVuZCk7XG4gIHJldHVybiBzaW1wbGlmeVBvbHlsaW5lKHBhdGhQb2ludHMpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/polyline-util.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/edges/polyline.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g6-element/es/edges/polyline.js ***!
\************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/@antv/g6-element/es/edges/polyline-util.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./router */ \"./node_modules/@antv/g6-element/es/edges/router.js\");\n\n\n\n\n // 折线\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerEdge\"])('polyline', {\n options: {\n color: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.color,\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.size,\n style: {\n radius: 0,\n offset: 15,\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.stroke,\n lineAppendWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.lineAppendWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n routeCfg: {\n obstacles: [],\n maxAllowedDirectionChange: Math.PI,\n maximumLoops: 500,\n gridSize: 10 // 指定精度\n\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeStateStyles)\n },\n shapeType: 'polyline',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n if (shapeStyle.radius === 0) delete shapeStyle.radius;\n var keyShape = group.addShape('path', {\n className: 'edge-shape',\n name: 'edge-shape',\n attrs: shapeStyle\n });\n group['shapeMap']['edge-shape'] = keyShape;\n return keyShape;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n };\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n cfg = this.getPathPoints(cfg);\n this.radius = style.radius;\n this.offset = style.offset;\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = style.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = style.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style, style, {\n lineWidth: cfg.size,\n path: path\n });\n return attrs;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n if (!item.isVisible()) return;\n var strokeStyle = {\n stroke: cfg.color\n };\n var shape = group['shapeMap']['edge-shape'] || group.find(function (element) {\n return element.get('className') === 'edge-shape';\n }) || item.getKeyShape();\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr();\n var previousStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, strokeStyle, currentAttr, cfg.style);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = previousStyle.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = previousStyle.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(strokeStyle, shape.attr(), {\n lineWidth: size,\n path: path\n }, cfg.style);\n\n if (shape) {\n shape.attr(style);\n }\n },\n getPath: function getPath(points, source, target, radius, routeCfg) {\n var offset = routeCfg.offset,\n simple = routeCfg.simple; // 指定了控制点\n\n if (!offset || points.length > 2) {\n if (radius) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(points, radius);\n }\n\n var pathArray_1 = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n pathArray_1.push(['M', point.x, point.y]);\n } else {\n pathArray_1.push(['L', point.x, point.y]);\n }\n });\n return pathArray_1;\n } // 未指定控制点\n\n\n var polylinePoints = simple ? Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPolylinePoints\"])(points[points.length - 1], points[0], target, source, offset) : Object(_router__WEBPACK_IMPORTED_MODULE_4__[\"pathFinder\"])(points[0], points[points.length - 1], source, target, routeCfg);\n if (!polylinePoints || !polylinePoints.length) return 'M0 0, L0 0';\n\n if (radius) {\n var res_1 = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(polylinePoints, radius);\n return res_1;\n }\n\n var res = _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"Util\"].pointsToPolygon(polylinePoints);\n return res;\n }\n}, 'single-edge');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS5qcz9mYTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN5QjtBQUNlO0FBQ2M7QUFDakQ7O0FBRXRDLGtFQUFZO0FBQ1o7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsdUJBQXVCLHdEQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7QUFDQTs7QUFFQSxRQUFRLDBEQUFPLDhCQUE4QiwyREFBUTtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUcsR0FBRyxFQUFFLHdEQUFNO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFHLEdBQUc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQUcsR0FBRztBQUN6QjtBQUNBOztBQUVBLFFBQVEsMERBQU8sOEJBQThCLDJEQUFRO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUc7QUFDbkI7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxlQUFlLHdGQUFpQztBQUNoRDs7QUFFQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTCxrQ0FBa0Msd0VBQWlCLGlFQUFpRSwwREFBVTtBQUM5SDs7QUFFQTtBQUNBLGtCQUFrQix3RkFBaUM7QUFDbkQ7QUFDQTs7QUFFQSxjQUFjLGtEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvZWRnZXMvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWl4LCBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFZGdlLCBVdGlsLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZ2V0UGF0aFdpdGhCb3JkZXJSYWRpdXNCeVBvbHlsaW5lLCBnZXRQb2x5bGluZVBvaW50cyB9IGZyb20gJy4vcG9seWxpbmUtdXRpbCc7XG5pbXBvcnQgeyBwYXRoRmluZGVyIH0gZnJvbSAnLi9yb3V0ZXInOyAvLyDmipjnur9cblxucmVnaXN0ZXJFZGdlKCdwb2x5bGluZScsIHtcbiAgb3B0aW9uczoge1xuICAgIGNvbG9yOiBHbG9iYWwuZGVmYXVsdEVkZ2UuY29sb3IsXG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHRFZGdlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHJhZGl1czogMCxcbiAgICAgIG9mZnNldDogMTUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGxpbmVBcHBlbmRXaWR0aDogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLmxpbmVBcHBlbmRXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICByb3V0ZUNmZzoge1xuICAgICAgb2JzdGFjbGVzOiBbXSxcbiAgICAgIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEksXG4gICAgICBtYXhpbXVtTG9vcHM6IDUwMCxcbiAgICAgIGdyaWRTaXplOiAxMCAvLyDmjIflrprnsr7luqZcblxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwuZWRnZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdwb2x5bGluZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgaWYgKHNoYXBlU3R5bGUucmFkaXVzID09PSAwKSBkZWxldGUgc2hhcGVTdHlsZS5yYWRpdXM7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIG5hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdGhpcy5yYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdGhpcy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdmFyIGRlZmF1bHRSb3V0ZUNmZyA9IHRoaXMub3B0aW9ucy5yb3V0ZUNmZztcbiAgICB2YXIgcm91dGVDZmcgPSBtaXgoe30sIGRlZmF1bHRSb3V0ZUNmZywgY2ZnLnJvdXRlQ2ZnKTtcbiAgICByb3V0ZUNmZy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGgocG9pbnRzLCBzb3VyY2UsIHRhcmdldCwgcmFkaXVzLCByb3V0ZUNmZyk7XG5cbiAgICBpZiAoaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA8PSAxIHx8IGlzU3RyaW5nKHBhdGgpICYmIHBhdGguaW5kZXhPZignTCcpID09PSAtMSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4oc3RhcnRQb2ludC54KSB8fCBpc05hTihzdGFydFBvaW50LnkpIHx8IGlzTmFOKGVuZFBvaW50LngpIHx8IGlzTmFOKGVuZFBvaW50LnkpKSB7XG4gICAgICBwYXRoID0gJ00wIDAsIEwwIDAnO1xuICAgIH1cblxuICAgIHZhciBhdHRycyA9IG1peCh7fSwgR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLCBzdHlsZSwge1xuICAgICAgbGluZVdpZHRoOiBjZmcuc2l6ZSxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgICByZXR1cm4gYXR0cnM7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIHJldHVybjtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07XG4gICAgdmFyIHNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnZWRnZS1zaGFwZSc7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaXplID0gY2ZnLnNpemU7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTsgLy8gfHwgY2ZnLmNvbnRyb2xQb2ludHM7XG5cbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgY3VycmVudEF0dHIgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHByZXZpb3VzU3R5bGUgPSBtaXgoe30sIHN0cm9rZVN0eWxlLCBjdXJyZW50QXR0ciwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBwcmV2aW91c1N0eWxlLnJhZGl1cztcbiAgICB2YXIgZGVmYXVsdFJvdXRlQ2ZnID0gdGhpcy5vcHRpb25zLnJvdXRlQ2ZnO1xuICAgIHZhciByb3V0ZUNmZyA9IG1peCh7fSwgZGVmYXVsdFJvdXRlQ2ZnLCBjZmcucm91dGVDZmcpO1xuICAgIHJvdXRlQ2ZnLm9mZnNldCA9IHByZXZpb3VzU3R5bGUub2Zmc2V0O1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpO1xuXG4gICAgaWYgKGlzQXJyYXkocGF0aCkgJiYgcGF0aC5sZW5ndGggPD0gMSB8fCBpc1N0cmluZyhwYXRoKSAmJiBwYXRoLmluZGV4T2YoJ0wnKSA9PT0gLTEpIHtcbiAgICAgIHBhdGggPSAnTTAgMCwgTDAgMCc7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oc3RhcnRQb2ludC55KSB8fCBpc05hTihlbmRQb2ludC54KSB8fCBpc05hTihlbmRQb2ludC55KSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEF0dHIuZW5kQXJyb3cgJiYgcHJldmlvdXNTdHlsZS5lbmRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgIGNmZy5zdHlsZS5lbmRBcnJvdyA9IHtcbiAgICAgICAgcGF0aDogJydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRBdHRyLnN0YXJ0QXJyb3cgJiYgcHJldmlvdXNTdHlsZS5zdGFydEFycm93ID09PSBmYWxzZSkge1xuICAgICAgY2ZnLnN0eWxlLnN0YXJ0QXJyb3cgPSB7XG4gICAgICAgIHBhdGg6ICcnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG1peChzdHJva2VTdHlsZSwgc2hhcGUuYXR0cigpLCB7XG4gICAgICBsaW5lV2lkdGg6IHNpemUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSwgY2ZnLnN0eWxlKTtcblxuICAgIGlmIChzaGFwZSkge1xuICAgICAgc2hhcGUuYXR0cihzdHlsZSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpIHtcbiAgICB2YXIgb2Zmc2V0ID0gcm91dGVDZmcub2Zmc2V0LFxuICAgICAgICBzaW1wbGUgPSByb3V0ZUNmZy5zaW1wbGU7IC8vIOaMh+WumuS6huaOp+WItueCuVxuXG4gICAgaWYgKCFvZmZzZXQgfHwgcG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmIChyYWRpdXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhdGhXaXRoQm9yZGVyUmFkaXVzQnlQb2x5bGluZShwb2ludHMsIHJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXRoQXJyYXlfMSA9IFtdO1xuICAgICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ00nLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ0wnLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBhdGhBcnJheV8xO1xuICAgIH0gLy8g5pyq5oyH5a6a5o6n5Yi254K5XG5cblxuICAgIHZhciBwb2x5bGluZVBvaW50cyA9IHNpbXBsZSA/IGdldFBvbHlsaW5lUG9pbnRzKHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0sIHBvaW50c1swXSwgdGFyZ2V0LCBzb3VyY2UsIG9mZnNldCkgOiBwYXRoRmluZGVyKHBvaW50c1swXSwgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgc291cmNlLCB0YXJnZXQsIHJvdXRlQ2ZnKTtcbiAgICBpZiAoIXBvbHlsaW5lUG9pbnRzIHx8ICFwb2x5bGluZVBvaW50cy5sZW5ndGgpIHJldHVybiAnTTAgMCwgTDAgMCc7XG5cbiAgICBpZiAocmFkaXVzKSB7XG4gICAgICB2YXIgcmVzXzEgPSBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9seWxpbmVQb2ludHMsIHJhZGl1cyk7XG4gICAgICByZXR1cm4gcmVzXzE7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IFV0aWwucG9pbnRzVG9Qb2x5Z29uKHBvbHlsaW5lUG9pbnRzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/polyline.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/edges/router.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/edges/router.js ***!
\**********************************************************/
/*! exports provided: octolinearCfg, pathFinder */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"octolinearCfg\", function() { return octolinearCfg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/@antv/g6-element/es/edges/polyline-util.js\");\n/**\n * 通过配置不同的 costFunc, distFunc, constraints 可以得到不同效果的 router\n * generalRouter: 不限制搜索时的移动方向,避开障碍即可\n * orthogonal: 线必须沿着竖直或水平方向(4个方向)\n * octolinearRouter: 线沿着竖直、水平、对角线方向(8个方向)\n */\n\n\n\n\nvar manhattanDist = function manhattanDist(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n\nvar eucliDist = function eucliDist(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n};\n\nvar straightPath = function straightPath(start, end) {\n // console.warn('fallbackRoute: straight path');\n return [start, end];\n};\n\nvar simplePolyline = function simplePolyline(start, end, startNode, endNode, cfg) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"simplifyPolyline\"])(Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getPolylinePoints\"])(start, end, startNode, endNode, cfg.offset));\n}; // getPolylinePoints\n\n\nvar defaultCfg = {\n offset: 20,\n maxAllowedDirectionChange: Math.PI / 2,\n maximumLoops: 2000,\n gridSize: 10,\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: 0,\n stepY: -1\n } // top\n ],\n\n get penalties() {\n return {\n 0: 0,\n 45: this.gridSize / 2,\n 90: this.gridSize / 2\n };\n },\n\n distFunc: manhattanDist,\n fallbackRoute: simplePolyline\n};\nvar octolinearCfg = {\n maxAllowedDirectionChange: Math.PI / 4,\n // 8 个方向: 上下左右 + 45度斜线方向\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: 1,\n stepY: 1\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: -1\n }, {\n stepX: 0,\n stepY: -1\n }, {\n stepX: 1,\n stepY: -1\n }],\n distFunc: eucliDist,\n fallbackRoute: straightPath\n};\n\nvar pos2GridIx = function pos2GridIx(pos, gridSize) {\n var gridIx = Math.round(Math.abs(pos / gridSize));\n var sign = pos < 0 ? -1 : 1;\n return gridIx < 0 ? 0 : sign * gridIx;\n};\n\nvar getObstacleMap = function getObstacleMap(items, gridSize, offset) {\n var map = {};\n items.forEach(function (item) {\n // create-edge 时,当边类型为 polyline 时 endNode 为 null\n if (!item) return;\n var bbox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(item.getBBox(), offset);\n\n for (var x = pos2GridIx(bbox.minX, gridSize); x <= pos2GridIx(bbox.maxX, gridSize); x += 1) {\n for (var y = pos2GridIx(bbox.minY, gridSize); y <= pos2GridIx(bbox.maxY, gridSize); y += 1) {\n map[\"\".concat(x, \"|||\").concat(y)] = true;\n }\n }\n });\n return map;\n};\n/**\n * 方向角:计算从 p1 到 p2 的射线与水平线形成的夹角度数(顺时针从右侧0°转到该射线的角度)\n * @param p1 PolyPoint\n * @param p2 PolyPoint\n */\n\n\nvar getDirectionAngle = function getDirectionAngle(p1, p2) {\n var deltaX = p2.x - p1.x;\n var deltaY = p2.y - p1.y;\n\n if (deltaX || deltaY) {\n return Math.atan2(deltaY, deltaX);\n }\n\n return 0;\n};\n/**\n * 方向角的改变,取小于180度角\n * @param angle1\n * @param angle2\n */\n\n\nvar getAngleDiff = function getAngleDiff(angle1, angle2) {\n var directionChange = Math.abs(angle1 - angle2);\n return directionChange > Math.PI ? 2 * Math.PI - directionChange : directionChange; // return directionChange > 180 ? 360 - directionChange : directionChange;\n}; // Path finder //\n\n\nvar estimateCost = function estimateCost(from, endPoints, distFunc) {\n var min = Infinity;\n\n for (var i = 0, len = endPoints.length; i < len; i++) {\n var cost = distFunc(from, endPoints[i]);\n\n if (cost < min) {\n min = cost;\n }\n }\n\n return min;\n}; // 计算考虑 offset 后的 BBox 上的连接点\n\n\nvar getBoxPoints = function getBoxPoints(point, // 被 gridSize 格式化后的位置(anchorPoint)\noriPoint, // 未被 gridSize 格式化的位置(anchorPoint)\nnode, // 原始节点,用于获取 bbox\nanotherPoint, // 另一端被 gridSize 格式化后的位置\ncfg) {\n var points = []; // create-edge 生成边的过程中,endNode 为 null\n\n if (!node) {\n return [point];\n }\n\n var directions = cfg.directions,\n offset = cfg.offset;\n var bbox = node.getBBox();\n var isInside = oriPoint.x > bbox.minX && oriPoint.x < bbox.maxX && oriPoint.y > bbox.minY && oriPoint.y < bbox.maxY;\n var expandBBox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(bbox, offset);\n\n for (var i in expandBBox) {\n expandBBox[i] = pos2GridIx(expandBBox[i], cfg.gridSize);\n }\n\n if (isInside) {\n // 如果 anchorPoint 在节点内部,允许第一段线穿过节点\n for (var _i = 0, directions_1 = directions; _i < directions_1.length; _i++) {\n var dir = directions_1[_i];\n var bounds = [[{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.minY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.minX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.maxX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.maxY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }]];\n\n for (var i = 0; i < 4; i++) {\n var boundLine = bounds[i];\n var insterctP_1 = _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getLineIntersect(point, {\n x: point.x + dir.stepX * expandBBox.width,\n y: point.y + dir.stepY * expandBBox.height\n }, boundLine[0], boundLine[1]);\n\n if (insterctP_1 && !Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"isSegmentCrossingBBox\"])(point, insterctP_1, bbox)) {\n insterctP_1.id = \"\".concat(insterctP_1.x, \"|||\").concat(insterctP_1.y);\n points.push(insterctP_1);\n }\n }\n }\n\n return points;\n } // 如果 anchorPoint 在节点上,只有一个可选方向\n\n\n var insterctP = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBoxPoint\"])(expandBBox, point, anotherPoint);\n insterctP.id = \"\".concat(insterctP.x, \"|||\").concat(insterctP.y);\n return [insterctP];\n};\n\nvar getDirectionChange = function getDirectionChange(current, neighbor, cameFrom, scaleStartPoint) {\n var directionAngle = getDirectionAngle(current, neighbor);\n\n if (!cameFrom[current.id]) {\n var startAngle = getDirectionAngle(scaleStartPoint, current);\n return getAngleDiff(startAngle, directionAngle);\n }\n\n var prevDirectionAngle = getDirectionAngle({\n x: cameFrom[current.id].x,\n y: cameFrom[current.id].y\n }, current);\n return getAngleDiff(prevDirectionAngle, directionAngle);\n};\n\nvar getControlPoints = function getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize) {\n var controlPoints = [endPoint];\n var currentId = current.id;\n var currentX = current.x;\n var currentY = current.y;\n var lastPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n\n if (getDirectionChange(lastPoint, scaleEndPoint, cameFrom, scaleStartPoint)) {\n // if (scaleEndPoint.x === endPoint.x && scaleEndPoint.y === endPoint.y)\n // controlPoints.unshift({\n // x: endPoint.x,\n // y: endPoint.y\n // })\n // else\n // controlPoints.unshift({\n // x: lastPoint.x * gridSize,\n // y: lastPoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: scaleEndPoint.x === endPoint.x ? endPoint.x : lastPoint.x * gridSize,\n y: scaleEndPoint.y === endPoint.y ? endPoint.y : lastPoint.y * gridSize\n });\n }\n\n while (cameFrom[currentId] && cameFrom[currentId].id !== currentId) {\n var point = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n var preId = cameFrom[currentId].id;\n var preX = cameFrom[currentId].x;\n var preY = cameFrom[currentId].y;\n var prePoint = {\n x: preX,\n y: preY,\n id: preId\n };\n var directionChange = getDirectionChange(prePoint, point, cameFrom, scaleStartPoint);\n\n if (directionChange) {\n // if (prePoint.x === point.x && prePoint.y === point.y)\n // controlPoints.unshift({\n // x: controlPoints[0].x,\n // y: controlPoints[0].y\n // })\n // else\n // controlPoints.unshift({\n // x: prePoint.x * gridSize,\n // y: prePoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: prePoint.x === point.x ? controlPoints[0].x : prePoint.x * gridSize,\n y: prePoint.y === point.y ? controlPoints[0].y : prePoint.y * gridSize\n });\n }\n\n currentId = preId;\n currentX = preX;\n currentY = preY;\n } // 和startNode对齐\n\n\n var firstPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n }; // if (firstPoint.x === scaleStartPoint.x && firstPoint.y === scaleStartPoint.y) {\n // controlPoints[0].x = startPoint.x;\n // controlPoints[0].y = startPoint.y;\n // }\n\n controlPoints[0].x = firstPoint.x === scaleStartPoint.x ? startPoint.x : controlPoints[0].x;\n controlPoints[0].y = firstPoint.y === scaleStartPoint.y ? startPoint.y : controlPoints[0].y;\n controlPoints.unshift(startPoint);\n return controlPoints;\n};\n\nvar pathFinder = function pathFinder(startPoint, endPoint, startNode, endNode, routerCfg) {\n if (isNaN(startPoint.x) || isNaN(endPoint.x)) return [];\n var cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(defaultCfg, routerCfg);\n cfg.obstacles = cfg.obstacles || [];\n var gridSize = cfg.gridSize;\n var map = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset);\n var scaleStartPoint = {\n x: pos2GridIx(startPoint.x, gridSize),\n y: pos2GridIx(startPoint.y, gridSize)\n };\n var scaleEndPoint = {\n x: pos2GridIx(endPoint.x, gridSize),\n y: pos2GridIx(endPoint.y, gridSize)\n };\n startPoint.id = \"\".concat(scaleStartPoint.x, \"|||\").concat(scaleStartPoint.y);\n endPoint.id = \"\".concat(scaleEndPoint.x, \"|||\").concat(scaleEndPoint.y);\n var startPoints = getBoxPoints(scaleStartPoint, startPoint, startNode, scaleEndPoint, cfg);\n var endPoints = getBoxPoints(scaleEndPoint, endPoint, endNode, scaleStartPoint, cfg);\n startPoints.forEach(function (point) {\n delete map[point.id];\n });\n endPoints.forEach(function (point) {\n delete map[point.id];\n });\n var openSet = {};\n var closedSet = {};\n var cameFrom = {}; // 从起点到当前点已产生的 cost, default: Infinity\n\n var gScore = {}; // 起点经过当前点到达终点预估的 cost, default: Infinity\n\n var fScore = {}; // initialize\n\n for (var i = 0; i < startPoints.length; i++) {\n var firstStep = startPoints[i];\n openSet[firstStep.id] = firstStep; // cameFrom[firstStep.id] = startPoint.id;\n\n gScore[firstStep.id] = 0;\n fScore[firstStep.id] = estimateCost(firstStep, endPoints, cfg.distFunc);\n }\n\n var remainLoops = cfg.maximumLoops;\n var penalties = cfg.penalties;\n var current, curCost, direction, neighbor, neighborCost, costFromStart, directionChange;\n\n while (Object.keys(openSet).length > 0 && remainLoops > 0) {\n current = undefined;\n curCost = Infinity; // 找到 openSet 中 fScore 最小的点\n\n Object.keys(openSet).forEach(function (key) {\n var id = openSet[key].id;\n\n if (fScore[id] <= curCost) {\n curCost = fScore[id];\n current = openSet[id];\n }\n });\n if (!current) break; // 如果 fScore 最小的点就是终点\n\n if (endPoints.findIndex(function (point) {\n return point.x === current.x && point.y === current.y;\n }) > -1) {\n return getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize);\n }\n\n delete openSet[current.id];\n closedSet[current.id] = true; // 获取符合条件的下一步的候选连接点\n // 沿候选方向走一步\n\n for (var i = 0; i < cfg.directions.length; i++) {\n direction = cfg.directions[i];\n neighbor = {\n x: current.x + direction.stepX,\n y: current.y + direction.stepY,\n id: \"\".concat(Math.round(current.x) + direction.stepX, \"|||\").concat(Math.round(current.y) + direction.stepY)\n };\n if (closedSet[neighbor.id]) continue;\n directionChange = getDirectionChange(current, neighbor, cameFrom, scaleStartPoint);\n if (directionChange > cfg.maxAllowedDirectionChange) continue;\n if (map[neighbor.id]) continue; // 如果交叉则跳过\n // 将候选点加入 openSet, 并计算每个候选点的 cost\n\n if (!openSet[neighbor.id]) {\n openSet[neighbor.id] = neighbor;\n }\n\n neighborCost = cfg.distFunc(current, neighbor) + (isNaN(penalties[directionChange]) ? gridSize : penalties[directionChange]);\n costFromStart = gScore[current.id] + neighborCost;\n\n if (gScore[neighbor.id] && costFromStart >= gScore[neighbor.id]) {\n continue;\n }\n\n cameFrom[neighbor.id] = current;\n gScore[neighbor.id] = costFromStart;\n fScore[neighbor.id] = costFromStart + estimateCost(neighbor, endPoints, cfg.distFunc);\n }\n\n remainLoops -= 1;\n }\n\n return cfg.fallbackRoute(startPoint, endPoint, startNode, endNode, cfg);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9yb3V0ZXIuanM/YTUzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUM7QUFDQTtBQUMrRjs7QUFFcEk7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsdUVBQWdCLENBQUMsd0VBQWlCO0FBQzNDLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzRUFBZTs7QUFFOUIsaURBQWlELHNDQUFzQztBQUN2RixtREFBbUQsc0NBQXNDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLHFGQUFxRjtBQUNyRixFQUFFOzs7QUFHRjtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNFQUFlOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtDQUErQywwQkFBMEI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVAscUJBQXFCLE9BQU87QUFDNUI7QUFDQSwwQkFBMEIsa0RBQUk7QUFDOUI7QUFDQTtBQUNBLFNBQVM7O0FBRVQsNEJBQTRCLDRFQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0gsa0JBQWtCLDJFQUFvQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0I7O0FBRXBCLGtCQUFrQjs7QUFFbEIsa0JBQWtCOztBQUVsQixpQkFBaUIsd0JBQXdCO0FBQ3pDO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUEsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL2VkZ2VzL3JvdXRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6YCa6L+H6YWN572u5LiN5ZCM55qEIGNvc3RGdW5jLCBkaXN0RnVuYywgY29uc3RyYWludHMg5Y+v5Lul5b6X5Yiw5LiN5ZCM5pWI5p6c55qEIHJvdXRlclxuICogZ2VuZXJhbFJvdXRlcjog5LiN6ZmQ5Yi25pCc57Si5pe255qE56e75Yqo5pa55ZCR77yM6YG/5byA6Zqc56KN5Y2z5Y+vXG4gKiBvcnRob2dvbmFsOiDnur/lv4Xpobvmsr/nnYDnq5bnm7TmiJbmsLTlubPmlrnlkJHvvIg05Liq5pa55ZCR77yJXG4gKiBvY3RvbGluZWFyUm91dGVyOiDnur/msr/nnYDnq5bnm7TjgIHmsLTlubPjgIHlr7nop5Lnur/mlrnlkJHvvIg45Liq5pa55ZCR77yJXG4gKi9cbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldEV4cGFuZGVkQkJveCwgZ2V0RXhwYW5kZWRCQm94UG9pbnQsIGdldFBvbHlsaW5lUG9pbnRzLCBzaW1wbGlmeVBvbHlsaW5lLCBpc1NlZ21lbnRDcm9zc2luZ0JCb3ggfSBmcm9tICcuL3BvbHlsaW5lLXV0aWwnO1xuXG52YXIgbWFuaGF0dGFuRGlzdCA9IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLmFicyhwMS54IC0gcDIueCkgKyBNYXRoLmFicyhwMS55IC0gcDIueSk7XG59O1xuXG52YXIgZXVjbGlEaXN0ID0gZnVuY3Rpb24gZXVjbGlEaXN0KHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSk7XG59O1xuXG52YXIgc3RyYWlnaHRQYXRoID0gZnVuY3Rpb24gc3RyYWlnaHRQYXRoKHN0YXJ0LCBlbmQpIHtcbiAgLy8gY29uc29sZS53YXJuKCdmYWxsYmFja1JvdXRlOiBzdHJhaWdodCBwYXRoJyk7XG4gIHJldHVybiBbc3RhcnQsIGVuZF07XG59O1xuXG52YXIgc2ltcGxlUG9seWxpbmUgPSBmdW5jdGlvbiBzaW1wbGVQb2x5bGluZShzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZykge1xuICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRQb2x5bGluZVBvaW50cyhzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZy5vZmZzZXQpKTtcbn07IC8vIGdldFBvbHlsaW5lUG9pbnRzXG5cblxudmFyIGRlZmF1bHRDZmcgPSB7XG4gIG9mZnNldDogMjAsXG4gIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEkgLyAyLFxuICBtYXhpbXVtTG9vcHM6IDIwMDAsXG4gIGdyaWRTaXplOiAxMCxcbiAgZGlyZWN0aW9uczogW3tcbiAgICBzdGVwWDogMSxcbiAgICBzdGVwWTogMFxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAwXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IDAsXG4gICAgc3RlcFk6IC0xXG4gIH0gLy8gdG9wXG4gIF0sXG5cbiAgZ2V0IHBlbmFsdGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgMDogMCxcbiAgICAgIDQ1OiB0aGlzLmdyaWRTaXplIC8gMixcbiAgICAgIDkwOiB0aGlzLmdyaWRTaXplIC8gMlxuICAgIH07XG4gIH0sXG5cbiAgZGlzdEZ1bmM6IG1hbmhhdHRhbkRpc3QsXG4gIGZhbGxiYWNrUm91dGU6IHNpbXBsZVBvbHlsaW5lXG59O1xuZXhwb3J0IHZhciBvY3RvbGluZWFyQ2ZnID0ge1xuICBtYXhBbGxvd2VkRGlyZWN0aW9uQ2hhbmdlOiBNYXRoLlBJIC8gNCxcbiAgLy8gOCDkuKrmlrnlkJE6IOS4iuS4i+W3puWPsyArIDQ15bqm5pac57q/5pa55ZCRXG4gIGRpcmVjdGlvbnM6IFt7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAxLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogLTEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAtMSxcbiAgICBzdGVwWTogLTFcbiAgfSwge1xuICAgIHN0ZXBYOiAwLFxuICAgIHN0ZXBZOiAtMVxuICB9LCB7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IC0xXG4gIH1dLFxuICBkaXN0RnVuYzogZXVjbGlEaXN0LFxuICBmYWxsYmFja1JvdXRlOiBzdHJhaWdodFBhdGhcbn07XG5cbnZhciBwb3MyR3JpZEl4ID0gZnVuY3Rpb24gcG9zMkdyaWRJeChwb3MsIGdyaWRTaXplKSB7XG4gIHZhciBncmlkSXggPSBNYXRoLnJvdW5kKE1hdGguYWJzKHBvcyAvIGdyaWRTaXplKSk7XG4gIHZhciBzaWduID0gcG9zIDwgMCA/IC0xIDogMTtcbiAgcmV0dXJuIGdyaWRJeCA8IDAgPyAwIDogc2lnbiAqIGdyaWRJeDtcbn07XG5cbnZhciBnZXRPYnN0YWNsZU1hcCA9IGZ1bmN0aW9uIGdldE9ic3RhY2xlTWFwKGl0ZW1zLCBncmlkU2l6ZSwgb2Zmc2V0KSB7XG4gIHZhciBtYXAgPSB7fTtcbiAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIC8vIGNyZWF0ZS1lZGdlIOaXtu+8jOW9k+i+ueexu+Wei+S4uiBwb2x5bGluZSDml7YgZW5kTm9kZSDkuLogbnVsbFxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIHZhciBiYm94ID0gZ2V0RXhwYW5kZWRCQm94KGl0ZW0uZ2V0QkJveCgpLCBvZmZzZXQpO1xuXG4gICAgZm9yICh2YXIgeCA9IHBvczJHcmlkSXgoYmJveC5taW5YLCBncmlkU2l6ZSk7IHggPD0gcG9zMkdyaWRJeChiYm94Lm1heFgsIGdyaWRTaXplKTsgeCArPSAxKSB7XG4gICAgICBmb3IgKHZhciB5ID0gcG9zMkdyaWRJeChiYm94Lm1pblksIGdyaWRTaXplKTsgeSA8PSBwb3MyR3JpZEl4KGJib3gubWF4WSwgZ3JpZFNpemUpOyB5ICs9IDEpIHtcbiAgICAgICAgbWFwW1wiXCIuY29uY2F0KHgsIFwifHx8XCIpLmNvbmNhdCh5KV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtYXA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LvvJrorqHnrpfku44gcDEg5YiwIHAyIOeahOWwhOe6v+S4juawtOW5s+e6v+W9ouaIkOeahOWkueinkuW6puaVsO+8iOmhuuaXtumSiOS7juWPs+S+pzDCsOi9rOWIsOivpeWwhOe6v+eahOinkuW6pu+8iVxuICogQHBhcmFtIHAxIFBvbHlQb2ludFxuICogQHBhcmFtIHAyIFBvbHlQb2ludFxuICovXG5cblxudmFyIGdldERpcmVjdGlvbkFuZ2xlID0gZnVuY3Rpb24gZ2V0RGlyZWN0aW9uQW5nbGUocDEsIHAyKSB7XG4gIHZhciBkZWx0YVggPSBwMi54IC0gcDEueDtcbiAgdmFyIGRlbHRhWSA9IHAyLnkgLSBwMS55O1xuXG4gIGlmIChkZWx0YVggfHwgZGVsdGFZKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoZGVsdGFZLCBkZWx0YVgpO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LnmoTmlLnlj5jvvIzlj5blsI/kuo4xODDluqbop5JcbiAqIEBwYXJhbSBhbmdsZTFcbiAqIEBwYXJhbSBhbmdsZTJcbiAqL1xuXG5cbnZhciBnZXRBbmdsZURpZmYgPSBmdW5jdGlvbiBnZXRBbmdsZURpZmYoYW5nbGUxLCBhbmdsZTIpIHtcbiAgdmFyIGRpcmVjdGlvbkNoYW5nZSA9IE1hdGguYWJzKGFuZ2xlMSAtIGFuZ2xlMik7XG4gIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiBNYXRoLlBJID8gMiAqIE1hdGguUEkgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7IC8vIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiAxODAgPyAzNjAgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7XG59OyAvLyBQYXRoIGZpbmRlciAvL1xuXG5cbnZhciBlc3RpbWF0ZUNvc3QgPSBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QoZnJvbSwgZW5kUG9pbnRzLCBkaXN0RnVuYykge1xuICB2YXIgbWluID0gSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVuZFBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjb3N0ID0gZGlzdEZ1bmMoZnJvbSwgZW5kUG9pbnRzW2ldKTtcblxuICAgIGlmIChjb3N0IDwgbWluKSB7XG4gICAgICBtaW4gPSBjb3N0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW47XG59OyAvLyDorqHnrpfogIPomZEgb2Zmc2V0IOWQjueahCBCQm94IOS4iueahOi/nuaOpeeCuVxuXG5cbnZhciBnZXRCb3hQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3hQb2ludHMocG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxub3JpUG9pbnQsIC8vIOacquiiqyBncmlkU2l6ZSDmoLzlvI/ljJbnmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxubm9kZSwgLy8g5Y6f5aeL6IqC54K577yM55So5LqO6I635Y+WIGJib3hcbmFub3RoZXJQb2ludCwgLy8g5Y+m5LiA56uv6KKrIGdyaWRTaXplIOagvOW8j+WMluWQjueahOS9jee9rlxuY2ZnKSB7XG4gIHZhciBwb2ludHMgPSBbXTsgLy8gY3JlYXRlLWVkZ2Ug55Sf5oiQ6L6555qE6L+H56iL5Lit77yMZW5kTm9kZSDkuLogbnVsbFxuXG4gIGlmICghbm9kZSkge1xuICAgIHJldHVybiBbcG9pbnRdO1xuICB9XG5cbiAgdmFyIGRpcmVjdGlvbnMgPSBjZmcuZGlyZWN0aW9ucyxcbiAgICAgIG9mZnNldCA9IGNmZy5vZmZzZXQ7XG4gIHZhciBiYm94ID0gbm9kZS5nZXRCQm94KCk7XG4gIHZhciBpc0luc2lkZSA9IG9yaVBvaW50LnggPiBiYm94Lm1pblggJiYgb3JpUG9pbnQueCA8IGJib3gubWF4WCAmJiBvcmlQb2ludC55ID4gYmJveC5taW5ZICYmIG9yaVBvaW50LnkgPCBiYm94Lm1heFk7XG4gIHZhciBleHBhbmRCQm94ID0gZ2V0RXhwYW5kZWRCQm94KGJib3gsIG9mZnNldCk7XG5cbiAgZm9yICh2YXIgaSBpbiBleHBhbmRCQm94KSB7XG4gICAgZXhwYW5kQkJveFtpXSA9IHBvczJHcmlkSXgoZXhwYW5kQkJveFtpXSwgY2ZnLmdyaWRTaXplKTtcbiAgfVxuXG4gIGlmIChpc0luc2lkZSkge1xuICAgIC8vIOWmguaenCBhbmNob3JQb2ludCDlnKjoioLngrnlhoXpg6jvvIzlhYHorrjnrKzkuIDmrrXnur/nqb/ov4foioLngrlcbiAgICBmb3IgKHZhciBfaSA9IDAsIGRpcmVjdGlvbnNfMSA9IGRpcmVjdGlvbnM7IF9pIDwgZGlyZWN0aW9uc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGRpciA9IGRpcmVjdGlvbnNfMVtfaV07XG4gICAgICB2YXIgYm91bmRzID0gW1t7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9XSwgW3tcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1pbllcbiAgICAgIH0sIHtcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1heFlcbiAgICAgIH1dLCBbe1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWluWVxuICAgICAgfSwge1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWF4WVxuICAgICAgfV0sIFt7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9XV07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHZhciBib3VuZExpbmUgPSBib3VuZHNbaV07XG4gICAgICAgIHZhciBpbnN0ZXJjdFBfMSA9IFV0aWwuZ2V0TGluZUludGVyc2VjdChwb2ludCwge1xuICAgICAgICAgIHg6IHBvaW50LnggKyBkaXIuc3RlcFggKiBleHBhbmRCQm94LndpZHRoLFxuICAgICAgICAgIHk6IHBvaW50LnkgKyBkaXIuc3RlcFkgKiBleHBhbmRCQm94LmhlaWdodFxuICAgICAgICB9LCBib3VuZExpbmVbMF0sIGJvdW5kTGluZVsxXSk7XG5cbiAgICAgICAgaWYgKGluc3RlcmN0UF8xICYmICFpc1NlZ21lbnRDcm9zc2luZ0JCb3gocG9pbnQsIGluc3RlcmN0UF8xLCBiYm94KSkge1xuICAgICAgICAgIGluc3RlcmN0UF8xLmlkID0gXCJcIi5jb25jYXQoaW5zdGVyY3RQXzEueCwgXCJ8fHxcIikuY29uY2F0KGluc3RlcmN0UF8xLnkpO1xuICAgICAgICAgIHBvaW50cy5wdXNoKGluc3RlcmN0UF8xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8g5aaC5p6cIGFuY2hvclBvaW50IOWcqOiKgueCueS4iu+8jOWPquacieS4gOS4quWPr+mAieaWueWQkVxuXG5cbiAgdmFyIGluc3RlcmN0UCA9IGdldEV4cGFuZGVkQkJveFBvaW50KGV4cGFuZEJCb3gsIHBvaW50LCBhbm90aGVyUG9pbnQpO1xuICBpbnN0ZXJjdFAuaWQgPSBcIlwiLmNvbmNhdChpbnN0ZXJjdFAueCwgXCJ8fHxcIikuY29uY2F0KGluc3RlcmN0UC55KTtcbiAgcmV0dXJuIFtpbnN0ZXJjdFBdO1xufTtcblxudmFyIGdldERpcmVjdGlvbkNoYW5nZSA9IGZ1bmN0aW9uIGdldERpcmVjdGlvbkNoYW5nZShjdXJyZW50LCBuZWlnaGJvciwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCkge1xuICB2YXIgZGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZShjdXJyZW50LCBuZWlnaGJvcik7XG5cbiAgaWYgKCFjYW1lRnJvbVtjdXJyZW50LmlkXSkge1xuICAgIHZhciBzdGFydEFuZ2xlID0gZ2V0RGlyZWN0aW9uQW5nbGUoc2NhbGVTdGFydFBvaW50LCBjdXJyZW50KTtcbiAgICByZXR1cm4gZ2V0QW5nbGVEaWZmKHN0YXJ0QW5nbGUsIGRpcmVjdGlvbkFuZ2xlKTtcbiAgfVxuXG4gIHZhciBwcmV2RGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZSh7XG4gICAgeDogY2FtZUZyb21bY3VycmVudC5pZF0ueCxcbiAgICB5OiBjYW1lRnJvbVtjdXJyZW50LmlkXS55XG4gIH0sIGN1cnJlbnQpO1xuICByZXR1cm4gZ2V0QW5nbGVEaWZmKHByZXZEaXJlY3Rpb25BbmdsZSwgZGlyZWN0aW9uQW5nbGUpO1xufTtcblxudmFyIGdldENvbnRyb2xQb2ludHMgPSBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGN1cnJlbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzdGFydFBvaW50LCBzY2FsZUVuZFBvaW50LCBncmlkU2l6ZSkge1xuICB2YXIgY29udHJvbFBvaW50cyA9IFtlbmRQb2ludF07XG4gIHZhciBjdXJyZW50SWQgPSBjdXJyZW50LmlkO1xuICB2YXIgY3VycmVudFggPSBjdXJyZW50Lng7XG4gIHZhciBjdXJyZW50WSA9IGN1cnJlbnQueTtcbiAgdmFyIGxhc3RQb2ludCA9IHtcbiAgICB4OiBjdXJyZW50WCxcbiAgICB5OiBjdXJyZW50WSxcbiAgICBpZDogY3VycmVudElkXG4gIH07XG5cbiAgaWYgKGdldERpcmVjdGlvbkNoYW5nZShsYXN0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQpKSB7XG4gICAgLy8gaWYgKHNjYWxlRW5kUG9pbnQueCA9PT0gZW5kUG9pbnQueCAmJiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkpXG4gICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgIC8vICAgICB4OiBlbmRQb2ludC54LFxuICAgIC8vICAgICB5OiBlbmRQb2ludC55XG4gICAgLy8gICB9KVxuICAgIC8vIGVsc2VcbiAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgLy8gICAgIHg6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgLy8gICAgIHk6IGxhc3RQb2ludC55ICogZ3JpZFNpemUsXG4gICAgLy8gICB9KTtcbiAgICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgeDogc2NhbGVFbmRQb2ludC54ID09PSBlbmRQb2ludC54ID8gZW5kUG9pbnQueCA6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgICB5OiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkgPyBlbmRQb2ludC55IDogbGFzdFBvaW50LnkgKiBncmlkU2l6ZVxuICAgIH0pO1xuICB9XG5cbiAgd2hpbGUgKGNhbWVGcm9tW2N1cnJlbnRJZF0gJiYgY2FtZUZyb21bY3VycmVudElkXS5pZCAhPT0gY3VycmVudElkKSB7XG4gICAgdmFyIHBvaW50ID0ge1xuICAgICAgeDogY3VycmVudFgsXG4gICAgICB5OiBjdXJyZW50WSxcbiAgICAgIGlkOiBjdXJyZW50SWRcbiAgICB9O1xuICAgIHZhciBwcmVJZCA9IGNhbWVGcm9tW2N1cnJlbnRJZF0uaWQ7XG4gICAgdmFyIHByZVggPSBjYW1lRnJvbVtjdXJyZW50SWRdLng7XG4gICAgdmFyIHByZVkgPSBjYW1lRnJvbVtjdXJyZW50SWRdLnk7XG4gICAgdmFyIHByZVBvaW50ID0ge1xuICAgICAgeDogcHJlWCxcbiAgICAgIHk6IHByZVksXG4gICAgICBpZDogcHJlSWRcbiAgICB9O1xuICAgIHZhciBkaXJlY3Rpb25DaGFuZ2UgPSBnZXREaXJlY3Rpb25DaGFuZ2UocHJlUG9pbnQsIHBvaW50LCBjYW1lRnJvbSwgc2NhbGVTdGFydFBvaW50KTtcblxuICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UpIHtcbiAgICAgIC8vIGlmIChwcmVQb2ludC54ID09PSBwb2ludC54ICYmIHByZVBvaW50LnkgPT09IHBvaW50LnkpXG4gICAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgICAvLyAgICAgeDogY29udHJvbFBvaW50c1swXS54LFxuICAgICAgLy8gICAgIHk6IGNvbnRyb2xQb2ludHNbMF0ueVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gZWxzZVxuICAgICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgLy8gICAgIHg6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgIC8vICAgICB5OiBwcmVQb2ludC55ICogZ3JpZFNpemUsXG4gICAgICAvLyAgIH0pO1xuICAgICAgY29udHJvbFBvaW50cy51bnNoaWZ0KHtcbiAgICAgICAgeDogcHJlUG9pbnQueCA9PT0gcG9pbnQueCA/IGNvbnRyb2xQb2ludHNbMF0ueCA6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgICAgeTogcHJlUG9pbnQueSA9PT0gcG9pbnQueSA/IGNvbnRyb2xQb2ludHNbMF0ueSA6IHByZVBvaW50LnkgKiBncmlkU2l6ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VycmVudElkID0gcHJlSWQ7XG4gICAgY3VycmVudFggPSBwcmVYO1xuICAgIGN1cnJlbnRZID0gcHJlWTtcbiAgfSAvLyDlkoxzdGFydE5vZGXlr7npvZBcblxuXG4gIHZhciBmaXJzdFBvaW50ID0ge1xuICAgIHg6IGN1cnJlbnRYLFxuICAgIHk6IGN1cnJlbnRZLFxuICAgIGlkOiBjdXJyZW50SWRcbiAgfTsgLy8gaWYgKGZpcnN0UG9pbnQueCA9PT0gc2NhbGVTdGFydFBvaW50LnggJiYgZmlyc3RQb2ludC55ID09PSBzY2FsZVN0YXJ0UG9pbnQueSkge1xuICAvLyAgIGNvbnRyb2xQb2ludHNbMF0ueCA9IHN0YXJ0UG9pbnQueDtcbiAgLy8gICBjb250cm9sUG9pbnRzWzBdLnkgPSBzdGFydFBvaW50Lnk7XG4gIC8vIH1cblxuICBjb250cm9sUG9pbnRzWzBdLnggPSBmaXJzdFBvaW50LnggPT09IHNjYWxlU3RhcnRQb2ludC54ID8gc3RhcnRQb2ludC54IDogY29udHJvbFBvaW50c1swXS54O1xuICBjb250cm9sUG9pbnRzWzBdLnkgPSBmaXJzdFBvaW50LnkgPT09IHNjYWxlU3RhcnRQb2ludC55ID8gc3RhcnRQb2ludC55IDogY29udHJvbFBvaW50c1swXS55O1xuICBjb250cm9sUG9pbnRzLnVuc2hpZnQoc3RhcnRQb2ludCk7XG4gIHJldHVybiBjb250cm9sUG9pbnRzO1xufTtcblxuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihzdGFydFBvaW50LCBlbmRQb2ludCwgc3RhcnROb2RlLCBlbmROb2RlLCByb3V0ZXJDZmcpIHtcbiAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oZW5kUG9pbnQueCkpIHJldHVybiBbXTtcbiAgdmFyIGNmZyA9IGRlZXBNaXgoZGVmYXVsdENmZywgcm91dGVyQ2ZnKTtcbiAgY2ZnLm9ic3RhY2xlcyA9IGNmZy5vYnN0YWNsZXMgfHwgW107XG4gIHZhciBncmlkU2l6ZSA9IGNmZy5ncmlkU2l6ZTtcbiAgdmFyIG1hcCA9IGdldE9ic3RhY2xlTWFwKGNmZy5vYnN0YWNsZXMuY29uY2F0KFtzdGFydE5vZGUsIGVuZE5vZGVdKSwgZ3JpZFNpemUsIGNmZy5vZmZzZXQpO1xuICB2YXIgc2NhbGVTdGFydFBvaW50ID0ge1xuICAgIHg6IHBvczJHcmlkSXgoc3RhcnRQb2ludC54LCBncmlkU2l6ZSksXG4gICAgeTogcG9zMkdyaWRJeChzdGFydFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICB2YXIgc2NhbGVFbmRQb2ludCA9IHtcbiAgICB4OiBwb3MyR3JpZEl4KGVuZFBvaW50LngsIGdyaWRTaXplKSxcbiAgICB5OiBwb3MyR3JpZEl4KGVuZFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICBzdGFydFBvaW50LmlkID0gXCJcIi5jb25jYXQoc2NhbGVTdGFydFBvaW50LngsIFwifHx8XCIpLmNvbmNhdChzY2FsZVN0YXJ0UG9pbnQueSk7XG4gIGVuZFBvaW50LmlkID0gXCJcIi5jb25jYXQoc2NhbGVFbmRQb2ludC54LCBcInx8fFwiKS5jb25jYXQoc2NhbGVFbmRQb2ludC55KTtcbiAgdmFyIHN0YXJ0UG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlU3RhcnRQb2ludCwgc3RhcnRQb2ludCwgc3RhcnROb2RlLCBzY2FsZUVuZFBvaW50LCBjZmcpO1xuICB2YXIgZW5kUG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlRW5kUG9pbnQsIGVuZFBvaW50LCBlbmROb2RlLCBzY2FsZVN0YXJ0UG9pbnQsIGNmZyk7XG4gIHN0YXJ0UG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgZGVsZXRlIG1hcFtwb2ludC5pZF07XG4gIH0pO1xuICBlbmRQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBkZWxldGUgbWFwW3BvaW50LmlkXTtcbiAgfSk7XG4gIHZhciBvcGVuU2V0ID0ge307XG4gIHZhciBjbG9zZWRTZXQgPSB7fTtcbiAgdmFyIGNhbWVGcm9tID0ge307IC8vIOS7jui1t+eCueWIsOW9k+WJjeeCueW3suS6p+eUn+eahCBjb3N0LCBkZWZhdWx0OiBJbmZpbml0eVxuXG4gIHZhciBnU2NvcmUgPSB7fTsgLy8g6LW354K557uP6L+H5b2T5YmN54K55Yiw6L6+57uI54K56aKE5Lyw55qEIGNvc3QsIGRlZmF1bHQ6IEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBpbml0aWFsaXplXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydFBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBmaXJzdFN0ZXAgPSBzdGFydFBvaW50c1tpXTtcbiAgICBvcGVuU2V0W2ZpcnN0U3RlcC5pZF0gPSBmaXJzdFN0ZXA7IC8vIGNhbWVGcm9tW2ZpcnN0U3RlcC5pZF0gPSBzdGFydFBvaW50LmlkO1xuXG4gICAgZ1Njb3JlW2ZpcnN0U3RlcC5pZF0gPSAwO1xuICAgIGZTY29yZVtmaXJzdFN0ZXAuaWRdID0gZXN0aW1hdGVDb3N0KGZpcnN0U3RlcCwgZW5kUG9pbnRzLCBjZmcuZGlzdEZ1bmMpO1xuICB9XG5cbiAgdmFyIHJlbWFpbkxvb3BzID0gY2ZnLm1heGltdW1Mb29wcztcbiAgdmFyIHBlbmFsdGllcyA9IGNmZy5wZW5hbHRpZXM7XG4gIHZhciBjdXJyZW50LCBjdXJDb3N0LCBkaXJlY3Rpb24sIG5laWdoYm9yLCBuZWlnaGJvckNvc3QsIGNvc3RGcm9tU3RhcnQsIGRpcmVjdGlvbkNoYW5nZTtcblxuICB3aGlsZSAoT2JqZWN0LmtleXMob3BlblNldCkubGVuZ3RoID4gMCAmJiByZW1haW5Mb29wcyA+IDApIHtcbiAgICBjdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIGN1ckNvc3QgPSBJbmZpbml0eTsgLy8g5om+5YiwIG9wZW5TZXQg5LitIGZTY29yZSDmnIDlsI/nmoTngrlcblxuICAgIE9iamVjdC5rZXlzKG9wZW5TZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGlkID0gb3BlblNldFtrZXldLmlkO1xuXG4gICAgICBpZiAoZlNjb3JlW2lkXSA8PSBjdXJDb3N0KSB7XG4gICAgICAgIGN1ckNvc3QgPSBmU2NvcmVbaWRdO1xuICAgICAgICBjdXJyZW50ID0gb3BlblNldFtpZF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjdXJyZW50KSBicmVhazsgLy8g5aaC5p6cIGZTY29yZSDmnIDlsI/nmoTngrnlsLHmmK/nu4jngrlcblxuICAgIGlmIChlbmRQb2ludHMuZmluZEluZGV4KGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHBvaW50LnggPT09IGN1cnJlbnQueCAmJiBwb2ludC55ID09PSBjdXJyZW50Lnk7XG4gICAgfSkgPiAtMSkge1xuICAgICAgcmV0dXJuIGdldENvbnRyb2xQb2ludHMoY3VycmVudCwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCwgZW5kUG9pbnQsIHN0YXJ0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGdyaWRTaXplKTtcbiAgICB9XG5cbiAgICBkZWxldGUgb3BlblNldFtjdXJyZW50LmlkXTtcbiAgICBjbG9zZWRTZXRbY3VycmVudC5pZF0gPSB0cnVlOyAvLyDojrflj5bnrKblkIjmnaHku7bnmoTkuIvkuIDmraXnmoTlgJnpgInov57mjqXngrlcbiAgICAvLyDmsr/lgJnpgInmlrnlkJHotbDkuIDmraVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2ZnLmRpcmVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRpcmVjdGlvbiA9IGNmZy5kaXJlY3Rpb25zW2ldO1xuICAgICAgbmVpZ2hib3IgPSB7XG4gICAgICAgIHg6IGN1cnJlbnQueCArIGRpcmVjdGlvbi5zdGVwWCxcbiAgICAgICAgeTogY3VycmVudC55ICsgZGlyZWN0aW9uLnN0ZXBZLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQoTWF0aC5yb3VuZChjdXJyZW50LngpICsgZGlyZWN0aW9uLnN0ZXBYLCBcInx8fFwiKS5jb25jYXQoTWF0aC5yb3VuZChjdXJyZW50LnkpICsgZGlyZWN0aW9uLnN0ZXBZKVxuICAgICAgfTtcbiAgICAgIGlmIChjbG9zZWRTZXRbbmVpZ2hib3IuaWRdKSBjb250aW51ZTtcbiAgICAgIGRpcmVjdGlvbkNoYW5nZSA9IGdldERpcmVjdGlvbkNoYW5nZShjdXJyZW50LCBuZWlnaGJvciwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCk7XG4gICAgICBpZiAoZGlyZWN0aW9uQ2hhbmdlID4gY2ZnLm1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2UpIGNvbnRpbnVlO1xuICAgICAgaWYgKG1hcFtuZWlnaGJvci5pZF0pIGNvbnRpbnVlOyAvLyDlpoLmnpzkuqTlj4nliJnot7Pov4dcbiAgICAgIC8vIOWwhuWAmemAieeCueWKoOWFpSBvcGVuU2V0LCDlubborqHnrpfmr4/kuKrlgJnpgInngrnnmoQgY29zdFxuXG4gICAgICBpZiAoIW9wZW5TZXRbbmVpZ2hib3IuaWRdKSB7XG4gICAgICAgIG9wZW5TZXRbbmVpZ2hib3IuaWRdID0gbmVpZ2hib3I7XG4gICAgICB9XG5cbiAgICAgIG5laWdoYm9yQ29zdCA9IGNmZy5kaXN0RnVuYyhjdXJyZW50LCBuZWlnaGJvcikgKyAoaXNOYU4ocGVuYWx0aWVzW2RpcmVjdGlvbkNoYW5nZV0pID8gZ3JpZFNpemUgOiBwZW5hbHRpZXNbZGlyZWN0aW9uQ2hhbmdlXSk7XG4gICAgICBjb3N0RnJvbVN0YXJ0ID0gZ1Njb3JlW2N1cnJlbnQuaWRdICsgbmVpZ2hib3JDb3N0O1xuXG4gICAgICBpZiAoZ1Njb3JlW25laWdoYm9yLmlkXSAmJiBjb3N0RnJvbVN0YXJ0ID49IGdTY29yZVtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNhbWVGcm9tW25laWdoYm9yLmlkXSA9IGN1cnJlbnQ7XG4gICAgICBnU2NvcmVbbmVpZ2hib3IuaWRdID0gY29zdEZyb21TdGFydDtcbiAgICAgIGZTY29yZVtuZWlnaGJvci5pZF0gPSBjb3N0RnJvbVN0YXJ0ICsgZXN0aW1hdGVDb3N0KG5laWdoYm9yLCBlbmRQb2ludHMsIGNmZy5kaXN0RnVuYyk7XG4gICAgfVxuXG4gICAgcmVtYWluTG9vcHMgLT0gMTtcbiAgfVxuXG4gIHJldHVybiBjZmcuZmFsbGJhY2tSb3V0ZShzdGFydFBvaW50LCBlbmRQb2ludCwgc3RhcnROb2RlLCBlbmROb2RlLCBjZmcpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/router.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/index.js":
/*!***************************************************!*\
!*** ./node_modules/@antv/g6-element/es/index.js ***!
\***************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nodes */ \"./node_modules/@antv/g6-element/es/nodes/index.js\");\n/* harmony import */ var _edges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edges */ \"./node_modules/@antv/g6-element/es/edges/index.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9pbmRleC5qcz8xNjQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL25vZGVzJztcbmltcG9ydCAnLi9lZGdlcyc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/circle.js":
/*!**********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/circle.js ***!
\**********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 带有图标的圆,可用于拓扑图中\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('circle', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var name = \"\".concat(this.type, \"-keyShape\");\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: name,\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n var iconName = \"\".concat(this.type, \"-icon\");\n\n if (text) {\n group['shapeMap'][iconName] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n } else {\n group['shapeMap'][iconName] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var linkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n if (!linkPoints) return;\n\n var _a = linkPoints || {},\n top = _a.top,\n left = _a.left,\n right = _a.right,\n bottom = _a.bottom,\n markSize = _a.size,\n markR = _a.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(_a, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n if (left) {\n // left circle\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -r,\n r: markSize / 2 || markR || 5\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: r,\n r: markSize / 2 || markR || 5\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n // const strokeStyle = {\n // stroke: cfg.color,\n // r: size[0] / 2,\n // };\n // // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n // const keyShape = item.get('keyShape');\n // TODO: performance\n // const style = deepMix({}, keyShape.attr(), strokeStyle, cfg.style);\n // const style = deepMix({}, keyShape.attr(), cfg.style);\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n\n if (cfg.style.stroke === undefined && cfg.color) {\n style.stroke = cfg.color;\n }\n\n if (cfg.style.r === undefined && !isNaN(size[0])) {\n style.r = size[0] / 2;\n }\n\n this.updateShape(cfg, item, style, true, updateType); // (this as any).updateShape(cfg, item, style, true, updateType);\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9jaXJjbGUuanM/Zjc3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUMwQjtBQUM5Qjs7QUFFckMsa0VBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVSx3REFBTTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQSxlQUFlLDBEQUFPLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjs7QUFFL0IsZ0JBQWdCLHNEQUFRLEdBQUc7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlEOztBQUV6RDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJzsgLy8g5bim5pyJ5Zu+5qCH55qE5ZyG77yM5Y+v55So5LqO5ouT5omR5Zu+5LitXG5cbnJlZ2lzdGVyTm9kZSgnY2lyY2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIG5hbWUgPSBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IG5hbWUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV0gPSBrZXlTaGFwZTtcbiAgICB2YXIgd2lkdGggPSBpY29uLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBpY29uLmhlaWdodCxcbiAgICAgICAgc2hvdyA9IGljb24uc2hvdyxcbiAgICAgICAgdGV4dCA9IGljb24udGV4dDtcblxuICAgIGlmIChzaG93KSB7XG4gICAgICB2YXIgaWNvbk5hbWUgPSBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIik7XG5cbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IGljb25OYW1lLFxuICAgICAgICAgIG5hbWU6IGljb25OYW1lLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBsaW5rUG9pbnRzID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cztcbiAgICBpZiAoIWxpbmtQb2ludHMpIHJldHVybjtcblxuICAgIHZhciBfYSA9IGxpbmtQb2ludHMgfHwge30sXG4gICAgICAgIHRvcCA9IF9hLnRvcCxcbiAgICAgICAgbGVmdCA9IF9hLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2EucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IF9hLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBfYS5zaXplLFxuICAgICAgICBtYXJrUiA9IF9hLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChfYSwgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgciA9IHNpemVbMF0gLyAyO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8xID0gJ2xpbmstcG9pbnQtbGVmdCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzFdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzEsXG4gICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIHZhciBuYW1lXzIgPSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzJdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogcixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMixcbiAgICAgICAgbmFtZTogbmFtZV8yLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8zID0gJ2xpbmstcG9pbnQtdG9wJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfM10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1yLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMyxcbiAgICAgICAgbmFtZTogbmFtZV8zLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICB2YXIgbmFtZV80ID0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNF0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV80LFxuICAgICAgICBuYW1lOiBuYW1lXzQsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpOyAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG4gICAgLy8gY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gICAgLy8gICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAvLyAgIHI6IHNpemVbMF0gLyAyLFxuICAgIC8vIH07XG4gICAgLy8gLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcbiAgICAvLyBjb25zdCBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIC8vIFRPRE86IHBlcmZvcm1hbmNlXG4gICAgLy8gY29uc3Qgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIC8vIGNvbnN0IHN0eWxlID0gZGVlcE1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBjZmcuc3R5bGUpO1xuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe30sIGNmZy5zdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlLnN0cm9rZSA9PT0gdW5kZWZpbmVkICYmIGNmZy5jb2xvcikge1xuICAgICAgc3R5bGUuc3Ryb2tlID0gY2ZnLmNvbG9yO1xuICAgIH1cblxuICAgIGlmIChjZmcuc3R5bGUuciA9PT0gdW5kZWZpbmVkICYmICFpc05hTihzaXplWzBdKSkge1xuICAgICAgc3R5bGUuciA9IHNpemVbMF0gLyAyO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7IC8vICh0aGlzIGFzIGFueSkudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/circle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/diamond.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/diamond.js ***!
\***********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 菱形shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('diamond', {\n // 自定义节点时的配置\n options: {\n size: [80, 80],\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'diamond',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var path = [['M', 0, -height / 2], ['L', width / 2, 0], ['L', 0, height / 2], ['L', -width / 2, 0], ['Z'] // 封闭\n ];\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kaWFtb25kLmpzPzI4NTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZGlhbW9uZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoj7HlvaJzaGFwZVxuXG5yZWdpc3Rlck5vZGUoJ2RpYW1vbmQnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzgwLCA4MF0sXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZGlhbW9uZCcsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpXSA9IGtleVNoYXBlO1xuICAgIHZhciB3ID0gaWNvbi53aWR0aCxcbiAgICAgICAgaCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICAgIHk6IC1oIC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAwLCAtaGVpZ2h0IC8gMl0sIFsnTCcsIHdpZHRoIC8gMiwgMF0sIFsnTCcsIDAsIGhlaWdodCAvIDJdLCBbJ0wnLCAtd2lkdGggLyAyLCAwXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgXTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/diamond.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/donut.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/donut.js ***!
\*********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\nvar defaultSubjectColors = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].defaultSubjectColors; // 饼图节点\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('donut', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n draggable: true,\n name: \"\".concat(this.type, \"-keyShape\")\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n var donutR = keyShape.attr('r');\n var innerR = 0.6 * donutR; // 甜甜圈的内环半径\n\n var arcR = (donutR + innerR) / 2; // 内环半径与外环半径的平均值\n\n var _b = cfg,\n _c = _b.donutAttrs,\n donutAttrs = _c === void 0 ? {} : _c,\n _d = _b.donutColorMap,\n donutColorMap = _d === void 0 ? {} : _d;\n var attrNum = Object.keys(donutAttrs).length;\n\n if (donutAttrs && attrNum > 1) {\n var attrs_1 = [];\n var totalValue_1 = 0;\n Object.keys(donutAttrs).forEach(function (name) {\n var value = donutAttrs[name] || 0;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(value)) return;\n attrs_1.push({\n key: name,\n value: value,\n color: donutColorMap[name]\n });\n totalValue_1 += value;\n });\n\n if (totalValue_1) {\n var lineWidth_1 = donutR - innerR;\n\n if (attrNum === 1) {\n group['shapeMap']['fan-shape-0'] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attrs_1[0].color || defaultSubjectColors[0],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-0\"\n });\n return;\n }\n\n var arcBegin_1 = [arcR, 0];\n var beginAngle_1 = 0;\n attrs_1.forEach(function (attr, i) {\n var percent = attr.value / totalValue_1;\n if (percent < 0.001) return;\n if (percent > 0.999) percent = 1;\n\n if (percent === 1) {\n group['shapeMap'][\"fan-shape-\".concat(i)] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-\".concat(i)\n });\n return;\n }\n\n attr.percent = percent;\n attr.angle = percent * Math.PI * 2;\n attr.beginAgnle = beginAngle_1;\n beginAngle_1 += attr.angle;\n attr.endAngle = beginAngle_1;\n attr.arcBegin = arcBegin_1;\n attr.arcEnd = [arcR * Math.cos(attr.endAngle), -arcR * Math.sin(attr.endAngle)];\n var isBig = attr.angle > Math.PI ? 1 : 0;\n var path = [['M', attr.arcBegin[0], attr.arcBegin[1]], ['A', arcR, arcR, 0, isBig, 0, attr.arcEnd[0], attr.arcEnd[1]], ['L', attr.arcEnd[0], attr.arcEnd[1]]];\n group['shapeMap'][\"fan-shape-\".concat(i)] = group.addShape('path', {\n attrs: {\n path: path,\n lineWidth: lineWidth_1,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length]\n },\n name: \"fan-shape-\".concat(i)\n });\n arcBegin_1 = attr.arcEnd;\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n update: undefined\n}, 'circle');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kb251dC5qcz82ZTI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ3dDO0FBQzFCO0FBQy9DLDJCQUEyQixrREFBSSxzQkFBc0I7O0FBRXJELGtFQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsa0JBQWtCLHdEQUFNO0FBQ3hCLG9CQUFvQix3REFBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLFlBQVksd0RBQU07QUFDbEIsY0FBYyx3REFBTTtBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0EsZUFBZSwwREFBTyxHQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsOEJBQThCOztBQUU5QixxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSwwQ0FBMEM7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZG9udXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCwgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZGVlcE1peCwgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBkZWZhdWx0U3ViamVjdENvbG9ycyA9IFV0aWwuZGVmYXVsdFN1YmplY3RDb2xvcnM7IC8vIOmlvOWbvuiKgueCuVxuXG5yZWdpc3Rlck5vZGUoJ2RvbnV0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIilcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRvbnV0UiA9IGtleVNoYXBlLmF0dHIoJ3InKTtcbiAgICB2YXIgaW5uZXJSID0gMC42ICogZG9udXRSOyAvLyDnlJznlJzlnIjnmoTlhoXnjq/ljYrlvoRcblxuICAgIHZhciBhcmNSID0gKGRvbnV0UiArIGlubmVyUikgLyAyOyAvLyDlhoXnjq/ljYrlvoTkuI7lpJbnjq/ljYrlvoTnmoTlubPlnYflgLxcblxuICAgIHZhciBfYiA9IGNmZyxcbiAgICAgICAgX2MgPSBfYi5kb251dEF0dHJzLFxuICAgICAgICBkb251dEF0dHJzID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2IuZG9udXRDb2xvck1hcCxcbiAgICAgICAgZG9udXRDb2xvck1hcCA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuICAgIHZhciBhdHRyTnVtID0gT2JqZWN0LmtleXMoZG9udXRBdHRycykubGVuZ3RoO1xuXG4gICAgaWYgKGRvbnV0QXR0cnMgJiYgYXR0ck51bSA+IDEpIHtcbiAgICAgIHZhciBhdHRyc18xID0gW107XG4gICAgICB2YXIgdG90YWxWYWx1ZV8xID0gMDtcbiAgICAgIE9iamVjdC5rZXlzKGRvbnV0QXR0cnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZG9udXRBdHRyc1tuYW1lXSB8fCAwO1xuICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuO1xuICAgICAgICBhdHRyc18xLnB1c2goe1xuICAgICAgICAgIGtleTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgY29sb3I6IGRvbnV0Q29sb3JNYXBbbmFtZV1cbiAgICAgICAgfSk7XG4gICAgICAgIHRvdGFsVmFsdWVfMSArPSB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG90YWxWYWx1ZV8xKSB7XG4gICAgICAgIHZhciBsaW5lV2lkdGhfMSA9IGRvbnV0UiAtIGlubmVyUjtcblxuICAgICAgICBpZiAoYXR0ck51bSA9PT0gMSkge1xuICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydmYW4tc2hhcGUtMCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHI6IGFyY1IsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgIHN0cm9rZTogYXR0cnNfMVswXS5jb2xvciB8fCBkZWZhdWx0U3ViamVjdENvbG9yc1swXSxcbiAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IFwiZmFuLXNoYXBlLTBcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhcmNCZWdpbl8xID0gW2FyY1IsIDBdO1xuICAgICAgICB2YXIgYmVnaW5BbmdsZV8xID0gMDtcbiAgICAgICAgYXR0cnNfMS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyLCBpKSB7XG4gICAgICAgICAgdmFyIHBlcmNlbnQgPSBhdHRyLnZhbHVlIC8gdG90YWxWYWx1ZV8xO1xuICAgICAgICAgIGlmIChwZXJjZW50IDwgMC4wMDEpIHJldHVybjtcbiAgICAgICAgICBpZiAocGVyY2VudCA+IDAuOTk5KSBwZXJjZW50ID0gMTtcblxuICAgICAgICAgIGlmIChwZXJjZW50ID09PSAxKSB7XG4gICAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIi5jb25jYXQoaSldID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByOiBhcmNSLFxuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF0sXG4gICAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIi5jb25jYXQoaSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF0dHIucGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgICAgICAgYXR0ci5hbmdsZSA9IHBlcmNlbnQgKiBNYXRoLlBJICogMjtcbiAgICAgICAgICBhdHRyLmJlZ2luQWdubGUgPSBiZWdpbkFuZ2xlXzE7XG4gICAgICAgICAgYmVnaW5BbmdsZV8xICs9IGF0dHIuYW5nbGU7XG4gICAgICAgICAgYXR0ci5lbmRBbmdsZSA9IGJlZ2luQW5nbGVfMTtcbiAgICAgICAgICBhdHRyLmFyY0JlZ2luID0gYXJjQmVnaW5fMTtcbiAgICAgICAgICBhdHRyLmFyY0VuZCA9IFthcmNSICogTWF0aC5jb3MoYXR0ci5lbmRBbmdsZSksIC1hcmNSICogTWF0aC5zaW4oYXR0ci5lbmRBbmdsZSldO1xuICAgICAgICAgIHZhciBpc0JpZyA9IGF0dHIuYW5nbGUgPiBNYXRoLlBJID8gMSA6IDA7XG4gICAgICAgICAgdmFyIHBhdGggPSBbWydNJywgYXR0ci5hcmNCZWdpblswXSwgYXR0ci5hcmNCZWdpblsxXV0sIFsnQScsIGFyY1IsIGFyY1IsIDAsIGlzQmlnLCAwLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dLCBbJ0wnLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dXTtcbiAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIi5jb25jYXQoaSldID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICBsaW5lV2lkdGg6IGxpbmVXaWR0aF8xLFxuICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIi5jb25jYXQoaSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmNCZWdpbl8xID0gYXR0ci5hcmNFbmQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuICB1cGRhdGU6IHVuZGVmaW5lZFxufSwgJ2NpcmNsZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/donut.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/ellipse.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/ellipse.js ***!
\***********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n/**\n * 基本的椭圆,可以添加文本,默认文本居中\n */\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('ellipse', {\n // 自定义节点时的配置\n options: {\n size: [80, 40],\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'ellipse',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('ellipse', {\n attrs: style,\n className: 'ellipse-keyShape',\n name: 'ellipse-keyShape',\n draggable: true\n });\n group['shapeMap']['ellipse-keyShape'] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n rx: rx,\n ry: ry\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var strokeStyle = {\n stroke: cfg.color,\n rx: size[0] / 2,\n ry: size[1] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9lbGxpcHNlLmpzP2I2NGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7QUFDakM7QUFDQTtBQUNBOztBQUVBLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyByZWdpc3Rlck5vZGUsIEJhc2VHbG9iYWwgYXMgR2xvYmFsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgeyBtaXggfSBmcm9tICdAYW50di91dGlsJztcbi8qKlxuICog5Z+65pys55qE5qSt5ZyG77yM5Y+v5Lul5re75Yqg5paH5pys77yM6buY6K6k5paH5pys5bGF5LitXG4gKi9cblxucmVnaXN0ZXJOb2RlKCdlbGxpcHNlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFs4MCwgNDBdLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZWxsaXBzZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnZWxsaXBzZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgbmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VsbGlwc2Uta2V5U2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgcnggPSBzaXplWzBdIC8gMjtcbiAgICB2YXIgcnkgPSBzaXplWzFdIC8gMjtcblxuICAgIGlmIChsZWZ0KSB7XG4gICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtcnksXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHJ5LFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHJ4ID0gc2l6ZVswXSAvIDI7XG4gICAgdmFyIHJ5ID0gc2l6ZVsxXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByeDogcngsXG4gICAgICByeTogcnlcbiAgICB9LCBzdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpOyAvLyDov5nph4zkuI3kvKAgY2ZnIOWPguaVsOaYr+WboOS4uiBjZmcuc3R5bGUg6ZyA6KaB5pyA5ZCO6KaG55uW5qC35byPXG5cbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5nZXRPcHRpb25zKHt9KS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcng6IHNpemVbMF0gLyAyLFxuICAgICAgcnk6IHNpemVbMV0gLyAyXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIHRydWUsIHVwZGF0ZVR5cGUpO1xuICAgIHRoaXMudXBkYXRlTGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/ellipse.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/index.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/index.js ***!
\*********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g6-element/es/nodes/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g6-element/es/nodes/rect.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g6-element/es/nodes/ellipse.js\");\n/* harmony import */ var _diamond__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diamond */ \"./node_modules/@antv/g6-element/es/nodes/diamond.js\");\n/* harmony import */ var _triangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triangle */ \"./node_modules/@antv/g6-element/es/nodes/triangle.js\");\n/* harmony import */ var _modelRect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modelRect */ \"./node_modules/@antv/g6-element/es/nodes/modelRect.js\");\n/* harmony import */ var _star__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./star */ \"./node_modules/@antv/g6-element/es/nodes/star.js\");\n/* harmony import */ var _donut__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./donut */ \"./node_modules/@antv/g6-element/es/nodes/donut.js\");\n\n\n\n\n\n\n\n // import './image';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9pbmRleC5qcz84NjI1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQjtBQUNGO0FBQ0c7QUFDQTtBQUNDO0FBQ0M7QUFDTDtBQUNDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vY2lyY2xlJztcbmltcG9ydCAnLi9yZWN0JztcbmltcG9ydCAnLi9lbGxpcHNlJztcbmltcG9ydCAnLi9kaWFtb25kJztcbmltcG9ydCAnLi90cmlhbmdsZSc7XG5pbXBvcnQgJy4vbW9kZWxSZWN0JztcbmltcG9ydCAnLi9zdGFyJztcbmltcG9ydCAnLi9kb251dCc7IC8vIGltcG9ydCAnLi9pbWFnZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/modelRect.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/modelRect.js ***!
\*************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('modelRect', {\n // 自定义节点时的配置\n options: {\n size: [185, 70],\n style: {\n radius: 5,\n stroke: '#69c0ff',\n fill: '#ffffff',\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth,\n fillOpacity: 1\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: '#595959',\n fontSize: 14,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n offset: 30 // 距离左侧的 offset,没有设置 y 轴上移动的配置\n\n },\n descriptionCfg: {\n style: {\n fontSize: 12,\n fill: '#bfbfbf',\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n paddingTop: 0\n },\n preRect: {\n show: true,\n width: 4,\n fill: '#40a9ff',\n radius: 2\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: 10,\n lineWidth: 1,\n fill: '#72CC4A',\n stroke: '#72CC4A'\n },\n // 节点中icon配置\n logoIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/4f81893c-1806-4de4-aff3-9a6b266bc8a2.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: 0\n },\n // 节点中表示状态的icon配置\n stateIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/300a2523-67e0-4cbf-9d4a-67c077b40395.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: -5\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]]\n },\n shapeType: 'modelRect',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).preRect,\n preRect = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n\n var preRectShow = preRect.show,\n preRectStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(preRect, [\"show\"]);\n\n if (preRectShow) {\n group['shapeMap']['pre-rect'] = group.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n height: height\n }, preRectStyle),\n className: 'pre-rect',\n name: 'pre-rect',\n draggable: true\n });\n }\n\n this.drawLogoIcon(cfg, group);\n this.drawStateIcon(cfg, group);\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制模型矩形左边的logo图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawLogoIcon: function drawLogoIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).logoIcon,\n logoIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (logoIcon.show) {\n var w = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n offset = logoIcon.offset,\n text = logoIcon.text,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-logo-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, logoIconStyle),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-logo-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制模型矩形右边的状态图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawStateIcon: function drawStateIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).stateIcon,\n stateIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (stateIcon.show) {\n var w = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n offset = stateIcon.offset,\n text = stateIcon.text,\n iconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-state-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, iconStyle),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-state-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconStyle), {\n x: x || width / 2 - w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n drawLabel: function drawLabel(cfg, group) {\n var _a = this.getOptions(cfg),\n _b = _a.labelCfg,\n labelCfg = _b === void 0 ? {} : _b,\n _c = _a.logoIcon,\n logoIcon = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var label = null;\n var show = logoIcon.show,\n w = logoIcon.width;\n var offsetX = -width / 2 + labelCfg.offset;\n\n if (show) {\n offsetX = -width / 2 + w + labelCfg.offset;\n }\n\n var fontStyle = labelCfg.style;\n var descriptionStyle = descriptionCfg.style,\n descriptionPaddingTop = descriptionCfg.paddingTop;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: -5,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true,\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n x: offsetX,\n y: 17 + (descriptionPaddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true,\n labelRelated: true\n });\n } else {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: 7,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true,\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n }\n\n return label;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.style,\n style = _b === void 0 ? {} : _b,\n _c = _a.labelCfg,\n labelCfg = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, style), {\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }));\n var group = item.getContainer();\n var logoIconShape = group['shapeMap']['rect-logo-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-logo-icon';\n });\n var currentLogoIconAttr = logoIconShape ? logoIconShape.attr() : {};\n var logoIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLogoIconAttr, cfg.logoIcon);\n var w = logoIcon.width;\n\n if (w === undefined) {\n w = this.options.logoIcon.width;\n }\n\n var show = cfg.logoIcon ? cfg.logoIcon.show : undefined;\n var offset = labelCfg.offset;\n var offsetX = -width / 2 + w + offset;\n\n if (!show && show !== undefined) {\n offsetX = -width / 2 + offset;\n }\n\n var label = group['shapeMap']['node-label'] || group.find(function (element) {\n return element.get('className') === 'node-label';\n });\n var description = group['shapeMap']['rect-description'] || group.find(function (element) {\n return element.get('className') === 'rect-description';\n });\n\n if (cfg.label) {\n if (!label) {\n group['shapeMap']['node-label'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, labelCfg.style), {\n x: offsetX,\n y: cfg.description ? -5 : 7,\n text: cfg.label\n }),\n className: 'node-label',\n name: 'node-label',\n draggable: true,\n labelRelated: true\n });\n } else {\n var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : {};\n var labelStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, label.attr(), cfgStyle);\n if (cfg.label) labelStyle.text = cfg.label;\n labelStyle.x = offsetX;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) labelStyle.y = -5;\n\n if (description) {\n description.resetMatrix();\n description.attr({\n x: offsetX\n });\n }\n\n label.resetMatrix();\n label.attr(labelStyle);\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n var paddingTop = descriptionCfg.paddingTop;\n\n if (!description) {\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionCfg.style), {\n x: offsetX,\n y: 17 + (paddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true,\n labelRelated: true\n });\n } else {\n var cfgStyle = cfg.descriptionCfg ? cfg.descriptionCfg.style : {};\n var descriptionStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, description.attr(), cfgStyle);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) descriptionStyle.text = cfg.description;\n descriptionStyle.x = offsetX;\n description.resetMatrix();\n description.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n y: 17 + (paddingTop || 0)\n }));\n }\n }\n\n var preRectShape = group['shapeMap']['pre-rect'] || group.find(function (element) {\n return element.get('className') === 'pre-rect';\n });\n\n if (preRectShape && !preRectShape.destroyed) {\n var preRect = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, preRectShape.attr(), cfg.preRect);\n preRectShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, preRect), {\n x: -width / 2,\n y: -height / 2,\n height: height\n }));\n }\n\n if (logoIconShape && !logoIconShape.destroyed) {\n if (!show && show !== undefined) {\n logoIconShape.remove();\n delete group['shapeMap']['pre-rect'];\n } else {\n var logoW = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n logoOffset = logoIcon.offset,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n logoIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + logoW + logoOffset,\n y: y || -h / 2,\n width: logoW,\n height: h\n }));\n }\n } else if (show) {\n this.drawLogoIcon(cfg, group);\n }\n\n var stateIconShape = group['shapeMap']['rect-state-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-state-icon';\n });\n var currentStateIconAttr = stateIconShape ? stateIconShape.attr() : {};\n var stateIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentStateIconAttr, cfg.stateIcon);\n\n if (stateIconShape) {\n if (!stateIcon.show && stateIcon.show !== undefined) {\n stateIconShape.remove();\n delete group['shapeMap']['rect-state-icon'];\n }\n\n var stateW = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n stateOffset = stateIcon.offset,\n stateIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n stateIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, stateIconStyle), {\n x: x || width / 2 - stateW + stateOffset,\n y: y || -h / 2,\n width: stateW,\n height: h\n }));\n } else if (stateIcon.show) {\n this.drawStateIcon(cfg, group);\n }\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9tb2RlbFJlY3QuanM/NjFmOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNFO0FBQ3dCO0FBQ25FLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQU07QUFDdkI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3REFBTTtBQUMxQixPQUFPO0FBQ1A7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdEQUFNO0FBQzFCLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVCQUF1QixlQUFlLEdBQUcsZUFBZTtBQUN4RDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLG9EQUFNOztBQUU3QjtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBTTs7QUFFaEM7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU07O0FBRTVCO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsc0RBQUcsR0FBRztBQUMvQjtBQUNBO0FBQ0EsWUFBWSwyREFBUTs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsK0JBQStCLHNEQUFHLEdBQUc7QUFDckMsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0EseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM3QztBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0Esb0JBQW9CLHNEQUFHLEdBQUc7QUFDMUIsd0JBQXdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM1QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixvREFBTTs7QUFFbEMsMkJBQTJCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxvQkFBb0Isc0RBQUcsR0FBRzs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9EQUFNOztBQUVqQywwQkFBMEIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvbW9kZWxSZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWl4LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xucmVnaXN0ZXJOb2RlKCdtb2RlbFJlY3QnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzE4NSwgNzBdLFxuICAgIHN0eWxlOiB7XG4gICAgICByYWRpdXM6IDUsXG4gICAgICBzdHJva2U6ICcjNjljMGZmJyxcbiAgICAgIGZpbGw6ICcjZmZmZmZmJyxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmxpbmVXaWR0aCxcbiAgICAgIGZpbGxPcGFjaXR5OiAxXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogJyM1OTU5NTknLFxuICAgICAgICBmb250U2l6ZTogMTQsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9LFxuICAgICAgb2Zmc2V0OiAzMCAvLyDot53nprvlt6bkvqfnmoQgb2Zmc2V077yM5rKh5pyJ6K6+572uIHkg6L205LiK56e75Yqo55qE6YWN572uXG5cbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgIGZpbGw6ICcjYmZiZmJmJyxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH0sXG4gICAgICBwYWRkaW5nVG9wOiAwXG4gICAgfSxcbiAgICBwcmVSZWN0OiB7XG4gICAgICBzaG93OiB0cnVlLFxuICAgICAgd2lkdGg6IDQsXG4gICAgICBmaWxsOiAnIzQwYTlmZicsXG4gICAgICByYWRpdXM6IDJcbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IDEwLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogJyM3MkNDNEEnLFxuICAgICAgc3Ryb2tlOiAnIzcyQ0M0QSdcbiAgICB9LFxuICAgIC8vIOiKgueCueS4rWljb27phY3nva5cbiAgICBsb2dvSWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiB0cnVlLFxuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9iYXNlbWVudF9wcm9kLzRmODE4OTNjLTE4MDYtNGRlNC1hZmYzLTlhNmIyNjZiYzhhMi5zdmcnLFxuICAgICAgd2lkdGg6IDE2LFxuICAgICAgaGVpZ2h0OiAxNixcbiAgICAgIC8vIOeUqOS6juiwg+aVtOWbvuagh+eahOW3puWPs+S9jee9rlxuICAgICAgb2Zmc2V0OiAwXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK3ooajnpLrnirbmgIHnmoRpY29u6YWN572uXG4gICAgc3RhdGVJY29uOiB7XG4gICAgICAvLyDmmK/lkKbmmL7npLppY29u77yM5YC85Li6IGZhbHNlIOWImeS4jea4suafk2ljb25cbiAgICAgIHNob3c6IHRydWUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jhc2VtZW50X3Byb2QvMzAwYTI1MjMtNjdlMC00Y2JmLTlkNGEtNjdjMDc3YjQwMzk1LnN2ZycsXG4gICAgICB3aWR0aDogMTYsXG4gICAgICBoZWlnaHQ6IDE2LFxuICAgICAgLy8g55So5LqO6LCD5pW05Zu+5qCH55qE5bem5Y+z5L2N572uXG4gICAgICBvZmZzZXQ6IC01XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICAvLyBhbmNob3JQb2ludHM6IFt7IHg6IDAsIHk6IDAuNSB9LCB7IHg6IDEsIHk6IDAuNSB9XVxuICAgIGFuY2hvclBvaW50czogW1swLCAwLjVdLCBbMSwgMC41XV1cbiAgfSxcbiAgc2hhcGVUeXBlOiAnbW9kZWxSZWN0JyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnByZVJlY3QsXG4gICAgICAgIHByZVJlY3QgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKV0gPSBrZXlTaGFwZTtcblxuICAgIHZhciBwcmVSZWN0U2hvdyA9IHByZVJlY3Quc2hvdyxcbiAgICAgICAgcHJlUmVjdFN0eWxlID0gX19yZXN0KHByZVJlY3QsIFtcInNob3dcIl0pO1xuXG4gICAgaWYgKHByZVJlY3RTaG93KSB7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsncHJlLXJlY3QnXSA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfSwgcHJlUmVjdFN0eWxlKSxcbiAgICAgICAgY2xhc3NOYW1lOiAncHJlLXJlY3QnLFxuICAgICAgICBuYW1lOiAncHJlLXJlY3QnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd0xvZ29JY29uKGNmZywgZ3JvdXApO1xuICAgIHRoaXMuZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKTtcbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi25qih5Z6L55+p5b2i5bem6L6555qEbG9nb+Wbvuagh1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBHcm91cOWunuS+i1xuICAgKi9cbiAgZHJhd0xvZ29JY29uOiBmdW5jdGlvbiBkcmF3TG9nb0ljb24oY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxvZ29JY29uLFxuICAgICAgICBsb2dvSWNvbiA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcblxuICAgIGlmIChsb2dvSWNvbi5zaG93KSB7XG4gICAgICB2YXIgdyA9IGxvZ29JY29uLndpZHRoLFxuICAgICAgICAgIGggPSBsb2dvSWNvbi5oZWlnaHQsXG4gICAgICAgICAgeCA9IGxvZ29JY29uLngsXG4gICAgICAgICAgeSA9IGxvZ29JY29uLnksXG4gICAgICAgICAgb2Zmc2V0ID0gbG9nb0ljb24ub2Zmc2V0LFxuICAgICAgICAgIHRleHQgPSBsb2dvSWNvbi50ZXh0LFxuICAgICAgICAgIGxvZ29JY29uU3R5bGUgPSBfX3Jlc3QobG9nb0ljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIiwgXCJ0ZXh0XCJdKTtcblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtbG9nby1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgbG9nb0ljb25TdHlsZSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1sb2dvLWljb24nLFxuICAgICAgICAgIG5hbWU6ICdyZWN0LWxvZ28taWNvbicsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtbG9nby1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBsb2dvSWNvblN0eWxlKSwge1xuICAgICAgICAgICAgeDogeCB8fCAtd2lkdGggLyAyICsgdyArIG9mZnNldCxcbiAgICAgICAgICAgIHk6IHkgfHwgLWggLyAyLFxuICAgICAgICAgICAgd2lkdGg6IHcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWxvZ28taWNvbicsXG4gICAgICAgICAgbmFtZTogJ3JlY3QtbG9nby1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbmqKHlnovnn6nlvaLlj7PovrnnmoTnirbmgIHlm77moIdcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdTdGF0ZUljb246IGZ1bmN0aW9uIGRyYXdTdGF0ZUljb24oY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnN0YXRlSWNvbixcbiAgICAgICAgc3RhdGVJY29uID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuXG4gICAgaWYgKHN0YXRlSWNvbi5zaG93KSB7XG4gICAgICB2YXIgdyA9IHN0YXRlSWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gc3RhdGVJY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gc3RhdGVJY29uLngsXG4gICAgICAgICAgeSA9IHN0YXRlSWNvbi55LFxuICAgICAgICAgIG9mZnNldCA9IHN0YXRlSWNvbi5vZmZzZXQsXG4gICAgICAgICAgdGV4dCA9IHN0YXRlSWNvbi50ZXh0LFxuICAgICAgICAgIGljb25TdHlsZSA9IF9fcmVzdChzdGF0ZUljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIiwgXCJ0ZXh0XCJdKTtcblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3Qtc3RhdGUtaWNvbiddID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgICAgZmlsbDogJyMwMDAnLFxuICAgICAgICAgICAgc3Ryb2tlOiAnIzAwMCcsXG4gICAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICAgIH0sIGljb25TdHlsZSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB4IHx8IHdpZHRoIC8gMiAtIHcgKyBvZmZzZXQsXG4gICAgICAgICAgICB5OiB5IHx8IC1oIC8gMixcbiAgICAgICAgICAgIHdpZHRoOiB3LFxuICAgICAgICAgICAgaGVpZ2h0OiBoXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLboioLngrnkuIrnmoRMaW5rUG9pbnRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgZGF0YeaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBHcm91cOWunuS+i1xuICAgKi9cbiAgZHJhd0xpbmtQb2ludHM6IGZ1bmN0aW9uIGRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgX2EgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5saW5rUG9pbnRzLFxuICAgICAgICBsaW5rUG9pbnRzID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG5cbiAgICB2YXIgdG9wID0gbGlua1BvaW50cy50b3AsXG4gICAgICAgIGxlZnQgPSBsaW5rUG9pbnRzLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gbGlua1BvaW50cy5yaWdodCxcbiAgICAgICAgYm90dG9tID0gbGlua1BvaW50cy5ib3R0b20sXG4gICAgICAgIG1hcmtTaXplID0gbGlua1BvaW50cy5zaXplLFxuICAgICAgICBtYXJrUiA9IGxpbmtQb2ludHMucixcbiAgICAgICAgbWFya1N0eWxlID0gX19yZXN0KGxpbmtQb2ludHMsIFtcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcInNpemVcIiwgXCJyXCJdKTtcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcblxuICAgIGlmIChsZWZ0KSB7XG4gICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiB3aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRvcCkge1xuICAgICAgLy8gdG9wIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChib3R0b20pIHtcbiAgICAgIC8vIGJvdHRvbSBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMuZ2V0T3B0aW9ucyhjZmcpLFxuICAgICAgICBfYiA9IF9hLmxhYmVsQ2ZnLFxuICAgICAgICBsYWJlbENmZyA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLFxuICAgICAgICBfYyA9IF9hLmxvZ29JY29uLFxuICAgICAgICBsb2dvSWNvbiA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jLFxuICAgICAgICBfZCA9IF9hLmRlc2NyaXB0aW9uQ2ZnLFxuICAgICAgICBkZXNjcmlwdGlvbkNmZyA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBsYWJlbCA9IG51bGw7XG4gICAgdmFyIHNob3cgPSBsb2dvSWNvbi5zaG93LFxuICAgICAgICB3ID0gbG9nb0ljb24ud2lkdGg7XG4gICAgdmFyIG9mZnNldFggPSAtd2lkdGggLyAyICsgbGFiZWxDZmcub2Zmc2V0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIG9mZnNldFggPSAtd2lkdGggLyAyICsgdyArIGxhYmVsQ2ZnLm9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgZm9udFN0eWxlID0gbGFiZWxDZmcuc3R5bGU7XG4gICAgdmFyIGRlc2NyaXB0aW9uU3R5bGUgPSBkZXNjcmlwdGlvbkNmZy5zdHlsZSxcbiAgICAgICAgZGVzY3JpcHRpb25QYWRkaW5nVG9wID0gZGVzY3JpcHRpb25DZmcucGFkZGluZ1RvcDtcblxuICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSB7XG4gICAgICBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGZvbnRTdHlsZSksIHtcbiAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgIHk6IC01LFxuICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbFxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAndGV4dC1zaGFwZScsXG4gICAgICAgIG5hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtZGVzY3JpcHRpb24nXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeDogb2Zmc2V0WCxcbiAgICAgICAgICB5OiAxNyArIChkZXNjcmlwdGlvblBhZGRpbmdUb3AgfHwgMCksXG4gICAgICAgICAgdGV4dDogY2ZnLmRlc2NyaXB0aW9uXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWRlc2NyaXB0aW9uJyxcbiAgICAgICAgbmFtZTogJ3JlY3QtZGVzY3JpcHRpb24nLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGxhYmVsUmVsYXRlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9udFN0eWxlKSwge1xuICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgeTogNyxcbiAgICAgICAgICB0ZXh0OiBjZmcubGFiZWxcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgICBuYW1lOiAndGV4dC1zaGFwZScsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgbGFiZWxSZWxhdGVkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LXNoYXBlJ10gPSBsYWJlbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueeahOagt+W8j++8jOS+m+WfuuS6juivpeiKgueCueiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOiKgueCueeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHN0eWxlLmhlaWdodCB8fCBzaXplWzFdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIF9hID0gdGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpLFxuICAgICAgICBfYiA9IF9hLnN0eWxlLFxuICAgICAgICBzdHlsZSA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLFxuICAgICAgICBfYyA9IF9hLmxhYmVsQ2ZnLFxuICAgICAgICBsYWJlbENmZyA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jLFxuICAgICAgICBfZCA9IF9hLmRlc2NyaXB0aW9uQ2ZnLFxuICAgICAgICBkZXNjcmlwdGlvbkNmZyA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIGtleVNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlKSwge1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9KSk7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgbG9nb0ljb25TaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydyZWN0LWxvZ28taWNvbiddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdyZWN0LWxvZ28taWNvbic7XG4gICAgfSk7XG4gICAgdmFyIGN1cnJlbnRMb2dvSWNvbkF0dHIgPSBsb2dvSWNvblNoYXBlID8gbG9nb0ljb25TaGFwZS5hdHRyKCkgOiB7fTtcbiAgICB2YXIgbG9nb0ljb24gPSBtaXgoe30sIGN1cnJlbnRMb2dvSWNvbkF0dHIsIGNmZy5sb2dvSWNvbik7XG4gICAgdmFyIHcgPSBsb2dvSWNvbi53aWR0aDtcblxuICAgIGlmICh3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHcgPSB0aGlzLm9wdGlvbnMubG9nb0ljb24ud2lkdGg7XG4gICAgfVxuXG4gICAgdmFyIHNob3cgPSBjZmcubG9nb0ljb24gPyBjZmcubG9nb0ljb24uc2hvdyA6IHVuZGVmaW5lZDtcbiAgICB2YXIgb2Zmc2V0ID0gbGFiZWxDZmcub2Zmc2V0O1xuICAgIHZhciBvZmZzZXRYID0gLXdpZHRoIC8gMiArIHcgKyBvZmZzZXQ7XG5cbiAgICBpZiAoIXNob3cgJiYgc2hvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvZmZzZXRYID0gLXdpZHRoIC8gMiArIG9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgbGFiZWwgPSBncm91cFsnc2hhcGVNYXAnXVsnbm9kZS1sYWJlbCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdub2RlLWxhYmVsJztcbiAgICB9KTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1kZXNjcmlwdGlvbiddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdyZWN0LWRlc2NyaXB0aW9uJztcbiAgICB9KTtcblxuICAgIGlmIChjZmcubGFiZWwpIHtcbiAgICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ25vZGUtbGFiZWwnXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbGFiZWxDZmcuc3R5bGUpLCB7XG4gICAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgICAgeTogY2ZnLmRlc2NyaXB0aW9uID8gLTUgOiA3LFxuICAgICAgICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbm9kZS1sYWJlbCcsXG4gICAgICAgICAgbmFtZTogJ25vZGUtbGFiZWwnLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgY2ZnU3R5bGUgPSBjZmcubGFiZWxDZmcgPyBjZmcubGFiZWxDZmcuc3R5bGUgOiB7fTtcbiAgICAgICAgdmFyIGxhYmVsU3R5bGUgPSBtaXgoe30sIGxhYmVsLmF0dHIoKSwgY2ZnU3R5bGUpO1xuICAgICAgICBpZiAoY2ZnLmxhYmVsKSBsYWJlbFN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgICAgIGxhYmVsU3R5bGUueCA9IG9mZnNldFg7XG4gICAgICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSBsYWJlbFN0eWxlLnkgPSAtNTtcblxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbi5yZXNldE1hdHJpeCgpO1xuICAgICAgICAgIGRlc2NyaXB0aW9uLmF0dHIoe1xuICAgICAgICAgICAgeDogb2Zmc2V0WFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgbGFiZWwuYXR0cihsYWJlbFN0eWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoY2ZnLmRlc2NyaXB0aW9uKSkge1xuICAgICAgdmFyIHBhZGRpbmdUb3AgPSBkZXNjcmlwdGlvbkNmZy5wYWRkaW5nVG9wO1xuXG4gICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LWRlc2NyaXB0aW9uJ10gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uQ2ZnLnN0eWxlKSwge1xuICAgICAgICAgICAgeDogb2Zmc2V0WCxcbiAgICAgICAgICAgIHk6IDE3ICsgKHBhZGRpbmdUb3AgfHwgMCksXG4gICAgICAgICAgICB0ZXh0OiBjZmcuZGVzY3JpcHRpb25cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWRlc2NyaXB0aW9uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1kZXNjcmlwdGlvbicsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgIGxhYmVsUmVsYXRlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjZmdTdHlsZSA9IGNmZy5kZXNjcmlwdGlvbkNmZyA/IGNmZy5kZXNjcmlwdGlvbkNmZy5zdHlsZSA6IHt9O1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25TdHlsZSA9IG1peCh7fSwgZGVzY3JpcHRpb24uYXR0cigpLCBjZmdTdHlsZSk7XG4gICAgICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSBkZXNjcmlwdGlvblN0eWxlLnRleHQgPSBjZmcuZGVzY3JpcHRpb247XG4gICAgICAgIGRlc2NyaXB0aW9uU3R5bGUueCA9IG9mZnNldFg7XG4gICAgICAgIGRlc2NyaXB0aW9uLnJlc2V0TWF0cml4KCk7XG4gICAgICAgIGRlc2NyaXB0aW9uLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeTogMTcgKyAocGFkZGluZ1RvcCB8fCAwKVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZVJlY3RTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydwcmUtcmVjdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdwcmUtcmVjdCc7XG4gICAgfSk7XG5cbiAgICBpZiAocHJlUmVjdFNoYXBlICYmICFwcmVSZWN0U2hhcGUuZGVzdHJveWVkKSB7XG4gICAgICB2YXIgcHJlUmVjdCA9IG1peCh7fSwgcHJlUmVjdFNoYXBlLmF0dHIoKSwgY2ZnLnByZVJlY3QpO1xuICAgICAgcHJlUmVjdFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHByZVJlY3QpLCB7XG4gICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChsb2dvSWNvblNoYXBlICYmICFsb2dvSWNvblNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgaWYgKCFzaG93ICYmIHNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2dvSWNvblNoYXBlLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3ByZS1yZWN0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbG9nb1cgPSBsb2dvSWNvbi53aWR0aCxcbiAgICAgICAgICAgIGggPSBsb2dvSWNvbi5oZWlnaHQsXG4gICAgICAgICAgICB4ID0gbG9nb0ljb24ueCxcbiAgICAgICAgICAgIHkgPSBsb2dvSWNvbi55LFxuICAgICAgICAgICAgbG9nb09mZnNldCA9IGxvZ29JY29uLm9mZnNldCxcbiAgICAgICAgICAgIGxvZ29JY29uU3R5bGUgPSBfX3Jlc3QobG9nb0ljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICAgIGxvZ29JY29uU2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbG9nb0ljb25TdHlsZSksIHtcbiAgICAgICAgICB4OiB4IHx8IC13aWR0aCAvIDIgKyBsb2dvVyArIGxvZ29PZmZzZXQsXG4gICAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgICAgd2lkdGg6IGxvZ29XLFxuICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG93KSB7XG4gICAgICB0aGlzLmRyYXdMb2dvSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB2YXIgc3RhdGVJY29uU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3Qtc3RhdGUtaWNvbic7XG4gICAgfSk7XG4gICAgdmFyIGN1cnJlbnRTdGF0ZUljb25BdHRyID0gc3RhdGVJY29uU2hhcGUgPyBzdGF0ZUljb25TaGFwZS5hdHRyKCkgOiB7fTtcbiAgICB2YXIgc3RhdGVJY29uID0gbWl4KHt9LCBjdXJyZW50U3RhdGVJY29uQXR0ciwgY2ZnLnN0YXRlSWNvbik7XG5cbiAgICBpZiAoc3RhdGVJY29uU2hhcGUpIHtcbiAgICAgIGlmICghc3RhdGVJY29uLnNob3cgJiYgc3RhdGVJY29uLnNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzdGF0ZUljb25TaGFwZS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LXN0YXRlLWljb24nXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlVyA9IHN0YXRlSWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gc3RhdGVJY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gc3RhdGVJY29uLngsXG4gICAgICAgICAgeSA9IHN0YXRlSWNvbi55LFxuICAgICAgICAgIHN0YXRlT2Zmc2V0ID0gc3RhdGVJY29uLm9mZnNldCxcbiAgICAgICAgICBzdGF0ZUljb25TdHlsZSA9IF9fcmVzdChzdGF0ZUljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICBzdGF0ZUljb25TaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZUljb25TdHlsZSksIHtcbiAgICAgICAgeDogeCB8fCB3aWR0aCAvIDIgLSBzdGF0ZVcgKyBzdGF0ZU9mZnNldCxcbiAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgIHdpZHRoOiBzdGF0ZVcsXG4gICAgICAgIGhlaWdodDogaFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGVJY29uLnNob3cpIHtcbiAgICAgIHRoaXMuZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/modelRect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/rect.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/rect.js ***!
\********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9yZWN0LmpzPzZkNTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDUjtBQUNrQztBQUNuRSxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xucmVnaXN0ZXJOb2RlKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFsxMDAsIDMwXSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgLy8g6L+e5o6l54K577yM6buY6K6k5Li65bem5Y+zXG4gICAgLy8gYW5jaG9yUG9pbnRzOiBbeyB4OiAwLCB5OiAwLjUgfSwgeyB4OiAxLCB5OiAwLjUgfV1cbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAncmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKV0gPSBrZXlTaGFwZTtcbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG5cbiAgICBpZiAobGVmdCkge1xuICAgICAgLy8gbGVmdCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueeahOagt+W8j++8jOS+m+WfuuS6juivpeiKgueCueiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOiKgueCueeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHN0eWxlLmhlaWdodCB8fCBzaXplWzFdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8g6L+Z6YeM5LiN5LygIGNmZyDlj4LmlbDmmK/lm6DkuLogY2ZnLnN0eWxlIOmcgOimgeacgOWQjuimhuebluagt+W8j1xuXG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMuZ2V0T3B0aW9ucyh7fSkuc3R5bGU7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcblxuICAgIGlmICghY2ZnLnNpemUpIHtcbiAgICAgIHNpemVbMF0gPSBrZXlTaGFwZS5hdHRyKCd3aWR0aCcpIHx8IGRlZmF1bHRTdHlsZS53aWR0aDtcbiAgICAgIHNpemVbMV0gPSBrZXlTaGFwZS5hdHRyKCdoZWlnaHQnKSB8fCBkZWZhdWx0U3R5bGUuaGVpZ2h0O1xuICAgIH0gLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG5cbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAgIHg6IC1zaXplWzBdIC8gMixcbiAgICAgIHk6IC1zaXplWzFdIC8gMixcbiAgICAgIHdpZHRoOiBzaXplWzBdLFxuICAgICAgaGVpZ2h0OiBzaXplWzFdXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/rect.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/star.js":
/*!********************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/star.js ***!
\********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 五角星shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('star', {\n // 自定义节点时的配置\n options: {\n size: 60,\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'star',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n leftBottom = linkPoints.leftBottom,\n rightBottom = linkPoints.rightBottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"leftBottom\", \"rightBottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR; // top circle\n\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR; // left circle\n\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n\n if (leftBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom'\n });\n }\n\n if (rightBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom'\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var outerR = size[0];\n var defaultInnerR = outerR * 3 / 8;\n var innerR = cfg.innerR || defaultInnerR;\n var path = [];\n\n for (var i = 0; i < 5; i++) {\n var x1 = Math.cos((18 + 72 * i) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * i) / 180 * Math.PI) * outerR;\n var x2 = Math.cos((54 + 72 * i) / 180 * Math.PI) * innerR;\n var y2 = Math.sin((54 + 72 * i) / 180 * Math.PI) * innerR;\n\n if (i === 0) {\n path.push(['M', x1, -y1]);\n } else {\n path.push(['L', x1, -y1]);\n }\n\n path.push(['L', x2, -y2]);\n }\n\n path.push(['Z']);\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖原来默认的 stroke 属性。但 cfg 中但 stroke 属性优先级更高\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = this.getOptions({}).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markLeftBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-left-bottom';\n });\n var markRightBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-right-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markLeftBottom || markRightBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n leftBottom: undefined,\n rightBottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n leftBottom = _a.leftBottom,\n rightBottom = _a.rightBottom;\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var x = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR;\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR;\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR;\n\n if (markLeftBottom) {\n if (!leftBottom && leftBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-left-bottom'];\n } else {\n markLeftBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (leftBottom) {\n group['shapeMap']['link-point-left-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR;\n\n if (markRightBottom) {\n if (!rightBottom && rightBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-right-bottom'];\n } else {\n markRightBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (rightBottom) {\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom',\n isAnchorPoint: true\n });\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzP2M1ZDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7O0FBRWhFO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN6QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQkFBc0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzFDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDaEQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNqRDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS6lOinkuaYn3NoYXBlXG5cbnJlZ2lzdGVyTm9kZSgnc3RhcicsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiA2MCxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzdGFyJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgaWNvbiA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIildID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIHRleHQgPSBpY29uLnRleHQ7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXcgLyAyLFxuICAgICAgICAgICAgeTogLWggLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGxlZnRCb3R0b20gPSBsaW5rUG9pbnRzLmxlZnRCb3R0b20sXG4gICAgICAgIHJpZ2h0Qm90dG9tID0gbGlua1BvaW50cy5yaWdodEJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwibGVmdEJvdHRvbVwiLCBcInJpZ2h0Qm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7IC8vIHRvcCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiB4MSxcbiAgICAgICAgICB5OiAteTEsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBvdXRlclIgPSBzaXplWzBdO1xuICAgIHZhciBkZWZhdWx0SW5uZXJSID0gb3V0ZXJSICogMyAvIDg7XG4gICAgdmFyIGlubmVyUiA9IGNmZy5pbm5lclIgfHwgZGVmYXVsdElubmVyUjtcbiAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB4MiA9IE1hdGguY29zKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcbiAgICAgIHZhciB5MiA9IE1hdGguc2luKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgcGF0aC5wdXNoKFsnTScsIHgxLCAteTFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGgucHVzaChbJ0wnLCB4MSwgLXkxXSk7XG4gICAgICB9XG5cbiAgICAgIHBhdGgucHVzaChbJ0wnLCB4MiwgLXkyXSk7XG4gICAgfVxuXG4gICAgcGF0aC5wdXNoKFsnWiddKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW5Y6f5p2l6buY6K6k55qEIHN0cm9rZSDlsZ7mgKfjgILkvYYgY2ZnIOS4reS9hiBzdHJva2Ug5bGe5oCn5LyY5YWI57qn5pu06auYXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExpbmtQb2ludHMgPSB0aGlzLmdldE9wdGlvbnMoe30pLmxpbmtQb2ludHM7XG4gICAgdmFyIG1hcmtMZWZ0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrUmlnaHQgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1RvcCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXRvcCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtMZWZ0Qm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0LWJvdHRvbSc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtSaWdodEJvdHRvbSA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrTGVmdEJvdHRvbSB8fCBtYXJrUmlnaHRCb3R0b207XG5cbiAgICBpZiAoZXhpc3RMaW5rUG9pbnQpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gZXhpc3RMaW5rUG9pbnQuYXR0cigpO1xuICAgIH1cblxuICAgIHZhciBsaW5rUG9pbnRzID0gbWl4KHt9LCBjdXJyZW50TGlua1BvaW50cywgY2ZnLmxpbmtQb2ludHMpO1xuICAgIHZhciBtYXJrRmlsbCA9IGxpbmtQb2ludHMuZmlsbCxcbiAgICAgICAgbWFya1N0cm9rZSA9IGxpbmtQb2ludHMuc3Ryb2tlLFxuICAgICAgICBib3JkZXJXaWR0aCA9IGxpbmtQb2ludHMubGluZVdpZHRoO1xuICAgIHZhciBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSAvIDI7XG4gICAgaWYgKCFtYXJrU2l6ZSkgbWFya1NpemUgPSBsaW5rUG9pbnRzLnI7XG5cbiAgICB2YXIgX2EgPSBjZmcubGlua1BvaW50cyA/IGNmZy5saW5rUG9pbnRzIDoge1xuICAgICAgbGVmdDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHRvcDogdW5kZWZpbmVkLFxuICAgICAgbGVmdEJvdHRvbTogdW5kZWZpbmVkLFxuICAgICAgcmlnaHRCb3R0b206IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgICAgIGxlZnQgPSBfYS5sZWZ0LFxuICAgICAgICByaWdodCA9IF9hLnJpZ2h0LFxuICAgICAgICB0b3AgPSBfYS50b3AsXG4gICAgICAgIGxlZnRCb3R0b20gPSBfYS5sZWZ0Qm90dG9tLFxuICAgICAgICByaWdodEJvdHRvbSA9IF9hLnJpZ2h0Qm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHZhciB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtSaWdodCkge1xuICAgICAgaWYgKCFyaWdodCAmJiByaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogLXlcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAxKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1RvcCkge1xuICAgICAgaWYgKCF0b3AgJiYgdG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya1RvcC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya1RvcC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAyKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDIpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya0xlZnQpIHtcbiAgICAgIGlmICghbGVmdCAmJiBsZWZ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgeCA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAzKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtMZWZ0Qm90dG9tKSB7XG4gICAgICBpZiAoIWxlZnRCb3R0b20gJiYgbGVmdEJvdHRvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiA0KSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDQpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1JpZ2h0Qm90dG9tKSB7XG4gICAgICBpZiAoIXJpZ2h0Qm90dG9tICYmIHJpZ2h0Qm90dG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnRCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtSaWdodEJvdHRvbS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyaWdodEJvdHRvbSkge1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/star.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-element/es/nodes/triangle.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g6-element/es/nodes/triangle.js ***!
\************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 三角形\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('triangle', {\n // 自定义节点时的配置\n options: {\n size: 40,\n direction: 'up',\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize\n },\n offset: 15\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20,\n offset: 6\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'triangle',\n // 文本位置\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.icon,\n icon = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var style = this.getShapeStyle(cfg);\n var direction = cfg.direction || defaultDirection;\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n offset = icon.offset,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n var iconW = -w / 2;\n var iconH = -h / 2;\n\n if (direction === 'up' || direction === 'down') {\n iconH += offset;\n }\n\n if (direction === 'left' || direction === 'right') {\n iconW += offset;\n }\n\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: iconW,\n y: iconH\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.linkPoints,\n linkPoints = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var len = size[0];\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: leftPos[0],\n y: leftPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n }\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var rightPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rightPos[0],\n y: rightPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var topPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: topPos[0],\n y: topPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n }\n\n if (bottom) {\n // up down left right 四个方向的坐标均不相同\n var bottomPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: bottomPos[0],\n y: bottomPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom'\n });\n }\n }\n },\n getPath: function getPath(cfg) {\n var defaultDirection = (this.mergeStyle || this.getOptions(cfg)).direction;\n var direction = cfg.direction || defaultDirection;\n var size = this.getSize(cfg);\n var len = size[0];\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n var path = [['M', -r, diffY], ['L', 0, -diffY], ['L', r, diffY], ['Z'] // 封闭\n ];\n\n if (direction === 'down') {\n path = [['M', -r, -diffY], ['L', r, -diffY], ['L', 0, diffY], ['Z'] // 封闭\n ];\n } else if (direction === 'left') {\n path = [['M', -r, r - diffY], ['L', r, -r], ['L', r, r], ['Z'] // 封闭\n ];\n } else if (direction === 'right') {\n path = [['M', r, r - diffY], ['L', -r, r], ['L', -r, -r], ['Z'] // 封闭\n ];\n }\n\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var _a = this.getOptions({}),\n defaultLinkPoints = _a.linkPoints,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _b = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _b.left,\n right = _b.right,\n top = _b.top,\n bottom = _b.bottom;\n\n var size = this.getSize(cfg);\n var len = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n }\n\n var rightPos = null;\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n }\n\n var topPos = null;\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n // top circle\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n }\n\n var bottomPos = null;\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }));\n }\n } else if (bottom) {\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy90cmlhbmdsZS5qcz8zNzdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQzBCO0FBQ2xDOztBQUVqQyxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU07O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQ0FBb0M7O0FBRXBDLHlDQUF5QztBQUN6QyxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCx3QkFBd0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzVDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM3QztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBCQUEwQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL25vZGVzL3RyaWFuZ2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS4ieinkuW9olxuXG5yZWdpc3Rlck5vZGUoJ3RyaWFuZ2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IDQwLFxuICAgIGRpcmVjdGlvbjogJ3VwJyxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplXG4gICAgICB9LFxuICAgICAgb2Zmc2V0OiAxNVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgIG9mZnNldDogNlxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICd0cmlhbmdsZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5pY29uLFxuICAgICAgICBpY29uID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIildID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIG9mZnNldCA9IGljb24ub2Zmc2V0LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpY29uVyA9IC13IC8gMjtcbiAgICAgICAgdmFyIGljb25IID0gLWggLyAyO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcgfHwgZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgICBpY29uSCArPSBvZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcgfHwgZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgaWNvblcgKz0gb2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogaWNvblcsXG4gICAgICAgICAgICB5OiBpY29uSFxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5saW5rUG9pbnRzLFxuICAgICAgICBsaW5rUG9pbnRzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBsZW4gPSBzaXplWzBdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgbGVmdFBvcyA9IFstciwgZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCByIC0gZGlmZlldO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVmdFBvcykge1xuICAgICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgICAgeDogbGVmdFBvc1swXSxcbiAgICAgICAgICAgIHk6IGxlZnRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciByaWdodFBvcyA9IG51bGw7XG4gICAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgICAgdmFyIHIgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIGRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgcmlnaHRQb3MgPSBbciwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodFBvcykge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0J1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgdG9wUG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IgLSBkaWZmWSwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB0b3BQb3MgPSBbLXIsIC1kaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0b3BQb3MpIHtcbiAgICAgICAgLy8gdG9wIGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB0b3BQb3NbMF0sXG4gICAgICAgICAgICB5OiB0b3BQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChib3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBib3R0b21Qb3MgPSBudWxsO1xuICAgICAgdmFyIGRpZmZZID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFstciArIGRpZmZZLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFtyLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvdHRvbVBvcykge1xuICAgICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IGJvdHRvbVBvc1swXSxcbiAgICAgICAgICAgIHk6IGJvdHRvbVBvc1sxXSxcbiAgICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbSdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBkZWZhdWx0RGlyZWN0aW9uID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuZGlyZWN0aW9uO1xuICAgIHZhciBkaXJlY3Rpb24gPSBjZmcuZGlyZWN0aW9uIHx8IGRlZmF1bHREaXJlY3Rpb247XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAtciwgZGlmZlldLCBbJ0wnLCAwLCAtZGlmZlldLCBbJ0wnLCByLCBkaWZmWV0sIFsnWiddIC8vIOWwgemXrVxuICAgIF07XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIC1kaWZmWV0sIFsnTCcsIHIsIC1kaWZmWV0sIFsnTCcsIDAsIGRpZmZZXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIHIgLSBkaWZmWV0sIFsnTCcsIHIsIC1yXSwgWydMJywgciwgcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcGF0aCA9IFtbJ00nLCByLCByIC0gZGlmZlldLCBbJ0wnLCAtciwgcl0sIFsnTCcsIC1yLCAtcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgX2EgPSB0aGlzLmdldE9wdGlvbnMoe30pLFxuICAgICAgICBkZWZhdWx0TGlua1BvaW50cyA9IF9hLmxpbmtQb2ludHMsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBtYXJrTGVmdCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1JpZ2h0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtUb3AgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC10b3AnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrQm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrQm90dG9tO1xuXG4gICAgaWYgKGV4aXN0TGlua1BvaW50KSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IGV4aXN0TGlua1BvaW50LmF0dHIoKTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50cyA9IG1peCh7fSwgY3VycmVudExpbmtQb2ludHMsIGNmZy5saW5rUG9pbnRzKTtcbiAgICB2YXIgbWFya0ZpbGwgPSBsaW5rUG9pbnRzLmZpbGwsXG4gICAgICAgIG1hcmtTdHJva2UgPSBsaW5rUG9pbnRzLnN0cm9rZSxcbiAgICAgICAgYm9yZGVyV2lkdGggPSBsaW5rUG9pbnRzLmxpbmVXaWR0aDtcbiAgICB2YXIgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUgLyAyO1xuICAgIGlmICghbWFya1NpemUpIG1hcmtTaXplID0gbGlua1BvaW50cy5yO1xuXG4gICAgdmFyIF9iID0gY2ZnLmxpbmtQb2ludHMgPyBjZmcubGlua1BvaW50cyA6IHtcbiAgICAgIGxlZnQ6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiB1bmRlZmluZWQsXG4gICAgICB0b3A6IHVuZGVmaW5lZCxcbiAgICAgIGJvdHRvbTogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAgICAgbGVmdCA9IF9iLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2IucmlnaHQsXG4gICAgICAgIHRvcCA9IF9iLnRvcCxcbiAgICAgICAgYm90dG9tID0gX2IuYm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKGxlZnRQb3MpIHtcbiAgICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgICBpZiAoIWxlZnQgJiYgbGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmlnaHRQb3MgPSBudWxsO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgcmlnaHRQb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0UG9zKSB7XG4gICAgICBpZiAobWFya1JpZ2h0KSB7XG4gICAgICAgIGlmICghcmlnaHQgJiYgcmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogcmlnaHRQb3NbMF0sXG4gICAgICAgICAgICB5OiByaWdodFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdG9wUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIHRvcFBvcyA9IFtyIC0gZGlmZlksIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcFBvcyA9IFstciwgLWRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAodG9wUG9zKSB7XG4gICAgICBpZiAobWFya1RvcCkge1xuICAgICAgICBpZiAoIXRvcCAmJiB0b3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtUb3AucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgICAgICBtYXJrVG9wLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHRvcFBvc1swXSxcbiAgICAgICAgICAgIHk6IHRvcFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogdG9wUG9zWzBdLFxuICAgICAgICAgICAgeTogdG9wUG9zWzFdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYm90dG9tUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgYm90dG9tUG9zID0gWy1yICsgZGlmZlksIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tUG9zKSB7XG4gICAgICBpZiAobWFya0JvdHRvbSkge1xuICAgICAgICBpZiAoIWJvdHRvbSAmJiBib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hcmtCb3R0b20uYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogYm90dG9tUG9zWzBdLFxuICAgICAgICAgICAgeTogYm90dG9tUG9zWzFdXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGJvdHRvbSkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBib3R0b21Qb3NbMF0sXG4gICAgICAgICAgICB5OiBib3R0b21Qb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/triangle.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/activate-relations.js":
/*!********************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/activate-relations.js ***!
\********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n // 可选 mouseenter || click\n // 选择 click 会监听 touch,mouseenter 不会监听\n trigger: 'mouseenter',\n activeState: 'active',\n inactiveState: 'inactive',\n resetSelected: false,\n shouldUpdate: function shouldUpdate() {\n return true;\n }\n };\n },\n getEvents: function getEvents() {\n if (this.get('trigger') === 'mouseenter') {\n return {\n 'node:mouseenter': 'setAllItemStates',\n 'combo:mouseenter': 'setAllItemStates',\n 'node:mouseleave': 'clearActiveState',\n 'combo:mouseleave': 'clearActiveState'\n };\n }\n\n return {\n 'node:click': 'setAllItemStates',\n 'combo:click': 'setAllItemStates',\n 'canvas:click': 'clearActiveState',\n 'node:touchstart': 'setOnTouchStart',\n 'combo:touchstart': 'setOnTouchStart',\n 'canvas:touchstart': 'clearOnTouchStart'\n };\n },\n setOnTouchStart: function setOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.setAllItemStates(e);\n },\n clearOnTouchStart: function clearOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.clearActiveState(e);\n },\n setAllItemStates: function setAllItemStates(e) {\n var item = e.item;\n var graph = this.graph;\n this.item = item;\n\n if (!this.shouldUpdate(e.item, {\n event: e,\n action: 'activate'\n })) {\n return;\n }\n\n var self = this;\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var nodes = graph.getNodes();\n var combos = graph.getCombos();\n var edges = graph.getEdges();\n var vEdges = graph.get('vedges');\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var hasSelected = node.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(node, 'selected', false);\n }\n }\n\n graph.setItemState(node, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(node, inactiveState, true);\n }\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n var hasSelected = combo.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(combo, 'selected', false);\n }\n }\n\n graph.setItemState(combo, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(combo, inactiveState, true);\n }\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.setItemState(edge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(edge, inactiveState, true);\n }\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.setItemState(vEdge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(vEdge, inactiveState, true);\n }\n }\n\n if (inactiveState) {\n graph.setItemState(item, inactiveState, false);\n }\n\n graph.setItemState(item, activeState, true);\n var rEdges = item.getEdges();\n var rEdgeLegnth = rEdges.length;\n\n for (var i = 0; i < rEdgeLegnth; i++) {\n var edge = rEdges[i];\n var otherEnd = void 0;\n\n if (edge.getSource() === item) {\n otherEnd = edge.getTarget();\n } else {\n otherEnd = edge.getSource();\n }\n\n if (inactiveState) {\n graph.setItemState(otherEnd, inactiveState, false);\n }\n\n graph.setItemState(otherEnd, activeState, true);\n graph.setItemState(edge, inactiveState, false);\n graph.setItemState(edge, activeState, true);\n edge.toFront();\n }\n\n graph.emit('afteractivaterelations', {\n item: e.item,\n action: 'activate'\n });\n },\n clearActiveState: function clearActiveState(e) {\n var self = this;\n var graph = self.get('graph');\n\n if (!self.shouldUpdate(e.item, {\n event: e,\n action: 'deactivate'\n })) {\n return;\n }\n\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var autoPaint = graph.get('autoPaint');\n graph.setAutoPaint(false);\n var nodes = graph.getNodes() || [];\n var combos = graph.getCombos() || [];\n var edges = graph.getEdges() || [];\n var vEdges = graph.get('vedges') || [];\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n graph.clearItemStates(node, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n graph.clearItemStates(combo, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.clearItemStates(edge, [activeState, inactiveState, 'deactivate']);\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.clearItemStates(vEdge, [activeState, inactiveState, 'deactivate']);\n }\n\n graph.paint();\n graph.setAutoPaint(autoPaint);\n graph.emit('afteractivaterelations', {\n item: e.item || self.get('item'),\n action: 'deactivate'\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYWN0aXZhdGUtcmVsYXRpb25zLmpzPzU2NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYWN0aXZhdGUtcmVsYXRpb25zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyDlj6/pgIkgbW91c2VlbnRlciB8fCBjbGlja1xuICAgICAgLy8g6YCJ5oupIGNsaWNrIOS8muebkeWQrCB0b3VjaO+8jG1vdXNlZW50ZXIg5LiN5Lya55uR5ZCsXG4gICAgICB0cmlnZ2VyOiAnbW91c2VlbnRlcicsXG4gICAgICBhY3RpdmVTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICBpbmFjdGl2ZVN0YXRlOiAnaW5hY3RpdmUnLFxuICAgICAgcmVzZXRTZWxlY3RlZDogZmFsc2UsXG4gICAgICBzaG91bGRVcGRhdGU6IGZ1bmN0aW9uIHNob3VsZFVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgaWYgKHRoaXMuZ2V0KCd0cmlnZ2VyJykgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25vZGU6bW91c2VlbnRlcic6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICAgJ2NvbWJvOm1vdXNlZW50ZXInOiAnc2V0QWxsSXRlbVN0YXRlcycsXG4gICAgICAgICdub2RlOm1vdXNlbGVhdmUnOiAnY2xlYXJBY3RpdmVTdGF0ZScsXG4gICAgICAgICdjb21ibzptb3VzZWxlYXZlJzogJ2NsZWFyQWN0aXZlU3RhdGUnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAnbm9kZTpjbGljayc6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICdjb21ibzpjbGljayc6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJBY3RpdmVTdGF0ZScsXG4gICAgICAnbm9kZTp0b3VjaHN0YXJ0JzogJ3NldE9uVG91Y2hTdGFydCcsXG4gICAgICAnY29tYm86dG91Y2hzdGFydCc6ICdzZXRPblRvdWNoU3RhcnQnLFxuICAgICAgJ2NhbnZhczp0b3VjaHN0YXJ0JzogJ2NsZWFyT25Ub3VjaFN0YXJ0J1xuICAgIH07XG4gIH0sXG4gIHNldE9uVG91Y2hTdGFydDogZnVuY3Rpb24gc2V0T25Ub3VjaFN0YXJ0KGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07XG5cbiAgICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYuc2V0QWxsSXRlbVN0YXRlcyhlKTtcbiAgfSxcbiAgY2xlYXJPblRvdWNoU3RhcnQ6IGZ1bmN0aW9uIGNsZWFyT25Ub3VjaFN0YXJ0KGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07XG5cbiAgICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYuY2xlYXJBY3RpdmVTdGF0ZShlKTtcbiAgfSxcbiAgc2V0QWxsSXRlbVN0YXRlczogZnVuY3Rpb24gc2V0QWxsSXRlbVN0YXRlcyhlKSB7XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB0aGlzLml0ZW0gPSBpdGVtO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZShlLml0ZW0sIHtcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgYWN0aW9uOiAnYWN0aXZhdGUnXG4gICAgfSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGFjdGl2ZVN0YXRlID0gdGhpcy5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgaW5hY3RpdmVTdGF0ZSA9IHRoaXMuaW5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBjb21ib3MgPSBncmFwaC5nZXRDb21ib3MoKTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuICAgIHZhciB2RWRnZXMgPSBncmFwaC5nZXQoJ3ZlZGdlcycpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBjb21ib0xlbmd0aCA9IGNvbWJvcy5sZW5ndGg7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIHZFZGdlTGVuZ3RoID0gdkVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGhhc1NlbGVjdGVkID0gbm9kZS5oYXNTdGF0ZSgnc2VsZWN0ZWQnKTtcblxuICAgICAgaWYgKHNlbGYucmVzZXRTZWxlY3RlZCkge1xuICAgICAgICBpZiAoaGFzU2VsZWN0ZWQpIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21ib0xlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY29tYm8gPSBjb21ib3NbaV07XG4gICAgICB2YXIgaGFzU2VsZWN0ZWQgPSBjb21iby5oYXNTdGF0ZSgnc2VsZWN0ZWQnKTtcblxuICAgICAgaWYgKHNlbGYucmVzZXRTZWxlY3RlZCkge1xuICAgICAgICBpZiAoaGFzU2VsZWN0ZWQpIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sICdzZWxlY3RlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIGFjdGl2ZVN0YXRlLCBmYWxzZSk7XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgYWN0aXZlU3RhdGUsIGZhbHNlKTtcblxuICAgICAgaWYgKGluYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGVkZ2UsIGluYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdkVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZFZGdlID0gdkVkZ2VzW2ldO1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKHZFZGdlLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUodkVkZ2UsIGluYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgaW5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBhY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgdmFyIHJFZGdlcyA9IGl0ZW0uZ2V0RWRnZXMoKTtcbiAgICB2YXIgckVkZ2VMZWdudGggPSByRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByRWRnZUxlZ250aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IHJFZGdlc1tpXTtcbiAgICAgIHZhciBvdGhlckVuZCA9IHZvaWQgMDtcblxuICAgICAgaWYgKGVkZ2UuZ2V0U291cmNlKCkgPT09IGl0ZW0pIHtcbiAgICAgICAgb3RoZXJFbmQgPSBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RoZXJFbmQgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUob3RoZXJFbmQsIGluYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG90aGVyRW5kLCBhY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgaW5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGVkZ2UsIGFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIGVkZ2UudG9Gcm9udCgpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2FmdGVyYWN0aXZhdGVyZWxhdGlvbnMnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBhY3Rpb246ICdhY3RpdmF0ZSdcbiAgICB9KTtcbiAgfSxcbiAgY2xlYXJBY3RpdmVTdGF0ZTogZnVuY3Rpb24gY2xlYXJBY3RpdmVTdGF0ZShlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuXG4gICAgaWYgKCFzZWxmLnNob3VsZFVwZGF0ZShlLml0ZW0sIHtcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgYWN0aW9uOiAnZGVhY3RpdmF0ZSdcbiAgICB9KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBhY3RpdmVTdGF0ZSA9IHRoaXMuYWN0aXZlU3RhdGU7XG4gICAgdmFyIGluYWN0aXZlU3RhdGUgPSB0aGlzLmluYWN0aXZlU3RhdGU7XG4gICAgdmFyIGF1dG9QYWludCA9IGdyYXBoLmdldCgnYXV0b1BhaW50Jyk7XG4gICAgZ3JhcGguc2V0QXV0b1BhaW50KGZhbHNlKTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpIHx8IFtdO1xuICAgIHZhciBjb21ib3MgPSBncmFwaC5nZXRDb21ib3MoKSB8fCBbXTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpIHx8IFtdO1xuICAgIHZhciB2RWRnZXMgPSBncmFwaC5nZXQoJ3ZlZGdlcycpIHx8IFtdO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBjb21ib0xlbmd0aCA9IGNvbWJvcy5sZW5ndGg7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIHZFZGdlTGVuZ3RoID0gdkVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKG5vZGUsIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZV0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tYm9MZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbWJvID0gY29tYm9zW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKGNvbWJvLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGVdKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIGdyYXBoLmNsZWFySXRlbVN0YXRlcyhlZGdlLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGUsICdkZWFjdGl2YXRlJ10pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdkVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZFZGdlID0gdkVkZ2VzW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKHZFZGdlLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGUsICdkZWFjdGl2YXRlJ10pO1xuICAgIH1cblxuICAgIGdyYXBoLnBhaW50KCk7XG4gICAgZ3JhcGguc2V0QXV0b1BhaW50KGF1dG9QYWludCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJhY3RpdmF0ZXJlbGF0aW9ucycsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSB8fCBzZWxmLmdldCgnaXRlbScpLFxuICAgICAgYWN0aW9uOiAnZGVhY3RpdmF0ZSdcbiAgICB9KTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/activate-relations.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/brush-select.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/brush-select.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar min = Math.min,\n max = Math.max,\n abs = Math.abs;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n brushStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onMouseDown: function onMouseDown(e) {\n // 按在node上面拖动时候不应该是框选\n var item = e.item;\n var brush = this.brush;\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!brush) {\n brush = this.createBrush();\n }\n\n this.originPoint = {\n x: e.canvasX,\n y: e.canvasY\n };\n brush.attr({\n width: 0,\n height: 0\n });\n brush.show();\n this.dragging = true;\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.updateBrush(e);\n },\n onMouseUp: function onMouseUp(e) {\n var graph = this.graph; // TODO: 触发了 canvas:click 导致 clearStates\n\n if (!this.brush && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.brush.remove(true); // remove and destroy\n\n this.brush = null;\n this.getSelectedNodes(e);\n this.dragging = false;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n this.selectedNodes = [];\n this.selectedEdges = [];\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedNodes: function getSelectedNodes(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n originPoint = _a.originPoint,\n shouldUpdate = _a.shouldUpdate;\n\n var state = this.selectedState;\n var p1 = {\n x: e.x,\n y: e.y\n };\n var p2 = graph.getPointByCanvas(originPoint.x, originPoint.y);\n var left = min(p1.x, p2.x);\n var right = max(p1.x, p2.x);\n var top = min(p1.y, p2.y);\n var bottom = max(p1.y, p2.y);\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n var bbox = node.getBBox();\n\n if (bbox.centerX >= left && bbox.centerX <= right && bbox.centerY >= top && bbox.centerY <= bottom) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createBrush: function createBrush() {\n var self = this;\n var brush = self.graph.get('canvas').addShape('rect', {\n attrs: self.brushStyle,\n capture: false,\n name: 'brush-shape'\n });\n this.brush = brush;\n this.delegate = brush;\n return brush;\n },\n updateBrush: function updateBrush(e) {\n var originPoint = this.originPoint;\n this.brush.attr({\n width: abs(e.canvasX - originPoint.x),\n height: abs(e.canvasY - originPoint.y),\n x: min(e.canvasX, originPoint.x),\n y: min(e.canvasY, originPoint.y)\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYnJ1c2gtc2VsZWN0LmpzPzc2MzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQ0FBc0M7QUFDdEMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYnJ1c2gtc2VsZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1pbiA9IE1hdGgubWluLFxuICAgIG1heCA9IE1hdGgubWF4LFxuICAgIGFicyA9IE1hdGguYWJzO1xudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdzaGlmdCc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydkcmFnJywgJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnJ1c2hTdHlsZToge1xuICAgICAgICBmaWxsOiAnI0VFRjZGRicsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjQsXG4gICAgICAgIHN0cm9rZTogJyNEREVFRkUnLFxuICAgICAgICBsaW5lV2lkdGg6IDFcbiAgICAgIH0sXG4gICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QoKSB7fSxcbiAgICAgIG9uRGVzZWxlY3Q6IGZ1bmN0aW9uIG9uRGVzZWxlY3QoKSB7fSxcbiAgICAgIHNlbGVjdGVkU3RhdGU6ICdzZWxlY3RlZCcsXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gICAgICBzZWxlY3RlZEVkZ2VzOiBbXSxcbiAgICAgIHNlbGVjdGVkTm9kZXM6IFtdXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG4gICAgaWYgKCEoQUxMT1dfRVZFTlRTLmluZGV4T2YodGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIgPSBERUZBVUxUX1RSSUdHRVI7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBicnVzaC1zZWxlY3Qg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdkcmFnJ+OAgSdzaGlmdCfjgIEnY3RybCcg5oiWICdhbHQnXCIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdkcmFnJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZHJhZ3N0YXJ0OiAnb25Nb3VzZURvd24nLFxuICAgICAgICBkcmFnOiAnb25Nb3VzZU1vdmUnLFxuICAgICAgICBkcmFnZW5kOiAnb25Nb3VzZVVwJyxcbiAgICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRyYWdzdGFydDogJ29uTW91c2VEb3duJyxcbiAgICAgIGRyYWc6ICdvbk1vdXNlTW92ZScsXG4gICAgICBkcmFnZW5kOiAnb25Nb3VzZVVwJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJTdGF0ZXMnLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICAvLyDmjInlnKhub2Rl5LiK6Z2i5ouW5Yqo5pe25YCZ5LiN5bqU6K+l5piv5qGG6YCJXG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdmFyIGJydXNoID0gdGhpcy5icnVzaDtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXJTdGF0ZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIWJydXNoKSB7XG4gICAgICBicnVzaCA9IHRoaXMuY3JlYXRlQnJ1c2goKTtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgeDogZS5jYW52YXNYLFxuICAgICAgeTogZS5jYW52YXNZXG4gICAgfTtcbiAgICBicnVzaC5hdHRyKHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfSk7XG4gICAgYnJ1c2guc2hvdygpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICB9LFxuICBvbk1vdXNlTW92ZTogZnVuY3Rpb24gb25Nb3VzZU1vdmUoZSkge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdkcmFnJyAmJiAhdGhpcy5rZXlkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVCcnVzaChlKTtcbiAgfSxcbiAgb25Nb3VzZVVwOiBmdW5jdGlvbiBvbk1vdXNlVXAoZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7IC8vIFRPRE86IOinpuWPkeS6hiBjYW52YXM6Y2xpY2sg5a+86Ie0IGNsZWFyU3RhdGVzXG5cbiAgICBpZiAoIXRoaXMuYnJ1c2ggJiYgIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnJ1c2gucmVtb3ZlKHRydWUpOyAvLyByZW1vdmUgYW5kIGRlc3Ryb3lcblxuICAgIHRoaXMuYnJ1c2ggPSBudWxsO1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWROb2RlcyhlKTtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gIH0sXG4gIGNsZWFyU3RhdGVzOiBmdW5jdGlvbiBjbGVhclN0YXRlcygpIHtcbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBzZWxlY3RlZFN0YXRlID0gX2Euc2VsZWN0ZWRTdGF0ZTtcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgc2VsZWN0ZWRTdGF0ZSk7XG4gICAgdmFyIGVkZ2VzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2VkZ2UnLCBzZWxlY3RlZFN0YXRlKTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIHNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZ3JhcGguc2V0SXRlbVN0YXRlKGVkZ2UsIHNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWRnZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLm9uRGVzZWxlY3QpIHtcbiAgICAgIHRoaXMub25EZXNlbGVjdCh0aGlzLnNlbGVjdGVkTm9kZXMsIHRoaXMuc2VsZWN0ZWRFZGdlcyk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW11cbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG4gIH0sXG4gIGdldFNlbGVjdGVkTm9kZXM6IGZ1bmN0aW9uIGdldFNlbGVjdGVkTm9kZXMoZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBvcmlnaW5Qb2ludCA9IF9hLm9yaWdpblBvaW50LFxuICAgICAgICBzaG91bGRVcGRhdGUgPSBfYS5zaG91bGRVcGRhdGU7XG5cbiAgICB2YXIgc3RhdGUgPSB0aGlzLnNlbGVjdGVkU3RhdGU7XG4gICAgdmFyIHAxID0ge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfTtcbiAgICB2YXIgcDIgPSBncmFwaC5nZXRQb2ludEJ5Q2FudmFzKG9yaWdpblBvaW50LngsIG9yaWdpblBvaW50LnkpO1xuICAgIHZhciBsZWZ0ID0gbWluKHAxLngsIHAyLngpO1xuICAgIHZhciByaWdodCA9IG1heChwMS54LCBwMi54KTtcbiAgICB2YXIgdG9wID0gbWluKHAxLnksIHAyLnkpO1xuICAgIHZhciBib3R0b20gPSBtYXgocDEueSwgcDIueSk7XG4gICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB2YXIgc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICBncmFwaC5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGlmICghbm9kZS5pc1Zpc2libGUoKSkgcmV0dXJuOyAvLyDpmpDol4/oioLngrnkuI3og73ooqvpgInkuK1cblxuICAgICAgdmFyIGJib3ggPSBub2RlLmdldEJCb3goKTtcblxuICAgICAgaWYgKGJib3guY2VudGVyWCA+PSBsZWZ0ICYmIGJib3guY2VudGVyWCA8PSByaWdodCAmJiBiYm94LmNlbnRlclkgPj0gdG9wICYmIGJib3guY2VudGVyWSA8PSBib3R0b20pIHtcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZShub2RlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gobW9kZWwuaWQpO1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICAvLyDpgInkuK3ovrnvvIzovrnnmoRzb3VyY2Xlkox0YXJnZXTpg73lnKjpgInkuK3nmoToioLngrnkuK3ml7bmiY3pgInkuK1cbiAgICAgIHNlbGVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLmdldE91dEVkZ2VzKCk7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICBpZiAoIWVkZ2UuaXNWaXNpYmxlKCkpIHJldHVybjsgLy8g6ZqQ6JeP6L655LiN6IO95aSf6KKr6YCJ5LitXG5cbiAgICAgICAgICB2YXIgbW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IG1vZGVsLnNvdXJjZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gbW9kZWwudGFyZ2V0O1xuXG4gICAgICAgICAgaWYgKHNlbGVjdGVkSWRzLmluY2x1ZGVzKHNvdXJjZSkgJiYgc2VsZWN0ZWRJZHMuaW5jbHVkZXModGFyZ2V0KSAmJiBzaG91bGRVcGRhdGUoZWRnZSwgJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgX3RoaXMuc2VsZWN0ZWRTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IHNlbGVjdGVkRWRnZXM7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gc2VsZWN0ZWROb2RlcztcblxuICAgIGlmICh0aGlzLm9uU2VsZWN0KSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHNlbGVjdGVkTm9kZXMsIHNlbGVjdGVkRWRnZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICBlZGdlczogc2VsZWN0ZWRFZGdlc1xuICAgICAgfSxcbiAgICAgIHNlbGVjdDogdHJ1ZVxuICAgIH0pO1xuICB9LFxuICBjcmVhdGVCcnVzaDogZnVuY3Rpb24gY3JlYXRlQnJ1c2goKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBicnVzaCA9IHNlbGYuZ3JhcGguZ2V0KCdjYW52YXMnKS5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBzZWxmLmJydXNoU3R5bGUsXG4gICAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICAgIG5hbWU6ICdicnVzaC1zaGFwZSdcbiAgICB9KTtcbiAgICB0aGlzLmJydXNoID0gYnJ1c2g7XG4gICAgdGhpcy5kZWxlZ2F0ZSA9IGJydXNoO1xuICAgIHJldHVybiBicnVzaDtcbiAgfSxcbiAgdXBkYXRlQnJ1c2g6IGZ1bmN0aW9uIHVwZGF0ZUJydXNoKGUpIHtcbiAgICB2YXIgb3JpZ2luUG9pbnQgPSB0aGlzLm9yaWdpblBvaW50O1xuICAgIHRoaXMuYnJ1c2guYXR0cih7XG4gICAgICB3aWR0aDogYWJzKGUuY2FudmFzWCAtIG9yaWdpblBvaW50LngpLFxuICAgICAgaGVpZ2h0OiBhYnMoZS5jYW52YXNZIC0gb3JpZ2luUG9pbnQueSksXG4gICAgICB4OiBtaW4oZS5jYW52YXNYLCBvcmlnaW5Qb2ludC54KSxcbiAgICAgIHk6IG1pbihlLmNhbnZhc1ksIG9yaWdpblBvaW50LnkpXG4gICAgfSk7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHRyaWdnZXJMb3dlckNhc2UgPSB0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKTtcbiAgICB2YXIgY29kZUxvd2VyQ2FzZSA9IGNvZGUudG9Mb3dlckNhc2UoKTsgLy8g5oyJ5L2PIGNvbnRyb2wg6ZSu5pe277yM5YWB6K6455So5oi36K6+572uIHRyaWdnZXIg5Li6IGN0cmxcblxuICAgIGlmIChjb2RlTG93ZXJDYXNlID09PSB0cmlnZ2VyTG93ZXJDYXNlIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjb250cm9sJyAmJiB0cmlnZ2VyTG93ZXJDYXNlID09PSAnY3RybCcgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2N0cmwnICYmIHRyaWdnZXJMb3dlckNhc2UgPT09ICdjb250cm9sJykge1xuICAgICAgdGhpcy5rZXlkb3duID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIGlmICh0aGlzLmJydXNoKSB7XG4gICAgICAvLyDmuIXpmaTmiYDmnInpgInkuK3nirbmgIHlkI7vvIzorr7nva7mi5blvpfliqjnirbmgIHkuLpmYWxzZe+8jOW5tua4hemZpOahhumAieeahGJydXNoXG4gICAgICB0aGlzLmJydXNoLnJlbW92ZSh0cnVlKTtcbiAgICAgIHRoaXMuYnJ1c2ggPSBudWxsO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/brush-select.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/click-select.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/click-select.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n multiple: true,\n trigger: DEFAULT_TRIGGER,\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (!self.multiple) {\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick'\n };\n }\n\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onClick: function onClick(evt) {\n var self = this;\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return;\n }\n\n var type = item.getType();\n var graph = self.graph,\n keydown = self.keydown,\n multiple = self.multiple,\n shouldUpdate = self.shouldUpdate,\n shouldBegin = self.shouldBegin;\n\n if (!shouldBegin.call(self, evt)) {\n return;\n } // allow to select multiple nodes but did not press a key || do not allow the select multiple nodes\n\n\n if (!keydown || !multiple) {\n var selected = graph.findAllByState('node', self.selectedState).concat(graph.findAllByState('combo', self.selectedState));\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (combo) {\n if (combo !== item) {\n graph.setItemState(combo, self.selectedState, false);\n }\n });\n }\n\n if (item.hasState(self.selectedState)) {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, false);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: false\n });\n } else {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, true);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: true\n });\n }\n },\n onCanvasClick: function onCanvasClick() {\n var _this = this;\n\n var graph = this.graph;\n var selected = graph.findAllByState('node', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (node) {\n graph.setItemState(node, _this.selectedState, false);\n });\n var selectedCombos = graph.findAllByState('combo', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selectedCombos, function (combo) {\n graph.setItemState(combo, _this.selectedState, false);\n });\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: [],\n combos: []\n },\n select: false\n });\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === this.trigger.toLowerCase() || code.toLowerCase() === 'control') {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n self.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY2xpY2stc2VsZWN0LmpzPzIxOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFrQztBQUNsQztBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY2xpY2stc2VsZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdzaGlmdCc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydzaGlmdCcsICdjdHJsJywgJ2FsdCcsICdjb250cm9sJ107XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJ1xuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG5cbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZihzZWxmLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHNlbGYudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgYnJ1c2gtc2VsZWN0IOeahCB0cmlnZ2VyIOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnZHJhZyfjgIEnc2hpZnQn44CBJ2N0cmwnIOaIliAnYWx0J1wiKTtcbiAgICB9XG5cbiAgICBpZiAoIXNlbGYubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdub2RlOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnb25DYW52YXNDbGljaydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgJ2NvbWJvOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdvbkNhbnZhc0NsaWNrJyxcbiAgICAgIGtleXVwOiAnb25LZXlVcCcsXG4gICAgICBrZXlkb3duOiAnb25LZXlEb3duJ1xuICAgIH07XG4gIH0sXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZXZ0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ3JhcGgsXG4gICAgICAgIGtleWRvd24gPSBzZWxmLmtleWRvd24sXG4gICAgICAgIG11bHRpcGxlID0gc2VsZi5tdWx0aXBsZSxcbiAgICAgICAgc2hvdWxkVXBkYXRlID0gc2VsZi5zaG91bGRVcGRhdGUsXG4gICAgICAgIHNob3VsZEJlZ2luID0gc2VsZi5zaG91bGRCZWdpbjtcblxuICAgIGlmICghc2hvdWxkQmVnaW4uY2FsbChzZWxmLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBhbGxvdyB0byBzZWxlY3QgbXVsdGlwbGUgbm9kZXMgYnV0IGRpZCBub3QgcHJlc3MgYSBrZXkgfHwgZG8gbm90IGFsbG93IHRoZSBzZWxlY3QgbXVsdGlwbGUgbm9kZXNcblxuXG4gICAgaWYgKCFrZXlkb3duIHx8ICFtdWx0aXBsZSkge1xuICAgICAgdmFyIHNlbGVjdGVkID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxmLnNlbGVjdGVkU3RhdGUpLmNvbmNhdChncmFwaC5maW5kQWxsQnlTdGF0ZSgnY29tYm8nLCBzZWxmLnNlbGVjdGVkU3RhdGUpKTtcbiAgICAgIGVhY2goc2VsZWN0ZWQsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICBpZiAoY29tYm8gIT09IGl0ZW0pIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIHNlbGYuc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5oYXNTdGF0ZShzZWxmLnNlbGVjdGVkU3RhdGUpKSB7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlLmNhbGwoc2VsZiwgZXZ0KSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgc2VsZi5zZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzZWxlY3RlZE5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxmLnNlbGVjdGVkU3RhdGUpO1xuICAgICAgdmFyIHNlbGVjdGVkQ29tYm9zID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2NvbWJvJywgc2VsZi5zZWxlY3RlZFN0YXRlKTtcbiAgICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICAgIHRhcmdldDogaXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICAgIGNvbWJvczogc2VsZWN0ZWRDb21ib3NcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0OiBmYWxzZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzaG91bGRVcGRhdGUuY2FsbChzZWxmLCBldnQpKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBzZWxmLnNlbGVjdGVkU3RhdGUsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsZWN0ZWROb2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgc2VsZi5zZWxlY3RlZFN0YXRlKTtcbiAgICAgIHZhciBzZWxlY3RlZENvbWJvcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHNlbGYuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgICB0YXJnZXQ6IGl0ZW0sXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgICBub2Rlczogc2VsZWN0ZWROb2RlcyxcbiAgICAgICAgICBjb21ib3M6IHNlbGVjdGVkQ29tYm9zXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBvbkNhbnZhc0NsaWNrOiBmdW5jdGlvbiBvbkNhbnZhc0NsaWNrKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBzZWxlY3RlZCA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgdGhpcy5zZWxlY3RlZFN0YXRlKTtcbiAgICBlYWNoKHNlbGVjdGVkLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIF90aGlzLnNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0ZWRDb21ib3MgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnY29tYm8nLCB0aGlzLnNlbGVjdGVkU3RhdGUpO1xuICAgIGVhY2goc2VsZWN0ZWRDb21ib3MsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvLCBfdGhpcy5zZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW10sXG4gICAgICAgIGNvbWJvczogW11cbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvZGUgPSBlLmtleTtcblxuICAgIGlmICghY29kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjb2RlLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpIHx8IGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICBzZWxmLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/click-select.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js":
/*!***********************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * @Author: Shiwu\n * @Description: 收起和展开 Combo\n */\nvar DEFAULT_TRIGGER = 'dblclick';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n relayout: true\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand-group 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"combo:\".concat(trigger)] = 'onComboClick', _a;\n },\n onComboClick: function onComboClick(evt) {\n var item = evt.item;\n\n var _a = this,\n graph = _a.graph,\n relayout = _a.relayout;\n\n if (!item || item.destroyed || item.getType() !== 'combo') return;\n var model = item.getModel();\n var comboId = model.id;\n\n if (!comboId) {\n return;\n }\n\n graph.collapseExpandCombo(comboId);\n if (relayout && graph.get('layout')) graph.layout();else graph.refreshPositions();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY29sbGFwc2UtZXhwYW5kLWNvbWJvLmpzPzRiNzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0NBQWdDOztBQUVoQztBQUNBOztBQUVBLGtCQUFrQjtBQUNsQixHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY29sbGFwc2UtZXhwYW5kLWNvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IFNoaXd1XG4gKiBARGVzY3JpcHRpb246IOaUtui1t+WSjOWxleW8gCBDb21ib1xuICovXG52YXIgREVGQVVMVF9UUklHR0VSID0gJ2RibGNsaWNrJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2NsaWNrJywgJ2RibGNsaWNrJ107XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIHJlbGF5b3V0OiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHRyaWdnZXI7IC8vIOajgOa1i+i+k+WFpeaYr+WQpuWQiOazlVxuXG4gICAgaWYgKEFMTE9XX0VWRU5UUy5pbmNsdWRlcyh0aGlzLnRyaWdnZXIpKSB7XG4gICAgICB0cmlnZ2VyID0gdGhpcy50cmlnZ2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjb2xsYXBzZS1leHBhbmQtZ3JvdXAg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdjbGljaycg5oiWICdkYmxjbGljaydcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hID0ge30sIF9hW1wiY29tYm86XCIuY29uY2F0KHRyaWdnZXIpXSA9ICdvbkNvbWJvQ2xpY2snLCBfYTtcbiAgfSxcbiAgb25Db21ib0NsaWNrOiBmdW5jdGlvbiBvbkNvbWJvQ2xpY2soZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHJlbGF5b3V0ID0gX2EucmVsYXlvdXQ7XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQgfHwgaXRlbS5nZXRUeXBlKCkgIT09ICdjb21ibycpIHJldHVybjtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIGNvbWJvSWQgPSBtb2RlbC5pZDtcblxuICAgIGlmICghY29tYm9JZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdyYXBoLmNvbGxhcHNlRXhwYW5kQ29tYm8oY29tYm9JZCk7XG4gICAgaWYgKHJlbGF5b3V0ICYmIGdyYXBoLmdldCgnbGF5b3V0JykpIGdyYXBoLmxheW91dCgpO2Vsc2UgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js":
/*!*****************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n /**\n * 发生收缩/扩展变化时的回调\n */\n trigger: DEFAULT_TRIGGER,\n onChange: function onChange() {}\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"node:\".concat(trigger)] = 'onNodeClick', // 支持移动端事件\n _a.touchstart = 'onNodeClick', _a;\n },\n onNodeClick: function onNodeClick(e) {\n var item = e.item;\n if (!item) return; // 如果节点进行过更新,model 会进行 merge,直接改 model 就不能改布局,所以需要去改源数据\n\n var sourceData = this.graph.findDataById(item.get('id'));\n\n if (!sourceData) {\n return;\n }\n\n var children = sourceData.children; // 叶子节点的收缩和展开没有意义\n\n if (!children || children.length === 0) {\n return;\n }\n\n var collapsed = !sourceData.collapsed;\n\n if (!this.shouldBegin(e, collapsed)) {\n return;\n }\n\n sourceData.collapsed = collapsed;\n item.getModel().collapsed = collapsed;\n this.graph.emit('itemcollapsed', {\n item: e.item,\n collapsed: collapsed\n });\n\n if (!this.shouldUpdate(e, collapsed)) {\n return;\n }\n\n this.onChange(item, collapsed);\n this.graph.layout();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY29sbGFwc2UtZXhwYW5kLmpzPzFhNDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0EsS0FBSztBQUNMLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9jb2xsYXBzZS1leHBhbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgREVGQVVMVF9UUklHR0VSID0gJ2NsaWNrJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2NsaWNrJywgJ2RibGNsaWNrJ107XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICog5Y+R55Sf5pS257ypL+aJqeWxleWPmOWMluaXtueahOWbnuiwg1xuICAgICAgICovXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciB0cmlnZ2VyOyAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcblxuICAgIGlmIChBTExPV19FVkVOVFMuaW5jbHVkZXModGhpcy50cmlnZ2VyKSkge1xuICAgICAgdHJpZ2dlciA9IHRoaXMudHJpZ2dlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgY29sbGFwc2UtZXhwYW5kIOeahCB0cmlnZ2VyIOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnY2xpY2snIOaIliAnZGJsY2xpY2snXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBfYSA9IHt9LCBfYVtcIm5vZGU6XCIuY29uY2F0KHRyaWdnZXIpXSA9ICdvbk5vZGVDbGljaycsIC8vIOaUr+aMgeenu+WKqOerr+S6i+S7tlxuICAgIF9hLnRvdWNoc3RhcnQgPSAnb25Ob2RlQ2xpY2snLCBfYTtcbiAgfSxcbiAgb25Ob2RlQ2xpY2s6IGZ1bmN0aW9uIG9uTm9kZUNsaWNrKGUpIHtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjsgLy8g5aaC5p6c6IqC54K56L+b6KGM6L+H5pu05paw77yMbW9kZWwg5Lya6L+b6KGMIG1lcmdl77yM55u05o6l5pS5IG1vZGVsIOWwseS4jeiDveaUueW4g+WxgO+8jOaJgOS7pemcgOimgeWOu+aUuea6kOaVsOaNrlxuXG4gICAgdmFyIHNvdXJjZURhdGEgPSB0aGlzLmdyYXBoLmZpbmREYXRhQnlJZChpdGVtLmdldCgnaWQnKSk7XG5cbiAgICBpZiAoIXNvdXJjZURhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBzb3VyY2VEYXRhLmNoaWxkcmVuOyAvLyDlj7blrZDoioLngrnnmoTmlLbnvKnlkozlsZXlvIDmsqHmnInmhI/kuYlcblxuICAgIGlmICghY2hpbGRyZW4gfHwgY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbGxhcHNlZCA9ICFzb3VyY2VEYXRhLmNvbGxhcHNlZDtcblxuICAgIGlmICghdGhpcy5zaG91bGRCZWdpbihlLCBjb2xsYXBzZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc291cmNlRGF0YS5jb2xsYXBzZWQgPSBjb2xsYXBzZWQ7XG4gICAgaXRlbS5nZXRNb2RlbCgpLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgICB0aGlzLmdyYXBoLmVtaXQoJ2l0ZW1jb2xsYXBzZWQnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBjb2xsYXBzZWQ6IGNvbGxhcHNlZFxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZShlLCBjb2xsYXBzZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZShpdGVtLCBjb2xsYXBzZWQpO1xuICAgIHRoaXMuZ3JhcGgubGF5b3V0KCk7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/create-edge.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/create-edge.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'drag'];\nvar DEFAULT_KEY = undefined;\nvar ALLOW_KEYS = ['shift', 'ctrl', 'control', 'alt', 'meta', undefined];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n key: DEFAULT_KEY,\n edgeConfig: {},\n getEdgeConfig: undefined\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 trigger 参数不合法,请输入 'click','drag'\");\n }\n\n if (self.key && ALLOW_KEYS.indexOf(self.key.toLowerCase()) === -1) {\n self.trigger = DEFAULT_KEY; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 key 参数不合法,请输入 'shift','ctrl','alt','control',或 undefined\");\n }\n\n var events;\n\n if (self.trigger === 'drag') {\n events = {\n 'node:dragstart': 'onClick',\n 'combo:dragstart': 'onClick',\n drag: 'updateEndPoint',\n 'node:drop': 'onClick',\n 'combo:drop': 'onClick',\n dragend: 'onDragEnd'\n };\n } else if (self.trigger === 'click') {\n events = {\n 'node:click': 'onClick',\n mousemove: 'updateEndPoint',\n 'edge:click': 'cancelCreating',\n 'canvas:click': 'cancelCreating',\n 'combo:click': 'onClick'\n };\n }\n\n if (self.key) {\n events.keydown = 'onKeyDown';\n events.keyup = 'onKeyUp';\n }\n\n return events;\n },\n onDragEnd: function onDragEnd(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var item = ev.item;\n if (!item || item.getID() === self.source || item.getType() !== 'node') self.cancelCreating({\n item: self.edge,\n x: ev.x,\n y: ev.y\n });\n },\n // 如果边的起点没有指定,则根据起点创建新边;如果起点已经指定而终点未指定,则指定终点\n onClick: function onClick(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var node = ev.item;\n var graph = self.graph;\n var model = node.getModel();\n var getEdgeConfig = self.getEdgeConfig; // 如果起点已经指定而终点未指定,则指定终点\n\n if (self.addingEdge && self.edge) {\n if (!self.shouldEnd.call(self, ev)) return;\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: self.source,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n var updateCfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n target: model.id\n }, edgeConfig);\n\n if (self.source === model.id) {\n updateCfg.type = 'loop';\n }\n\n graph.emit('beforecreateedge', {});\n graph.updateItem(self.edge, updateCfg, false);\n\n if (graph.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, self.edge.getModel()), {\n itemType: 'edge'\n });\n\n var after = {};\n after.edges = [addedModel];\n graph.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n graph.emit('aftercreateedge', {\n edge: self.edge\n }); // 暂时将该边的 capture 恢复为 true\n\n self.edge.getKeyShape().set('capture', true);\n self.edge = null;\n self.addingEdge = false;\n } else {\n // 如果边的起点没有指定,则根据起点创建新边\n if (!self.shouldBegin.call(self, ev)) return; // 获取自定义 edge 配置\n\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: model.id,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n self.edge = graph.addItem('edge', Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n source: model.id,\n target: model.id\n }, edgeConfig), false);\n self.source = model.id;\n self.addingEdge = true; // 暂时将该边的 capture 设置为 false,这样可以拾取到后面的元素\n\n self.edge.getKeyShape().set('capture', false);\n }\n },\n // 边的起点已经确定,边的末端跟随鼠标移动\n updateEndPoint: function updateEndPoint(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n if (self.edge && self.edge.destroyed) self.cancelCreating({\n item: self.edge\n });\n var point = {\n x: ev.x,\n y: ev.y\n }; // 若此时 source 节点已经被移除,结束添加边\n\n if (!self.graph.findById(self.source)) {\n self.addingEdge = false;\n return;\n }\n\n if (self.addingEdge && self.edge) {\n // 更新边的终点为鼠标位置\n self.graph.updateItem(self.edge, {\n target: point\n }, false);\n }\n },\n // 取消增加边,删除该边;或指定终点\n cancelCreating: function cancelCreating(ev) {\n var _a, _b;\n\n var self = this;\n if (self.key && !self.keydown) return;\n var graph = self.graph;\n var currentEdge = ev.item;\n\n if (self.addingEdge && (self.edge === currentEdge || ((_b = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.isCanvas) === null || _b === void 0 ? void 0 : _b.call(_a)))) {\n if (self.edge && !self.edge.destroyed) graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n return;\n }\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === self.key.toLowerCase()) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n\n if (self.addingEdge && self.edge) {\n // 清除正在增加的边\n self.graph.removeItem(self.edge, false);\n self.addingEdge = false;\n self.edge = null;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY3JlYXRlLWVkZ2UuanM/YzMxMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDTztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsNkRBQVU7QUFDckM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBLHNCQUFzQixzREFBUTtBQUM5QjtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBLHlCQUF5QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDN0M7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1EQUFtRDs7QUFFbkQ7O0FBRUEsMkJBQTJCLDZEQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx3Q0FBd0Msc0RBQVE7QUFDaEQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NyZWF0ZS1lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAYW50di91dGlsJztcbnZhciBERUZBVUxUX1RSSUdHRVIgPSAnY2xpY2snO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnZHJhZyddO1xudmFyIERFRkFVTFRfS0VZID0gdW5kZWZpbmVkO1xudmFyIEFMTE9XX0tFWVMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnY29udHJvbCcsICdhbHQnLCAnbWV0YScsIHVuZGVmaW5lZF07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIGtleTogREVGQVVMVF9LRVksXG4gICAgICBlZGdlQ29uZmlnOiB7fSxcbiAgICAgIGdldEVkZ2VDb25maWc6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG5cbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZihzZWxmLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHNlbGYudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgY3JlYXRlLWVkZ2Ug55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdjbGljayfvvIwnZHJhZydcIik7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYua2V5ICYmIEFMTE9XX0tFWVMuaW5kZXhPZihzZWxmLmtleS50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpIHtcbiAgICAgIHNlbGYudHJpZ2dlciA9IERFRkFVTFRfS0VZOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjcmVhdGUtZWRnZSDnmoQga2V5IOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnc2hpZnQn77yMJ2N0cmwn77yMJ2FsdCfvvIwnY29udHJvbCfvvIzmiJYgdW5kZWZpbmVkXCIpO1xuICAgIH1cblxuICAgIHZhciBldmVudHM7XG5cbiAgICBpZiAoc2VsZi50cmlnZ2VyID09PSAnZHJhZycpIHtcbiAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgJ25vZGU6ZHJhZ3N0YXJ0JzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86ZHJhZ3N0YXJ0JzogJ29uQ2xpY2snLFxuICAgICAgICBkcmFnOiAndXBkYXRlRW5kUG9pbnQnLFxuICAgICAgICAnbm9kZTpkcm9wJzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86ZHJvcCc6ICdvbkNsaWNrJyxcbiAgICAgICAgZHJhZ2VuZDogJ29uRHJhZ0VuZCdcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzZWxmLnRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgIG1vdXNlbW92ZTogJ3VwZGF0ZUVuZFBvaW50JyxcbiAgICAgICAgJ2VkZ2U6Y2xpY2snOiAnY2FuY2VsQ3JlYXRpbmcnLFxuICAgICAgICAnY2FudmFzOmNsaWNrJzogJ2NhbmNlbENyZWF0aW5nJyxcbiAgICAgICAgJ2NvbWJvOmNsaWNrJzogJ29uQ2xpY2snXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChzZWxmLmtleSkge1xuICAgICAgZXZlbnRzLmtleWRvd24gPSAnb25LZXlEb3duJztcbiAgICAgIGV2ZW50cy5rZXl1cCA9ICdvbktleVVwJztcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9LFxuICBvbkRyYWdFbmQ6IGZ1bmN0aW9uIG9uRHJhZ0VuZChldikge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoc2VsZi5rZXkgJiYgIXNlbGYua2V5ZG93bikgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXYuaXRlbTtcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5nZXRJRCgpID09PSBzZWxmLnNvdXJjZSB8fCBpdGVtLmdldFR5cGUoKSAhPT0gJ25vZGUnKSBzZWxmLmNhbmNlbENyZWF0aW5nKHtcbiAgICAgIGl0ZW06IHNlbGYuZWRnZSxcbiAgICAgIHg6IGV2LngsXG4gICAgICB5OiBldi55XG4gICAgfSk7XG4gIH0sXG4gIC8vIOWmguaenOi+ueeahOi1t+eCueayoeacieaMh+Wumu+8jOWImeagueaNrui1t+eCueWIm+W7uuaWsOi+ue+8m+WmguaenOi1t+eCueW3sue7j+aMh+WumuiAjOe7iOeCueacquaMh+Wumu+8jOWImeaMh+Wumue7iOeCuVxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGV2KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmIChzZWxmLmtleSAmJiAhc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIG5vZGUgPSBldi5pdGVtO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ3JhcGg7XG4gICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgIHZhciBnZXRFZGdlQ29uZmlnID0gc2VsZi5nZXRFZGdlQ29uZmlnOyAvLyDlpoLmnpzotbfngrnlt7Lnu4/mjIflrprogIznu4jngrnmnKrmjIflrprvvIzliJnmjIflrprnu4jngrlcblxuICAgIGlmIChzZWxmLmFkZGluZ0VkZ2UgJiYgc2VsZi5lZGdlKSB7XG4gICAgICBpZiAoIXNlbGYuc2hvdWxkRW5kLmNhbGwoc2VsZiwgZXYpKSByZXR1cm47XG4gICAgICB2YXIgZWRnZUNvbmZpZyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGdldEVkZ2VDb25maWcgJiYgaXNGdW5jdGlvbihnZXRFZGdlQ29uZmlnKSkge1xuICAgICAgICBlZGdlQ29uZmlnID0gZ2V0RWRnZUNvbmZpZyh7XG4gICAgICAgICAgc291cmNlOiBzZWxmLnNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQ6IG1vZGVsLmlkXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRnZUNvbmZpZyA9IHNlbGYuZWRnZUNvbmZpZztcbiAgICAgIH1cblxuICAgICAgdmFyIHVwZGF0ZUNmZyA9IF9fYXNzaWduKHtcbiAgICAgICAgdGFyZ2V0OiBtb2RlbC5pZFxuICAgICAgfSwgZWRnZUNvbmZpZyk7XG5cbiAgICAgIGlmIChzZWxmLnNvdXJjZSA9PT0gbW9kZWwuaWQpIHtcbiAgICAgICAgdXBkYXRlQ2ZnLnR5cGUgPSAnbG9vcCc7XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWNyZWF0ZWVkZ2UnLCB7fSk7XG4gICAgICBncmFwaC51cGRhdGVJdGVtKHNlbGYuZWRnZSwgdXBkYXRlQ2ZnLCBmYWxzZSk7XG5cbiAgICAgIGlmIChncmFwaC5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICAgIHZhciBhZGRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNlbGYuZWRnZS5nZXRNb2RlbCgpKSwge1xuICAgICAgICAgIGl0ZW1UeXBlOiAnZWRnZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGFmdGVyID0ge307XG4gICAgICAgIGFmdGVyLmVkZ2VzID0gW2FkZGVkTW9kZWxdO1xuICAgICAgICBncmFwaC5wdXNoU3RhY2soJ2FkZCcsIHtcbiAgICAgICAgICBiZWZvcmU6IHt9LFxuICAgICAgICAgIGFmdGVyOiBhZnRlclxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJjcmVhdGVlZGdlJywge1xuICAgICAgICBlZGdlOiBzZWxmLmVkZ2VcbiAgICAgIH0pOyAvLyDmmoLml7blsIbor6XovrnnmoQgY2FwdHVyZSDmgaLlpI3kuLogdHJ1ZVxuXG4gICAgICBzZWxmLmVkZ2UuZ2V0S2V5U2hhcGUoKS5zZXQoJ2NhcHR1cmUnLCB0cnVlKTtcbiAgICAgIHNlbGYuZWRnZSA9IG51bGw7XG4gICAgICBzZWxmLmFkZGluZ0VkZ2UgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5aaC5p6c6L6555qE6LW354K55rKh5pyJ5oyH5a6a77yM5YiZ5qC55o2u6LW354K55Yib5bu65paw6L65XG4gICAgICBpZiAoIXNlbGYuc2hvdWxkQmVnaW4uY2FsbChzZWxmLCBldikpIHJldHVybjsgLy8g6I635Y+W6Ieq5a6a5LmJIGVkZ2Ug6YWN572uXG5cbiAgICAgIHZhciBlZGdlQ29uZmlnID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZ2V0RWRnZUNvbmZpZyAmJiBpc0Z1bmN0aW9uKGdldEVkZ2VDb25maWcpKSB7XG4gICAgICAgIGVkZ2VDb25maWcgPSBnZXRFZGdlQ29uZmlnKHtcbiAgICAgICAgICBzb3VyY2U6IG1vZGVsLmlkLFxuICAgICAgICAgIHRhcmdldDogbW9kZWwuaWRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlQ29uZmlnID0gc2VsZi5lZGdlQ29uZmlnO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmVkZ2UgPSBncmFwaC5hZGRJdGVtKCdlZGdlJywgX19hc3NpZ24oe1xuICAgICAgICBzb3VyY2U6IG1vZGVsLmlkLFxuICAgICAgICB0YXJnZXQ6IG1vZGVsLmlkXG4gICAgICB9LCBlZGdlQ29uZmlnKSwgZmFsc2UpO1xuICAgICAgc2VsZi5zb3VyY2UgPSBtb2RlbC5pZDtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IHRydWU7IC8vIOaaguaXtuWwhuivpei+ueeahCBjYXB0dXJlIOiuvue9ruS4uiBmYWxzZe+8jOi/meagt+WPr+S7peaLvuWPluWIsOWQjumdoueahOWFg+e0oFxuXG4gICAgICBzZWxmLmVkZ2UuZ2V0S2V5U2hhcGUoKS5zZXQoJ2NhcHR1cmUnLCBmYWxzZSk7XG4gICAgfVxuICB9LFxuICAvLyDovrnnmoTotbfngrnlt7Lnu4/noa7lrprvvIzovrnnmoTmnKvnq6/ot5/pmo/pvKDmoIfnp7vliqhcbiAgdXBkYXRlRW5kUG9pbnQ6IGZ1bmN0aW9uIHVwZGF0ZUVuZFBvaW50KGV2KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmIChzZWxmLmtleSAmJiAhc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgaWYgKHNlbGYuZWRnZSAmJiBzZWxmLmVkZ2UuZGVzdHJveWVkKSBzZWxmLmNhbmNlbENyZWF0aW5nKHtcbiAgICAgIGl0ZW06IHNlbGYuZWRnZVxuICAgIH0pO1xuICAgIHZhciBwb2ludCA9IHtcbiAgICAgIHg6IGV2LngsXG4gICAgICB5OiBldi55XG4gICAgfTsgLy8g6Iul5q2k5pe2IHNvdXJjZSDoioLngrnlt7Lnu4/ooqvnp7vpmaTvvIznu5PmnZ/mt7vliqDovrlcblxuICAgIGlmICghc2VsZi5ncmFwaC5maW5kQnlJZChzZWxmLnNvdXJjZSkpIHtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZWxmLmFkZGluZ0VkZ2UgJiYgc2VsZi5lZGdlKSB7XG4gICAgICAvLyDmm7TmlrDovrnnmoTnu4jngrnkuLrpvKDmoIfkvY3nva5cbiAgICAgIHNlbGYuZ3JhcGgudXBkYXRlSXRlbShzZWxmLmVkZ2UsIHtcbiAgICAgICAgdGFyZ2V0OiBwb2ludFxuICAgICAgfSwgZmFsc2UpO1xuICAgIH1cbiAgfSxcbiAgLy8g5Y+W5raI5aKe5Yqg6L6577yM5Yig6Zmk6K+l6L6577yb5oiW5oyH5a6a57uI54K5XG4gIGNhbmNlbENyZWF0aW5nOiBmdW5jdGlvbiBjYW5jZWxDcmVhdGluZyhldikge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdyYXBoO1xuICAgIHZhciBjdXJyZW50RWRnZSA9IGV2Lml0ZW07XG5cbiAgICBpZiAoc2VsZi5hZGRpbmdFZGdlICYmIChzZWxmLmVkZ2UgPT09IGN1cnJlbnRFZGdlIHx8ICgoX2IgPSAoX2EgPSBldi50YXJnZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pc0NhbnZhcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpKSkpIHtcbiAgICAgIGlmIChzZWxmLmVkZ2UgJiYgIXNlbGYuZWRnZS5kZXN0cm95ZWQpIGdyYXBoLnJlbW92ZUl0ZW0oc2VsZi5lZGdlLCBmYWxzZSk7XG4gICAgICBzZWxmLmVkZ2UgPSBudWxsO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bihlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY29kZS50b0xvd2VyQ2FzZSgpID09PSBzZWxmLmtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBzZWxmLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHNlbGYuYWRkaW5nRWRnZSAmJiBzZWxmLmVkZ2UpIHtcbiAgICAgIC8vIOa4hemZpOato+WcqOWinuWKoOeahOi+uVxuICAgICAgc2VsZi5ncmFwaC5yZW1vdmVJdGVtKHNlbGYuZWRnZSwgZmFsc2UpO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gZmFsc2U7XG4gICAgICBzZWxmLmVkZ2UgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/create-edge.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n\n\nvar cloneEvent = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneEvent,\n isNaN = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNaN;\nvar abs = Math.abs;\nvar DRAG_OFFSET = 10;\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n // drag-canvas 可拖动的扩展范围,默认为 0,即最多可以拖动一屏的位置\n // 当设置的值大于 0 时,即拖动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可拖动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0,\n allowDragOnItem: false\n };\n },\n getEvents: function getEvents() {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'onMouseUp',\n keyup: 'onKeyUp',\n focus: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onMouseUp'\n };\n },\n updateViewport: function updateViewport(e) {\n var origin = this.origin;\n var clientX = +e.clientX;\n var clientY = +e.clientY;\n\n if (isNaN(clientX) || isNaN(clientY)) {\n return;\n }\n\n var dx = clientX - origin.x;\n var dy = clientY - origin.y;\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n this.origin = {\n x: clientX,\n y: clientY\n };\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n if (graphCanvasBBox.minX <= width + expandWidth && graphCanvasBBox.minX + dx > width + expandWidth || graphCanvasBBox.maxX + expandWidth >= 0 && graphCanvasBBox.maxX + expandWidth + dx < 0) {\n dx = 0;\n }\n\n if (graphCanvasBBox.minY <= height + expandHeight && graphCanvasBBox.minY + dy > height + expandHeight || graphCanvasBBox.maxY + expandHeight >= 0 && graphCanvasBBox.maxY + expandHeight + dy < 0) {\n dy = 0;\n }\n\n this.graph.translate(dx, dy);\n },\n onTouchStart: function onTouchStart(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n self.onMouseDown(e);\n },\n onMouseDown: function onMouseDown(e) {\n var self = this;\n var event = e.originalEvent;\n\n if (event && e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && event.button !== 0) {\n return;\n }\n\n if (e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && typeof window !== 'undefined' && window.event && !window.event.buttons && !window.event.button) {\n return;\n }\n\n if (!this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (self.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n self.origin = {\n x: e.clientX,\n y: e.clientY\n };\n self.dragging = false;\n\n if (this.enableOptimize) {\n // 拖动 canvas 过程中隐藏所有的边及label\n var graph = this.graph;\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n });\n }\n\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n var child = children_1[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n child.set('ori-visibility', child.get('ori-visibility') || child.get('visible'));\n child.hide();\n }\n }\n }\n }\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布,结束拖拽\n\n if (event1 && event2) {\n this.onMouseUp(e);\n return;\n }\n\n e.preventDefault();\n self.onMouseMove(e);\n },\n onMouseMove: function onMouseMove(e) {\n var graph = this.graph;\n if (this.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n e = cloneEvent(e);\n\n if (!this.origin) {\n return;\n }\n\n if (!this.dragging) {\n if (abs(this.origin.x - e.clientX) + abs(this.origin.y - e.clientY) < DRAG_OFFSET) {\n return;\n }\n\n if (this.shouldBegin.call(this, e)) {\n e.type = 'dragstart';\n graph.emit('canvas:dragstart', e);\n this.originPosition = {\n x: e.clientX,\n y: e.clientY\n };\n this.dragging = true;\n }\n } else {\n e.type = 'drag';\n graph.emit('canvas:drag', e);\n }\n\n if (this.shouldUpdate.call(this, e)) {\n this.updateViewport(e);\n }\n },\n onMouseUp: function onMouseUp(e) {\n var _a, _b;\n\n var graph = this.graph;\n if (this.keydown) return;\n var currentZoom = graph.getZoom();\n var modeController = graph.get('modeController');\n var zoomCanvas = (_b = (_a = modeController === null || modeController === void 0 ? void 0 : modeController.modes[modeController.mode]) === null || _a === void 0 ? void 0 : _a.filter(function (behavior) {\n return behavior.type === 'zoom-canvas';\n })) === null || _b === void 0 ? void 0 : _b[0];\n var optimizeZoom = zoomCanvas ? zoomCanvas.optimizeZoom || 0.1 : 0;\n\n if (this.enableOptimize) {\n // 拖动结束后显示所有的边\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n });\n }\n\n if (currentZoom > optimizeZoom) {\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {\n var child = children_2[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n var oriVis = child.get('ori-visibility');\n if (oriVis) child.show();\n }\n }\n }\n }\n }\n\n if (!this.dragging) {\n this.origin = null;\n return;\n }\n\n e = cloneEvent(e);\n\n if (this.shouldEnd.call(this, e)) {\n this.updateViewport(e);\n }\n\n e.type = 'dragend';\n e.dx = e.clientX - this.originPosition.x;\n e.dy = e.clientY - this.originPosition.y;\n graph.emit('canvas:dragend', e);\n this.endDrag();\n },\n endDrag: function endDrag() {\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (ALLOW_EVENTS.indexOf(code.toLowerCase()) > -1) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n this.keydown = false;\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1jYW52YXMuanM/NmFmMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDYjtBQUMzQixpQkFBaUIsNkNBQUk7QUFDckIsWUFBWSw2Q0FBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIscURBQU87QUFDbkM7QUFDQTs7QUFFQSxtQkFBbUIscURBQU87QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUEsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTs7QUFFQSwrQ0FBK0Msd0JBQXdCO0FBQ3ZFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUEsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTs7QUFFQSxpREFBaUQsd0JBQXdCO0FBQ3pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRzZFdmVudCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbCc7XG52YXIgY2xvbmVFdmVudCA9IFV0aWwuY2xvbmVFdmVudCxcbiAgICBpc05hTiA9IFV0aWwuaXNOYU47XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgRFJBR19PRkZTRVQgPSAxMDtcbnZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0aW9uOiAnYm90aCcsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICAvLyBkcmFnLWNhbnZhcyDlj6/mi5bliqjnmoTmianlsZXojIPlm7TvvIzpu5jorqTkuLogMO+8jOWNs+acgOWkmuWPr+S7peaLluWKqOS4gOWxj+eahOS9jee9rlxuICAgICAgLy8g5b2T6K6+572u55qE5YC85aSn5LqOIDAg5pe277yM5Y2z5ouW5Yqo5Y+v5Lul6LaF6L+H5LiA5bGPXG4gICAgICAvLyDlvZPorr7nva7nmoTlgLzlsI/kuo4gMCDml7bvvIznm7jlvZPkuo7nvKnlsI/kuoblj6/mi5bliqjojIPlm7RcbiAgICAgIC8vIOWFt+S9k+WunuS+i+WPr+WPguiAg++8mmh0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vbWRuL3Jtc19mOGM2YTAvYWZ0cy9pbWcvQSpJRmZvUzY3X0hzc0FBQUFBQUFBQUFBQUFBUlFuQVFcbiAgICAgIHNjYWxhYmxlUmFuZ2U6IDAsXG4gICAgICBhbGxvd0RyYWdPbkl0ZW06IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRyYWdzdGFydDogJ29uTW91c2VEb3duJyxcbiAgICAgIGRyYWc6ICdvbk1vdXNlTW92ZScsXG4gICAgICBkcmFnZW5kOiAnb25Nb3VzZVVwJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnb25Nb3VzZVVwJyxcbiAgICAgIGtleXVwOiAnb25LZXlVcCcsXG4gICAgICBmb2N1czogJ29uS2V5VXAnLFxuICAgICAga2V5ZG93bjogJ29uS2V5RG93bicsXG4gICAgICB0b3VjaHN0YXJ0OiAnb25Ub3VjaFN0YXJ0JyxcbiAgICAgIHRvdWNobW92ZTogJ29uVG91Y2hNb3ZlJyxcbiAgICAgIHRvdWNoZW5kOiAnb25Nb3VzZVVwJ1xuICAgIH07XG4gIH0sXG4gIHVwZGF0ZVZpZXdwb3J0OiBmdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChlKSB7XG4gICAgdmFyIG9yaWdpbiA9IHRoaXMub3JpZ2luO1xuICAgIHZhciBjbGllbnRYID0gK2UuY2xpZW50WDtcbiAgICB2YXIgY2xpZW50WSA9ICtlLmNsaWVudFk7XG5cbiAgICBpZiAoaXNOYU4oY2xpZW50WCkgfHwgaXNOYU4oY2xpZW50WSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZHggPSBjbGllbnRYIC0gb3JpZ2luLng7XG4gICAgdmFyIGR5ID0gY2xpZW50WSAtIG9yaWdpbi55O1xuXG4gICAgaWYgKHRoaXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ3gnKSB7XG4gICAgICBkeSA9IDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdldCgnZGlyZWN0aW9uJykgPT09ICd5Jykge1xuICAgICAgZHggPSAwO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0ge1xuICAgICAgeDogY2xpZW50WCxcbiAgICAgIHk6IGNsaWVudFlcbiAgICB9O1xuICAgIHZhciB3aWR0aCA9IHRoaXMuZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSB0aGlzLmdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyYXBoQ2FudmFzQkJveCA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgdmFyIGV4cGFuZFdpZHRoID0gdGhpcy5zY2FsYWJsZVJhbmdlO1xuICAgIHZhciBleHBhbmRIZWlnaHQgPSB0aGlzLnNjYWxhYmxlUmFuZ2U7IC8vIOiLpSBzY2FsYWJsZVJhbmdlIOaYryAwfjEg55qE5bCP5pWw77yM5YiZ5L2c5Li65q+U5L6L6ICD6JmRXG5cbiAgICBpZiAoZXhwYW5kV2lkdGggPCAxICYmIGV4cGFuZFdpZHRoID4gLTEpIHtcbiAgICAgIGV4cGFuZFdpZHRoID0gd2lkdGggKiBleHBhbmRXaWR0aDtcbiAgICAgIGV4cGFuZEhlaWdodCA9IGhlaWdodCAqIGV4cGFuZEhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAoZ3JhcGhDYW52YXNCQm94Lm1pblggPD0gd2lkdGggKyBleHBhbmRXaWR0aCAmJiBncmFwaENhbnZhc0JCb3gubWluWCArIGR4ID4gd2lkdGggKyBleHBhbmRXaWR0aCB8fCBncmFwaENhbnZhc0JCb3gubWF4WCArIGV4cGFuZFdpZHRoID49IDAgJiYgZ3JhcGhDYW52YXNCQm94Lm1heFggKyBleHBhbmRXaWR0aCArIGR4IDwgMCkge1xuICAgICAgZHggPSAwO1xuICAgIH1cblxuICAgIGlmIChncmFwaENhbnZhc0JCb3gubWluWSA8PSBoZWlnaHQgKyBleHBhbmRIZWlnaHQgJiYgZ3JhcGhDYW52YXNCQm94Lm1pblkgKyBkeSA+IGhlaWdodCArIGV4cGFuZEhlaWdodCB8fCBncmFwaENhbnZhc0JCb3gubWF4WSArIGV4cGFuZEhlaWdodCA+PSAwICYmIGdyYXBoQ2FudmFzQkJveC5tYXhZICsgZXhwYW5kSGVpZ2h0ICsgZHkgPCAwKSB7XG4gICAgICBkeSA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5ncmFwaC50cmFuc2xhdGUoZHgsIGR5KTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdOyAvLyDlpoLmnpzmmK/lj4zmjIfmk43kvZzvvIzkuI3lhYHorrjmi5bmi73nlLvluINcblxuICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNlbGYub25Nb3VzZURvd24oZSk7XG4gIH0sXG4gIG9uTW91c2VEb3duOiBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBldmVudCA9IGUub3JpZ2luYWxFdmVudDtcblxuICAgIGlmIChldmVudCAmJiBlLm5hbWUgIT09IEc2RXZlbnQuVE9VQ0hTVEFSVCAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS5uYW1lICE9PSBHNkV2ZW50LlRPVUNIU1RBUlQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmV2ZW50ICYmICF3aW5kb3cuZXZlbnQuYnV0dG9ucyAmJiAhd2luZG93LmV2ZW50LmJ1dHRvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRCZWdpbi5jYWxsKHRoaXMsIGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYua2V5ZG93bikgcmV0dXJuO1xuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICB2YXIgdGFyZ2V0SXNDYW52YXMgPSB0YXJnZXQgJiYgdGFyZ2V0LmlzQ2FudmFzICYmIHRhcmdldC5pc0NhbnZhcygpO1xuICAgIGlmICghdGhpcy5hbGxvd0RyYWdPbkl0ZW0gJiYgIXRhcmdldElzQ2FudmFzKSByZXR1cm47XG4gICAgc2VsZi5vcmlnaW4gPSB7XG4gICAgICB4OiBlLmNsaWVudFgsXG4gICAgICB5OiBlLmNsaWVudFlcbiAgICB9O1xuICAgIHNlbGYuZHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmVuYWJsZU9wdGltaXplKSB7XG4gICAgICAvLyDmi5bliqggY2FudmFzIOi/h+eoi+S4remakOiXj+aJgOacieeahOi+ueWPimxhYmVsXG4gICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgdmFyIGVkZ2VzID0gZ3JhcGguZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVkZ2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBzaGFwZXMgPSBlZGdlc1tpXS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICBpZiAoIXNoYXBlcykgY29udGludWU7XG4gICAgICAgIHNoYXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgIHNoYXBlLmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBub2RlTGVuID0gbm9kZXMubGVuZ3RoOyBqIDwgbm9kZUxlbjsgaisrKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSBub2Rlc1tqXS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gY29udGFpbmVyLmdldCgnY2hpbGRyZW4nKTtcblxuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGNoaWxkcmVuXzEgPSBjaGlsZHJlbjsgX2kgPCBjaGlsZHJlbl8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuXzFbX2ldO1xuICAgICAgICAgIHZhciBpc0tleVNoYXBlID0gY2hpbGQuZ2V0KCdpc0tleVNoYXBlJyk7XG5cbiAgICAgICAgICBpZiAoIWlzS2V5U2hhcGUpIHtcbiAgICAgICAgICAgIGNoaWxkLnNldCgnb3JpLXZpc2liaWxpdHknLCBjaGlsZC5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgY2hpbGQuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgY2hpbGQuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTsgLy8g5aaC5p6c5piv5Y+M5oyH5pON5L2c77yM5LiN5YWB6K645ouW5ou955S75biD77yM57uT5p2f5ouW5ou9XG5cbiAgICBpZiAoZXZlbnQxICYmIGV2ZW50Mikge1xuICAgICAgdGhpcy5vbk1vdXNlVXAoZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNlbGYub25Nb3VzZU1vdmUoZSk7XG4gIH0sXG4gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbiBvbk1vdXNlTW92ZShlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICBpZiAodGhpcy5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgIHZhciB0YXJnZXRJc0NhbnZhcyA9IHRhcmdldCAmJiB0YXJnZXQuaXNDYW52YXMgJiYgdGFyZ2V0LmlzQ2FudmFzKCk7XG4gICAgaWYgKCF0aGlzLmFsbG93RHJhZ09uSXRlbSAmJiAhdGFyZ2V0SXNDYW52YXMpIHJldHVybjtcbiAgICBlID0gY2xvbmVFdmVudChlKTtcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIGlmIChhYnModGhpcy5vcmlnaW4ueCAtIGUuY2xpZW50WCkgKyBhYnModGhpcy5vcmlnaW4ueSAtIGUuY2xpZW50WSkgPCBEUkFHX09GRlNFVCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZSkpIHtcbiAgICAgICAgZS50eXBlID0gJ2RyYWdzdGFydCc7XG4gICAgICAgIGdyYXBoLmVtaXQoJ2NhbnZhczpkcmFnc3RhcnQnLCBlKTtcbiAgICAgICAgdGhpcy5vcmlnaW5Qb3NpdGlvbiA9IHtcbiAgICAgICAgICB4OiBlLmNsaWVudFgsXG4gICAgICAgICAgeTogZS5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlLnR5cGUgPSAnZHJhZyc7XG4gICAgICBncmFwaC5lbWl0KCdjYW52YXM6ZHJhZycsIGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZS5jYWxsKHRoaXMsIGUpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KGUpO1xuICAgIH1cbiAgfSxcbiAgb25Nb3VzZVVwOiBmdW5jdGlvbiBvbk1vdXNlVXAoZSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIGlmICh0aGlzLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgY3VycmVudFpvb20gPSBncmFwaC5nZXRab29tKCk7XG4gICAgdmFyIG1vZGVDb250cm9sbGVyID0gZ3JhcGguZ2V0KCdtb2RlQ29udHJvbGxlcicpO1xuICAgIHZhciB6b29tQ2FudmFzID0gKF9iID0gKF9hID0gbW9kZUNvbnRyb2xsZXIgPT09IG51bGwgfHwgbW9kZUNvbnRyb2xsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGVDb250cm9sbGVyLm1vZGVzW21vZGVDb250cm9sbGVyLm1vZGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmlsdGVyKGZ1bmN0aW9uIChiZWhhdmlvcikge1xuICAgICAgcmV0dXJuIGJlaGF2aW9yLnR5cGUgPT09ICd6b29tLWNhbnZhcyc7XG4gICAgfSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlswXTtcbiAgICB2YXIgb3B0aW1pemVab29tID0gem9vbUNhbnZhcyA/IHpvb21DYW52YXMub3B0aW1pemVab29tIHx8IDAuMSA6IDA7XG5cbiAgICBpZiAodGhpcy5lbmFibGVPcHRpbWl6ZSkge1xuICAgICAgLy8g5ouW5Yqo57uT5p2f5ZCO5pi+56S65omA5pyJ55qE6L65XG4gICAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZWRnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIHNoYXBlcyA9IGVkZ2VzW2ldLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgIGlmICghc2hhcGVzKSBjb250aW51ZTtcbiAgICAgICAgc2hhcGVzLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgICAgdmFyIG9yaVZpcyA9IHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFpvb20gPiBvcHRpbWl6ZVpvb20pIHtcbiAgICAgICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMCwgbm9kZUxlbiA9IG5vZGVzLmxlbmd0aDsgaiA8IG5vZGVMZW47IGorKykge1xuICAgICAgICAgIHZhciBjb250YWluZXIgPSBub2Rlc1tqXS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBjb250YWluZXIuZ2V0KCdjaGlsZHJlbicpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBjaGlsZHJlbl8yID0gY2hpbGRyZW47IF9pIDwgY2hpbGRyZW5fMi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuXzJbX2ldO1xuICAgICAgICAgICAgdmFyIGlzS2V5U2hhcGUgPSBjaGlsZC5nZXQoJ2lzS2V5U2hhcGUnKTtcblxuICAgICAgICAgICAgaWYgKCFpc0tleVNoYXBlKSB7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBjaGlsZC5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGNoaWxkLnNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMub3JpZ2luID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlID0gY2xvbmVFdmVudChlKTtcblxuICAgIGlmICh0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGUpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KGUpO1xuICAgIH1cblxuICAgIGUudHlwZSA9ICdkcmFnZW5kJztcbiAgICBlLmR4ID0gZS5jbGllbnRYIC0gdGhpcy5vcmlnaW5Qb3NpdGlvbi54O1xuICAgIGUuZHkgPSBlLmNsaWVudFkgLSB0aGlzLm9yaWdpblBvc2l0aW9uLnk7XG4gICAgZ3JhcGguZW1pdCgnY2FudmFzOmRyYWdlbmQnLCBlKTtcbiAgICB0aGlzLmVuZERyYWcoKTtcbiAgfSxcbiAgZW5kRHJhZzogZnVuY3Rpb24gZW5kRHJhZygpIHtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ2JlZ2luID0gZmFsc2U7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvZGUgPSBlLmtleTtcblxuICAgIGlmICghY29kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChBTExPV19FVkVOVFMuaW5kZXhPZihjb2RlLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlVcDogZnVuY3Rpb24gb25LZXlVcCgpIHtcbiAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ2JlZ2luID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/drag-combo.js":
/*!************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/drag-combo.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-pc/es/global.js\");\n\n/*\n * @Author: moyee\n * @LastEditors: moyee\n * @Description: 拖动 Combo\n */\n\n\n\n\nvar calculationItemsBBox = _util__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calculationItemsBBox;\n/**\n * 遍历拖动的 Combo 下的所有 Combo\n * @param data 拖动的 Combo\n * @param fn\n */\n\nvar traverseCombo = function traverseCombo(data, fn) {\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n\n if (combos.length === 0) {\n return false;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n traverseCombo(child, fn);\n });\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n enableDelegate: false,\n delegateStyle: {},\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n activeState: '',\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n return {\n 'combo:dragstart': 'onDragStart',\n 'combo:drag': 'onDrag',\n 'combo:dragend': 'onDragEnd',\n 'combo:drop': 'onDrop',\n 'node:drop': 'onNodeDrop',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave'\n };\n },\n validationCombo: function validationCombo(evt) {\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return false;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n var graph = this.graph;\n var item = evt.item;\n this.currentShouldEnd = true;\n if (!this.validationCombo(evt)) return;\n this.targets = []; // 获取所有选中的 Combo\n\n var combos = graph.findAllByState('combo', this.selectedState);\n var currentCombo = item.get('id');\n var dragCombos = combos.filter(function (combo) {\n var comboId = combo.get('id');\n return currentCombo === comboId;\n });\n\n if (dragCombos.length === 0) {\n this.targets.push(item);\n } else {\n this.targets = combos;\n }\n\n if (this.activeState) {\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId) {\n var parentCombo = graph.findById(model.parentId);\n\n if (parentCombo) {\n graph.setItemState(parentCombo, _this.activeState, true);\n }\n }\n });\n }\n\n this.point = {};\n this.originPoint = {};\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.currentItemChildCombos = [];\n traverseCombo(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n var model = param.getModel();\n\n _this.currentItemChildCombos.push(model.id);\n\n return true;\n });\n },\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n\n if (this.enableDelegate) {\n this.updateDelegate(evt);\n } else {\n if (this.activeState) {\n var graph_1 = this.graph;\n var item = evt.item;\n var model_1 = item.getModel(); // 拖动过程中实时计算距离\n\n var combos = graph_1.getCombos();\n var sourceBBox = item.getBBox();\n var centerX_1 = sourceBBox.centerX,\n centerY_1 = sourceBBox.centerY,\n width_1 = sourceBBox.width; // 参与计算的 Combo,需要排除掉:\n // 1、拖动 combo 自己\n // 2、拖动 combo 的 parent\n // 3、拖动 Combo 的 children\n\n var calcCombos = combos.filter(function (combo) {\n var cmodel = combo.getModel(); // 被拖动的是最外层的 Combo,无 parent,排除自身和子元素\n\n if (!model_1.parentId) {\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n }\n\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n });\n calcCombos.map(function (combo) {\n var _a = combo.getBBox(),\n cx = _a.centerX,\n cy = _a.centerY,\n w = _a.width; // 拖动的 combo 和要进入的 combo 之间的距离\n\n\n var disX = centerX_1 - cx;\n var disY = centerY_1 - cy; // 圆心距离\n\n var distance = 2 * Math.sqrt(disX * disX + disY * disY);\n\n if (width_1 + w - distance > 0.8 * width_1) {\n graph_1.setItemState(combo, _this.activeState, true);\n } else {\n graph_1.setItemState(combo, _this.activeState, false);\n }\n });\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt);\n });\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this; // 当启用 delegate 时,拖动结束时需要更新 combo\n\n\n if (this.enableDelegate || restore) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt, restore);\n });\n }\n },\n onDrop: function onDrop(evt) {\n var _this = this; // 被放下的目标 combo\n\n\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !item || !this.targets || item.destroyed) return;\n var graph = this.graph;\n var targetModel = item.getModel();\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId !== targetModel.id) {\n if (_this.activeState) {\n graph.setItemState(item, _this.activeState, false);\n } // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n\n\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo, targetModel.id);\n } else {\n graph.updateCombo(combo);\n }\n } else {\n graph.updateCombo(item);\n }\n });\n this.end(item, evt); // 如果已经拖放下了,则不需要再通过距离判断了\n\n this.endComparison = true;\n },\n onNodeDrop: function onNodeDrop(evt) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return;\n var graph = this.graph;\n var item = evt.item;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n var droppedCombo; // 如果被放置的的节点有 comboId,且这个 comboId 与正在被拖拽的 combo 的父 id 不相同,则更新父亲为 comboId\n\n if (comboId) {\n if (this.activeState) {\n var combo = graph.findById(comboId);\n graph.setItemState(combo, this.activeState, false);\n }\n\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n if (comboId !== combo.getID()) {\n droppedCombo = graph.findById(comboId);\n if (comboId !== combo.getModel().parentId) graph.updateComboTree(combo, comboId);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } else {\n // 如果被放置的节点没有 comboId,且正在被拖拽的 combo 有父 id,则更新父亲为 undefined\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n var model = combo.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(combo);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } // 如果已经拖放下了,则不需要再通过距离判断了\n\n\n this.endComparison = true;\n this.end(droppedCombo, evt);\n },\n onDragEnter: function onDragEnter(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, true);\n }\n },\n onDragLeave: function onDragLeave(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, false);\n }\n },\n onDragEnd: function onDragEnd(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var item = evt.item;\n\n if (this.currentShouldEnd) {\n this.updatePositions(evt);\n }\n\n var parentCombo = this.getParentCombo(item.getModel().parentId);\n var graph = this.graph;\n\n if (parentCombo && this.activeState) {\n graph.setItemState(parentCombo, this.activeState, false);\n }\n\n this.end(undefined, evt);\n },\n end: function end(comboDropedOn, evt) {\n var _this = this;\n\n if (!this.origin) return;\n var graph = this.graph; // 删除delegate shape\n\n if (this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n delegateGroup.clear();\n this.delegateShape = null;\n }\n\n if (comboDropedOn && this.activeState) {\n graph.setItemState(comboDropedOn, this.activeState, false);\n } // 若没有被放置的 combo,则是被放置在画布上\n\n\n if (!comboDropedOn) {\n this.targets.map(function (combo) {\n // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo);\n } else {\n graph.updateCombo(combo);\n }\n });\n }\n\n this.point = [];\n this.origin = null;\n this.originPoint = null;\n this.targets.length = 0;\n },\n\n /**\n * 遍历 comboTree,分别更新 node 和 combo\n * @param data\n * @param fn\n */\n traverse: function traverse(data, fn) {\n var _this = this;\n\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n _this.traverse(child, fn);\n });\n var nodes = data.get('nodes');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(nodes, function (child) {\n _this.traverse(child, fn);\n });\n }\n },\n updateCombo: function updateCombo(item, evt, restore) {\n var _this = this;\n\n this.traverse(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n _this.updateSignleItem(param, evt, restore);\n\n return true;\n });\n },\n\n /**\n *\n * @param item 当前正在拖动的元素\n * @param evt\n */\n updateSignleItem: function updateSignleItem(item, evt, restore) {\n var origin = this.origin;\n var graph = this.graph;\n var model = item.getModel();\n var itemId = item.get('id');\n\n if (!this.point[itemId]) {\n this.point[itemId] = {\n x: model.x,\n y: model.y\n };\n }\n\n var x = evt.x - origin.x + this.point[itemId].x;\n var y = evt.y - origin.y + this.point[itemId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n graph.updateItem(item, {\n x: x,\n y: y\n });\n },\n\n /**\n * 根据 ID 获取父 Combo\n * @param parentId 父 Combo ID\n */\n getParentCombo: function getParentCombo(parentId) {\n var graph = this.graph;\n\n if (!parentId) {\n return undefined;\n }\n\n var parentCombo = graph.findById(parentId);\n\n if (!parentCombo) {\n return undefined;\n }\n\n return parentCombo;\n },\n updateDelegate: function updateDelegate(evt) {\n var graph = this.graph; // 当没有 delegate shape 时创建\n\n if (!this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n var bbox = null;\n\n if (this.targets.length > 1) {\n bbox = calculationItemsBBox(this.targets);\n } else {\n bbox = this.targets[0].getBBox();\n }\n\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height,\n minX = bbox.minX,\n minY = bbox.minY;\n this.originPoint = {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n };\n\n var attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].delegateStyle), this.delegateStyle);\n\n this.delegateShape = delegateGroup.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: bbox.width,\n height: bbox.height,\n x: bbox.x,\n y: bbox.y\n }, attrs),\n name: 'combo-delegate-shape'\n });\n this.delegateShape.set('capture', false);\n this.delegate = this.delegateShape;\n } else {\n var clientX = evt.x - this.origin.x + this.originPoint.minX;\n var clientY = evt.y - this.origin.y + this.originPoint.minY;\n this.delegateShape.attr({\n x: clientX,\n y: clientY\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1jb21iby5qcz9lZWRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFa0M7QUFDUDtBQUNJO0FBQy9CLDJCQUEyQiw2Q0FBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7OztBQUczQjtBQUNBLG9DQUFvQzs7QUFFcEM7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjs7O0FBR3JCO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCx3QkFBd0I7O0FBRXhCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSwrQ0FBTTs7QUFFOUM7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9kcmFnLWNvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbi8qXG4gKiBAQXV0aG9yOiBtb3llZVxuICogQExhc3RFZGl0b3JzOiBtb3llZVxuICogQERlc2NyaXB0aW9uOiDmi5bliqggQ29tYm9cbiAqL1xuXG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgVXRpbCBmcm9tICcuLi91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbnZhciBjYWxjdWxhdGlvbkl0ZW1zQkJveCA9IFV0aWwuY2FsY3VsYXRpb25JdGVtc0JCb3g7XG4vKipcbiAqIOmBjeWOhuaLluWKqOeahCBDb21ibyDkuIvnmoTmiYDmnIkgQ29tYm9cbiAqIEBwYXJhbSBkYXRhIOaLluWKqOeahCBDb21ib1xuICogQHBhcmFtIGZuXG4gKi9cblxudmFyIHRyYXZlcnNlQ29tYm8gPSBmdW5jdGlvbiB0cmF2ZXJzZUNvbWJvKGRhdGEsIGZuKSB7XG4gIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZGF0YSkge1xuICAgIHZhciBjb21ib3MgPSBkYXRhLmdldCgnY29tYm9zJyk7XG5cbiAgICBpZiAoY29tYm9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGVhY2goY29tYm9zLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHRyYXZlcnNlQ29tYm8oY2hpbGQsIGZuKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVEZWxlZ2F0ZTogZmFsc2UsXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiB7fSxcbiAgICAgIC8vIOaLluWKqOiKgueCuei/h+eoi+S4reaYr+WQpuWPquaUueWPmCBDb21ibyDnmoTlpKflsI/vvIzogIzkuI3mlLnlj5jlhbbnu5PmnoRcbiAgICAgIG9ubHlDaGFuZ2VDb21ib1NpemU6IGZhbHNlLFxuICAgICAgLy8g5ouW5Yqo6L+H56iL5Lit55uu5qCHIGNvbWJvIOeKtuaAgeagt+W8j1xuICAgICAgYWN0aXZlU3RhdGU6ICcnLFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJ1xuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnY29tYm86ZHJhZ3N0YXJ0JzogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgICdjb21ibzpkcmFnJzogJ29uRHJhZycsXG4gICAgICAnY29tYm86ZHJhZ2VuZCc6ICdvbkRyYWdFbmQnLFxuICAgICAgJ2NvbWJvOmRyb3AnOiAnb25Ecm9wJyxcbiAgICAgICdub2RlOmRyb3AnOiAnb25Ob2RlRHJvcCcsXG4gICAgICAnY29tYm86ZHJhZ2VudGVyJzogJ29uRHJhZ0VudGVyJyxcbiAgICAgICdjb21ibzpkcmFnbGVhdmUnOiAnb25EcmFnTGVhdmUnXG4gICAgfTtcbiAgfSxcbiAgdmFsaWRhdGlvbkNvbWJvOiBmdW5jdGlvbiB2YWxpZGF0aW9uQ29tYm8oZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRVcGRhdGUuY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIGlmICh0eXBlICE9PSAnY29tYm8nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG9uRHJhZ1N0YXJ0OiBmdW5jdGlvbiBvbkRyYWdTdGFydChldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhldnQpKSByZXR1cm47XG4gICAgdGhpcy50YXJnZXRzID0gW107IC8vIOiOt+WPluaJgOaciemAieS4reeahCBDb21ib1xuXG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHRoaXMuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgdmFyIGN1cnJlbnRDb21ibyA9IGl0ZW0uZ2V0KCdpZCcpO1xuICAgIHZhciBkcmFnQ29tYm9zID0gY29tYm9zLmZpbHRlcihmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgIHZhciBjb21ib0lkID0gY29tYm8uZ2V0KCdpZCcpO1xuICAgICAgcmV0dXJuIGN1cnJlbnRDb21ibyA9PT0gY29tYm9JZDtcbiAgICB9KTtcblxuICAgIGlmIChkcmFnQ29tYm9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFyZ2V0cyA9IGNvbWJvcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgdmFyIG1vZGVsID0gY29tYm8uZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobW9kZWwucGFyZW50SWQpIHtcbiAgICAgICAgICB2YXIgcGFyZW50Q29tYm8gPSBncmFwaC5maW5kQnlJZChtb2RlbC5wYXJlbnRJZCk7XG5cbiAgICAgICAgICBpZiAocGFyZW50Q29tYm8pIHtcbiAgICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShwYXJlbnRDb21ibywgX3RoaXMuYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wb2ludCA9IHt9O1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7fTtcbiAgICB0aGlzLm9yaWdpbiA9IHtcbiAgICAgIHg6IGV2dC54LFxuICAgICAgeTogZXZ0LnlcbiAgICB9O1xuICAgIHRoaXMuY3VycmVudEl0ZW1DaGlsZENvbWJvcyA9IFtdO1xuICAgIHRyYXZlcnNlQ29tYm8oaXRlbSwgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICBpZiAocGFyYW0uZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG1vZGVsID0gcGFyYW0uZ2V0TW9kZWwoKTtcblxuICAgICAgX3RoaXMuY3VycmVudEl0ZW1DaGlsZENvbWJvcy5wdXNoKG1vZGVsLmlkKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0sXG4gIG9uRHJhZzogZnVuY3Rpb24gb25EcmFnKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhldnQpKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5lbmFibGVEZWxlZ2F0ZSkge1xuICAgICAgdGhpcy51cGRhdGVEZWxlZ2F0ZShldnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgICB2YXIgZ3JhcGhfMSA9IHRoaXMuZ3JhcGg7XG4gICAgICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgICAgIHZhciBtb2RlbF8xID0gaXRlbS5nZXRNb2RlbCgpOyAvLyDmi5bliqjov4fnqIvkuK3lrp7ml7borqHnrpfot53nprtcblxuICAgICAgICB2YXIgY29tYm9zID0gZ3JhcGhfMS5nZXRDb21ib3MoKTtcbiAgICAgICAgdmFyIHNvdXJjZUJCb3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgICAgdmFyIGNlbnRlclhfMSA9IHNvdXJjZUJCb3guY2VudGVyWCxcbiAgICAgICAgICAgIGNlbnRlcllfMSA9IHNvdXJjZUJCb3guY2VudGVyWSxcbiAgICAgICAgICAgIHdpZHRoXzEgPSBzb3VyY2VCQm94LndpZHRoOyAvLyDlj4LkuI7orqHnrpfnmoQgQ29tYm/vvIzpnIDopoHmjpLpmaTmjonvvJpcbiAgICAgICAgLy8gMeOAgeaLluWKqCBjb21ibyDoh6rlt7FcbiAgICAgICAgLy8gMuOAgeaLluWKqCBjb21ibyDnmoQgcGFyZW50XG4gICAgICAgIC8vIDPjgIHmi5bliqggQ29tYm8g55qEIGNoaWxkcmVuXG5cbiAgICAgICAgdmFyIGNhbGNDb21ib3MgPSBjb21ib3MuZmlsdGVyKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIHZhciBjbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpOyAvLyDooqvmi5bliqjnmoTmmK/mnIDlpJblsYLnmoQgQ29tYm/vvIzml6AgcGFyZW5077yM5o6S6Zmk6Ieq6Lqr5ZKM5a2Q5YWD57SgXG5cbiAgICAgICAgICBpZiAoIW1vZGVsXzEucGFyZW50SWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjbW9kZWwuaWQgIT09IG1vZGVsXzEuaWQgJiYgIV90aGlzLmN1cnJlbnRJdGVtQ2hpbGRDb21ib3MuaW5jbHVkZXMoY21vZGVsLmlkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY21vZGVsLmlkICE9PSBtb2RlbF8xLmlkICYmICFfdGhpcy5jdXJyZW50SXRlbUNoaWxkQ29tYm9zLmluY2x1ZGVzKGNtb2RlbC5pZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYWxjQ29tYm9zLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICB2YXIgX2EgPSBjb21iby5nZXRCQm94KCksXG4gICAgICAgICAgICAgIGN4ID0gX2EuY2VudGVyWCxcbiAgICAgICAgICAgICAgY3kgPSBfYS5jZW50ZXJZLFxuICAgICAgICAgICAgICB3ID0gX2Eud2lkdGg7IC8vIOaLluWKqOeahCBjb21ibyDlkozopoHov5vlhaXnmoQgY29tYm8g5LmL6Ze055qE6Led56a7XG5cblxuICAgICAgICAgIHZhciBkaXNYID0gY2VudGVyWF8xIC0gY3g7XG4gICAgICAgICAgdmFyIGRpc1kgPSBjZW50ZXJZXzEgLSBjeTsgLy8g5ZyG5b+D6Led56a7XG5cbiAgICAgICAgICB2YXIgZGlzdGFuY2UgPSAyICogTWF0aC5zcXJ0KGRpc1ggKiBkaXNYICsgZGlzWSAqIGRpc1kpO1xuXG4gICAgICAgICAgaWYgKHdpZHRoXzEgKyB3IC0gZGlzdGFuY2UgPiAwLjggKiB3aWR0aF8xKSB7XG4gICAgICAgICAgICBncmFwaF8xLnNldEl0ZW1TdGF0ZShjb21ibywgX3RoaXMuYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncmFwaF8xLnNldEl0ZW1TdGF0ZShjb21ibywgX3RoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBlYWNoKHRoaXMudGFyZ2V0cywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgX3RoaXMudXBkYXRlQ29tYm8oaXRlbSwgZXZ0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlUG9zaXRpb25zOiBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMoZXZ0LCByZXN0b3JlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpczsgLy8g5b2T5ZCv55SoIGRlbGVnYXRlIOaXtu+8jOaLluWKqOe7k+adn+aXtumcgOimgeabtOaWsCBjb21ib1xuXG5cbiAgICBpZiAodGhpcy5lbmFibGVEZWxlZ2F0ZSB8fCByZXN0b3JlKSB7XG4gICAgICBlYWNoKHRoaXMudGFyZ2V0cywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgX3RoaXMudXBkYXRlQ29tYm8oaXRlbSwgZXZ0LCByZXN0b3JlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgb25Ecm9wOiBmdW5jdGlvbiBvbkRyb3AoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpczsgLy8g6KKr5pS+5LiL55qE55uu5qCHIGNvbWJvXG5cblxuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdGhpcy5zaG91bGRFbmQuY2FsbCh0aGlzLCBldnQsIGl0ZW0pO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKGV2dCwgIXRoaXMuY3VycmVudFNob3VsZEVuZCk7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTaG91bGRFbmQgfHwgIWl0ZW0gfHwgIXRoaXMudGFyZ2V0cyB8fCBpdGVtLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHRhcmdldE1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICB2YXIgbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAobW9kZWwucGFyZW50SWQgIT09IHRhcmdldE1vZGVsLmlkKSB7XG4gICAgICAgIGlmIChfdGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBfdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgICB9IC8vIOWwhiBDb21ibyDmlL7nva7liLDmn5DkuKogQ29tYm8g5LiK6Z2i5pe277yM5Y+q5pyJ5b2TIG9ubHlDaGFuZ2VDb21ib1NpemUg5Li6IGZhbHNlIOaXtuWAmeaJjeabtOaWsCBDb21ibyDnu5PmnoRcblxuXG4gICAgICAgIGlmICghX3RoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShjb21ibywgdGFyZ2V0TW9kZWwuaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvKGNvbWJvKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5lbmQoaXRlbSwgZXZ0KTsgLy8g5aaC5p6c5bey57uP5ouW5pS+5LiL5LqG77yM5YiZ5LiN6ZyA6KaB5YaN6YCa6L+H6Led56a75Yik5pat5LqGXG5cbiAgICB0aGlzLmVuZENvbXBhcmlzb24gPSB0cnVlO1xuICB9LFxuICBvbk5vZGVEcm9wOiBmdW5jdGlvbiBvbk5vZGVEcm9wKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMudGFyZ2V0cyB8fCB0aGlzLnRhcmdldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBjb21ib0lkID0gaXRlbS5nZXRNb2RlbCgpLmNvbWJvSWQ7XG4gICAgdmFyIG5ld1BhcmVudENvbWJvID0gY29tYm9JZCA/IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZXZ0LCBuZXdQYXJlbnRDb21ibyk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0LCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKTtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNob3VsZEVuZCkgcmV0dXJuO1xuICAgIHZhciBkcm9wcGVkQ29tYm87IC8vIOWmguaenOiiq+aUvue9rueahOeahOiKgueCueaciSBjb21ib0lk77yM5LiU6L+Z5LiqIGNvbWJvSWQg5LiO5q2j5Zyo6KKr5ouW5ou955qEIGNvbWJvIOeahOeItiBpZCDkuI3nm7jlkIzvvIzliJnmm7TmlrDniLbkurLkuLogY29tYm9JZFxuXG4gICAgaWYgKGNvbWJvSWQpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIHZhciBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpO1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgaWYgKGNvbWJvSWQgIT09IGNvbWJvLmdldElEKCkpIHtcbiAgICAgICAgICAgIGRyb3BwZWRDb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpO1xuICAgICAgICAgICAgaWYgKGNvbWJvSWQgIT09IGNvbWJvLmdldE1vZGVsKCkucGFyZW50SWQpIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShjb21ibywgY29tYm9JZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvKGNvbWJvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOWmguaenOiiq+aUvue9rueahOiKgueCueayoeaciSBjb21ib0lk77yM5LiU5q2j5Zyo6KKr5ouW5ou955qEIGNvbWJvIOacieeItiBpZO+8jOWImeabtOaWsOeItuS6suS4uiB1bmRlZmluZWRcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgIGlmICghX3RoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgICAgIHZhciBtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG5cbiAgICAgICAgICBpZiAobW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IC8vIOWmguaenOW3sue7j+aLluaUvuS4i+S6hu+8jOWImeS4jemcgOimgeWGjemAmui/h+i3neemu+WIpOaWreS6hlxuXG5cbiAgICB0aGlzLmVuZENvbXBhcmlzb24gPSB0cnVlO1xuICAgIHRoaXMuZW5kKGRyb3BwZWRDb21ibywgZXZ0KTtcbiAgfSxcbiAgb25EcmFnRW50ZXI6IGZ1bmN0aW9uIG9uRHJhZ0VudGVyKGV2dCkge1xuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHRoaXMuYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgIH1cbiAgfSxcbiAgb25EcmFnTGVhdmU6IGZ1bmN0aW9uIG9uRHJhZ0xlYXZlKGV2dCkge1xuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGV2dCkge1xuICAgIGlmICghdGhpcy50YXJnZXRzIHx8IHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFNob3VsZEVuZCkge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0KTtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmdldFBhcmVudENvbWJvKGl0ZW0uZ2V0TW9kZWwoKS5wYXJlbnRJZCk7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChwYXJlbnRDb21ibyAmJiB0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUocGFyZW50Q29tYm8sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVuZCh1bmRlZmluZWQsIGV2dCk7XG4gIH0sXG4gIGVuZDogZnVuY3Rpb24gZW5kKGNvbWJvRHJvcGVkT24sIGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsgLy8g5Yig6ZmkZGVsZWdhdGUgc2hhcGVcblxuICAgIGlmICh0aGlzLmRlbGVnYXRlU2hhcGUpIHtcbiAgICAgIHZhciBkZWxlZ2F0ZUdyb3VwID0gZ3JhcGguZ2V0KCdkZWxlZ2F0ZUdyb3VwJyk7XG4gICAgICBkZWxlZ2F0ZUdyb3VwLmNsZWFyKCk7XG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChjb21ib0Ryb3BlZE9uICYmIHRoaXMuYWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ib0Ryb3BlZE9uLCB0aGlzLmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfSAvLyDoi6XmsqHmnInooqvmlL7nva7nmoQgY29tYm/vvIzliJnmmK/ooqvmlL7nva7lnKjnlLvluIPkuIpcblxuXG4gICAgaWYgKCFjb21ib0Ryb3BlZE9uKSB7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAvLyDlsIYgQ29tYm8g5pS+572u5Yiw5p+Q5LiqIENvbWJvIOS4iumdouaXtu+8jOWPquacieW9kyBvbmx5Q2hhbmdlQ29tYm9TaXplIOS4uiBmYWxzZSDml7blgJnmiY3mm7TmlrAgQ29tYm8g57uT5p6EXG4gICAgICAgIGlmICghX3RoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShjb21ibyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50ID0gW107XG4gICAgdGhpcy5vcmlnaW4gPSBudWxsO1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSBudWxsO1xuICAgIHRoaXMudGFyZ2V0cy5sZW5ndGggPSAwO1xuICB9LFxuXG4gIC8qKlxuICAgKiDpgY3ljoYgY29tYm9UcmVl77yM5YiG5Yir5pu05pawIG5vZGUg5ZKMIGNvbWJvXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgdHJhdmVyc2U6IGZ1bmN0aW9uIHRyYXZlcnNlKGRhdGEsIGZuKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgdmFyIGNvbWJvcyA9IGRhdGEuZ2V0KCdjb21ib3MnKTtcbiAgICAgIGVhY2goY29tYm9zLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgX3RoaXMudHJhdmVyc2UoY2hpbGQsIGZuKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIG5vZGVzID0gZGF0YS5nZXQoJ25vZGVzJyk7XG4gICAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgX3RoaXMudHJhdmVyc2UoY2hpbGQsIGZuKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlQ29tYm86IGZ1bmN0aW9uIHVwZGF0ZUNvbWJvKGl0ZW0sIGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnRyYXZlcnNlKGl0ZW0sIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgaWYgKHBhcmFtLmRlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnVwZGF0ZVNpZ25sZUl0ZW0ocGFyYW0sIGV2dCwgcmVzdG9yZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSDlvZPliY3mraPlnKjmi5bliqjnmoTlhYPntKBcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgdXBkYXRlU2lnbmxlSXRlbTogZnVuY3Rpb24gdXBkYXRlU2lnbmxlSXRlbShpdGVtLCBldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgb3JpZ2luID0gdGhpcy5vcmlnaW47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIGl0ZW1JZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgaWYgKCF0aGlzLnBvaW50W2l0ZW1JZF0pIHtcbiAgICAgIHRoaXMucG9pbnRbaXRlbUlkXSA9IHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgeCA9IGV2dC54IC0gb3JpZ2luLnggKyB0aGlzLnBvaW50W2l0ZW1JZF0ueDtcbiAgICB2YXIgeSA9IGV2dC55IC0gb3JpZ2luLnkgKyB0aGlzLnBvaW50W2l0ZW1JZF0ueTtcblxuICAgIGlmIChyZXN0b3JlKSB7XG4gICAgICB4ICs9IG9yaWdpbi54IC0gZXZ0Lng7XG4gICAgICB5ICs9IG9yaWdpbi55IC0gZXZ0Lnk7XG4gICAgfVxuXG4gICAgZ3JhcGgudXBkYXRlSXRlbShpdGVtLCB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmoLnmja4gSUQg6I635Y+W54i2IENvbWJvXG4gICAqIEBwYXJhbSBwYXJlbnRJZCDniLYgQ29tYm8gSURcbiAgICovXG4gIGdldFBhcmVudENvbWJvOiBmdW5jdGlvbiBnZXRQYXJlbnRDb21ibyhwYXJlbnRJZCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIXBhcmVudElkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRDb21ibyA9IGdyYXBoLmZpbmRCeUlkKHBhcmVudElkKTtcblxuICAgIGlmICghcGFyZW50Q29tYm8pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudENvbWJvO1xuICB9LFxuICB1cGRhdGVEZWxlZ2F0ZTogZnVuY3Rpb24gdXBkYXRlRGVsZWdhdGUoZXZ0KSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsgLy8g5b2T5rKh5pyJIGRlbGVnYXRlIHNoYXBlIOaXtuWIm+W7ulxuXG4gICAgaWYgKCF0aGlzLmRlbGVnYXRlU2hhcGUpIHtcbiAgICAgIHZhciBkZWxlZ2F0ZUdyb3VwID0gZ3JhcGguZ2V0KCdkZWxlZ2F0ZUdyb3VwJyk7XG4gICAgICB2YXIgYmJveCA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLnRhcmdldHMubGVuZ3RoID4gMSkge1xuICAgICAgICBiYm94ID0gY2FsY3VsYXRpb25JdGVtc0JCb3godGhpcy50YXJnZXRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJib3ggPSB0aGlzLnRhcmdldHNbMF0uZ2V0QkJveCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgeCA9IGJib3gueCxcbiAgICAgICAgICB5ID0gYmJveC55LFxuICAgICAgICAgIHdpZHRoID0gYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBiYm94LmhlaWdodCxcbiAgICAgICAgICBtaW5YID0gYmJveC5taW5YLFxuICAgICAgICAgIG1pblkgPSBiYm94Lm1pblk7XG4gICAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICBtaW5ZOiBtaW5ZXG4gICAgICB9O1xuXG4gICAgICB2YXIgYXR0cnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgR2xvYmFsLmRlbGVnYXRlU3R5bGUpLCB0aGlzLmRlbGVnYXRlU3R5bGUpO1xuXG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUgPSBkZWxlZ2F0ZUdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHdpZHRoOiBiYm94LndpZHRoLFxuICAgICAgICAgIGhlaWdodDogYmJveC5oZWlnaHQsXG4gICAgICAgICAgeDogYmJveC54LFxuICAgICAgICAgIHk6IGJib3gueVxuICAgICAgICB9LCBhdHRycyksXG4gICAgICAgIG5hbWU6ICdjb21iby1kZWxlZ2F0ZS1zaGFwZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZWxlZ2F0ZVNoYXBlLnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB0aGlzLmRlbGVnYXRlU2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjbGllbnRYID0gZXZ0LnggLSB0aGlzLm9yaWdpbi54ICsgdGhpcy5vcmlnaW5Qb2ludC5taW5YO1xuICAgICAgdmFyIGNsaWVudFkgPSBldnQueSAtIHRoaXMub3JpZ2luLnkgKyB0aGlzLm9yaWdpblBvaW50Lm1pblk7XG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUuYXR0cih7XG4gICAgICAgIHg6IGNsaWVudFgsXG4gICAgICAgIHk6IGNsaWVudFlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/drag-combo.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/drag-node.js":
/*!***********************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/drag-node.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-pc/es/global.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n updateEdge: true,\n delegateStyle: {},\n // 是否开启delegate\n enableDelegate: false,\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n comboActiveState: '',\n selectedState: 'selected',\n enableOptimize: false,\n enableDebounce: false,\n enableStack: true\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave',\n 'combo:drop': 'onDropCombo',\n 'node:drop': 'onDropNode',\n 'canvas:drop': 'onDropCanvas',\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onDragEnd'\n };\n },\n validationCombo: function validationCombo(item) {\n if (!this.origin || !item || item.destroyed) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onTouchStart: function onTouchStart(e) {\n if (!e.item) return;\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDragStart(e);\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n self.onDragEnd(e);\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDrag(e);\n },\n\n /**\n * 开始拖动节点\n * @param evt\n */\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n this.currentShouldEnd = true;\n\n if (!this.shouldBegin.call(this, evt)) {\n return;\n }\n\n var item = evt.item;\n\n if (!item || item.destroyed || item.hasLocked()) {\n return;\n } // 拖动时,设置拖动元素的 capture 为false,则不拾取拖动的元素\n\n\n var group = item.getContainer();\n group.set('capture', false);\n if (!this.cachedCaptureItems) this.cachedCaptureItems = [];\n this.cachedCaptureItems.push(item); // 如果拖动的target 是linkPoints / anchorPoints 则不允许拖动\n\n var target = evt.target;\n\n if (target) {\n var isAnchorPoint = target.get('isAnchorPoint');\n\n if (isAnchorPoint) {\n return;\n }\n }\n\n var graph = this.graph;\n this.targets = []; // 将节点拖入到指定的 Combo\n\n this.targetCombo = null; // 获取所有选中的元素\n\n var nodes = graph.findAllByState('node', this.selectedState);\n var currentNodeId = item.get('id'); // 当前拖动的节点是否是选中的节点\n\n var dragNodes = nodes.filter(function (node) {\n var nodeId = node.get('id');\n return currentNodeId === nodeId;\n }); // 只拖动当前节点\n\n if (dragNodes.length === 0) {\n this.targets.push(item);\n } else if (nodes.length > 1) {\n // 拖动多个节点\n nodes.forEach(function (node) {\n var locked = node.hasLocked();\n\n if (!locked) {\n _this.targets.push(node);\n }\n });\n } else {\n this.targets.push(item);\n }\n\n var beforeDragNodes = [];\n this.targets.forEach(function (t) {\n beforeDragNodes.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(t.getModel()));\n });\n this.set('beforeDragNodes', beforeDragNodes);\n this.hidenEdge = {};\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return;\n _this.hidenEdge[edge.getID()] = true;\n edge.hide();\n });\n });\n }\n\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.point = {};\n this.originPoint = {};\n },\n\n /**\n * 持续拖动节点\n * @param evt\n */\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return;\n }\n\n if (this.get('enableDelegate')) {\n this.updateDelegate(evt);\n } else {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge')\n });else this.targets.map(function (target) {\n _this.update(target, evt);\n });\n }\n },\n\n /**\n * 拖动结束,设置拖动元素capture为true,更新元素位置,如果是拖动涉及到 combo,则更新 combo 结构\n * @param evt\n */\n onDragEnd: function onDragEnd(evt) {\n var _this = this;\n\n var _a;\n\n if (!this.origin) {\n return;\n } // 拖动结束后,设置拖动元素 group 的 capture 为 true,允许拾取拖动元素\n\n\n (_a = this.cachedCaptureItems) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n var group = item.getContainer();\n group.set('capture', true);\n });\n this.cachedCaptureItems = [];\n\n if (this.delegateRect) {\n this.delegateRect.remove();\n this.delegateRect = null;\n }\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (_this.hidenEdge[edge.getID()]) edge.show();\n edge.refresh();\n });\n });\n }\n\n this.hidenEdge = {};\n var graph = this.graph; // 拖动结束后,入栈\n\n if (graph.get('enabledStack') && this.enableStack) {\n var stackData_1 = {\n before: {\n nodes: [],\n edges: [],\n combos: []\n },\n after: {\n nodes: [],\n edges: [],\n combos: []\n }\n };\n this.get('beforeDragNodes').forEach(function (model) {\n stackData_1.before.nodes.push({\n id: model.id,\n x: model.x,\n y: model.y\n });\n });\n this.targets.forEach(function (target) {\n var targetModel = target.getModel();\n stackData_1.after.nodes.push({\n id: targetModel.id,\n x: targetModel.x,\n y: targetModel.y\n });\n });\n graph.pushStack('update', Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(stackData_1));\n } // 拖动结束后emit事件,将当前操作的节点抛出去,目标节点为null\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: null\n });\n this.point = {};\n this.origin = null;\n this.originPoint = {};\n this.targets.length = 0;\n this.targetCombo = null;\n },\n\n /**\n * 拖动过程中将节点放置到 combo 上\n * @param evt\n */\n onDropCombo: function onDropCombo(evt) {\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n\n this.targetCombo = item; // 拖动结束后是动态改变 Combo 大小还是将节点从 Combo 中删除\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n var targetComboModel_1 = item.getModel();\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (nodeModel.comboId !== targetComboModel_1.id) {\n graph.updateComboTree(node, targetComboModel_1.id);\n }\n });\n graph.updateCombo(item);\n } // 将节点拖动到 combo 上面,emit事件抛出当前操作的节点及目标 combo\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: this.targetCombo\n });\n },\n onDropCanvas: function onDropCanvas(evt) {\n var graph = this.graph;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, undefined); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.targets || this.targets.length === 0 || !this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n this.targets.map(function (node) {\n // 拖动的节点有 comboId,即是从其他 combo 中拖出时才处理\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n }\n },\n\n /**\n * 拖动放置到某个 combo 中的子 node 上\n * @param evt\n */\n onDropNode: function onDropNode(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var self = this;\n var item = evt.item;\n var graph = self.graph;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n graph.updateCombos();\n } else if (comboId) {\n var combo = graph.findById(comboId);\n\n if (self.comboActiveState) {\n graph.setItemState(combo, self.comboActiveState, false);\n }\n\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (comboId !== nodeModel.comboId) {\n graph.updateComboTree(node, comboId);\n }\n });\n graph.updateCombo(combo);\n } else {\n this.targets.map(function (node) {\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n } // 将节点拖动到另外个节点上面,emit 事件抛出当前操作的节点及目标节点\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: item\n });\n },\n\n /**\n * 将节点拖入到 Combo 中\n * @param evt\n */\n onDragEnter: function onDragEnter(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, true);\n }\n },\n\n /**\n * 将节点从 Combo 中拖出\n * @param evt\n */\n onDragLeave: function onDragLeave(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return; // 当开启 delegate 时,拖动结束后需要更新所有已选中节点的位置\n\n if (this.get('enableDelegate')) {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge'),\n updateFunc: this.update\n });else if (!restore) this.targets.map(function (node) {\n return _this.update(node, evt);\n });\n } else this.targets.map(function (node) {\n return _this.update(node, evt, restore);\n });\n },\n\n /**\n * 更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n update: function update(item, evt, restore) {\n var origin = this.origin;\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!this.point[nodeId]) {\n this.point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + this.point[nodeId].x;\n var y = evt.y - origin.y + this.point[nodeId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n var pos = {\n x: x,\n y: y\n };\n\n if (this.get('updateEdge')) {\n this.graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n },\n\n /**\n * 限流更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n debounceUpdate: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"debounce\"])(function (event) {\n var targets = event.targets,\n graph = event.graph,\n point = event.point,\n origin = event.origin,\n evt = event.evt,\n updateEdge = event.updateEdge,\n updateFunc = event.updateFunc;\n targets.map(function (item) {\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!point[nodeId]) {\n point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + point[nodeId].x;\n var y = evt.y - origin.y + point[nodeId].y;\n var pos = {\n x: x,\n y: y\n };\n\n if (updateEdge) {\n graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n });\n }, 50, true),\n\n /**\n * 更新拖动元素时的delegate\n * @param {Event} e 事件句柄\n * @param {number} x 拖动单个元素时候的x坐标\n * @param {number} y 拖动单个元素时候的y坐标\n */\n updateDelegate: function updateDelegate(e) {\n var graph = this.graph;\n\n if (!this.delegateRect) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].delegateStyle, this.delegateStyle);\n\n var _a = this.calculationGroupPosition(e),\n cx = _a.x,\n cy = _a.y,\n width = _a.width,\n height = _a.height,\n minX = _a.minX,\n minY = _a.minY;\n\n this.originPoint = {\n x: cx,\n y: cy,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n }; // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n\n this.delegateRect = parent_1.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: width,\n height: height,\n x: cx,\n y: cy\n }, attrs),\n name: 'rect-delegate-shape'\n });\n this.delegate = this.delegateRect;\n this.delegateRect.set('capture', false);\n } else {\n var clientX = e.x - this.origin.x + this.originPoint.minX;\n var clientY = e.y - this.origin.y + this.originPoint.minY;\n this.delegateRect.attr({\n x: clientX,\n y: clientY\n });\n }\n },\n\n /**\n * 计算delegate位置,包括左上角左边及宽度和高度\n * @memberof ItemGroup\n * @return {object} 计算出来的delegate坐标信息及宽高\n */\n calculationGroupPosition: function calculationGroupPosition(evt) {\n var nodes = this.targets;\n\n if (nodes.length === 0) {\n nodes.push(evt.item);\n }\n\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < nodes.length; i++) {\n var element = nodes[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1ub2RlLmpzPzg1OWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDcUI7QUFDdkI7QUFDaEI7QUFDZjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCLDRCQUE0Qjs7QUFFNUI7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQix3REFBSztBQUNoQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLGdDQUFnQyx3REFBSztBQUNyQyxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxzRUFBc0U7O0FBRXRFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyRUFBMkU7O0FBRTNFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsMkRBQTJEOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQixhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMERBQU8sR0FBRyxFQUFFLCtDQUFNOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QixtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1ub2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIGNsb25lLCBkZWJvdW5jZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVFZGdlOiB0cnVlLFxuICAgICAgZGVsZWdhdGVTdHlsZToge30sXG4gICAgICAvLyDmmK/lkKblvIDlkK9kZWxlZ2F0ZVxuICAgICAgZW5hYmxlRGVsZWdhdGU6IGZhbHNlLFxuICAgICAgLy8g5ouW5Yqo6IqC54K56L+H56iL5Lit5piv5ZCm5Y+q5pS55Y+YIENvbWJvIOeahOWkp+Wwj++8jOiAjOS4jeaUueWPmOWFtue7k+aehFxuICAgICAgb25seUNoYW5nZUNvbWJvU2l6ZTogZmFsc2UsXG4gICAgICAvLyDmi5bliqjov4fnqIvkuK3nm67moIcgY29tYm8g54q25oCB5qC35byPXG4gICAgICBjb21ib0FjdGl2ZVN0YXRlOiAnJyxcbiAgICAgIHNlbGVjdGVkU3RhdGU6ICdzZWxlY3RlZCcsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICBlbmFibGVEZWJvdW5jZTogZmFsc2UsXG4gICAgICBlbmFibGVTdGFjazogdHJ1ZVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnbm9kZTpkcmFnc3RhcnQnOiAnb25EcmFnU3RhcnQnLFxuICAgICAgJ25vZGU6ZHJhZyc6ICdvbkRyYWcnLFxuICAgICAgJ25vZGU6ZHJhZ2VuZCc6ICdvbkRyYWdFbmQnLFxuICAgICAgJ2NvbWJvOmRyYWdlbnRlcic6ICdvbkRyYWdFbnRlcicsXG4gICAgICAnY29tYm86ZHJhZ2xlYXZlJzogJ29uRHJhZ0xlYXZlJyxcbiAgICAgICdjb21ibzpkcm9wJzogJ29uRHJvcENvbWJvJyxcbiAgICAgICdub2RlOmRyb3AnOiAnb25Ecm9wTm9kZScsXG4gICAgICAnY2FudmFzOmRyb3AnOiAnb25Ecm9wQ2FudmFzJyxcbiAgICAgICd0b3VjaHN0YXJ0JzogJ29uVG91Y2hTdGFydCcsXG4gICAgICAndG91Y2htb3ZlJzogJ29uVG91Y2hNb3ZlJyxcbiAgICAgICd0b3VjaGVuZCc6ICdvbkRyYWdFbmQnXG4gICAgfTtcbiAgfSxcbiAgdmFsaWRhdGlvbkNvbWJvOiBmdW5jdGlvbiB2YWxpZGF0aW9uQ29tYm8oaXRlbSkge1xuICAgIGlmICghdGhpcy5vcmlnaW4gfHwgIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHR5cGUgIT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZSkge1xuICAgIGlmICghZS5pdGVtKSByZXR1cm47XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciB0b3VjaGVzID0gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuXG4gICAgICBpZiAoZXZlbnQxICYmIGV2ZW50Mikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RvdWNoIG9yaWdpbmFsIGV2ZW50IG5vdCBleGlzdCEnKTtcbiAgICB9XG5cbiAgICBzZWxmLm9uRHJhZ1N0YXJ0KGUpO1xuICB9LFxuICBvblRvdWNoTW92ZTogZnVuY3Rpb24gb25Ub3VjaE1vdmUoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgICAgc2VsZi5vbkRyYWdFbmQoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYub25EcmFnKGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDlvIDlp4vmi5bliqjoioLngrlcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQgfHwgaXRlbS5oYXNMb2NrZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g5ouW5Yqo5pe277yM6K6+572u5ouW5Yqo5YWD57Sg55qEIGNhcHR1cmUg5Li6ZmFsc2XvvIzliJnkuI3mi77lj5bmi5bliqjnmoTlhYPntKBcblxuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICBncm91cC5zZXQoJ2NhcHR1cmUnLCBmYWxzZSk7XG4gICAgaWYgKCF0aGlzLmNhY2hlZENhcHR1cmVJdGVtcykgdGhpcy5jYWNoZWRDYXB0dXJlSXRlbXMgPSBbXTtcbiAgICB0aGlzLmNhY2hlZENhcHR1cmVJdGVtcy5wdXNoKGl0ZW0pOyAvLyDlpoLmnpzmi5bliqjnmoR0YXJnZXQg5pivbGlua1BvaW50cyAvIGFuY2hvclBvaW50cyDliJnkuI3lhYHorrjmi5bliqhcblxuICAgIHZhciB0YXJnZXQgPSBldnQudGFyZ2V0O1xuXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdmFyIGlzQW5jaG9yUG9pbnQgPSB0YXJnZXQuZ2V0KCdpc0FuY2hvclBvaW50Jyk7XG5cbiAgICAgIGlmIChpc0FuY2hvclBvaW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMudGFyZ2V0cyA9IFtdOyAvLyDlsIboioLngrnmi5blhaXliLDmjIflrprnmoQgQ29tYm9cblxuICAgIHRoaXMudGFyZ2V0Q29tYm8gPSBudWxsOyAvLyDojrflj5bmiYDmnInpgInkuK3nmoTlhYPntKBcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgdGhpcy5zZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgY3VycmVudE5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpOyAvLyDlvZPliY3mi5bliqjnmoToioLngrnmmK/lkKbmmK/pgInkuK3nmoToioLngrlcblxuICAgIHZhciBkcmFnTm9kZXMgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmdldCgnaWQnKTtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZUlkID09PSBub2RlSWQ7XG4gICAgfSk7IC8vIOWPquaLluWKqOW9k+WJjeiKgueCuVxuXG4gICAgaWYgKGRyYWdOb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAobm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgLy8g5ouW5Yqo5aSa5Liq6IqC54K5XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBsb2NrZWQgPSBub2RlLmhhc0xvY2tlZCgpO1xuXG4gICAgICAgIGlmICghbG9ja2VkKSB7XG4gICAgICAgICAgX3RoaXMudGFyZ2V0cy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goaXRlbSk7XG4gICAgfVxuXG4gICAgdmFyIGJlZm9yZURyYWdOb2RlcyA9IFtdO1xuICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICBiZWZvcmVEcmFnTm9kZXMucHVzaChjbG9uZSh0LmdldE1vZGVsKCkpKTtcbiAgICB9KTtcbiAgICB0aGlzLnNldCgnYmVmb3JlRHJhZ05vZGVzJywgYmVmb3JlRHJhZ05vZGVzKTtcbiAgICB0aGlzLmhpZGVuRWRnZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuZ2V0KCd1cGRhdGVFZGdlJykgJiYgdGhpcy5lbmFibGVPcHRpbWl6ZSAmJiAhdGhpcy5lbmFibGVEZWxlZ2F0ZSkge1xuICAgICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGVkZ2VzID0gbm9kZS5nZXRFZGdlcygpO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgaWYgKCFlZGdlLmlzVmlzaWJsZSgpKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuaGlkZW5FZGdlW2VkZ2UuZ2V0SUQoKV0gPSB0cnVlO1xuICAgICAgICAgIGVkZ2UuaGlkZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0ge1xuICAgICAgeDogZXZ0LngsXG4gICAgICB5OiBldnQueVxuICAgIH07XG4gICAgdGhpcy5wb2ludCA9IHt9O1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7fTtcbiAgfSxcblxuICAvKipcbiAgICog5oyB57ut5ouW5Yqo6IqC54K5XG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJhZzogZnVuY3Rpb24gb25EcmFnKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZS5jYWxsKHRoaXMsIGV2dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZURlbGVnYXRlJykpIHtcbiAgICAgIHRoaXMudXBkYXRlRGVsZWdhdGUoZXZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlRGVib3VuY2UpIHRoaXMuZGVib3VuY2VVcGRhdGUoe1xuICAgICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldHMsXG4gICAgICAgIGdyYXBoOiB0aGlzLmdyYXBoLFxuICAgICAgICBwb2ludDogdGhpcy5wb2ludCxcbiAgICAgICAgb3JpZ2luOiB0aGlzLm9yaWdpbixcbiAgICAgICAgZXZ0OiBldnQsXG4gICAgICAgIHVwZGF0ZUVkZ2U6IHRoaXMuZ2V0KCd1cGRhdGVFZGdlJylcbiAgICAgIH0pO2Vsc2UgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIF90aGlzLnVwZGF0ZSh0YXJnZXQsIGV2dCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaLluWKqOe7k+adn++8jOiuvue9ruaLluWKqOWFg+e0oGNhcHR1cmXkuLp0cnVl77yM5pu05paw5YWD57Sg5L2N572u77yM5aaC5p6c5piv5ouW5Yqo5raJ5Y+K5YiwIGNvbWJv77yM5YiZ5pu05pawIGNvbWJvIOe7k+aehFxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdFbmQ6IGZ1bmN0aW9uIG9uRHJhZ0VuZChldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hO1xuXG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g5ouW5Yqo57uT5p2f5ZCO77yM6K6+572u5ouW5Yqo5YWD57SgIGdyb3VwIOeahCBjYXB0dXJlIOS4uiB0cnVl77yM5YWB6K645ou+5Y+W5ouW5Yqo5YWD57SgXG5cblxuICAgIChfYSA9IHRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICAgIGdyb3VwLnNldCgnY2FwdHVyZScsIHRydWUpO1xuICAgIH0pO1xuICAgIHRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zID0gW107XG5cbiAgICBpZiAodGhpcy5kZWxlZ2F0ZVJlY3QpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGVSZWN0LnJlbW92ZSgpO1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldCgndXBkYXRlRWRnZScpICYmIHRoaXMuZW5hYmxlT3B0aW1pemUgJiYgIXRoaXMuZW5hYmxlRGVsZWdhdGUpIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG5vZGUuZ2V0RWRnZXMoKTtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIGlmIChfdGhpcy5oaWRlbkVkZ2VbZWRnZS5nZXRJRCgpXSkgZWRnZS5zaG93KCk7XG4gICAgICAgICAgZWRnZS5yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5oaWRlbkVkZ2UgPSB7fTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOyAvLyDmi5bliqjnu5PmnZ/lkI7vvIzlhaXmoIhcblxuICAgIGlmIChncmFwaC5nZXQoJ2VuYWJsZWRTdGFjaycpICYmIHRoaXMuZW5hYmxlU3RhY2spIHtcbiAgICAgIHZhciBzdGFja0RhdGFfMSA9IHtcbiAgICAgICAgYmVmb3JlOiB7XG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgICBjb21ib3M6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgICBjb21ib3M6IFtdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmdldCgnYmVmb3JlRHJhZ05vZGVzJykuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgc3RhY2tEYXRhXzEuYmVmb3JlLm5vZGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICAgIHk6IG1vZGVsLnlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIHN0YWNrRGF0YV8xLmFmdGVyLm5vZGVzLnB1c2goe1xuICAgICAgICAgIGlkOiB0YXJnZXRNb2RlbC5pZCxcbiAgICAgICAgICB4OiB0YXJnZXRNb2RlbC54LFxuICAgICAgICAgIHk6IHRhcmdldE1vZGVsLnlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGdyYXBoLnB1c2hTdGFjaygndXBkYXRlJywgY2xvbmUoc3RhY2tEYXRhXzEpKTtcbiAgICB9IC8vIOaLluWKqOe7k+adn+WQjmVtaXTkuovku7bvvIzlsIblvZPliY3mk43kvZznmoToioLngrnmipvlh7rljrvvvIznm67moIfoioLngrnkuLpudWxsXG5cblxuICAgIGdyYXBoLmVtaXQoJ2RyYWdub2RlZW5kJywge1xuICAgICAgaXRlbXM6IHRoaXMudGFyZ2V0cyxcbiAgICAgIHRhcmdldEl0ZW06IG51bGxcbiAgICB9KTtcbiAgICB0aGlzLnBvaW50ID0ge307XG4gICAgdGhpcy5vcmlnaW4gPSBudWxsO1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7fTtcbiAgICB0aGlzLnRhcmdldHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnRhcmdldENvbWJvID0gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICog5ouW5Yqo6L+H56iL5Lit5bCG6IqC54K55pS+572u5YiwIGNvbWJvIOS4ilxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyb3BDb21ibzogZnVuY3Rpb24gb25Ecm9wQ29tYm8oZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgaXRlbSk7IC8vIOiLpeS4jeWFgeiuuOe7k+adn++8jOWImeWwhuiKgueCueS9jee9ruiuvue9ruWbnuWIneivhuS9jee9ruOAguWQjumdoueahOmAu+i+keS7jemcgOimgeaJp+ihjFxuXG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0LCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKTtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNob3VsZEVuZCB8fCAhdGhpcy52YWxpZGF0aW9uQ29tYm8oaXRlbSkpIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKHRoaXMuY29tYm9BY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHRoaXMuY29tYm9BY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0Q29tYm8gPSBpdGVtOyAvLyDmi5bliqjnu5PmnZ/lkI7mmK/liqjmgIHmlLnlj5ggQ29tYm8g5aSn5bCP6L+Y5piv5bCG6IqC54K55LuOIENvbWJvIOS4reWIoOmZpFxuXG4gICAgaWYgKHRoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgLy8g5ouW5Yqo6IqC54K557uT5p2f5ZCO77yM5Yqo5oCB5pS55Y+YIENvbWJvIOeahOWkp+Wwj1xuICAgICAgZ3JhcGgudXBkYXRlQ29tYm9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB0YXJnZXRDb21ib01vZGVsXzEgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBub2RlTW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKG5vZGVNb2RlbC5jb21ib0lkICE9PSB0YXJnZXRDb21ib01vZGVsXzEuaWQpIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUobm9kZSwgdGFyZ2V0Q29tYm9Nb2RlbF8xLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBncmFwaC51cGRhdGVDb21ibyhpdGVtKTtcbiAgICB9IC8vIOWwhuiKgueCueaLluWKqOWIsCBjb21ibyDkuIrpnaLvvIxlbWl05LqL5Lu25oqb5Ye65b2T5YmN5pON5L2c55qE6IqC54K55Y+K55uu5qCHIGNvbWJvXG5cblxuICAgIGdyYXBoLmVtaXQoJ2RyYWdub2RlZW5kJywge1xuICAgICAgaXRlbXM6IHRoaXMudGFyZ2V0cyxcbiAgICAgIHRhcmdldEl0ZW06IHRoaXMudGFyZ2V0Q29tYm9cbiAgICB9KTtcbiAgfSxcbiAgb25Ecm9wQ2FudmFzOiBmdW5jdGlvbiBvbkRyb3BDYW52YXMoZXZ0KSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgdW5kZWZpbmVkKTsgLy8g6Iul5LiN5YWB6K6457uT5p2f77yM5YiZ5bCG6IqC54K55L2N572u6K6+572u5Zue5Yid6K+G5L2N572u44CC5ZCO6Z2i55qE6YC76L6R5LuN6ZyA6KaB5omn6KGMXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy50YXJnZXRzIHx8IHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDAgfHwgIXRoaXMuY3VycmVudFNob3VsZEVuZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgLy8g5ouW5Yqo6IqC54K557uT5p2f5ZCO77yM5Yqo5oCB5pS55Y+YIENvbWJvIOeahOWkp+Wwj1xuICAgICAgZ3JhcGgudXBkYXRlQ29tYm9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgLy8g5ouW5Yqo55qE6IqC54K55pyJIGNvbWJvSWTvvIzljbPmmK/ku47lhbbku5YgY29tYm8g5Lit5ouW5Ye65pe25omN5aSE55CGXG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDmi5bliqjmlL7nva7liLDmn5DkuKogY29tYm8g5Lit55qE5a2QIG5vZGUg5LiKXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJvcE5vZGU6IGZ1bmN0aW9uIG9uRHJvcE5vZGUoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ3JhcGg7XG4gICAgdmFyIGNvbWJvSWQgPSBpdGVtLmdldE1vZGVsKCkuY29tYm9JZDtcbiAgICB2YXIgbmV3UGFyZW50Q29tYm8gPSBjb21ib0lkID8gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdGhpcy5zaG91bGRFbmQuY2FsbCh0aGlzLCBldnQsIG5ld1BhcmVudENvbWJvKTsgLy8g6Iul5LiN5YWB6K6457uT5p2f77yM5YiZ5bCG6IqC54K55L2N572u6K6+572u5Zue5Yid6K+G5L2N572u44CC5ZCO6Z2i55qE6YC76L6R5LuN6ZyA6KaB5omn6KGMXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy5jdXJyZW50U2hvdWxkRW5kKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICBncmFwaC51cGRhdGVDb21ib3MoKTtcbiAgICB9IGVsc2UgaWYgKGNvbWJvSWQpIHtcbiAgICAgIHZhciBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpO1xuXG4gICAgICBpZiAoc2VsZi5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgc2VsZi5jb21ib0FjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVNb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAoY29tYm9JZCAhPT0gbm9kZU1vZGVsLmNvbWJvSWQpIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUobm9kZSwgY29tYm9JZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyDlsIboioLngrnmi5bliqjliLDlj6blpJbkuKroioLngrnkuIrpnaLvvIxlbWl0IOS6i+S7tuaKm+WHuuW9k+WJjeaTjeS9nOeahOiKgueCueWPiuebruagh+iKgueCuVxuXG5cbiAgICBncmFwaC5lbWl0KCdkcmFnbm9kZWVuZCcsIHtcbiAgICAgIGl0ZW1zOiB0aGlzLnRhcmdldHMsXG4gICAgICB0YXJnZXRJdGVtOiBpdGVtXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOWwhuiKgueCueaLluWFpeWIsCBDb21ibyDkuK1cbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnRW50ZXI6IGZ1bmN0aW9uIG9uRHJhZ0VudGVyKGV2dCkge1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhpdGVtKSkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5jb21ib0FjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOWwhuiKgueCueS7jiBDb21ibyDkuK3mi5blh7pcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnTGVhdmU6IGZ1bmN0aW9uIG9uRHJhZ0xlYXZlKGV2dCkge1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhpdGVtKSkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5jb21ib0FjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVQb3NpdGlvbnM6IGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9ucyhldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOyAvLyDlvZPlvIDlkK8gZGVsZWdhdGUg5pe277yM5ouW5Yqo57uT5p2f5ZCO6ZyA6KaB5pu05paw5omA5pyJ5bey6YCJ5Lit6IqC54K555qE5L2N572uXG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZURlbGVnYXRlJykpIHtcbiAgICAgIGlmICh0aGlzLmVuYWJsZURlYm91bmNlKSB0aGlzLmRlYm91bmNlVXBkYXRlKHtcbiAgICAgICAgdGFyZ2V0czogdGhpcy50YXJnZXRzLFxuICAgICAgICBncmFwaDogdGhpcy5ncmFwaCxcbiAgICAgICAgcG9pbnQ6IHRoaXMucG9pbnQsXG4gICAgICAgIG9yaWdpbjogdGhpcy5vcmlnaW4sXG4gICAgICAgIGV2dDogZXZ0LFxuICAgICAgICB1cGRhdGVFZGdlOiB0aGlzLmdldCgndXBkYXRlRWRnZScpLFxuICAgICAgICB1cGRhdGVGdW5jOiB0aGlzLnVwZGF0ZVxuICAgICAgfSk7ZWxzZSBpZiAoIXJlc3RvcmUpIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShub2RlLCBldnQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBfdGhpcy51cGRhdGUobm9kZSwgZXZ0LCByZXN0b3JlKTtcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICog5pu05paw6IqC54K5XG4gICAqIEBwYXJhbSBpdGVtIOaLluWKqOeahOiKgueCueWunuS+i1xuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShpdGVtLCBldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgb3JpZ2luID0gdGhpcy5vcmlnaW47XG4gICAgdmFyIG1vZGVsID0gaXRlbS5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIG5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgaWYgKCF0aGlzLnBvaW50W25vZGVJZF0pIHtcbiAgICAgIHRoaXMucG9pbnRbbm9kZUlkXSA9IHtcbiAgICAgICAgeDogbW9kZWwueCB8fCAwLFxuICAgICAgICB5OiBtb2RlbC55IHx8IDBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHggPSBldnQueCAtIG9yaWdpbi54ICsgdGhpcy5wb2ludFtub2RlSWRdLng7XG4gICAgdmFyIHkgPSBldnQueSAtIG9yaWdpbi55ICsgdGhpcy5wb2ludFtub2RlSWRdLnk7XG5cbiAgICBpZiAocmVzdG9yZSkge1xuICAgICAgeCArPSBvcmlnaW4ueCAtIGV2dC54O1xuICAgICAgeSArPSBvcmlnaW4ueSAtIGV2dC55O1xuICAgIH1cblxuICAgIHZhciBwb3MgPSB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5nZXQoJ3VwZGF0ZUVkZ2UnKSkge1xuICAgICAgdGhpcy5ncmFwaC51cGRhdGVJdGVtKGl0ZW0sIHBvcywgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLnVwZGF0ZVBvc2l0aW9uKHBvcyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDpmZDmtYHmm7TmlrDoioLngrlcbiAgICogQHBhcmFtIGl0ZW0g5ouW5Yqo55qE6IqC54K55a6e5L6LXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIGRlYm91bmNlVXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0cyA9IGV2ZW50LnRhcmdldHMsXG4gICAgICAgIGdyYXBoID0gZXZlbnQuZ3JhcGgsXG4gICAgICAgIHBvaW50ID0gZXZlbnQucG9pbnQsXG4gICAgICAgIG9yaWdpbiA9IGV2ZW50Lm9yaWdpbixcbiAgICAgICAgZXZ0ID0gZXZlbnQuZXZ0LFxuICAgICAgICB1cGRhdGVFZGdlID0gZXZlbnQudXBkYXRlRWRnZSxcbiAgICAgICAgdXBkYXRlRnVuYyA9IGV2ZW50LnVwZGF0ZUZ1bmM7XG4gICAgdGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0KCdtb2RlbCcpO1xuICAgICAgdmFyIG5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgICBpZiAoIXBvaW50W25vZGVJZF0pIHtcbiAgICAgICAgcG9pbnRbbm9kZUlkXSA9IHtcbiAgICAgICAgICB4OiBtb2RlbC54IHx8IDAsXG4gICAgICAgICAgeTogbW9kZWwueSB8fCAwXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciB4ID0gZXZ0LnggLSBvcmlnaW4ueCArIHBvaW50W25vZGVJZF0ueDtcbiAgICAgIHZhciB5ID0gZXZ0LnkgLSBvcmlnaW4ueSArIHBvaW50W25vZGVJZF0ueTtcbiAgICAgIHZhciBwb3MgPSB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHlcbiAgICAgIH07XG5cbiAgICAgIGlmICh1cGRhdGVFZGdlKSB7XG4gICAgICAgIGdyYXBoLnVwZGF0ZUl0ZW0oaXRlbSwgcG9zLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLnVwZGF0ZVBvc2l0aW9uKHBvcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIDUwLCB0cnVlKSxcblxuICAvKipcbiAgICog5pu05paw5ouW5Yqo5YWD57Sg5pe255qEZGVsZWdhdGVcbiAgICogQHBhcmFtIHtFdmVudH0gZSDkuovku7blj6Xmn4RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg5ouW5Yqo5Y2V5Liq5YWD57Sg5pe25YCZ55qEeOWdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0geSDmi5bliqjljZXkuKrlhYPntKDml7blgJnnmoR55Z2Q5qCHXG4gICAqL1xuICB1cGRhdGVEZWxlZ2F0ZTogZnVuY3Rpb24gdXBkYXRlRGVsZWdhdGUoZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIXRoaXMuZGVsZWdhdGVSZWN0KSB7XG4gICAgICAvLyDmi5bliqjlpJrkuKpcbiAgICAgIHZhciBwYXJlbnRfMSA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICAgIHZhciBhdHRycyA9IGRlZXBNaXgoe30sIEdsb2JhbC5kZWxlZ2F0ZVN0eWxlLCB0aGlzLmRlbGVnYXRlU3R5bGUpO1xuXG4gICAgICB2YXIgX2EgPSB0aGlzLmNhbGN1bGF0aW9uR3JvdXBQb3NpdGlvbihlKSxcbiAgICAgICAgICBjeCA9IF9hLngsXG4gICAgICAgICAgY3kgPSBfYS55LFxuICAgICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICAgIG1pblggPSBfYS5taW5YLFxuICAgICAgICAgIG1pblkgPSBfYS5taW5ZO1xuXG4gICAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgICB4OiBjeCxcbiAgICAgICAgeTogY3ksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIG1pblg6IG1pblgsXG4gICAgICAgIG1pblk6IG1pbllcbiAgICAgIH07IC8vIG1vZGVs5LiK55qEeCwgeeaYr+ebuOWvueS6juWbvuW9ouS4reW/g+eahO+8jGRlbGVnYXRlU2hhcGXmmK9n5a6e5L6L77yMeCx55piv57ud5a+55Z2Q5qCHXG5cbiAgICAgIHRoaXMuZGVsZWdhdGVSZWN0ID0gcGFyZW50XzEuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIHg6IGN4LFxuICAgICAgICAgIHk6IGN5XG4gICAgICAgIH0sIGF0dHJzKSxcbiAgICAgICAgbmFtZTogJ3JlY3QtZGVsZWdhdGUtc2hhcGUnXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB0aGlzLmRlbGVnYXRlUmVjdDtcbiAgICAgIHRoaXMuZGVsZWdhdGVSZWN0LnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNsaWVudFggPSBlLnggLSB0aGlzLm9yaWdpbi54ICsgdGhpcy5vcmlnaW5Qb2ludC5taW5YO1xuICAgICAgdmFyIGNsaWVudFkgPSBlLnkgLSB0aGlzLm9yaWdpbi55ICsgdGhpcy5vcmlnaW5Qb2ludC5taW5ZO1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QuYXR0cih7XG4gICAgICAgIHg6IGNsaWVudFgsXG4gICAgICAgIHk6IGNsaWVudFlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6K6h566XZGVsZWdhdGXkvY3nva7vvIzljIXmi6zlt6bkuIrop5Llt6bovrnlj4rlrr3luqblkozpq5jluqZcbiAgICogQG1lbWJlcm9mIEl0ZW1Hcm91cFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IOiuoeeul+WHuuadpeeahGRlbGVnYXRl5Z2Q5qCH5L+h5oGv5Y+K5a696auYXG4gICAqL1xuICBjYWxjdWxhdGlvbkdyb3VwUG9zaXRpb246IGZ1bmN0aW9uIGNhbGN1bGF0aW9uR3JvdXBQb3NpdGlvbihldnQpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLnRhcmdldHM7XG5cbiAgICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBub2Rlcy5wdXNoKGV2dC5pdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgbWlueCA9IEluZmluaXR5O1xuICAgIHZhciBtYXh4ID0gLUluZmluaXR5O1xuICAgIHZhciBtaW55ID0gSW5maW5pdHk7XG4gICAgdmFyIG1heHkgPSAtSW5maW5pdHk7IC8vIOiOt+WPluW3suiKgueCueeahOaJgOacieacgOWkp+acgOWwj3ggeeWAvFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZW1lbnQgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgICB2YXIgbWluWCA9IGJib3gubWluWCxcbiAgICAgICAgICBtaW5ZID0gYmJveC5taW5ZLFxuICAgICAgICAgIG1heFggPSBiYm94Lm1heFgsXG4gICAgICAgICAgbWF4WSA9IGJib3gubWF4WTtcblxuICAgICAgaWYgKG1pblggPCBtaW54KSB7XG4gICAgICAgIG1pbnggPSBtaW5YO1xuICAgICAgfVxuXG4gICAgICBpZiAobWluWSA8IG1pbnkpIHtcbiAgICAgICAgbWlueSA9IG1pblk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXhYID4gbWF4eCkge1xuICAgICAgICBtYXh4ID0gbWF4WDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFkgPiBtYXh5KSB7XG4gICAgICAgIG1heHkgPSBtYXhZO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB4ID0gTWF0aC5mbG9vcihtaW54KTtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IobWlueSk7XG4gICAgdmFyIHdpZHRoID0gTWF0aC5jZWlsKG1heHgpIC0gTWF0aC5mbG9vcihtaW54KTtcbiAgICB2YXIgaGVpZ2h0ID0gTWF0aC5jZWlsKG1heHkpIC0gTWF0aC5mbG9vcihtaW55KTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHksXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1pblg6IG1pbngsXG4gICAgICBtaW5ZOiBtaW55XG4gICAgfTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/drag-node.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'edge',\n offset: 12,\n formatText: function formatText(model) {\n return \"source: \".concat(model.source, \" target: \").concat(model.target);\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZWRnZS10b29sdGlwLmpzP2FmODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0M7QUFDbkIscUhBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFLHFEQUFJLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZWRnZS10b29sdGlwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBiYXNlIGZyb20gJy4vdG9vbHRpcC1iYXNlJztcbmV4cG9ydCBkZWZhdWx0IF9fYXNzaWduKHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXRlbTogJ2VkZ2UnLFxuICAgICAgb2Zmc2V0OiAxMixcbiAgICAgIGZvcm1hdFRleHQ6IGZ1bmN0aW9uIGZvcm1hdFRleHQobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIFwic291cmNlOiBcIi5jb25jYXQobW9kZWwuc291cmNlLCBcIiB0YXJnZXQ6IFwiKS5jb25jYXQobW9kZWwudGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2VkZ2U6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ2VkZ2U6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ2VkZ2U6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGFmdGVycmVtb3ZlaXRlbTogJ29uTW91c2VMZWF2ZSdcbiAgICB9O1xuICB9XG59LCBiYXNlKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/index.js":
/*!*******************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/index.js ***!
\*******************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _drag_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./drag-canvas */ \"./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js\");\n/* harmony import */ var _drag_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./drag-node */ \"./node_modules/@antv/g6-pc/es/behavior/drag-node.js\");\n/* harmony import */ var _activate_relations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./activate-relations */ \"./node_modules/@antv/g6-pc/es/behavior/activate-relations.js\");\n/* harmony import */ var _brush_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./brush-select */ \"./node_modules/@antv/g6-pc/es/behavior/brush-select.js\");\n/* harmony import */ var _click_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./click-select */ \"./node_modules/@antv/g6-pc/es/behavior/click-select.js\");\n/* harmony import */ var _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom-canvas */ \"./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/@antv/g6-pc/es/behavior/tooltip.js\");\n/* harmony import */ var _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edge-tooltip */ \"./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js\");\n/* harmony import */ var _collapse_expand__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./collapse-expand */ \"./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js\");\n/* harmony import */ var _drag_combo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./drag-combo */ \"./node_modules/@antv/g6-pc/es/behavior/drag-combo.js\");\n/* harmony import */ var _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./collapse-expand-combo */ \"./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js\");\n/* harmony import */ var _lasso_select__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lasso-select */ \"./node_modules/@antv/g6-pc/es/behavior/lasso-select.js\");\n/* harmony import */ var _create_edge__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./create-edge */ \"./node_modules/@antv/g6-pc/es/behavior/create-edge.js\");\n/* harmony import */ var _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./shortcuts-call */ \"./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js\");\n/* harmony import */ var _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./scroll-canvas */ \"./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js\");\n\n // import Behavior from './behavior';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar behaviors = {\n 'drag-canvas': _drag_canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n 'zoom-canvas': _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n 'drag-node': _drag_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n 'activate-relations': _activate_relations__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n 'brush-select': _brush_select__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n 'click-select': _click_select__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n 'lasso-select': _lasso_select__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n 'edge-tooltip': _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n 'collapse-expand': _collapse_expand__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n 'drag-combo': _drag_combo__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n 'collapse-expand-combo': _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n 'create-edge': _create_edge__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n 'shortcuts-call': _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n 'scroll-canvas': _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n};\nObject(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior, type) {\n Object(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"])(type, behavior);\n}); // export default Behavior;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvaW5kZXguanM/NTliMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDZTs7QUFFVjtBQUNKO0FBQ2tCO0FBQ1o7QUFDQTtBQUNGO0FBQ1A7QUFDUztBQUNNO0FBQ1Y7QUFDcUI7QUFDakI7QUFDRjtBQUNNO0FBQ0Y7QUFDM0M7QUFDQSxpQkFBaUIsb0RBQVU7QUFDM0IsaUJBQWlCLG9EQUFVO0FBQzNCLGVBQWUsa0RBQVE7QUFDdkIsd0JBQXdCLDJEQUFpQjtBQUN6QyxrQkFBa0IscURBQVc7QUFDN0Isa0JBQWtCLHFEQUFXO0FBQzdCLGtCQUFrQixzREFBVztBQUM3QixXQUFXLGdEQUFPO0FBQ2xCLGtCQUFrQixxREFBVztBQUM3QixxQkFBcUIseURBQWM7QUFDbkMsZ0JBQWdCLG9EQUFTO0FBQ3pCLDJCQUEyQiwrREFBbUI7QUFDOUMsaUJBQWlCLHFEQUFVO0FBQzNCLG9CQUFvQix3REFBYTtBQUNqQyxtQkFBbUIsdURBQVk7QUFDL0I7QUFDQSx1REFBSTtBQUNKLEVBQUUsc0VBQWdCO0FBQ2xCLENBQUMsRUFBRSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHJlZ2lzdGVyQmVoYXZpb3IgfSBmcm9tICdAYW50di9nNi1jb3JlJzsgLy8gaW1wb3J0IEJlaGF2aW9yIGZyb20gJy4vYmVoYXZpb3InO1xuXG5pbXBvcnQgRHJhZ0NhbnZhcyBmcm9tICcuL2RyYWctY2FudmFzJztcbmltcG9ydCBEcmFnTm9kZSBmcm9tICcuL2RyYWctbm9kZSc7XG5pbXBvcnQgQWN0aXZhdGVSZWxhdGlvbnMgZnJvbSAnLi9hY3RpdmF0ZS1yZWxhdGlvbnMnO1xuaW1wb3J0IEJydXNoU2VsZWN0IGZyb20gJy4vYnJ1c2gtc2VsZWN0JztcbmltcG9ydCBDbGlja1NlbGVjdCBmcm9tICcuL2NsaWNrLXNlbGVjdCc7XG5pbXBvcnQgWm9vbUNhbnZhcyBmcm9tICcuL3pvb20tY2FudmFzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJy4vdG9vbHRpcCc7XG5pbXBvcnQgRWRnZVRvb2x0aXAgZnJvbSAnLi9lZGdlLXRvb2x0aXAnO1xuaW1wb3J0IENvbGxhcHNlRXhwYW5kIGZyb20gJy4vY29sbGFwc2UtZXhwYW5kJztcbmltcG9ydCBEcmFnQ29tYm8gZnJvbSAnLi9kcmFnLWNvbWJvJztcbmltcG9ydCBDb2xsYXBzZUV4cGFuZENvbWJvIGZyb20gJy4vY29sbGFwc2UtZXhwYW5kLWNvbWJvJztcbmltcG9ydCBMYXNzb1NlbGVjdCBmcm9tICcuL2xhc3NvLXNlbGVjdCc7XG5pbXBvcnQgQ3JlYXRlRWRnZSBmcm9tICcuL2NyZWF0ZS1lZGdlJztcbmltcG9ydCBTaG9ydGN1dHNDYWxsIGZyb20gJy4vc2hvcnRjdXRzLWNhbGwnO1xuaW1wb3J0IFNjcm9sbENhbnZhcyBmcm9tICcuL3Njcm9sbC1jYW52YXMnO1xudmFyIGJlaGF2aW9ycyA9IHtcbiAgJ2RyYWctY2FudmFzJzogRHJhZ0NhbnZhcyxcbiAgJ3pvb20tY2FudmFzJzogWm9vbUNhbnZhcyxcbiAgJ2RyYWctbm9kZSc6IERyYWdOb2RlLFxuICAnYWN0aXZhdGUtcmVsYXRpb25zJzogQWN0aXZhdGVSZWxhdGlvbnMsXG4gICdicnVzaC1zZWxlY3QnOiBCcnVzaFNlbGVjdCxcbiAgJ2NsaWNrLXNlbGVjdCc6IENsaWNrU2VsZWN0LFxuICAnbGFzc28tc2VsZWN0JzogTGFzc29TZWxlY3QsXG4gIHRvb2x0aXA6IFRvb2x0aXAsXG4gICdlZGdlLXRvb2x0aXAnOiBFZGdlVG9vbHRpcCxcbiAgJ2NvbGxhcHNlLWV4cGFuZCc6IENvbGxhcHNlRXhwYW5kLFxuICAnZHJhZy1jb21ibyc6IERyYWdDb21ibyxcbiAgJ2NvbGxhcHNlLWV4cGFuZC1jb21ibyc6IENvbGxhcHNlRXhwYW5kQ29tYm8sXG4gICdjcmVhdGUtZWRnZSc6IENyZWF0ZUVkZ2UsXG4gICdzaG9ydGN1dHMtY2FsbCc6IFNob3J0Y3V0c0NhbGwsXG4gICdzY3JvbGwtY2FudmFzJzogU2Nyb2xsQ2FudmFzXG59O1xuZWFjaChiZWhhdmlvcnMsIGZ1bmN0aW9uIChiZWhhdmlvciwgdHlwZSkge1xuICByZWdpc3RlckJlaGF2aW9yKHR5cGUsIGJlaGF2aW9yKTtcbn0pOyAvLyBleHBvcnQgZGVmYXVsdCBCZWhhdmlvcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/lasso-select.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/lasso-select.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n\n\nvar isPolygonsIntersect = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPolygonsIntersect,\n pathToPoints = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pathToPoints;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n\nvar isItemIntersecPolygon = function isItemIntersecPolygon(item, polyPoints) {\n var shapePoints;\n var shape = item.getKeyShape();\n\n if (item.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n return isPolygonsIntersect(polyPoints, shapePoints);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n delegateStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: [] // multiple: false,\n\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior lasso-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n 'canvas:click': 'clearStates'\n };\n },\n onDragStart: function onDragStart(e) {\n var lasso = this.lasso;\n var item = e.item; // 排除在节点上拖动\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!lasso) {\n lasso = this.createLasso();\n }\n\n this.dragging = true;\n this.originPoint = {\n x: e.x,\n y: e.y\n };\n this.points.push(this.originPoint);\n lasso.show();\n },\n onDragMove: function onDragMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push({\n x: e.x,\n y: e.y\n });\n this.updateLasso(e);\n },\n onDragEnd: function onDragEnd(e) {\n if (!this.lasso && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push(this.originPoint);\n this.getSelectedItems();\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n },\n getLassoPath: function getLassoPath() {\n var points = this.points;\n var path = [];\n\n if (points.length) {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n\n return path;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n this.selectedNodes = [];\n this.selectedEdges = [];\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedItems: function getSelectedItems() {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n shouldUpdate = _a.shouldUpdate;\n\n var lassoContour = this.points.map(function (point) {\n return [graph.getCanvasByPoint(point.x, point.y).x, graph.getCanvasByPoint(point.x, point.y).y];\n });\n var state = this.selectedState;\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n if (isItemIntersecPolygon(node, lassoContour)) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createLasso: function createLasso() {\n var self = this;\n var lasso = self.graph.get('delegateGroup').addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: []\n }, self.delegateStyle),\n capture: false,\n name: 'lasso-shape'\n });\n this.lasso = lasso;\n this.delegate = lasso;\n this.points = [];\n return lasso;\n },\n updateLasso: function updateLasso(e) {\n var self = this;\n this.lasso.attr({\n path: self.getLassoPath()\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n } // if (this.selectedNodes && this.selectedNodes.length !== 0) {\n // this.clearStates();\n // }\n\n\n if (code.toLowerCase() === this.trigger.toLowerCase()) {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.lasso) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的lasso\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvbGFzc28tc2VsZWN0LmpzPzA3OWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ047QUFDM0IsMEJBQTBCLDZDQUFJO0FBQzlCLG1CQUFtQiw2Q0FBSTtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzREFBUTtBQUNyQjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvbGFzc28tc2VsZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBVdGlsIGZyb20gJy4uL3V0aWwnO1xudmFyIGlzUG9seWdvbnNJbnRlcnNlY3QgPSBVdGlsLmlzUG9seWdvbnNJbnRlcnNlY3QsXG4gICAgcGF0aFRvUG9pbnRzID0gVXRpbC5wYXRoVG9Qb2ludHM7XG52YXIgREVGQVVMVF9UUklHR0VSID0gJ3NoaWZ0JztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2RyYWcnLCAnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuXG52YXIgaXNJdGVtSW50ZXJzZWNQb2x5Z29uID0gZnVuY3Rpb24gaXNJdGVtSW50ZXJzZWNQb2x5Z29uKGl0ZW0sIHBvbHlQb2ludHMpIHtcbiAgdmFyIHNoYXBlUG9pbnRzO1xuICB2YXIgc2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG5cbiAgaWYgKGl0ZW0uZ2V0KCd0eXBlJykgPT09ICdwYXRoJykge1xuICAgIHNoYXBlUG9pbnRzID0gcGF0aFRvUG9pbnRzKHNoYXBlLmF0dHIoJ3BhdGgnKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNoYXBlQkJveCA9IHNoYXBlLmdldENhbnZhc0JCb3goKTtcbiAgICBzaGFwZVBvaW50cyA9IFtbc2hhcGVCQm94Lm1pblgsIHNoYXBlQkJveC5taW5ZXSwgW3NoYXBlQkJveC5tYXhYLCBzaGFwZUJCb3gubWluWV0sIFtzaGFwZUJCb3gubWF4WCwgc2hhcGVCQm94Lm1heFldLCBbc2hhcGVCQm94Lm1pblgsIHNoYXBlQkJveC5tYXhZXV07XG4gIH1cblxuICByZXR1cm4gaXNQb2x5Z29uc0ludGVyc2VjdChwb2x5UG9pbnRzLCBzaGFwZVBvaW50cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlbGVnYXRlU3R5bGU6IHtcbiAgICAgICAgZmlsbDogJyNFRUY2RkYnLFxuICAgICAgICBmaWxsT3BhY2l0eTogMC40LFxuICAgICAgICBzdHJva2U6ICcjRERFRUZFJyxcbiAgICAgICAgbGluZVdpZHRoOiAxXG4gICAgICB9LFxuICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIG9uU2VsZWN0KCkge30sXG4gICAgICBvbkRlc2VsZWN0OiBmdW5jdGlvbiBvbkRlc2VsZWN0KCkge30sXG4gICAgICBzZWxlY3RlZFN0YXRlOiAnc2VsZWN0ZWQnLFxuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgaW5jbHVkZUVkZ2VzOiB0cnVlLFxuICAgICAgc2VsZWN0ZWRFZGdlczogW10sXG4gICAgICBzZWxlY3RlZE5vZGVzOiBbXSAvLyBtdWx0aXBsZTogZmFsc2UsXG5cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZih0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHRoaXMudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjtcbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGxhc3NvLXNlbGVjdCDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2RyYWcn44CBJ3NoaWZ0J+OAgSdjdHJsJyDmiJYgJ2FsdCdcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2RyYWcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcmFnc3RhcnQ6ICdvbkRyYWdTdGFydCcsXG4gICAgICAgIGRyYWc6ICdvbkRyYWdNb3ZlJyxcbiAgICAgICAgZHJhZ2VuZDogJ29uRHJhZ0VuZCcsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJTdGF0ZXMnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkcmFnc3RhcnQ6ICdvbkRyYWdTdGFydCcsXG4gICAgICBkcmFnOiAnb25EcmFnTW92ZScsXG4gICAgICBkcmFnZW5kOiAnb25EcmFnRW5kJyxcbiAgICAgIGtleXVwOiAnb25LZXlVcCcsXG4gICAgICBrZXlkb3duOiAnb25LZXlEb3duJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJTdGF0ZXMnXG4gICAgfTtcbiAgfSxcbiAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGUpIHtcbiAgICB2YXIgbGFzc28gPSB0aGlzLmxhc3NvO1xuICAgIHZhciBpdGVtID0gZS5pdGVtOyAvLyDmjpLpmaTlnKjoioLngrnkuIrmi5bliqhcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXJTdGF0ZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIWxhc3NvKSB7XG4gICAgICBsYXNzbyA9IHRoaXMuY3JlYXRlTGFzc28oKTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfTtcbiAgICB0aGlzLnBvaW50cy5wdXNoKHRoaXMub3JpZ2luUG9pbnQpO1xuICAgIGxhc3NvLnNob3coKTtcbiAgfSxcbiAgb25EcmFnTW92ZTogZnVuY3Rpb24gb25EcmFnTW92ZShlKSB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50cy5wdXNoKHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlTGFzc28oZSk7XG4gIH0sXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGUpIHtcbiAgICBpZiAoIXRoaXMubGFzc28gJiYgIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9pbnRzLnB1c2godGhpcy5vcmlnaW5Qb2ludCk7XG4gICAgdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgdGhpcy5sYXNzby5yZW1vdmUodHJ1ZSk7XG4gICAgdGhpcy5sYXNzbyA9IG51bGw7XG4gICAgdGhpcy5wb2ludHMgPSBbXTtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gIH0sXG4gIGdldExhc3NvUGF0aDogZnVuY3Rpb24gZ2V0TGFzc29QYXRoKCkge1xuICAgIHZhciBwb2ludHMgPSB0aGlzLnBvaW50cztcbiAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcGF0aC5wdXNoKFsnTScsIHBvaW50LngsIHBvaW50LnldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXRoLnB1c2goWydMJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgY2xlYXJTdGF0ZXM6IGZ1bmN0aW9uIGNsZWFyU3RhdGVzKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHNlbGVjdGVkU3RhdGUgPSBfYS5zZWxlY3RlZFN0YXRlO1xuXG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnZWRnZScsIHNlbGVjdGVkU3RhdGUpO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMub25EZXNlbGVjdCkge1xuICAgICAgdGhpcy5vbkRlc2VsZWN0KHRoaXMuc2VsZWN0ZWROb2RlcywgdGhpcy5zZWxlY3RlZEVkZ2VzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWRnZXMgPSBbXTtcbiAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgZ2V0U2VsZWN0ZWRJdGVtczogZnVuY3Rpb24gZ2V0U2VsZWN0ZWRJdGVtcygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgc2hvdWxkVXBkYXRlID0gX2Euc2hvdWxkVXBkYXRlO1xuXG4gICAgdmFyIGxhc3NvQ29udG91ciA9IHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgIHJldHVybiBbZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChwb2ludC54LCBwb2ludC55KS54LCBncmFwaC5nZXRDYW52YXNCeVBvaW50KHBvaW50LngsIHBvaW50LnkpLnldO1xuICAgIH0pO1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuc2VsZWN0ZWRTdGF0ZTtcbiAgICB2YXIgc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHZhciBzZWxlY3RlZElkcyA9IFtdO1xuICAgIGdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCFub2RlLmlzVmlzaWJsZSgpKSByZXR1cm47IC8vIOmakOiXj+iKgueCueS4jeiDveiiq+mAieS4rVxuXG4gICAgICBpZiAoaXNJdGVtSW50ZXJzZWNQb2x5Z29uKG5vZGUsIGxhc3NvQ29udG91cikpIHtcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZShub2RlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gobW9kZWwuaWQpO1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICAvLyDpgInkuK3ovrnvvIzovrnnmoRzb3VyY2Xlkox0YXJnZXTpg73lnKjpgInkuK3nmoToioLngrnkuK3ml7bmiY3pgInkuK1cbiAgICAgIHNlbGVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLmdldE91dEVkZ2VzKCk7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICBpZiAoIWVkZ2UuaXNWaXNpYmxlKCkpIHJldHVybjsgLy8g6ZqQ6JeP6L655LiN6IO95aSf6KKr6YCJ5LitXG5cbiAgICAgICAgICB2YXIgbW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IG1vZGVsLnNvdXJjZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gbW9kZWwudGFyZ2V0O1xuXG4gICAgICAgICAgaWYgKHNlbGVjdGVkSWRzLmluY2x1ZGVzKHNvdXJjZSkgJiYgc2VsZWN0ZWRJZHMuaW5jbHVkZXModGFyZ2V0KSAmJiBzaG91bGRVcGRhdGUoZWRnZSwgJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgX3RoaXMuc2VsZWN0ZWRTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IHNlbGVjdGVkRWRnZXM7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gc2VsZWN0ZWROb2RlcztcblxuICAgIGlmICh0aGlzLm9uU2VsZWN0KSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHNlbGVjdGVkTm9kZXMsIHNlbGVjdGVkRWRnZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICBlZGdlczogc2VsZWN0ZWRFZGdlc1xuICAgICAgfSxcbiAgICAgIHNlbGVjdDogdHJ1ZVxuICAgIH0pO1xuICB9LFxuICBjcmVhdGVMYXNzbzogZnVuY3Rpb24gY3JlYXRlTGFzc28oKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBsYXNzbyA9IHNlbGYuZ3JhcGguZ2V0KCdkZWxlZ2F0ZUdyb3VwJykuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICBwYXRoOiBbXVxuICAgICAgfSwgc2VsZi5kZWxlZ2F0ZVN0eWxlKSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgbmFtZTogJ2xhc3NvLXNoYXBlJ1xuICAgIH0pO1xuICAgIHRoaXMubGFzc28gPSBsYXNzbztcbiAgICB0aGlzLmRlbGVnYXRlID0gbGFzc287XG4gICAgdGhpcy5wb2ludHMgPSBbXTtcbiAgICByZXR1cm4gbGFzc287XG4gIH0sXG4gIHVwZGF0ZUxhc3NvOiBmdW5jdGlvbiB1cGRhdGVMYXNzbyhlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubGFzc28uYXR0cih7XG4gICAgICBwYXRoOiBzZWxmLmdldExhc3NvUGF0aCgpXG4gICAgfSk7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAvLyAgIHRoaXMuY2xlYXJTdGF0ZXMoKTtcbiAgICAvLyB9XG5cblxuICAgIGlmIChjb2RlLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aGlzLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgaWYgKHRoaXMubGFzc28pIHtcbiAgICAgIC8vIOa4hemZpOaJgOaciemAieS4reeKtuaAgeWQju+8jOiuvue9ruaLluW+l+WKqOeKtuaAgeS4umZhbHNl77yM5bm25riF6Zmk5qGG6YCJ55qEbGFzc29cbiAgICAgIHRoaXMubGFzc28ucmVtb3ZlKHRydWUpO1xuICAgICAgdGhpcy5sYXNzbyA9IG51bGw7XG4gICAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/lasso-select.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js ***!
\***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n zoomKey: 'ctrl',\n // scroll-canvas 可滚动的扩展范围,默认为 0,即最多可以滚动一屏的位置\n // 当设置的值大于 0 时,即滚动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可滚动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0\n };\n },\n getEvents: function getEvents() {\n if (!this.zoomKey || ALLOW_EVENTS.indexOf(this.zoomKey) === -1) this.zoomKey = 'ctrl';\n return {\n wheel: 'onWheel'\n };\n },\n onWheel: function onWheel(ev) {\n var _this = this;\n\n var graph = this.graph;\n var keyDown = ev[\"\".concat(this.zoomKey, \"Key\")];\n if (this.zoomKey === 'control') keyDown = ev.ctrlKey;\n\n if (keyDown) {\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(ev.clientX, ev.clientY);\n var ratio = graph.getZoom();\n\n if (ev.wheelDelta > 0) {\n ratio = ratio + ratio * 0.05;\n } else {\n ratio = ratio - ratio * 0.05;\n }\n\n graph.zoomTo(ratio, {\n x: point.x,\n y: point.y\n });\n } else {\n var dx = ev.deltaX || ev.movementX;\n var dy = ev.deltaY || ev.movementY;\n if (!dy && navigator.userAgent.indexOf('Firefox') > -1) dy = -ev.wheelDelta * 125 / 3;\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n var minX = graphCanvasBBox.minX,\n maxX = graphCanvasBBox.maxX,\n minY = graphCanvasBBox.minY,\n maxY = graphCanvasBBox.maxY;\n\n if (dx > 0) {\n if (maxX < -expandWidth) {\n dx = 0;\n } else if (maxX - dx < -expandWidth) {\n dx = maxX + expandWidth;\n }\n } else if (dx < 0) {\n if (minX > width + expandWidth) {\n dx = 0;\n } else if (minX - dx > width + expandWidth) {\n dx = minX - (width + expandWidth);\n }\n }\n\n if (dy > 0) {\n if (maxY < -expandHeight) {\n dy = 0;\n } else if (maxY - dy < -expandHeight) {\n dy = maxY + expandHeight;\n }\n } else if (dy < 0) {\n if (minY > height + expandHeight) {\n dy = 0;\n } else if (minY - dy > height + expandHeight) {\n dy = minY - (height + expandHeight);\n }\n }\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n graph.translate(-dx, -dy);\n }\n\n ev.preventDefault(); // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivc2Nyb2xsLWNhbnZhcy5qcz8wZDQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0JBQXdCO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwyQkFBMkI7QUFDMUQ7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixvQkFBb0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLHlCQUF5QixtQkFBbUI7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLDZCQUE2QixvQkFBb0I7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDLDJCQUEyQjtBQUM1RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsNkJBQTZCLG9CQUFvQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivc2Nyb2xsLWNhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0aW9uOiAnYm90aCcsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICB6b29tS2V5OiAnY3RybCcsXG4gICAgICAvLyBzY3JvbGwtY2FudmFzIOWPr+a7muWKqOeahOaJqeWxleiMg+WbtO+8jOm7mOiupOS4uiAw77yM5Y2z5pyA5aSa5Y+v5Lul5rua5Yqo5LiA5bGP55qE5L2N572uXG4gICAgICAvLyDlvZPorr7nva7nmoTlgLzlpKfkuo4gMCDml7bvvIzljbPmu5rliqjlj6/ku6XotoXov4fkuIDlsY9cbiAgICAgIC8vIOW9k+iuvue9rueahOWAvOWwj+S6jiAwIOaXtu+8jOebuOW9k+S6jue8qeWwj+S6huWPr+a7muWKqOiMg+WbtFxuICAgICAgLy8g5YW35L2T5a6e5L6L5Y+v5Y+C6ICD77yaaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS9tZG4vcm1zX2Y4YzZhMC9hZnRzL2ltZy9BKklGZm9TNjdfSHNzQUFBQUFBQUFBQUFBQUFSUW5BUVxuICAgICAgc2NhbGFibGVSYW5nZTogMFxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIGlmICghdGhpcy56b29tS2V5IHx8IEFMTE9XX0VWRU5UUy5pbmRleE9mKHRoaXMuem9vbUtleSkgPT09IC0xKSB0aGlzLnpvb21LZXkgPSAnY3RybCc7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdoZWVsOiAnb25XaGVlbCdcbiAgICB9O1xuICB9LFxuICBvbldoZWVsOiBmdW5jdGlvbiBvbldoZWVsKGV2KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGtleURvd24gPSBldltcIlwiLmNvbmNhdCh0aGlzLnpvb21LZXksIFwiS2V5XCIpXTtcbiAgICBpZiAodGhpcy56b29tS2V5ID09PSAnY29udHJvbCcpIGtleURvd24gPSBldi5jdHJsS2V5O1xuXG4gICAgaWYgKGtleURvd24pIHtcbiAgICAgIHZhciBjYW52YXMgPSBncmFwaC5nZXQoJ2NhbnZhcycpO1xuICAgICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlDbGllbnQoZXYuY2xpZW50WCwgZXYuY2xpZW50WSk7XG4gICAgICB2YXIgcmF0aW8gPSBncmFwaC5nZXRab29tKCk7XG5cbiAgICAgIGlmIChldi53aGVlbERlbHRhID4gMCkge1xuICAgICAgICByYXRpbyA9IHJhdGlvICsgcmF0aW8gKiAwLjA1O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmF0aW8gPSByYXRpbyAtIHJhdGlvICogMC4wNTtcbiAgICAgIH1cblxuICAgICAgZ3JhcGguem9vbVRvKHJhdGlvLCB7XG4gICAgICAgIHg6IHBvaW50LngsXG4gICAgICAgIHk6IHBvaW50LnlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZHggPSBldi5kZWx0YVggfHwgZXYubW92ZW1lbnRYO1xuICAgICAgdmFyIGR5ID0gZXYuZGVsdGFZIHx8IGV2Lm1vdmVtZW50WTtcbiAgICAgIGlmICghZHkgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkgZHkgPSAtZXYud2hlZWxEZWx0YSAqIDEyNSAvIDM7XG4gICAgICB2YXIgd2lkdGggPSB0aGlzLmdyYXBoLmdldCgnd2lkdGgnKTtcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgICB2YXIgZ3JhcGhDYW52YXNCQm94ID0gdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTtcbiAgICAgIHZhciBleHBhbmRXaWR0aCA9IHRoaXMuc2NhbGFibGVSYW5nZTtcbiAgICAgIHZhciBleHBhbmRIZWlnaHQgPSB0aGlzLnNjYWxhYmxlUmFuZ2U7IC8vIOiLpSBzY2FsYWJsZVJhbmdlIOaYryAwfjEg55qE5bCP5pWw77yM5YiZ5L2c5Li65q+U5L6L6ICD6JmRXG5cbiAgICAgIGlmIChleHBhbmRXaWR0aCA8IDEgJiYgZXhwYW5kV2lkdGggPiAtMSkge1xuICAgICAgICBleHBhbmRXaWR0aCA9IHdpZHRoICogZXhwYW5kV2lkdGg7XG4gICAgICAgIGV4cGFuZEhlaWdodCA9IGhlaWdodCAqIGV4cGFuZEhlaWdodDtcbiAgICAgIH1cblxuICAgICAgdmFyIG1pblggPSBncmFwaENhbnZhc0JCb3gubWluWCxcbiAgICAgICAgICBtYXhYID0gZ3JhcGhDYW52YXNCQm94Lm1heFgsXG4gICAgICAgICAgbWluWSA9IGdyYXBoQ2FudmFzQkJveC5taW5ZLFxuICAgICAgICAgIG1heFkgPSBncmFwaENhbnZhc0JCb3gubWF4WTtcblxuICAgICAgaWYgKGR4ID4gMCkge1xuICAgICAgICBpZiAobWF4WCA8IC1leHBhbmRXaWR0aCkge1xuICAgICAgICAgIGR4ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhYIC0gZHggPCAtZXhwYW5kV2lkdGgpIHtcbiAgICAgICAgICBkeCA9IG1heFggKyBleHBhbmRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkeCA8IDApIHtcbiAgICAgICAgaWYgKG1pblggPiB3aWR0aCArIGV4cGFuZFdpZHRoKSB7XG4gICAgICAgICAgZHggPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1pblggLSBkeCA+IHdpZHRoICsgZXhwYW5kV2lkdGgpIHtcbiAgICAgICAgICBkeCA9IG1pblggLSAod2lkdGggKyBleHBhbmRXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGR5ID4gMCkge1xuICAgICAgICBpZiAobWF4WSA8IC1leHBhbmRIZWlnaHQpIHtcbiAgICAgICAgICBkeSA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAobWF4WSAtIGR5IDwgLWV4cGFuZEhlaWdodCkge1xuICAgICAgICAgIGR5ID0gbWF4WSArIGV4cGFuZEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkeSA8IDApIHtcbiAgICAgICAgaWYgKG1pblkgPiBoZWlnaHQgKyBleHBhbmRIZWlnaHQpIHtcbiAgICAgICAgICBkeSA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAobWluWSAtIGR5ID4gaGVpZ2h0ICsgZXhwYW5kSGVpZ2h0KSB7XG4gICAgICAgICAgZHkgPSBtaW5ZIC0gKGhlaWdodCArIGV4cGFuZEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ3gnKSB7XG4gICAgICAgIGR5ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ2RpcmVjdGlvbicpID09PSAneScpIHtcbiAgICAgICAgZHggPSAwO1xuICAgICAgfVxuXG4gICAgICBncmFwaC50cmFuc2xhdGUoLWR4LCAtZHkpO1xuICAgIH1cblxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7IC8vIGhpZGUgdGhlIHNoYXBlcyB3aGVuIHRoZSB6b29tIHJhdGlvIGlzIHNtYWxsZXIgdGhhbiBvcHRpbWl6ZVpvb21cbiAgICAvLyBoaWRlIHRoZSBzaGFwZXMgd2hlbiB6b29tbWluZ1xuXG4gICAgdmFyIGVuYWJsZU9wdGltaXplID0gdGhpcy5nZXQoJ2VuYWJsZU9wdGltaXplJyk7XG5cbiAgICBpZiAoZW5hYmxlT3B0aW1pemUpIHtcbiAgICAgIHZhciBvcHRpbWl6ZVpvb21fMSA9IHRoaXMuZ2V0KCdvcHRpbWl6ZVpvb20nKTtcbiAgICAgIHZhciBvcHRpbWl6ZWQgPSB0aGlzLmdldCgnb3B0aW1pemVkJyk7XG4gICAgICB2YXIgbm9kZXNfMSA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgICB2YXIgZWRnZXNfMSA9IGdyYXBoLmdldEVkZ2VzKCk7XG4gICAgICB2YXIgbm9kZXNMZW5ndGhfMSA9IG5vZGVzXzEubGVuZ3RoO1xuICAgICAgdmFyIGVkZ2VzTGVuZ3RoXzEgPSBlZGdlc18xLmxlbmd0aDsgLy8gaGlkaW5nXG5cbiAgICAgIGlmICghb3B0aW1pemVkKSB7XG4gICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXNMZW5ndGhfMTsgbisrKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuXG4gICAgICAgICAgaWYgKCFub2RlLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG5cbiAgICAgICAgICAgICAgaWYgKCFzaGFwZS5kZXN0b3J5ZWQgJiYgIXNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gMDsgZWRnZUluZGV4IDwgZWRnZXNMZW5ndGhfMTsgZWRnZUluZGV4KyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcbiAgICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KCdvcHRpbWl6ZWQnLCB0cnVlKTtcbiAgICAgIH0gLy8gc2hvd2luZyBhZnRlciAxMDBtc1xuXG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmdldCgndGltZW91dCcpKTtcbiAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgICAgICB2YXIgY3VyT3B0aW1pemVkID0gX3RoaXMuZ2V0KCdvcHRpbWl6ZWQnKTtcblxuICAgICAgICBpZiAoY3VyT3B0aW1pemVkKSB7XG4gICAgICAgICAgX3RoaXMuc2V0KCdvcHRpbWl6ZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzTGVuZ3RoXzE7IG4rKykge1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFpvb20gPCBvcHRpbWl6ZVpvb21fMSkge1xuICAgICAgICAgICAgICB2YXIga2V5U2hhcGUgPSBub2RlLmdldEtleVNoYXBlKCk7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBrZXlTaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGtleVNoYXBlLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmdldCgndmlzaWJsZScpICYmIG9yaVZpcykge1xuICAgICAgICAgICAgICAgICAgaWYgKG9yaVZpcykgc2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IDA7IGVkZ2VJbmRleCA8IGVkZ2VzTGVuZ3RoXzE7IGVkZ2VJbmRleCsrKSB7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRab29tIDwgb3B0aW1pemVab29tXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gZWRnZS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgICB2YXIgb3JpVmlzID0ga2V5U2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICBpZiAob3JpVmlzKSBrZXlTaGFwZS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcblxuICAgICAgICAgICAgICAgIGlmICghc2hhcGUuZ2V0KCd2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgICAgdGhpcy5zZXQoJ3RpbWVvdXQnLCB0aW1lb3V0KTtcbiAgICB9XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js":
/*!****************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js ***!
\****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'ctrl';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nvar DEFAULT_COMBINED_KEY = '1';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n combinedKey: DEFAULT_COMBINED_KEY,\n functionName: 'fitView',\n functionParams: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior shortcuts-fit-view \\u7684 trigger \\u53C2\\u6570 '\".concat(this.trigger, \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u8BF7\\u8F93\\u5165 'drag'\\u3001'shift'\\u3001'ctrl' \\u6216 'alt'\"));\n }\n\n if (this.combinedKey === this.trigger) {\n this.combinedKey = undefined;\n }\n\n return {\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (!this.triggerKeydown) {\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.triggerKeydown = true;\n } else {\n this.triggerKeydown = false;\n }\n }\n\n var graph = this.graph;\n\n if (!graph[this.functionName]) {\n console.warn(\"Behavior shortcuts-fit-view \\u7684 functionName \\u53C2\\u6570 '\".concat(this.functionName, \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u5B83\\u4E0D\\u662F Graph \\u7684\\u4E00\\u4E2A\\u51FD\\u6570\\u540D\"));\n return {};\n } // 未配置 combinedKey,直接 fitView\n\n\n if (this.triggerKeydown && !this.combinedKey) {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n return;\n }\n\n var combinedKeyLowerCase = this.combinedKey.toLowerCase();\n\n if (this.triggerKeydown) {\n if (codeLowerCase === combinedKeyLowerCase || codeLowerCase === 'control' && combinedKeyLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && combinedKeyLowerCase === 'control') {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n }\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.triggerKeydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivc2hvcnRjdXRzLWNhbGwuanM/Mzc5ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLHdIQUF3SDtBQUN4SDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwSEFBMEg7QUFDMUg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9zaG9ydGN1dHMtY2FsbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBERUZBVUxUX1RSSUdHRVIgPSAnY3RybCc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydzaGlmdCcsICdjdHJsJywgJ2FsdCcsICdjb250cm9sJ107XG52YXIgREVGQVVMVF9DT01CSU5FRF9LRVkgPSAnMSc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIGNvbWJpbmVkS2V5OiBERUZBVUxUX0NPTUJJTkVEX0tFWSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2ZpdFZpZXcnLFxuICAgICAgZnVuY3Rpb25QYXJhbXM6IFtdXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG4gICAgaWYgKCEoQUxMT1dfRVZFTlRTLmluZGV4T2YodGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIgPSBERUZBVUxUX1RSSUdHRVI7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBzaG9ydGN1dHMtZml0LXZpZXcgXFx1NzY4NCB0cmlnZ2VyIFxcdTUzQzJcXHU2NTcwICdcIi5jb25jYXQodGhpcy50cmlnZ2VyLCBcIicgXFx1NEUwRFxcdTU0MDhcXHU2Q0Q1XFx1RkYwQ1xcdThCRjdcXHU4RjkzXFx1NTE2NSAnZHJhZydcXHUzMDAxJ3NoaWZ0J1xcdTMwMDEnY3RybCcgXFx1NjIxNiAnYWx0J1wiKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tYmluZWRLZXkgPT09IHRoaXMudHJpZ2dlcikge1xuICAgICAgdGhpcy5jb21iaW5lZEtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlckxvd2VyQ2FzZSA9IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb2RlTG93ZXJDYXNlID0gY29kZS50b0xvd2VyQ2FzZSgpOyAvLyDmjInkvY8gY29udHJvbCDplK7ml7bvvIzlhYHorrjnlKjmiLforr7nva4gdHJpZ2dlciDkuLogY3RybFxuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJLZXlkb3duKSB7XG4gICAgICBpZiAoY29kZUxvd2VyQ2FzZSA9PT0gdHJpZ2dlckxvd2VyQ2FzZSB8fCBjb2RlTG93ZXJDYXNlID09PSAnY29udHJvbCcgJiYgdHJpZ2dlckxvd2VyQ2FzZSA9PT0gJ2N0cmwnIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjdHJsJyAmJiB0cmlnZ2VyTG93ZXJDYXNlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyS2V5ZG93biA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyaWdnZXJLZXlkb3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBzaG9ydGN1dHMtZml0LXZpZXcgXFx1NzY4NCBmdW5jdGlvbk5hbWUgXFx1NTNDMlxcdTY1NzAgJ1wiLmNvbmNhdCh0aGlzLmZ1bmN0aW9uTmFtZSwgXCInIFxcdTRFMERcXHU1NDA4XFx1NkNENVxcdUZGMENcXHU1QjgzXFx1NEUwRFxcdTY2MkYgR3JhcGggXFx1NzY4NFxcdTRFMDBcXHU0RTJBXFx1NTFGRFxcdTY1NzBcXHU1NDBEXCIpKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9IC8vIOacqumFjee9riBjb21iaW5lZEtlee+8jOebtOaOpSBmaXRWaWV3XG5cblxuICAgIGlmICh0aGlzLnRyaWdnZXJLZXlkb3duICYmICF0aGlzLmNvbWJpbmVkS2V5KSB7XG4gICAgICBpZiAodGhpcy5mdW5jdGlvblBhcmFtcyAmJiB0aGlzLmZ1bmN0aW9uUGFyYW1zLmxlbmd0aCkgZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdLmFwcGx5KGdyYXBoLCB0aGlzLmZ1bmN0aW9uUGFyYW1zKTtlbHNlIGdyYXBoW3RoaXMuZnVuY3Rpb25OYW1lXSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjb21iaW5lZEtleUxvd2VyQ2FzZSA9IHRoaXMuY29tYmluZWRLZXkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJLZXlkb3duKSB7XG4gICAgICBpZiAoY29kZUxvd2VyQ2FzZSA9PT0gY29tYmluZWRLZXlMb3dlckNhc2UgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnICYmIGNvbWJpbmVkS2V5TG93ZXJDYXNlID09PSAnY3RybCcgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2N0cmwnICYmIGNvbWJpbmVkS2V5TG93ZXJDYXNlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25QYXJhbXMgJiYgdGhpcy5mdW5jdGlvblBhcmFtcy5sZW5ndGgpIGdyYXBoW3RoaXMuZnVuY3Rpb25OYW1lXS5hcHBseShncmFwaCwgdGhpcy5mdW5jdGlvblBhcmFtcyk7ZWxzZSBncmFwaFt0aGlzLmZ1bmN0aW9uTmFtZV0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgaWYgKHRoaXMuYnJ1c2gpIHtcbiAgICAgIC8vIOa4hemZpOaJgOaciemAieS4reeKtuaAgeWQju+8jOiuvue9ruaLluW+l+WKqOeKtuaAgeS4umZhbHNl77yM5bm25riF6Zmk5qGG6YCJ55qEYnJ1c2hcbiAgICAgIHRoaXMuYnJ1c2gucmVtb3ZlKHRydWUpO1xuICAgICAgdGhpcy5icnVzaCA9IG51bGw7XG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyS2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js":
/*!**************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onMouseEnter: function onMouseEnter(e) {\n var item = e.item;\n this.currentTarget = item;\n this.showTooltip(e);\n this.graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.shouldUpdate(e)) {\n this.hideTooltip();\n return;\n }\n\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n\n this.updatePosition(e);\n },\n onMouseLeave: function onMouseLeave(e) {\n if (!this.shouldEnd(e)) {\n return;\n }\n\n this.hideTooltip();\n this.graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n },\n showTooltip: function showTooltip(e) {\n var container = this.container;\n\n if (!e.item || e.item.destroyed) {\n return;\n }\n\n if (!container) {\n container = this.createTooltip(this.graph.get('canvas'));\n this.container = container;\n }\n\n var text = this.formatText(e.item.get('model'), e);\n container.innerHTML = text;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'visible'\n });\n this.updatePosition(e);\n },\n hideTooltip: function hideTooltip() {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'hidden'\n });\n },\n updatePosition: function updatePosition(e) {\n var shouldBegin = this.get('shouldBegin');\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n container = _a.container,\n graph = _a.graph;\n\n if (!shouldBegin(e)) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n visibility: 'hidden'\n });\n return;\n }\n\n var point = graph.getPointByClient(e.clientX, e.clientY);\n\n var _b = graph.getCanvasByPoint(point.x, point.y),\n x = _b.x,\n y = _b.y;\n\n var bbox = container.getBoundingClientRect();\n\n if (x > width / 2) {\n x -= bbox.width;\n } else {\n x += this.offset;\n }\n\n if (y > height / 2) {\n y -= bbox.height;\n } else {\n y += this.offset;\n }\n\n var left = \"\".concat(x, \"px\");\n var top = \"\".concat(y, \"px\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n left: left,\n top: top,\n visibility: 'visible'\n });\n },\n createTooltip: function createTooltip(canvas) {\n var el = canvas.get('el');\n el.style.position = 'relative';\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"\"));\n el.parentNode.appendChild(container);\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n position: 'absolute',\n visibility: 'visible'\n });\n this.width = canvas.get('width');\n this.height = canvas.get('height');\n this.container = container;\n this.graph.get('tooltips').push(container);\n return container;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvdG9vbHRpcC1iYXNlLmpzPzA0OWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFzRDtBQUN2QztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGdFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFTO0FBQzdCO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci90b29sdGlwLWJhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25Nb3VzZUVudGVyOiBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoZSkge1xuICAgIHZhciBpdGVtID0gZS5pdGVtO1xuICAgIHRoaXMuY3VycmVudFRhcmdldCA9IGl0ZW07XG4gICAgdGhpcy5zaG93VG9vbHRpcChlKTtcbiAgICB0aGlzLmdyYXBoLmVtaXQoJ3Rvb2x0aXBjaGFuZ2UnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBhY3Rpb246ICdzaG93J1xuICAgIH0pO1xuICB9LFxuICBvbk1vdXNlTW92ZTogZnVuY3Rpb24gb25Nb3VzZU1vdmUoZSkge1xuICAgIGlmICghdGhpcy5zaG91bGRVcGRhdGUoZSkpIHtcbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudFRhcmdldCB8fCBlLml0ZW0gIT09IHRoaXMuY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oZSk7XG4gIH0sXG4gIG9uTW91c2VMZWF2ZTogZnVuY3Rpb24gb25Nb3VzZUxlYXZlKGUpIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkRW5kKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgndG9vbHRpcGNoYW5nZScsIHtcbiAgICAgIGl0ZW06IHRoaXMuY3VycmVudFRhcmdldCxcbiAgICAgIGFjdGlvbjogJ2hpZGUnXG4gICAgfSk7XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgfSxcbiAgc2hvd1Rvb2x0aXA6IGZ1bmN0aW9uIHNob3dUb29sdGlwKGUpIHtcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXI7XG5cbiAgICBpZiAoIWUuaXRlbSB8fCBlLml0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lciA9IHRoaXMuY3JlYXRlVG9vbHRpcCh0aGlzLmdyYXBoLmdldCgnY2FudmFzJykpO1xuICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgfVxuXG4gICAgdmFyIHRleHQgPSB0aGlzLmZvcm1hdFRleHQoZS5pdGVtLmdldCgnbW9kZWwnKSwgZSk7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9IHRleHQ7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuY29udGFpbmVyLCB7XG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGUpO1xuICB9LFxuICBoaWRlVG9vbHRpcDogZnVuY3Rpb24gaGlkZVRvb2x0aXAoKSB7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuY29udGFpbmVyLCB7XG4gICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgIH0pO1xuICB9LFxuICB1cGRhdGVQb3NpdGlvbjogZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oZSkge1xuICAgIHZhciBzaG91bGRCZWdpbiA9IHRoaXMuZ2V0KCdzaG91bGRCZWdpbicpO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICBjb250YWluZXIgPSBfYS5jb250YWluZXIsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICBpZiAoIXNob3VsZEJlZ2luKGUpKSB7XG4gICAgICBtb2RpZnlDU1MoY29udGFpbmVyLCB7XG4gICAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnQgPSBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcblxuICAgIHZhciBfYiA9IGdyYXBoLmdldENhbnZhc0J5UG9pbnQocG9pbnQueCwgcG9pbnQueSksXG4gICAgICAgIHggPSBfYi54LFxuICAgICAgICB5ID0gX2IueTtcblxuICAgIHZhciBiYm94ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHggPiB3aWR0aCAvIDIpIHtcbiAgICAgIHggLT0gYmJveC53aWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgeCArPSB0aGlzLm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoeSA+IGhlaWdodCAvIDIpIHtcbiAgICAgIHkgLT0gYmJveC5oZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHkgKz0gdGhpcy5vZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSBcIlwiLmNvbmNhdCh4LCBcInB4XCIpO1xuICAgIHZhciB0b3AgPSBcIlwiLmNvbmNhdCh5LCBcInB4XCIpO1xuICAgIG1vZGlmeUNTUyh0aGlzLmNvbnRhaW5lciwge1xuICAgICAgbGVmdDogbGVmdCxcbiAgICAgIHRvcDogdG9wLFxuICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnXG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZVRvb2x0aXA6IGZ1bmN0aW9uIGNyZWF0ZVRvb2x0aXAoY2FudmFzKSB7XG4gICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICBlbC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdmFyIGNvbnRhaW5lciA9IGNyZWF0ZURvbShcIjxkaXYgY2xhc3M9XFxcImc2LXRvb2x0aXAgZzYtXCIuY29uY2F0KHRoaXMuaXRlbSwgXCItdG9vbHRpcFxcXCI+PC9kaXY+XCIpKTtcbiAgICBlbC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICB0aGlzLndpZHRoID0gY2FudmFzLmdldCgnd2lkdGgnKTtcbiAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5nZXQoJ2hlaWdodCcpO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuZ3JhcGguZ2V0KCd0b29sdGlwcycpLnB1c2goY29udGFpbmVyKTtcbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/tooltip.js":
/*!*********************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/tooltip.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'node',\n offset: 12,\n formatText: function formatText(model) {\n return model.label;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvdG9vbHRpcC5qcz84ZjMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNDO0FBQ25CLHFIQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRSxxREFBSSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IGJhc2UgZnJvbSAnLi90b29sdGlwLWJhc2UnO1xuZXhwb3J0IGRlZmF1bHQgX19hc3NpZ24oe1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtOiAnbm9kZScsXG4gICAgICBvZmZzZXQ6IDEyLFxuICAgICAgZm9ybWF0VGV4dDogZnVuY3Rpb24gZm9ybWF0VGV4dChtb2RlbCkge1xuICAgICAgICByZXR1cm4gbW9kZWwubGFiZWw7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOm1vdXNlZW50ZXInOiAnb25Nb3VzZUVudGVyJyxcbiAgICAgICdub2RlOm1vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdub2RlOm1vdXNlbW92ZSc6ICdvbk1vdXNlTW92ZScsXG4gICAgICBhZnRlcnJlbW92ZWl0ZW06ICdvbk1vdXNlTGVhdmUnXG4gICAgfTtcbiAgfVxufSwgYmFzZSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/tooltip.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js":
/*!*************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\nvar DELTA = 0.05;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n sensitivity: 2,\n minZoom: undefined,\n maxZoom: undefined,\n enableOptimize: false,\n optimizeZoom: 0.1,\n fixSelectedItems: {\n fixAll: false,\n fixLineWidth: false,\n fixLabel: false,\n fixState: 'selected'\n },\n animate: false,\n animateCfg: {\n duration: 500\n }\n };\n },\n getEvents: function getEvents() {\n var fixSelectedItems = this.fixSelectedItems;\n if (!fixSelectedItems.fixState) fixSelectedItems.fixState = 'selected';\n\n if (fixSelectedItems.fixAll) {\n fixSelectedItems.fixLineWidth = true;\n fixSelectedItems.fixLabel = true;\n }\n\n return {\n wheel: 'onWheel',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd'\n };\n },\n onTouchStart: function onTouchStart(evt) {\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n evt.preventDefault(); // 如果不是缩放事件则禁止继续执行\n\n if (!event2) {\n return;\n }\n\n if (this.shouldBegin && !this.shouldBegin.call(this, evt)) {\n return;\n } // 第一个触摸点位置\n\n\n this.startPoint = {\n pageX: event1.pageX,\n pageY: event1.pageY\n };\n this.moveable = true;\n\n if (event2) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n }\n\n this.originScale = this.graph.getZoom() || this.currentScale || 1;\n },\n onTouchMove: function onTouchMove(evt) {\n if (!this.moveable) {\n return;\n }\n\n evt.preventDefault();\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (!event2) {\n return;\n }\n\n if (!this.endPoint) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n } // 获取坐标之间的距离\n\n\n var getDistance = function getDistance(start, end) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n }; // 双指缩放比例\n\n\n var scale = getDistance({\n x: event1.pageX,\n y: event1.pageY\n }, {\n x: event2.pageX,\n y: event2.pageY\n }) / getDistance({\n x: this.startPoint.pageX,\n y: this.startPoint.pageY\n }, {\n x: this.endPoint.pageX,\n y: this.endPoint.pageY\n }); // 应用到画布上的缩放比例\n\n var zoom = this.originScale * scale; // 缓存当前的缩放比例\n\n this.currentScale = zoom;\n var minZoom = this.get('minZoom') || this.graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || this.graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n }\n\n var animate = this.get('animate');\n var animateCfg = this.get('animateCfg');\n var canvas = this.graph.get('canvas');\n var point = canvas.getPointByClient(evt.clientX, evt.clientY);\n this.graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n }, animate, animateCfg);\n this.graph.emit('wheelzoom', evt);\n },\n onTouchEnd: function onTouchEnd() {\n this.moveable = false;\n this.endPoint = null;\n },\n onWheel: function onWheel(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n fixSelectedItems = _a.fixSelectedItems;\n\n if (this.shouldBegin && !this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, e)) {\n return;\n }\n\n e.preventDefault();\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(e.clientX, e.clientY);\n var sensitivity = this.get('sensitivity');\n var graphZoom = graph.getZoom();\n var ratio = graphZoom;\n var zoom = graphZoom; // 兼容IE、Firefox及Chrome\n\n if (e.wheelDelta < 0) {\n ratio = 1 - DELTA * sensitivity;\n } else {\n ratio = 1 / (1 - DELTA * sensitivity);\n }\n\n zoom = graphZoom * ratio; // const zoom = ratio * graphZoom;\n\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n } // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n } // fix the items when zooming\n\n\n if (graphZoom <= 1) {\n var fixNodes = void 0,\n fixEdges = void 0;\n\n if (fixSelectedItems.fixAll || fixSelectedItems.fixLineWidth || fixSelectedItems.fixLabel) {\n fixNodes = graph.findAllByState('node', fixSelectedItems.fixState);\n fixEdges = graph.findAllByState('edge', fixSelectedItems.fixState);\n var scale = graphZoom / zoom;\n var fixNodesLength = fixNodes.length;\n\n for (var fn = 0; fn < fixNodesLength; fn++) {\n var node = fixNodes[fn];\n var group = node.getContainer();\n var nodeModel = node.getModel();\n var originStyle = node.getOriginStyle();\n var itemStateStyle = node.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = node.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, node)[fixSelectedItems.fixState];\n\n if (fixSelectedItems.fixAll) {\n if (zoom <= 1) {\n var groupMatrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(group.getMatrix());\n if (!groupMatrix) groupMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n var _b = node.getModel(),\n x = _b.x,\n y = _b.y;\n\n groupMatrix = transform(groupMatrix, [['t', -x, -y], ['s', scale, scale], ['t', x, y]]);\n group.setMatrix(groupMatrix);\n }\n } else {\n var children = group.get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom); // * graphZoom / zoom\n\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || originStyle.lineWidth || 0;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom); // * graphZoom / zoom\n\n if (fontSize) break;\n }\n }\n }\n }\n }\n\n var fixEdgesLength = fixEdges.length;\n\n for (var fe = 0; fe < fixEdgesLength; fe++) {\n var edge = fixEdges[fe];\n var group = edge.getContainer();\n var children = group.get('children');\n var nodeModel = edge.getModel();\n var itemStateStyle = edge.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = edge.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, edge)[fixSelectedItems.fixState];\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel || fixSelectedItems.fixAll) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom);\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth || fixSelectedItems.fixAll) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || 1;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom);\n if (fontSize) break;\n }\n }\n }\n }\n }\n }\n\n var animate = this.get('animate');\n var animateCfg = this.get('animateCfg');\n graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n }, animate, animateCfg);\n graph.emit('wheelzoom', e);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivem9vbS1jYW52YXMuanM/ZjE3NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDTDtBQUNuQyxnQkFBZ0IscURBQUc7QUFDbkI7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixvQkFBb0I7QUFDL0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLDJCQUEyQjtBQUMxRDtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLG9CQUFvQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsNkJBQTZCLG9CQUFvQjtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsMkJBQTJCO0FBQzVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw2QkFBNkIsb0JBQW9CO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0NBQWdDLHdEQUFLO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFOztBQUU1RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RUFBOEU7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixvQkFBb0I7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci96b29tLWNhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dCB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBERUxUQSA9IDAuMDU7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbnNpdGl2aXR5OiAyLFxuICAgICAgbWluWm9vbTogdW5kZWZpbmVkLFxuICAgICAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICAgICAgZW5hYmxlT3B0aW1pemU6IGZhbHNlLFxuICAgICAgb3B0aW1pemVab29tOiAwLjEsXG4gICAgICBmaXhTZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIGZpeEFsbDogZmFsc2UsXG4gICAgICAgIGZpeExpbmVXaWR0aDogZmFsc2UsXG4gICAgICAgIGZpeExhYmVsOiBmYWxzZSxcbiAgICAgICAgZml4U3RhdGU6ICdzZWxlY3RlZCdcbiAgICAgIH0sXG4gICAgICBhbmltYXRlOiBmYWxzZSxcbiAgICAgIGFuaW1hdGVDZmc6IHtcbiAgICAgICAgZHVyYXRpb246IDUwMFxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBmaXhTZWxlY3RlZEl0ZW1zID0gdGhpcy5maXhTZWxlY3RlZEl0ZW1zO1xuICAgIGlmICghZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSkgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSA9ICdzZWxlY3RlZCc7XG5cbiAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoID0gdHJ1ZTtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3aGVlbDogJ29uV2hlZWwnLFxuICAgICAgdG91Y2hzdGFydDogJ29uVG91Y2hTdGFydCcsXG4gICAgICB0b3VjaG1vdmU6ICdvblRvdWNoTW92ZScsXG4gICAgICB0b3VjaGVuZDogJ29uVG91Y2hFbmQnXG4gICAgfTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZXZ0KSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldnQub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlpoLmnpzkuI3mmK/nvKnmlL7kuovku7bliJnnpoHmraLnu6fnu63miafooYxcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4gJiYgIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDnrKzkuIDkuKrop6bmkbjngrnkvY3nva5cblxuXG4gICAgdGhpcy5zdGFydFBvaW50ID0ge1xuICAgICAgcGFnZVg6IGV2ZW50MS5wYWdlWCxcbiAgICAgIHBhZ2VZOiBldmVudDEucGFnZVlcbiAgICB9O1xuICAgIHRoaXMubW92ZWFibGUgPSB0cnVlO1xuXG4gICAgaWYgKGV2ZW50Mikge1xuICAgICAgdGhpcy5lbmRQb2ludCA9IHtcbiAgICAgICAgcGFnZVg6IGV2ZW50Mi5wYWdlWCxcbiAgICAgICAgcGFnZVk6IGV2ZW50Mi5wYWdlWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpblNjYWxlID0gdGhpcy5ncmFwaC5nZXRab29tKCkgfHwgdGhpcy5jdXJyZW50U2NhbGUgfHwgMTtcbiAgfSxcbiAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGV2dCkge1xuICAgIGlmICghdGhpcy5tb3ZlYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciB0b3VjaGVzID0gZXZ0Lm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50KSB7XG4gICAgICB0aGlzLmVuZFBvaW50ID0ge1xuICAgICAgICBwYWdlWDogZXZlbnQyLnBhZ2VYLFxuICAgICAgICBwYWdlWTogZXZlbnQyLnBhZ2VZXG4gICAgICB9O1xuICAgIH0gLy8g6I635Y+W5Z2Q5qCH5LmL6Ze055qE6Led56a7XG5cblxuICAgIHZhciBnZXREaXN0YW5jZSA9IGZ1bmN0aW9uIGdldERpc3RhbmNlKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBNYXRoLmh5cG90KGVuZC54IC0gc3RhcnQueCwgZW5kLnkgLSBzdGFydC55KTtcbiAgICB9OyAvLyDlj4zmjIfnvKnmlL7mr5TkvotcblxuXG4gICAgdmFyIHNjYWxlID0gZ2V0RGlzdGFuY2Uoe1xuICAgICAgeDogZXZlbnQxLnBhZ2VYLFxuICAgICAgeTogZXZlbnQxLnBhZ2VZXG4gICAgfSwge1xuICAgICAgeDogZXZlbnQyLnBhZ2VYLFxuICAgICAgeTogZXZlbnQyLnBhZ2VZXG4gICAgfSkgLyBnZXREaXN0YW5jZSh7XG4gICAgICB4OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVgsXG4gICAgICB5OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVlcbiAgICB9LCB7XG4gICAgICB4OiB0aGlzLmVuZFBvaW50LnBhZ2VYLFxuICAgICAgeTogdGhpcy5lbmRQb2ludC5wYWdlWVxuICAgIH0pOyAvLyDlupTnlKjliLDnlLvluIPkuIrnmoTnvKnmlL7mr5TkvotcblxuICAgIHZhciB6b29tID0gdGhpcy5vcmlnaW5TY2FsZSAqIHNjYWxlOyAvLyDnvJPlrZjlvZPliY3nmoTnvKnmlL7mr5TkvotcblxuICAgIHRoaXMuY3VycmVudFNjYWxlID0gem9vbTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21pblpvb20nKTtcbiAgICB2YXIgbWF4Wm9vbSA9IHRoaXMuZ2V0KCdtYXhab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21heFpvb20nKTtcblxuICAgIGlmICh6b29tID4gbWF4Wm9vbSB8fCB6b29tIDwgbWluWm9vbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBhbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICB2YXIgYW5pbWF0ZUNmZyA9IHRoaXMuZ2V0KCdhbmltYXRlQ2ZnJyk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChldnQuY2xpZW50WCwgZXZ0LmNsaWVudFkpO1xuICAgIHRoaXMuZ3JhcGguem9vbVRvKHpvb20sIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCd3aGVlbHpvb20nLCBldnQpO1xuICB9LFxuICBvblRvdWNoRW5kOiBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgIHRoaXMubW92ZWFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbnVsbDtcbiAgfSxcbiAgb25XaGVlbDogZnVuY3Rpb24gb25XaGVlbChlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGZpeFNlbGVjdGVkSXRlbXMgPSBfYS5maXhTZWxlY3RlZEl0ZW1zO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4gJiYgIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRVcGRhdGUuY2FsbCh0aGlzLCBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB2YXIgY2FudmFzID0gZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHNlbnNpdGl2aXR5ID0gdGhpcy5nZXQoJ3NlbnNpdGl2aXR5Jyk7XG4gICAgdmFyIGdyYXBoWm9vbSA9IGdyYXBoLmdldFpvb20oKTtcbiAgICB2YXIgcmF0aW8gPSBncmFwaFpvb207XG4gICAgdmFyIHpvb20gPSBncmFwaFpvb207IC8vIOWFvOWuuUlF44CBRmlyZWZveOWPikNocm9tZVxuXG4gICAgaWYgKGUud2hlZWxEZWx0YSA8IDApIHtcbiAgICAgIHJhdGlvID0gMSAtIERFTFRBICogc2Vuc2l0aXZpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvID0gMSAvICgxIC0gREVMVEEgKiBzZW5zaXRpdml0eSk7XG4gICAgfVxuXG4gICAgem9vbSA9IGdyYXBoWm9vbSAqIHJhdGlvOyAvLyBjb25zdCB6b29tID0gcmF0aW8gKiBncmFwaFpvb207XG5cbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgZ3JhcGguZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpIHx8IGdyYXBoLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgaWYgKHpvb20gPiBtYXhab29tIHx8IHpvb20gPCBtaW5ab29tKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBoaWRlIHRoZSBzaGFwZXMgd2hlbiB0aGUgem9vbSByYXRpbyBpcyBzbWFsbGVyIHRoYW4gb3B0aW1pemVab29tXG4gICAgLy8gaGlkZSB0aGUgc2hhcGVzIHdoZW4gem9vbW1pbmdcblxuXG4gICAgdmFyIGVuYWJsZU9wdGltaXplID0gdGhpcy5nZXQoJ2VuYWJsZU9wdGltaXplJyk7XG5cbiAgICBpZiAoZW5hYmxlT3B0aW1pemUpIHtcbiAgICAgIHZhciBvcHRpbWl6ZVpvb21fMSA9IHRoaXMuZ2V0KCdvcHRpbWl6ZVpvb20nKTtcbiAgICAgIHZhciBvcHRpbWl6ZWQgPSB0aGlzLmdldCgnb3B0aW1pemVkJyk7XG4gICAgICB2YXIgbm9kZXNfMSA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgICB2YXIgZWRnZXNfMSA9IGdyYXBoLmdldEVkZ2VzKCk7XG4gICAgICB2YXIgbm9kZXNMZW5ndGhfMSA9IG5vZGVzXzEubGVuZ3RoO1xuICAgICAgdmFyIGVkZ2VzTGVuZ3RoXzEgPSBlZGdlc18xLmxlbmd0aDsgLy8gaGlkaW5nXG5cbiAgICAgIGlmICghb3B0aW1pemVkKSB7XG4gICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXNMZW5ndGhfMTsgbisrKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuXG4gICAgICAgICAgaWYgKCFub2RlLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG5cbiAgICAgICAgICAgICAgaWYgKCFzaGFwZS5kZXN0b3J5ZWQgJiYgIXNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gMDsgZWRnZUluZGV4IDwgZWRnZXNMZW5ndGhfMTsgZWRnZUluZGV4KyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcbiAgICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KCdvcHRpbWl6ZWQnLCB0cnVlKTtcbiAgICAgIH0gLy8gc2hvd2luZyBhZnRlciAxMDBtc1xuXG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmdldCgndGltZW91dCcpKTtcbiAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgICAgICB2YXIgY3VyT3B0aW1pemVkID0gX3RoaXMuZ2V0KCdvcHRpbWl6ZWQnKTtcblxuICAgICAgICBpZiAoY3VyT3B0aW1pemVkKSB7XG4gICAgICAgICAgX3RoaXMuc2V0KCdvcHRpbWl6ZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzTGVuZ3RoXzE7IG4rKykge1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFpvb20gPCBvcHRpbWl6ZVpvb21fMSkge1xuICAgICAgICAgICAgICB2YXIga2V5U2hhcGUgPSBub2RlLmdldEtleVNoYXBlKCk7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBrZXlTaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGtleVNoYXBlLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmdldCgndmlzaWJsZScpICYmIG9yaVZpcykge1xuICAgICAgICAgICAgICAgICAgaWYgKG9yaVZpcykgc2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IDA7IGVkZ2VJbmRleCA8IGVkZ2VzTGVuZ3RoXzE7IGVkZ2VJbmRleCsrKSB7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRab29tIDwgb3B0aW1pemVab29tXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gZWRnZS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgICB2YXIgb3JpVmlzID0ga2V5U2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICBpZiAob3JpVmlzKSBrZXlTaGFwZS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcblxuICAgICAgICAgICAgICAgIGlmICghc2hhcGUuZ2V0KCd2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgICAgdGhpcy5zZXQoJ3RpbWVvdXQnLCB0aW1lb3V0KTtcbiAgICB9IC8vIGZpeCB0aGUgaXRlbXMgd2hlbiB6b29taW5nXG5cblxuICAgIGlmIChncmFwaFpvb20gPD0gMSkge1xuICAgICAgdmFyIGZpeE5vZGVzID0gdm9pZCAwLFxuICAgICAgICAgIGZpeEVkZ2VzID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwgfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhMaW5lV2lkdGggfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhMYWJlbCkge1xuICAgICAgICBmaXhOb2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSk7XG4gICAgICAgIGZpeEVkZ2VzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2VkZ2UnLCBmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlKTtcbiAgICAgICAgdmFyIHNjYWxlID0gZ3JhcGhab29tIC8gem9vbTtcbiAgICAgICAgdmFyIGZpeE5vZGVzTGVuZ3RoID0gZml4Tm9kZXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAodmFyIGZuID0gMDsgZm4gPCBmaXhOb2Rlc0xlbmd0aDsgZm4rKykge1xuICAgICAgICAgIHZhciBub2RlID0gZml4Tm9kZXNbZm5dO1xuICAgICAgICAgIHZhciBncm91cCA9IG5vZGUuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgICAgdmFyIG5vZGVNb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgb3JpZ2luU3R5bGUgPSBub2RlLmdldE9yaWdpblN0eWxlKCk7XG4gICAgICAgICAgdmFyIGl0ZW1TdGF0ZVN0eWxlID0gbm9kZS5nZXRTdGF0ZVN0eWxlKGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUpO1xuICAgICAgICAgIHZhciBzaGFwZVN0YXRlU3R5bGUgPSBub2RlLmdldCgnc2hhcGVGYWN0b3J5JykuZ2V0U2hhcGUobm9kZU1vZGVsLnR5cGUpLmdldFN0YXRlU3R5bGUoZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSwgbm9kZSlbZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZV07XG5cbiAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHtcbiAgICAgICAgICAgICAgdmFyIGdyb3VwTWF0cml4ID0gY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xuICAgICAgICAgICAgICBpZiAoIWdyb3VwTWF0cml4KSBncm91cE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICAgICAgICAgICAgICB2YXIgX2IgPSBub2RlLmdldE1vZGVsKCksXG4gICAgICAgICAgICAgICAgICB4ID0gX2IueCxcbiAgICAgICAgICAgICAgICAgIHkgPSBfYi55O1xuXG4gICAgICAgICAgICAgIGdyb3VwTWF0cml4ID0gdHJhbnNmb3JtKGdyb3VwTWF0cml4LCBbWyd0JywgLXgsIC15XSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgeCwgeV1dKTtcbiAgICAgICAgICAgICAgZ3JvdXAuc2V0TWF0cml4KGdyb3VwTWF0cml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICAgIHZhciBmb250U2l6ZSA9IHZvaWQgMCxcbiAgICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IHZvaWQgMDtcblxuICAgICAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhMYWJlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZVR5cGUgPSBzaGFwZS5nZXQoJ3R5cGUnKTtcblxuICAgICAgICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgZm9udFNpemUgPSBzaGFwZS5hdHRyKCdmb250U2l6ZScpIHx8IDEyO1xuICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1TdHlsZSA9IGl0ZW1TdGF0ZVN0eWxlW3NoYXBlLmdldCgnbmFtZScpXTtcbiAgICAgICAgICAgICAgICAgIHZhciBzaGFwZVN0eWxlID0gc2hhcGVTdGF0ZVN0eWxlW3NoYXBlLmdldCgnbmFtZScpXTtcbiAgICAgICAgICAgICAgICAgIHZhciBpdGVtRm9udFNpemUgPSBpdGVtU3R5bGUgPyBpdGVtU3R5bGUuZm9udFNpemUgOiAxMjtcbiAgICAgICAgICAgICAgICAgIHZhciBzaGFwZUZvbnRTaXplID0gc2hhcGVTdHlsZSA/IHNoYXBlU3R5bGUuZm9udFNpemUgOiAxMjtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlGb250U2l6ZSA9IGl0ZW1Gb250U2l6ZSB8fCBzaGFwZUZvbnRTaXplIHx8IDEyO1xuICAgICAgICAgICAgICAgICAgaWYgKHpvb20gPD0gMSkgc2hhcGUuYXR0cignZm9udFNpemUnLCBvcmlGb250U2l6ZSAvIHpvb20pOyAvLyAqIGdyYXBoWm9vbSAvIHpvb21cblxuICAgICAgICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgICBsaW5lV2lkdGggPSBzaGFwZS5hdHRyKCdsaW5lV2lkdGgnKSB8fCAwO1xuICAgICAgICAgICAgICAgICAgdmFyIG9yaUxpbmVXaWR0aCA9IGl0ZW1TdGF0ZVN0eWxlLmxpbmVXaWR0aCB8fCBzaGFwZVN0YXRlU3R5bGUubGluZVdpZHRoIHx8IG9yaWdpblN0eWxlLmxpbmVXaWR0aCB8fCAwO1xuICAgICAgICAgICAgICAgICAgaWYgKHpvb20gPD0gMSkgc2hhcGUuYXR0cignbGluZVdpZHRoJywgb3JpTGluZVdpZHRoIC8gem9vbSk7IC8vICogZ3JhcGhab29tIC8gem9vbVxuXG4gICAgICAgICAgICAgICAgICBpZiAoZm9udFNpemUpIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXhFZGdlc0xlbmd0aCA9IGZpeEVkZ2VzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKHZhciBmZSA9IDA7IGZlIDwgZml4RWRnZXNMZW5ndGg7IGZlKyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGZpeEVkZ2VzW2ZlXTtcbiAgICAgICAgICB2YXIgZ3JvdXAgPSBlZGdlLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGdyb3VwLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICB2YXIgbm9kZU1vZGVsID0gZWRnZS5nZXRNb2RlbCgpO1xuICAgICAgICAgIHZhciBpdGVtU3RhdGVTdHlsZSA9IGVkZ2UuZ2V0U3RhdGVTdHlsZShmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlKTtcbiAgICAgICAgICB2YXIgc2hhcGVTdGF0ZVN0eWxlID0gZWRnZS5nZXQoJ3NoYXBlRmFjdG9yeScpLmdldFNoYXBlKG5vZGVNb2RlbC50eXBlKS5nZXRTdGF0ZVN0eWxlKGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUsIGVkZ2UpW2ZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGVdO1xuICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICB2YXIgZm9udFNpemUgPSB2b2lkIDAsXG4gICAgICAgICAgICAgICAgbGluZVdpZHRoID0gdm9pZCAwO1xuXG4gICAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhMYWJlbCB8fCBmaXhTZWxlY3RlZEl0ZW1zLmZpeEFsbCkge1xuICAgICAgICAgICAgICB2YXIgc2hhcGVUeXBlID0gc2hhcGUuZ2V0KCd0eXBlJyk7XG5cbiAgICAgICAgICAgICAgaWYgKHNoYXBlVHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgZm9udFNpemUgPSBzaGFwZS5hdHRyKCdmb250U2l6ZScpIHx8IDEyO1xuICAgICAgICAgICAgICAgIHZhciBpdGVtU3R5bGUgPSBpdGVtU3RhdGVTdHlsZVtzaGFwZS5nZXQoJ25hbWUnKV07XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlU3R5bGUgPSBzaGFwZVN0YXRlU3R5bGVbc2hhcGUuZ2V0KCduYW1lJyldO1xuICAgICAgICAgICAgICAgIHZhciBpdGVtRm9udFNpemUgPSBpdGVtU3R5bGUgPyBpdGVtU3R5bGUuZm9udFNpemUgOiAxMjtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGVGb250U2l6ZSA9IHNoYXBlU3R5bGUgPyBzaGFwZVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgdmFyIG9yaUZvbnRTaXplID0gaXRlbUZvbnRTaXplIHx8IHNoYXBlRm9udFNpemUgfHwgMTI7XG4gICAgICAgICAgICAgICAgaWYgKHpvb20gPD0gMSkgc2hhcGUuYXR0cignZm9udFNpemUnLCBvcmlGb250U2l6ZSAvIHpvb20pO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lV2lkdGgpIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaXhTZWxlY3RlZEl0ZW1zLmZpeExpbmVXaWR0aCB8fCBmaXhTZWxlY3RlZEl0ZW1zLmZpeEFsbCkge1xuICAgICAgICAgICAgICBpZiAoc2hhcGUuZ2V0KCdpc0tleVNoYXBlJykpIHtcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGggPSBzaGFwZS5hdHRyKCdsaW5lV2lkdGgnKSB8fCAwO1xuICAgICAgICAgICAgICAgIHZhciBvcmlMaW5lV2lkdGggPSBpdGVtU3RhdGVTdHlsZS5saW5lV2lkdGggfHwgc2hhcGVTdGF0ZVN0eWxlLmxpbmVXaWR0aCB8fCAxO1xuICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2xpbmVXaWR0aCcsIG9yaUxpbmVXaWR0aCAvIHpvb20pO1xuICAgICAgICAgICAgICAgIGlmIChmb250U2l6ZSkgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYW5pbWF0ZSA9IHRoaXMuZ2V0KCdhbmltYXRlJyk7XG4gICAgdmFyIGFuaW1hdGVDZmcgPSB0aGlzLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIGdyYXBoLnpvb21Ubyh6b29tLCB7XG4gICAgICB4OiBwb2ludC54LFxuICAgICAgeTogcG9pbnQueVxuICAgIH0sIGFuaW1hdGUsIGFuaW1hdGVDZmcpO1xuICAgIGdyYXBoLmVtaXQoJ3doZWVsem9vbScsIGUpO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/element/index.js":
/*!******************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/element/index.js ***!
\******************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-element */ \"./node_modules/@antv/g6-element/es/index.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZWxlbWVudC9pbmRleC5qcz8wY2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZWxlbWVudC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQGFudHYvZzYtZWxlbWVudCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/element/index.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/global.js":
/*!***********************************************!*\
!*** ./node_modules/@antv/g6-pc/es/global.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/color */ \"./node_modules/@antv/g6-pc/es/util/color.js\");\n\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar colorSet = Object(_util_color__WEBPACK_IMPORTED_MODULE_0__[\"getColorsWithSubjectColor\"])(subjectColor, backColor);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.3',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: colorSet.mainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n // 文本水印默认配置\n textWaterMarkerConfig: {\n width: 150,\n height: 100,\n compatible: false,\n text: {\n x: 0,\n y: 60,\n lineHeight: 20,\n rotate: 20,\n fontSize: 14,\n fontFamily: 'Microsoft YaHei',\n fill: 'rgba(0, 0, 0, 0.1)',\n baseline: 'Middle'\n }\n },\n imageWaterMarkerConfig: {\n width: 150,\n height: 130,\n compatible: false,\n image: {\n x: 0,\n y: 0,\n width: 30,\n height: 20,\n rotate: 0\n }\n },\n waterMarkerImage: 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/logo-with-text-73b8a.svg'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ2xvYmFsLmpzPzZkMWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZFQUF5QjtBQUN6QjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9nbG9iYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRDb2xvcnNXaXRoU3ViamVjdENvbG9yIH0gZnJvbSAnLi91dGlsL2NvbG9yJztcbnZhciBzdWJqZWN0Q29sb3IgPSAncmdiKDk1LCAxNDksIDI1NSknO1xudmFyIGJhY2tDb2xvciA9ICdyZ2IoMjU1LCAyNTUsIDI1NSknO1xudmFyIHRleHRDb2xvciA9ICdyZ2IoMCwgMCwgMCknO1xudmFyIGNvbG9yU2V0ID0gZ2V0Q29sb3JzV2l0aFN1YmplY3RDb2xvcihzdWJqZWN0Q29sb3IsIGJhY2tDb2xvcik7XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb246ICcwLjUuMycsXG4gIHJvb3RDb250YWluZXJDbGFzc05hbWU6ICdyb290LWNvbnRhaW5lcicsXG4gIG5vZGVDb250YWluZXJDbGFzc05hbWU6ICdub2RlLWNvbnRhaW5lcicsXG4gIGVkZ2VDb250YWluZXJDbGFzc05hbWU6ICdlZGdlLWNvbnRhaW5lcicsXG4gIGNvbWJvQ29udGFpbmVyQ2xhc3NOYW1lOiAnY29tYm8tY29udGFpbmVyJyxcbiAgZGVsZWdhdGVDb250YWluZXJDbGFzc05hbWU6ICdkZWxlZ2F0ZS1jb250YWluZXInLFxuICBkZWZhdWx0TG9vcFBvc2l0aW9uOiAndG9wJyxcbiAgbm9kZUxhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnXG4gICAgfSxcbiAgICBvZmZzZXQ6IDQgLy8g6IqC54K555qE6buY6K6k5paH5pys5LiN5bGF5Lit5pe255qE5YGP56e76YePXG5cbiAgfSxcbiAgZGVmYXVsdE5vZGU6IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5tYWluU3Ryb2tlLFxuICAgICAgZmlsbDogY29sb3JTZXQubWFpbkZpbGxcbiAgICB9LFxuICAgIHNpemU6IDIwLFxuICAgIGNvbG9yOiBjb2xvclNldC5tYWluU3Ryb2tlLFxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHNpemU6IDgsXG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBmaWxsOiBjb2xvclNldC5hY3RpdmVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5hY3RpdmVTdHJva2VcbiAgICB9XG4gIH0sXG4gIC8vIOiKgueCueW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBub2RlU3RhdGVTdHlsZXM6IHtcbiAgICBhY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5tYWluU3Ryb2tlLFxuICAgICAgc2hhZG93Qmx1cjogMTBcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBmaWxsOiBjb2xvclNldC5zZWxlY3RlZEZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LnNlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiA0LFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0LnNlbGVjdGVkU3Ryb2tlLFxuICAgICAgc2hhZG93Qmx1cjogMTAsXG4gICAgICAndGV4dC1zaGFwZSc6IHtcbiAgICAgICAgZm9udFdlaWdodDogNTAwXG4gICAgICB9XG4gICAgfSxcbiAgICBoaWdobGlnaHQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmhpZ2hsaWdodEZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmhpZ2hsaWdodFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGluYWN0aXZlOiB7XG4gICAgICBmaWxsOiBjb2xvclNldC5pbmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBmaWxsOiBjb2xvclNldC5kaXNhYmxlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZGlzYWJsZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH1cbiAgfSxcbiAgZWRnZUxhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfVxuICB9LFxuICBkZWZhdWx0RWRnZToge1xuICAgIHR5cGU6ICdsaW5lJyxcbiAgICBzaXplOiAxLFxuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VNYWluU3Ryb2tlLFxuICAgICAgbGluZUFwcGVuZFdpZHRoOiAyXG4gICAgfSxcbiAgICBjb2xvcjogY29sb3JTZXQuZWRnZU1haW5TdHJva2VcbiAgfSxcbiAgLy8g6L655bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIGVkZ2VTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDIsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuZWRnZVNlbGVjdGVkU3Ryb2tlLFxuICAgICAgc2hhZG93Qmx1cjogMTAsXG4gICAgICAndGV4dC1zaGFwZSc6IHtcbiAgICAgICAgZm9udFdlaWdodDogNTAwXG4gICAgICB9XG4gICAgfSxcbiAgICBoaWdobGlnaHQ6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUhpZ2hsaWdodFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGluYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VJbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH0sXG4gICAgZGlzYWJsZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlRGlzYWJsZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH1cbiAgfSxcbiAgY29tYm9MYWJlbDoge1xuICAgIHN0eWxlOiB7XG4gICAgICBmaWxsOiB0ZXh0Q29sb3IsXG4gICAgICAvLyB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgIGZvbnRTaXplOiAxMlxuICAgIH0sXG4gICAgcmVmWTogMTAsXG4gICAgcmVmWDogMTAgLy8gQ29tYm8g55qE6buY6K6k5paH5pys5LiN5bGF5Lit5pe255qE5YGP56e76YePXG5cbiAgfSxcbiAgZGVmYXVsdENvbWJvOiB7XG4gICAgdHlwZTogJ2NpcmNsZScsXG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvTWFpbkZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICAgIHI6IDUsXG4gICAgICB3aWR0aDogMjAsXG4gICAgICBoZWlnaHQ6IDEwXG4gICAgfSxcbiAgICBzaXplOiBbMjAsIDVdLFxuICAgIGNvbG9yOiBjb2xvclNldC5jb21ib01haW5TdHJva2UsXG4gICAgcGFkZGluZzogWzI1LCAyMCwgMTUsIDIwXVxuICB9LFxuICAvLyBjb21ibyDlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgY29tYm9TdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib0FjdGl2ZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvQWN0aXZlRmlsbFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvU2VsZWN0ZWRGaWxsLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0LmNvbWJvU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib0hpZ2hsaWdodFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0RmlsbCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGluYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVTdHJva2UsXG4gICAgICBmaWxsOiBjb2xvclNldC5jb21ib0luYWN0aXZlRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH0sXG4gICAgZGlzYWJsZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib0Rpc2FibGVTdHJva2UsXG4gICAgICBmaWxsOiBjb2xvclNldC5jb21ib0Rpc2FibGVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBkZWxlZ2F0ZVN0eWxlOiB7XG4gICAgZmlsbDogJyNGM0Y5RkYnLFxuICAgIGZpbGxPcGFjaXR5OiAwLjUsXG4gICAgc3Ryb2tlOiAnIzE4OTBGRicsXG4gICAgc3Ryb2tlT3BhY2l0eTogMC45LFxuICAgIGxpbmVEYXNoOiBbNSwgNV1cbiAgfSxcbiAgLy8g5paH5pys5rC05Y2w6buY6K6k6YWN572uXG4gIHRleHRXYXRlck1hcmtlckNvbmZpZzoge1xuICAgIHdpZHRoOiAxNTAsXG4gICAgaGVpZ2h0OiAxMDAsXG4gICAgY29tcGF0aWJsZTogZmFsc2UsXG4gICAgdGV4dDoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDYwLFxuICAgICAgbGluZUhlaWdodDogMjAsXG4gICAgICByb3RhdGU6IDIwLFxuICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgZm9udEZhbWlseTogJ01pY3Jvc29mdCBZYUhlaScsXG4gICAgICBmaWxsOiAncmdiYSgwLCAwLCAwLCAwLjEpJyxcbiAgICAgIGJhc2VsaW5lOiAnTWlkZGxlJ1xuICAgIH1cbiAgfSxcbiAgaW1hZ2VXYXRlck1hcmtlckNvbmZpZzoge1xuICAgIHdpZHRoOiAxNTAsXG4gICAgaGVpZ2h0OiAxMzAsXG4gICAgY29tcGF0aWJsZTogZmFsc2UsXG4gICAgaW1hZ2U6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDMwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgIHJvdGF0ZTogMFxuICAgIH1cbiAgfSxcbiAgd2F0ZXJNYXJrZXJJbWFnZTogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vb3Mvcy9wcm9kL2FudHYvYXNzZXRzL2ltYWdlL2xvZ28td2l0aC10ZXh0LTczYjhhLnN2Zydcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/global.js\n");
/***/ }),
/***/ "./node_modules/@antv/g6-pc/es/graph/controller/event.js":
/*!***************************************************************!*\
!*** ./node_modules/@antv/g6-pc/es/graph/controller/event.js ***!
\***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\n\nvar cloneEvent = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].cloneEvent,\n isViewportChanged = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].isViewportChanged;\n\nvar EventController =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EventController, _super);\n\n function EventController(graph) {\n var _this = _super.call(this, graph) || this;\n\n _this.extendEvents = [];\n _this.dragging = false;\n _this.preItem = null;\n _this.graph = graph;\n _this.destroyed = false;\n\n _this.initEvents();\n\n return _this;\n } // 初始化 G6 中的事件\n\n\n EventController.prototype.initEvents = function () {\n var _a = this,\n graph = _a.graph,\n _b = _a.extendEvents,\n extendEvents = _b === void 0 ? [] : _b;\n\n var canvas = graph.get('canvas'); // canvas.set('draggable', true);\n\n var el = canvas.get('el');\n var canvasHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onCanvasEvents');\n var originHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onExtendEvents');\n var wheelHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onWheelEvent'); // each(EVENTS, event => {\n // canvas.off(event).on(event, canvasHandler);\n // });\n\n canvas.off('*').on('*', canvasHandler);\n this.canvasHandler = canvasHandler;\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'DOMMouseScroll', wheelHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'mousewheel', wheelHandler));\n\n if (typeof window !== 'undefined') {\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keydown', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keyup', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'focus', originHandler));\n }\n }; // 获取 shape 的 item 对象\n\n\n EventController.getItemRoot = function (shape) {\n while (shape && !shape.get('item')) {\n shape = shape.get('parent');\n }\n\n return shape;\n };\n /**\n * 处理 canvas 事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onCanvasEvents = function (evt) {\n var graph = this.graph;\n var canvas = graph.get('canvas');\n var target = evt.target;\n var eventType = evt.type;\n /**\n * (clientX, clientY): 相对于页面的坐标;\n * (canvasX, canvasY): 相对于